見出し画像

非エンジニア民「ぱいそんって何それ?おいしいの?」

※筆者は都市計画系研究室の出身であり、全てが独学で進んでいたため細かいことは知りません。現在も非IT系のサラリーマンなので間違った知識も多々ありますので優しく指摘してもらえると助かります。

背景

※こちらの記事は、なんとかして当社にぱいそん教を普及させたいという強い思いのみで構成されています。
 最近、小学校でプログラミングは必須科目化したりとITリテラシー向上のために様々な分野で取り組みがされているにも関わらず、「ぷろぐらみんぐって何それ?」といっている場合ではないはず。
 その一方で、「自分の周りにプログラミング知っている人いないしそもそもどんなことに使えるのかわからんし難しそうだしうんぬん」ということもあるんじゃないでしょうか。
 なので近年ホットな言語Python(Wiredの記事)を元に、どんなことができるのかを取り上げつつ、少しニッチな世界も紹介しようと思います。

プログラミングができるとちょっとよくなる世界

 まずはプログラミングを勉強することのメリットを上げていきます。もちろんこれだけではないし、人によっても違うけども自分がよく感じているところなので。

1. 技術的な部分が少しだけ想像しやすくなる。
2. 工程を分割して想像しやすくなる。
3. 自動化し時間を生産的活動に割り当てられる。
4. 職を失っても自分でプロダクトアウトできる力が得られる。
5. ちょっとだけかっこいい。

1. 技術的な部分がちょっとだけ想像しやすくなる
 特別定額給付金事業でなぜか当初のオンライン方式を取りやめる自治体が増えている(NHK記事)。なぜこのような問題が起きたのでしょう。
 ここでネックになっていたのは、オンライン申請と住民基本台帳の照合が手作業で行われていただと考えます。住民基本台帳が保存されているPCはインターネットから遮断されているので、右の画面と左の画面を見ながら合っているかどうかを目視で確認していたようです。
 程度はさておき、どこに技術的な課題があって、的確なソリューションを想像できるかはとても重要なことではないでしょうか(自分が提供するか、実装するかはさておき)。

2. 工程を分割して想像しやすくなる
 プログラミングを書くようになると、完成像を想定しながら、その完成にむけてフローチャート的な思考(ロジカルシンキング)をするような習慣が身につくはずです。

 ロジカルシンキングがなんで重要か?Google先生に聞いてください、、、
(デザイン思考とかアート思考とか◯◯思考が増えすぎて、、、)

3. 自動化し時間を生産的活動に割り当てられる。
 みなさんがよく使っているExcelありますよね。それよりも高度な分析はできます。また様々なことを自動化できますので、Excel作業にしても自動化をできるとこは自動化し、他のクリエイティブな時間を生み出すことができます。数多ある事務作業を自動化しより知的活動を行えるんです(あなたが知的活動を行いたいかはさておき)。

 ただ注意しなければならないのはプログラミングを知っているからなんでもプログラミングでやるのではなく、Excelで十分なところではExcelを使ってくださいね。

4. 職を失っても自分でプロダクトアウトできる力が得られる。
 例えばWebの知識を得ることができれば(+センス)Webページの開発もできるんじゃないでしょうか。もしアプリケーション開発の力があれば(+先見の知)、アプリを売ることもできましょう。一つプログラミング言語を知っていれば他の言語もそれなりに習得が早いため、転職も比較的やりやすいと思います(責任は負い兼ねます)。フルスタックエンジニアになれば(+センス)、自身でアプリを開発し展開することもできます。
 副業も可になりつつあるこのご時世でプログラミングを一つの選択肢と持っておくのは悪いことではありません。

5. かっこいい
プログラミングができるとなんかカッコいい(責任は負い兼ねます)。

↓かっこいいやつら

”ぱいそん”の”ぱ”

 Python(読み方:ぱいそん)は、世界的に1位2位を争うホットな言語で、”たった”数行のシンプルなコードで処理ができたり、ユーザーの多さからレファレンスが多かったりと、プログラミング童貞を卒業するには適している言語です(ここには宗教論争があり、C系からやるべきという鬼畜派となるべく嫌いにならにように簡単なところからという擁護派がいます)。
 さて、これだけだと実感が湧かないので、もう少し事例ベースで何者か解き明かしていきます。

1. 機械学習やデータ分析
2. Webアプリケーション
3. 空間表現(GIS)

1. 機械学習やデータ分析

 データ分析をするなら現状RかPythonじゃないでしょうか?FortranやJavaでするという話も聞いたことがありますが、今から学び始めるのであれば二択な気がします(Haskellでどうしてもしたいという猛者はブラウザバックでどぞ。)
 というのも、Rの場合は研究者のユーザーが多く、かなりニッチな分析手法まで作られていることが多いです。またPythonの場合は全体でユーザーが多くレファレンスが多いことや、(たった)数行で分析ができてしまうので、書きやすいという長所があります(ブラックボックス化しやすいというデメリットもある)。

2. Webアプリケーション

 みなさんよくご存じのこちら。インスタグラムのフレームワークはPythonのライブラリを使って作られているそう。ほかにもたくさんのサービスがPythonベースで作られています(ただPythonだけ勉強するとWebアプリ最強になるかというわけでは決してない)。

さらに気になる方はこちら↓

3. 空間表現(GIS)

 自分の専門が都市計画なのでGIS用途でもかなり使ってました。特に自分で実装したい処理を書いて、そのままマッピングできるのはかなりありがたかったですね。もちろん交差判定やブール演算もありますし、GUIで操作するより演算速度が速くなるので、作業がはかどります。

 他にも様々な場面で使われていますし、もっとニッチな世界もありますが、あとはご自身で適切な事例を探して、上司にプレゼンしてみてください(これはいれるべきというアイデアがある方はコメント欄で書いてもらえると助かります)。

ちょっと休憩

 ”ぱいそん”の”ぱい”を書こうかと思っていたのですが、すでに約3000字となってしまったので、二段構成にしますね。
 なので、もう少しお付き合いいただいて、プログラミングの勉強の仕方、心得みたいなところを書いていきます。

まずは心得から。

1. 上手にググる
 プログラミングができる人は真っ白な状態からコードを書き始めて、さらさら書いている!と勘違いしている方がいますが、そんなことはありません。わからなくても、即座にググって的確に情報を検索し、該当部分をコピペするんですざあああ。真っ白な状態からかける方はきっとUMAか何かじゃないでしょうか。

2. エラーを恐れない
 たまにエラーが出ることを恐れたり、エラーが悪いことだと思ってコードを書かなくなってしまう方がいるようです。でもエラーは悪いことでは全くなく、恐れる必要はありません。エラーが出れば出るほど新しいことにチャレンジしている証拠です。

 もしエラーが出てしまったら、その部分をよく読みましょう。そこにヒントが隠されています。
 そのあとにエラーをコピペしてググってみてください。同じ境遇の方が必ずいます。

3. ゴールをなんとなく決めておく
 どんな言語もツールです。なんとなくゴールを決めておくとそのゴールにあった勉強ができます。
 例を挙げると、データ分析、ディープラーニング、Webアプリケーション開発、業務の自動化など。もっと些細なゴールでもいいかもしれません。
 

次に勉強の仕方です。人によって得手不得手がありますので、参考程度にしてもらえれば。

1. チュートリアル本、参考書を買う(初級者向け~猛者向け)
【長所】
 この方法はすぐに手に取れるうえ、気軽に本に戻って参考にすることができます。また網羅的に学べます。一番記憶の定着率がいいと思います。
【短所】
 その一方で積ん読になりやすいです。きっと何冊もの重しが量産されていることでしょう。
 もし買うことを検討していたら、まずはなるべく簡単なのを選びましょう。見栄を張って〇ライリーとかを買うと大変です。

あ、猛者の方は好きなのを買ってください。

2. オンライン講座を購入する(初級者~中級者向け)
【長所】
 個人的にはこれが一番手っ取り早いと思ってます。横で聞きながら写経をすれば、だいたいかけるようになるかと。ゴールが決まっている場合、ゴールに合わせた講座があり、また中にはSQLやhtmlなど他の言語との関係などもあり、おすすめです。
 Udemyは様々な講座が用意されていますので、(なぜかよくやっている)一律1500円セールを狙って自己投資してみてはどうでしょう。
【短所】
 ゴールに向けて何をすればいいのかなど勉強のフレームがわからない方は網羅的にブーストできますが、記憶の定着率が悪いためこれだけで書けるようになるということはあまりない気はします。

3. オンラインサービスを利用する(初級者向け)

【長所】
 Progateやドットインストールなどのオンライン学習用のサービスがあります。特に初心者向けのものが多くチュートリアルの初めのほうは無料になっていたりします。
【短所】
 月額制で払う必要があったり、内容によっては少し物足りないなどあるかもしれません。

 Progateはブラウザ上で書きながら進めるため、定着率は比較的高くまた網羅的にブーストできるので、チュートリアル本の代替手段としてもいいかもしれません。
 ドットインストールは動画ベースなのでUdemyに近い感覚です。

3. 競技プログラミングをしてみる(初級者~猛者)
 KaggleやAtCoderなどいわゆる競プロというものがあり、あるお題に対して一斉に解き、その精度や解くのにかかった時間などを競い合うものがあります。
 AtCoderは入門編から上級編と問題が分かれており、また解説もしっかりとあるため、競プロに興味がありましたら一度やってみるといいと思います。特に参加費がかかったりとかないので。

他にも学習方法はありますが、自分が積極的に活用していたものがこんなところです。こんないいサービスあるよーなどありましたらコメントもらえると助かります。

最後に

 ”ぱいそん”の”ぱ”の字を知らない方向けに書いていたんですが、書いているうちにプログラミングのプの字も知らない人には難しいんじゃないかと思い、大幅路線変更です。

 もし需要があればpythonチュートリアル作ってもいい気はするんですが他との差別化が難しいためどうしたものかと、、、

 こんなのを作ってほしい!などありましたらTwitter、コメント等頂けると作るかもしれません。

この記事が気に入ったらサポートをしてみませんか?