もずく先生とはるか先生の両先生方から「プログラミング遍歴」について書くべしというお題をいただきましたので、学生時代を思い出しながら書いてみます。雑記ですがお付き合い下さい。
私は理工学部の出身ですが、学部時代の授業でプログラミングを学んだことはなく、履修しようとした記憶すらないので、当時はそもそも興味がなかったんだと思います。バイトとサークルをしてました。真面目なので授業はあまりサボらずに出てたと思います。なんの話だっけ。プログラミングか。
大学入学後3年間はそんな調子でプログラミングとは無縁の生活を送っていたのですが、4年生になって研究室に配属となり、卒業論文のテーマを決める際に、プログラミングが必要な研究テーマを選択肢として提示されました。
ただ、「やったことないし難しそう」とやる前から逃げまして、楽そうな(大変失礼)実験系のテーマを選択しました。データ処理も先輩が書いたコードを動かすくらいのものでした。今思えばとても勿体無いことをした。そして卒論提出前は研究室に寝泊まりしてたので結局全く楽ではなかった。
当時動かしていたのはMATLABという技術計算用言語で、一番最初に触ったプログラミング言語を挙げるとすればこれになります。当時の指導教官が「MATLABはプログラミング言語じゃねぇ。ソフトウェアだ」と言ってましたが、プログラミング言語ということにします。が、所謂コンパイル不要のスクリプト言語で、必要なモジュールが最初から(ほとんど)全てインポートされていて、簡単に書いて動かせるとなれば「なんて甘やかされた環境なんだ」と思う気持ちが今なら分かります。
大学院では異国の地でMSc(修士)プログラムに入ったのですが、授業全てが必修で毎日びっしり入っており(2年のうち最後の半年だけ修士論文のための期間がある)、そのプログラムの導入教育の一環でプログラミングの授業がありました。FORTRANとの出会いです。
はるか先生がレガシー言語「BASIC」について記事にしていましたが、BASICの登場は1964年で、FORTRANの登場は1954年です。マリリン・モンローが来日した年だそうですよ。親すら生まれてないんだが???
そのときもプログラミングには特に興味も知識もなかったので、「化石言語www」という感想すら持ちませんでした。それまで苦手意識を持っていたプログラミングですが、いざ必要にかられてやってみたら案外楽しかったのを覚えてます。例に漏れず「完全に理解した」と仮初めの自信を得まして、修論のための研究ではFORTRANでコード書いたりしてました。あと、夏期の短期インターンでC++で書かれた実験機器制御のサブルーチンをFORTRANから呼び出すという若干トリッキーな処理の実装をやったりしました。C++ともここで出会ってます。が、すぐにサヨナラしました。
就職後はメインウェポンがエクセルとパワーポイントとワードに変わりまして、しばらくプログラミングと言っても使い捨てのマクロを書くくらいのものでした。VBAやシェルスクリプトをちょこちょこ書きましたがあんまり身になってません。MATLABはグラフを作るのには便利で使い続けていたのですが、ライセンスが必要なので「貴重なライセンスをグラフ作るためだけに使うのはな…」という気持ちがあり、あまり使わないようにしてました。
あるとき、同期とランチを食べているときにそういった話をしたところ、「Pythonでいいだろw」という貴重なアドバイスを頂きまして、そういうのもあるのかと思って使い始めました。Pythonとの出会いでした。
ちなみにPythonにはmatplotlibという作図ライブラリがあり、matと付いていることからも想像できるように、MATLABの作図方法とかなり近い使用感となっています。
以前(もう2年近く前になりますが)、ALIS記事の検索サイトを勝手に作ったことがありまして、この時初めてWEBの世界に触れました。この時の使用言語もPythonです。よくわからずやってたので頻繁にサーバ落ちしてました。
「Pythonなら仕事でも使えるし」という気持ちだったのですが、億ラビ君の影響を受けて気がついたら業務外プログラミングのメイン言語がJavaScriptになってました。ここ1~2年で覚えたNode、React、TypeScriptあたりはもう完全に仕事関係ありません。前日発生したエラーが気になりすぎて、業務中に仕事と関係ないQiita記事開いたことも一度や二度じゃありません(懺悔)。
良い影響ももちろんあって、プログラミングに改めて取り組んだことでクラスやらユニットテストやらGitやらを知り、業務で書くコードに若干の成長が見られてます。また、WEBの知識も全くの無駄というわけではなくて、重たい処理の進捗状況をIncoming WebhookでTeams(Slackみたいなやつ)に投げるBotを作ったりできるようになりました。
単なる業務効率改善だけでなく、プログラミングができると仕事の幅が広がるのは間違いないので、今後も少しずつ知識を得ながら、作ったものをALISやTwitterでご報告できればいいなと思います。
MATLAB→FORTRAN→(C++)→Python
→Node→React+TypeScript
以上、私のプログラミング遍歴でした。
画像素材(クレジット)