<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>技術 | shimoju.diary</title><link>https://shimoju.jp/categories/%E6%8A%80%E8%A1%93/</link><description>ソフトウェアエンジニアshimojuの個人ブログ。Ruby on Railsを中心としたWeb開発の知見や、日々の出来事を綴ります。</description><language>ja</language><lastBuildDate>Tue, 01 Sep 2026 09:00:00 +0900</lastBuildDate><atom:link href="https://shimoju.jp/categories/%E6%8A%80%E8%A1%93/index.xml" rel="self" type="application/rss+xml"/><item><title>2026年、開発環境を一新した。Ghostty、herdr、Neovim、mise、そして自作Zshプロンプト</title><link>https://shimoju.jp/2026/09/01/development-environment-2026/</link><guid isPermaLink="true">https://shimoju.jp/2026/09/01/development-environment-2026/</guid><pubDate>Tue, 01 Sep 2026 09:00:00 +0900</pubDate><description>&lt;p&gt;これまではVisual Studio Codeをメインに、ターミナルは補助として内蔵ターミナルで済ませることが多かった。&#10;しかしAIを中心とした開発に移行し、自分でコードを書くことがほぼなくなった今、日々の作業がエディタよりもターミナル中心に移っている。&lt;/p&gt;&#10;&lt;p&gt;ターミナルに求めるものも変わってきて、AIエージェントを効率的に管理するための機能や、素早くエージェントを立ち上げられる起動の速さや応答性を重視するようになった。&lt;/p&gt;</description></item><item><title>chezmoiでdotfilesを簡潔に管理する</title><link>https://shimoju.jp/2025/12/07/chezmoi-dotfiles-manager/</link><guid isPermaLink="true">https://shimoju.jp/2025/12/07/chezmoi-dotfiles-manager/</guid><pubDate>Sun, 07 Dec 2025 22:10:12 +0900</pubDate><description>&lt;p&gt;dotfilesの管理は永遠につきまとう課題です。&#10;今までは&lt;a href="https://github.com/shimoju/setup"&gt;itamaeを用いて管理&lt;/a&gt;し、さらにServerspecによるテストも記述していました。&lt;/p&gt;&#10;&lt;p&gt;当時は構成管理を学習していて、実践するためのちょうどいい題材がdotfilesだったという経緯なのですが、dotfiles管理としてはだいぶ重たい構成です。&#10;ライブラリのバージョンなども古くなっていたため、この機会に一新することにしました。&lt;/p&gt;&#10;&lt;p&gt;今回は&lt;a href="https://www.chezmoi.io/"&gt;chezmoi&lt;/a&gt;を採用しました。&#10;itamaeではERBテンプレートやgitリポジトリ管理の機能を活用しており、類似の機能があることと、ドキュメントも充実していることから選びました。&lt;/p&gt;</description></item><item><title>SUZURIをHerokuからAmazon EKSに移設するためにやったこと</title><link>https://shimoju.jp/2024/12/15/suzuri-heroku-to-amazon-eks/</link><guid isPermaLink="true">https://shimoju.jp/2024/12/15/suzuri-heroku-to-amazon-eks/</guid><pubDate>Sun, 15 Dec 2024 23:58:00 +0900</pubDate><description>&lt;p&gt;これは&lt;a href="https://adventar.org/calendars/10317"&gt;🎄GMOペパボ エンジニア Advent Calendar 2024&lt;/a&gt;の15日目の記事です。&lt;/p&gt;&#10;&lt;p&gt;14日目はk4tayaさんの&lt;a href="https://zenn.dev/k4taya/articles/ec4c117e9e9b32"&gt;DKIM2についての所感&lt;/a&gt;でした。&#10;ペパボのエンジニアAdvent Calendarには&lt;a href="https://adventar.org/calendars/10036"&gt;もうひとつの会場&lt;/a&gt;もありますので、ぜひこちらもご覧ください。&lt;/p&gt;&#10;&#10;&lt;h2 id="herokuからamazon-eksへ移設"&gt;HerokuからAmazon EKSへ移設&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://suzuri.jp/"&gt;SUZURI&lt;/a&gt;では2014年のサービス開始当初からHerokuを利用しており、2018年からは&lt;a href="https://jp.heroku.com/enterprise"&gt;Heroku Enterprise&lt;/a&gt;を契約し、ここまで運用してきました。&lt;/p&gt;&#10;&lt;p&gt;今年、10年間使ってきたHerokuからAmazon EKSに移設することを決定し、2024年6月に完了しました。&#10;これまで&lt;a href="https://shimoju.jp/tags/heroku/"&gt;Heroku関連の記事をいくつか書いたり&lt;/a&gt;、&lt;a href="https://www.slideshare.net/slideshow/gmoheroku-154211436/154211436"&gt;Salesforceのセミナーで登壇する&lt;/a&gt;機会もいただくなど、長年付き合ってきたプラットフォームなので思い出深いものがあります。&lt;/p&gt;</description></item><item><title>『Ruby コードレシピ集』の執筆で工夫したポイント</title><link>https://shimoju.jp/2024/08/26/ruby-code-recipe/</link><guid isPermaLink="true">https://shimoju.jp/2024/08/26/ruby-code-recipe/</guid><pubDate>Mon, 26 Aug 2024 08:00:00 +0900</pubDate><description>&lt;p&gt;共著で執筆した『&lt;a href="https://gihyo.jp/book/2024/978-4-297-14403-6"&gt;Ruby コードレシピ集&lt;/a&gt;』（技術評論社）が本日2024年8月26日に発売されます。&lt;/p&gt;&#10;&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;【新刊】2024年8月26日発売『Ruby コードレシピ集』本体3,400円+税，山本浩平，下重博資，板倉悠太 著，Rubyでやりたいことがスグに逆引きできるレシピ集。定番機能から実践テクニックまであますところなく集めました。&lt;a href="https://t.co/jQkdmYD9tp"&gt;https://t.co/jQkdmYD9tp&lt;/a&gt; &lt;a href="https://t.co/hPKJyU4K0V"&gt;pic.twitter.com/hPKJyU4K0V&lt;/a&gt;&lt;/p&gt;&amp;mdash; 技術評論社 販売促進部 (@gihyo_hansoku) &lt;a href="https://x.com/gihyo_hansoku/status/1820654494742708370?ref_src=twsrc%5Etfw"&gt;August 6, 2024&lt;/a&gt;&lt;/blockquote&gt;&#10;&lt;script async src="https://platform.x.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;&#10;&#10;&#10;&#10;&lt;h2 id="ruby-コードレシピ集とは"&gt;Ruby コードレシピ集とは&lt;/h2&gt;&#10;&lt;p&gt;本書は技術評論社の&lt;a href="https://gihyo.jp/book/series?s=%E3%83%AC%E3%82%B7%E3%83%94%E9%9B%86"&gt;レシピ集シリーズ&lt;/a&gt;のひとつです。&#10;いわゆるクックブックや逆引きレシピと呼ばれるスタイルで、Rubyの基礎知識や実践で役立つテクニックを目的別にまとめた書籍となっています。2023年にリリースされたRuby 3.3までの機能に基づいて書かれており、Ruby 3.1〜3.3で動作を確認しています。&lt;/p&gt;</description></item><item><title>Hugo PaperModにBlueskyのアイコンを追加した</title><link>https://shimoju.jp/2024/01/07/add-bluesky-icon-to-hugo-papermod/</link><guid isPermaLink="true">https://shimoju.jp/2024/01/07/add-bluesky-icon-to-hugo-papermod/</guid><pubDate>Sun, 07 Jan 2024 23:37:25 +0900</pubDate><description>&lt;p&gt;あけましておめでとうございます。&#10;最近は&lt;a href="https://bsky.app/profile/shimoju.jp"&gt;Bluesky&lt;/a&gt;でひたすらゲームの話をしています。&lt;/p&gt;&#10;&lt;p&gt;ということで今年の書き初め、もとい新年初Pull RequestはBlueskyにかかわるもの。&#10;このブログで利用している&lt;a href="https://github.com/adityatelange/hugo-PaperMod"&gt;Hugo PaperMod&lt;/a&gt;テーマに&lt;a href="https://github.com/adityatelange/hugo-PaperMod/pull/1383"&gt;Blueskyのアイコンを追加しました&lt;/a&gt;。&lt;/p&gt;&#10;&lt;p&gt;実際に設置すると&lt;a href="https://shimoju.jp/"&gt;こんな感じ&lt;/a&gt;。めっちゃええやん。&lt;/p&gt;&#10;&lt;figure&gt;&lt;img&#10; src="https://shimoju.jp/2024/01/07/add-bluesky-icon-to-hugo-papermod/hugo-papermod-social-icons.b0d7d73875beb3aac56d0b83f56b1199950fa5090c5518c33dc41a4fd6e0643b.png"&#10; alt="Hugo PaperModのソーシャルアイコン設置例"&#10; &#10; &#10; width="860"&#10; &#10; height="100"&#10;/&gt;&lt;/figure&gt;&lt;p&gt;上のように、Hugo PaperModには&lt;a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Features#home-info-mode"&gt;トップページに簡単なプロフィールを掲載できる機能&lt;/a&gt;があり、そこに&lt;a href="https://github.com/adityatelange/hugo-PaperMod/wiki/Icons"&gt;各種SNSへのアイコン付きリンク&lt;/a&gt;を設置できます。&#10;各サービスのアイコンはライトモード・ダークモード両対応のため、色の指定に&lt;a href="https://developer.mozilla.org/ja/docs/Web/CSS/color_value#currentcolor_%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89"&gt;currentcolorキーワード&lt;/a&gt;を用いた&lt;a href="https://github.com/adityatelange/hugo-PaperMod/blob/master/layouts/partials/svg.html"&gt;SVGとしてリポジトリに格納&lt;/a&gt;されており、現在のcolorプロパティの値に応じて色を切り替えられるようになっています。&#10;したがってすべてのアイコンは単色で表現されます。&lt;/p&gt;</description></item><item><title>Rails 6.1のままRuby 3.2にアップデートし、YJITの恩恵を受ける</title><link>https://shimoju.jp/2023/08/10/ruby-3-2-yjit-with-rails-6-1/</link><guid isPermaLink="true">https://shimoju.jp/2023/08/10/ruby-3-2-yjit-with-rails-6-1/</guid><pubDate>Thu, 10 Aug 2023 18:02:00 +0900</pubDate><description>&lt;p&gt;先日、携わっているサービスで一番大きいRailsアプリをRuby 3.2にアップデートし、YJITを有効化できました。&#10;方針を検討した結果、今回はRails 6.1およびPsych 3系のままRuby 3.2にアップデートする戦略をとったため、その手順をまとめます。&lt;/p&gt;&#10;&lt;blockquote class="twitter-tweet"&gt;&lt;p lang="ja" dir="ltr"&gt;先週にメインのサービスをRuby 3.2にしてYJITを有効にできました！&lt;br&gt;実際に速くなったし嬉しい大YJIT記念日だ🎉 &lt;a href="https://t.co/Wkhc6fDfj9"&gt;https://t.co/Wkhc6fDfj9&lt;/a&gt;&lt;/p&gt;&amp;mdash; Hiroshi Shimoju (@shimoju_) &lt;a href="https://x.com/shimoju_/status/1681662811389190147?ref_src=twsrc%5Etfw"&gt;July 19, 2023&lt;/a&gt;&lt;/blockquote&gt;</description></item><item><title>Hugo PaperModでネストしたリストのマージンが不揃いなのを調整する</title><link>https://shimoju.jp/2023/07/02/adjust-margin-bottom-in-nested-lists-for-hugo-papermod/</link><guid isPermaLink="true">https://shimoju.jp/2023/07/02/adjust-margin-bottom-in-nested-lists-for-hugo-papermod/</guid><pubDate>Sun, 02 Jul 2023 14:21:50 +0900</pubDate><description>&lt;p&gt;このブログではHugoのテーマとして&lt;a href="https://github.com/adityatelange/hugo-PaperMod"&gt;adityatelange/hugo-PaperMod&lt;/a&gt;を利用している。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://shimoju.jp/2023/06/22/hugo-and-cloudflare-pages/#todo"&gt;以前書いたToDo&lt;/a&gt;で、&lt;code&gt;&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;ul&amp;gt;&lt;/code&gt;のようにリストをネストしたとき、子要素のulにmargin-bottomが適用されて、マージンが不揃いになってしまうのが気になっていたので直した。&lt;/p&gt;&#10;&lt;p&gt;もともと&lt;a href="https://github.com/adityatelange/hugo-PaperMod/blob/4a924cef54081b61530a30bd69d442ae95f16561/assets/css/common/post-single.css#L94"&gt;.post-content内のul,ol要素にmargin-bottomが指定されている&lt;/a&gt;ため、以下のCSSを&lt;a href="https://github.com/shimoju/shimoju.jp/blob/a57d12858c9e3b46e540c394fc8ceac3041fc77d/assets/css/extended/override.css#L34"&gt;カスタムCSSとして記述する&lt;/a&gt;。&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;span class="code-label"&gt;assets/css/extended/override.css&lt;/span&gt;&#10; &lt;div class="highlight"&gt;&lt;pre role="group" aria-label="コード（横スクロール可）" tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;post-content&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="nt"&gt;ol&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;post-content&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;margin-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;これで、ネストしたリストでもマージンが揃っていい感じになった。&lt;/p&gt;</description></item><item><title>Blueskyのハンドルネームにカスタムドメインを設定する</title><link>https://shimoju.jp/2023/06/26/bluesky-handle-custom-domain/</link><guid isPermaLink="true">https://shimoju.jp/2023/06/26/bluesky-handle-custom-domain/</guid><pubDate>Mon, 26 Jun 2023 22:30:43 +0900</pubDate><description>&lt;p&gt;同僚から&lt;a href="https://bsky.app/"&gt;Bluesky&lt;/a&gt;の招待コードをもらったので登録してみた。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://bsky.app/profile/shimoju.jp"&gt;https://bsky.app/profile/shimoju.jp&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;どうやら現状はログインしていないとプロフィールすら閲覧できないっぽい。招待コードは2つ余っているのでTwitterなどで声をかけていただければ。&lt;/p&gt;&#10;&lt;p&gt;いまのところ見た目はまんまTwitterという感じ。非中央集権型SNSを実現するプロトコルとしても&lt;a href="https://www.w3.org/TR/activitypub/"&gt;ActivityPub&lt;/a&gt;という先例があるので、&lt;a href="https://atproto.com/"&gt;AT Protocol&lt;/a&gt;がどのように差別化を図っていくのか気になる。&lt;/p&gt;&#10;&lt;p&gt;Twitterの雲行きが怪しい昨今、Mastodonなど含め色々試しつつ、複数の発信手段を確保しておきたい気持ち。このブログを整備し直したのもその一環だし。&lt;/p&gt;</description></item><item><title>HugoとCloudflare Pagesでブログを作り直した</title><link>https://shimoju.jp/2023/06/22/hugo-and-cloudflare-pages/</link><guid isPermaLink="true">https://shimoju.jp/2023/06/22/hugo-and-cloudflare-pages/</guid><pubDate>Thu, 22 Jun 2023 22:38:09 +0900</pubDate><description>&lt;p&gt;このブログはNode.js製の静的サイトジェネレーターである&lt;a href="https://hexo.io/"&gt;Hexo&lt;/a&gt;で作っていたけど、放置しすぎて（最新の記事が&lt;a href="https://shimoju.jp/2020/10/24/kaigi-on-rails/"&gt;3年前&lt;/a&gt;…）Node.jsやnpmがだいぶ古くなっており、アップデートが面倒な状態になっていた。&lt;/p&gt;&#10;&lt;p&gt;最近は&lt;a href="https://scrapbox.io/shimoju/"&gt;Scrapbox&lt;/a&gt;にシュッと書いてしまうことが多いものの、やっぱりすべてをコントロールできる自分のサイトを持ちたいよなーということで作り直した。&lt;/p&gt;&#10;&#10;&lt;h2 id="静的サイトジェネレーター"&gt;静的サイトジェネレーター&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://shimoju.jp/2017/09/26/hello-hexo-netlify/"&gt;前回の構築時&lt;/a&gt;にも比較に上がっていた&lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;を採用。&lt;/p&gt;&#10;&lt;p&gt;以前と比べて、Markdownとアセットをまとめて管理できる&lt;a href="https://gohugo.io/content-management/page-bundles/"&gt;Page Bundles&lt;/a&gt;機能などが追加されて順調に進化していることや、Hexoから大きくディレクトリ構成やfront-matterを変えなくてもよかったのが理由。&lt;/p&gt;</description></item><item><title>Kaigi on Railsでリモートワークについて発表しました</title><link>https://shimoju.jp/2020/10/24/kaigi-on-rails/</link><guid isPermaLink="true">https://shimoju.jp/2020/10/24/kaigi-on-rails/</guid><pubDate>Sat, 24 Oct 2020 17:47:48 +0900</pubDate><description>&lt;p&gt;&lt;a href="https://kaigionrails.org/"&gt;Kaigi on Rails&lt;/a&gt;にて「快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン」というタイトルで発表しました&lt;a href="https://twitter.com/shimoju_"&gt;shimoju&lt;/a&gt;です。無事燃え尽きていましたが、遅ればせながら感想ブログを書きました。&lt;/p&gt;&#10;&lt;p&gt;資料はこちらです。動画については順次公開中なのでそのうちアップされるはずです。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://scrapbox.io/shimoju/%e5%bf%ab%e9%81%a9%e3%81%aa%e3%83%aa%e3%83%a2%e3%83%bc%e3%83%88%e3%83%af%e3%83%bc%e3%82%af%e3%82%92%e5%ae%9f%e7%8f%be%e3%81%99%e3%82%8b%e3%81%9f%e3%82%81%e3%81%ab%e3%80%9cRails%e3%81%a7SSO%e3%82%92%e5%ae%9f%e7%8f%be%e3%81%99%e3%82%8b3%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3"&gt;快適なリモートワークを実現するために〜RailsでSSOを実現する3パターン&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://scrapbox.io/shimoju/Kaigi_on_Rails"&gt;当日の配信環境について&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCKD7032GuzUjDWEoZsfnwoA/videos"&gt;Kaigi on Rails 発表動画&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;初めてのオンライン登壇ですが、特にトラブルなく終えられて一安心でした。当日の配信環境については上に書いてありますが、事前に練習会があり、Zoomの画面共有やYouTube配信側でどう見えるかのテストができたのがよかったです。これがなかったら当日かなり焦っていました。&lt;/p&gt;</description></item><item><title>2019年、SUZURIの怪事件</title><link>https://shimoju.jp/2019/12/06/suzuri-2019/</link><guid isPermaLink="true">https://shimoju.jp/2019/12/06/suzuri-2019/</guid><pubDate>Fri, 06 Dec 2019 02:01:08 +0900</pubDate><description>&lt;p&gt;&lt;a href="https://adventar.org/calendars/4698"&gt;SUZURI Advent Calendar 2019&lt;/a&gt;の5日目の記事です。ちょっと遅れました。&lt;/p&gt;&#10;&lt;p&gt;SUZURIでエンジニアをしている&lt;a href="https://twitter.com/shimoju_"&gt;しもじゅー&lt;/a&gt;です。最近はSUZURIのAndroidアプリを開発するために目下勉強中で、Android何もわからない…となっています。&lt;/p&gt;&#10;&lt;p&gt;今年自分が担当したのは目に見えない裏側部分や長い調査を必要としたものが多かったです。謎の不具合にも悩まされたのでそこからいくつか紹介します。&#10;ご迷惑をおかけしたものもありますが、裏側ではこんなことやっているんだ、と感じていただければ幸いです。&lt;/p&gt;</description></item><item><title>Herokuでzip_code_jp gemの郵便番号データを定期更新したい</title><link>https://shimoju.jp/2018/09/17/zip-code-jp-on-heroku/</link><guid isPermaLink="true">https://shimoju.jp/2018/09/17/zip-code-jp-on-heroku/</guid><pubDate>Mon, 17 Sep 2018 22:50:34 +0900</pubDate><description>&lt;p&gt;日本の郵便番号データを扱うRuby gemとしては&lt;a href="https://github.com/tanihiro/zip-code-jp"&gt;zip_code_jp&lt;/a&gt;が有名です。ECサイトなどでは郵便番号から住所を補完する機能はもはや当たり前になっていますが、そのような機能を作りたいときに便利なライブラリです。&lt;/p&gt;&#10;&lt;p&gt;この郵便番号データは&lt;code&gt;ZipCodeJp.export_json&lt;/code&gt;で更新できますが、このときgemの&lt;a href="https://github.com/tanihiro/zip-code-jp/tree/master/data/zip_code"&gt;&lt;code&gt;data/zip_code&lt;/code&gt;&lt;/a&gt;ディレクトリ内にあるJSONファイルを直接更新します。&#10;一般的なサーバ環境であればcronで回すなどすれば普通に更新できますが、Herokuの場合はローカルにファイルを書き込んでも再起動のタイミングで自動で消滅します。&lt;a href="https://elements.heroku.com/addons/scheduler"&gt;Heroku Scheduler&lt;/a&gt;などで定期実行しても、既にパッケージされたslug内のデータは変更できないので意味がありません。&#10;&lt;a href="https://shimoju.jp/2018/07/29/heroku-release-phase/"&gt;Release Phase&lt;/a&gt;でいけないかな？とも思いましたが、&lt;a href="https://devcenter.heroku.com/articles/release-phase#when-does-the-release-command-run"&gt;Release Phaseはslugのビルド後に実行される&lt;/a&gt;のでこれも使えません。&lt;/p&gt;</description></item><item><title>Sidekiq + Heroku RedisでERROR: ERR max number of clients reachedと言われたら</title><link>https://shimoju.jp/2018/08/05/heroku-redis-connection-limit/</link><guid isPermaLink="true">https://shimoju.jp/2018/08/05/heroku-redis-connection-limit/</guid><pubDate>Sun, 05 Aug 2018 23:41:33 +0900</pubDate><description>&lt;p&gt;Redisの同時接続数制限が原因です。&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://github.com/mperham/sidekiq/wiki/Advanced-Options#concurrency"&gt;Sidekiqのconcurrencyのデフォルトは25&lt;/a&gt;となっており、Redisにもその数だけ接続するため、デフォルトのままだと一気に25接続を消費します。&lt;a href="https://elements.heroku.com/addons/heroku-redis"&gt;Heroku Redis&lt;/a&gt;のHobby Dev(接続数制限20)のような低価格なプランでは、concurrencyの設定をせずにデプロイすると一瞬でログがエラーまみれになってしまうので注意しましょう……。&lt;/p&gt;&#10;&lt;p&gt;上記Wikiにもあるように、変更するには&lt;code&gt;sidekiq.yml&lt;/code&gt;に以下のように書きます。&lt;code&gt;RAILS_ENV&lt;/code&gt;ごとに切り替えることもできます。&lt;/p&gt;</description></item><item><title>HerokuのRelease PhaseでDBマイグレーション忘れを防ぐ</title><link>https://shimoju.jp/2018/07/29/heroku-release-phase/</link><guid isPermaLink="true">https://shimoju.jp/2018/07/29/heroku-release-phase/</guid><pubDate>Sun, 29 Jul 2018 21:46:04 +0900</pubDate><description>&lt;p&gt;Herokuには&lt;a href="https://devcenter.heroku.com/articles/release-phase"&gt;Release Phase&lt;/a&gt;という機能があります。&#10;これはアプリケーションのビルドが終わってリリースする直前に任意のコマンドを実行するもので、DBのマイグレーションやキャッシュの削除といった用途に使えます。&lt;/p&gt;&#10;&lt;p&gt;設定方法は&lt;code&gt;Procfile&lt;/code&gt;に&lt;code&gt;release: command&lt;/code&gt;の形式で書くだけです。例えば、Railsでmigrateと&lt;a href="https://github.com/mbleigh/seed-fu"&gt;seed-fu&lt;/a&gt;を実行するのであれば以下のようになります。&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;span class="code-label"&gt;Procfile&lt;/span&gt;&#10; &lt;div class="highlight"&gt;&lt;pre role="group" aria-label="コード（横スクロール可）" tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;release: bin/rails db:migrate db:seed_fu&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;web: bundle exec puma -C config/puma.rb&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;DBマイグレーションを忘れて500エラーはあるあるな話ですが、これで防ぐことができます。&#10;コマンドが失敗したとき(0以外のステータスで終了したとき)はもちろんデプロイは行われません。&lt;/p&gt;</description></item><item><title>WerckerでRailsアプリをCIしてSlack通知する</title><link>https://shimoju.jp/2018/07/22/wercker-ci-rails/</link><guid isPermaLink="true">https://shimoju.jp/2018/07/22/wercker-ci-rails/</guid><pubDate>Sun, 22 Jul 2018 22:07:55 +0900</pubDate><description>&lt;p&gt;&lt;a href="https://jp.techcrunch.com/2017/04/18/20170417developer-tools-startup-wrecker-has-been-acquired-by-oracle/"&gt;オラクルに買収&lt;/a&gt;されてから存在感が薄くなった(?)ような気がする&lt;a href="http://www.wercker.com/"&gt;Wercker&lt;/a&gt;ですが、使う機会があったのでRailsでの設定をメモしておきます。&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;span class="code-label"&gt;wercker.yml&lt;/span&gt;&#10; &lt;div class="highlight"&gt;&lt;pre role="group" aria-label="コード（横スクロール可）" tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;box&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;ruby:2.5.1&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;mysql:5.7&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;env&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# rails-database-yml stepはrootユーザーを使わないのでランダムパスワードにしておく&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_RANDOM_ROOT_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;yes&amp;#39;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 以下の3つを設定する必要がある&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_DATABASE&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rails_test&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_USER&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rails&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;MYSQL_PASSWORD&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;password&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redis:4&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;build&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Node.jsは入っていないのでインストールする&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;install node.js&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;curl -fsSL https://deb.nodesource.com/setup_8.x | bash - &amp;amp;&amp;amp; apt-get install -qq nodejs&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# bundleのキャッシュもしてくれる&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# https://github.com/wercker/step-bundle-install&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;bundle-install&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 自動的にdatabase.ymlの設定をしてくれる&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# https://github.com/wercker/step-rails-database-yml&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="l"&gt;rails-database-yml&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;copy .env&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;cp .env.sample .env&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Redisの接続先この方法でしか取れなかったけどもっといい方法ありそう&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;redis config&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;echo REDIS_URL=redis://$REDIS_PORT_6379_TCP_ADDR:$REDIS_PORT_6379_TCP_PORT &amp;gt;&amp;gt; .env&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;db setup&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;bundle exec rails db:schema:load db:seed_fu&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;rspec&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;bundle exec rspec&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;after-steps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# Slack通知&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;44&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# https://github.com/wercker/step-slack&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;45&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;slack-notifier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;46&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 環境変数で設定&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;47&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;$SLACK_WEBHOOK_URL&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;48&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;channel_name&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;49&lt;/span&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;wercker&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;環境変数はWeb画面上で設定し、&lt;code&gt;wercker.yml&lt;/code&gt;内では&lt;code&gt;$変数名&lt;/code&gt;で参照します。「Protected」にすると設定値が見えなくなるので、秘匿情報を設定するときに便利です。&lt;/p&gt;</description></item><item><title>better_errorsがやたら遅いときは最新版にアップデートするとよい</title><link>https://shimoju.jp/2018/07/14/slow-better-errors/</link><guid isPermaLink="true">https://shimoju.jp/2018/07/14/slow-better-errors/</guid><pubDate>Sat, 14 Jul 2018 19:18:49 +0900</pubDate><description>&lt;p&gt;&lt;a href="https://github.com/charliesome/better_errors"&gt;better_errors&lt;/a&gt;が入ったRailsプロジェクトを最近触っているのですが、エラー画面の表示がやたら遅く、コンソールが使い物にならない状態になっていました。&#10;&lt;a href="https://github.com/charliesome/better_errors/issues/341"&gt;Puma 3系で発生しており&lt;/a&gt;、リクエスト・レスポンス変数内の&lt;code&gt;puma.config&lt;/code&gt;のサイズが非常に大きく、通信に時間がかかってしまっているからのようです。&lt;/p&gt;&#10;&lt;p&gt;この対策として、最新バージョンの2.4.0(2017年10月リリース)で&lt;a href="https://github.com/charliesome/better_errors#set-maximum-variable-size-for-inspector"&gt;サイズの大きいインスタンス変数をフィルタする機能&lt;/a&gt;が追加されていました。フィルタ設定はデフォルトで有効なので、最新版にアップデートすればいい感じになります。&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;span class="code-label"&gt;config/initializers/better_errors.rb&lt;/span&gt;&#10; &lt;div class="highlight"&gt;&lt;pre role="group" aria-label="コード（横スクロール可）" tabindex="0" class="chroma"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# This will stop BetterErrors from trying to render larger objects, which can cause&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# slow loading times and browser performance problems. Stated size is in characters and refers&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# to the length of #inspect&amp;#39;s payload for the given object. Please be aware that HTML escaping&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# modifies the size of this payload so setting this limit too precisely is not recommended.&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# default value: 100_000&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="no"&gt;BetterErrors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;maximum_variable_inspect_size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100_000&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;最近では&lt;a href="https://github.com/rails/web-console"&gt;web-console&lt;/a&gt;があるのでbetter_errorsをやめることも検討したのですが、これで快適に使えるようになりました。&lt;/p&gt;</description></item><item><title>Scrapboxでリアルタイム共同日報をやってみた</title><link>https://shimoju.jp/2017/12/31/scrapbox-nippo/</link><guid isPermaLink="true">https://shimoju.jp/2017/12/31/scrapbox-nippo/</guid><pubDate>Sun, 31 Dec 2017 08:00:00 +0900</pubDate><description>&lt;p&gt;この記事は&lt;a href="https://qiita.com/advent-calendar/2017/pepabo"&gt;GMOペパボ Advent Calendar 2017&lt;/a&gt;の17日目……になる予定だった記事です。&#10;担当日に風邪を引いてしまって穴を空けてしまいましたが、なんとか年内に投稿してギリギリセーフの雰囲気を出していこうと思います😇&lt;/p&gt;&#10;&#10;&lt;h2 id="朝会の機能不全"&gt;朝会の機能不全&lt;/h2&gt;&#10;&lt;p&gt;どのようなチームでも、人数が増えてくると「誰が何やってるのかわからない」という状況は起こるのではないかと思います。そのための情報共有の場として朝会はよく実施されていますが、自分のチームでは有効に機能していない状態でした。&lt;/p&gt;</description></item><item><title>ImageMagickで画像処理に入門する</title><link>https://shimoju.jp/2017/11/12/imagemagick/</link><guid isPermaLink="true">https://shimoju.jp/2017/11/12/imagemagick/</guid><pubDate>Sun, 12 Nov 2017 13:56:10 +0900</pubDate><description>&lt;p&gt;この記事は、&lt;a href="https://shimoju.jp/2017/10/30/classroom-learning-for-new-engineers/"&gt;ImageMagickと画像加工について発表した&lt;/a&gt;ときの資料を文章に起こして加筆修正したものです。&lt;/p&gt;&#10;&#10;&lt;h2 id="imagemagickとは"&gt;ImageMagickとは&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;画像加工といえばこれという有名ライブラリ&lt;/li&gt;&#10;&lt;li&gt;メジャーからマイナーまでさまざまな画像形式に対応&#10;&lt;ul&gt;&#10;&lt;li&gt;機能が多すぎて脆弱性もたびたび発見されるくらい…&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Cで実装され、多くの言語でバインディングがある&#10;&lt;ul&gt;&#10;&lt;li&gt;Ruby：&lt;a href="https://github.com/rmagick/rmagick"&gt;rmagick&lt;/a&gt;, &lt;a href="https://github.com/minimagick/minimagick"&gt;mini_magick&lt;/a&gt; gem&lt;/li&gt;&#10;&lt;li&gt;PHP：&lt;a href="http://php.net/manual/ja/book.imagick.php"&gt;Imagick拡張モジュール&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;Go：&lt;a href="https://github.com/gographics/imagick"&gt;gographics/imagick&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&#10;&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;&#10;&lt;p&gt;Mac Homebrew&lt;/p&gt;</description></item><item><title>Herokuはスケーラブルなアプリ養成ギプス</title><link>https://shimoju.jp/2017/11/11/twelve-factor-app-on-heroku/</link><guid isPermaLink="true">https://shimoju.jp/2017/11/11/twelve-factor-app-on-heroku/</guid><pubDate>Sat, 11 Nov 2017 22:39:05 +0900</pubDate><description>&lt;p&gt;社内勉強会でHerokuでの本番運用について発表しました。&#10;いま携わっている&lt;a href="https://suzuri.jp/"&gt;SUZURI&lt;/a&gt;はHerokuで運用しており、個人でもHerokuで運用しているアプリがあります。その中で経験したことや知見を話しました。&lt;/p&gt;&#10;&lt;div class="speaker-deck" style="--embed-ratio: 1.77777777777778"&gt;&#10; &lt;script&#10; async&#10; class="speakerdeck-embed"&#10; data-id="457f092496ab4856b7c3cef5bcd2babb"&#10; data-ratio="1.77777777777778"&#10; src="https://speakerdeck.com/assets/embed.js"&#10; &gt;&lt;/script&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;p&gt;&lt;a href="https://speakerdeck.com/shimoju/heroku-production"&gt;Herokuで本番運用する技術&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;目次を見るとわかるようにテーマは多岐にわたっており、ざっと＆ゆるめに発表しようという趣旨です。&lt;/p&gt;&#10;&#10;&lt;h2 id="herokuはスケーラブルなアプリ養成ギプス"&gt;Herokuはスケーラブルなアプリ養成ギプス&lt;/h2&gt;&#10;&lt;p&gt;Herokuのいいところといえば、マネージドで手軽に使えること、開発者にとって便利な機能が豊富なこともそうですが、アプリケーション設計に良い影響を与える点もあります。&lt;/p&gt;</description></item><item><title>新卒エンジニア研修の座学でImageMagickと画像加工の話をした</title><link>https://shimoju.jp/2017/10/30/classroom-learning-for-new-engineers/</link><guid isPermaLink="true">https://shimoju.jp/2017/10/30/classroom-learning-for-new-engineers/</guid><pubDate>Mon, 30 Oct 2017 00:41:38 +0900</pubDate><description>&lt;p&gt;ペパボの新卒エンジニア研修では、メニューのひとつとして「座学」を行っています。&lt;/p&gt;&#10;&lt;p&gt;メインの研修ではWeb開発・Webオペレーション・モバイルアプリ開発に順番に取り組んでいきますが、座学では知識と興味を広げることを目的として、社内のエンジニアにお願いして1時間自由に発表してもらっています。&#10;たとえば、テストやチーム開発、モバイルの開発手法といった研修内容に関連した話や、あるいは3DCGのシェーダーやReactive Extensionsといった、研修では触れないような技術の話まで様々です。研修の内容については、&lt;a href="https://tech.pepabo.com/2017/08/08/engineer-training-2017-vol1/"&gt;ペパボの新卒エンジニア研修2017 Vol.1 - ペパボテックブログ&lt;/a&gt;を見ると雰囲気がわかるかと思います。&lt;/p&gt;</description></item><item><title>DockerでcronしたいときはBusyBox crondが便利</title><link>https://shimoju.jp/2017/10/09/busybox-crond/</link><guid isPermaLink="true">https://shimoju.jp/2017/10/09/busybox-crond/</guid><pubDate>Mon, 09 Oct 2017 20:45:52 +0900</pubDate><description>&lt;p&gt;Dockerコンテナでプログラムを定期実行したいとき、それぞれの言語で実装されたタスクスケジューラを使うほか、手っ取り早くcronを使ってしまう方法もあります。しかしDockerで使うにはやや面倒な点があります。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;cronで実行するプログラムにコンテナに設定した環境変数を渡したい&#10;&lt;ul&gt;&#10;&lt;li&gt;環境変数が独立しているのはcronのよくあるハマりどころですね&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://qiita.com/rerofumi/items/fc0126c4e985b78f769b"&gt;ファイルに書き出して読み込んで&lt;/a&gt;、とやるのは面倒&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;ログは標準出力・標準エラー出力に書き出したい&#10;&lt;ul&gt;&#10;&lt;li&gt;標準出力に出せば&lt;code&gt;docker logs&lt;/code&gt;で扱えるし、ファイルだとローテートが面倒&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;このようなとき、&lt;a href="https://busybox.net/"&gt;BusyBox&lt;/a&gt;に含まれるcrondを使うと、以上の課題を解決してシンプルに定期実行することができます。&lt;/p&gt;</description></item><item><title>ブログをHexoで作り直してNetlifyにデプロイした</title><link>https://shimoju.jp/2017/09/26/hello-hexo-netlify/</link><guid isPermaLink="true">https://shimoju.jp/2017/09/26/hello-hexo-netlify/</guid><pubDate>Tue, 26 Sep 2017 23:59:59 +0900</pubDate><description>&lt;p&gt;ようやく重い腰を上げてブログを作り直しました。&#10;以前のブログはとりあえずWordPressでやっていたのですが、普段のエディタでMarkdownを書きたい…Git管理したい……となったので移行しました。&lt;/p&gt;&#10;&#10;&lt;h2 id="静的サイトジェネレータ"&gt;静的サイトジェネレータ&lt;/h2&gt;&#10;&lt;p&gt;静的サイトジェネレータとしては&lt;a href="https://hexo.io/"&gt;Hexo&lt;/a&gt;を採用しました。&#10;当初はGo言語製の&lt;a href="https://gohugo.io/"&gt;Hugo&lt;/a&gt;を使おうとしたのですが、投稿ごとにアセット用のディレクトリを切って管理できる&lt;a href="https://hexo.io/docs/asset-folders.html"&gt;Post Asset Folder&lt;/a&gt;機能など、ディレクトリ構成の柔軟性や機能の充実度を考えてHexoにしました。&lt;/p&gt;</description></item><item><title>コーディング規約チェックを日常に〜無理なくチーム全員で取り組める仕組みを作ろう</title><link>https://shimoju.jp/2016/12/04/step-by-step-code-linting/</link><guid isPermaLink="true">https://shimoju.jp/2016/12/04/step-by-step-code-linting/</guid><pubDate>Sun, 04 Dec 2016 23:34:56 +0900</pubDate><description>&lt;p&gt;この記事は&lt;a href="http://qiita.com/advent-calendar/2016/pepabo"&gt;pepabo Advent Calendar 2016&lt;/a&gt;の4日目です。&#10;3日目は&lt;a href="https://twitter.com/r_takaishi"&gt;@r_takaishi&lt;/a&gt;さんの「&lt;a href="https://repl.info/archives/627"&gt;IIJmioのクーポン残量をAWS LambdaとMackerelでプロットしてみよう&lt;/a&gt;」でした。&lt;/p&gt;&#10;&#10;&lt;h2 id="コードレビューでよくある風景"&gt;コードレビューでよくある風景&lt;/h2&gt;&#10;&lt;p&gt;突然ですが、コードレビューを行っていると、このようなコメントを一度はする・されると思います。&lt;/p&gt;&#10;&lt;figure&gt;&lt;img&#10; src="https://shimoju.jp/2016/12/04/step-by-step-code-linting/code-review.8badc8a0ad0d980d67a4b678b4a101fe4f9349d939b4cf3a7976bb968f30cd07.png"&#10; alt="細かいコーディングスタイルに関する指摘"&#10; &#10; &#10; width="1312"&#10; &#10; height="414"&#10;/&gt;&lt;/figure&gt;&lt;p&gt;インデントやスペースの抜け漏れといった、細かいコーディングスタイルに関する指摘ですね。&#10;人力でフォーマットの指摘をするのは見逃しが発生しやすく、細かい部分を確認するコストがかかります。小言のようなコメントになってしまいがちで、開発者・レビュアー双方に負担が増えてしまいます。&lt;/p&gt;</description></item><item><title>研修で1週間でWebサービスをつくった話</title><link>https://shimoju.jp/2016/09/21/osan-week/</link><guid isPermaLink="true">https://shimoju.jp/2016/09/21/osan-week/</guid><pubDate>Wed, 21 Sep 2016 19:00:32 +0900</pubDate><description>&lt;ul&gt;&#10;&lt;li&gt;「1週間でWebサービスをつくる」研修&#10;&lt;ul&gt;&#10;&lt;li&gt;「お産ウィーク」と呼んでいる&lt;/li&gt;&#10;&lt;li&gt;新卒エンジニア5人+デザイナー1人で2チーム&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;課題は旅行と料理の2つでどちらかを選ぶ&#10;&lt;ul&gt;&#10;&lt;li&gt;料理にした&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;料理は工夫の繰り返し&#10;&lt;ul&gt;&#10;&lt;li&gt;今日は〇〇を多く入れてみよう、強火にしよう、スパイスを変えよう、…&lt;/li&gt;&#10;&lt;li&gt;でも結局どれがどのくらい美味しかったのか、自分の料理がどのくらい成長したのかがわからない！&lt;/li&gt;&#10;&lt;li&gt;→料理の記録をふりかえって、自分の工夫を実感できるサービスを作ろう となった&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;つかれた&#10;&lt;ul&gt;&#10;&lt;li&gt;何も出てこない&lt;/li&gt;&#10;&lt;li&gt;箇条書きで書く&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;まず動くものを作れたことが第一&lt;/li&gt;&#10;&lt;li&gt;エンジニアの発想の限界&#10;&lt;ul&gt;&#10;&lt;li&gt;かなり素直、というか課題をそのまま作ったような感じ&lt;/li&gt;&#10;&lt;li&gt;もう一工夫できた&lt;/li&gt;&#10;&lt;li&gt;自分たちでは限界がある、他人の視点大事&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;使ってみると楽しい&#10;&lt;ul&gt;&#10;&lt;li&gt;使ってみる/使ってもらうと改善点がいろいろ出てくる&lt;/li&gt;&#10;&lt;li&gt;最終的に自分が使いたくなるものを作れた&lt;/li&gt;&#10;&lt;li&gt;他人のレシピを見ると（ふざけてるのもあるけど真面目に書いてるのもあって）おもしろい&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;やっぱりレシピ公開（共有要素）を入れてよかった&#10;&lt;ul&gt;&#10;&lt;li&gt;そうするとユーザーネームいれたほうがよかった&lt;/li&gt;&#10;&lt;li&gt;最初は全部非公開で日記みたいになる想定だった&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;月額課金で収益を得る想定なので、WebPayを使って支払情報の登録をできるようにしておいた&#10;&lt;ul&gt;&#10;&lt;li&gt;「こうなる予定でした」と夢物語にならないようにはできた&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;新卒デザイナーがひとりなので、こっちのチームにはデザイナーがいなかった&#10;&lt;ul&gt;&#10;&lt;li&gt;その割にはがんばった&lt;/li&gt;&#10;&lt;li&gt;フレームワークを使ってそれなりに仕上げているだけ&lt;/li&gt;&#10;&lt;li&gt;できることから考えてしまう癖&lt;/li&gt;&#10;&lt;li&gt;ユーザーにこういう経験をしてもらいたい→じゃあ具体的にこんなデザインにしよう→実装 という形ではなかった&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;自分の存在意義とは&lt;/li&gt;&#10;&lt;li&gt;テスト書いたり本番環境で一連の操作をしてみるなど、検証まで含めて機能の完成&#10;&lt;ul&gt;&#10;&lt;li&gt;テスト書かなかったなー&lt;/li&gt;&#10;&lt;li&gt;発表1時間前に本番環境で一部の操作にエラーが出ることが発覚&lt;/li&gt;&#10;&lt;li&gt;突如ISUCONが開催された&lt;/li&gt;&#10;&lt;li&gt;落ち着いてログを見てエラーを潰せたのはちょっと経験値が上がった？&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;作りたい機能が5個あるけど時間が足りないとなったとき、検証を省いて5個作るんじゃなくて、3個に減らしてそこまでは確実に機能するものをつくる&#10;&lt;ul&gt;&#10;&lt;li&gt;動かなければないものと同じ&lt;/li&gt;&#10;&lt;li&gt;優先順位や「やらないことリスト」&lt;/li&gt;&#10;&lt;li&gt;自分たちのやりたいことに最低限必要なものは何なのか（MVP）&lt;/li&gt;&#10;&lt;li&gt;自信を持って減らせる&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;公開したい&#10;&lt;ul&gt;&#10;&lt;li&gt;使いたいし改善したい&lt;/li&gt;&#10;&lt;li&gt;会社のプライベートクラウドにデプロイしているのでアドレスさえわかれば見れる状態&lt;/li&gt;&#10;&lt;li&gt;ログイン制なのにSSLじゃない&lt;/li&gt;&#10;&lt;li&gt;テストも書いてないし手動の検証も不足しているので、プライベートなものが本当にプライベートになっているかよくわからない&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>ペパボ社内ISUCONで撃沈しました</title><link>https://shimoju.jp/2016/08/31/pepabo-isucon/</link><guid isPermaLink="true">https://shimoju.jp/2016/08/31/pepabo-isucon/</guid><pubDate>Wed, 31 Aug 2016 01:04:51 +0900</pubDate><description>&lt;p&gt;ISUCONとは「いい感じに スピードアップ コンテスト」(&lt;strong&gt;I&lt;/strong&gt;ikanjini &lt;strong&gt;S&lt;/strong&gt;peed &lt;strong&gt;U&lt;/strong&gt;p &lt;strong&gt;CON&lt;/strong&gt;test)の略だそうで、課題として与えられたWebアプリケーションを制限時間内でチューニングし、ベンチマークツールによる得点を競う大会です。&lt;/p&gt;&#10;&lt;p&gt;本物の方は年1回開催され、&lt;a href="http://isucon.net/"&gt;賞金はなんと100万円&lt;/a&gt;。今年は9/17〜18に予選が行われますが、技術力やモチベーション向上の良い機会であることから、社内で開催される事例も増えているようです。&#10;社内ISUCONには&lt;a href="http://inside.pixiv.net/entry/2016/05/18/115206"&gt;pixiv&lt;/a&gt;や&lt;a href="http://tech.kayac.com/archive/inhouse_isucon2015.html"&gt;カヤック&lt;/a&gt;などの事例があります。&lt;/p&gt;&#10;&lt;p&gt;その流れに乗ってペパボでも開催することになり、今日がその本番。&#10;参加者は全員ではなく立候補ですが、新卒エンジニアはWebアプリ・Webオペレーション研修と学んできたタイミングなので時期的にもちょうどよく、研修の一環のような形で参加しました。&lt;/p&gt;</description></item><item><title>Webオペレーション(インフラ)研修が佳境に入りました</title><link>https://shimoju.jp/2016/08/24/infra-ganbaru/</link><guid isPermaLink="true">https://shimoju.jp/2016/08/24/infra-ganbaru/</guid><pubDate>Wed, 24 Aug 2016 23:59:56 +0900</pubDate><description>&lt;p&gt;数日書かないだけでなかなか筆が進まなくなるね…&lt;/p&gt;&#10;&lt;p&gt;さて、Webオペレーション(インフラ)研修も佳境に入った。&#10;研修の概要については&lt;a href="https://shimoju.jp/2016/08/09/web-ops-training/"&gt;Webオペレーション研修、そして夏季休暇&lt;/a&gt;に書いたとおりで、いまはApp・DBの冗長構成ができて基本的な構成の完成に近づいた。&lt;/p&gt;&#10;&lt;p&gt;これからは監視機構の導入や、本番環境への適用(インスタンス作成、Puppet適用、アプリのデプロイまでの一連の流れ)にまだ手作業が残っているところがあるので、自動化を進めたりなど本番で運営できるような完成度を高めていく作業となる。&lt;/p&gt;</description></item><item><title>Webオペレーション研修、そして夏季休暇</title><link>https://shimoju.jp/2016/08/09/web-ops-training/</link><guid isPermaLink="true">https://shimoju.jp/2016/08/09/web-ops-training/</guid><pubDate>Tue, 09 Aug 2016 23:45:52 +0900</pubDate><description>&lt;p&gt;ついにやってきた。8/10〜8/17まで。&#10;前半はほとんど予定がないので、飲んだりなんだり募集してます。&lt;/p&gt;&#10;&lt;p&gt;大学生は休み長いし、なんならいつも休みみたいなもんだったけど、これが社会人かという気持ちになっている。&#10;特にいまは有給休暇がないので、貴重な休み…。&lt;/p&gt;&#10;&#10;&lt;h2 id="インフラをつくる"&gt;インフラをつくる&lt;/h2&gt;&#10;&lt;p&gt;エンジニア研修はWeb開発研修からWebオペレーション研修へと移り、&lt;a href="https://www.railstutorial.org/book"&gt;Rails Tutorial&lt;/a&gt;で作ったRailsアプリを動かすインフラをひたすら作っている。&lt;/p&gt;</description></item></channel></rss>