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

PRODUCED BY RECRUIT

【イベントレポート】エンジニアが生き残るためのテクノロジーの授業 [第2回]「プログラミングとアルゴリズムの学び方」

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年5月18日のイベントでは「エンジニアが生き残るためのテクノロジーの授業」の第2回目として「プログラミングとアルゴリズムの学び方」を開催。

常に学ぶことが求められるエンジニアですが、何を学んだらよいのかが見えないという状態に陥りやすいもの。そんな状態を打破するために、今回は、増井さんならではの視点から、技術の学び方や最低限の知識を考えるきっかけを教えてもらいました。

▼第1回のイベントレポートはこちら
http://www.itstaffing.jp/engineer/entry/20180608_1

f:id:itstaffing:20180710110320j:plain

■今回のイベントのポイント

・プログラミングを学ぶ前に
・プログラミング言語を選ぶ
・どうやってプログラミングを学ぶか
・なぜアルゴリズムの勉強が大切なのか


【講 師】増井 敏克さん
▲【講 師】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『おうちで学べるセキュリティのきほん』『プログラマ脳を鍛える数学パズル』『エンジニアが生き残るためのテクノロジーの授業』『もっとプログラマ脳を鍛える数学パズル』(以上、翔泳社)、『シゴトに役立つデータ分析・統計のトリセツ』『プログラミング言語図鑑』(以上、ソシム)がある。

プログラミングを学ぶ前に

「エンジニアが生き残るためのテクノロジーの授業」の第2回は、「学び方」を中心に紹介してくださりました。

まずは会場の参加者に対するアンケートからスタート。「作りたいソフト、ありますか?」という質問です。選択肢は「既に作っている」「作りたいものはある」「まずは勉強してから」「まったく思い浮かばない」の4つ。最も多かった回答は「まずは勉強してから」でした。

このうち「作りたいものはある」という人は、すぐにアクションを起こすべきだそうです。しかし「まずは勉強してから」という人は、問題があるとのこと。これを選ぶ人は、言語を選ぶまでに悩み、環境を作るのに悩み、始めた後も少し難しいことが出てくると投げ出してしまう傾向にあるそうです。プログラミングはあくまでも手段であり、目的をしっかり持つことが重要だと説きます。

f:id:itstaffing:20180710110327j:plain
▲「まずは勉強してから」は本末転倒。まずは目的を持つことが先決

増井さんによれば、世の中には「今からプログラミングを勉強してどうするの?」という懐疑的な人もいるそうです。しかし、増井さんの第1回イベントでも紹介があったように、エンジニアのキャリアパスは一直線ではありません。プログラミングの知識を養うことでキャリアパスが多彩に広がります。では、いつ学べば良いのでしょうか?やはり、歳をとってから学ぶよりも、今のうちに学んでおいたほうが良さそうです。

プログラミング言語を選ぶ

では、プログラミングを始めるにあたって、どのプログラミング言語を選べば良いのでしょうか?
これからプログラミングを始める人にとって、一番気になるテーマでしょう。

増井さんはポイントを次のようにまとめてくれました。

・必ずしも新しいものが良い、というわけではない
・これを学んでおけば絶対という言語はない
・最終的には2~3種類の言語を学ぶべき

趣味でプログラミングを行うならば自分の好きなものが選べます。このとき、自分の目的とするアプリやサービスが、どのような言語で開発されているかを調べると良いそうです。

f:id:itstaffing:20180710110330j:plain
▲趣味ならば、目的に合わせた言語を自由に選べる

次に開発環境を考えます。現在はIDE(統合開発環境)が普及しており、コーディング~コンパイル~実行~デバッグといった一連の作業を同一環境内で行えます。また、さまざまなフレームワークや自動化ツールの登場により、工数のかかる開発も効率良く行えるようになっています。

f:id:itstaffing:20180710110333j:plain
▲言語を選ぶ際、開発環境も考えておく

環境構築で悩みたくなければ、手軽に利用できる言語を選ぶという方法もあります。JavaScriptは、Webブラウザさえあれば実行できるので、すぐに始めたい人に向いており、VBAはPCにExcelが入っていれば使えます。PHPはレンタルサーバーを借りると、概ねどのサービスでも用意されているそうです。

どうやってプログラミングを学ぶか

言語が決まれば、次はどう学ぶかです。

まずは、最も一般的な書籍で学ぶ方法から。増井さんのお勧めは3種類の本で学ぶこと。最初は基礎を理解するための入門書、次はより深く理解するための詳しい解説書、そして最後は、実際にプログラムを作成するときに役立つ逆引き書だそうです。また、サンプルコードをコピー&ペーストでなく、自身で入力していくことも大切とのことです。

いっぽう、IDEや自動化ツールなどの使い方については動画を見るのがお勧めで、動画サイトで検索すると、見つかるそうです。

また、プログラミングそのものもオンラインで学ぶ方法もあります。

f:id:itstaffing:20180710110336j:plain
▲「ドットインストール」「Schoo」のほか、予備校や放送大学を利用するという手も

そのほかにも、勉強会で学ぶという方法があります。また、継続するには仲間を作るというのも大切なこと。勉強会に行って友達を作れれば一石二鳥ですね。

注意したいこと

プログラムにバグがあるのは論外ですが、予期せぬ脆弱性があると攻撃の対象とされてしまう危険性もあります。そのため入念なテストが必要ですが、近年では、端末の多様化、タッチパネルの普及、位置情報を使ったアプリケーションなど、テストが困難になりつつあります。

その点、公開されているライブラリならば大勢の人の手でテストも行われているため、セキュリティの確保には、そうしたライブラリを積極的に利用するのも有効です。

f:id:itstaffing:20180710110339j:plain
▲欲しい機能はライブラリにすでにテスト済みのものが存在する可能性も高い

なぜアルゴリズムの勉強が大切なのか

アルゴリズムがしっかりしていないと、良いプログラムはできません。たとえば、データが一定量を超えると、急に処理時間が増えるようなアプリケーションは、最適なアルゴリズムを使っていない可能性があるそうです。

「アルゴリズムは、一度勉強すると、ずっと使え、どのような言語にも応用できます。アルゴリズムは永久に不滅です」(増井さん)

f:id:itstaffing:20180710110342j:plain
▲アルゴリズムを自分で実装すると理解が深まる。ただし仕事ではライブラリを使うのがお勧め

また、「アルゴリズムを楽しむ」ことも重要だそうです。アルゴリズムの解説書などを参考に、自分で実装してみたり、オンラインで問題を解くサイトにチャレンジしてみたりするのも面白いそうです。

セミナーの締めとして、増井さんはプログラミングを学ぶ上での4つのポイントを紹介してくれました。

・プログラミングを目的にしない
・複数のプログラミング言語を学ぶ
・基本となるアルゴリズムは知っておく
・アルゴリズムを楽しみながら学ぶ

質問タイムでは、会場から「もし、増井さんが今からプログラミングの勉強を始めるとしたら、どの言語を選びますか?」という質問が寄せられました。

f:id:itstaffing:20180710110345j:plain
▲会場から、増井さんならどの言語を選びますか?という質問も

増井さんは、少し考えてから「私ならJavaScriptを選びます」と答えてくれました。その理由は、前述のように環境構築が楽なこと、そしてJavaScriptは、今やサーバサイドプログラミング(Node.js等)や、iOSAndroid OS用のネイティブアプリ開発を可能にする各種フレームワークも登場しており、応用が利くこと、だそうです。

今回のイベントで、JavaScriptから始めてみるのもいいなと思いました。でも、プログラミングは手段であり、まずは目的。作りたいプログラムを見つけることが先決かもしれません。