株式会社スマレジの開発部でスマレジのサーバサイドを作っています

masaのプログラミング遍歴

こんにちは!株式会社スマレジ 、開発部のmasaです。

また更新が空いてしまい申し訳ないです汗 ここ最近恐ろしく忙しくて、自分の開発の時間がなかなか取れず。。。

というわけではないのですが、NestJSの開発のお話から外れて、masaのプログラミング覚え始めから今に至るまでのお話とかしてみようかと思います。

プログラミングを始めたのは大学1年生

masaが初めて触れたプログラミング言語C++でした。触れるきっかけになったのは大学の講義です。 以前教育学部卒みたいなお話をしたかもしれないですが、masaは工学部と教育学部の両方を並行して履修していたんです。

動機は結構不純で、「先生だけだと、仕事が嫌になった時に辛いから、先生とは180度違うこともできるようにしておきたい」というものでした笑。 当時から、モンスターペアレントがあーだとか、教師のメンタルヘルス的な話はいっぱいあったのであまり教師という仕事に1年生の時からあまり期待していなかったんです。

じゃあなんで教育学部なんだよって突っ込まれそうですが、理由は教員免許が取りやすいからで、なんで教師に期待してないのに免許が欲しいんだっていうのは、「潰しが効くから」ってくらいのものでした。リーマンショックと震災の直後にmasaは大学生になってたんで、「何がしたい」よりも「生きる術」を身につけるために大学に入ったっていうニュアンスが強かったんですよね。(実家も食うに困るほどではないですが、裕福ではなかったので)

大学の講義でいわゆる制御構文の基礎をC++で習って、実習で課題のプログラムを作って・・・みたいな感じでした。情報系の学生あるあるじゃないかな。プログラミングは通期であって、後期になってポインタとデータ構造やアルゴリズムが入ってきて「わかんねぇぇぇぇぇ」って言いながら友達と毎夜計算機室で唸ってました笑。なので年間でも3000行も書いてなかったと思います。

ちなみに計算機室のOSはRedHatだったので、linuxのコマンドの基本とかもここで覚えています。

独学で初めて学んだのがJavaScript

1年の前期が終わって、C++以外の言語にも興味が出てきて、そこで選んだのがJavaScriptでした。 なんでJSなのかというと、無料のエディタとブラウザがあれば開発できるから。当時はLinuxを自力で自分のパソコンに入れるほどの技術力と経済力(パソコン1台しかなく、それでレポートとかもやるのでWindowsは1台必要だった)がなかったので、Windowsで気軽に開発できるのが魅力だったんです。

そこで初めて、「動的型付け」言語に触れてそのいいところと悪いところをなんとなく書きながら感じていました。 ちなみに勉強した本は↓

https://www.amazon.co.jp/dp/B01LYO6C1N/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

この本の良い悪いは微妙なところ(当時の版はプログラミング初心者にはちょっと難しい表現が多かった)ですが、リテラルについて丁寧に説明があったので、内部的にデータ型を持っていることと、それを「いい感じに」整理してくれることはわりとスッと入ってきました。

JQueryの触りくらいまではここで勉強しました。ただ、個人でちょっと動かすだけだとjQueryのありがたみがわからない部分があって、バニラで書いていることが多かったですね。ただ根っこになるDOMの考え方とかは面白くて、div領域の色を変えたり、ドラックドロップしたりして遊んでいたのは覚えています。

3年の講義でSQLとC

データベース論の授業でpostgreSQLを触ったのが僕のSQLの始まりでした。 ここで学んだことは結構効いてきているのが最近感じます。

あと、C言語もここで初めて触れました。触れたきっかけは理論物理の授業でシミュレーション課題などがあって、 C言語運動方程式を時間発展させてグラフに描画する、みたいなことをやっていました。大学で物理やった人あるあるかな・・・? 地味にMakefileとかもここで教わりました。

4年生〜院生でPHPPerl

4年生になって、卒業研究をするようになって初めてPHPPerlに触れました。 以前のブログで取り上げたBM25を使って、大学のシラバスを相互に類似度をスコアで出して、 それを運動モデルのパラメータに落とし込んで可視化する、みたいなことをやってました。この時の計算にPerl, Webサービスとして作成したので、サーバの処理はPHP, グラフの描画はJSでやっていました。

こう書くと色々やってんなって感じですが、フレームワークも知らない、オブジェクト指向もおぼつかないときにゴリゴリ描いたものなので、まあスパゲッティコードになりました。

性質は違いますが、院生の時もPHPを使ってWebサービスを作っていました。(後Node.jsもちょっと触っていました)

就職して、Java,VB,COBOLに触れる

一者目が大きなSIerで、保守しているサービスも昭和の頃から続いているようなものも多く、そのメンテのためにCOBOLVBなどを研修で教わりました。ただ、この辺りはほぼ使わない(実装することが少ない会社だったので)のでほとんど忘れました。

スマレジ に就職してPHPガッツリ、VueとかTypeScriptとかAltJSにも触れる。

スマレジ に来てからは独習でPythonとかGoとかは触っていますが、お仕事ではPHPSQLがほとんどです。 同じプロダクトをメンテするので、使う言語も自然と一つに定まります。

あと、フロントエンドエンジニアさんの代わりにフロントをいじることもあります。そういう意味ではフロントの方が技術の勉強をすることは多かったかもです。。。(プログラムの組み方とか、バグの取り方とか、そういった実践的な部分はPHPですが)

最後に

こう振り返ってみると、色々と触ってきているんだなと思うんですが、やっぱり「一つの言語をしっかりじっくり使っていく」のが一番だなというのは感じます。 ただ、これからプログラミングを始める方は、(案件の都合でPHPとかも必要だとは思うんですが)基本静的型づけ言語にしていたほうがいいかなと思います。。。仕事で使っているので思うんですが、やっぱり動的言語はメンテが大変なことが多いかと思います。。。(チェック内容も増えるし)