読者です 読者をやめる 読者になる 読者になる

隙あらば寝る

うぇぶのかいしゃではたらくえんじにあがかいています

dockerコンテナ名の由来になったハッカーを調べる

dockerのコンテナ名って面白いなと思って調べていたら、これは著名なハッカーを元ネタにしてgenerateしているらしい。

Dockerコンテナのおもしろい名前 | SOTA

こちらで詳細に解説されていた、なるほど。

namesgeneratorパッケージを眺めていると、ソースコードにコメントでハッカー情報が記載されていた。

たとえばこんな感じ。

この情報を人名と一緒に取れたら面白いかな、でもコメントなのでしょうがないかと思っていたが、

最近たまに目にするastパッケージを使えばとれるのではないか?と思い試してみた。

で、完成したのが以下。

GitHub - yoru9zine/hacker_by_docker

ざっくり動作を紹介すると、以下のようになる。

$ go get github.com/docker/docker/pkg/namesgenerator # namesgenerator パッケージのソースが必要
$ go get github.com/yoru9zine/hacker_by_docker # このツールをインストール
$ hacker_by_docker -l  # 一覧表示
albattani
allen
almeida
...

$ hacker_by_docker albattani # 名前を指定してコメントを表示
Muhammad ibn Jābir al-Ḥarrānī al-Battānī was a founding father of astronomy. https://en.wikipedia.org/wiki/Mu%E1%B8%A5ammad_ibn_J%C4%81bir_al-%E1%B8%A4arr%C4%81n%C4%AB_al-Batt%C4%81n%C4%AB

つまり人名をもとに対象のコメント行を取ってきて出せる。

astの紹介は見かけるが、単純にast自体の理解があまりできておらずイメージが沸かなかったのと、

あまり試す対象がなかったのでいまいち馴染みがなかったが、実際書いてみるとなるほどこういうものかという感覚を掴めた。

変数や関数の定義やコメントが何行目にあるのかといった情報や、変数/関数の名前得られるのはなかなか面白い。

もうちょっと構文に踏み込んで解析等をすると世界が広がると思うが、

単純に何が何行目に存在するのかをデータとして取得できるだけでも色々使いみちがあるのではないかと感じた。