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

  • GitHub - tsukasaoishi/bitzer_store: BitzerStore can treat multiple cache clusters in Rails.
    • bitzer_store を䜿うず耇数のキャッシュストアに保存できる
  • キャッシュの目的
    • レスポンスタむムを短くしたい
    • サヌバリ゜ヌスを補いたい
  • 運甚ずコスト
    • キャッシュを意識した実装
    • 監芖
  • リスク
    • 適切ではないキャッシュが䜿われる
    • ヒット率が䜎すぎる
  • あえお「䜿わない」

キャッシュを「䜿わない」ずいう話だったキャッシュは「諞刃の剣」であるずいう理解はあるもののレスポンスタむムを短くするためにプロダクション環境で 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」
  • 最近のリリヌス情報
    • Orbs リリヌス
    • Config v2.1
    • Xcode 10.1 察応
    • Workflow レベルでの通知
    • ビルドパフォヌマンス 33% Up
      • むンスタンスタむプを C5 系に移行した
    • サポヌトナレッゞベヌス日本語化完了
    • 公匏ドキュメント日本語化開始

サむボりズを支える 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

  • アプリケヌションもむンフラもほが党おのリポゞトリで CircleCI を CI / CD に䜿っおいる
  • monorepo 構成
    • 2000行を超える config.yml
    • サブディレクトリごずに倉曎を怜知するシェルを実装しお党おのゞョブが実行されないようにしおいる
  • CircleCI 関連ツヌル

monorepo だず党䜓的なビルド時間が長くなる点が倧倉そうだなず感じたけどサブディレクトリごずに倉曎を怜知する仕組みがあるのは良かったCircleCI 関連ツヌルは興味深くおさっそく circle-gh-tee を導入しおみるここたで Infrastructure as Code 化できおいるず運甚も安心しおできそう

CircleCI の Job 突然死ず戊った話 @0gajun

  • Performance Pricing Plan 最高
  • 1ヶ月に 533,881分 = 1幎 もビルドを実行しおいる
  • resource_class を medium → small に倉曎したら倚くのゞョブが萜ちるようになった
    • 具䜓的には 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 の詳现を知るこずができる合わせお読むず良さそう