2017年振り返り
仕事
基本的にはAngularを使って、古いシステムを入れ替えるという計画があり、その設計・技術検証あたりをずっとやっていました。
今まではPGとしての活動のみでしたが、要件定義やDB設計、画面設計の一部も任せてもらいました。チームの人数は4人で、そのうち2人は初めてWebシステムを作るというので、大体のことは自分ともう1人のリーダーでやりました。
あとは4か月間新入社員の教育を担当し、業務をやりながら教えていました。
仕事で印象に残ったところ
新入社員の教育
大体のところは記事に書いた通りです。
新入社員の研修を担当して感じたこと - How IT Works
新しい技術を導入して会社の技術レベルを引き上げたいというところと、自分で考えられる人材を育てたいという2つの試みを目的で設計しました。
前者は達成できましたが、後者はどうにもできませんでした。図解の方法を教えたり、極力ヒントを教えて答えを教えないようにしましたが、効果があったようには思えません。
技術を覚える勉強的なアプローチがダメだったのかなという気はしています。毎日新しい技術が出てくるので、効率よく作業を展開するというエンジニアリングは難しかったと思います。
実務は繰り返しのパターンが多いので、ある程度冗長にカリキュラムを組んで工夫させるのがよかったのかもしれません。
また、負荷をかけすぎて、余裕というものがなく、技術的な工夫より納期に追われていたのかなという考えもあります。
どちらにせよ、新しい技術を覚えることは簡単だとわかったので、もっと考える力を軽視せず、そこらへんをきちんと設計すべきだったと反省しています。
いいエンジニアは育つものなのか、育てるものなのかそういうところはいまだに自分の中で分かっていませんが。。
最近のWeb技術について
AngularでSPAでシステムを組みましたが、個人的には業務システムでは過剰だなという感想を持ちました。
UIにもよりますが、単純なCRUD系のシステムであれば、APIを挟むことによるセキュリティ維持にかかるコスト、レイヤーをまたぐことによる二重メンテナンスによるコストを払いきれない感じがしました。
これを世間一般のスタンダートとすることが正しいのか、という気持ちはいまだに捨てきれていません。
思想的に言うと、コンポーネントを関数的に表現するという考え方は気に入りました。扱いやすいです。Fluxは入れてませんが、それに近いことができるのは気持ちいいです。
CSSModule的なものも素敵で、あぁこれが欲しいものだったという感じがでていてよかったです。
ただ、CSSに関しては何というか、コンポーネント間での相互作用みたいものがまだ残っていて、入力に対する出力という純粋さがないので、少々気持ち悪さがありますが。。
Windows Formsとか、Swingくらいの適当さでデザインが組める何かがほしいです。
RxJSは最初はsubscribeするだけでしたが、途中からいろいろ組み合わせてすっきりと書けるようになりました。連続したイベントを表現する分には楽でよいです。
ただ、途中から分岐が増えるとパズルみたいになって、可読性が低くなるきらいがありました。ルール作りなしに自由に使っていい代物ではない感じがしますね。
趣味
前半はLinuxとVimを触っていました。後半はLispを触っていました。
Vim
Linuxを1か月勉強してみた - How IT Works
Linuxは勉強したのはいいのですが、メインマシンではないので、そこまで恩恵はなかったです。コマンドラインに慣れたというところくらいですね。
Vimの恩恵は言葉で書けないくらいで、劇的な変化でした。
パターンが多い業務システム開発では、コピーと改変でものを作るので、コーディングの効率が大きく変わりました。
困るのはペアプログラミングに近いことをやるときぐらいです。
Vimは一度覚えて終わりというよりは、何度もやらないと覚えきれないです。最近、また「実践Vim入門」を読み始めました。4週目くらいですが、いつ読んでも気づきがあるいい本です。
Lisp
自分はプログラミング言語の構文を眺めるのが趣味みたいなところがあるのですが、Lispは特別でした。
特に印象に残ったのは「Let Over Lambda」です。
Lispが遅いならマクロで早くすればいいだけとか、マクロを作るマクロを定義するとか、想像をどんどん超えたマクロを出してくるのが衝撃でした。
これをみてLispを生涯のパートナーにしたいと思って、惚れこんでしまいました。
といいながら、途中Clojureに浮気していました。
こちらはモダンなLispという感じで、Lispの過激な機能を削って安定版にしたような印象です。また関数型に傾倒していて、状態にかなり厳しい感じです。
環境周りがかなり整備されているうえに、欲しいライブラリやAPIは大体あるので単にLispで遊ぶならこちらはだいぶんいいなぁと思えました。
実用的な何かを作るとしたら、第一の選択肢はこっちを選ぶでしょうね。
あとは、情熱的なPGの方が多く、刺激を受けました。どこにでも顔を出されるので、少々怖いなと思うところもありましたけど。。
そういうところでClojureも気に入りましたが、自由こそプログラマに与えられた最良の道具だと思うので、Common Lispでもう少し頑張ろうとは思っています。
来年やりたいこと
Emacs
CとMの使い分けが面倒で、途中で挫折していましたが、Emacs Lispが魅力的なので来年はEmacsに傾倒したいです。
どうにもSpace Emacsというそこらへんの解決策を含んだものもあるらしいので、それも含めてEmacsに深く入り込みたいと思っています。
エディタがカスタマイズできれば、自分用の作業のほとんどが効率化できるだろうというところで夢があります。
Common Lisp
CLOSとか、リーダーマクロをいじくったりというところはできていないので、そこらへんを掘り下げたいなと思っています。
最終的にはDSLみたいなものを作るところがゴールのような気がしています。
思いついたこと
基本的に自分の興味は適当です。今は3D表現、Processingあたりが面白そうと感じていますが、やるかどうかはわからないです。
とりあえず、面白そうと思えば飛びつけばいいと思っているので、LispとEmacsをベースに好きなことに浸っている一年になるように願っています。