ソフトウェアエンジニアとして働き始めるみなさんへ
先日、IT企業に就職の決まった大学生と話していてこれからエンジニアとして働く若い人がどういうことに目を向ければよいかということについて考えたので、自分なりにまとめてみました。
だいたいソフトウェアエンジニアを目指す人は技術に関心が強いと思いますし、そこは放っておいてもみんな勝手に頑張ると思うのと、どういう分野に進むかによって違うのでソフトウェア技術以外の部分で3つの観点に絞ってみました。
いずれも入社一日目から必要になるものではありませんし、すでに働いている先輩社員もこれらのことを意識しているわけではないかもしれませんが、人は人自分は自分なのでどうぞ参考にしていただければと思います。
周辺ツールに目を向ける
ソフトウェアの開発においては、プログラミングスキル(言語やフレームワークの知識)だけでなく開発環境を含む周辺知識も必要です。ひとくちにソフトウェアエンジニアといっても幅は広く、たとえば組み込み開発とweb開発では求められるスキルも利用する開発環境も異なります。
そういった違いに関係なく必要となるであろうと考えられる"Git"や"Markdown"について紹介します。
Git
Gitは開発しているソフトウェアのバージョン管理やリリース管理やチームでのソースコード管理を行うためのツールです。開発者はLinuxの生みの親であるLinus Torvalds氏で、無料で使えソースコードは公開されています。
学校や個人でやるプログラミングにおいてはひとりでコーディング作業することが多いかと思いますが、業務でのソフトウェア開発においてははチームで(複数人で)開発を行うことがほとんどです。チームでの開発になるとソースコードの管理がとても難しくなるのですが(どう難しくなるかは説明が難しいので省略します、働き始めればわかります)、Gitを使うことでソースコードの管理を効率的に行うことができます。
Git、苦手だという方も多いのですが基本的な考え方を理解すれば難しくはありませんし、理解できればGit無しには戻れないようになります。私は、個人で作ったプログラムもすべてGitで管理しています。
以下、参考になるサイトや資料を紹介します。
Markdown
Markdownについては、Wikipediaの説明を引用します。
Markdown(マークダウン)は、文書を記述するための軽量マークアップ言語のひとつである。本来はプレーンテキスト形式で手軽に書いた文書からHTMLを生成するために開発されたものである。しかし、現在ではHTMLのほかPowerPoint形式やLATEX形式のファイルへ変換するソフトウェア(コンバータ)も開発されている。各コンバータの開発者によって多様な拡張が施されるため、各種の方言が存在する。
文書を書くためのツールという意味では、Mircosoft Wordなどのいわゆるワープロソフトウェアが思い浮かぶかもしれません(iPhoneのメモかもしれませんが)。もちろんそれらも使うのですが、ソフトウェア開発の現場で一番使われるツールはテキストエディタや統合開発ツール(の中のエディタ)なので、できればそれらのツールで文書を作成できた方が楽、というところでMarkdownが使われています。
Markdownは開発資料の作成以外にも、blogやzenn、Qiitaなどのサービスでの記事作成にも使われています。この記事もMarkdownで書かれています。
Markdownを使うとどんなことができるかというと、たとえば
| Head | Head | Head |
| ---- | ---- | ---- |
| Text | Text | Text |
| Text | Text | Text |
と書くと、以下のように表示されます。
Head | Head | Head |
---|---|---|
Text | Text | Text |
Text | Text | Text |
その他細かい仕様については、公式サイトの説明(英語)や以下のサイトを参考にしてください。
Markdownには方言と呼ばれるサービスごとの微妙な仕様の違いがあるのがやや難ですが、基本的な記法は共通しているので、まずは基本的な記法を覚えておくとよいでしょう。
わかりやすいコーディングに目を向ける
もしかすると今はまだ動くことを優先してコーディングしていて、コードのわかりやすさや美しさの優先順位は低めかもしれません(そんなことないぞ!という方、申し訳ありません)。個人で作成したプログラムならそれでも構わないのですが、先に述べたように仕事としてのソフトウェア開発はチームで行うことがほとんどです。あなたのソースコードはあなた以外の人が読むこと(たとえそれが嫌だとしても)を前提にコーディングすることが求められます。
以下、参考になる書籍やサイトを紹介します。
- リーダブルコードには、コードを読みやすく(理解しやすく)するための技術や考え方をまとめられており、定番中の定番というべき書籍です。
- zennにも、読みやすいコードを書くためのガイドラインという記事があるので、こちらもどうぞ。
- ソフトウェア開発の現場ではコーディングガイドラインが定められているところも多くあります(無いところもありますが)。あなたが働く企業のコーディングガイドラインについては、各企業に聞いてもらうしかありませんが、まずはコーディングガイドラインというルールがあることを知っておいていただければと思います(仕事では我流でコーディングしていいわけでないということ)。
こちらの記事で一般公開されているコーディングガイドライン(コーディング規約ともいいます)がまとめられているので、これらをチラッと読んでみて、どんなことが定義されているのかを知っておくのは有用かと思います。
使いやすさに目を向ける
日々高機能化、複雑化するソフトウェアの世界において「いかに使いやすくするか」を考えることが重要になっている、と私は考えています。ソフトウェアエンジニアにとって「使いやすさのデザイン」は他人事ではありません。
iPhoneの登場以降とくに使いやすさに注目が集まっていて使いやすさの重要さが広く認識されるようになりました。使いやすさに関する情報も多く公開されています。
Appleは古くから「使いやすさ」を大切にしている企業のひとつで、早い時点から「ヒューマンインターフェイスガイドライン」というものを公開しています。これはApple製品向け以外のソフトウェアを開発する上でも参考になり、これからのソフトウェアエンジニアにとって有用な教材のひとつと言えるでしょう。
もちろん、Googleも「Material Design」というデザインガイドラインを公開しています。
Appleのヒューマンインターフェースガイドラインでは、今年発売開始されたApple Vision Proに関連して「空間コンピューティング」に関するものも追加されています。
Appleのガイドラインは日本語ですし、読んでいると普段自分たちが使っているスマートフォンのユーザーインターフェイスがどのように考えて作られているのかがわかって面白いですよ。
書籍としては「誰のためのデザイン? 増補・改訂版」がおすすめです。デザインに関する本ですが、使いやすさに関する考え方を身の回りの例を取り入れて説明されているので読みやすく、使いやすさを考える上でのポイントがまとめられています。
最後に
以上の内容については、完全に私の主観であり(私が書いた文章はすべて私の主観であることは当然なのですが)他の方は違うことを言うかもしれません。いずれにせよ、最終的にどれを取り入れるかはあなた次第です、何かしらひとつでも多くの視点を得て、より良いソフトウェアエンジニアになることを期待しています。
ようこそ、ブラックな世界へ。
追記
気がついたら関連する記事をいくつか書いていたので、こちらにリンクをつけておきます(この記事のリンクも含みます)。
Discussion