satococoa's diary

Web系プログラマの日記です。Ruby, JavaScript, Objective-Cなど。

Rubyのリファレンスマニュアルをローカルで見る方法

明日のみなとRuby会議に参加される方へ

会場のネットワークが不安定ですので、リファレンスマニュアルを参照したい方はローカルで見られるようにしておくと便利です。
myrurema gemがおすすめです。

$ gem install myrurema
$ rurema --init
$ rurema Array#sample # こんな感じ
$ rurema String # とか

Windowsの人とかchmファイルを見られるソフトを入れている人はchm版マニュアルもいいかもです。
Rubyリファレンスマニュアル chm版リミックス

追記

1.9.2のものですが、Priit Haamer > BlogからMacの辞書.app用のファイルも手に入ります。

追記2

上記のmyruremaですが、ruby 1.9系だと$ rurema --initで例外はいてコケてしまうみたいです。。。

追記3

超速で@yharaさんが修正してくれました。 $ gem install myruremaして、0.3.3が入ったことを確認し、もう一度$ rurema --initしてください!

Heroku JP Meetup 4に参加してLTしました

Heroku JP Meetup #4 : ATNDに参加しました。

この日はherokuで使えるaddonのうち、IronMQ, Websolr, Papertrailの紹介がメインで、それぞれ質疑応答含めて30分くらいずつ、そのあと5人のLTという構成でした。
メインのプログラムはすべて英語で同時通訳なしという僕のようなゆとりプログラマにはハードモードでしたが、みなさん丁寧にスライドを作って下さっていたのでなんとか理解することができました。

それぞれの感想をメモ程度に。

IronMQ – Chad Arimura (Iron.IO)

キューイングのアドオンです。
キューといえばAWSのSQSがあり、僕も仕事で使っていて非常に使いやすいのですが、それと比べると処理速度が早いそうです。
コード例もスライドに出してくれていてシンプルに使えそうな感じでした。

Search & Indexing on Heroku – Nick Zadrozny (Websolr)

全文検索エンジンのSolrをherokuで使うためのアドオンです。
この発表で初めて知ったのですがSolrではN-Gram以外にもKuromojiという日本語に対応したトークナイザが使えるため、効率の良いインデクシングや検索ができるとのこと。
日本語対応というのは嬉しいですね。現状のWebsolr内部で使っているSolrのバージョンの関係上今すぐにKuromojiは使えないみたいですが、ごく近い将来にバージョンアップを予定しているそうです。

log analysis for your Heroku app – Eric Lindvall (Papertrail)

ログをブラウザ上で見たりできるアドオンです。メールで飛ばしたり、Campfireに書き込んだりもできるそうです。
また、プラグインを作る(?)ことで他にもiPhoneに通知をしたりということも可能になるそうで、そういう拡張性があるところが面白そうだなと思いました。
標準のheroku logsだけだと直近のログを見るにはいいですが、あとからログを調査しようとした時などは不便ですし、異常があった時にすぐ知りたいという用途では使えないので、こういったアドオンを使いたいですね。


IronMQもWebsolrもそうなんですが、SQSやElastic Searchなどでミドルウェアの部分もどんどんAWSが展開していってしまうのでアドオンを作っている方々は大変だな、と思います。AWSに勝る部分がないと使うメリットが無いですし。
ログもElastic LogsとかもAWSで出たりするかもしれませんしね。
とはいえ、herokuから手軽に利用できるというところは十分にメリットではあります。

LT

僕は Tokyo Real-time Photos - 東京の写真をリアルタイムに表示slidesync を作ったときの経験から、Heroku + Pusherでリアルタイムな仕組みを取り入れたWebアプリケーションの作り方をLTさせて頂きました。
どちらのアプリもソースを公開していますのでもしよろしければご覧ください。

あ、「東京リージョンおめでとう」はネタです。誤解のないようにご注意ください。

LTの5人中3人がP4D参加者で、しかもそれぞれのスライドの中でちゃんとP4Dに触れて頂きました。ありがとうございます。

第6回 デザイナー向けプログラム部(P4D)開催しました

3/20(火・祝)に6回目のP4Dを開催しました。
内容については 第6回 · prog4designer/meetups Wiki · GitHub もご参照ください。
毎月恒例となってリズムがよくなり、参加者も増えてきました。
しかも今回は女性も3人参加していただいて、少し健全なコミュニティに近づきました。

人数が多かったためかなんとなくいつもよりも勉強会っぽい感じでした。

f:id:satococoa:20120326002725j:plain
↑写真はKDDIウェブコミュニケーションズ、上川さんが撮ってくださった写真を拝借。

内容的にはいつもRuby色の異常に濃いエンジニア陣に対して今回はJavaScriptをやりたい参加者が多いため、僕も事前にやることをある程度準備したりして行きました。

当日ですが、大きく分けて4グループに別れました。

僕はJavaScript班に所属して2.5人分くらい見ていたのですが、正直事前に準備したものは全く役に立ちませんでした。。
結局ある程度JSをやっている方には若干難しめですが Learning Advanced JavaScript を進めてもらい、あとは地味にJavaScriptの関数の定義の仕方とか無名関数とかをとりとめなく教える感じになりました。

JavaScript自分も自信を持てるほどに把握していないのもいけないのですが、やっぱり教えるのは難しいですね。次回はJavaScript自身を教えると言うよりは何かもっと具体的に作るものを考えて(例えばTitaniumやPhoneGapで簡単なアプリとか、enchant.jsでミニゲームとか)それを作りながら最低限の文法とかJSの特徴を教える方にシフトしてみようかと思っています。

あと、JavaScriptを学ぶ上でのおすすめの書籍について質問されたのですが、良い答えを準備できなかったのでとりあえずパーフェクトJavaScript読みます。。。

Rails班は教える側も教わる側も常連さん or 知り合いだったので安定したもくもく具合でした。
Titaniumの方はもうすぐ新卒エンジニアとして働き始めるという若い二人に任せたのですが、苦労しつつもしっかり一緒にやっていただけたようでよかったです。ありがとうございます。

お酒を注文するのが遅れて、ピザが全部なくなってからお酒が届いてしまったのは今となってはいい思い出です。(ということにしてください)

とまぁ、主催としてはあんまりしっかりやれなくてちょっと不甲斐ない気持ちもあるのですが、でも懇親会で話が盛り上がっていた様子を見るとやっぱりやってよかった、次回も楽しい会にできるようにがんばろう、と思いました。

最後に、 #p4d に参加したいけれども「自分が教わるばかりでなんだか悪いな」なんて思って気が引けてしまっているデザイナさん、参加したエンジニアがデザインについて知りたいと思っていることのリストを以下に列挙します。(今見るとめちゃくちゃわがまま & ざっくりですね。。。w)
もし少しでも語れるものがあったらぜひ参加してエンジニアにもいろいろ教えて下さい!

  • twitter bootstrap などを使って楽をしつつも、個性のあるデザインの作り方
  • 一緒にアプリを作ってくれるパートナーになってほしい
  • IE hackなどブラウザの互換性を意識したコーディングの仕方
  • HTMLのclass, idなどの名前の付け方、CSSの整理の仕方
  • テンプレートやTitanium
  • HTMLの綺麗な書き方
  • CSSについて
  • おしゃれなHTML, CSSの書き方
  • デザインについてどこから勉強すればいいのか教えて欲しい
  • 手っ取り早くかっこいいサイトにする方法
  • サイト全体の構成やレイアウトについて
  • ロゴとかの作り方

次回4月は月例のP4Dはおやすみし、代わりに4/29にハッカソンを行います。
そろそろATND立てますのでぜひぜひ興味の有る方はご参加ください!

下北沢オープンソースCafeに行ってきた

3/11(日)にコワーキングスペースめぐり3箇所目、下北沢オープンソースCafeへ行って来ました。

この日の僕の作業は3/20(火・祝)に予定されている第6回デザイナー向けプログラム部(P4D)のためのハンズオン資料作り。
今回はTitaniumやjQueryJavaScript自体など、JS希望の方が多いのでJSのオブジェクト指向を軽く解説するための資料作りです。
あとはP4Dに興味があるというデザイナさん一人をお誘いしてJSを少しペアプロチックにやってみたりしました。

osscafeさんですが、入ってすぐ横に大きなディスプレイがあるのが特徴です。これを使って発表とか講座とかできそうな感じです。
あとはマスターの河村さんがデザインもプログラムも出来る方なので、デザイナーにJSを教えることについても相談させていただいたりしながら、集中して作業することが出来ました。
あらかじめ付箋に書いておいたタスクが完了していると飲み物のおかわりが安くなる、というのも面白い仕組みですよね。

帰りは隣の図書室で作業をしていた @machida さんや @komagata さんはじめ、最後までosscafeに残っていた皆さんと一緒に夕食を食べて解散。
deviseに打ち勝った話や怖話 | 怖い話がスマホでもの話など、楽しかったです。

前回のタネマキに続いて、人に会える作業場として今後も通わせていただきたいと思います。ありがとうございました。

さて肝心のハンズオン資料作りはテーマがとても難しい上に参加者の習熟度が全くわからないために、正直かなり難航して納得のいくものはできていないです。
とりあえずはリポジトリには上げられたので一安心ですが。(https://github.com/prog4designer/js-hands-on-1
あと、Titaniumは久しぶりにインストールしたらXcode4.3で動かなかったのでどうしようかなーという感じです。自分の環境には入れていかなくても大丈夫かな・・・。

今年の頭に立てた目標の通り、今年は積極的にコワーキングスペースなどを利用して外で作業をしたいと思います。
なのでP4Dに興味があるけれども、ちょっと敷居が高そうだなーという方はぜひお気軽におしゃべり or 予習に来ていただけるといいなぁと思います。
教えられることだったら教えますし、わからないことだったら一緒に勉強したいとおもいます。

Yokohama.rb #18 に参加しました

Yokohama.rb #18 に参加しました。(Bu: Yokohama.rb #18

今回は場所も時間も内容も、いつもと大きく形を変えて実施しました。
そして、定員はなんと144人。わずかに定員までは届かないまでも、たくさんの人が集まり活気のある会となりました。

まずは全員LT。資料のある人もない人も強制的に5分間の時間を与えられ、前に立って話しました。
自己紹介からSIのdis、CoffeeScriptに横浜検定と、多岐に渡る話題でYokohama.rbのコンテンツ力を感じました。
データベースにMongoDBを使い、MySQLなどと併用をしないスタイルを「フルモンゴ」と呼ぶそうです。バズりそうですね。
僕は淡々と slide sync の紹介と、P4Dの紹介・宣伝をしました。

前評判が高く、注目度No.1の@joker1007さんはもったいつけて遅刻してきたためにこのLTには間に合わず、本当に最後の最後のトリでの発表となりました。美味しいところをしっかり持っていきますね。

ちなみにLT大会の様子は@miyohideさんがustを録画してくださっていますので、yokohamarb #18 LT Vol.1, 2012年3月10日に行われたYokohamarb #18内で行われたLTの様子です。 miyohide on USTREAM. Computersから見ることができます。

次はいつも通りのRubyレシピブック読書会。
こちらはAsakusa.rbから参加していただいた@gunjisatoshiさんがきっちり解説を交えながら音読して下さいました。
とてもわかりやすかったです、ありがとうございました。

そして最後に@joker1007さんの基調LT『ジョジョで分かる 頭じゃなく精神で理解するアジャイル』。
期待を裏切らない発表でした。興味の有る方はust見てください。

f:id:satococoa:20120310193704j:plain

終了後の懇親会は、今回相当ヒットでした。
@miyohideさんが神がかりすぎてお腹痛くなるほど笑いました。

最後に、ここまでYokohama.rbを引っ張っていただいた@nagachikaさんが、引越しのため定期的な参加は今回で最後になってしまうとのこと。
レシピブック読書会ではみんなが困ったときにrubyソースコードをささっと読んですぐに疑問を解決してくださっていました。
そんなYokohama.rbの中心がいなくなってしまうことはとても寂しいですが、今後のますますのご活躍をお祈りしたいと思います。
@nagachikaさん、ありがとうございました!今後ともよろしくおねがいします。

さて、いよいよみなとRubyKaigiの開催が近づいて来ました。
6月の開催までまだまだ時間がありそうに見えて意外とあっという間かもしれません。
いいRubyKaigiにできるように考えていきたいと思います。

Tokyu.rbハッカソン/もくもく会第3回 に参加してきた

昨日夜ふかししてブログ業をしていたせいで非常に眠かったのですが、がんばって行ってきました。
募集ページ → Tokyu.rbハッカソン/もくもく会第3回 : ATND

今日の僕の作業は slidesyncRails移植 & 最低限必要な機能の実装まで。

この Slide sync は昨年末にP4D主催で開催した デザイナーxエンジニアハッカソン で僕と@saucerjpさんのペアで作った成果物です。
その時は機能に対する見積もりが甘くて「Sinatraで最後まで実装できるんじゃない?」と思って作ったものの、機能を実装するにつれSinatraじゃ面倒な事がふえてきてしまいました。
更にタイミングよくRails 3.2が出たのもあって思い切って僕が勝手に $ rails new slidesync したのですが、実装がぱったり止まってしまっていたという申し訳ない過去があります。
ということで目標はSinatraで作ったプロトタイプの実装に追いつくこと。あと実装速度重視で作ったせいで雑だった設計を一からやり直すこと。

一応目標は達成でき、最後の成果発表の時には無事にスライドを同期させて各自のブラウザで見てもらう事が出来ました。
デザイン面では今日は一人でやったので新しく足した部分が若干やっつけ気味です。また時間をとって二人でブラッシュアップしたいですね。 > @saucerjpさん
とりあえず機能的には最低限必要なものは揃いました。あとはテストを整備してから次の機能の実装に入りたいです。

余談ですが、僕はハッカソンやプロトタイピングの時には基本的にテストを書きません。
賛否両論あると思いますが、ハッカソンやプロトタイピングでは若干バグが有ってもいいのでとりあえずざっくり全体が動作するソフトウェアがほしいのです。
小さいイテレーションで頻繁なフィードバックが欲しいというよりは、粘土をこねるように大雑把に形を作りたいのです。そして作りながら仕様を考えていくという。
TDDの熟練者はもしかするとそのへんはspecを書きながらざっくりした全体像も作っていくのでしょうか。
蛇足ですがちょっと疑問に思ったので書いてみました。

最後に、会場を提供していただいた万葉さん、そして企画を立てていただいたTokyu.rbの方々、どうもありがとうございました。