Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

で、うまくいってるの?

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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