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

Thanks Driven Life

日々是感謝

Pokemon-Emacs 〜あなたが Emacs で開いているファイルに潜んでいるポケモン〜

emacs

TL;DR

f:id:gongoZ:20160715135904p:plain

https://github.com/gongo/pokemon-emacs

経緯

最近は Pokemon Go が流行っているようで、正式サービス開始を待ち望まれているようです。

『Pokémon GO』は、位置情報を活用することにより、現実世界そのものを舞台として、ポケモンを捕まえたり、交換したり、バトルしたりするといった体験をすることのできるゲームです。 このゲームはモニターの中だけで完結せず、プレイヤーは実際に家の外に出てポケモンを探したり、他のプレイヤーと出会ったりしながら楽しむことができます。

面白そうですね。海外でも既にユーザが爆発的に増えており、スマホ片手に街をうろうろする様子などを画像や動画でも目にします。

さて、日本は夏まっさかりであり、暑い日が続いています。そんな中

「私もポケモン探しにいきたいけどまだサービス開始してないし、 そもそも外に出たくない…

という Emacs 使いも多いと思います。

でもよく考えてみてください。ポケモンは何も外だけに居るわけじゃないんです。 昔はゲームボーイにいました。じゃあ Emacs にも居るかもしれないですよね。

Pokemon-Emacs とは

https://github.com/gongo/pokemon-emacs

Emacs のマイナーモードの一つです。効果としては「今開いているファイル名の絶対パス(もしくはバッファ名)で一意に決まるポケモン名を表示する」だけです。

とりあえずいろいろがんばってインストールしてもらったあと

M-x pokemon-emacs-mode

を実行すると、(おそらく)ファイル名の横あたりに、下図っぽい感じでポケモン名が表示されます。

f:id:gongoZ:20160715133107p:plain

この場合は ナッシー が選ばれました。

つまり /Users/gongo/src/github.com/gongo/pokemon-emacs/README.md にはナッシーが潜んでいる。豆知識です。

ちなみに *scratch* にはナゾノクサが居ます。多分。

実装についてちょっとだけ

特に難しいことはしてませんが

  1. ファイル名、もしくはバッファ名を seed として乱数をゲット
    • なのでどの環境でもファイル名が同じ = 同じポケモンが出てくる。はず。
    • (もちろんポケモン一覧 pokemon--monsters が変化したら変わりますが…)
  2. ポケモン一覧から↑の乱数を index としてポケモンをゲット

これだけです。

少し前に Pokemon-Go におけるポケモン出現率*1 みたいな画像を見たので、出現率に併せて「出やすいポケモン」「出にくいポケモン」みたいな実装をしてたんですが、 あの画像自体デマだったみたいなコメントもあったので、まあいいかってことでとりあえず愚直にリストから取るようにしました。

あとはポケモン一覧はとりあえず初代の 151 匹*2をチョイスしました。他のシリーズ追加すれば勝手に出てくるとおもいます

まとめ

/path/to/fooピカチュウが潜んでいたぞ!!」 「ミュウが見つからねえ!!」

みたいな楽しみ方で、エディタ生活に華を添えてください。ポケモン大好き!!