Freelance Tech Life

フリーランス エンジニア、個人開発、プログラミング、ファブリケーション、電子工作

AWS Cloud9を使ってデザイナーと協業できるシームレスなRubyOnRails環境体制をつくる

なぜかくのか

  • 理由1:システム開発のチームを組んだ時に、チームメンバーの開発環境をお手軽にしたい
  • 理由2:古いPCから新しいPCに移行するときに環境構築を簡単にしたい
  • 理由3:複数プロジェクトを1台PCで実行してると負荷が高すぎてPCの寿命が縮まりそうだから

このような理由から、Cloud9導入したい人が増えるのではと思ったので書きました。

Cloud9とは

オンラインエディタツールです。Amazonが買収してAWS Cloud9になりました。

料金はどうなの?

AWS Cloud9は最小30分の動作なしでインスタンスをStopしてくれる気配。

f:id:taiyop:20180222232623p:plain

つまりmicro planなどで費用を抑えようとしなくても、必要十分な環境を準備して低コスト開発環境の構築ができる

何が良いのか

  • デザイナーとの協業がしやすい

デザイナーはHTML, CSS, Javascriptコーディングまではしてくれる人はそれなりにいると思いますが、RubyとかPHPとかJavaとかPythonとか使わない人がほとんどで、ましてRubyOnRailsなどの更に細かいフレームワークなどより知らない人が多いと思っています。

そもそも、WEBサービスの開発でデザイナーの期待するのは使いやすいUIデザイン、UXデザインなので、バックエンドに強い≠デザイナーとして優れていると考えています。 (両方できる人がいて越したことがありませんが)

そのため、開発環境をデザイナーが各自で準備してもらうのは無駄な労力が発生します。 別案で、HTML, CSS, JavaScriptでデータを貰って当て込むというのもありますが、それはそれでデグレが発生することもあり、無駄なコストが発生します。

設定方法

1. githubと連携

git clone するためには、githubssh keyを設定する必要があります。

cloud9のterminalで設定

  • ssh keyの作成
cd ~/.ssh/
ssh-keygen -t rsa -b 4096 -C "hogehoge@fuga.com"

参考: GitHubにssh接続できるようにする - Qiita

  • githubのprojectごとのdeploy keyに公開鍵***.pubの中身を登録

Githubの設定ページのSSH KEYでも利用できますが、 今回は外注などで他の人に環境を共有するため、github apiなどで他プロジェクトが見られるのを防ぐためにdeploy keyに設定します。

f:id:taiyop:20180222233834p:plain

※Thank you @pandeiro245 in the following ↓↓

f:id:taiyop:20180222234450p:plain

  • git cloneする
2. rubyの設定

これはrvmが入っているのでそれで設定すれば良いと思います。

  • bundle install する

の前に、gem pgでエラーになるので、postgres-develをインストールする

sudo yum install -y postgresql96-devel

ruby on rails - gem install pgすると失敗する。yum install postgresql-develでも解消しない。 - スタック・オーバーフロー

https://forums.aws.amazon.com/thread.jspa?messageID=817858&tstart=0

ruby-on-rails - an error occurred while installing pg (1.0.0), and bundler cannot continue. - pg gemをインストールしようとすると 'libpq-fe.h'ヘッダが見つかりません - CODE Q&A 問題解決

3. postgres環境の設定

この工程が面倒な人はとりあえずRDSを使って設計しても大丈夫です。あとでRDS -> Cloud9内のPostgresに変更しても工数が余分に増えることはないので、 直近のモチベーションとタスク優先度で判断してもらえば良いと思います。

qiita.com

  • rake db:createできるようにする

  • postgresqlをインストール

  • postgresユーザーにPW設定

本当はRoR専用ユーザーを作るほうが良いですが、今回は開発環境のみでの利用なのでpostgresユーザーを使うようにしています。

sudo -u postgres psql
#postgresユーザーのパスワード設定
/password
#exit
/q

VagrantのCentOSでPostgreSQLをRailsで使えるようにする - Qiita

  1. pb_confを修正
sudo vim /var/lib/pgsql/9.6/data/pg_hba.conf

最下部に下記1行を追加

 local   all    all         md5

パスワードを設定したので、peerのままだとpsqlログインできなくなるので上記必要。

peer認証の関係でpsqlログインできない時の対処法 - Qiita

RailsでPostgreSQLを使う -- blog.10rane.com

  1. 初期化

sudo service postgresql96 initdb

  1. 起動 sudo /etc/rc.d/init.d/postgresql96 start

  2. 自動起動

chkconfig postgresql-9.6 on

EC2(Amazon Linux AMI)へのPostgreSQLのインストールと設定 - ぴよぴよ.py

オマケ:psqlチートシート

PostgreSql コマンドの覚え書き - Qiita

4. ImageMagickをインストール

画像を使うので

qiita.com

5. cloud9の起動
rails s -p 8080

実行すると、urlが右上に表示される。

4. IAMユーザーを作成して共有

cloud9権限を追加して共有

最後に

だいたいこれでできるのですが、問題はcommiterの名前を別途設定する必要がある点です。 各開発者のgithub アカウントとは紐づかないので、代わりにcommiter nameを別途設定する必要があるのが少し手間です。

このあたりも含めて、もっと連携強化されて使いやすい環境になるとうれしいですね。 :)