こんにちは。倉内です。
これからITエンジニアを目指そうという方の中には、学校で情報系を専攻した方もいれば、そうでない方もいらっしゃると思います。
プログラミングは、向き不向きもありますが、基本の習得からサービスやアプリの開発までその気があればWebの学習教材や書籍、スクールに通うなどの方法で十分習得することができます。
ただ、業務で開発をする場合、コードさえ書ければよいというわけではなく、それ以外にも実務で必須のテクニックがあります。特に未経験からエンジニアになると最初はそのあたりが分からず苦労することも多いようです。
そこで今回は、エンジニアとして開発をおこなうにあたって、覚えておくべき基本的なテクニックのうちいくつかをお伝えしたいと思います。
エンジニアを目指す人向け・開発の必須知識6選
コーディングの規則について知る
学習のためにプログラミング問題を解いたり、趣味でひとりで開発したりといったときにはとりあえず動くコードであればいいかもしれません。
ただし業務での開発は多くの場合チームでおこないます。自分が書いたコードを他の人がメンテナンスしたり、逆に他の人が担当した機能に手をいれるために影響範囲を調べたりすることもあるでしょう。業務ではそういったことも意識してコードを書く必要があります。
そこで、保守性や品質を高めるためにプロジェクトで共通して守るべきコーディングのルールをまとめたものが「コーディング規約」です。コーディング規約にはさまざまなルールが明記されていますが、たとえば「命名規則」「禁止事項」「インデントや改行などのスタイル」があります。
プロジェクトのコーディング規約のベースとなるのは、プログラミング言語ごとの規約です。Web上に公開されていますので、例としてPythonのコーディング規約ページを載せておきます。
初心者がすべてを把握するのは大変ですが、こういったものが定められていると知っておくことは大切です。
弊社のエンジニアは情報系出身者も多いため話を聞いてみると、このあたりの基本的な作法は大学のプログラミングの授業を通して習得した人も多いようです。
もちろん書籍も多く出ていますので今から学んでも遅くはありません。
あとから読んでも理解できるコメントを残す
さきほどのコーディング規約とつながる話ではありますが、品質や保守性と合わせてコードは可読性も考慮する必要があります。
コメントはメモ程度に自由に残せる一方、個々人が好き勝手書いてしまうと、他の人が見たときに何を示しているか分からないといったことが起こりえます。自分自身、半年や1年後手を入れたいと思ったときに見て「暗号……?」と思うようなコメントでは意味がありません。
コメントにはいくつか書き方があります。言語によって違いますが、Pythonを例にすると、「’’’」(トリプルクォーテーション)で囲む方法や「#」(シャープ)を先頭につける方法でコメントアウトになります。
''' Pythonのコメント ''' a = 1 b = 2 sum = a + b # Pythonのコメント
このあたりは動画講座「Python3体験編」(全編無料)でお伝えしていますのでぜひごらんください。他の言語の講座一覧はこちら
初学者には少し難しいですが、関数アノテーションによるコメントも可能です。アノテーションを使うと、利用するIDEやエディタによってはアノテーションをもとにコードを静的解析して警告を出してくれる場合もあります。
(参考)Python3の関数アノテーションのすすめ | ガンマソフト株式会社
使いこなすためにはまず関数を理解する必要があります。関数は「Python入門編7: 関数を理解しよう」で扱っています。実際にコードを書いて身につけられるので関数に苦手意識がある方も活用してみてください。
自分自身の経験として、受託開発の案件で、開発を海外にお願いしていたときコメントがまったくない何千・何万行ものコードを納品されてかなり苦労した記憶があります。コメントの書き方もあらかじめチーム内で取り決めをおこなっておくことが大切でしょう。
エラーメッセージに慣れる
エラーメッセージを読むことが苦手な方は多いと思います。
プログラム実行時に英語でエラーメッセージがずらずら書かれていると反射的に閉じてしまいたくなる気持ちも分かります。(実際閉じてしまい「再現させられない…!」と後悔したこともあります)
しかしエラーメッセージには問題を解決する手がかりがたくさん記載されています。
これは個人の開発でももちろん言えることですが、エラーコードしかり、内容しかり、問題となっている箇所について調べるためには欠かせない情報です。自分で情報を集められるようになるためにも徐々に慣れていきましょう。
そしてエラーが出た際の対処法も知っておく必要があります。といってもなかなか独学するのが難しいので、これについては「Python入門編10: 例外処理を理解しよう」を活用してみてください。実行時エラーに対応するPythonの例外処理を学習することができます。
コマンド実行を嫌がらない
コマンド操作(CUI操作)も慣れるまでは抵抗があるかもしれません。できればGUI操作したい気持ちもよくわかります。
ただ、業務において、特にDBやサーバーに対する操作ではコマンド実行が必要になる場合が多く、避けて通れないと思ったほうがよいでしょう。
またGUI操作ができるツールなどでもCUIでの操作ができるものもあります。慣れてしまえば効率も上がるので使いこなせて損はありません。
実践の前にどうやって勉強しておこうか悩む場合は、paizaラーニングで公開している「Linux入門編」「Git入門編」「シェルコマンド入門編」などの講座を活用してみてください。
適切にログを出力して検証などに役立てる
これも習得しておくと開発に詰まったときに自力で解決できる確率がグッと上がります。「(言語名) ログ 出力方法」などと検索すると具体的な方法も出てきますので、ぜひ実際にやってみてください。
ひとつ注意したいのは、ログ出力の仕方を学ぶと、あっちもこっちもなんでもすべてのログをコンソールなどに出力しようとしがちです。
デバッグ時などステップ実行して問題箇所を特定したい…といった場合は便利ですが、不要な(特に気にかけなくてもよいという意味で)情報もあるため取捨選択が必要です。
また、人間が見やすいようフォーマットして出力するなどのテクニックもありますので実際に試しながら理解するとよいでしょう。
(参考)ログ設計指針 - Qiita
欲しい結果にたどり着くための検索力をつける
さきほどこう検索すると具体的な方法が出てくると書きましたが、不明点を調べる際もエラーから類似事象や原因を調べる際も検索テクニックが大切になってきます。
この検索力が低いとなかなか自分が欲しい情報にたどり着くことができません。「現役エンジニアはどのように検索しているの…?」を知ることができる「エンジニアの小話編」という講座もご用意しています。
また、膨大な情報量のWebの海からいかに信用できるかつ自分が欲しい情報を得るかのポイントを書いた記事もありますので参考にしてみてください。
なぜ業務ではそういった知識が必要になるのか
前述の内容は、個人の開発でも意識して実践するとよいことが多いですが、業務開発では必須の知識です。それは個人開発と業務開発では大きく異なる点があるからです。
ここでは3つの違いについて説明します。
チームで開発する
さきほども少し触れましたが、自分が書いたコードを他の人が見たり修正したり、その処理を参照したりすることもあります。
また、業務での開発は必ずスケジュールが決められています。自社サービスであればリリース日、受託であれば納品日といったゴールに間に合うように進行しなければなりません。
進捗の共有やうまくいかない部分の相談をする際、少しでも無駄を省くためにもコーディングの基礎知識は押さえておくべきでしょう。
開発規模の違い
実務未経験からエンジニアになると言っても、ほとんどの方は自分でプログラミングスキルを磨いており、転職活動をするにあたってなんらかの成果物を提示する方も多いでしょう。
それでも業務で開発するシステムの規模には及ばないと思います。
その中にコーディングの基本的な規則を守れていないコードがたくさんあるとテストや品質管理も大変ですし、競合の発生やバグの温床になることもあります。
影響範囲の違い
単にひとつのシステムで開発規模が大きいというだけでなく、他のシステム、もっというと他社が開発したシステムと連携して動くような場合もあります。
私は前職では公共系のシステム開発の案件を担当することが多く、外注さんも含めると10社ほどが関連して複数の関連するシステムを作り上げていました。データの受け渡しはもちろん、あるシステムの処理の結果が別のシステムの処理が動くトリガーになるというものもありました。
そのためコードを一箇所直すにしてもどこに影響があるのか確実に把握する必要があり、スムーズに進めるためにコードの可読性や分かりやすいコメントといったものが効いてきます。
これは業務で開発をしてみないとあまりイメージができないことだと思いますが、頭の隅にでも置いておいていただければと思います。
まとめ
ここまでコードを書く以外に習得すべき開発時のテクニックについてお伝えしてきました。未経験や情報系以外からエンジニアを目指してプログラミング学習に励んでいる方にとって少しでもお役に立てば幸いです。
企業やプロジェクトによって独自の取り決めがある場合も多いですが、基礎的なテクニックは共通して使えるものです。
ただ、頭に入れただけではなかなか身につかないのがプログラミングや開発にまつわるスキルだというのは皆さんもご存知かと思います。
本文でもいくつか講座をご紹介したpaizaラーニングでは、基礎の文法からアプリケーション開発まで段階に合わせて動画で学べる講座を多数用意しています。環境構築は不要で、ブラウザ上で実際に手を動かしながら学べるので、ぜひご活用ください。
そしてある程度スキルが身についたと感じたらスキルチェックで腕試しをしてみてください。
スキルチェックは、プログラミングスキルをS・A・B・C・D・Eの6段階のランクで判定するサービスです。
また、paizaが運営する若手・未経験者向けのエンジニア転職サービス「EN:TRY」では、開発経験がない人・少ない人でも応募できる若手チャレンジ求人を公開中です。EN:TRYでは、前述のスキルチェックでランクを獲得すれば事前の書類選考なしで複数求人へ応募できます。