2017年振り返り - dev.to/jgs
GitHub の設定で Private Repository もカウントするようにしておいたお陰かもしれない。年末なので、今年何をコミットしてきたかを Public Repository の形跡を基にざっと振り返る。
ちょうど昨年末から年初にかけて自由研究で BabylonJS を触っていた。この頃はまだ Yarn を使っていたようなので Node.js は v7 だったっぽい。BabylonJS 自体は結構難しかった。 code:_
webpack.config.js
を試し書きしたりしていた。その際 chunkhash の設定で成果物がどう生成されるかを調べていたみたい。
余談だけど、この年末にかけて 📦 Parcel や microbundle など Webpack 疲れした人々がオルタナティブを作っているようで、Webpack が統一したかと思われていたバンドラ戦国時代はまた戦乱の日々に向かっていくのかもしれない。何度通った轍なんだ...。 個人的には npm が ES modules の CDN みたいな感じになってイイ感じに ES modules で読めるようになると嬉しいかもな〜。
仕事で redux を使っていたが、イロイロ割れ窓を作ってしまった結果大変残念な仕上がりになってしまった経験を踏まえて、reducer が常に immutable の Record を返すようにすれば見通しが良くなるのでは...?と試行していた。結果的には不採用。 この辺は中身があまりないのだけれど、会社でビルド環境を検証していて AWS の Code Build や CircleCI 2.0, Codefresh を試行した。結果的にはインフラチームが自前 Drone 環境を作ってくれたのでそこへ移行していった。ただ、使う分には良かったが運用はとてもつらそうだったので微妙だったかも。
それまでは Docker Hub を使っていたり、GCP の Container Builder を使ったりしていた。CI 自体は Wercker で。そういえば、Wercker が Oracle に買収されたのも今年だったか。
仕事のプロジェクトでコンテナをフル活用していて、1つのリポジトリで用途に応じてコンテナを分けて使っていた。また、1リポジトリ内に関係する複数のプロジェクトをまとめて運用していたので
code:_
というように1リポジトリに複数
code:_
docker-compose.yml
が存在している。
さらに、コンテナの tag と git の commit hash を揃えるようにして、
code:_
docker-compose.yml
では commit hash まで指定するようにしていたため、コンテナのバージョンアップをすると関係する
code:_
docker-compose.yml
を手でまとめて更新しないといけなくて、大変だった。
これを解決するために yaml から yaml を生成する簡単なスクリプトを書いた。yaml から yaml にする途中で json-refs をカマして code:_
$ref
などでファイルを分割できるようにした。また、簡易な正規表現で
code:_
{{FOO}}
のような handlebars っぽいプレースホルダを書くと指定した値に書き換えるようにして、
code:_
container-name:{{CONTAINER_REVISION}}
とコンテナのリビジョンをまとめて更新できるようにした。
他にも
code:_
wercker.yml
や
code:_
drone.yml
などのファイルも管理下に入れていった。
仕事で esa に日報をつけていて、ieyasu という勤怠ツールで勤怠の記録をつけないといけなかったので ieyasu の入力画面でポチッとすると自動的に値が埋まるようにするツールを作った。
プロジェクトの構成をリライトするために、どういう構成がいいかを試していた。View は React.js で、ステートマネージャーをどうするかを基本的に試行していた。この時点ではストアを Immutable.js の Record を使って、Redux の middleware を使って動的に reducer を書き換えてページによって必要な reducer を追加していくようにして各ページをスリムにできるようにした。また、コンポーネントも動的にダウンロードできるようにしたりした。
というような感じで Redux にいろいろ手を加えてがんばったけど、不採用にした。
どういう要件だったか忘れたけど仕事で SVG のサイズを計算して SVG 自体に埋めないといけなかったので image-size というライブラリを試した。 プロジェクトの構造を lerna に寄せると便利かな?とおもって試したけど、OSS のプロジェクトほど恩恵が受けられなくて見送った。 request を Promise でラップするだけのやつ。他にもありそう。 Web まわりのことを書き記された記事などをスクラップしていたリポジトリだったが、6月を境に Scrapbox に本格的に移行してしまったので更新を終了。
Android Chrome にも ES modules が実装されたと聞いてどういうものかと試した。npm のパッケージ群がうまいことバンドルできるようになってほしいのと、ES modules の実装が他のブラウザではまだなのでそこかなあ。
仕事とは関係なく GCP の Vision API を試す必要があったのでお試し。OCR としてはもう一つ、という印象。
Next.js と Heroku を組み合わせて Heroku の dx (主に Pipelines)を試そう!というリポジトリ。immutable なサーバ(BFF みたいな)だと Heroku と親和性が高くてとても便利だった。 最近はサーバ側が必要ないタイプだったら Netlify、サーバ側で何らかが必要だったら Heroku かなあ〜っておもっている。
今年は Redux から MobX に完全に転向した。素の MobX でも十二分に React と相性が良くて便利だし、 mobx-state-tree を採用すると、さらに気持ちよくドメインを書ける。 Scrapbox に年のページを作ってインデックスとして使っていて、そのページをダッと書き出すスクリプト。
mobx-state-tree をバックエンドにブラウザで使える SVG エディタをホビーで作ろうとした(まだ未完)
元々 lpt (Last month Photo from Tumblr の略)というのを作っていて、これは先月リブログしたものを引っ張ってきて Google Photo につっこむというものだった。が、Google Photo に NSFW な画像が混入すると最悪 BAN されると聞いて日和って全部消したのだった。 それから Scrapbox に出会って、sb なら許してくれそう(という雑な希望)を持って作り直した。最初は CLI でブラウザを開く仕様だったが、操作が煩雑だったので Electron でアプリを作ってコントロールできるようにした。
/icons/hr.icon
というあたりが Public になってるコミット群だった。
芝は
https://gyazo.com/2489d55de9c6afaa92776517abbe2bcb
こんな感じ。ちょっと下半期は失速気味だったかも...?
来年もガンバロー。