こんにちは、keigoです。私は普段サラリーマンとしてWebエンジニアをしつつ、プライベートの時間で様々な趣味開発をしています。
みなさんは、会社や学校に通いながら、趣味開発に時間を割くのが難しいと感じたことはありませんか?今回は、私がサラリーマンとして働きながらも、継続的に趣味開発にコミットし続けるために心がけていることをお話します。
私が普段プライベートの時間でどれだけコミットしているか
私のGitHubアカウントのContributionアクティビティを見ていただくのがわかりやすいかもしれません。
https://github.com/kspace-trk
記事執筆時点の 2024/01/01 ~ 2024/10/24 の間で、合計3809のcontributionをしています。最近は土日のcontribution数を合計すると100近くなり、平日でも 1日 20 ~ 30 いくこともあります。(もちろん、contribution数が進捗におけるすべてではありませんが)
継続的にコミットし続けるための心がけ
私が普段心がけているのは、次の2つです。
- 極端なくらいにタスクを分割する
- 時間の経過に対して敏感になる
1. 極端なくらいにタスクを分割する
タスクを分割するとは、特定の作業やプロジェクトをより小さなステップに分けることです。その結果進捗が管理しやすくなり、各ステップの作業に対して集中できるようになります。
タスク分割の粒度を極端に小さくし、継続的に効率よくコミットを重ねるための私なりのコツを以下に紹介します。
1-1. タスクを分割するようになった背景
私は、ゲームに熱中してしまう仕組みをうまく仕事に応用できないかと考えていました。ゲームに夢中になる要因として、小さな成功体験の積み重ねがあると感じています。一般的なロールプレイングゲーム (RPG) では、冒頭の演出で強力なボスキャラのようなものが現れ、それを倒すことが目標であると理解することができます。
しかしゲームの進行過程においてはフィールド上のアイテムを収集するなどの場面も見受けられます。このクエストは一見地味に思えますが、最終目標の達成(ボスキャラの討伐)には不可欠なタスクであり、ゲームが目標を段階的に分割していることを示します。
ゲーム側による適切なマネジメントにより、プレイヤーは楽しみながらも継続的にゲームを進めることができるわけですね。そこで私は、目標達成に向けてタスクを自分で細かく分割し、それを一つずつ消化することで、継続的にタスクをこなせるのではないかと考えました。
1-2. 極端な分割とは
タスクは分割したつもりでも、分割しきれていない可能性があります。
本記事では、タスクが十分に分割できている状態を、「極端なくらいのタスク分割」と表現しています。タスクが十分に分割できているという状態とは、タスクを取り掛かる際にモチベーションが下がらないことです。タスク分割時、多くの場合「調査」と「作業」を区別することを心がけると、うまくいくことが多いです。
またしてもゲームで例えますが、例えば「広大なマップから特定のアイテムを採取する」というクエストがあるとします。一見、ラスボスを倒すという最終目標から分割できているように思えますが、まだ完全に分割できているとは言えません。「広大なマップから特定のアイテムを採取する」というクエストに取り掛かる際、マップの中を歩き回り、どこにアイテムが落ちているのか全然見当たらず、挫折してゲームに飽きてしまう可能性があります。仕事においてこれは、モチベーションが下がってしまっている状態に該当します。
しかしクエストの中に、「エリアB周辺に落ちているらしいぞ!」というヒントがあるだけで、モチベーションが大きく変わります。つまりこのクエストは、「特定のアイテムがどの辺りに落ちているのか調査する」と、「アイテムを採取する」という2つに分割できるということです。これは、調査と作業が一緒になっていたものを、調査と作業に分割したとも言い換えられます。
このようにタスクを小さく分割することで、隙間時間を活用しやすくなり、効率的に進めることが可能になります。
2. 時間の経過に対して敏感になる
お店で料理を待つ10分間、ホームで電車を待つ5分間、なんなら信号を待つ1分間も、タスクを進めるためのチャンスかもしれません。
私は外出時には常に、One-Netbook A1 を持ち歩いています。この小さなPCは、カーゴパンツのポケットに入るサイズでありながら、メモリ8GB、Intel Core m3-8100Yを搭載していて、DockerやFigmaなども問題なく動作します。私は常にリュックの取り出しやすい位置に入れておき、3秒以内に取り出せるようにしています。
3秒でPCを取り出して3秒でPCをしまうことができるのであれば、1分の隙間時間があれば54秒は作業に使えることになります。54秒あれば、数行のコードを書くことや、数十行のコードを読むこと、さらにはちょっとしたタスクの分割作業も可能です。
ただし、タスクに取り掛かる際に「このタスクはなんだったっけ?」と考える時間が必要になることがあります。これを防ぐためには、タスクの分割粒度やタスクの内容説明を充実させておくことが大切です。タスクは、前準備なしにすぐに着手できる状態であるべきです。
このように、隙間時間を見つける意識を持ち続けることで、忙しい日常の中でも思いのほか時間を確保できるものです。
まとめ
「タスクを小さく分割すること」と「隙間時間に敏感になること」の組み合わせで、日常的に継続的な趣味開発を続けることが可能です。
人生は一度きりであり、時間を戻すことはできません。今経過している時間の中からいかに隙間時間を有効活用できるかを意識するようになってから、多くのことに取り組めるようになりました。
ぜひ、皆さんも試してみてください!🙆♂️
このコラムを参考に皆さんも隙間時間での開発を実践してみてください。
気になることがあれば、TechTrainの面談からkeigoさんに質問も可能です。
メンター執筆シリーズについて
メンター執筆シリーズはこれからも定期的に配信します!
次回のコラムのテーマは「Nuxt UIとCursorを組み合わせた爆速Webアプリ開発」。
お楽しみに〜!