kitak blog

Kみたいなエンジニアになりたいブログ

Create Your Own Programming Language を読んだ

Create Your Own Programming Language を読んだ。

どこかで、CoffeeScript の作者はこの本がきっかけで CoffeeScript を作った、と紹介されていて気になっていた。

この本では、言語処理系について学びながら、PythonRuby を足して2で割ったような Awesome という言語を Ruby で実装する(最後の章では mio という Io のサブセットを実装する)。 目次を見ると、たったの100ページに字句解析、構文解析、ランタイム、インタプリタ仮想マシン、ネイティブコンパイルといったプログラミング言語をつくるために必要な知識・技術が詰まっていて、非常に濃い。

学生のときに言語処理系の講義をとったのだけど、半期で、全体の概要を学んで、lex とか yacc をちょっと使ってみておしまい、というかんじで実際に手を動かすことも少なく、言語処理系に対する理解がぼんやりしたものになっていた。
社会人になってみて、「言語処理系を作ることで得られるものは多い」と色々な人が本やインタビューで述べているし、個人的な実用に目を向ければ、JavaScript 関係のツールの多くが何かの言語を別の言語に変換したり(CoffeeScript, Babel, TypeScript, ...)、AST を扱っている(ESLint, unassert, power-assert, ...)。
ということで、ここらでひとつ学び直すか、という気持ちになった。

簡単な英語で書かれているのと、ソースコードが多いので、1章、大体1~2時間で読める(サンプルコードの写経・デバッグ含む)。自分の場合は、帰宅途中にカフェに寄って1日1章を目安にちょっとずつ進めて、大体1週間で読み切った。

読んだ感想として、コンパイルのフェーズが具体的に何をおこなっているか、各フェーズで世の中で利用されているツール(例えば字句解析であれば lex とか)の紹介、仮想マシンの必要性などを丁寧かつ細部に立ち入り過ぎずに解説している良書だと感じた。
たしかにこれ一冊読めば、(最適化や効率の良い実装は置いておいて)自分のプログラミング言語をなんとか作ることができる能力が身につくし、次のステップとして、これよりも固い・厚い本を読むための足がかりになりそう。

作るプログラミング言語の仕様や実装は Ruby自身のそれに影響を受けているので、事前に メタプログラミングRuby に書かれているぐらいの Ruby の知識があると読みやすいのではないかと感じた。

VISA デビットカードを作った

自分のクレジットカードを使うことに対する感覚が少し麻痺している気がするのと、月単位での買い物の内容を分析しやすくするために VISA デビットカードを作って使うことにした。

個人的に、インターネットで買い物ができるのであれば、特別クレジットカードでなければいけない理由はない(還元とかあるけど、お金の出入りを管理して、無駄遣いを減らすほうが大事だと判断した)。
今まで使っていたクレジットカードは、分割払いにしたい大きい額の買い物(例えば、歯の治療とか...)だけに使うことにした。

応天の門 を読んだ

読んだ。

応天の門 1巻 (バンチコミックス)

応天の門 1巻 (バンチコミックス)

在原業平菅原道真のコンビが怪事件を解決していくサスペンス物。在原業平が持ってきた事件を菅原道真がロジカルに解決する、平安朝が舞台の探偵ガリレオといったところだろうか。

高専の古典の講義で伊勢物語をやったときに先生が、在原業平を「平安一のプレイボーイ」と解説していたのを思い出した。それぐらい在原業平が女好きに描かれている。

年末年始の休暇中に読んだ本

炬燵に入り、みかんを摘みながら読んだ。

サピエンス全史(上)文明の構造と人類の幸福

サピエンス全史(上)文明の構造と人類の幸福

サピエンス全史(下)文明の構造と人類の幸福

サピエンス全史(下)文明の構造と人類の幸福

人類がなぜ繁栄したかを壮大なスケールで語る一冊。集団で虚構・神話・空想を信じることができるようになった認知革命に始まり、農業、書記体系、貨幣、宗教、科学と話が進んでいく。
この本の面白さは、自分の先入観や常識が覆され、違った視点で物事を眺める体験ができることにある。自分が当たり前のように善だと信じていたもの、例えば、自由主義や資本主義が、あくまでひとつの虚構に過ぎないものだと認識させられる。

また、一般的に良かったこととして記述されがちな狩猟から農耕への移行を、人類にとっては実はそれほど利はなく、小麦が種の繁栄のために逆に人類を支配した、という主張も面白かった。

若者をターゲットにお金との付き合い方が書かれている本。単純にお金の話だけでなく、少子高齢化や、それに伴う公的年金の負担増といったテレビが煽る先行きの暗い話を数字と事実で分析する過程を通して、メディア・リテラシーの重要性も説く。

量子コンピュータが人工知能を加速する

量子コンピュータが人工知能を加速する

量子コンピューターの方式の一つである量子アニーリング法とその実現方法、さらにはディープラーニングにどのように応用されるかを噛み砕いて説明している。

TypeScript で書いている Node.js サーバーをファイルが変更されたときに自動で再起動したい

題の通り。

TypeScript に慣れるために、TypeScript でちょっとした Node.js サーバーを書いていたときのメモ。

GitHub - TypeStrong/ts-node: TypeScript execution environment for node で TypeScript のコードを直接 Node.js で動かすことができるのだけど、.ts ファイルの変更の度にプロセスを落として、またコマンドを実行して... というのが面倒だったので、自動で再起動させる方法を調べた。

ts-node の Issue を眺めたかんじだと、onchange という npm でインストールできるコマンドを使って、ファイルの変更を検知して再起動すればよいのではとのこと。以下のような npm scripts のタスクを定義して、呼び出すようにする。

  "scripts": {
    "server:dev": "onchange server.ts -i -v -- ts-node server.ts"
  },

ふしぎの国のバード を読んだ

読んだ。

明治初期にイギリス人の探検家 イザベラ・バード が日本を探検した際の実話を基に書かれた漫画。当時の日本の風景や庶民の生活が描かれていて面白い。明治初期は、300年続いた鎖国が終わり、日本がグローバリゼーションの影響を著しく受けた時期と言える。その時期に失われた何かを知るきっかけとなる作品ではないだろうか。

2016年のふりかえり

今年も残すところあと少し。今年のふりかえりです。

去年のふりかえりはこれです。 2015年のふりかえり - kitak.blog

仕事

去年に続き、ウェブフロントエンド中心に JavaScript のコーディングなど。サービスや大きめの機能をいくつかリリースできたのと、その中で大量のオブジェクトやトラフィックを扱う案件をこなすことができて、ひとつ自信に繋がったような気がします。自己否定がちょい強めなので、ひとつひとつ形にしていって肯定感を高めていきたいところ。

前半、Java や Spring Boot ( Spring MVC ) の勉強をしていて、正直仕事や趣味でそれらをがっつり書くことはなかったんですが、上半期の仕事でデバッグをするときに抵抗なくサーバーサイドのコードを読んで、問題特定に役立てることができたので、やっておいてよかったかな、と。

去年も同じことを書いていた気がするんですが、やることを限定しすぎているような気がするので、そこは来年の課題。

アウトプット

発表

Vue.js meetup で発表しました。 Vue.js Tokyo v-meetup="#1"でLTしてきた、と発表からカットしたMVVMのあれこれ - kitak.blog
これ一回だけだったので、うーむ...というかんじです。スライドにまとめるのは自分自身の理解のためにも良いので、居酒屋で酒を呑みながらカジュアルに発表するようなのを定期的にやりたいね、と同じことを考えている人と話していたり。

執筆

gihyo.jp で Vue.js の入門記事を執筆しました。執筆の機会をいただきありがとうございました。

gihyo.jp

ブログ

特に明確な目標があったわけではないんですが、週に1回はブログを更新するように意識していました。気分が乗らないときは、とりあえず続けばいいやぐらいの気持ちで漫画やドキュメンタリーの感想を書いたり。
書いた記事のうち、何個かホットエントリ入りして、たくさんの人に読んでもらえたのがうれしかったです。

生活

風邪をひくことが多い一年でした。下半期は、一ヶ月半に一回くらいのペースで風邪をひいていたように思います。運動不足で、体重が増えているのもありますし、来年はもっと健康に気を使いたい。 外は寒いですが、とりあえずウォーキングから始めて、引っ越したら近くのジムに通おうかな、と思っていたり。

上でも書きましたが、来年、会社のオフィスが新宿に移転するので、それに合わせて引っ越す予定です。今のところ、祐天寺、中目黒、新宿御苑、代々木あたりを考えています。

去年に引き続き、浮いた話は全く無いので、そこは来年も引き続きがんばりましょう。