初の副業開始、月70時間稼働で iOS アプリを1人で開発・リリース
副業を始めようと思った“きっかけ”
私が初めて副業というものに挑戦したのは2020年初夏の頃でした。副業を始めてみようと思った理由は次の2つです。
- 今の実力が業務委託で通用するのか知りたい
- 新しい挑戦がしたい
当時、本業では多いときで iOS エンジニア6人という割と規模の大きなチームに所属していたこともあり、自分自身の実力がハッキリしないことに不安を感じていました。
実力を測るだけなら、個人アプリ開発で解決しそうにも思えますが、実際は自由すぎて逆に不安が増す一方でした。仕様は自由、デザインも自由、開発スピードも優先度も自由だからです。
そこで、実力と報酬が直結する業務委託で働くことで、不安の払拭と実力の向上を目指せるのではないかと考えたわけです。
このように考えたものの、副業を始めるためには様々な挑戦が必要になってくるものです。まず、個人事業の開業手続きと確定申告の準備、次に業務委託としての働き方が求められます。事務手続き等、人によっては非常に鬱陶しい存在かもしれませんが、まさしく学校では教えてくれないことを学べる最高のチャンスだと思います。
副業案件探しに使った媒体
副業案件は Offers を含めた2つの媒体で探しました。Offers は、アカウント作成後、企業からのオファーを待つだけという手軽さがお気に入りです。1ミリでも副業に興味があれば、登録して損することは無いと思います。
もう一つの媒体は、パーソナルサポートをお願いできるという特徴がありました。パーソナルサポートでは、はじめに運営の方からヒアリングを受けます。そのヒアリング内容を元に、適した案件を探してくださるというフローになっており、サポート面での安心感が大きかったです。
しかし、逆に言えばヒアリングの時間が必要になったり、案件の紹介に返答するコストが増大したりするため、「副業に興味がある」レベルの状態での登録はお勧めできないかもしれません。
実際に副業を始めるまで
Offers 経由で決まった副業案件は iOS アプリの新規開発を行うものでした。iOS 担当は私一人で、技術選定から任せていただけるなど、早速実力が試される業務環境になりました。7月から業務を開始し、1ヶ月平均70時間を業務時間に割り当て、11月にはファーストリリースに必要な機能の開発が完了しました。
本稿ではこの業務を遂行するにあたって行った工夫、学びを中心にご紹介します。読者として副業初心者・副業経験者共に意識して執筆しましたので、最後まで読んでいただけますと幸いです。
副業に求められるのは進捗の見える化とスムーズな共有
ネイティブアプリ開発では特に、複数の要素で成り立つ画面は途中経過を視覚的に共有しにくいという状況に遭遇しやすいと感じています。これによって、進捗共有で「まだ見せられるものはありませんが◯◯◯の実装を行いました」といったコミュニケーションが生まれてしまいます。
副業は働く場所・時間など自由度が高いことが多いです。ですから、先程のようなコミュニケーションを避けることは開発メンバー・委託元との信頼構築を行う中で最も重要なことであると私は考えています。
アプリ開発で進捗共有が難しい3つの実例
iOS アプリ開発に重点を置いた実例を元に私が行った工夫をご紹介いたします。可能な限り iOS アプリ開発固有の用語を使わずにまとめています。
まず、進捗共有が難しいと感じる具体例を3つピックアップしました。
1. コンポーネント毎の UI
これは再利用性を意識した開発を行うなかで遭遇するものです。例えば、カスタムボタンやカスタムテキストフィールドなどのコンポーネントを作成したとき、適当な画面に仮置して描画確認を行う必要が出てきます。
この問題の解決策として、コンポーネントを表示する専用のデバッグ画面などを準備する方法が一般的かもしれません。しかし、端末サイズや文字列の長さによって柔軟に UI が変化することを共有するには共有用の実装コストが必要になってきます。
2. 機種とそのサイズ毎の UI
これはマルチデバイス対応を必要とするアプリ開発を行う中で遭遇するものです。例えば、iPhone と iPad でレイアウト差があるとき、各端末サイズのシミュレータにアプリをインストール・操作する必要が出てきます。
端末サイズによって生まれるレイアウト差は忘れられがちなポイントなので、進捗共有に含めない選択肢はありません。しかし、だからといって準備コストのかかる作業は我々のやる気を削ぎ落とす存在になりかねません。
3. ログイン有無などのステータス毎の UI
たとえ、作る画面は1つであったとしてもステータス状態に応じてレイアウトが柔軟に変動する仕様はネイティブアプリ開発に限らず、よくある事例かと思います。これが進捗共有を困難にする要因としては、目的のステータス状態にする前準備が必ず必要になることが挙げられます。
「メールアドレスとパスワードを入力してログインボタンを押す」といった作業をデモ共有時に行うシチュエーションには、皆さんも一度は遭遇したことがあるのではないでしょうか。この無駄な時間を無くすだけでも信頼度はグッと上がると考えています。
開発サポートツールの有効活用
では、これらの難点をどのように解決したのでしょうか。これで紹介するのは iOS 限定のソリューションになりますが、Xcode Previewsという仕組みを利用することで大きな改善が見込めます。
Xcode Previews は、View もしくは ViewController 単位でのアプリ実行を簡単に実現するものです。元々、実行結果を逐一確認しながらレイアウトを構築するための開発サポートツールとして準備されているものですが、私は開発メンバー・委託元との信頼構築も視野に入れて利用しました。
▲Xcode Previews の利用イメージ
Xcode Previews の利用イメージを上記に示します。このようにカスタムボタンだけで実行され、各デバイス毎のシミュレート結果が開発画面右側に表示されます。これを進捗共有ミーティングで見せています。また、画面左側のプログラムを書き換えると瞬時にシミュレート結果に反映されるため、ステータスの変更もスムーズに共有可能です。
ということで、実際に業務で利用しているものをお見せしたかったのですが、残念ながら叶いませんでした。なので今回は、私が OSS として公開しているプロジェクトでの利用イメージを掲載させていただきました。
参考:SwiftUI sample using LazyVGrid
「進捗が分かりやすく、助かっている」と言われるように
実際にこれらの工夫で1年以上業務を行ってきました。以前、プロジェクトマネージャに私の進捗共有方法に関して伺ったところ、「進捗が分かりやすく、非常に助かっている」と言っていただけました。また、iOS アプリ側の開発が先行している箇所に関しては、Android アプリエンジニアの方がシミュレート結果を参考に開発を進めるという場面もありました。
信頼は目に見えるものではないので、成果としてお見せできるものはありませんが、開発メンバ・委託元共に信頼してくださっているように感じます。
自身をコントロールし、燃え尽きを防止する方法
副業は良くも悪くも自由
私が行っている副業は、ミーティングなどを除いて基本的に業務時間に縛りはありません。なので、翌日が休みの深夜にエナジードリンク片手にコーディングなんて開発スタイルも日常茶飯事でした(全力でお勧めしません)。
このように、私は自由さを大きなメリットとして感じていますが、デメリットと捉えることもできます。例えば、業務委託契約の場合、雇用契約ではないので労働基準法は適応されず、働きすぎなどを抑制してくれる存在は一切ありません。全て自己管理が前提です。
1ヶ月で合計110時間を超える稼働の果てに燃え尽き...
アプリを約半年でリリースすることを目標に開発していたこともあり、副業開始から5ヶ月目の段階でアクセルを強く踏み込みました。
本業側で5日の有給休暇を取得し、コワーキングスペースに閉じこもって開発に全力を注ぎました。その他の土日もほとんど副業の時間に割り当て、1ヶ月で合計110時間を超える稼働となりました。
本業に支障が出る働き方は NG です。安易な真似はお控えください。▲場所を変えて気分転換
気分転換で開発を行う場所を変えるなどの工夫を施したため、精神的・身体的負荷も少ない状態で開発を一段落させることができました。しかし、ここからが本番でした。
ネイティブアプリ開発がほぼオンスケで進められたことによって、バックエンド側の開発遅れを待つことになったのです。待つといってもアプリ側はセカンドリリースの準備を進めるという方針になったので暇ではないのですが、アクセル全開の反動から、翌月の作業時間は半分以下の約50時間に減りました。そう、燃え尽き症状が現れていたのです。
燃え尽き防止策
反省点としては大きく次の2点だと思っています。
- 業務負荷のアクセル・ブレーキはゆっくり
- 常に期限を決めて動く
まずは、納期直前での急アクセルです。どうしてもこういうシチュエーションは生まれてしまいがちですが、できることならゆっくりアクセルを踏んであげるべきです。
副業では評価対象の比率として成果物の割合が高くなる傾向にあるため、特にこのような状況に陥りやすいように感じています。ですから、信頼を第一に考えた進捗共有で日頃から信頼度を高めておき、納期延長など、相談しやすい環境を作れるように心がけることが非常に重要だと思っています。
次に、セカンドリリースに向けた開発に対する目標の甘さです。セカンドリリースの内容がある程度決まっていることに安心し、それを淡々と消化していくというアバウトな方針で進めてしまいました。最低でも「◯◯月までにセカンドリリースに必要なAとBを作りきる」などの明確な目標を定めるべきです。
こういった自身のコントロールを全て責任持って行う必要がある点こそ副業の特徴と言えるでしょう。
副業がきっかけで事業の魅力に気づけた
開業届からはじまる
副業を本格的に始めることになると、開業届の提出からスタートします。その後、確定申告というイベントに向けて様々な工夫をしていくことになります。青色申告で控除を受ける、インボイス制度に向けて…、と様々なスキルを学ぶチャンスが降ってきます。
税金周りはYouTubeが充実
例えば、税金周りで不明なことがあれば国税庁のホームページを見るのが最も正確で良いのかもしれませんが、正直難易度が高いと感じることも多いです。そんなときは「個人事業主 ◯◯◯」と YouTube で検索してざっくりとした知識をインプットすることを私はお勧めします。
最近では税理士や会計士の YouTuberも増えてきており、YouTube だけでもある程度正しい情報を入手できるようになってきているように感じます。
ぜひ副業にチャレンジを!
- 信頼を第一に考えて働く能力
- 自身をコントロールする能力
- 税金を始めとしたお金に関する知識
副業を始めることで私は、特に上記3つの能力・知識が格段に高まったように感じます。しかし、私はまだ満足していません。私は、事業の法人化を次のキャリア目標として目指します!
副業自体は簡単に始められるので興味のある人はぜひチャレンジしてみてください!