2012-01-29
CouchConf TOKYO 2012に参加してきました
CouchBase社が開催しているWorld Tour CouchConf TOKYOに参加しました
会場までの道のり
寒い冬の平日にベルーサ三田にて開催されました。
泉岳寺駅からしばらく歩き左手に大きな建物があったので迷わずいけました!会場は1Fの2つの部屋を利用して一つがセッションを行う部屋でもう一つがラウンジという形で進行。
受付は9時からで9時15分くらいに到着すると既にたくさんの人が着席されていて、スライドが見やすい前の辺りに座りました。周りを見渡すと外国人の方も多く、CouchBase社の方が準備されていました。
いよいよ開始です。高まるCouch熱!!ここからは内容と感想を箇条書きで。
内容とメモ
- 副社長のスティーブンさんが流暢な日本語でご挨拶
- ナイスガイ
- 同時通訳があってとても便利*1
- Community Editionもたくさんのプロダクションで使われている
- 大きい所で2000ノードくらい
- GAまだ〜?「まだパフォーマンスチューニングと考慮しないといけないことがある」
- 1.8と同じくらい高速にするよ
- 管理画面がすごい便利
- 毎秒情報を更新(毎秒更新しても負荷は低い)
- RAMとディスクのディレクションも監視
- Rest APIでも確認できる
- キーの使用頻度も確認できる
- 速いという事にこだわっている
- セットアップもレスポンスも
- メモリ有効に使っているぜ
- ノード間でデータを共有する事も考えてメモリは使用空間と実利用可能量のトレードオフは工夫している
- ビルトインされているという事は重要だと感じた
- 速度よりも安定性と運用コストの方がインパクトがあった
- 速度はミリSecやマイクロSec単位の話題が多かった
- Couchで重要なのは予測性が評価されているで数ミリ単位で予測できること
- オンメモリ(MemBase)を意識する事は重要
- 書き込みは非同期でRAMを利用する
- ディスクにデータが乗ったら監視でnode追加しバンランシングする
- パフォーマンスはドキュメントの作り方とデータの取り方が重要
- ドキュメントベースというデータ構造を意識し思い切った割り切りやトレードオフも大事
- スケールの効率化
- フェイルオーバー
- 自動フェイルオーバーは対応しているけど30秒おきの監視だからね!
- 手動でもできるよ
- トランザクションログにも対応している
- モバイル対応
- mobile sync便利
- 2.0に超期待
- mobile sync便利
頭の片隅に残っている事とメモの書き端をざっくりと書きましたが、詳しくはtogetterを見ると良いと思います。
続いて、今回特に感じた事を短くまとめてみたいと思います
まとめ
- CouchBaseは運用コストとパフォーマンスの両面で優れている
- 大規模解析よりも如何に速く大規模アプリが作れるというところにフォーカス
- 大規模解析はHadoopアダプタでやると良い
- 実プロダクトで投入したいと思えるようなワクワク感を感じた
- なぜMongoじゃなくてCouch?
- Mongoはデータの移行が発生する時に永続化したデータの形式上辛い
- ↑ というのはあるらしいのだれけど、大規模データだとどれでも何かしらあると思う。
- ぶっちゃけどっち使っても良いと思う完成度だと思った
- 2.0はすごく期待できるプロダクト
- Mongoはデータの移行が発生する時に永続化したデータの形式上辛い
その他 Q&Aパネルなど
セッション中もそうだったのですが、色んな質問がとびかっていました。おさまらないCouch熱!!
私が質問した内容
少し気になっていたこと。
質問
様々な言語やミドルウェアが使えるクラウドプラットホーム「dotCloud」のサービスでCouchDBがalpha版ですが利用でき、CouchBaseとMemBaseがRequestedという状態になっています。CouchBase社が今後利用できるように手助けしたり、同様のプラットホームサービスのCloud foundaryなど他でPass提供する予定はありますか?
一つ前に質問した方が「OpenStack」について質問したので内容がかぶってしまいましたが、隣にいた人が「良い質問だ!」と言ってくれさらに私の質問にのっかって質問されていました。
回答
今は製品開発に集中したいのでサービス的な方はまだ考えていない。ただ今後Heroku対応やAWSのEC2イメージとしては検討していくかもしれない。
というような回答だったと思います。
アフターパーティーでの質問
同僚も来ていて話をしていた時に話題になったので個人的に二人でCouchBaseの方に質問をしに行った時の内容。
質問
CouchBaseはリニアにスケールするんですか?ノードの数でレプリケーション等その他の理由で性能効率がさがりますか?どれくらいで変化がある?
回答
Yes. 特に上限なしにリニアにスケールするよ。そこはあまり心配しなくても大丈夫!
AOLの実例では10台〜20台くらいって言っていたのでそれくらいでは大丈夫なんでしょう。別の機会でkumofsの話を聞いた時もそうだったんですけど、成功している分散KVSはきっちりと考えられていますね。
Zynga社の数千台の例もありますし数に関しては心配なさそう。むしろ、機器調達時にデータセンターのラックキャパの問題や大きいストレージやハードを少量にしたい!という要望がでた場合に打ち勝つ力が必要だなぁと。
最後に
カルフォルニアから遠い日本まで来て頂いたCouchBaseの方々、開催を支えてくださったスタッフ、Couch界隈のコミュニティの皆さん、どうもありがとうございました。
CouchBase.jpという新しいコミュニティもできたようなので、日本でもより盛り上がっていくといいですね。
来年も開催されるといいなぁ。
*1:3人ぐらいが交代でされていましたが女性の方の通訳が特に聞きやすかったです
森ルイーズ
2012/01/29 22:15
とてもわかりやすいのまとめです。ありがとうございました。
guyon
2012/01/29 22:57
ありがとうございます。:)
2012-01-26
KeyRemap4Macbookで英数とかなを別キーに割り当てた
Mac | |
普段よく使うキーで遠いと感じている2つのキーをベストポジション的な位置にある「英数」と「かな」キーに割り当ててみました。
よく使うキー
- [
- Return
変更した理由
設定手順
- KeyRemap4Macbookの設定を開く
- Misc&Installタブを開く
- Open Private.xmlボタンで設定ファイルを開き下記のXMLを保存する
- Change KeyタブのReloadXMLで再読み込み
- 新しく表示されたチェックボックスを有効にする
再起動の必要はありません
<?xml version="1.0"?> <root> <item> <name>EISUU to RETURN</name> <identifier>private.eisuu2return</identifier> <autogen>--KeyToKey-- KeyCode::JIS_EISUU, KeyCode::RETURN</autogen> </item> <item> <name>KANA to JIS_BRACKET_LEFT</name> <identifier>private.kana2bracket_left</identifier> <autogen>--KeyToKey-- KeyCode::JIS_KANA, KeyCode::JIS_BRACKET_LEFT</autogen> </item> </root>
感想
<C-かな>で<C-]>になるのは左と右手の組み合わせで使いやすいです。VimやVrapperやScreenやiTermなどで活躍してくれます。また左ブラケットを入力したら右ブラケットは自動補完や移動できたりし、左に比べ右ブラケットは使う頻度は少ないので対称性については深く考えないようにしました。
左の親指でスペースを押している癖があるからか英数でReternはまだ馴染めないです。第一関節を曲げないといけないという所が良くないのかも…
そして、殺した「英数」と「かな」はどうなったかといいますと、一度は長押しで使えるようにしてはみたのですが一瞬レスポンスが遅くなるので取りやめて行き場をなくしました。
長押しで生かす場合の参考設定
<?xml version="1.0"?> <root> <item> <name>EISUU to RETURN</name> <identifier>private.eisuu2return</identifier> <autogen>--HoldingKeyToKey-- KeyCode::JIS_EISUU, KeyCode::RETURN, KeyCode::VK_NONE, KeyCode::JIS_EISUU</autogen> </item> <item> <name>KANA to JIS_BRACKET_LEFT</name> <identifier>private.kana2bracket_left</identifier> <autogen>--HoldingKeyToKey-- KeyCode::JIS_KANA, KeyCode::JIS_BRACKET_LEFT, KeyCode::VK_NONE, KeyCode::JIS_KANA</autogen> </item> </root>
しばらくこれで過ごしてみたいと思います。
2012-01-16
zshの補完をさらに強力にするzsh-completionsの設定
普段、iTerm2をデュアルディスプレイの出力側に常に表示させて3分割にして利用しているのですが、zsh-completionsを設定してからサブコマンドを利用するコマンドがとても便利になったので設定方法を記録しておきます。
設定
GitHubで公開されているスクリプト集をダウンロードしましょう。
This projects aims at gathering/developing new completion scripts that are not available in Zsh yet. The scripts are meant to be contributed to the Zsh project when stable enough.
[yuki@beaune.local]$ git clone https://github.com/zsh-users/zsh-completions.git
- zsh-completions
ダウンロードスクリプトをホームディレクトリに適当にリネームして配置します。
~/.zsh-completions/
最後に「.zshrc」の先頭にリネームして配置したディレクトリ追記しパスを通します。
# zsh-completionsを利用する Github => zsh-completions fpath=(~/.zsh-completions $fpath)
尚、.zshrcには下記のような補完関連の設定が既にされている事を想定しています!
autoload -U compinit; compinit zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \ /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin \ /usr/local/git/bin
操作方法
私はAndroidのSDKに同梱されているadbコマンドをよく使います。adbコマンドもサブコマンドで構成されているので、補完が効いているとlogcatひとつにしても便利です。
例えば
[yuki@beaune.local]$ adb <ここでTAB>
とすると
[yuki@beaune.local]$ adb bugreport bugreport -- return all information from the device connect -- connect to a device via TCP/IP devices -- list all connected devices disconnect -- disconnect from a TCP/IP device emu -- run emulator console command forward -- forward socket connections get-serialno -- prints: <serial-number> get-state -- prints: offline | bootloader | device help -- show help message install -- push this padbage file to the device and install it jdwp -- list PIDs of processes hosting a JDWP transport kill-server -- kill the server if it is running logcat -- view device log ppp -- run PPP over USB pull -- copy file/dir from device push -- copy file/dir to device reboot -- reboots the device, optionally into the bootloader or recovery program reboot-bootloader -- reboots the device into the bootloader remount -- remounts the /system partition on the device read-write root -- restarts the adbd daemon with root permissions shell -- run remote shell interactively or command start-server -- ensure that there is a server running status-window -- continuously print device status for a specified device sync -- copy host->device only if changed tcpip -- restarts the adbd daemon listening on TCP on the specified port uninstall -- remove this app padbage from the device usb -- restarts the adbd daemon listening on USB version -- show version number
という感じでサブコマンド一覧が表示され、さらにタブを押すとサブコマンドがRING循環で表示されます。
さらに、サブコマンドも同様にタブで補完できて
[yuki@beaune.local]$ adb shell <ここでTAB> zsh: do you wish to see all 162 possibilities (41 lines)? acceld hostapd mm-aenc-omxqcelp13-test run-as am hostapd_cli mm-audio-native-test schedtest app_process hostapd_wps mm-jpeg-dec-test schedtop applypatch id mm-jpeg-enc-test sdptool athtestcmd ifconfig mm-vdec-omx-property-mgr sendevent battery_charging iftop mm-vdec-omx-test service bluetoothd ime mm-venc-omx-test servicemanager bmgr input monkey setconsole bootanimation insmod mount setprop bugreport installd mtpd sh cat ioctl mv sleep chmod ionice mwmainte smd chown iperf nandread start cmp iptables ndc stop cnd iwconfig netcfg surfaceflinger dalvikvm iwevent netd svc^M date iwgetid netmgrd sync dbus-daemon iwlist netstat system_server dd iwmulticall newfs_msdos tc debuggerd iwpriv nl_listener test_diag dexopt iwspy notify tgmd df keystore omx_tests tmsd dgstmgrd kill orientationd toolbox dhcpcd linker pand top diag_klog ln ping trpd diag_mdlog loc_api_app pm uimd dmesg log port-bridge umount dnsmasq logcat pppd vdc dumpstate logwrapper printenv vmstat dumpsys ls ps vold dvz lsmod qmuxd watchprops fotad mediaserver racoon wipe fsck_msdos mkdir reboot wiperiface geomagneticd mm-abl-test recEvent wlan_tool getevent mm-adec-omxQcelp13-test renice wmiconfig getprop mm-adec-omxaac-test rild wpa_supplicant gzip mm-adec-omxevrc-test rm handset-keypress mm-adec-omxmp3-test rmdir
利用できるコマンド一覧が補完されます。adb logcatの場合はFilterの種類が表示され、サブコマンドごとに適切な補完がされていることがわかります。
コマンドの補完だけでなくオプションも補完でき、すぐにオプションを忘れてしまう私のような人には便利です。
[yuki@beaune.local]$ adb logcat -<ここでTAB> -b -- loads an alternate log buffer for viewing, such -c -- clears (flushes) the entire log and exits -d -- dumps the log to the screen and exits -f -- writes log message output to file. The default -g -- prints the size of the specified log buffer and -s -- sets the default filter spec to silent -v -- sets the output format for log messages [yuki@beaune.local]$ adb install -<ここでTAB> -l -- forward-lock the app -r -- reinstall the app, keeping its data -s -- install on SD card instead of internal storage
adbコマンドの例をとりましたが他にも色々なコマンドに対応しています。
対応しているコマンド例
わりとよく使うコマンドの一例です。特にmvnコマンドなどはタカタカッターン!!と実行できて気持ちいいです。
コマンド
これ以外に色々もあります。
まとめ
- 補完便利
- 補完対象が豊富
- たまに待ち時間が気になる補完もある
- 設定が簡単という所が敷居が低くて良い
少しの設定で普段の操作が快適になるので、もしよければ試してみてください!
2012-01-14
Vimでソースコードを素早く追いかける
vim | |
Vim Advent Calender 2011 45日目の記事です。今回のテーマはソースコードを素早く追いかけるです。
Vimをお使いの皆さんは設定ファイルや文書作成以外にもソースコードを作成・メンテ・閲覧などに利用されている事と思います。
そこで、ソースコードを追いかける時に便利なプラグインをご紹介したいと思います。なお、この記事は過去に私が書いたエントリーを再構成した内容となっています。
追いかけるソースコードを用意する
まずは、追いかけたいソースコードを用意しましょう。例としてあげるソースコードはVimで世界的に有名なc9sさんが作った、巷で話題のRubyのBundler(やVimのVundle)ライクなPHP版Onionです。
$ git clone https://github.com/c9s/Onion.git cd ./Onion
プラグインを設定する
Source Explorerというプラグインを導入してみましょう。概要は以下の通りです。
The plugin (srcexpl.vim) is a source code explorer based on tags and it provides an overview of the function and type definitions.It has such a mechannism that works like the context window component of "Source Insight" software.
If you have used Source Insight for browseing C/C++/Java project before, you may find that you can browse the definitions with the Source Explorer as well as the context window of "Source Insight".
tagsを利用したソースコード閲覧・移動補助してくれます。
以前に紹介した時点ではVersion 2.3でしたが現在では4.3になり、trinity.vimというプラグインを使う事でUIが使いやすくなっています。
下記のプラグインをruntimeパスのとおったpluginディレクトリに入れましょう。
runtimeパスの確認の方法はコマンドラインモードで
set runtimepath?
通常は下記ディレクトリに「srcexpl.vim」と「trinity.vim」と「NERD_tree.vim」と「taglist.vim」を放り込めばOKです。
~/.vim/plugin/
ctags
Source Explorerはctagsというソースコードの関数や変数情報などをインデックス化する外部プログラムを利用します。また、Mac OS XではデフォルトでインストールされているもののExuberant Ctags という拡張されたctagsではない為、macportsなどでExuberant Ctagsをインストールしておきましょう。Windowsの方はKaoriyaさん配布のvimを使っている人がほとんどだと思います。Kaoriyaさんのその他コーナーでリンクされているこちらのExuberant Ctags対応ctagsをダウンロードしパスを通しておきましょう。*1
[yuki@beaune.local]$ port info ctags
Warning: port definitions are more than two weeks old, consider using selfupdate
ctags @5.8 (devel)
Variants: universal
Description: Exuberant Ctags generates an index (or tag) file of source language objects in source files that allows
these items to be quickly and easily located by a text editor or other utility. Alternatively, it can
generate a cross reference file which lists, in human-readable form, information about the various objects
found in a set of source code files. Supported languages include: Assembler, AWK, ASP, BETA,
Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp, Lua, Make, Pascal, Perl, PHP, Python,
REXX, Ruby, S-Lang, Scheme, Tcl, Vim and Yacc.
Homepage: http://ctags.sourceforge.net/
Platforms: darwin, freebsd
License: GPLv2
Maintainers: mww@macports.org, openmaintainer@macports.org
[yuki@beaune.local]$ sudo port install ctags
起動方法
コマンドラインモードで下記コマンドを実行します。
:TrinityToggleAll
tagsが存在しない場合は作成するかどうかを聞いてくるのでyesを選択します。
実行すると左にtaglistを使った変数やメソッドなどのアウトライン、右にファイラー、真ん中にソースコード、下にソースエクスプローラーが表示されます。
それぞれをToggleするコマンドも用意されています。
" +----------------------------------------------------------------------------+
" | File | Edit | Tools | Syntax | Buffers | Window | Help | |
" +----------------------------------------------------------------------------+
" |-demo.c-------- |-----------------------------------------|-/home/myprj/----|
" |function | 1 void foo(void) /* function 1 */ ||~ src/ |
" | foo | 2 { || `-demo.c |
" | bar | 3 } |`-tags |
" | | 4 void bar(void) /* function 2 */ | |
" |~ +----------+ | 5 { |~ +-----------+ |
" |~ | Tag List |\ | 6 } |~ | NERD Tree |\ |
" |~ +__________+ ||~ +-----------------+ |~ +___________+ ||
" |~ \___________\||~ | The Main Editor |\ |~ \____________\||
" |~ |~ +_________________+ | |~ |
" |~ |~ \__________________\| |~ |
" |~ |~ |~ |
" |-__Tag_List__---|-demo.c----------------------------------|-_NERD_tree_-----|
" |Source Explorer V4.3 |
" |~ +-----------------+ |
" |~ | Source Explorer |\ |
" |~ +_________________+ | |
" |~ \__________________\| |
" |-Source_Explorer[Preview]---------------------------------------------------|
" |:TrinityToggleAll |
" +----------------------------------------------------------------------------+
操作方法
<C-W>HやLなどでWindowを移動して3つのWindowごとの機能を素早く切り替えられるUIになっています。実際に操作してみるとわかるのですがとても使い勝手がよいことがわかります。
Source Explorerはカーソル下にある変数やメソッドの宣言やコール元のソース情報を自動で表示してくれます。もし、コール元が複数ある場合はリストで表示されるのでWindow移動して対象業でEnterを押せばジャンプできます。ジャンプや戻ったりするのも自分好みのキーを割り当てる事ができるようになっているので、設定をカスタマイズしたい場合はSource Explorerのソースコード(srcexpl.vim)ヘッダ部分を参照してみるとよいでしょう。
画面キャプチャ
メソッドの宣言を自動で表示
コール元のソース情報一覧を自動で表示
マウスでも操作できる!えッ?
最後に
アウトライン表示や宣言へのジャンプ機能などEclipseなどのIDEではできて当たり前の感覚ですが、Vimでもソースコードを参照する時にオペレータやgfやGrep他等のvim基本機能に加え、今回紹介した様なプラグインを使う事で軽快にソースコードを徘徊・把握ができるようになるのではないでしょうか。個人的には移動や表示する時の感覚が大事で「ホイホイ」と軽快に移動できると気持ちがいいですね!
2011-11-20
ujihisa.vim#2に参加してきました
vim | |
約半年ぶりに開催されたujihisa.vim#2に参加してきました。
http://partake.in/events/b886679b-e8c0-44af-9df2-62a6e5cfd6ed
雨の中、場所は株式会社mixi様の100人入れる会場で開催されました。
partakeで表示されたGoogle Mapのジャンプした先では新宿が表示されるトラップが仕込まれていたので、あやうく素直に行ってしまうところでした。出発前に再確認したら「渋谷なのに新宿?」と気づいて良かった...
エレベータで今回のイベントサポートをしてくださったmixiの方と遭遇し、開催される部屋まで案内していただきました。居合わせた3人の参加者を含めて一言二言会話しただけですが、とても感じの良い方ということが伝わってきました。
そして、エレベータを降りてすぐ見えるmixiのフロントはスルーして奥に進みます。
広いリラクゼーションスペース。開催までの間こちらで黙々とノートパソコンに向かっている方もいました。
受付を済ませてゲストカードを借り、リラクゼーションスペースに隣接している会場に入ります。
スライドが見やすい前の辺りに座りました。当日はUstreamで配信されていました。準備をテキパキとこなしているこなされている様子です。開催までの間、主催者であるujihisaさんの段取りの良さが目立ちました。
この頃会場内に熱気が高まり、いよいよ始まるぞという感じです。
KaoriyaでWindows版 Vimを配布されているKoRoNさんを皮切りに、たくさんの発表がありました。
- KoRoNさんの発表のインパクトすごかった
- 時間があっという間に過ぎてしまってもっともっと話を聞いてみたい濃い内容でした。
- basyuraさんの鳥取のイメージがすごかった
- 自分も何か作ろうかなと思わせられる発表でした
- kanno_kannoさんからVim scriptへのお誘い
- Vim-jaで「それ実現しましょう」というやりとりも発生した
- jbkingさんのPython的お話
- Python用チェックツール便利そう。reStructuredTextも!
- シャイなガイのthincaさんのライブコーディング
- Shougoさんの「くるな」→「キタw」→「いつもの」
- ネタをネタと見抜けない人は...(続く)
- Super Shougo Time は鉄板
- sora_hさんの当日飛び入り発表
- というなかでもネタをしっかり仕込んで楽しめる発表をしてくださいました
- vimマインド的なおはなしをされたchoplinさん
- 最終発表者のujihisaさん
- Levelに合わせたHowTo
- 魅せるプレゼン
- vimの起動時に飲み物を飲みながら歩ける時間と心の余裕
休憩時間中に撮った一枚。『美人な女性』
懇親会。ピザやおつまみなどを食べながらたくさんのテーブルで懇親が行われていました。写真はujihisaさんのカナダ土産の食べれる紐*3。たくさんの人とお話しできて楽しかったです。
開催をしてくださったujihisaさん、発表者の方々、会場サポートしてくださったmixiさんどうもありがとうございました!
ujihisa
> お土産に妻へ1本持って帰ったら、「好きなお菓子でよくこれを買ってきてもらっていた。でも、この味は(固有商品)は科学的な味が強くて、ちょっと...」という昔から好きだったお菓子という驚愕の事実
!!!
















