読者です 読者をやめる 読者になる 読者になる

『SOFT SKILLS』の独学法を実践してみた。

前々からエンジニア界隈で話題になっている、SOFT SKILLS ソフトウェア開発者の人生マニュアルを少し前から読んでいますが、第3部「学ぶことを学ぼう」で効率的な独学の方法に関する話があったので、読み進めるのを一旦止めて実践してみました。

動機

自分のこれまでを振り返ると、2012年に新卒で働き始めてからほとんどの期間iOSアプリの開発をしてきました。
それ自体は、iOSの技術力を集中的に鍛えることができたので良かったとは思いますが、 勉強会などで人と話す中で、iOS以外の開発を経験し他の考え方や方法論を経験した方が良い時期に来ている(リスクヘッジ&開発力向上的な意味で)と感じたこと、 またiOS開発において不安なくメンバーをリードできる程度の技術力は身に付いたと感じていたので、幅を広げるいい時期と考え、独学法を試すことにしました。 独学対象には、前々から興味があり、iOSとの相乗効果が見込めるUnityを選びました。

手順

SOFT SKILLSでは、独学を効率的に進めるために、以下の手順を踏むことを推奨しています。

  1. 全体像を掴む
  2. スコープを決める
  3. 成功の基準を決める
  4. 参考資料を見つける
  5. 学習プランをつくる
  6. リソースをフィルターにかける
  7. 使い始められるようにする方法を学ぶ
  8. 遊びまわる
  9. 役に立つことができるところまで学ぶ
  10. 教える

つまり、

  • 色々と調査し、学びたい対象の全体像のイメージを自分の中に作り、
  • 学習するスコープを決め、
  • 独学が完了したかを判断するための基準を定め、
  • 手当たり次第に情報収集。
  • スコープとして決めた内容を学ぶための学習プランを作成し、
  • 手当たり次第に集めた情報から特に良さそうなものを厳選し、
  • 学ぶ内容をまずは使えるようにする。
  • 使えるようになったら、改変したり、原理を調べてみたりといじくりまわし、
  • 疑問点が解消できるまで対象を学ぶ。
  • 概ね原理から使い方まで理解できたら、人に教える

って感じですね。

具体的な内容

今回のUnity学習については、こんな感じで各手順を定義しました。

何をできるようになりたいか定義する

SOFT SKILLSで推奨される手順には含まれていませんでしたが、何のためにそれを学習するのか言語化しておくことは、モチベーションの維持などのために必要だと考えていたので、最初に目標を定めました。

  • Unityで実現できる基礎的なことを学ぶために、2Dのパズルアプリを制作・リリースする。

1. 全体像をつかむ

学習を始める前に、数時間ほど調査を行い、ざっくりとしたイメージを自分の中に作りました。
なんとなく、こんなこと使うんだろうなーといった感じです。 また、疑問点についても適宜洗い出しました。

  • わかったこと
    • Unity2DとUnity3Dがあり、作るものによって使い分ける必要がある。
    • Asset Storeを活用することが大事
      • モデルだけじゃなく、アニメーションやサウンドについても利用可能
    • Unity Cloud BuildというCIサービスがある(Unityが提供)
    • UniRxという、Rx inspireのライブラリが存在する。
    • DIについては、Zenjectが広く使われているっぽい。
    • 推奨されるプロジェクト構成は?
      • 完成したプロジェクトがAsset Storeにあるので、それを真似る。
    • ScriptファイルとPrefabとか名前は聞くけど、よくわからん。

2. スコープを決める

目標から、それに必要そうなスコープをざっくりといくつか書き出しました。

  • 2Dゲームの基本的な作り方
  • パーティクルの使い方
  • パズルがクリアできるようになっているか確認するためのアルゴリズムの作成
  • 永続化の仕組み
  • 広告SDKの導入
  • UniRxを導入してみる
  • DIを導入してみる

3. 成功の基準を決める

この独学法には、 10. 教える というステップもあったので、学んだトピックの詳細まで突っ込んだ記事を1記事書けるようになることを成功の基準としました。

4. 参考資料を見つける

参考資料については、何も知識がない状態で探しても、集めた資料自体の目利きができないので、後回しにしました。 公式チュートリアルをやる前に、このあたりかなーと当たりをつけたのは以下の通りです。

5. 学習プランをつくる

2. スコープを決める で決めたスコープから、ざっくりとした学習プランを作りました。 学習プランというより、疑問点の羅列程度ですが。 Unityチュートリアル完了後のある程度知識がついた段階で再度調べようと思っていたので、最初はこのレベルです。

  • 2Dゲームの基本的な作り方
    • Unity2Dチュートリアルをおさらいする。
    • iOSアプリ用の書き出し方法を調べてみる。
    • 解像度は、どういった扱いになってる?これも調べる必要あり。
  • パーティクルの使い方
    • パーティクルとは
    • パーティクルの使い方、利用時の注意点は?
  • パズルがクリアできるようになっているか確認するためのアルゴリズムの作成
  • 永続化の仕組み
    • UserDefaultsに相当するものは?
    • CoreData、Realm、SQLiteに相当するものは何が使える?
  • 広告SDKの導入
    • Interstitial広告、動画広告等調べてみる
  • UniRxを導入してみる
  • DIを導入してみる

6. リソースをフィルターにかける

4. 参考資料を見つける を後回しにした理由と同様の理由で、フィルターも後回しにしました。

ここまでで、事前準備は完了です。 次回からは、どういったことを考えながらUnityの勉強を開始したのか、共有したいと思います。