私はバックグラウンドが情報系ではないので、プログラミングは基本的に社会人になってから、隙間時間で学習してきました。体系的な学習をしていないので、穴だらけの学習法ですが、個人的にモチベーションを維持しながら学習をするのに役立ったと思う方法をまとめていきます。
私が初めてまともにプログラミングをするようになったのは、プロセスシミュレーターでは表現できない制御モデルを、C++でモデリングする必要に迫られた時でした。
「C++が○○日でできるようになる」といった本や様々なサイトで勉強を開始しましたが、プログラミングで用いられるIT用語が全く頭に入ってこず(オブジェクトが、、インスタンスが、、仮想関数が、、等)、全くコードが書けるようになりませんでした。
IT用語に対する拒否反応が強くて学習が捗らなかったので、まず面白いと思えるようにならないと駄目だと思い、私は本で体系的に学習することを諦めて、自分が興味を持てる、簡単なサンプルを複数のプログラミング言語で同時に学習することにしました。この方法のメリットは、
1.簡単、かつ興味を持てる題材を選ぶことで、イメージがしやすくなる。オブジェクト指向とはといった内容を、言葉だけで理解していた時は、「人というクラスを実体化すると田中さん、鈴木さんといったインスタンスになって、、」といった、分かったような分からないようなフワフワした理解から抜け出すことができず、いざ実装しようとした際に手が動かないという状態でした。私の場合は、シミュレーションや計算の自動化、物性計算や制御に興味があったので、興味のある各分野から簡単なサンプルをピックアップしてプログラミングすることから始めました。例えば、各言語で制御というオブジェクトに対して入出力用の変数、メソッドを搭載して、圧力制御モデルや流量制御モデルを実装するといった例題や単純な蒸気圧モデルから徐々に平衡モデルにアップデートしたりといった流れを題材にしてプログラミングの学習を行いました。
2.C++では分かりにくい表現で書かれているプログラミングも、他の言語であれば分かりやすく書かれているケースがある。
今の時代、Googleで検索すると、数値計算一つとっても、優れた記事が大量に見つかります。例えばC++で書かれたアルゴリズムだと分かりにくくても、PythonやR等直感的に理解しやすい言語で書かれたアルゴリズムの記事は分かりやすいといったケースは多々あります。プログラミング言語を絞らないだけでも学習題材の選択肢は格段に広がります。
3.新しい言語を学ぶ楽しさが刺激になる。
新しいプログラミング言語を学習する際は、いつもお決まりのHello Worldからが行っていますが、新しい言語を学習しようとすると、まずインストールからちょっとワクワクし、Hello Worldが無事に表示されると、未だにオオッという感動があります。Hello Worldの次に私が決まって行うのは、簡単なフラッシュ計算モデルの計算です。決まった物性データを入力してあるcsvファイルとのデータ入出力やループ制御、分岐、型変換や関数定義、クラスの作成等、一通りの作業が必要となるので、練習問題として最適です。私の場合は、複数の言語で同じ題材をプログラミングしていく中で、IT用語に対する嫌悪感を消すことができるようになりました。
万人に通じる話ではないかもしれませんが、私のように飽きっぽい性格の方にはお勧めの学習方法です。(一つのプログラミング言語を習熟した方が、もっと早く他の言語も勉強できるのかもしれませんし、こうした学習方法には向き不向きがあるかと思います。あくまで参考として見ていただければと思います)
私は同じ作業を繰り返すことが嫌いなので、決まった繰り返し作業があると自動化したくなります。
月次作業や、毎月決まったフォーマットでレポートしているような作業もそうですし、例えば文献値を参考にしながらシミュレーターに値を移したり、計算結果等のデータを考察しやすいように加工したりする場合等、作業を始める段階でこれは似たような作業が将来的に発生しそうだなと思った時は、例えそのままやってしまえばものの1、2分で終わってしまう作業でも1clickでできるようにできないか考えるようにしています。
その場限りで考えれば、プログラミングしない方が絶対に早いのですが、敢えてプログラミングします。
遠回りなようですが、①ただ値を移す、1個ずつ値を見比べるといった詰まらない作業を楽しくできるのと、②将来同じような作業が必要になった時に楽ができるためです。
日常業務の中で、こんな単純作業はつまらないなと思うものがあれば、プログラミングでの自動化を検討してみると単調な作業も楽しくできて、良い訓練になるかと思います。
プロセスシミュレーターを使い始めた頃、一つ不満に思っていたのが内部計算がなかなか確認しづらい点でした。ヘルプ等に式が記載されているものの、たまにヘルプが間違っていたり、シミュレーターに搭載されている式の一部係数に誤りがあるために計算結果が間違っていたりするケースがあり、検証に余計な時間を食うケースがありました。
上記の経験から、複数のシミュレーターを使い分けたり、自分で検算用のプログラムを作ったりするようになりました。
単純な計算であっても、自分でプログラミングしてプロセスシミュレーターと同じ計算を行ってみることで、シミュレーターに対する理解も、プログラミングの知識も深めることができるので、お勧めです。(この場合、シミュレーターを正として自分のプログラムが合っているかを確認するのが目的ですが、稀にシミュレーターの間違いを見つけるケースもあります、、)
勉強を始めた当初は基本Googleの検索だけで、お金を極力かけないようにしてきました。近年非常に丁寧なサイトが増え、無料でもかなりの情報収集が可能です。今でもGoogleはフル活用しています。ただし欲しい情報にたどり着くのに、また必要なスキルを身に着けるのに時間がかかりそうだと思った時は、お金を惜しまず本、講習、ソフト等につぎ込むようにしています。
例えば私はMatlabを個人で購入し使っていますが、使う頻度は年に数回程度です。もったいないと言えばもったいないですが、以下の理由から私は毎年ライセンスを更新し続けています。
・自腹を切って毎年購入しているライセンスなので、たまに使わなきゃというモチベーションが生まれる。(みみっちい話で恐縮ですが、私には自分を追い込むのに有効な方法でした)
・半年に一回はアップデートが行われるのでどのような新しい機能が追加されたのか、ユーザー会でどんな活用事例が生まれているのかといった最新情報を追うようになる。
・有料ソフトなので、無料ソフトとは次元の異なる使いやすさで、UIやUXの観点でも勉強になる。
・ユーザーフォーラム等でも面白いプログラムが紹介されている。
また技術書は、1冊1冊が高いので、値段だけ見ると本当にこの値段分活用できるだろうかと躊躇してしまい勝ちでしたが、最近は式1つでも、その本で学びになることがあれば、購入してしまっています。
Googleでも時間をかければ欲しい情報が手に入るケースはあるのですが、有象無象の情報が入り乱れており、探索と精査にかかる時間が惜しいのと、自腹を切った方が学習意欲に繋がるので、先行投資と思って購入しています。
また個人的にはやはり学習には紙媒体が最適だと思っています。マーカーや自分の書き込みもしやすいですし、なにより見たいページにすぐにたどり着けます。
ホームページに関しても、始めは無料のサーバーを探して作成していましたが、ウェブプログラミングの先行投資と考え、Xserverで契約をしました。AWSやAzureも無料期間で少し勉強したのですが、お金がかかりすぎるので流石にこちらは個人の勉強用には維持できませんでした。
これも万人に通じる話ではないかと思いますが、私は積極的に有料サービスにも投資することで、学習意欲を維持してきました。
私がよく使っているのは、Udemy、Coursera、pluralsightです。
特に、Udemyは年に何回か各コースが1200円で購入できる時があるので、少しでも気になった講座があった場合は、迷わず買ってしまっています。
私が個人的に受講して良かったと思う講座をいくつか紹介したいと思います。
Coursera:機械学習の勉強に役立った講座
タイトル | コメント |
---|---|
Applied Machine Learning in Python | 機械学習の予備知識が無い状態から始めても全体像を掴みやすい構成になっており素晴らしいです。各章でチュートリアルも用意されていて復習しやすいです。ただ、最後の課題がちょっと苦戦しました、、。 |
Udemy:Pythonの勉強に役立った講座
タイトル | コメント |
---|---|
Python 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイルを学ぶオンライン講座 | Udemyの数ある講座の中でも私の一番のお勧めです。基礎から応用まで盛沢山の内容で、講師の酒井潤さんの説明が丁寧で分かりやすいです。Pythonを始めるにあたってはこのコース一つで十分ではないかと思います。私は酒井さんの他の講座も全て購入しています。 |
Udemy:ニューラルネットワークの勉強に役立った講座
タイトル | コメント |
---|---|
みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 | 必要となる数学の知識も含めて非常に丁寧に説明されています。少し丁寧すぎると感じる部分もありますが、Udemyは加速して流すこともできるので、私は1.75倍速で見ています。講師の我妻さんが出版されている本も分かりやすいです。 |
プログラミングに役立つお勧めの本はこちらにまとめています。ただ個人的には、まず最初はなによりプログラミングしたい対象を見つけることと、Google検索でも十分ではないかと思っています。
当サイトに不具合、ご意見等ございましたらCEsolutionにお知らせください。