はじめに
4月中旬に未経験から受託開発企業に入社して3ヶ月が経過した中で、入社までにしっかりと理解しておけばよかったと感じた知識についての備忘録になります。
入社までの私の学習状態について
学習期間は中断している期間も含めるとだいたい2年ぐらいで、主にPythonを中心に学習していました。フレームワークはDjangoとFlaskを使用した経験があり、それぞれでログイン機能付きのTODOアプリなどのフレームワークの理解に役立つ簡易的なアプリを2~3個を作成しています。フロントに関してはHTML5+Bootstrapをメインに扱っており、javascriptは必要最低限使用する状態にしていました。ポートフォリオはDjangoを使用して過疎地域での高齢一人暮らし世帯の見守り負担軽減を目的としたLINEのようなメッセージアプリを作成しました(*現在使用を停止しています)。ボットで定期的にメッセージを送信し、一定期間手動の既読ボタンがクリックされなければ管理者側に通知がいくといったものです。
入社後の状態
ありがたいことに未経験入社ということで約2ヶ月トレーニング期間を設けていただいきました。その中で実際にの業務に必要な設計書の作成方法や業務フロー、Laravelで作成したアプリケーションへの機能追加から納品までの流れを学ぶことができました。前置きが長くなりましたが、次からちゃんと習得しておくべきだったなと思った知識について記載していきます。
習得しておくべきだった知識
フロントエンド
-
Javascriptの基礎
バックエンドに偏った学習をしてきたため現場レベルで使用されているコードを理解するのにとても苦労しました。
また、コードが理解できて追加機能のアルゴリズムを考えてもそれをコードにするためにいちいち関数などを調べないといけなかったため莫大な時間がかかりました。 -
JavascriptからjQueryへのコードの変換方法
プロジェクトにもよると思いますが処理速度や拡張性を考えるとjQueryの方が便利なので(入社するまで気がつきませんでした)、どちらにも対応できるようにしておいて損はないかなと思います。 -
HTMLやCSSフレームワークの基礎文法
これまで思い通りの配置や配色の変更などができなかった時は、ある程度力技でゴリ推し(記事の情報をそのまま引用するなど)することで解決していたのですが、それが通じるのも未経験の個人開発レベルなのでしっかり学習しておくべきだったと反省しました。
バックエンド
-
MVCフレームワーク
こちらも基本的なことなのですがプロジェクトに参画したての時はどれがどれだかわからなくなり少し混乱してしまったので使用するフレームワークでMVCとは何か、それぞれ機能のどのファイルにどのように定義されることが多いかを掴んでおくことはキャッチアップをするうえで大切だなと感じました。 -
MVCフレームワークを使ったDBの操作方法
自分が最近まで混乱していた内容なのですが、DBとのやりとりをどの階層のどのファイルで実行しているのかがわからず理解に時間がかかりました。トレーニングではある程度の処理をservide.phpファイルを経由してまとめてDBとやりとりをしていたのですが、参画したプロジェクトだと機能ごとにLogic.phpファイルを作成して対応していたのでその違いがなかな理解できずに苦しみました。処理の方法はいろいろあるよというだけのことなのですが駆け出しレベルだと混乱することもあると思うので、処理方法には種類があるということとどういうパターンがあるのかということを知っておいて損はないと思いました。 -
アルゴリズムの組み方
メンターさんと話をしていてpaizaのCランク程度の能力があれば、プロジェクトでアルゴリズムを作成する際に大きくつまづくことはないということだったので絶賛勉強中です。まだ正答率は30%程度なので、、、
その他
- URLが入力されてからブラウザに表示されるまでの流れ
個人的にはこれがもっとも大切かなと思います。自分が使用するフレームワークを当てはめてURLを入力してからブラウザに表示されるまでの流れを第三者に理解してもらえるように説明できればエラーが発生した際の対応もスムーズになります。とくに環境構築段階では必須だと思うのでしっかり理解する必要があります。
以下の記事がとても参考になりました。
https://qiita.com/app_js/items/449a9cf79ed68b795643
-
session管理について
セッションの概要は理解していたのですが、それを機能に組み込む際に苦労しました。例えば、入力フォームで入力した内容を確認画面で表示する際や確認画面から入力フォームに戻る際の入力した内容の保持の部分です。DBにPOSTしてない内容の扱い方については必須になってくるので勉強して実装してみると役に立ちます。 -
git
リポジトリへの変更内容の反映や最新の状態にリポジトリを更新する際のコマンドや構造は理解できていると思いますが、不具合が発生した際の対処の仕方は種類があるのでいくつか押さえておくべきかと思います。具体的なコマンドでいうとgit stashやreset,あとはログの確認コマンドを知ると良いかと。
終わりに
まだまだ修行中の身のため日々壁にぶち当たっていますが、得に最初のほうは当たる壁が少ないほうが良いだろうという気持ちで共有させてもらいました。読んでいただいた中で自分はこういうことに気をつけているや私のような駆け出しエンジニア向けて今後こうした方が良いよというアドバイスがありましたらコメントをいただけると幸いです。