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

プライベートでの開発を継続する技術 / techniques to keep personal development

takamii228
May 27, 2018
490

プライベートでの開発を継続する技術 / techniques to keep personal development

Swift愛好会 vol.31 でのLT資料です。個人開発をうまくやる方法について話しました(うまく行っているとは言っていない)

takamii228

May 27, 2018
Tweet

Transcript

  1. プライベートでの開発を継続する技術
    Swift愛好会 vol.31
    @takamii228

    View Slide

  2. 自己紹介
    ● @takamii228
    ● エンタープライズな会社の
    Agile専門組織に所属
    ○ 認定スクラムマスター
    ○ アジャイル開発のプロジェクト支援と研究開発
    ● アプリ、アーキテクチャ、CI/CD、AWS等なんでもやる雑食系
    ○ 主にJava(Spring Boot), PHP, Swaggerとか
    ○ Swift(iOS)は趣味で触ってる
    ● 趣味
    ○ ランニング、料理、アウトドアなどなど

    View Slide

  3. 私とSwift(iOS)
    ● 2015年12月 叩き売りされたUdemyのiOS入門をやる
    ● 2016年5月 iPhone 6S (SIMフリー) を買う
    ● ...
    ● 2017年12月 叩き売りされたUdemyのiOS入門を再びやり、アプリを作る決意をする
    ● 2018年3月 Apple税を納付(Developer Accountを購入)
    ● ~ 現在 位置情報使ったランニングアプリを開発中

    View Slide

  4. プライベートでの開発、
    続いてますか?

    View Slide

  5. プライベートでの開発は挫折しやすい
    ● 最初は風呂敷を広げて夢を見る
    ● でも本業が忙しいとなかなか時間が取れない
    ● たとえ時間があっても何から手を付けようか迷い進まない
    ● 間が空いてしまい、腰が重くなる
    ● 新しいことに目移りして本来やろうとしたことを見失う
    ● そしてやらなくなる

    View Slide

  6. なぜ挫折するのか?
    1. 作ろうとしているものが大きすぎる
    2. 完成までの道筋や、やるべきことが不透明でよくわからない
    3. ずっと一人でやっていて辛い

    View Slide

  7. リーンに、Just In Timeで
    やってみよう

    View Slide

  8. リーンとJust In Time
    ● リーンスタートアップ
    ○ 新規事業や新規サービスの成功率を高めるモデル
    ○ MVP(Minimum Viable Product)を定義する
    ○ MVPをつかってPlan - Build - Measureの仮説検証サイクルを回す
    ○ MVPのフィードバックから学習し、失敗のリスクを低減する
    ● Just In Time
    ○ 必要なものを、必要なときに、必要な量だけ作る
    ○ カンバンを使ったタスク管理
    ○ スクラムの原型

    View Slide

  9. 作りたいもののMVPを細かく定義する
    ● 作りたいものを細かい機能の集合に分割する
    ○ 1~2時間くらいでできる大きさ
    ○ 実装のイメージが湧く大きさ
    ○ 「名詞」+「動詞」のユーザーストーリー形式でかく
    ● 例:Nike Runを遠隔でみんなで共有しながらできるアプリ
    ○ Google Map APIと位置情報を使って画面に現在地を地図表示する
    ○ 位置情報を使って移動距離を測れるようにする
    ○ タイマー機能をつけて走った距離とタイムを測れるようにする
    ○ テキストを音声で流せるようにする
    ○ 経過時間や走行距離を音声で流せるようにする
    ○ 他の人の走行距離や経過時間を音声で流せるようにする
    ○ ...

    View Slide

  10. 周りからフィードバックをもらう
    ● 実際に作って動かしてみないとわからないことも多い
    ○ 実現可能性や設計の妥当性
    ○ 位置情報の精度
    ● フィードバックから学び、やる気を補充する
    ○ 「すごい!」「どうやってるの?」「こうやったらいいんじゃない?」
    ○ アプリの方向性の確認になる
    ● 周りからの「あれどうなってる?」が尻叩きになる

    View Slide

  11. カンバンでJust In Timeにチケットを管理する
    ● To DoとWIPの間にReadyを挟む
    ○ To Doは作りたい機能リストを入れる
    ● タスクが着手可能な状態にまで詳細化し期限を入れて初めて
    Ready
    ○ チケット名は「名詞」 +「動詞」のユーザーストーリー形式がわかりやすい
    ● WIPが空になるまで次のタスクには手を付けない
    ○ 何らかの理由でとん挫したものは別のレーンに入れる
    ● チケットを作って満足しない
    ○ 毎日カンバンを見る癖をつける

    View Slide

  12. 私のカンバンボード(Trello)

    View Slide

  13. 自分を追い込む
    ● ○○駆動で作業を進める
    ○ 締め切り駆動
    ○ イベント、勉強会駆動
    ● もくもく会に参加して、作業時間を確保する
    ○ 強制的に作業する枠を用意する
    ○ 周りがやってると自分も作業が進む
    ● 「なんでやるんだっけ」を突き詰める
    ○ モチベーションの源泉を再確認し、やる気をひねり出す
    ○ 他の作業との優先順位や、やらなくてもいいことが整理できる

    View Slide

  14. で、うまくいってるの?

    View Slide

  15. ぶっちゃけ五分五分
    ● やっぱり本業が忙しかったり、土日に予定があると進まない
    ● 細切れ時間でも進められるように
    MVPをもっと小さくするといいかも
    ● やる気があるとき、気分が乗ってきたときに一気にやる
    ● やりだすと意外と進んだりする

    View Slide

  16. 今後やってみたいこと
    ● アプリをストアを経由せずに友人に配布したい
    (deploygate)
    ● Firebase ごりごり使ってみたい
    ● fastlane等でiOSのCI/CDの仕組みを作ってみたい
    ● いつかお仕事でiOS案件を・・・

    View Slide

  17. まとめ
    プライベートの開発で挫折しないために
    ● リーンにやってみよう
    ○ 作りたいもののMVPを細かく定義する
    ○ 作ったものを周りに見せてフィードバックをもらう
    ● タスクをJust In Timeに管理してみよう
    ○ To DoとWIPの間にReadyを挟んでタスクを詳細化する
    ○ タスクボードを放置しない
    ● 自分を追い込んでみよう
    ○ 勉強会やもくもく会をうまく活用する
    ○ モチベーションの源泉を再確認する

    View Slide