- 2022年3月22日
中級者ってどこから?
- プログラミング言語いくつか触れるようになった
- 設計して開発してアプリなどを作れるようになり、だれかに利用してもらっている
- 調べながらにしろ色々とこなせるようになった
実際に業務で1年程度開発をしていると上記のようなレベルにはなるかと思います。このレベルになれば小規模な仕事ができるかと思います。(もしくは大きいシステムの一部分など)
ここから2年3年と経験を積んでいくのですが、知識が横には増えていくが深くなっている実感がないという人も多いのではないでしょうか。ここに中級者の壁があるのではないかと思います。
- いろんな言語/フレームワークに触れた
- いろんなデータ種別に触れた
- システム間の連携などノウハウに触れた
ただ、なんか詳しい人との差を感じる!
次のステップ
これができたら中級者!というものを定義するのは難しいですが、次のステップとしては以下かと思います
- 誰かに自分の作った処理、クラス、ライブラリ、フレームワークを利用してもらう
一人(もしくは少人数)でアプリ開発をしていると機能の実装はできるが、自分が把握できていればいいという考えになってしまい”きれいに実装する”ことが抜けがちです。(しかも半年後見ると何が書いてあるかわからない)
誰かに利用してもらう前提で、共通処理を書く、それをクラス化する、ライブラリ化する、それが大きくなるとフレームワークになる。こういう経験をすると中級者への道が開けるのではないかと思います。(大きい枠組みはしっかり設計して作ることがほとんどです)
きれいに実装するって何
ではそもそもきれいに実装ってどうすればいいのでしょうか。初級者の方はコードの読みやすさを想像するかと思います。
- インデントを揃える
- 一貫性のある命名規則
- 意味のあるコメント
- マジックナンバー回避
これらももちろん重要です。ただ、中級者の道としてさらに以下のようなことを意識する必要が出てきます。
- どこに何が書いてあるかすぐわかる
- 機能追加するときに既存の処理に影響を与えにくい
- 同じ処理が複数の箇所にかかれていない
- 必要ないものは外部(クラス外/ライブラリ外/アプリ外/システム外)に公開しない
- インターフェースに依存して処理には依存しない(差し替え/変更が楽になる)
上記のようなことを意識することによって機能追加しやすい、保守しやすいシステムが生まれます。
SOLIDの原則
生まれは少し古いですが、設計をする際にこういうことを意識しましょうねという原則をまとめた用語があります。
SOLIDの原則
SOLID(ソリッド)は、ソフトウェア工学の用語であり、特にオブジェクト指向で用いられる五つの原則の頭字語である。ソフトウェア設計をより平易かつ柔軟にして保守しやすくすることを目的にしている。その特徴はインターフェースを仲介にしての機能の使用と、インターフェースによる機能の注入である。
説明にある通り以下の5つの原則があります。
- S-単一責任の原則 (Single-responsibility principle)
- O-開放閉鎖の原則(Open/closed principle)
- L-リスコフの置換原則(Liskov substitution principle)
- I-インターフェース分離の原則 (Interface segregation principle)
- D-依存性逆転の原則(Dependency inversion principle)
それぞれとても重要なことが書かれていて、基底の考え方は変わらず今でも再定義されながら設計の基礎として利用されています。(ひとつひとつはまた別の機会に)
まとめ
誰かに利用してもらうようなクラス・ライブラリを書いてみましょう。誰かに提供したらここが使いにくいとか、使い方がわからないとか言われるので、どのようなものを提供すれば使いやすいか考えてみましょう。さらに変更に強くなるようにSOLIDの原則などを意識しながら設計開発をしてみましょう。いくつかこなしたら中級者になってるはず。