ここ数年、気になった自分の専門外の技術を少しずつだが試してみる事にしている。
対象は主にウェブ系の技術が中心だ。自分はミドルウェアが専門の領域のためウェブ技術を仕事で使うことはない。ただ、ウェブ系の技術と連携して使ってもらう場合も多いので、色々知っておこうと思って触ってみている。
方針は「自分が手を動かす仕事では使わない」「専門家になろうとしない」あたり。餅は餅屋なので専門家に任せる。ただこんなことがやりたいを伝える時に触ったことがあるかどうかはとても重要になる。
そこでとりあえず色々やってみる、つまりつまみぐいを積極的にやってみている。つまみぐいは長くても 1 週間触ってみるくらい。チュートリアルから毛が生えた程度で終わらせるようにしている。
もちろん、手を動かしてみたらとても楽しくて、専門家を目指そうとするのもよしとする。今のところは残念ながらそんな器用なことはできていないが。
つまみぐいした技術
TypeScript
Babel で ES6 という概念をしって、すごい便利になったものだと実感していたが、さらに Microsoft が色々頑張って型をつけたものがあるらしいということで、触ってみた。
これを触る時は VIM ではなく、色々素敵ということで VSCode もついでに触ってみた。補完がサクサク出るのは便利だった。
TypeScript は型を指定するのとても面白いがもともと型がない世界に型を持ち込むのは大変なんだなと感じた。
型定義ファイルの管理問題が解決したら色々幸せになりそう。
Babel
社員が使っていたのでどんなものか試してみたかったので。ES6 は自分が知っている世界とは別物の JavaScript だった。React 前提で書いたのでとても書きやすいなという印象。
ここからもっと色々進化していくらしいということだけ把握した。
React
これも社員が使っているのを見て面白そうという感じで触ってみた。コンポーネントとい概念や JSX というのがとても新鮮だった。
これがゴリゴリ書けたら色々楽しそうというのと、コンポーネントのパーツ化しているのが再利用できそうな感じが凄く良かった。
今後も少しずつでいいので、覚えていきたい。
React-Native
これも社員が仕事で使っているのを見て。触ってみることにした。
iOS/Android が React でかける。コンポーネントは HTML とは別世界のネイティブな感じ。また色々便利ツールが出ている。
自分はおそらく Electron でできている https://expo.io を試してみた。よくできているなという印象。
Electron
GUI に憧れている自分の本命。Electron + React とかでアプリ作れたら楽しそうだなというのと、社員が詳しいので勉強してみた。
動かしたのは Hello, world までだけど、これはドキュメントを一通り読んでみることにした。凄くよく考えられている。
ただ色々課題はありそう。その辺を頑張って回避していくのだろう。
Flow
社員が使っていたのと OCaml で書かれているということで Bable や React と組み合わせてちょっと触ってみたのと、ドキュメントや資料を読み漁った。
部分部分に型定義を持ち込めるというのと、いつでも始められていつでもやめられるという仕組みはとても良さそう。特に必要な部分位だけは GUI と相性が良さそうだなと思った。
Webpack
Babel を触るにあたって、よくわかってなかったがググって色々情報がでてきたので、ネットに転がっていたのをそのまま使ってみた。
ホットリローディングはなんとまぁという印象。Django で体験していた世界ではあったがこれは便利。
また色々連携してビルドしたりチェックしたりしてくれるのも良くできていた。ただ変化が早いらしくしんどそう。
ESLint
Lint 好きとしては試さざるを得ないということで。Babel などと一緒にさわってみた。よくできすぎているのとプラグインが多すぎて大変。
ただ、仕組みはシンプルだしバージョンアップも頻繁。デファクトな理由がよくわかった。
色々まとまっている prettier といのを後から教えてもらったが触っていない。
k6
負荷試験を考えるのは大好きなので触ってみた。良く出来てるしよく考えられてる。golang やら docker やらで始めるのがすぐなのも良い。
今後デファクトになりそうということで、触れる機会は増やしていく予定。
GAE/Go
GAE/Python ははるか昔に触っていたが、Golang バージョンは初めて。Golang をさわるならせっかくだしウェブもということで触ってみたが、ちょっと覚えるコストが高かった。
色々独特な世界が多いのはわかっていたが、ちょっと苦手。ただ覚えて使いこなすと楽しそうだな、という印象。
Go
時代は Go ということで、お勉強がてらチュートリアルやったりツアーやったり。あとは GAE で遊んでみたり、Echo というウェブフレームワークさわってみたり。
ORM がぐっとくるのがなかった。当面は Django/Python で十分かなという印象。性能が必要なウェブアプリは自分が作りたいうちに入っていない。
OCaml
CTO が OCaml ハカーなので、せっかくだしということで触ってみたが、エコシステムが自分にはあっていないのと、作りたいものがなにかあるわけではない、さらには言語の特性を活かすスキルをもっていないので、断念。
Dropbox API
理想の API 設計を求めてたどり着いたのは Dropbox でした、的な感じで。よく考えられている API で、色々参考にしたい。
Dropbox API v2 仕様まとめ 作ったりした。
Grommet
React を勉強していた時に UI コンポーネントフレームワークを探したら見つけた。HPE が作っているらしく、いろいろいいかな?とおもったがどうにも使いづらかったので、まとめて終了。
Material UI
Grommet の次にさわってぐっときたので。よくできてるし React の JSX でサクサク追加できるのも良い。素晴らしい。
色々もっとパーツが欲しくなるのはしょうがないのか。
PyPy
Python はもうほぼ触らないのだけれど、PyPy がどのくらい早いのか位走っておこうということで、触ってみた。
PyPy コトハジメ にまとめた、実際これがきっかけで仕事で使ったりした。
Ansible
周りに詳しい人がいたのと、実際案件で楽をしたかったのでちょろちょろと。ただ自分で書くより他人に書かせるほうが楽なことに気付いてからは触っていない。
それにしても、ここまで流行るとは思ってなかった。
OpenResty
Nginx 大好きなので、色々前処理とか後処理が Nginx でできればなとおもって、OpenResty を触ったりしてみた。Lua の書きやすさをしったのもこれで。
HTTP レイヤーを Lua でサクサク書き換えたりできるのは本当に良いし、よく出来てる。仕事でも使ったりしているが、自分で書くことはもうなくて、社員におまかせ。
Django
仕事で社員にこんなのが欲しいという依頼をするためにちょろちょろプロトのプロトを作る程度。実際にプロダクションを作ったのははるか昔。最新のバージョンも追いきれていないが、これだけはなんとなく追いかけるようにしている。
Sentry
エラートラッカーとう概念は知ってたが使ったことがなかったので。ウェブアプリのエラー収集システムという理解で良さそう。
OSS なので自前で気軽に建てられたりすることもあり、お手伝い先で導入されたりもした。
まとめ
実際に「自分が詳しくなったもの」は一切なくて、導入のきっかけとなった程度。ただ React-Natice や Electron は自分で好き勝手に書けたら楽しそうだなとは思った。React も Babel や TypeScript を使ってゴリゴリ書けるのも楽しそう。
少しずつ少しずつ、つまみ食いして理解できる範囲を増やしていきたい。