はじめに
Uzabaze,Inc.
に入社して半年が経とうとしています。
ユーザベースではマイクロサービス、マイクロフロントエンドを導入しており、小さい単位でシステムを構築しています。
会社の風潮として小さなシステム単位で技術選定ができる、新しい技術に挑戦ができるので日々様々な技術に触れています。
☆ 入社前のスキル
Rails(Ruby)
Python
React
Vue
TypeScript
Go
↓
☆ 入社後半年のスキル
Kotlin
Java
Rust
F#
Rails(Ruby)
Python
React
Vue
TypeScript
Go
と新しい言語が色々できるようになりました
ここで、色々な言語をキャッチアップしている中で自分なりに最短
だと思うような方法が固まってきたのでまとめていきます。
最短で学ぶ方法
1. いきなり開発を行う
一番効率の良い方法はいきなり何かを開発
することです。
多くの方は本を読んだり、ドキュメントを読んだりして言語特有の機能や文法などを学んでから開発を進めることが多いと思います。私もその言語に関する本を3冊以上やってから学習していました。
これでは本を読んで実装する時間がとにかくかかり最短ではないです。
いきなり開発なんてできないよ
と思うのではないでしょうか。
やり方がわかれば可能です
こちらについてはこのあと説明します。
本を読んで学習してから開発をしようが、いきなり開発しようが躓くところは変わらないと思います。
結局何かを参考にするので、それならいきなり開発したほうが効率が良いです。
2. プログラミングに慣れる
新しい技術をキャッチアップするときに大事なのは、似たような技術を知っていることだと思います。
オブジェクト指向の言語を知っていれば、だいたいのオブジェクト指向言語は似ていますし、DIの考え方などもだいたい同じなのですばやくキャッチアップができます
また関数型言語も1つ何かしらやったことがあれば、ある程度キャッチアップは楽にできます
なのでもし時間や機会があるなら、手続き型以外にもやったことのないような言語を体験しておくのは良いかと思います
もしプログラミング初心者でなんの言語もやったことないというのであれば、ゆっくり書籍を学ぶ
のが最初のやるべきことでプログラミングに慣れてからチャレンジすべきです
最短で学ぶための開発方法
1. いきなり開発を行う
について詳しく説明します。
私は新しい言語やフレームワークを学ぶときに作るものが決まっています
それがTODOアプリ
を作るです
いままでに多くのTODOアプリを作成しました。
TODOアプリはCRUD
がすべて学べたり、フロントエンドでも必要となる基礎的な技術がおおよそ利用できる素晴らしい題材です。またいきなり知らない言語で開発してもシンプルなので短時間でできますし、参考とするリポジトリが新しい言語でも多くあります。
以下が私が半年で作ったTODOアプリです
TODOアプリを作ることで、短期間で技術のキャッチアップを行えますし、シンプルな構成になるので、リポジトリを1津用意しておけば今後ずっと参考にしつづける
ことができます (どうやってDIするか、DBの設定するかなど)
TODOでなくてもよいのですが、難しいのを作ってしまうと最短で学習することができなかったり、完成しきれなかったりするので私はTODOを作ることにこだわっています (ロジックも考えなくて良い)
事前に学ばないでどう開発するのか
ここに関しては現代ならではの方法でキャッチアップをしながら開発を進めます。
それが
ChatGPT
とGitHub Copilot
です。
環境構築から始まり、だいたいのことはChatGPT
が教えてくれます。
またテストコードに関してはCopilot
と公式サイトをみて書いていきます
9割くらいのコードがこれで学べます。
またよくわからない言語仕様などは、そのままChatGPTになげて理解するようにすることで最短でアプリが作れます
そもそも暗記などする必要はないので、教えてもらったことを理解しながら実装して、サイド実装するときにTODOアプリを参考にして難しいアプリを作れば良いと思います
他人のリポジトリを参考にする
これが個人的に学習時間を最短にしていると思います
私は基本的に新しい言語でもTDD
かつクリーンアーキテクチャ
でTODOを作るようにするのですが、その際にどうやってファイルを分割していくのか、DIをするのかなどを知るために他の人のリポジトリをまるまる参考にしています
これは社内のコードが大きな資産となっているのも大きいですが、このスピード感を知ってしまうと仮に社内にコードがなくても、知らない誰かのリポジトリを参考にして実装します
この方法のいいところは、どのファイルにどんな機能を書くのかを迷わずに進めることができます。またテストファイルもほぼほぼ同じような感じでかける印象です。
TODOアプリ
は大体の言語でリポジトリが存在していると思うので参考にもしやすいです
色々な言語を学んでみて
ある程度学習を進めたところで、新しく別の言語始めてもかなりスムーズに学べるようになりました
あの言語と似ている、テストはどのライブラリと似ているなど書きながら思うようになりました
色々な言語をやったことで言語同士の比較ができより技術選択もうまく行くようになるのではないかと思いました
そして何より、学習方法が自分なりに固まって技術を学ぶということのハードルが下がったのがよかったです
私もクリーンアーキテクチャで色々な言語を使ったテスト込みのリポジトリを用意していますので学びたい言語のリポジトリを参考にTODOアプリを作ってみてはどうでしょうか?
おわりに
文字ばかりですごく読みづらいなと思いましたが、読んでいただきありがとうございます。
言いたいことがなんとなく伝わればすごく嬉しいなと思います。
今期の目標は「気づきを与える記事を書く」です。
ぜひともQiitaをフォローいただけたら励みになります
気になることがある方はぜひコメントいただければと思います
参考