Swift愛好会 vol.31 でのLT資料です。個人開発をうまくやる方法について話しました(うまく行っているとは言っていない)
プライベートでの開発を継続する技術Swift愛好会 vol.31@takamii228
View Slide
自己紹介● @takamii228● エンタープライズな会社のAgile専門組織に所属○ 認定スクラムマスター○ アジャイル開発のプロジェクト支援と研究開発● アプリ、アーキテクチャ、CI/CD、AWS等なんでもやる雑食系○ 主にJava(Spring Boot), PHP, Swaggerとか○ Swift(iOS)は趣味で触ってる● 趣味○ ランニング、料理、アウトドアなどなど
私とSwift(iOS)● 2015年12月 叩き売りされたUdemyのiOS入門をやる● 2016年5月 iPhone 6S (SIMフリー) を買う● ...● 2017年12月 叩き売りされたUdemyのiOS入門を再びやり、アプリを作る決意をする● 2018年3月 Apple税を納付(Developer Accountを購入)● ~ 現在 位置情報使ったランニングアプリを開発中
プライベートでの開発、続いてますか?
プライベートでの開発は挫折しやすい● 最初は風呂敷を広げて夢を見る● でも本業が忙しいとなかなか時間が取れない● たとえ時間があっても何から手を付けようか迷い進まない● 間が空いてしまい、腰が重くなる● 新しいことに目移りして本来やろうとしたことを見失う● そしてやらなくなる
なぜ挫折するのか?1. 作ろうとしているものが大きすぎる2. 完成までの道筋や、やるべきことが不透明でよくわからない3. ずっと一人でやっていて辛い
リーンに、Just In Timeでやってみよう
リーンとJust In Time● リーンスタートアップ○ 新規事業や新規サービスの成功率を高めるモデル○ MVP(Minimum Viable Product)を定義する○ MVPをつかってPlan - Build - Measureの仮説検証サイクルを回す○ MVPのフィードバックから学習し、失敗のリスクを低減する● Just In Time○ 必要なものを、必要なときに、必要な量だけ作る○ カンバンを使ったタスク管理○ スクラムの原型
作りたいもののMVPを細かく定義する● 作りたいものを細かい機能の集合に分割する○ 1~2時間くらいでできる大きさ○ 実装のイメージが湧く大きさ○ 「名詞」+「動詞」のユーザーストーリー形式でかく● 例:Nike Runを遠隔でみんなで共有しながらできるアプリ○ Google Map APIと位置情報を使って画面に現在地を地図表示する○ 位置情報を使って移動距離を測れるようにする○ タイマー機能をつけて走った距離とタイムを測れるようにする○ テキストを音声で流せるようにする○ 経過時間や走行距離を音声で流せるようにする○ 他の人の走行距離や経過時間を音声で流せるようにする○ ...
周りからフィードバックをもらう● 実際に作って動かしてみないとわからないことも多い○ 実現可能性や設計の妥当性○ 位置情報の精度● フィードバックから学び、やる気を補充する○ 「すごい!」「どうやってるの?」「こうやったらいいんじゃない?」○ アプリの方向性の確認になる● 周りからの「あれどうなってる?」が尻叩きになる
カンバンでJust In Timeにチケットを管理する● To DoとWIPの間にReadyを挟む○ To Doは作りたい機能リストを入れる● タスクが着手可能な状態にまで詳細化し期限を入れて初めてReady○ チケット名は「名詞」 +「動詞」のユーザーストーリー形式がわかりやすい● WIPが空になるまで次のタスクには手を付けない○ 何らかの理由でとん挫したものは別のレーンに入れる● チケットを作って満足しない○ 毎日カンバンを見る癖をつける
私のカンバンボード(Trello)
自分を追い込む● ○○駆動で作業を進める○ 締め切り駆動○ イベント、勉強会駆動● もくもく会に参加して、作業時間を確保する○ 強制的に作業する枠を用意する○ 周りがやってると自分も作業が進む● 「なんでやるんだっけ」を突き詰める○ モチベーションの源泉を再確認し、やる気をひねり出す○ 他の作業との優先順位や、やらなくてもいいことが整理できる
で、うまくいってるの?
ぶっちゃけ五分五分● やっぱり本業が忙しかったり、土日に予定があると進まない● 細切れ時間でも進められるようにMVPをもっと小さくするといいかも● やる気があるとき、気分が乗ってきたときに一気にやる● やりだすと意外と進んだりする
今後やってみたいこと● アプリをストアを経由せずに友人に配布したい(deploygate)● Firebase ごりごり使ってみたい● fastlane等でiOSのCI/CDの仕組みを作ってみたい● いつかお仕事でiOS案件を・・・
まとめプライベートの開発で挫折しないために● リーンにやってみよう○ 作りたいもののMVPを細かく定義する○ 作ったものを周りに見せてフィードバックをもらう● タスクをJust In Timeに管理してみよう○ To DoとWIPの間にReadyを挟んでタスクを詳細化する○ タスクボードを放置しない● 自分を追い込んでみよう○ 勉強会やもくもく会をうまく活用する○ モチベーションの源泉を再確認する