Passion make things more better

Ruby on Rails / React.js / Swift / AWS / Docker

小〜中規模程度の Flutter プロジェクトにおけるフォルダ構成について

フォルダ構成について プロジェクトの初期やグロースするタイミングでは結構大きめの変更なども多いので、「極力シンプルに、かつ最低限のルールは守られるように。」という観点で、以下のようなフォルダ構成で開発を始めます。 lib - ui - component/ - pag…

Nuxt.jsで作成したSPAをS3 + CloudFrontにデプロイする

環境 Node.js 12.18.0 Nuxt.js 2.14.5 手順 基本的にはNuxt.jsの公式ドキュメント通り進めてください。 しかし、そのままだとエラーが発生してしまいます。以下でその解消方法について説明します。 ポリシーの変更 AWS上で作成するポリシーを以下のように変…

S3 + Lambda + Transcoderを使用したサーバーレスな動画変換

AWS

AWSのS3, Lambda, Transcoderを使用したサーバーレスな動画変換の仕組みの作り方を紹介します。 処理の流れとしては以下のようになります。 S3のBucketに動画ファイルをアップロード S3に設定したイベントからLambda関数を実行する Lambda関数内でTranscoder…

RailsをAWS Fargateにデプロイする (AWS CLI / ECS CLIを使用)

AWS CLIとECS CLIを用いてRailsをFargateにデプロイする方法について書きます。 イメージのビルドや自動デプロイの仕組みはまた別で書こうと思っています。今回は、MacOSで実行することを想定しています。 目次 CLIツールのインストール IAMアカウントおよび…

AWS ネットワークの設定ルール

AWS

VPC AWS の VPC アドレスでよく使用されるのは以下の範囲となります。 10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8) 172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12) 192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16) 今回は VPC アドレスを172.16.0.0/16に設定し…

RailsでReact.jsを使う時のミニマムの設定

RailsでReact.jsを使う時に使用するミニマムの設定を紹介します。 構成 Railsのプロジェクト直下にfrontというディレクトリを用意する webpackでコンパイルした際に/assets/javascripts/webpack以下にエントリファイル毎に吐き出されるようにする ライブラリ…

RailsのAssets構成(css / javascript)について

Railsでプロジェクトを作る際のassets周り(css / javascript)の構成等についてまとめました。 ※yarnを使ったパターンは、別途まとめたいと思います。 Boostrapの導入 bootstrap-sassというgemを利用します。Gemfileに以下を記述し、bundle installを行ってく…

RailsでActiveModel::Serializerを使ってAPIを作成する

RailsでAPIを作る時の手法として、 ActiveModel::Serializerを使ったものを紹介する。 インストール Gemfileに以下を記述し、bundle installを実行する。 gem 'active_model_serializers' Serializer用ファイルの作成 以下のコマンドにてSerialize用のファイ…

RapidSSL+NginxでA+環境を作る

RapidSSLとNginxでSSL LabsにてA+が出る環境を作るための方法を紹介します。 以下、やることです。 Certbotのインストール SSL証明書の作成 dhparamの作成 Nginxの設定ファイル作成 ※Nginxがインストールされている前提で話を進めます。 Certbotのインストー…

Ruby(rbenv), MySQL, Ruby on Railsの環境構築 - MacOS

Macでゼロから環境構築をするための手順です。以下のことをやっていきます。 xcodeのインストール Homebrewのインストール MySQLのインストール rbenvによるRubyのインストール Ruby on Railsのインストール Ruby on Railsのプロジェクト作成 Hello World!!!…

ridgepole task

Railsなどでridgepoleを採用した時に使うridgepole用のtaskです。以下をridgepole.rakeとして保存すれば使えます。 namespace :ridgepole do desc 'Apply database schema' task apply: :environment do ridgepole('--apply', "--file #{schema_file}") Rake…

Webpack4を使ってReact.js + Redux + Sassの環境構築

Webpack4を使って、React.js + Redux + Sassの環境構築を行います。 install yarn npmではなく、Yarnを使用します。yarn add xxxxと実行することで、package.jsonへの追記とライブラリのインストールを同時にやってくれます。 $ brew install yarn プロジェ…

RailsでRoutesを分割する

config/routes.rb class ActionDispatch::Routing::Mapper def draw(routes_name) instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb"))) end end Rails.application.routes.draw do root to: 'pages#home' draw :common draw :adm…

sorceryを使ってEmail + Passwordログインを実装

Sorceyを用いたログイン機能実装を解説します。 Railsのログイン機能でよく知らているdeviseよりも機能が少なく、簡単に扱えるのでこちらを採用しております。 実装の詳細に関してはSorceryのGitHubのリポジトリのwikiに書かれています。 今回の実装はwikiの…

sorceryでFacebookログインを実装する

個人的に最近deviceではなくsorceryを使うことが多くなりました。deviceと比較してsorceryの良い点として、必要な機能だけを使えるという所です。 今回はsorceryを使ってFacebookログインを実装する方法を紹介します。 初期設定 # Gemfile gem 'sorcery' # b…

Sidekiqの導入

前提 redisが必要です 初期設定 やることは以下の2つ。 Gemfileの編集 設定ファイルの作成 Gemfile Gemfileにsidekiqを記述 & bundle install。 # Gemfile gem 'sidekiq' gem 'redis-namespace' ~ bundle install --path vendor/bundle 設定ファイルの作成 c…

エンジニアがSketchを使い始める時にやったアレコレ

僕がSketchを使うにあたり初めにやったことをまとめました。 基礎知識のインプット 使い方を知らないと元も子もないので、まずは基礎知識のインプットを行いました。 とりあえず以下のリンクを読んで、ざっくりと把握しました。 UIデザインの作成ツール!誰…

Railsでseedデータを分割して実行できるようにする

個人的にRailsのseed運用は以外と悩みがちです。seed-fu使ったりと色々やりましたが、これから説明する方法に落ち着きました。 ファイルを指定してseedを実行できるようにrake taskを作成する db/seeds以下のディレクトリを作成し、以下にxxxx.rbといった実…

Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID "xxx" were found. の解決方法

チームで開発をしていたとき通常のbuildは通ったのに、archiveをした際にエラーが起きてしまいました。 エラーメッセージを見ると以下が表示されていました。 Code Sign error: No code signing identities found: No valid signing identities (i.e. certif…

carrierwaveの設定ファイル

carrierwaveを使う時にいつも設定ファイルを調べているので、備忘録としてよく使うベースの物を。 ファイル名をuniqueにしたい original及びthumbのversionで、リサイズを行う resize_to_fitとresize_to_limitどちらもありますが、今回はresize_to_fitを使用…

SwiftでJSQMessagesViewControllerを使ってチャットUIを実装する

昨今、多くのアプリでチャットUIが見慣れてきたかと思います。以外と見慣れているUIだけど一から自分で実装するのは以外と面倒ですよね....そこで今回はJSQMessagesViewControllerというライブラリを使ってチャットに必要な最低限の機能を実装する方法を説明…

SwiftでUIImagePickerControllerを使用したテンプレ

import UIKit class UIPickerViewSampleViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. s…

CocoaPodsでpod installしたらundefined method 'to_ary'に出くわした

アプリを作っていて、新しいライブラリを導入するためにいつものようにPodfileに書いて、pod installしたら掲題のエラーが起きました。 他のライブラリでは問題なくできていたのに急に!?という思いに駆られ、調べていたところ、以下のissueが見つかりまし…

Rails runnerを使ってスクリプトを実行する

Railsを使っている時に、普通の処理とは別だけどもRailsの機能も使いつつ単独のスクリプト実行したい(バッチ処理とか、アプデに伴う諸々のデータの更新など)、と思ったことがある人は多いのではないでしょうか?そんな時に役立つのがRails runnerです。 はじ…

gitでmerge済みのlocal branchを一括で削除する

Git

よくローカルに溜め込みすぎて、毎度調べているので、自分用のメモとして。 git branch --merged | grep -v '^*' | xargs git branch -d 参考 Gitでマージ済みのローカルブランチを一括削除する方法

SwiftでxibをカスタムViewとして使用する時の諸々

SwiftでStoryboard等を使っている場合、すべてのViewに関する処理を、同一のViewControllerに書くと、とても長くなってしまいます。そのため、Viewの切り出しを行う方が多いかと思います。以下でその分割方法について書いていきます。 xibをカスタムViewとし…

Storyboard + AutoLayoutの環境下でUIScrollViewを配置する設定

Storyboard + AutoLayoutの環境下でUIScrollViewを配置するまでに必要な設定を書いていきます。 Storyboard上で、UIViewControllerを配置 UIViewControllerのUIView(以下①と呼ぶ)の上にUIScrollView(以下②と呼ぶ)を乗せて、Constraintsを上下左右0に設定 UIS…