駄話.tech #1に行ってきた

駄話.techとは?

都合よく集った人同士で、駄話的に近況やテックなことを話したり、発表したり、飲んだり食べたりするイベントです。今回は1回目でした。

駄話.tech #1 に行ってきた - 線路は続くよどこまでも。 より引用

今回は都合よかったので、記念すべき第一回に参加できました。めでたいめでたい。

現場

現場では、大変和やかなムードでテックな話題からお互いの近況まで幅広い話題を取り扱っていました。技術について話す時、発言が正しいかどうか気にしてしまい萎縮してしまうこともあるかと思います。駄話ではゆるく語らえて、みんなでよくしていこうという感じなので萎縮せず楽しく話すことができました。よかったよかった。

次回

第2回が5月にあるとのことです。たのしみたのしみ。

今週の進捗報告

このエントリーは日報サービスの進捗を報告するものです。

進捗

今週は本番環境の作り直しをしていた。作り直しは成功したが、ほぼ何も生み出してないのと大した学びもなかったので虚無感が生まれた。進捗ダメだけど、以下進捗内容。

  • Herokuでの作業内容
    • 本番環境はHeroku、Heroku pipelineを使っている
    • Heroku pipelineとproduction appの名前が同一になっていて、命名規則に対称性がなく気持ち悪かったのでappの名前をリネームした
    • app nameを手動で弄ったためにterraform周りの設定がうまくいかなくなり、まあどうせならと作り直す
    • Heroku ACMで使っているLet’s Encryptの更新に3,4日かかり、ハマった。原因がわからずひたすら祈ってた
    • pipelineとReview Appsはterraform管理できないので、手動で再設定
  • いいね機能を作っている
    • Reactつかってる.
    • いいね一覧は表示できた
    • あとはいいねのPOSTができるようにする

困ったこと

webpack(Railsのwebpacker)使っているんだけれども、webpackを起動させつつMacをスリープして作業再開すると更新が反映されなくて困ることが多々ある。今はdockerのimageを作り直したりと変なことしてるけど、別の解決方法みつけたい

与太話

Nintedo Switch&ゼルダを買ったので、世界を救いに行かなければいけない。今週も忙しくなりそう。

今週の進捗報告

これは個人的につくっている日報サービスの進捗報告をする週報です。

🌸

わりとキレイに撮れた気がする。

アニメ

鉄血のオルフェンズを見終わったので、今は花咲くいろはを見始めている。もう19話まで見たから、次のアニメ探してるのでオススメの作品あればTwitterで教えてください。

日報書いて100日達成

よく続いてる。エライ🎉

f:id:azuki_mihomiho:20170410015659p:plain

日報サービス

今週はインフラ周りを弄った週だった。Terraformを初めて触り、TerraformでHeroku・AWS(Route53とCoudFront、S3)のセットアップ、手動でHeroku Review Apps・CircleCi(恥ずかしながら1.0)のセットアップをした。いくつか悩んだけれど、1つははplanでは成功していたけど、applyしてみるとエラーがでてることがありplanというよりもprayといった感じ。みなさん、アレをどうやって運用してるのか気になる。

2つめはHerokuで独自ドメインSSLでどう扱うか。Herokuは固定IPが振り分けられないので、root domainに対してAレコードを設定できず、wwwなどのサブドメインを使い、root domain自体はS3などでwwwドメインにリダイレクトするのが定石になっている。ただ、SSL対応してるとS3のリダイレクトをうまく扱えないのでCloudFrontを前段に挟んで CloudFront => S3 => Heroku の構成にしようとしたがうまくいかず、 CloudFront => HerokuにしてRedirect処理はアプリ側で持つことにした。S3でRedirect処理したほうがアプリはシンプルになるので空きをみて後ほど改善したい。

初めてHeroku Review Appsを使ってみたけど、控えめに言って最高だと思う。既に成熟したサービスだとseedをつくるのは骨が折れる作業だと思うけど、新しいサービスだとやっておくといいと思う。適切にseedをつくっておけばエンジニアからディレクターへの動作確認が容易になったり、お試しな機能をつくった時の使い心地をみれたりとかメリットがあると思う。ここらへんのHeroku話はクラウドワークスさんの以下記事がすごい参考になった。ありがとうございます🙏 engineer.crowdworks.jp

最後に

生活リズム整えるために、夜に30分ほど走るとかやり始めたけど割と調子よいのでこれからも続けたい💨

今週の進捗報告 ~2017/04/01

はじまり

最近日報サービス作っていて最低限の形になってきた。

途中経過

直近の進捗

おわりに

明日はぱーっとスーパー銭湯行こう♨

あと、デザインダサいのでかっこよくしたい。

残タスク

  • redcarpetのtask list記法拡張
  • 基本色変える
  • コメント機能
  • PRDを書く
  • 本番環境にリリース
    • Heroku or GAE or AWS
    • terraform使いたい
    • review apps使いたい

がんばるぞいクラブの開発環境をDocker化した。

以下がんばるぞいクラブ の改善の続きです。

背景

がんばるぞいクラブの開発は Mac内にbrewRuby/Railsとnodejs、PostgreSQLを入れるオーソッドックスなやり方で行っていた。特にこれといった不満はなくこのままでよかったけれども、brew upgradeを実行した際にPostgreSQLが立ち上がらなくなってしまいうまく対処ができなかった。。そこで、開発環境のDocker化に重い腰を上げて取り掛かることにした。

Docker化にあたって事前にみた資料

あまりDockerに触ってなかったので、今回はDocker化に取り組む前に以下資料をみてDockerの学習をした。公式ページのTutorialがすごくわかりやすく、スムーズにすすめられたこと、Docker for Macを入れるだけでDockerのセットアップ自体は完了するのはよかった。

やったこと

コンテナの構成はdb(PostgreSQL)とweb(Rails)、node(webpack)の3つで、dbは既存イメージをそのまま使い、webとnodeはRubyのイメージを使って変更を加えている。webではRailsサーバの起動、nodeはWebpack(https://github.com/rails/webpacker)の起動をしていて、特段変わったことはしていないと思う。 bundleをキャッシュさせるためにGemfileのみをADDすること、Webpacker用のコンテナを立ち上げたりるべきかどうかを悩んだかも。Dockerfileとdocker-compose.ymlは公開するのでこうできるとありがたいです🙏

gistae1c403a80d0696a66fad484c2cff58d

おわりに

いざやってみると開発環境のDocker化はわりとすんなりとできてしまった。がんばるぞいクラブの開発は一人で行っているので、開発環境のポータビリティ性の向上といったメリットはないが、Mac内の環境の依存がなくなっただけでも導入の価値はあったのもかなと思っている。ということで、開発環境のDocker化はあまり工数かけずにできたのでおすすめです🙏

REF

今回以下の記事を参考にさせていただきました。特にSoftware Design 2017年02月号のDocker特集はこれまでDockerにあまり触ってなかった僕にはとてもわかりやすい記事でしたので、おすすめです。ありがとうございました!

Heroku+Let's Encryptを使ってHTTPS化する

以下がんばるぞいクラブのアップデートの続き。

2017年になったのでRailsアプリ(5.0.1)をHTTPS化することにした。HerokuのPaid Dyno($7/月)とLet’s Encrypt、gemを使えばHTTPS化できるので今回はそのやり方を紹介しようと思う。最初は自前でLet’s Encrypt対応しようと考えていたが90日(https://letsencrypt.jp/blog/2015-11-09.html)で証明書を更新しなければならず、その処理がめんどくさい&既にgemで提供されていたので今回はそれを使うことにした。そもそもLet’s Encryptの仕組みについて知りたい場合は公式ページが参考になるのでぜひ。Let's Encrypt の仕組み - Let's Encrypt 総合ポータル

手順概要

と、がんばって手順を書こうとしたが、力尽きたのでやり方の概略だけ紹介する。はじめの証明書発行はMac内で行い、証明書の更新処理はHeroku内でHeroku schedulerで行っているのがポイント。以下概略だけ。

という手順である。わりと手軽にできるのでやってみてくださいm( )m

REF

がんばるぞいクラブをRails5にアップデートした

最近は触ったことない技術を試しサンプルをつくることを無限に繰り返していたのだけれど、ちょっと実際に動いているものに適用しようと思い、がんばるぞいクラブで試してみることにした。

その第一弾、準備としてRails5.0.1にアップデートした。今まではRails4.2.5で動いていたので以下の手順でアップデートした。

  • Rails4.2の最新版にあげる(4.2.7)
  • Rails5にあげる
  • updateスクリプトを走らせる
  • スクリプトで消された部分を設定し直す

小さいサービスであること&Rails5にアップデートする知見が既に広く公開されていたことから特にハマることもなくできた。皆々様に感謝です🙏具体的な対応した箇所はこんなところだった。

対応箇所

activemodel-serializers-xmlいれた

ActiveModel::Serializers::Xmlがgemに切り出されたのでgemでいれて対応。

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#xml-serialization

draperを3.0.0.pre1にあげた

decorator層を追加するgemのdraperですが、以下のようなRails側の変更でバージョンを上げる必要があった。

https://github.com/drapergem/draper/issues/681

Active Recordの継承元をApplicationRecordに変更

Rails5からModelはActiveRecord::Baseを直接継承するのではなく、ApplicationRecordから継承するようになっいてるのでそれに合わせて修正。

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#active-record-models-now-inherit-from-applicationrecord-by-default

rails_12factorを削除

Railsのコア機能に組み込まれたのでgemの方は削除。herokuをつかっていたので、環境変数も設定した。

https://github.com/heroku/rails_12factor#rails-5

Rails5の自動読み込みの仕様変更に対応

以下のように設定。

Rails.application.config.enable_dependency_loading to true.

http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#active-record-models-now-inherit-from-applicationrecord-by-default

REF

Rails5アップデートに際して以下ページを参考にさせていただきました。ありがとうございました 🙏