プログラミング入門者向け - s3-ap-northeast-1 ... · 1....

22
プログラミング入門者向け

Upload: others

Post on 30-Aug-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

虎の巻

プログラミング入門者向け

1. プログラミングってなに?

2. これからの時代なぜプログラミングが必要なのか

3. 非エンジニアでもプログラミングを学ぶ4つのメリット

4. 目的別おすすめプログラミング言語を解説

5. プログラミング初心者におすすめの学び方

6. プログラミング初心者が陥りやすい3つのポイントと解決方法

目次

Programming

               ��� ���

作成することプログラム

1章 プログラミングってなに?

「プログラミングは何ですか?」と尋ねられたとき、何と答えていますか。「プログラミングとは何か」を少しづつご紹介していきます。プログラミングを英語で表記すると、Programmingになります。Programmingの言葉をよくみると、Programとingで構成されていることがわかります。Programは「プログラム」のことを指します。ingは、「何かをすること」、ここでは「何かを作成すること」に捉えてみると、Programming(プログラミング)とは、「プログラムを作成すること」に示していることがわかります。

実は私たちの周りはプログラムだらけ?

では、ここで、プログラムとは、何でしょうか。いくつがプログラムの例をみながら説明していきます。ここに提示しているテレビ番組一覧、演奏会の演目一覧はプログラムとなります。これもプログラム?と思うかも知れませんが、これもプログラムも一種になります。テレビ番組一覧を詳しくみると、何時に、どのチャンネルで、どんな内容で誰が出演してるのか等、時間の流れに沿って正確な手順が記載されています。演奏会の演目一覧も、何時に、どの出演者が、どこで演奏するか、時間の流れに沿って、手順がされていることがわかります。つまり、プログラムとは「一連の正確な手順」になります。

���

オバマ大統領の「プログラミングは全ての人に学んで欲しい」という言葉やAppleのスティーブ・ジョブズ、Facebookのマーク・ザッカーバーグのプログラミング推奨発言からもわかるように、プログラミングができる能力は今の時代、特に必要とされています。この章ではこれからの時代なぜプログラミングが必要なのかについて解説していきます。

プログラミングができれば「働き口がある」や「高給に期待できる」「時間と場所に縛られない働き方ができる」など漠然としたイメージを持っている方が多いと思います。しかし、「働き口」や「高給」のイメージの裏には明確な理由があり、その中でも

IoT(Internet of Things) の急速な拡大は影響が大きいと考えられます。モノとネットをつなぐ IoT の技術は、アプリやソフトウェアを介して私たちの生活をより豊かにしてくれ、スマホ市場・ウェアラブル市場の拡大に伴って私たちの生活に浸透しつつあります。例えばアメリカで生まれた SIDS(乳幼児突然死症候群)を予防するためのウェア「mimo」。世界中の忙しいママと赤ちゃんを毎日安心して過ごせるように、赤ちゃんの様子をサポートしてくれます。家庭分野以外にも、産業、住宅、車などありとあらゆる場面で今後も IoT が拡大していくと考えられ、そのためにはプログラミングとプログラミング的思考が社会で働くために必須と考えられています。

2章 なぜプログラミングが必要なのか

• 国内の IoT 市場/ 2014 年 約9.4 兆円 → 2019 年 16.4 兆円まで拡大予想*IDC

• 中国の IoT 市場/2030年 60 兆円まで拡大予想(今から累積で約

216 兆円規模)• 国内のアプリ市場/2013 年 8,200 億円• 国内のインターネットGDP/2011 年 約19.2 兆円 → 2014 年

約23 兆円(運輸業に相当)

プログラミング言語の種類と求人数の関係はまとめにくいですが、フリーランス市場においては一定の関係を確認することができます。以下に世界的フリーランス市場の Upwork と国内を代表するランサーズとクラウドワークス内で、どれぐらい仕事数があるか各プログラミング言語毎にまとめてみました。(2015.9.19 時点)

この表からは、Java よりもHTML や PHP、JavaScript、CSS といった Web 開発の基礎言語にニーズがあることが分かります。

未来のプログラミング市場を考える上で参考になる数字

プログラミング言語と仕事量の関係

非エンジニアでもプログラミングを学ぶ 4つのメリット

一見ハードルが高そうに見えるプログラミング。チャレンジするのは大人になってからでももちろん遅くはありません。ただ技術習得に興味はあっても、エンジニアとして一生食べていけるのかを考えると、勉強を始めるまでに躊躇してしまう方もいらっしゃるかもしれませんね。しかしプログラミングはその学習や実践の過程で、様々な分野に応用できる能力が自然と身に付くもの。たとえエンジニアでなくとも、考え方や技術がビジネスに役立つシーンはたくさんあるのです。非エンジニアでも仕事に活かせる能力・知識をまとめてご紹介します。

1.作りたいWebサービスを具体的に想像できる

「イメージしていたサービスをどう作るか」「必要なものは何か」「どんな能力を持った人が何人必要か」などアイデアの捻出段階で形にできることが増え、より一層企画力がアップします。時間があれば、自分でサービスのプロトタイプを作ってプレゼンすることも可能です。

3章

また一般に公開されているWebサービスに触れたとき、「どんな仕組みで作られているのか」「技術面のポイントは何か」がわかってくるので、自身へのヒントが見えてきます。

2.問題解決能力・情報収集力が格段に上がる

プログラムにエラーが出たら、そのエラーを調べて解決策を施し、また出てきたエラーに対処…の繰り返し。ベテランエンジニアであっても疲れる作業ですが、ここを一つ乗り切るごとに問題解決能力が格段に進歩します。エラーに対処した分だけ、情報収集力もまたアップ。やる気と根気がモノを言います。

3.工数管理ができるようになる

工数とは必要な作業量を表す言葉。43人月などというように、その単位には「人月(1人が1か月かかる作業)」や「人日(1人が1日かかる作業)」が用いられます。工数管理することで、「ある作業にどれだけの時間がかかるか」「何人の人員が必要か」「必要コストがどれくらいか」などを見積もることができます。

非エンジニアであっても、専門用語やシステムの仕組みを理解しておくと業務の流れが速くスムーズに。エンジニアが抱えている問題をより深く理解したり、具体的で的確な指示を出せたり、客観的な立場からのアドバイスが可能になったりして、より良い信頼関係を築くことにも繋がります。実装したい機能の実現可否を自分だけで判断できるようになるなど、営業職でも発注者の立場でも、様々な状況でメリットがあります。忙しい毎日のなかで新しい技術を習得するのは何かと大変ですが、ご自分を信じて是非挑戦していただきたいと思います。

4.エンジニアとのコニュニケーションの改善

プログラミング学習はこれからの時代、重要…とはよく聞くものの、実際どの言語を学習するべきか悩みます。有名というだけで言語を選び、予想以上に難解で挫折、というのは非常に避けたいケースですよね。プログラミングに限らず、学習には目的がある方がモチベーションが保てます。あなたはプログラミングで何をしたいですか? 目的別にオススメの言語をまとめてみました。

目的別おすすめプログラミング言語を解説4章

1.まずはプログラミングを始めたい

とにかくまず動くモノ、ちょっとしたツールを作りたいということであれば、GUIでプログラミングできる言語が比較的簡単ではないでしょうか。モノ作りの楽しさが手軽に体感できます。また学習の途中で躓いたときのために、C言語やC++、Javaといった歴史の長い言語を選ぶと参考資料が豊富で調べやすいです。ただ難易度は高いかもしれません。Windows向けならVisual Basic(VB)やVisual

basic.NET(VB.NET)、C#、Delphiがよく使われています。また学習の途中で躓いたときのために、C言語やC++、Javaといった歴史の長い言語を選ぶと参考資料が豊富で調べやすいです。ただ難易度は高いかもしれません。

Visual Basic(VB):Microsoft社が開発したプログラミング言語。フォームにボタンなどの部品を貼り付けるといった直感的な操作とプログラミングで開発する。Visual Basic.NET(VB.NET):VBのうち、Microsoft.Net環境で動作するプログラムを開発するための言語。C言語(C):あらゆる分野に適用できる汎用性が高い言語。歴史が古いためにやや難解であるものの、プログラミング言語としての基礎を網羅している。Java:世界で最も使われているオブジェクト指向プログラミング言語。ツールやゲーム、Webサービス、Androidアプリまで利用可能。参考資料が豊富。

Webページを作るなら、まずHTML,CSS,JavaScriptの知識は必要です。

HTML:Webページを作るのに必要なマークアップ言語。CSS:Webページのスタイルを指定するためのマークアップ言語。JavaScript:Webページにさまざまな動きを入れることができる。クライアント側のブラウザで実行。より容易に記述できるようにするために設計されたjQueryというライブラリがある。Webページだけではなく様々なサービスを提供するには、Webサーバー上で動作するサーバーサイドスクリプトが必要になってきます。PHP:Webアプリケーションに特化したスクリプト言語。オープンソースで、大規模な開発にも多々採用されている。Python:「シンプル」「習得の容易さ」を重視したオープンソースの言語。システム開発を始め幅広い分野に利用可能。Ruby:オープンソースのオブジェクト指向スクリプト言語。日本のまつもとゆきひろ氏により開発される。「手軽に」「楽しく」がキーワード。

2.Webサービスを開発したい

4.エンジニアとのコミュニケーションを円滑にしたい

AndroidではJava、iPhoneおよびApple製品ではSwiftが使われています。iOS用アプリではかつてObjective-Cが使われており、移行が(徐々に)進んでいます。Swift:iOS、Mac、Apple TV、Apple Watch向けのアプリケーション開発に特化した言語。Apple社が開発。Objective-C:C言語をベースとしたオブジェクト指向言語。Apple製品専用。

選ぶ言語はもちろん、エンジニアが使用しているものです。例えば自身が営業の立場で、アイデアを形にするのは難しいとしても、専門用語や各プログラミング言語独自の仕様を理解しておくだけでもエンジニアとのコミュニケーションはスムーズになり、ひいては業務スピードの向上につながります。

3.モバイルアプリを開発したい

5.就職や転職に生かしたい

転職サイトで最も求人の多い言語といえばJava。そしてPHPやHTMLといったWeb系の言語です。ゲーム制作なら、C言語やC++が使われます。たとえ他の言語を使うことになっても応用がききます。

様々な事情で開発環境のインストールすら難しい、そもそも自分にプログラミングの適性があるかどうかも不安な場合は・動画学習サイトでイメージをつかむ・プログラミングが学べるオンラインゲームで遊ぶ・プログラミング無料講習を利用して講師に直接疑問点をぶつけるといった方法を試してみるのがよいのではないかと思います。はっきりとした目標があるのなら、それほど苦にはならないチャレンジとなるはず。ぜひ一歩踏み出してみてください。

最初の一歩を踏み出すためには?

5章 プログラミング初心者におすすめの学び方

プログラミングスクールを訪れる受講生には一回は独学で挑もうとは思ったが身につかず挫折してしまった人が多くいます。ここではプログラミングを全く最初から始める人がどのような学び方をするのがお勧めかについて説明していきます。

書籍で学ぶのはハードルが高い

プログラミングをする際には一つの言語、HTMLやJavaScriptなどを選択してプログラミングをおこないます。書籍にはプログラミングコードのサンプルとしてサンプルコードというのを掲載しています。そのサンプルコード通りに自身のパソコンで実行することで書籍と同じ結果が得て、それを元に学習を進めていきます。しかし言語というものは日夜、より便利にしようと開発者が改良を重ね、 言語によっては頻繁にアップデートが施されます。なので書籍が出版した 時に正しかったサンプルコードでもその言語自体にアップデートが施され てしまうとそのサンプルコード通りに動かない可能性がでてきてしまうのです。

書籍では「生きた」プログラミングは身につかない!

では最新の書籍を購入して、正しいサンプルコードが載っているものを使っ て勉強すれば問題ないのかというとそれもそうとは言えません。確かに正し いサンプルコードが掲載された書籍を購入して勉強することは有用であると は思います。しかしそれでプログラミングスキルが十分に身につくかといえばなんとも言 えないのが現状です。では書籍だけで勉強しても十分に身につかないのはな ぜなのでしょうか。プログラミングで説明するとわかりにくいと思うので英 語で例えて説明いたします。みなさん、英語を勉強されたことがあるとは思 いますが書籍で文法や単語を勉強したとしてもそれで英語がすぐに話せるようになるには そのような書籍での勉強の上にさらに英語圏の人々と接してみて実際に英語 を使って見る、生きた英語に触れてみることが不可欠であります。ではここでプログラミングに話を戻してみましょう。書籍を一通り学習してほとんど のことを吸収したとしましょう。しかし英語の例でも見た通りそれで身につ いたプログラミングスキルはいわば「死んだ」プログラミングスキルと言っ ても過言ではありません。

プログラミング上達にはメンターが不可欠?

勉強会やオンラインレッスンの共通した利点としては対面で学べることがあります。この「対面で学ぶ」という点が初心者には重要であるのです。対面 で学ぶ利点として「生きた」プログラミングスキルが身につく点を挙げましたが他にも対面で学ぶ利点は多くあります。プログラミング初心者がつまづ く点としては単純に知識が足りないといったものからプログラムの中に不要な空白が混じっているといったものまで実に多様なものがあります。中級者以上になれば検索に頼りつつ自分で解決することもできるのですが初心者が このような原因が多岐にわたる可能性のある問題を特定するのは至難の技で す。また初心者がプログラミングを学ぶ際にすっきりわかるポイント、説明が重 点的に必要なポイントは千差万別です。対面でなら初めから、基礎からしっ かりと学ぶことができます。わかりにくい箇所はより時間をかけて、すぐに わかる箇所はあまり時間をかけずにといったように理解度にあって効率的に 学べるのは対面型学習の大きな強みです。

ではここまで読んでみなさんはきっとこのようにお思いになられたと思います。「こんな欠点ばかりの本って買う意味あるの?」実は本は学習用としてではなく辞書やリファレンスのように使われることが多いです。エンジニアの方が仕事の際に信用できる情報源から知識が欲しい時に活用されることが一般的です。またプログラミングをまったくの初心者の方が初める際に本から入り、本のみで完結するのがお勧めできないというだけで本を学習の一部に取り入れるのは非常に有用であります。ここでは最初から書籍だけで学習するのはお勧めできないということを説明 しました。 ではどのようにして初心者が学ぶのが望ましいのでしょうか? ここで提案するのは以下のような流れです。まずは勉強会やオンラインの対面型レッスンといった双方向型の学習スタイルを利用することをお勧めいた します。基本が対面型の双方向型学習でできたのちに動画コンテンツや書籍 といった一方向型のコンテンツでさらに実力を高めていくべきであると思い ます。また興味がもてない・プログラミングへの抵抗感が大きい人は最初にワンクッションおいてゲームから入っていくのもおすすめです。

最終的には基礎から学ぶ必要がある

6章

プログラミングを学習する為にはエディタやサーバーなどの事前準備が必要な事があります。初心者が陥りやすい挫折ポイントが、まずこの準備の段階HTML/CSSであれば無料のエディタをインストールするだけで用意ができますが、PHPなどサーバーが必要なプログラムを学習するにはサーバーの準備やFTPソフトなどの導入・設定が必要…そしてパソコンの設定によっては、一筋縄ではいってくれない事もあります。

プログラミング初心者が陥りやすい 3つのポイントと解決方法

最後の章では、CodeCamp受講生の方の声を参考に、どんな所が初心者の挫折ポイントになるのかと解決方法をご紹介します。様々な挫折ポイントが待ち構えているのがプログラミング学習。学習する中で困った際にはぜひ参考にしてみてください!

1.開発環境の構築が難しい

2.入門者向けの書籍は入門者向けではない?

解決方法:世の中の有志の方々のブログを参考にする

世の中の有志の方々が運営されているブログや解説サイトでは、書籍では詳しく解説していないような細かいポイントや、環境が原因とする特殊なケースの解決方法が紹介されている事があります。こういった記事を参考にしながら、試行錯誤で環境を構築するのがまず第一手段です。それでもわからなければ、詳しく知っている人に聞きましょう!ここで挫折してしまうと、プログラミングを書くことさえままなりません。

市販の書籍は、たとえ入門書であっても専門的な言葉が多くて理解が難し いかもしれません。実際、受講生の方で「入門書を読んでも意味がわから なかった」と仰る方も多いです。また、プログラミング学習の最初の方は 概念的な話が多いので、真面目な方ほど「これ全部覚えないといけない の…?」と嫌になりやすいかもしれませんね。書籍の内容は理解できるのになぜかプログラムが組めない...という方も多 いです。原因としては、 基礎として覚える事に取りこぼしがある、ロジカルシンキング(論理的思考)に慣れていない、基礎もロジカルシンキングも出来ているけれど、混乱しているだけなどが挙げられます。しかし自分が今、どのパターンで躓いているのかを分析するのは難しいですよね。

解決方法:聞くのが一番です

噛み砕いて説明してくれる人に聞くのが一番です!「これは簡単に言うと○○ をする為のもので、これをやらないと××になっちゃうんです」など噛み砕い て教えて貰えたり、重要ポイントとそうでない所...きっちり覚える所と今覚 えなくても大丈夫な所をアドバイスして貰えたりすると、順番に学習を進め られて嬉しいですね。

3.覚えた事がどう役立つかわかりません...

これも聞くのが一番です!例えば剰余の例でしたら、「剰余は偶数奇数の判定で 使いますよ」とか「偶数奇数判定は特定の列にだけ色を付けるなどの処理を行う 時に便利です」といった風に具体的な使い所を教えて貰えると嬉しいですね。使 い所の具体例がわかれば、プログラミングスキルをより有効に使う事ができます。

最後まで読んでいただきありがとうございました。プログラミングを学んで何かしたいという程ではなくても、ただなんとなく興味がある、という方も多いと思います。そのような方にとって、いきなりスクールや書籍で学習を検討するのは、少しハードルが高いですよね。しかし、プログラミング教育が普及した昨今、WEB上にも無料でプログラミングが学べる様々なプログラミング学習ツールがあるのをご存知でしょうか。中にはゲーム感覚でプログラミングが学べるサービスもあり、入門が難しいと言われるプログラミングを楽しみながらプログラミング学習することもできますので、ぜひ活用してみてください。また、弊社CodeCampでも無料体験レッスンを実施しています。現役で活躍するエンジニアにマンツーマンで教えていただけるので、ぜひ一度受講してみてください。

7章 まとめ

無料体験レッスンを受講する