How IT Works

プログラマーやっています。技術よりも人間学的なところが好きです。

最近取り組んできたこと(2018年4月~8月)

Web周り

表現方法の工夫

 アニメーションへの興味がなぜか沸々とわいてきていたので、そこらへんを追求していました。

SVG

 仮想DOMとSVGを組み合わせれば、独創的なUIがサクサク作れるとどこかで聞いたので、Angularであみだくじを作ってみました。

github.com

 コンポーネント化したりとか、定数の外出しをしたほうがいいんでしょうけど、技術的な実験だったので1ファイル簡潔でさらさら書きました。

 最初はdivと罫線で頑張っていたのですが、線に触れた時のイベントまわりが複雑になりそうだったので、SVGに転換しました。

 line要素とか、直感的にマークアップを書けるのでよかったです。x軸、y軸の計算ロジックは増えたので、そこらへんは多少面倒でしたが。

CSSアニメーション

 ローカルで色々と試していました。あんまり実例は残っていないですが、キーフレームあたりもちゃんと理解したので、ローディングとかは自前で書けそうなレベルです。

 キーフレームとSVGを組み合わせてというのとか、あとはCSSの変数を使ってローディングの%表示をするというのが面白かった記憶があります。

3D

 本を読んで勉強したり、APIのリファレンス、リポジトリを延々と眺めていました。

 ただ、三角関数や頂点の計算などが合って、かなり数学的なにおいがして、手を出せていません。WebGLは直で触っても行けそうな感じはしましたが、three.jsとかのほうが情報量が多そうで悩み中です。

 CSSでも簡単なものならできるらしいですね。

Chrome 拡張

 Slackと連携したり、Amazonへのリンクを飛ばしたり簡単なものを実装しました。

 地味に便利なことができそうと思いつつ、それ以降は触っていません。でも、簡単な割には可能性を感じました。

言語の勉強

Clojure

 core系のAPIと実装を追うところまではやっていました。core.matchの実装が拡張ポイントを押さえていて気持ちいいなぁとか思っていました。

 core.async、core.logicは使い方だけ抑えたところで終了。

 APIとか実装を調査して記事を書こうと思ったのですが、思いのほか皆さん色々紹介してくれていたり、APIリファレンスが詳しかったりしたので、途中で挫折しました。

 とりあえずClojureで書ける大まかな手法は理解できたんじゃないかと思って、ちょっと最近は別居中というかそんな感じです。

いろいろな言語に手を出す

 なぜかいろいろな言語への興味がわいてきたので、手あたり次第に言語の勉強をしています。

 どの言語も一度は勉強していたのですが、疎遠になっていました。Clojureを理解したあたりで、もう一度勉強し直してみるとなぜかすいすい頭に入ってしまって、はまってしまいました。

 Pythonも以前見た時は普通じゃないか?と思っていたのですけど、今見ると色々そろっていてまぁ使いやすいよなぁと思ったり。

 とはいえClojureをまじめに触った時に本当に言語を学ぶときは集中して時間を書けるしかないと学んだので、どこかで絞るだろうと思います。

 最近の流れだとPythonとGoですかね。言語的にはRustとScalaが好きですが、いかんせんそういう用途で書かないので。

 ちなみに、自分は1冊の技術書を1日20ページ以上読めないので、分散しています。こういう読み方が単に好きなんですね。

 勉強方法としては

 あたりですかね。技術書を読んだ後、具体的なリポジトリを探してにらめっこが一番多いパターンな気がします。

今後

 諸事情で趣味よりは技術的にやっていないところを補うことになると思います。

  • GraphQL
  • React/Redux
  • WebSocket
  • WebWorker

 ここらへんと趣味のバランスが難しいですが、どこかでまとめてやらないとつらそうですね。

 言語の勉強が楽しすぎて実用性より構文を眺めてしまうので、ちょっとそっちは休憩しないとかもです。