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

VimConf2016に参加しました

2016/11/5(土)に株式会社ミクシィで開催されたVimConf2016に参加してきたので感想レポートを書きました。

ラーメン

今年は、午前中の集まりもあったみたいだけど、前日の終電帰りの疲労により不参加。 今年は運営側でも、発表者でもなく、一参加者として参加したので、かなり気楽に出発し、12:00くらいに会場下についた。 会場についた直後に、thincaさんとryunixさんと一緒に、で すごい煮干ラーメンを食した。

名前の通り煮干がきいてて、こってり系で美味しかった。 thincaさんは、「おにぎり食べちゃったんだよねぇ」と言いつつ、 つけ麺大盛りを頼み、その上スープまで完飲していたので、 ラーメンに対する熱意がすごかった。

一部のVimmerにはVimConfに来たら凪を食べるというのが定番になっているらしい?ので チャンスがあれば食べてみることをおすすめします。

念願の?

会場に着くとVim界の大御所 kaoriyaさん自らが受付で対応されていて、 前々回?くらいのVimConfから面識があったので、少し挨拶をさせていただき 参加者ストラップを頂いたらそこには伝説のアレが…

当時の午前中にTwitterで何人かの方がVimリストバンドの写真を あげられていたので、余っていれば購入しようと考えていたんですが、 まさかの、参加者全員プレゼントなんて!

テンションがあがりすぎてロクなコメントもお礼もできませんでしたが、 ありがとうございました! > kaoriyaさん

家宝にします。

セッション

通常発表からLTに至るまで、Vim界で著名な錚々たるメンツなのは 例年のことなのですが、今年はGoに関連する発表が多く、 特にGo界隈で著名なtenntennさんが発表されに来ていたのが印象的だった。 tenntennさんが講師をされているハンズオンにも一度参加したことがあったので 個人的に楽しみだった。

Vim界隈の人は若干固定化されてきている感じがするので こういう交流が増えていくのは良いなぁと思った。

各界隈でVimをゴリゴリ使っている方はいるはずなので Vimに直接的に関係なくても、少しでも関連があれば 是非発表していただきたいと思った。

各セッションの詳細は既に他の方が書いているので、 気になったところをいくつかピックアップしました。

  • Vim8.0の興味深い機能のいくつかは、vim-jpからの働きによって 入った機能(channel, lambda, etc)であり、改めて、vim-jpすごいなぁと感じた。
  • golang関係の発表が3つもあってgolangの勢いを感じた。
  • golangVimの親和性良い。
  • vim-mode-plus の考察の深さがすごく、感動した。発表中はただただすごいとつぶやいていた。
  • golang速い。nodeもなかなか速い。
  • Vimのhelp翻訳人が足りない問題。参加するとVimの有名人とたくさん知り合いになれて便利そう。

懇親会

懇親会の様子です。

ピザ

寿司

ピザと寿司

ピザと寿司が大量にあり、お酒も出て これで参加費2,000円とはお得以外のなにものでもなかった。

寿司うまいうまい。

懇親会では割と色々な人(といっても知り合いばかりだったのが反省点)と話せてとても満足でした。

以下、酔っていてあまり覚えていないけど、私の懇親会の様子です。

  • haya14busaさんと一緒に、vim-mode-plusのネタを聞きにt9mdさんに突撃するなどした。
  • tsukkeeさんとVim8のjob周りの話、golangVimの相性の話、Vim8以降のVim pluginの話(jobとgolang組み合わせて楽ちんVim programming)などをした。
  • daisuzuさんとdaisuzuさんの職場の方、kaoriyaさん、k-takataさんと職場でのVimの話などをした。
  • aomoriringoさん、ryunixさんとともに寿司行脚をした。
  • aomoriringoさん、ujihisaさん、色々な方とVRの未来について語った。
  • VRはいいぞ

2次会?

会が終わり、何人の方が徹夜カラオケに行くという話になり、開始までに時間が空いたので、 2次会?として、参加者の何人かと渋谷でビックカメラ⇒本屋とブラブラしていました。

と言っても、私は徹夜カラオケ参加は厳しかったのでここで撤収。 徹夜カラオケも盛り上がったようです。 私も行きたかったなぁ…

以下2次会?の様子の写真で締めとします。

終わりに

最近、Vim熱が大分おさまっていてあまり活動できていなかったのですが、 熱い発表ばかりでかなりVim熱が高まったので非常によかったです。

まとめ役のb4b4r07さん、ryunixさん、VimConf2016運営にかかわられた皆さん、 発表された皆さん、参加者の皆さん、会場を貸していただいた 株式会社ミクシィさん、本当にありがとうございました。

またどこかのVim関係の勉強会でお会いしましょう!

Happy Vim Life!

jとkでの移動を矯正するためのVim pluginを作った

vim

本記事はVim Advent Calandar 2015の13日目です。

本来書こうと思っていたネタがあったんですが、若干ネタが大きかったため期間的に厳しく そのネタの内容を検討している時に思いついて作ったVim pluginについてご紹介します。

背景

みなさんはカーソル位置からスクリーン上に見える範囲の特定の行への移動はどのように操作されていますでしょうか?

Vimmerは十人十色なので、様々なやり方があると思います。

例えば

  • 気合でjjjjj・・・kkkkk・・・を使う
  • 5j5kなどを繰り返し実行して距離を詰めた後に最後微調整する
  • (relativenumberオプションを有効にするなどで) 目視で極力一発で目的の行に移動する
  • 様々な縦方向の移動コマンドの中から状況にあった移動コマンドを選択する (/, }, { などなど)
  • (vim-easymotionなどの) 移動系のVim pluginを使う
  • マウスが大好きでマウスを使う

他にも色々あるかと思います。

私は、上記の中で以下を組み合わせてやりたい派です。

  • 様々な縦方向の移動コマンドの中から、状況にあった移動コマンドを選択する
  • 5j5kなどを繰り返し実行して距離を詰めた後に最後微調整する

基本的には、j, k以外のその場に適したコマンドで移動できるところは移動して、 j, k以外の移動コマンドだと手詰まりだったり、面倒だったりした場合には、5j, 5k、 また、j, kで調整するというスタイルです。

効率化という意味ではベストではないかもしれませんが、素Vimでの操作も考えると別に悪くはなさそうです。 ただ、個人的に1点課題に感じているところがありました。

それが以下の部分です。

  • 5j5kなどcount指定で距離を詰めて移動する方

これ、やりたいと思っていますが、実は現状できていません。

じゃあ現状どうやっているかというとこれです。

  • 気合でjjjjj・・・kkkkk・・・を使う

私はOSのキーリピート速度を高速化して、速度的には不都合がないとはいえ、 個人的にはキーリピート速度の高速化は邪道だと思っていますし、 「素Vimでもそれなりのパフォーマンスで操作できる」をモットーで やっている身として、count指定を使えるところは、count指定する べきだし、したほうが効率的だと思うのです。

でも、長年の手癖は早々直せないもの。ということで、これを矯正するために vim-gothrough-jkというVim pluginを作ってみました。

vim-gothrough-jk

vim-gothrough-jkの機能は以下です。

  • j, kを連続で3回以上タイプするとgothroughモードに移行する
  • gothroughモードではj, kをタイプした時の移動幅が5になる。
  • gothroughモードでは 4秒待つか、count指定でj, k移動するか、j, k以外の移動(h, lなど)で通常のj, kに戻る

なお、以下の部分はカスタマイズ可能です(I/Fは変更の可能性があるためここには書きません)

  • どれくらいの間隔(ミリ秒)で連続でタイプしたらgothroughモードに移行するか(現状デフォルトは150ミリ秒)
  • 何回以上タイプしたらgothroughモードに移行するか(現状デフォルトは3回以上)
  • gothroughモード時にj, kで移動する移動幅の変更(現状デフォルトは5)
  • gothroughモードに移行した後、最後にj, kをタイプしてからどれくらいの間隔(ミリ秒)が空いたら通常のj, kに戻るか(現状デフォルトは4000)

以下に動作のスクリーンショットを載せます。

f:id:deris:20151213180358g:plain

3回下に移動した後に、移動幅が5になり、3回上に移動した後に移動幅が5になっていることがわかるかと思います。

わかりやすいように、どれくらいの間隔で連続でタイプしたらgothroughモードに移行するかの値を 大きめにしてやっていますが、実際はj, kを押しっぱなしでないと発動しないくらいでいいかと思います(デフォルトは150ミリ秒)。 環境によってカスタマイズすることを推奨します。

で、このVim pluginの機能でどうやって矯正されることを期待しているのかというと

  • j, kを連続で3回以上タイプするとgothroughモードになるので、count指定のj, kを使わないと近い距離に移動する際に移動しづらくなる。 (例えば、カーソル行から4行下に移動したい場合、jの連続タイプだと途中で移動幅が5に置き換わるので、最初から4jで移動することを意識せざるを得なくなる)
  • 途中から5j, 5kに移行するので、20行下程度でもそれなりに高速で調整できるため、素Vimに戻った時に違和感を感じて、5j, 5kを使いたくなる…(かも)

なお、一般向けに今のデフォルト値にしていますが、移動幅を20くらいにすると、ハードモードになり 矯正もかなり進むのではないかと思っているので、私はしばらくそれで運用してみるつもりです。

類似Vim plugin

vim-hardtime

名前を失念してしまいリンクを貼れず申し訳ないのですが、(Lingr上でryunixさんに教えていただきました。 ありがとうございました。) vim-hardtimeは、j, kを連続で一定回数以上タイプすると、 しばらく(1秒とか)sleepするため、j, kを連続タイプしないよう矯正できます。

Vim pluginの着想は、ここから来た部分が大きいです。

ただ、流石にsleepはやり過ぎだなぁと思って、もう少し有用に使えて、 でも矯正にもなるような機能は無いかなぁと考え、現状の仕様にしました。

vim-accelerated-jk

vim-accelerated-jkj, kでの移動を加速度的に 速くできるVim pluginです。(実際は加速度を計算しているわけではなく、タイプ数に応じて移動幅を増やしています)

最初は似ていると気づかなかったのですが、j, kで、移動幅を変更するという点でかなり似ています。

気づいた時点で、新規にVim pluginを書き起こすか、vim-accelerated-jkの Pull Requestですますか悩んだのですが、用途もやりたいことも(多分)微妙に違うので、新規に書き起こすことにしました。

(もし、気になる機能があったらこれを見た作者のLindanさんが vim-accelerated-jkに輸入してくれるはず…)

まとめ

以上が、j, kでの移動を矯正するためのVim plugin、vim-gothrough-jkの紹介でした。

本題とはそれますが、Vimレベルが上がるのでvimrc読書会に参加することをおすすめします。 私は最近あまり顔を出せていませんが、毎週土曜日23時からやってます。

それではVim Advent Calendar 2015の13日目の記事を終わります。

Happy Vim Life!

Go Conference 2015 Winterに参加しました

golang GoCon

2015/12/6(日)に開催されたGo Conference 2015 Winterに参加してきたので感想レポートを書きました。

「鉄は熱いうちに打て」ということでGoCon終了後、渋谷のカフェにこもって雑に殴り書きしたので、 読みづらかったり誤りがあったりしたらごめんなさい。ご指摘いただけると助かります。

ちなみにLTについては、酔っ払っていてまじめに聞けなかったので感想を省きましたが、 どれも笑いをとっていて酒のツマミには最高のLTばかりでしたということはご報告しておきます。

あと、発表者の方の資料や 当日のtogetterの情報は以下にまとめていただいていてとてもありがたいです。 ありがとうございます。

#gocon 発表者資料一覧 + togetter

発表の感想

x/mobile gaming

gomobileでゲームを作成する過程を、コミットログの差分から順に説明していくスタイルの発表でした。

実際のコードを見せてデモしていくので非常にわかりやすく、英語も聞き取りやすかったです。

gomobileですごい簡単にゲーム作れちゃうんだな〜と思わせるKeynoteでした。

実際はそんなこと無いんだろうけどw

普通にFlappy Gopher面白そうでした。

発表の際に使っていたgitのdiffを表示するツールがめちゃめちゃ便利そうでした。

GoBGP : yet another BGP implementation written in Go!

BGPをgoから操作するGoBGPというツールの紹介でした。

BGPはネットワークのプロトコルで、ググる となんとなくですが、わかるような気がします。

ネットワーク機器は自動化運用について過渡期で、現状自動運用するためにtelnetでexpectでツラいけど、 Whitebox Switch(OSを含むソフトを含まないSwitch)で、cumulus linux, open network linuxなどを入れれば 色々自由度が広がって自動化運用進むよねという話でした。

そして、そんな環境であればGoBGPとか使えれば幸せになれるので、機会があれば どんどん自動化していきましょう的な話でした。

あと、余談ですが、発表者の方のWhitebox Switchの説明がWebに載ってたので、 こちらも合わせてみれば参考になりそうです。

ホワイトボックススイッチとは何か? オープン化がすすむネットワーク機器のハードとソフトの動向(前編)。ホワイトボックススイッチユーザ会 第一回勉強会

Webフレームワーク比較

多種多様な GoのWebフレームワークを比較紹介する内容でした。

はじめのWebフレームワークのリストの数が多くて笑いました。

速さならGin、人気ならMartiniという印象を受けました。

あと、紹介があったkamiの作者の方が質問されたりしていました。

紹介してた速度の単位が nsだったのが、さすがgolang早いな〜と感じました。

TLでは、Martiniはreflection使い過ぎなので、negroniの方が 良さそうという話が上がっていたり、標準のnet/httpでいいでしょという話も上がっていたりしました。

全然関係ないですが、マティーニとネグローニとどちらもお酒の名前なんですね。

そういえば、某mattnさんも net/httpでいいでしょと何度かつぶやいていたような気がします。

私は、net/httpを軽く触った程度なのでよくわかりません。

gomobileでピアノの作り方

お子さんのために、モバイルのピアノアプリを作ったという話でした。

子供が広告タッチしちゃうとかあるあるなので笑いました。

内容についてはgolangの話はあまりなく、音楽(物理?)の話をわかりやすくお話されていて 門外漢でしたがフムフムーと聞いていました。

実戦へのGo導入

初学者向けの内容?だったので、golang歴 1ヶ月に満たない私にとっては、完全に俺得発表でした。

初学者向けのブログのリンクや、便利ツールのリンクなど、便利情報ばかりでした。

エディタはなんでもいいとお話されていて、Vimを使われているとお話されていましたが、 実際Vimgolang書くのは非常に相性が良いと思います(私もVimを使うので)。

vim-goも実際便利です。

GoライブラリAPIの変更を知る

GoのAPI(typeやfuncで外部公開されているもの)で、リビジョン間で変更(シグネチャの変更)があった APIを検知するgompatibleというツールを作成したという内容でした。

実際とても便利そうで、他の言語でもあったらいいのにと感じました。

型や関数のシグネチャを見るので、同じシグネチャで使用する意味が変わってしまったら 現状は対応できないとのことでしたが、これは仕方ないかな。

やるとしたら、変数の名前などの変更時に警告出すくらい?

Goのレガシーコードと戦った話

まず、Goで既にレガシーコードが作られているということに驚きましたw

内容的には、基本golangに限らない話でしたが、「性能が求められているかどうかわからない 箇所でgoroutineを多用する」はgolangならではでやばそうだなぁと感じました。

実コードでエラーを握りつぶすも恐ろしいけど笑った。

ISUCON5でトップスコアを出す方法

ISUCONで、どういう対策を取っていったかという話でしたが、 ここら辺の話は門外漢なので、フムフム〜と聞いていました。

「直前のレガシーコードの作成の主です。」とのしょっぱなのコメントに笑いました

golang が言語の選択で、ベースが早いというのは良いなぁ

Introduce log collector in Go into production

ログ取得のfluentd in-tail部分をfluentd-agent-hydraに置き換えるという話でした。

ここら辺も門外漢なのでフムフム〜と聞いていました。

Introduction to golang.org

golang.orgの様々なページの紹介でした。

日本語版のサイトは情報が古かったりするので、やっぱり英語で読むのが一番みたいです。

The Go Programming Language本も現状英語版だけですしね(私はebook版で買いました)。

あとは、Gopher GalaというHackathonの宣伝もされていました。

FINAL FANTASY Record Keeperを支えたGolang

FINAL FANTASY Record Keeperの開発(運用)の際に使用した、様々な便利ツールの紹介的な発表でした。

どれも便利そうでした。

特に、golang標準のflagsは使ったことありましたが、go-flags は使ったことがなかったので使ってみようと思います。

タグ形式なので、多言語対応の時に別構造体をきるのは辛そうですが そんな機会は私にはなさそうなのでw

あと、「信頼と安心のmattnプロダクツ」であるgo-colorable も紹介されていました。

Go が支えるインフラストラクチャーサービス

ゲヒルン株式会社の様々なサービスについての紹介でした。

golangで作られたサービスが沢山あって、golang触る機会がたくさんあってよいなーと感じました。

あと、発表練習のために、YAPC Asia の動画を見てると止まらなくなって発表前日 夜更かししてしまうらしいです。

私もつい先日 VimConfというイベントのために、スティーブ・ジョブス氏のOne more thingの動画を 深夜2時くらいから1時間見るという愚行をしてしまったので気持ちはよくわかります。

終わりに

主催のtenntennさん、Go Conference 2015 Winter運営にかかわられた皆さん、発表された皆さん、参加者の皆さんありがとうございました。

可能であれば来年も参加もとい発表したいです。

VimConf2015に参加しました

Vim

2015/11/21(土)に株式会社ミクシィで開催されたVimConf2015に参加してきたので感想レポートを書きました。

当日まで

最初は一般参加で登録していて、ネタと時間がなかったため今年は発表するかどうか迷ったのですが、 Lindanさんに若干煽られ?「海外Vimmerが開発したVim pluginの紹介」というタイトルで、LT枠に登録しました。

ただ、Vim pluginの紹介でデモをやろうと思った時点で、LTでは全然時間が足りなそうということに 気づき、vim-jp/vimconfのissuesで時間を分けてもらえないか相談したところ、thincaさんに時間を 譲っていただき事なきを得ました。thincaさんありがとうございました。

発表内容は、最近全然新しいVim pluginを試せていなかったため、実益を兼ねVim plugin紹介にしよう と思ったはいいものの、Vim plugin選定に向けて、以下の様な制限を設けてしまったため、 調査にかなり時間がかかりました。(何個Vim plugin見たか覚えていない…

  • 私が使ったことがない or 使っていない
  • 日本語で紹介したページがない(or 非常に少ない)
  • プログラミング言語非依存

前日に微妙に喉に違和感を感じて当日どうなるか心配でしたが、そこまでひどくなかったのとユンケルのおかけでなんとかなりました。

前日は深夜4時まで資料を書きなおしたり、youtubeここらへんを 見てイメトレしたりしてました。

私の発表

発表スライドは以下にあげています

English version is here

発表練習出来ていなかったこともあり、時間を気にしてちょっと駆け足になってしまった感があり、 なんとなくでもわかってもらえたか不安だったりします。

類似Vim pluginで、いくつか会場にいらっしゃっている方のVim pluginを紹介したのに、 時間を気にして紹介できませんでした…(ここで紹介しておくと、thincaさんのthinca/vim-ref、 Lindanさんのrhysd/devdocs.vim、haya14busaさんのhaya14busa/vim-undoreplayです)

同じく類似Vim pluginで、AndrewRadev/inline_edit.vimの類似Vim pluginに、thincaさんのthinca/vim-partedit を載せてないという凡ミス(知っていたのに)をしました…

発表の際に、リストの中で 5個以上知っている方はいますかとアンケートを取ったところ、 一人もいなかったっぽいので、目的の一つは達せたような気がします。(実際に役に立つかどうかはわからないけど

ちなみに最後のOne more thingですが、あまりに微妙だったせいか、良かったとも悪かったとも誰からもふれられず、 懇親会の際、やっとbasyuraさんに「最後のOne more thingは完全に余計でしたねw」とありがたいツッコミを頂き、 きっと他の参加者の方も同じような気持ちだったんだろうなぁと思いましたが、私がやりたかっただけなのでまったく反省はしていない ( ー`дー´)キリッ

唯一反省点は、One more thingまでの持っていき方がちょっとイメトレしていた時と違ってあまりうまくできなかったので そこが心残りです

あとは、どうせやるなら自作Vim pluginとかもう少しまともなネタを用意したかったっていうのはありますが時間がなく断念…

人生で一度できれば十分なので、多分もうやることはないでしょうw

(是非もう一度見たいという声があればやぶさかではない)

雑多な感想

他の発表者の方の感想は、他の参加者の方が色々上げてくれるはずなので、雑多な感想を

  • 発表は皆クオリティが高くて、もっと発表うまくならねば、というか面白いネタを仕入れるために日々精進せねばと思いました
  • kaoriyaさんのプレゼンが、ラップトップのトラブルにより急遽スライドなし発表に切り替わったのですが、あまりに自然すぎてすごいとしか言いようがなかった…(私もアドリブ力がほしい)
  • LindanさんのブラウザでVim動かす発表で、ブラウザ上で普通にVim pluginが動いていて、「すごい」という言葉しか出てこなかった(犬)
  • gu4さんが5年yokohama.vimを続けたという意識の高いLTをされていて、私がまじめにVimを触り始めたのも大体一番初めのyokohama.vimからなので、5年たったのかぁと感慨深い気持ちになりました
  • 今年の懇親会は極力面識のない方とお話しようと思い、「Vimは何に使ってますか?」というキーワードを元に、3, 4人には話しかけることができ面白い話も聞けたので良かった(nviの話したり、私のVim pluginのduzzle.vimをやっていただいていたり、yoshiko_pgさんにvim-rengbang使ってみますと言っていただいたり、Lingr上でしか把握していなかったzcheeさんとお話したりなどなど)
  • ただ、懇親会楽しすぎてあっという間でもっと色々な方とお話したかったなぁという心残りもありました
  • そして話すのに夢中で寿司を全然食べられなかった…
  • そして話すのに夢中で寿司を全然食べられなかった…(大事なことなので二回
  • kaoriyaさん、ujihisaさんとお話できる(本当に)めったにない機会なのでお話させていただきました。vimconfに参加した方でお話していない方がいたら、是非来年は話しかけることをおすすめします!(そして私にも話しかけてくれると嬉しい)
  • 総じて例年以上に最高でした

終わりに

まだ、当日の余韻に浸っていますが、非常に濃い1日を過ごすことができました。

主催のdictavさん、VimConf2015運営にかかわられた皆さん、発表された皆さん、参加者の皆さん、会場を貸していただいた 株式会社ミクシィさん、本当にありがとうございました。

またどこかのVim関係の勉強会でお会いしましょう!

Happy Vim Life!

さくらVPSのVNCコンソールでコロンが入力できなかったので対策した話

あけましておめでとうございます。 今年もよろしくお願いいたします。

新年早々、微妙にハマったので、自分への備忘録として記事に残します。

公式ページちゃんと読めよという話かもしれませんが、初期の何も設定していない状態では、さくらVPSVNCコンソールでコロンが入力できませんでした。

初期だとこんな感じだそうです。

完全にVimmerを殺しに来ている感じがしてとても趣を感じました。

で、ちょっと調べた結果、VNCコンソールと、CentOS(今回はCentOSなので)で設定することで、MacbookのUS配列でもちゃんと入力できるようになりました。

VNCコンソールの設定

さくら公式サイトのよくある質問に設定方法が書いていました。

上記サイトにも書いていますが、設定後はshutdownが必要なので注意しましょう。

(VNCコンソール側の設定で、US配列でもJIS配列っぽく入力できるようになります。)

CentOSの設定

CentOS側の設定は以下のサイトが参考になります。

CentOS/コンソール上の英語キーボード・日本語キーボードの切替方法 - Linuxと過ごす

毎回、loadkeys usでもいいかもしれませんが、面倒なので、/etc/sysconfig/keyboardいじっておいたほうが後々楽だと思います。

個人的には、初期設定JIS配列にするの何なんだろと思いますが、きっとUS配列ユーザーだからそう思うだけでしょうね。