「Vim で Perl ソースコード上でパッケージ名の上にカーソルがあるときに gf するとそのファイルを開くんだけど、……」という話が出て、あ、それ Emacs でもやりたいと思って調べて設定した。
最初は FFAP の設定。実は今まで知らなかったのだけれど ファイル名などをポイントしている時に Cx C-f するとそのファイル名を guess してくれるl FFAP というのが標準で入ってた。
(ffap-bindings)
で有効になる。
これでファイル名は OK。Perl のパッケージ名からファイル名を guess してもらうには ffap-perl-module.el を使う。
上記から ffap-perl-module.el を取ってきて load-path の通っているところに置く。で以下を設定に追加。
(eval-after-load "ffap" '(require 'ffap-perl-module))
これで Perl ソースコード中のパッケージ名が書かれているところにカーソルがある時に C-x C-f するとそのモジュールファイル名を minibuffer にデフォルトで出してくれるようになる。捗る。
なおデフォルトだと system Perl の @INC にあるものを探しにいくようになっているので、perlbrew 下だったり Carton で入れた local/ 下だったり開発中のモジュールだったりを見つけられるようにするには ffap-perl-module-path を設定しておく必要がある。
(setq ffap-perl-module-path '("/path1/to/lib" "/path2/to/lib"))
Vim の jellybeans カラースキームにインスパイアされて作られたという Emacs 24 のカスタムテーマ Ujelly を入れてみた。
custom-theme-directory を設定するほどでもないので、require できるところに ujelly-theme.pl を配置しておいて、
(if window-system (when (>= emacs-major-version 24) (when (require 'ujelly-theme) (load-theme 'ujelly t))))
としてロードするようにした(ujelly-theme.el を読むとその中で自身のあるディレクトリを custom-theme-load-path に追加してくれる)。
今までは Solarized の dark を使っていたんだけれど、ディスプレイが暗い時(省電力のためノート PC の液晶モニタを暗くしている時)に見づらいなと思っていたのでもうちょっとハッキリした感じのにしようかなと。
Ujelly テーマでソースコードを開いてみたら、くっきりメリハリがあって見やすくテンションが上がった。いい感じ! (スクリーンキャプチャは Perl 5.18.1 の Data::Dumper のソースコードの一部)。
ただ実際に入れてみると Solarized は目に優しいなとあらためて実感して良さを再認識することにもなった。Solarized も捨て難いね。
今日も朝から YAPC::Asia Tokyo 2015 の2日目です。まずは一杯の無限オレンジジュースからスタート。最初はトラックCから。 C の部屋に入れたのはこれが初めてです。なるほど狭め。
言語の特性にあわせて様々なプログラミング言語を活用しているというトーク。サーバサイドで使われているということでちょっと Scala が気になりますが、やはりここでもコンパイルが遅いという話が出ていました。
Go は小さなシングルバイナリを作れるというところがやはり大きな利点。あとはやっぱり Perl はビルドなどのためのツールを作るのに便利だよねという話でした。
Ricardo Signes 氏のトークを聞くのは YAPC::Asia Tokyo 2013 1日目の時(記事)以来です。
前回同様 Perl の機能追加・削除についての話が中心。直観に反するような挙動が修正されるというところは言語としての完成度があがって良いなと。一方、さらに experimental として追加される文法は、ますます変態的になっていくなという印象もありました。
今日は一人でぶらりとTFTビルへ。
リファクタリングを行う理由の中で「Developer Education」という話があって、理解のためにリファクタリングをしてもらうのも良いと言っていて、ああそうだよなと思いました。リファクタリングの素養はあるけれども、チームのコードは知らないという状態の時にはいいなと思います。
あとは、基本的には Martin Fowler の「リファクタリング」を読んでいれば OK な感じです。
ちょっとうつらうつらしてました。あと「カレのヒゲ」はマイクにこすれるので通訳的に要注意のようでした。
Perl 6 における 並列・並行・非同期処理の話。 Perl 6 では言語レベルでこのあたりのサポートがしっかり入ってくるという印象でした。昨日聞いたトークといい、やはり Perl 6 が気になってきました。
Go の各種ツールを使って時間やメモリを消費している部分を見つけてどんどん削っていく様子をライブで実演してくれました。なるほど、ちょっとしたコードでも工夫すると劇的に最適化できるみたいです。
実演中アセンブラコードをチェックしているところや、データが 1 word から 3 words で管理されているという説明などをみて、ああやっぱり Go は C/C++ 的なマシンへの近さやコンパクトさがあるよなとあらためて感じました。
YAPC::Asia Tokyo 最後のトーク(になるかもしれない)となった LT は Kuniwak (@orga_chem) 氏の「Vim script性的解析の光と闇」でした。
CONBU さんが LT の時間内で設営・撤収デモまで実演していて、その素早さに驚嘆でした。まさに神業のレベルです。会期中お世話になりました。
今年はキーノートが無いので LT が終わるとクロージングです。
今年の参加者はなんと約2,130人。今の形での開催は最後と言われている YAPC::Asia は今後どうなっていくのでしょうか。 YAPC::Asia Tokyo 2015 は「The End.」のスライドで幕を閉じました。皆さんお疲れさまでした。
去年の YAPC::Asia Tokyo 2014 では Go 言語の勢いを感じ、その後ちょっとした規模ですが業務ツール開発に使ってみたりしました。
YAPC::Asia Tokyo 2015 では近年になく Perl のトークを見た気がします。しかも今回は Perl 6 のコードををよく見た気がするのは気のせいでしょうか。今回はこれを機に Perl 6 にチャレンジしていきたいと思います。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。