はじめに
1 年目のエンジニアとして働いており勉強の毎日ですが、入社前の、個人開発をしている頃に知っておきたかったことをまとめました。
概要
個人開発だと実装が時間的な割合にすると 90%くらいのボリュームを占めると思いますが、実際面接等で聞かれることは「どのように実装したか」ではなく、「どんな目的があったのか」ということが、個人的には多かったです。
以下のような人を対象にしています。
- 転職のためにこれから何かしらのアプリを作成しようとしている
- エンジニア派遣系の会社で 1 社目が決まらない
結論
技術選定について考える。
理由
初めてのアプリケーションを開発する際の技術選定の理由なんて、「スクールで使用していたから」, 「調べて情報がいっぱい出てきたから」程度だと思います。実際、流行っているから Django, Rails が本音というケースがほとんどだと思いますし、最初はメリットなんてわからないと思います。
しかし面接で聞かれるのは「どうやってその機能を実装したか」より、「なんでそのフレームワークを選んだのか」や、「DB は MongoDB にしてどんなメリットがあったか」が多いです。
フレームワーク毎のメリット・デメリット
Ruby on Rails
- メリット:
記述量が抑えられ可読性を確保しやすい点が、少人数での開発を可能にしている。また、日本語ドキュメントが多いため、MVC モデルを理解しつつ効率的に学習ができるでしょう。 - デメリット:
一般的に規模が処理速度が遅くなると言われています。速度が求められる系のゲーム開発等には向かないかもしれませんが、SNS などの Web アプリケーションであれば問題はないでしょう
Django
- メリット:
Python を使用しているため、機械学習や OCR の技術を使用する Web アプリの場合に、親和性が高いと思われます。また、他の Python を用いた Web フレームワークと比べ、機能面やセキュリティ面で多くの機能があるため、必要に応じて拡張が可能になっています。 - デメリット:日本語情報は少ない印象。Google 翻訳頼りになる。処理速度は Rails と同じくスクリプト言語のため同じくらい。
まとめ
本当に業務で技術選定から関われるレベルになると、希少価値の高いエンジニアとして扱われますので、初学者がいきなりそれと同等のレベルで理由付けができるわけではありません。ですが技術について学び続けられる人であれば、使う道具はどんな性能かについて興味が出てくると思いますので、少し調べてみるということは大事です。いろんな技術に触れた経験があるわけではないと思いますので、経験から理由を作るのは難しいので、ネットで一般的に言われていることを調べるところから初めて見るのもいいでしょう。