kakakakakku blog

Weekly Tech Blog: Keep on Learning!

プログラミング初心者だけじゃなくプログラミング講師も読むべき一冊だった /「ゼロからわかる Ruby 超入門」を読んだ

11月末に発売された「ゼロからわかる Ruby 超入門」を読んだ.最近まで2年ほどプログラミング講師として Ruby / Ruby on Rails を教えていたので,プログラミング初心者に教えるノウハウが得られたら良いなと考えていた.そして本書は「本当にプログラミング初心者でも挫折せずに読める」素晴らしい本だった.タイトルに「超入門」とあるけど,個人的には「超入門(から中級まで幅広く)」かなと感じた.なぜかと言うと,本書を読み進めていくと,例えば .methods.instance_variables など,中級レベルの内容も出てくるから.今回はプログラミング講師の観点で書評を書きたいと思う.

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

目次

  • CHAPTER 1 : 環境をつくる
  • CHAPTER 2 : かんたんなプログラムを書く
  • CHAPTER 3 : 処理の流れを変える
  • CHAPTER 4 : まとめて扱う - 配列
  • CHAPTER 5 : 便利な道具を使う
  • CHAPTER 6 : 組で扱う - ハッシュ
  • CHAPTER 7 : 小さく分割する - メソッド
  • CHAPTER 8 : 部品をつくる - クラス
  • CHAPTER 9 : 部品を共同利用する - モジュール
  • CHAPTER 10 : Webアプリをつくる
  • CHAPTER 11 : 使いこなす

オススメの読み方を考えた

あくまで参考程度にどうぞ!

プログラミング初心者には「無理に1回で読まず,一歩一歩自信を付けながら,繰り返し読むと良いよ!」と伝えたい.

  • 「超入門」1周目
    • CHAPTER 1 から CHAPTER 7 までを読む(メソッドまで)
    • 「写経」をする
    • Challenge は全部スキップする
    • 練習問題も全部スキップする
  • 「超入門」2周目
    • CHAPTER 1 から CHAPTER 11 までを全て読む
    • 「写経」をする
    • Challenge は全部スキップする
    • 練習問題を全部解く(実際にプログラムを書いて動作確認をする)
  • 「超入門」3周目
    • 苦手意識のある CHAPTER をピックアップして読み直す
    • Challenge を全部読む

インストール手順まで細かく書いてあって良い 👌

CHAPTER 1 で「Windows / Mac に Ruby をインストールする手順」がキャプチャ付きで載っている.今後キャプチャが変わってしまう可能性はあると思うけど,それでもインストールで挫折してしまう人を救うために載っているんだと思う.また「Windows / Mac に Visual Studio Code をインストールする手順」もキャプチャ付きで載っていて,日本語化 / ショートカットなどの絶対に必要になる Tips も丁寧に紹介されている.1点気になったのは Windows は Ruby 2.5 系なのに Mac は Ruby 2.3 系なところ.とは言え,最初に rbenv の話が出てくるとプログラミング初心者は絶対に挫折するので,検討された結果こうなっているんだと思う.

エラーに挫折しないように書かれていて良い 👌

プログラミング初心者は「エラーが出ると思考停止」してしまう.実際に教えているときにエラーが出て「何もわからない!お手上げ!」と悩まれている生徒さんが多くいた.そんなときに僕は「エラーを楽しみましょう!エラーは誰でも出ますから!」と伝えるようにしていた.本書では CHAPTER 1 で「打ち間違いを確認しよう」「全角スペースが入っていないか確認しよう」など,頻発パターンが紹介されているので,実際にエラーが出ても落ち着いて解決できるように書かれている.

さらに CHAPTER 2 ではもう1步踏み込んでいて「エラーメッセージを読み解く方法」が書かれている.エラーが出ると思考停止してしまう理由の1つは「英語や記号がたくさん並んでいてよくわからない」という点にあるので,エラーメッセージの説明は価値がある.僕は「NameError とか SyntaxError とか,エラーの原因を特定するヒントになる部分を探してみよう!」と伝えることが多い.さらに「Did you mean?」も説明されていたのも良かった.

身近な比喩やイメージしやすいシチュエーションが良い 👌

「変数はオブジェクトに付ける名札である」「irb はプログラムを1行ずつ実行できる道具である」など,身近な比喩で説明されている.他にも比喩ではないけど,メソッド引数のデフォルト値を説明するときに「カフェに幾度か通って同じ注文を続けたため、注文を言わなくてもコーヒーが出てくるようになったとしましょう」というイメージしやすいシチュエーションで説明されている点も良かった.プログラミングを学ぶときに「機能は理解できたけど,実際にどんな場面で使えば良いのだろう?」という状態に陥ってしまうことが多いため,使えそうなシチュエーションを知ることにも価値がある.

def order(item = "コーヒー")
  "#{item}をください"
end

puts order # コーヒーをください
puts order("カフェラテ") # カフェラテをください
puts order("モカ") # モカをください

キャラクターが可愛くて良い 👌

本書では多くのページに図解があり,プログラミング初心者でもイメージしやすいように工夫されている.さらにキャラクター(ゆるキャラ)がとても可愛く,例えば「整数オブジェクトさん」「文字列オブジェクトさん」などが登場する.僕のお気に入りは「ハッシュオブジェクトさん」で,実際に Ruby を教えるときに「ハッシュオブジェクト」は理解してもらうのが難しく,今後はこの「ハッシュオブジェクトさん」を見てもらえば良さそう!キャラクターの裏話は以下の記事に書いてある.

note.mu

また以下の書評記事には「pop メソッドのビューン」が挙がっているけど,僕は P.184 に出てくる「Drink クラスからDrink クラスのオブジェクトがベルトコンベアに乗って出てくる工場みたいなキャラクター」が好き.この図解があればクラスも教えやすくなる!

pupupopo88.hatenablog.com

Kindle で読みにくい 💦

あえて改善ポイントを挙げるとするならば,Kindle で読みにくいところだと思う.Amazon の商品ページにも記載がある通り,本書は現時点だと固定レイアウトになっているので,ハイライトや検索ができない.さらに解像度?もあまり高くなく,iPad や MacBook で見ると,文字や図解が滲んで見えた.

※この商品は固定レイアウトで作成されており,タブレットなど大きいディスプレイを備えた端末で読むことに適しています。また,文字列のハイライトや検索,辞書の参照,引用などの機能が使用できません。

プログラミング初心者に教えるときは「身近な比喩」が重要なのだ!

先週「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」で登壇をしたときにも本書を引用した.プログラミング初心者だけじゃなく,プログラミング講師も読むべき一冊だと思う.是非,登壇資料も合わせて見てもらえると!

kakakakakku.hatenablog.com

まとめ

  • 「ゼロからわかる Ruby 超入門」を読んだ
  • 本当にプログラミング初心者でも挫折せずに読める素晴らしい本だった
  • 本書のレベルは「超入門(から中級まで幅広く)」だと思う
  • プログラミング初心者だけじゃなくプログラミング講師も読むべき一冊

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

2018年のプルリクエストを振り返る

今年も OSS に送ったプルリクエストを振り返る.過去2年間の振り返りは以下の記事にある.

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com

プルリクエストを振り返るための検索

GitHub には Issue / プルリクエストを検索するための条件式があり,以下のように検索すると「今年 OSS に送ったプルリクエスト一覧」を確認することができる.便利!

is:pr is:public author:kakakakakku -user:kakakakakku created:2018

条件式は以下のドキュメントに詳しく載っている.

f:id:kakku22:20181215214709p:plain

2018/01

mackerelio/mackerel-plugin-aws-ecs

Mackerel で Amazon ECS クラスタのメトリクスを取得するプラグイン「mackerel-plugin-aws-ecs」を試したときに,README に書かれているコマンド名が間違っていたので,修正した.記念すべきプルリクエスト1番目になった!

github.com

「mackerel-plugin-aws-ecs」を試した結果は以下の記事にまとめてある.

kakakakakku.hatenablog.com

getredash/redash

「Elasticsearch」はよく誤って「ElasticSearch」や「Elastic Search」と表記されることがある.Redash の Data Sources も「ElasticSearch」と表記されていて,気になっていたところを修正した.

github.com

getredash/website

Redash のドキュメントにも多くの「ElasticSearch」があり,全てを「Elasticsearch」に修正した.リポジトリ全体を何度も grep しながらセルフレビューをした.

github.com

2018/03

silinternational/ecs-deploy

2017年からコントリビュートをしている ecs-deploy の README を読んでいたら typo を発見して,修正した.

github.com

aws-samples/aws-workshop-for-kubernetes

Kubernetes を学ぶために GitHub に公開されているワークショップ資料「aws-workshop-for-kubernetes」を試していたときに,Istio のバージョンが手順書よりも新しくなっていることが原因でエラーになったので,ワイルドカードを使った手順に修正した.

github.com

ワークショップ資料「aws-workshop-for-kubernetes」のまとめは以下の記事にある.

kakakakakku.hatenablog.com

2018/04

silinternational/ecs-deploy

春頃にリリースされた Amazon ECS の「Force New Deployment 機能 (--force-new-deployment)」を ecs-deploy でも使えるようにした.この頃から ecs-deploy の Contributors を見ると上位(トップ6)に上がっている.

github.com

2018/06

aws/aws-codedeploy-agent

AWS CodeDeploy を導入するときに,Ruby で実装された AWS CodeDeploy Agent のコードを読んでいたら,たまたま typo を発見して,修正した.

github.com

2018/12

awslabs/aws-cloudformation-templates

Amazon SQS の AWS CloudFormation テンプレートを調査していたら,Description セクションに書いてある FIFO キュー対応リージョンが古くなっていたので,最新情報に合わせて修正した.

github.com

silinternational/ecs-deploy

ecs-deploy で使っている Alpine Linux 3.5 が 2018/11/01 で End of Support になったため,現時点で最新となる Alpine Linux 3.8 に移行した.さらに一部のテストコードに誤ったシェルの構文があり,Alpine Linux 3.8 だとエラーになるため,合わせて修正した.

github.com

Alpine Linux の End of Support 情報は以下の公式 Wiki に載っている.

silinternational/ecs-deploy

Amazon ECS が AWS Systems Manager Parameter Store の SecureString をサポートしたため,ecs-deploy でも使えるようにした.もともと別のプルリクエストが出ていたけど,実装方法が間違っていて,このままマージされると困るので,参考実装の意味も込めてプルリクエストを送った.うまく動作しているとコメントをもらえているため,テストコードを追加したら WIP を外す.

github.com

awslabs/aws-cloudformation-templates

AWS Identity and Access Management (IAM) の AWS CloudFormation テンプレートを調査していたら typo と正式名称の誤りを発見して,修正した.awslabs/aws-cloudformation-templates は AWS CloudFormation の勉強に便利!

github.com

まとめ

今年は計11個のプルリクエストを送ることができた.機能追加よりもドキュメント修正の方が多かったけど,実際に仕事で使っているライブラリを少しでも改善できて良かった.あとプルリクエストではないけど,今年は必要なライブラリを自分で Dockerized して Docker Hub に公開することも多かった.来年も仕事で使うライブラリを中心にプルリクエストを送れるように頑張るぞ!

Rubyist が学び合うカンファレンス「Rails Developers Meetup 2018 Day 4」に参加した

12/8 (土) に開催された「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」に参加した.イベント名に「Rails」と付いているものの,トークテーマは多岐にわたり,エンジニアなら誰でも楽しめるように工夫されていた.また YouTube ライブ配信もあり,リモート参加者も大切にするホスピタリティを感じたし,イベント運営プロジェクトのクオリティの高さに驚かされた!参加したトークの中で印象的なものを抜粋して紹介したいと思う.

techplay.jp

今回は僕も登壇をして,既に資料を公開している.内容的に Non-Tech だからイベントの趣旨と合わなかったらどうしよう!と不安もあったけど,オーディエンスの反応を読みながら楽しく登壇できた!えーっと「プレゼン芸人感」は出てた?笑

kakakakakku.hatenablog.com

ZOZOTOWN のバッチデータ転送基盤の紹介

  • Embulk + Digdag
    • Digdag Ruby scripts Operators も併用している
  • 多くの集計ジョブがある
  • CircleCI : データアナリストが実装した SQL 構文を CI している

Embulk + Digdag を活用した集計基盤のアーキテクチャ事例だった.後半に紹介されていたジョブ依存図は圧倒的な複雑さで大変そうだけど,どこまで Digdag を使っているんだろう?という点は興味を持った.構成次第だけど Embulk も Digdag も Dockerized すると今より運用しやすくなる可能性もありそう.登壇中にちょこちょこと ZOZO に関係する時事ネタが出てきて,笑ってしまった!

(資料公開待ち)

Rails x パターン @junk0612

  • 単一テーブル継承 (STI : Single Table Inheritance)
    • 出典 : 書籍「エンタープライズ アプリケーション アーキテクチャパターン」
    • サブクラスの追加に柔軟に対応できる
    • ただし,サブクラスのカラムに NOT NULL が付けられない
  • フォームオブジェクト
    • 出典 : 不明
    • 複数のモデルにまたがった処理を1箇所にまとめることができる
    • ただし,app/forms に多くのファイルが置かれてしまう
  • 勘定
    • 出典 : 書籍「アナリシスパターン」
    • 「取引モデル」と「勘定科目モデル」に分割して,勘定科目の合計金額が 0 になるようにバリデーションを実装する
  • パターン中毒
    • 導入前に本当に必要なのか?を議論する

「パターン」に興味を惹かれるエンジニアは多いと思う.計3種類のパターンが紹介されていて,特に STI とフォームオブジェクトに関しては Twitter のハッシュタグが盛り上がっていたので,ツイートを見ながら登壇を聞くというリアルタイムな体験は良かった!あと「PofEAA」と呼ばれる書籍「エンタープライズ アプリケーション アーキテクチャパターン」は読んだことがなく,気になる!個人的には「登壇直前に資料が完成した」と冒頭で言っていた点が気になり,実際に資料にミスもあり,もう少し準備をするべきかも?と感じた.

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented SELECTION)

  • 作者: マーチン・ファウラー,長瀬嘉秀,株式会社テクノロジックアート
  • 出版社/メーカー: 翔泳社
  • 発売日: 2005/04/21
  • メディア: 大型本
  • 購入: 10人 クリック: 635回
  • この商品を含むブログ (143件) を見る

FiNC での5年間に渡るマイクロサービスの育て方

  • 開始
    • 開発案件を受託する形からスタートした
    • 最初はローカル環境から cap deploy production を実行していた
    • FiNC に吸収される形で JOIN した
  • 成長期
    • 多くの機能が必要になり,モノリシックでは難しいと判断した
    • 「遺伝子検査の閲覧機能」を新規に Rails で実装した
      • これが FiNC のマイクロサービスのはじまり
  • 加速期
    • 一部のサービスに依存が強くなり「神サービス」になってしまった
      • BFF (Backend For Frontend) を導入する
  • グロース期
    • 積極的にマイクロサービス化とリアーキテクトを実施している
    • BFF は Kotlin で実装し直した

非常に刺激的な内容だった!単純にマイクロサービス化を進めるという話ではなく,スタートアップの成長フェーズによって適切な技術選定をし,さらに組織的な改善も日々しているんだろうなという苦労が感じられた.プロダクション環境で稼働中のモノリシックサービスをマイクロサービスに切り出すのは「言うは易く行うは難し」なので,ここまでリアーキテクトを実践されているのは本当に素晴らしい!

二人チームにおけるバックエンド開発の効率化を求めて @okuramasafumi

まさにスタートアップ!という状況の中,ライブラリを適切に選定し,開発プロセスに組み込んでいる事例だった.個人的には2人だとプルリクエストのレビューが止まったりして,期待するほどリードタイムが上がらない場合もあるので,せめて3人だったら良いのに!とは思った.RuboCop の .rubocop.yml にオーディエンスの興味関心があったこともあり,お昼休憩中に .rubocop.yml を紹介する飛び込み LT をされていたのも素晴らしかった!

The Cacher in the Rye

キャッシュを「使わない」という話だった.キャッシュは「諸刃の剣」であるという理解はあるものの,レスポンスタイムを短くするためにプロダクション環境で Memcached / Redis などを使っていた経験もあり,耳が痛い部分もあった.Memcached を使う場合は eviction をモニタリングするのもわかる.資料には「十分なリソースがあればキャッシュは不要」と書いてあったけど,例えば頻繁に実行されるクエリなど,実際にどのように対応しているんだろう?という点はもう少し聞きたかった.

複数のスタートアップを通して得た失敗と学び @threetreeslight

  • Repro 創業者
    • 現在 VPoE
  • 「失敗談」にフォーカスする
    • 失敗軸 : プロダクト / 組織 / 採用 / 技術
  • 0 → 1
  • 1 → 10
    • システム費を無理に削減せずに保守性を考える
  • 10 → 30
    • 採用に専念する
    • 平均以上なら採用する
  • 30 → 50
    • 要望に追われる
    • 雑な設計のスケール限界が見える
  • 50 → 100
    • リリースマネージャに権限委譲する
    • ミドルマネージャの数が組織規模の限界を決める
  • 100 → 300
    • Corporate Operations Engineer(≒ 社内 SE)を専任化する
      • できるなら「社内 SE」と呼ばない
  • 300 → ?

Ruby / Rails とは少し異なるテーマだけど,個人的にはベストトークだった!プレゼンスキルも圧倒的だった!そして「失敗談を楽しく語れる」ことの素晴らしさ(と強さ)を感じた.テクニカルサポートを当番制にしたり,サービスを伸ばすために個別要望に対応したら実装が破綻したり,アーキテクチャのスケール限界が見えたり,実体験とシンクロするあるある話もありつつ,ここまで言語化された資料も貴重なので,スタートアップ界隈は1度読むと良いのでは!

gitpitch.com

まとめ

  • 「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」に参加した(計13トーク)
    • 僕も登壇した!
  • Ruby / Rails に限らず,トークテーマが多岐にわたり,エンジニアリング全般を学べるカンファレンスだった
  • イベント運営プロジェクトのクオリティが高かった
  • お疲れさまでした!

プログラミング初心者に教えるときは「身近な比喩」が重要なのだ!

今日は「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」に参加し,教育関連のネタで登壇をしてきた!パブリックイベントに登壇するのは約半年振りで,やはり登壇するのは楽しいなぁー!という気持ちになった.あと登壇前に司会者から「ブロガーの吉田さん」と呼ばれて,あまりにダサすぎて吹いた!笑

techplay.jp

登壇資料

伝えたかったこと

  • プログラミング初心者に教えるときに「身近な比喩」を使うと良い
    • プログラミング講師に限らず,誰でも「教える(伝える)機会」はある
  • 教えるときに重要なのは「生徒さんと同じ目線で考えられること」
    • そして「粘り強く何度でも伝え,常に笑顔でいること」
  • 「身近な比喩」の引き出しを増やそう!

関連書籍

「チェリー本」は初心者を対象にした本ではないものの「第11章 : Ruby のデバッグ技法を身につける」の内容が素晴らしく,プログラミング初心者は「第11章」のために「チェリー本」を買っても良いと思う.

2週間前に発売された「超入門本」は本当に初心者でも理解できるように工夫されていて素晴らしかった.今後はプログラミング初心者に「超入門本」を紹介しようと思う.今月中に書評を書く予定!

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

ゼロからわかる Ruby 超入門 (かんたんIT基礎講座)

まとめ

  • Rails Developers Meetup 最高!
  • 登壇依頼は @yoshi_hirano さんに頂いた!ありがとうございました!

関連記事

今回のネタは今年1月に「表参道.rb」で登壇した内容をベースにブラッシュアップした.

kakakakakku.hatenablog.com

「チェリー本」は今年1月に書評を書いている.

kakakakakku.hatenablog.com

多くの CircleCI ファンが集まった「CircleCI Japan User Community Kickoff」に参加した

12/3 (月) にサイボウズ様オフィスで開催された「CircleCI Japan User Community Kickoff」に参加した.今回は招待制のプライベートイベントで,CircleCI を日頃から圧倒的に活用している人たちが集まっていたので,有名人多すぎでは?という感じだった.僕は CircleCI 関連のブログを多く書いているということで招待して頂いた.ありがとうございます!

f:id:kakku22:20181203233933j:plain

(参加者に配られたノベルティ!)

CircleCI User Community @kemorimo & @kimhirokuni

  • CircleCI User Community
    • 「CircleCI ファンのためのコミュニティ」を作る
    • 今後使うハッシュタグ「#circlecijp」
  • 最近のリリース情報

サイボウズを支える CircleCI @miyajan

  • 今までは Jenkins + Drone を使っていた
  • CircleCI 導入開始
    • 1.0 → 2.0 になり,使えるようになった
  • CircleCI Server (Enterprise) 導入
  • 事例
    • 1日1回 CicleCI 経由で VPC を再構築する(常に自動化を試す)
  • Performance Pricing Plan
    • コンテナ数課金ではなく,必要なときに従量課金で使える
  • CircleCI Config 2.1
    • config.yml : 1462行 → 923行 に削減
    • Orbs 未導入

Workflow の並列度が高く,大規模に CircleCI を活用している事例だった.さらに Config 2.1 に移行して config.yml を削減できたとのこと.発表にもあった通り,Orbs を導入すればもっと削減できそう.VPC を1日1回再構築する運用も Infrastructure as Code のお手本として素晴らしかった.

www.slideshare.net

Mercari Frontend の CircleCI 活用事例 @urahiroshi

  • フロントエンドデプロイ
    • 今までは CircleCI でテストだけを実施して,サーバでビルドをしていた
    • CircleCI でビルドをして,Amazon S3 に保存するようにした
    • サーバで Amazon S3 から .tar をダウンロードすれば動くようになった
  • Storybook デプロイ
    • プルリクエスト単位に Storybook を見れるように
    • CircleCI で Amazon S3 に保存して,Amazon CloudFront からアクセスできるように
    • プルリクエスト番号を取得するために ${CIRCLE_PULL_REQUEST} を使う
  • 脆弱性検知

CircleCI と Amazon S3 を組み合わせてうまく CI / CD を実現している事例だった.場合によっては CircleCI Build Artifacts も使えるかも?と感じた.さらに npm audit を Orbs 化して公開されているのも素晴らしかった.npm を使ってるリポジトリにさっそく導入してみる予定!

How Quipper Works with CircleCI

monorepo だと全体的なビルド時間が長くなる点が大変そうだなと感じたけど,サブディレクトリごとに変更を検知する仕組みがあるのは良かった.CircleCI 関連ツールは興味深くて,さっそく circle-gh-tee を導入してみる.ここまで Infrastructure as Code 化できていると運用も安心してできそう.

CircleCI の Job 突然死と戦った話 @0gajun

  • Performance Pricing Plan 最高
  • 1ヶ月に 533,881分 = 1年 もビルドを実行している
  • resource_classmediumsmall に変更したら多くのジョブが落ちるようになった
    • 具体的には attach_workspace が落ちるようになった
    • 原因は OOM Killer
    • cgroup の memory.max_usage_in_bytes などを調査した
    • attach_workspace を実行しているときに page cache の増加が確認できた
    • コンテナだと page cache を削除する権限がなかった
  • 現在まだ根本解決になってなく medium を使っている

Performance Pricing Plan の resource_class を変更したときに発生したエラー調査報告だった.活用事例だけではなく,調査事例も非常に参考になる.CircleCI サポートと連携して原因特定に奮闘しているプロセスも素晴らしく,さらに page cache の増加が確認できた段階に至るステップバイステップの調査内容も参考になった.根本解決になることを期待している!

(資料公開待ち)

CircleCI Orbsの紹介 @ks888sk

  • Orbs 機能紹介
  • Explore Orbs で Orbs を検索できる
  • Good Practices
    • 1 : 実行時間を見積もる
      • 実行時間が長くなる場合に回避策を用意する
      • max-wait オプションを実装した
    • 2 : メッセージ部分を強調する
      • 文字色を付ける
      • 絵文字を付ける
    • 3 : CI / CD
      • Orbs を公開するためにも CircleCI を使う
      • テスト用設定ファイルを使う

そろそろ Orbs を使おうと思っていたため,Good Practices を聞けたのは良かった.特に OSS だから使う側のシチュエーションを想定して max-wait オプションを実装したという話は素晴らしい.紹介されていた h-matsuo/github-release はさっそく導入してみる.

CircleCI オンプレ版 Builder インスタンスのスケールインの話

  • CircleCI Server (Enterprise) では Builder インスタンスで Hashicorp Nomad が動いている
  • Builder インスタンスを Auto Scaling するときに「減らすテクニック」が必要になる
  • Auto Scaling Lifecycle Hooks / SQS / Lambda を組み合わせて,Builder インスタンスを安全に停止している

個人的に CircleCI Server (Enterprise) の経験がなく,運用関連の話を聞けて良かった.実行中のプロセスに影響なくスケールインするためにはドレイニング機能が必須で,Nomad の API を使って実現しているのは CircleCI に限らず参考になる.

(資料公開待ち)

まとめ

  • プライベートイベント「CircleCI Japan User Community Kickoff」に招待して頂いた
  • 圧倒的に活用している人たちが集まっていたので,どの発表も素晴らしかった
    • たまに「CircleCI Workflows ビューティフル選手権」に参加しているのかな?という気持ちになった(笑)
  • 今後 CircleCI Japan User Community を盛り上げていくとのことで,応援!僕もできる限り参加したいと思う

ポッドキャスト

CircleCI のアーキテクチャ / 開発プロセスの話が聞けるポッドキャストもある!オススメ!

fukabori.fm

CircleCI Orbs ミニハッカソン

12/15 に Orbs リリースを記念したイベントが開催される.まだ参加できるので Orbs に興味がある人は参加すると良いのでは!

circleci.connpass.com

関連資料

builderscon 2018 の資料を見ると CircleCI / Nomad の詳細を知ることができる.合わせて読むと良さそう!