CircleCI 2.0 を使って Middleman で作ったサイトを AWS S3 + CloudFront にデプロイ

自分の会社のサイトは創立以来 Middleman で管理運用しています。これまでは CircleCI 1.0 の機能を利用して AWS S3 にデプロイし CloudFront のキャッシュをクリアする構成になっていました。 CircleCI 1.0 が 2018 年 8 月末日で利用できなくなるため 2.0 に変更する必要がありました。 CircleCI 1.0 End of Life on August 31, 2018 CircleCI 2.0 対応にやったこと CircleCI 2.0 のドキュメントの確認 Middleman がビルドできる Docker イメージ作成 circle.yml を .circleci/config.yml に変更 CircleCI 2.0 を利用するには Docker イメージが必要です。CircleCI が用意しているイメージを利用する方法もあります。 Pre-Built CircleCI Docker Images - CircleCI 今回は Docker の学習も兼ねて自分で Docker イメージを用意することにしました。 Docker イメージの作り方 できたもの: Docker Hub: yuya-matsushima/middleman GitHub yuya-matsushima/docker-middleman 依存イメージ: yuya-matsushima/docker-ruby 今回は Ubuntu 16....

2018/05/04 · Yuya MATSUSHIMA

LazySearch のドキュメントを改善した

ドキュメント 改善したところ 適当に, とりあえず, それっぽく作っていたドキュメントを書き直した ページ構成の変更 紛らわしい複雑な説明を排除 簡単な機能部分についてのみ説明 ページ間リンクを整備した できていないページは「できてない」で現状はいいか, という対応 アニメーション gif の撮影方法 どういった方法がスタンダードなのか分からなかったので, 適当にググって App Store で見つけた GIPHY を使って撮影してみました。 アニメーション gif で実行されている検索処理は LazySearch が使われています。 開発状況 LazySearch は 5 月にひっそりとリリースされてから着実に機能を増やしながら改善を続けています。 特に外部からの資金等はなく人員も用意できていないため, 私が 1 人で受託開発や SES の合間に作業を進めています。Ruby on Rails + Golang を組み合せてサービスを構成している都合上, 群馬では人材が確保しづらい事情もあります。 まだドキュメントを含めたユーザーサポート体制が十分にとれておらず, なかなか実利用に結びつかない状態です。そんな中でも積極的にご利用いただいている方もいらっしゃり大変感謝しています。 年内に当初考えていた基本機能の実装目処がつく予定です。年明け, 遅くとも 2 月中には課金機能を含めて正式リリースできる予定です。 最後に まずロゴを発注するところから…

2017/12/11 · Yuya MATSUSHIMA

middleman-s3_sync で Cache-Control ヘッダを設定する

会社の Web サイト の内容を少し見直し, ついでに諸々調整をしました。具体的には事業内容を整理, 子ページができたのでデザインの一部修正等々です。 見直し完了後に PageSpeed Insights の指摘事項を修正する過程で Cache-Control ヘッダを付与する必要がでてきました。そのあたりの話です。 PageSpeed Insights の指摘事項 このブログでも同様の問題が指摘されています。アセット類のファイルに対して “キャッシュの設定が行われていない” ために発生する問題でした。 middleman-s3_sync を使って Cache-Control ヘッダを設定する方法 会社 Web サイトは AWS S3 + CloudFront 環境で運用されています。S3 の管理画面に入って個別または一括でヘッダ情報を追加することができます。ただし, 管理画面からの設定を行う場合, Middleman でサイトを更新する度に管理画面から設定を変更する必要があります。これは流石に不便です。 そこで middleman-s3_sync から Cache-Control ヘッダを設定する方法をとります。 具体的には config.rb に対して次の設定を追加します。 # middleman-s3_sync の設定 activate :s3_sync do |s3| s3.region = 'ap-northeast-1' s3.index_document = 'index.html' s3.error_document = '404/index.html' end default_caching_policy max_age: (60 * 60 * 24 * 365), public: true, must_revalidate: true caching_policy 'text/html', max_age: 60 * 10, public: true, must_revalidate: true caching_policy 'text/plain', max_age: 60 * 10, public: true, must_revalidate: true caching_policy 'application/xml', max_age: 60 * 10, public: true, must_revalidate: true default_caching_policy ですべてのファイルに対して cache の設定を行い, html, txt, xml の場合のみ max_age を変更するように設定しています。...

2017/08/19 · Yuya MATSUSHIMA

NO_CONTRACTS で Middleman のビルドを高速化する

$ middleman build 実行時に NO_CONTRACTS=true を付与すると contracts のチェックをスキップしてビルドが速くなる?らしいドキュメントが追加されたのでチェックする。 how to disable contracts in jp (#714) 検証 middleman/middlemanapp.com のビルドで検証する。 いつもどおり $ bundle exec middleman build を実行。 bundle exec middleman build 38.93s user 6.62s system 144% cpu 31.414 total NO_CONTRACTS=true を追加 $ NO_CONTRACTS=true bundle exec middleman build を実行。 NO_CONTRACTS=true bundle exec middleman build 33.19s user 5.73s system 206% cpu 18.863 total 結果 ローカルで適当に実行しているのでブレがあるけれど, とりあえず早くなるらしいことがわかった。 NO_CONTRACTS については Contracts のドキュメント に書いてありました。

2017/06/04 · Yuya MATSUSHIMA

サービスをベータ版としてひっそりリリースした

正確には 5 月 7 日にリリースしたのだけれど, ドキュメントの最低限の整備もされていない状態でお知らせとしては 5 月 9 日になりました。 LazySearch beta版がリリースされました | 株式会社フィルイン 弊社は「群馬で Web サービスをつくる会社」を標榜したまま半年以上の間, 自社のサービスをもたずに来ていました。とりあえずベータリリースではありますが, 一旦サービスとして用意したものがリリースできて良かったです。 リリース前の紆余曲折 このサービスは当初「Mitsume」という名前で開発が進められていました。 リリース直前で利用規約を作成する段階になって, 昨年 12 月に同一呼称の商標が出願されていたことが発覚しました。そこで急遽サービス名を検討し直し, コードも必要箇所を変更の上でリリースに至りました。 商標が大事なのは法務時代からよく知ってはいるんですが, どの程度利益が出せるのか不明瞭な段階で安易に出願するのもおかしな話だと思っています。未だに正解のタイミングがわかりません。 これから まだまだ Web UI に未実装の機能が沢山あるので, まずはそこから実装して都度リリース。ある程度完了した段階で課金システムを導入していきたいと思っています。

2017/05/11 · Yuya MATSUSHIMA

middleman-vcs-time で正確な sitemap.xml を出力する

Middleman で Web サイトを作る場合, sitemap.xml の lastmod はビルドされ出力される時刻に統一されてしまいます。 sitemap.xml の仕様を考えると可能な限り lastmod は正しい時刻が望ましいです。現在開発中サービスの都合もあり「どうすれば正確な時刻を出力できるか?」と思い悩んでしばらく時間が経ってしまいました。 Twitter で rubygems middleman で検索して眺めていたところ, この問題を解決してくれそうな拡張機能がひっそりリリースされていることに気づきました。 middleman-vcs-time | RubyGems.org middleman-vcs-time 概要 README によると, Provides means to look up the last-modified times of Middleman sitemap resources according to version control. Supports Git with a fallback to filesystem metadata. README.md: https://github.com/AndrewKvalheim/middleman-vcs-time/blob/master/README.md とのことで, VCS (Git など) の最終変更時刻をベースに Middleman の sitemap リソースを書き替えてくれるようです。現状では Git をサポートし, フォールバックとしてファイルのメタデータを参照します。とのことで。 sitemap リソースについて sitemap リソースはドキュメントでいうと サイトマップ のことです。...

2016/11/29 · Yuya MATSUSHIMA

Hugo でブログ始めました

過去に e2esound.com 業務日誌 や 技術ブログ | e2esound.com を書いてきました。諸事情重なった上に検討したところ「事業とは別でブログを用意しておいた方が良さそう」という結論に至ったので新しいブログを始めました。 このブログの開始に伴って 2 つのブログは更新を停止しています。 このサイトの技術構成 今のところではありますが, 現状では次の構成です。 Golang 製静的サイトジェネレータ Hugo デザインは hugo-zen をベースに syntax highlight を Pygments ベースに変更 リポジトリ github の private repos デプロイ CircleCI で github の master ブランチを awscli で処理 サーバ AWS S3 AWS CloudFront AWS CertificateManager AWS Route53 最近増えているらしい静的サイトベースのブログサイトで, とりあえず一通り自動化してる。といった構成になっています。 なぜ Hugo なのか いつもであれば静的サイトジェネレータには Middleman を採用していますが, 今回は Go 言語ベースの Hugo にしました。...

2016/11/22 · Yuya MATSUSHIMA