
プログラミング勉強法 vol. 1
※忙しい人はタイトルと太字部分だけ読めば大体OK!
最近,プログラミングという単語を聞く機会が増えたように思いますが,皆さんも同じじゃありません?それと同時に「プログラミングを勉強しようと思う」というセリフもよく聞くようになりました.人によりプログラミング学習に関心が向く理由は様々でしょうが,なんか将来の仕事につながりそう,食いっぱぐれなさそう,流行っているから,やっておいて損がない(と聞いた)から...のような,漠然とした理由が多いのではないでしょうか?あと,2chの元管理人の方の言葉に影響されてやってみようとか思っていませんか? ここでは,研究者としてそれなりの期間プログラミングを行い生活してきた筆者の経験をもとに,おすすめの勉強法(というかモチベーションの作り方)などをご紹介しようと思います.続けること,ひいては身につけることがそこそこ難しいのもプログラミング学習の性質かと思います.よくある挫折パターンとして
「プログラミングやりたい!」と意気込んで道具を買う→わからない箇所で詰まってイヤになる→日常が忙しくなり一旦放置→時間経過で内容を忘れ再開に時間がかかる→また放置→放置の期間がだんだんと伸びていつの間にかやめている
こんな感じではないでしょうか?特に,上に紹介した,漠然とした「プログラミングを勉強しようと思う」は大体挫折しますので気を付けましょう. その理由もお話ししつつ,挫折を繰り返して最終的にプログラミングを使うに至った筆者流のモチベーションアップ術なんかをご紹介します!
筆者とプログラミング
(今回は丁寧語で書いてみます)
プログラミングでこんなにできることが広がる!
上でも少し書きましたが,筆者はそこそこプログラミングに触れて生きてきました.それこそ,仕事だけでなく趣味でも.細々した話を書く前に,これまでどんなものを作ってきたかを紹介していきましょう.
まずは,ラジコンミニ四駆です.これは,ミニ四駆という小さな車のおもちゃにマイコンやらモータを搭載し,ラジコン操作で走るようにしようと作ったものです.自分の実験スキルを磨く目的で作ったものです.

マイコンがBluetoothリモコンと電波をやりとりし受け取った指令をモータに流す,という仕組みなのですが,この一連の動作を行う制御系ソフトウェアをC言語で書きました.C言語というのは,かなり歴史の長いプログラミング言語の一つです.
次は,ドラゴンのオブジェです.デジモンというシリーズに登場するキャラクターをモチーフに作った置物で,PICマイコンというものとLED,音センサーなどを組み合わせて作りました.

音に反応してLEDが複数のパターンで点灯するのですが,このセンサ信号受信〜LED点灯制御を行うソフトウェアもC言語で書きました.
この辺りは,YouTubeに動画があるのでモチベーションアップにでもご活用ください:
さて,もう少し真面目な方向のものも紹介してみましょう.今度の図は,回転するドローンのロータ面上の流れる空気の速度(誘導速度,といいます)を数値シミュレーションで予測した結果になります.

この計算にはDynamic Inflowという技術を用いており,ロータの周方向と半径方向に特殊な関数で速度分布を展開することで,複雑な流速分布を計算することに成功しています.この時のプログラミング言語はFortran 90/95というもので,最も古いプログラミング言語を元に発展したものになります.世界最初のコンピュータでも,プログラミングはFORTRANでやっていたはず(ただし,パンチカードという紙にプログラムを書いて読ませていた).先ほどのミニ四駆やドラゴンと比べると,ソースコードの長さは50〜100倍くらいになるでしょうか(お見せしている誘導速度の計算結果はあくまで機能の一部なので).
最後は,同じ流体でもその動きをより詳しく解こうとしている試みになります.Navier-Stokes方程式と呼ばれる支配微分方程式を離散化(細かく分ける)し,さまざまな特殊テクニックを駆使して解いていきます.

もう意味がわからないかもしれませんが,こちらでは4つのバブルリングが衝突した後の様子を示しています.このプログラムにはC++と呼ばれるC言語の発展言語を用いています.
ほんの一部ですが,筆者のプログラミングに関する活動を紹介しました.PICマイコンのような低パワーコンピュータで動くものから,ワークステーションのようなハイパワーマシンでの使用を想定した流体計算まで色々とやっているのがわかってもらえるかと思います.また,コンピュータの中だけでなく現実世界でモータを動かしたり,LEDを光らせたりということも行なっています.
大事なことは,プログラミングの知識(+α)を身につけていると,やれることの範囲がずいぶんと広がる,ということです.これからプログラミングを学ぼうとされている方は,その習得によりご自身のできること,ひいてはアクセスすることのできる世界を飛躍的に広げることができるでしょう.
どうやってプログラミングを学んだ?
宅浪云々のくだりを知っている人なら想像に難くないと思いますが,筆者のプログラミング関連の技術・知識は全て独学で身につけました.では小学生の頃からプログラミングに慣れ親しみ・・・みたいに始めるのが早かったかというともちろんそんなことはありません.我が家は年収200万円台家庭かつ身内に勉強ができる人がいないので,プログラムを書くなんて発想すらありません.そんな状態なので,プログラミングの勉強を始めたのは24歳からです.実は何度か「プログラミングを勉強したい!」と意気込んだことはあり,20歳,22歳くらいにも挑戦しようとして挫折していた気がします(確かWindows プログラミングとC++の本を買ってちょっとやって放置).そんな状態なので,自分にはプログラミングの才能などないのだと思い込んでいたのですが,あるきっかけで苦手なはずのプログラミングの勉強を24歳から開始し,一年ちょっと過ぎた修士1年の夏には自分で作ったソフトウェアで出したシミュレーション結果で論文を書き,国際誌(いわゆる査読付き論文です)に投稿していました(しかもこれが通っちゃった).挫折した時となぜか勉強が続いたときの差は何なのか?これこそ,プログラミングを学ぶ上で最も大切なことの一つだと思うのです.この理由を下で紹介したいと思います.
ここから先は

この記事が気に入ったらチップで応援してみませんか?