Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TDDな個人開発

hatappi
March 12, 2019

 TDDな個人開発

個人開発 Night #1 @ギフティ

hatappi

March 12, 2019
Tweet

More Decks by hatappi

Other Decks in Technology

Transcript

  1. 個⼈開発 Night #1 @ギフティ
    TDDな個⼈開発

    View Slide

  2. ݸਓ։ൃ Night #1 @ΪϑςΟ
    2
    ⾃⼰紹介
    • Yusaku Hatanaka (@hatappi)
    • Merpay, Inc
    • 会社では主にGo

    プライベートでは主にRuby
    2013 学内のバスアプリや就活⽀援サイト
    2014 クローラー, etc
    2015 PHPでレシピ検索サイト, etc
    2016 PHPでポータルサイト, etc
    2017
    RailsとAngularでポータルサイト

    Red Chainer, etc
    2018
    Red Chainer
    Railsで家庭⽀援サービス
    Slack App, Goでポモドーロ, etc
    2019
    Red Chainer
    Slack App, etc
    ここに書いてあるものは1⼈で作っているものもあればOSS
    で複数⼈で開発しているものがあります

    View Slide

  3. ݸਓ։ൃ Night #1 @ΪϑςΟ
    3
    今までの個⼈開発では
    TDDをしてきたので
    今⽇はその話をします!

    View Slide

  4. ݸਓ։ൃ Night #1 @ΪϑςΟ
    4
    今⽇話すこと
    • TDD?
    • TDDを継続するために
    • TDDͷྫ

    View Slide

  5. TDD?

    View Slide

  6. ݸਓ։ൃ Night #1 @ΪϑςΟ
    6
    TDD

    View Slide

  7. ݸਓ։ൃ Night #1 @ΪϑςΟ
    7
    Test Driven Development
    http://wiki.c2.com/?TestDrivenDevelopment

    View Slide

  8. Test Driven
    Development
    ⽇本語でテスト駆動開発
    開発⼿法の1つ
    実装前にテストコードを書いてその
    テストコードが通るように実装やリ
    ファクタリングをしていく

    View Slide

  9. ݸਓ։ൃ Night #1 @ΪϑςΟ
    9
    今⽇のTDDは
    Test Driven Development
    ではありません!

    View Slide

  10. ݸਓ։ൃ Night #1 @ΪϑςΟ
    10
    今⽇の発表でのTDDは・・・

    View Slide

  11. ݸਓ։ൃ Night #1 @ΪϑςΟ
    11
    Tech Driven Development
    お気付きの⽅もいるかと思いますが
    TDD = Test Driven Development かと思いきや
    Tech Driven Development でしたというオチです

    View Slide

  12. ݸਓ։ൃ Night #1 @ΪϑςΟ
    12
    Tech Driven
    Development
    技術駆動開発
    この技術使いたい!興味ある!を
    モチベーションにその技術を学び
    ながらプロダクトを作成すること

    View Slide

  13. ݸਓ։ൃ Night #1 @ΪϑςΟ
    13
    Tech Driven Development のメリデメ
    • メリット
    • ⾃分の気になる技術なのでやっていて楽しい
    • しかもプロダクトもできていく
    • デメリット
    • その技術に興味がなくなると⼿が進まない

    View Slide

  14. TDDを継続するために

    View Slide

  15. ݸਓ։ൃ Night #1 @ΪϑςΟ
    15
    TDDをするために
    • ⾃分が⾯⽩そう!となる可能性のある情報を⽇々集める
    • 本読む
    • Twitter で興味ある分野の情報もっている⼈をフォロー
    • はてブでよく⾒られている記事をみる
    • 会社で気になった技術をもっと掘り下げてみる
    • 他にも情報の Input の仕⽅は様々!!!

    View Slide

  16. ݸਓ։ൃ Night #1 @ΪϑςΟ
    16
    TDDをするために
    • 興味のあるものを⾒つけた後はそれを試せる場が重要
    • 例えば IaC やりたい! Terraform やってみよう!となった時に
    Tutorial で終わるのかどうか
    • 個⼈的には実際に運⽤で使ってみてはまったところとかエラーを
    経験したい

    => 実際に試せる場をつくる

    => Tech Driven Development !!!!

    View Slide

  17. TDDの例

    View Slide

  18. ݸਓ։ൃ Night #1 @ΪϑςΟ
    18
    • Slack 上でアンケートをとるためのサービス
    • 2018/11に βリリース
    • アンケートの作成や投票は Slack 上から⾏う
    • 集計結果は Slack 上や WEB 上から確認できる
    • 今後は質問作成したり回答結果を取得するよう
    な API を追加予定
    Anket ( https://anket.life/ )

    View Slide

  19. ݸਓ։ൃ Night #1 @ΪϑςΟ
    19
    構成
    • APIやダッシュボードは Rails
    • botはNode.jsで構築
    • インフラはすべてAWSを使っ
    ていて Kubernetes 上に構築
    している
    気になる部分は懇親会できいてください!

    View Slide

  20. ݸਓ։ൃ Night #1 @ΪϑςΟ
    20
    TDDな部分
    • Rails
    • 会社では使わない技術を使ってみる
    • Slack App
    • 普段使っている Slack をもっと使い倒してみたかった
    • Terraform, Kubernetes (EKS)
    • 使ったことなかったけど気になってた

    View Slide

  21. ݸਓ։ൃ Night #1 @ΪϑςΟ
    21
    TDDな部分
    • Rails
    • 会社では使わない技術を使ってみる
    • Slack App
    • 普段使っている Slack をもっと使い倒してみたかった
    • Terraform, Kubernetes (EKS)
    • 使ったことなかったけど気になってた

    View Slide

  22. ݸਓ։ൃ Night #1 @ΪϑςΟ
    22
    Kubernetes (k8s) コンテナ化されたアプリのデプロ
    イなどを⾃動化してくれるコンテ
    ナオーケストレーションエンジン

    View Slide

  23. ݸਓ։ൃ Night #1 @ΪϑςΟ
    23
    Rolling Update
    old
    new
    old
    new
    old
    new
    old
    new
    old
    new
    • Kubernetesが提供する機能の1つ
    • デプロイ時にサービスをとめないように指定台数ずついれかえて
    いくなどの設定ができる

    View Slide

  24. ݸਓ։ൃ Night #1 @ΪϑςΟ
    24
    セルフヒーリング
    • これも Kubernetes が提供する機能の1つ
    • あらかじめ指定した起動台数を維持するように Kubernetes が
    pod を管理してくれる

    View Slide

  25. ݸਓ։ൃ Night #1 @ΪϑςΟ
    25
    他にも
    • 複数のNodeの管理
    • オートスケーリング
    • サービスディスカバリ
    • ロードバランシング
    • etc

    View Slide

  26. 覚えることいっぱい!!

    View Slide

  27. ݸਓ։ൃ Night #1 @ΪϑςΟ
    27
    ひたすら勉強して
    プロダクトを作る
    IUUQTXXXBNB[PODPKQEQ
    公式
    ドキュメント

    View Slide

  28. ݸਓ։ൃ Night #1 @ΪϑςΟ
    28
    TDDした結果の副産物
    • 今⽇のようにイベントで登壇できる
    • ブログでアウトプット
    • Slackでアンケートをとることが出来るサービス『Anket』をβリリースしました

    https://blog.hatappi.me/entry/2018/11/21/085626
    • Anket を EKS (k8s) に移⾏しました

    https://blog.hatappi.me/entry/2019/01/12/111519
    • Anketのメッセージをjsx-slackを使ってBlock Kitベースへ変更しました

    https://blog.hatappi.me/entry/2019/03/10/110759

    View Slide

  29. まとめ

    View Slide

  30. ݸਓ։ൃ Night #1 @ΪϑςΟ
    30
    まとめ
    • 1番重要なことは楽しむこと
    • せっかくやるなら楽しくやりたい
    • 個⼈開発は反応もらえるだけでモチベーションになる

    View Slide