Contents
はじめに
第一回では「何故プログラミングを学ぶか」ということと「プログラミングに向いている人」について解説していきたいと思います。
なるべくわかりやすいように書きましたが「おいおいそれは例がわかりにくい」だのいろいろな意見があると思います。
本記事でプログラミング学習を志してくれる才能ある人が増えてくれればと思います。
プログラミングとは
あなたが使っているスマートフォンやパソコン、それらの中ではいくつものプログラムが動いています。
現代のユーザでアプリやソフトをインストールしたり、起動したりしない日はないと思います。
そんなアプリやソフトは全てプログラミングによって生み出されているのです。
簡単なところだとExcelでの関数やマクロ計算もプログラミングの一つと言えるかもしれませんね。
世の中いろんなプログラミングについての本がありますが、本記事ではガチ初心者向けに説明していきます。
何故プログラミングが要求されるか
指導要領の変更で小学校でプログラミングの授業が組まれるなど、日本においてプログラミングの需要は日々高まってきています。
でも、必ず一回は思うことだと思うんです、「プログラミングって何のために必要なの?」と。
よく考えてみればそれは至極まっとうな意見で、例えば今あなたが仮に何のプログラミングによる生産活動をしていないとしてもTwitterやFacebookやDiscordやLINEといった素晴らしいアプリが実際に生み出されているわけです。
え、じゃあ何にもしなくてもいいじゃん。
あんなメジャーなのは無理かもしれないけど、知識として持っておくことは便利なんよ。
プログラミングを学ぶとはプログラムを “創る” 能力を鍛えるということで、これはすなわち作曲のために音楽を学ぶ、芸術作品を生み出すために絵を学ぶなどと変わりないのです。
そんなのできっこないって思うかもしれませんが、100mを10秒で走ることよりは絶対に簡単なので、もしもプログラミングを真剣に学ぼうとしているのであれば諦めないでください。
プログラミングはスキルである
プログラミングに限らず、社会生活において最も大事なことは「自分の価値を高める」ということです。これ、わかってない人が多い気がするんですよね。
「こんなの将来役に立たない」「使う場面なんてない」っていう言葉は数学を学ぶ上でよくでてくるフレーズなのですが、勘違いも甚だしいといったところです。
「数学できなくても生きていけるもん」ってそりゃあんた「世の中の賢い人が数学できないお前でも生きていける世の中をつくってくれた」っていうのが正しいんですよ。
昔はインターネット、それより前は電話さえも高度な技術・知識がないと使えない代物でした。それがいまや「Siri!電話!」ってだけで電話かけたりインターネットで検索できるんだからすごい世の中ですよね。
分野と関係ないスキルは確かに将来的に仕事には直接は関係ないかもしれません。でも学んでおくことで人生の選択肢が増えるんですよ。
勉強しておけば「パティシエ目指してたけどやっぱりパイロット目指そう」とか「医者目指してたけどパティシエ目指そう」とかいくらでも応用がきくんですよね。
それが最初からパティシエ目指すために料理しか勉強してこなかったら、本命がコケたときに取り返しがつかないんですよ。
数学の知識も料理の知識もどちらが上とか下とかはありませんが、数学の知識のほうが様々な職種につぶしが利くのでちょっと有利というのはあるかもですね。
スキルという付加価値
将来的にあなたは就職することになると思います。
そのとき、面接官は何百人という受験生をみるわけです。面接官の立場になって考えて誰を採用するか考えてみてください。
基本的スペックは全く同じだけれど、一方はデザインを学んでいるとなれば「デザインのスキルが何に使えるかわからないけど、こっちの人の方がいいかな」ってなりませんか?
スキルを身に着けたということは「努力することができる」「才能が少なからずある」ということの間接的な証明になるんですよ。
なので内容は何でもいいですしナンバーワンでもなくてもいいです。人口が百人だったときに上位二十人くらいには入れる自信があるスキルを一つは必ず身につけておきましょう。
一位じゃなくてもいいっていうのがミソな。でもガチ勢目指したいならもっと上を目指すべき。
マルチスキルでいいなら色んな分野で偏差値60くらいとれればおっけー。
で、そのスキルとしてプログラミングは比較的ハードルが低いよね、っていう話です。
プログラミングに向いている人
よくプログラミングの利点として「論理的・数学的な思考が身につく」みたいなキャッチフレーズがありますが、半分当たっていて半分間違っています。
そもそもの前提として「論理的・数学的思考がない」人はどんなに頑張ってもプログラミングを会得することはできません。ただ、これは単に向き不向きの問題で別にプログラミングができないからって人間失格なわけではないので悲観的にならなくて大丈夫です。
「数学のセンスないな」って自分で本気で思っている人はプログラミング向いてないのでやめときましょう。
というか、何にしろ “心の底” から「本気で向いてない」って思うクセはなくしたほうがいいです。そういう人は自分で「これは向いている」って思ったものでもなにかの拍子にちょっと躓いて「やっぱり向いてない」って逃げるタイプになりがちなので。
まあそうはいっても人間、得手不得手がありますから苦手なものは仕方ないです。ぼくだって芸術センス磨けって言われてもできんことはないだろうけど「いや(才能ないから)そりゃ学習効率悪いやろ」って思うわけです。
ここでいうのは例えば八十点のものをつくれって言われて才能ある人が一週間でできるのに、才能があんまりないぼくに一ヶ月でつくらせるのはもったいないかってことです。
要するに適材適所ってことやねえ。
数学センス
まあでも実際問題「結局どのくらいの数学センスいるん…?」ってなると思うのでお答えします。ぼくくらいの数学力があれば基本的には困ることは少ないと思います。
ツイッター見ててぼくの数学力の底は知れると思いますし、駿台で偏差値55くらいの大学を理系で入学・卒業しているなら全く問題ないです。
英語力
プログラミングで詰まったとき、最も役に立つのはWikipediaではなくStackOverFlowというサイトです。
まあプログラミングが専門の超大型掲示板と思っていただければ間違いないです。
ただし、書き込まれているのは全て英語なので英語力が絶対に必要です。
どのくらいの英語力が必要なのかというのは使われる用語が専門的だったりもするので一概に言えませんが、TOEICで500点取れるなら書いてあることの90%は辞書を使いながら理解できると思います。
ま、それに最近はGoogle翻訳も優秀だしね。
ただ、Google翻訳も間違えることがあるので原文と見比べて「この翻訳は間違えているな」って気付けるくらいの英語力はやっぱり必要です。
めんどくさがり
Twitterで何度も強調して言っているのですが、プログラミングを学びたいのであればめんどくさがりな人のほうが絶対に向いています。
というのも、世の中プログラミングで自動化できることが多いんですよね。
例えば、ぼくがプログラミングを学び始めたのも、とあるソシャゲ(もうサービス終了した)のリセマラやイベントの周回がめんどくさすぎて「これ、自動化したら絶対楽やん…」っていうのがきっかけでした。
もちろん自動化して楽するためには初期投資として開発期間が数日必要なわけなんですが、のちのちのメリットを考えてそういう風に先行投資できるめんどくさがりやは本質的にプログラミングに向いていると思います。
まとめ
ちょろっと書こうと思っただけだったのですが、意外に長くなってしまいました。
この記事で(プログラミング以外でも)、なにか自分を磨いておいたほうがいいなあって思えたのであれば執筆した価値は十分にあったと思います。
他人の発明品を “使っているだけ” の人になってしまっていては絶対に駄目です。
それは肝に銘じておいてください。
次はプログラミング言語の種類や学習の仕方について解説していこうと思います。
記事は以上。
自身を天才と信じて疑わないマッドサイエンティスト。二つ上の姉は大英図書館特殊工作部勤務、額の十字架の疵は彼女につけられた。
コメント
例えばですが、一線級の研究者は一見関係無いようなテーマの研究を新たに始めていたようにみえて一つの道筋をつけている場合が多いように思います。何事もそうですが、目的意識が重要だと思います。何故そのスキルを身につけようと考えていたのか、そこが稀薄だと自己アピールとしては訴求力がありません。プログラミングも同じです。
数値計算やCGをやりたい場合は確かに高度な数理解析能力を備え数学や物理の知識が必要です。一方、中小の企業が在庫管理や生産管理を行いたい程度ならば “Excel” より使い勝手のいいもの作ればよく、読み書き算盤程度のことなので、誰でもできます。車の運転に例えるならば誰しもがF1レーサーになる必要性はないということです。
とはいえ教習所の検定すらこなせない人も世の中にいるようにプログラミングに向いてない人もいると思います。それはおそらく論理的な思考力に乏しいかその思考力をプログラミングに振り分けられない人です。数学を理解する上でも必要な能力ですが、数学が出来ずとも人は論理的に思考できます。適性の有無はその能力をプログラミングに応用できるかどうかで、こればかりはやってみないとわかりません。
私が初学者に思うことは、何をやりたいかはっきりさせた上で、とりあえずやって見てほしいということです。例えば世にあるC言語入門の本はたいていポインタがどうとか書いてありますが、あれは中学生に解析概論なり大学の教科書を読ませているようなものです。その上スクリプト言語をみれば分かりますが本来ポインタなどなくてもプログラミングはできるはずなのに機械の都合を我々は押し付けられているのです。
こんなに便利で面白いものはありませんので、もう少し間口をひろげ敷居を下げられればと常々思っていますが、本屋には仕様書を噛み砕いただけの教科書ばかり並んでいて、初学者に向けたいい本があまりないのが惜しい点です。
そうなんですよね。プログラミングをメインに仕事をしていきたいとかいうわけでなければエクセルの標準関数程度が理解できればよく、せいぜいIF文かFOR文ができるくらいでほとんどの処理はできてしまうのですよね。
それは低級言語にも当てはまることで、初めて「何かプログラミングで作りたい」と思った時にいきなりポインタなどの知識が必要となることは滅多にないのに、プログラミング初学者向けの本では意気揚々とポインタの話がしてあったりして複雑な気持ちになります。
まずは簡単なスクリプト言語からプログラミングの楽しさを知ってもらいたいところです。