派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【連載】第7回 「エンジニアとしてこのさき生きのこる」ためのコラム

最終回 コードを公開しよう

こんにちは。「エンジニアとしてこの先生さきいきのこるためのコラム」の第7回へようこそ。
この連載では、エンジニアのみなさんがエンジニアとしてこの先生さきいきのこり、エンジニアとしてのキャリアを深めていくために不可欠な、「スキルを磨く」ための取り組みをご紹介してきました。今回はその最終回です。

過去の記事はこちら↓

f:id:itstaffing:20160318180226j:plain

【講 師】
塩谷 啓(しおや ひろむ)さん

株式会社ドワンゴ所属、エンジニア兼採用担当、運営母体のひとつであるドワンゴのネット高校の一年生。中途採用する側・される側の両面から、エンジニアとしての生存戦略について考えている。 共著「Web制作者のためのGitHubの教科書」(インプレス)

前回は、エンジニアとしての腕を磨くために重要な「アウトプット」について、効能と方法をご紹介しました。技術ネタのストックは溜まりましたか?
今回は、エンジニアのアウトプットとしては基本にしてゴールとも言える、「コードを公開する」ということについてお話します。

コードを公開することのメリット

ソフトウェア開発の成果物である「ソースコード」を、インターネットを通じて不特定多数に公開すること。時代や業界によっては狂気の沙汰と思われるかもしれません。しかし最近の、特にWeb開発の界隈では、オープンソースソフトウェア(OSS)を積極的に利用し、また各社で開発したプロダクトを公開する流れが加速しています。

Webサービスを提供するサーバーのOSとして選ばれることが多いLinuxそのものもOSSです。その上で動くミドルウェアも、HTTPサーバーのApache HTTP ServerやNginx、データベースのMySQLやPostgreSQL、プログラミング言語のRubyやPHPなど、数え上げたらキリがありません。Webサービスそのもののソースコードを公開することはほとんどないようですが、サービスの開発や運用に便利なツールやライブラリも、積極的に公開する企業や個人が増えています。

・なぜコードを公開するのか?

OSSを公開する理由はさまざまです。プロダクトそのものよりもサポートがビジネスのコアになる場合、開発コミュニティへの還元としての意義、採用目的での企業の技術力アピールなど、各社の事情が反映されています。エンジニア個人が公開する理由もさまざまです。ですが、このコラムを続けて読んでくださった方には「腕を磨く」ため、といえばわかっていただけるのではないでしょうか。

・コードは書けば書くほど上達する

乱暴な言い方ですが、コードは書けば書くほど上達します。漫然とコピペしていてはとても上達などしませんが、より綺麗に、より読みやすく、よりバグが少なく、という向上心を持って取り組めば、コードを書いた量はそのまま技術として蓄積されます。コードを書くことそのものが重要な素振り(エンジニアとして腕を磨き続けていくこと)であり、基礎能力を高めるために大切な訓練なのです。

・コードを書くためにはインプットが必須

業務上必要な実装をしたり、バグを取ったりするとき。趣味でプロダクトを作ったり、ちょっとした便利ツールを作ったりするとき。あらゆる問題を解決するためにコードを書く。その過程で多かれ少なかれインプットが必要になって来ます。言語の仕様や機能を学んだり、ツールやライブラリの使い方を調べたり、今まで知らなかったアルゴリズムに触れてみたり。そういったコードを書く過程での調べ物も、知識や経験を増やすためのインプットとして重要な過程です。

・コードを公開することはアウトプット

「公開するためのコードを書く」ことは、前回アウトプットについてお話したような学びがあります。しかし、業務上の問題を解決するためのコードを公開するとしたら、そこには業務に関する秘匿情報が含まれていると大変まずいことになります。業務というドメイン固有のことがらを分離し、汎用的なライブラリとして切り出すことは、「見通しがよく再利用性が高いコード」を書くことにほかなりません。

また、「このコードを不特定多数の人が見る」という前提がもたらす緊張感もいい訓練になります。世界中の誰にでも見られる可能性があるので、バグを少なくしよう、設計を美しくしよう、ドキュメントやテストを整備しよう、という心理が働きます。コードを公開しようがしまいがプロのエンジニアとしては必要なふるまいなのですが、「公開する」という前提がいい方向にプレッシャーをかけてくれる効果があります。

イメージ

コードを公開して、実力をアピール

公開したコードには、バグの報告や不具合の要望、バグ修正や機能追加のパッチ、スターやはてなブックマークの反応など、さまざまなフィードバックがつくこともあります。自分とは違う視点を持ったエンジニアからのツッコミはとても勉強になるものですし、得られたフィードバックにより公開したコードがさらによいものになっていきます。

そして、公開したコードはそのまま、あなたの実力を正確にアピールする材料となるのです。 スキルシートや職務経歴書には、できるだけGitHubのアカウントを書いておきましょう。リポジトリの数が多いなら、その中でも特に自信があるもの、力を入れているものを添えておきます。実力を評価する立場の人に対しては、どんなに上手なプレゼンをすることよりも、コードを見てもらうことの方が重要なのです。

・コードを公開する場所

コードを公開する方法はいろいろありますが、第4回でもご紹介したGitHubが代表的なサービスです。

GitHubは、Web上にコードを公開してくれることはもちろん、バグの報告や要望を受け付けるためのIssues、バグ修正や機能追加などのパッチを受け付けるためのPull Requests、各所につけられるコメントなど、フィードバックを得るための機能が充実しています。

また、アカウントのプロフィールページや、静的ファイルをホスティングしてくれるGitHub Pagesなど、エンジニアとしての活動や実力をまとめておくための機能も用意されています。

コードを公開し、フィードバックを得て、それをアウトプットしていくためのサイクルは、GitHubひとつで十分に回していくことができてしまうのです。

イメージ

終わりに

7回にわたってお届けした「エンジニアが腕を磨くためのコラム」も、これで最終回です。インプットして、素振りして、アウトプットする。そのサイクルを回すことでエンジニアとしての価値を高めていく方法を、できるだけ具体的にお話ししたつもりですが、いかがだったでしょうか。「コードを公開する」ことをゴールとし、ぜひ一つ一つ実践してみてください。

(編集後記)
実力を評価されるうえでは、どんなに上手なプレゼンテーションより、コードを見てもらうことが重要なんですね。皆さんのPCの中にも、公開していなかったコードはありませんか?もしかしたら、次のステップのチャンスに繋がるかもしれません。
エンジニアとしてこの先生きのこるために、今出来ることをたくさん教えていただいたこのコラムも今回が最終回です。今まで出来ていなかったことや、これなら取り組めそうと思えることを、もう一度第1回に戻って探してみるのもよいのではないでしょうか?