[ruby][sapporo][regionalrubykaigi]札幌Ruby会議02に行ってきた!

今回行くことにした目的はいくつかあって,その全てが達成できました.非常に有意義な,そして楽しい札幌でした!
んで,その目的というのが,

  • jpmobile会議02の開催
    • 前夜祭で開催できました!
      • 参加者は2人でしたが
  • 他の地域Ruby会議を見てみたい
    • とりあえずTokyuRuby会議やったと言うことで,他の場所はどんな感じかを見てみたかった.
      • 札幌は気合い入ってますね!
  • 地域Ruby会議の人といろいろ話す
    • 他の地域の人たちといろいろ話したかったので.特に何をと言うわけじゃないですが,とにかく交流したかった.
  • Ruby札幌の人たちと会いたかった.
    • RubyKaigiの時ぐらいしかあって話できないので,この際だと思って,前夜祭から参加.名前とTwitterのアイコンの相関を覚えてもらえたでしょうか!

などなど.これが全て達成できましたー.スイーツタイムに紹介の時間を用意していただいた @snoozer05 さんには感謝!

前夜祭

  • まあいろいろ大変でした(何が.
    • エアっぽく万葉席にいましたが,なぜか女性率66.7%という場所に.
    • 終わり際に @darashi さんと jpmobile 会議開催成功!
    • 二郎的な肉チャーがあったらしいのですが,体調的&胃袋的&明日的にやめておきました.

オープニング

  • 島田さんのお話
    • 協賛などいろいろ!
    • 公式ハッシュタグ #sprk02
    • 給電所がある
    • 書き初めがある
    • そして地図もある
    • メッセージボードもある
    • どこかとは違ってすごく Ruby 会議です.

tDiary annual report 2009

あれから一年...
tDiaryRuby 1.9 対応
  • まずは計画
  • 2008/10 某所で作戦会議
  • Ruby 1.9 での主な対応
    • 過去バージョンとの非互換部分
      • compatible.rb というので吸収
    • 文字エンコーディングの変更
      • magic comment
        • 一括追加で対応
      • 外部 encoding
        • 判定に RUBY_VERSION は使わない
          • default_external を使う
begin
  Encoding::default_external = 'utf-8'
rescue
  $KCODE = 'u'
end
        • Ruby会議2009 でのスライドをご覧ください
        • Ruby 1.9 のバグも発見
  • 2009/05/08 tDiary 2.3.2 リリース
    • tDiary 会議の開催 @ Ruby会議2009
    • ユーザ/コミッタの意見が出た
futures
  • RSpec / Cucumber
  • Rack 対応
  • github で開発中
  • 未解決の問題
    • XML-RPC を捨てて Atom サポート
    • testable_tdiary を本体へ
    • 本格的な Rack 対応
  • tDiary はパッチベースのワークフロー
    • レビューワーがパッチをレビューして,よければマージする
  • Rubyist にできること by かずひこ さん」を読もう
  • Rubyist にできることをやるなら tDiary

知らないと損をする Smalltalk

「古い」のに「新しい」?
  • 全てがオブジェクト
  • ほぼ全てをメッセージング
3 < 4 ifTrue:[5] ifFalse:[6]
↓
(3<4).ifTrue:ifFalse:([5],[6])
  • Ruby にも大きな影響
    • ブロック付きメソッド呼び出し
    • MatzLisp?
  • SmalltalkRuby 処理系
    • Rubinius
      • Squeak の実装スタイルに色濃く影響を受けて作られた Ruby 処理系
    • MagLev
    • SmalltalkRuby 新機能
      • Traits
        • Mix-in より小回りの利く実装継承機構
      • Classboxes
        • メッソドの追加や差し替えを名前空間とリンク
「言語」ではなく「環境」?
  • 過去に存在した現在
  • 影響は GUI のみにあらず
    • Mac OS
      • 1度目は GUI
      • 2度目は API で影響を受けている
  • 他者との決定的な違い
    • 利用者主体の斬新的成長が可能かどうか?
    • 自然都市 vs 人工都市
    • @eto さんの Wiki の本とか
「シンプル」なのに「難しい」?
  • なぜ本から学べないか?
    • 都市はツリーではない
      • 全貌を把握することが難しい
  • Smalltalk の体験学習
    • "内地では"
  • 少人数のハンズオンがいいのではないか by @sumim さん

RubyPostgreSQL とお話する方法

  • 石田さん
  • PostreSQL 徹底入門 の著者
  • pgpool II の develper
  • プログラムからSQLを実行するということ
    • クライアント/サーバ間のソケット通信
  • 実際にどう接続するか
    • C 言語のライブラリを呼び出す(libpq.so)
    • 独自実装
      • postgres-pr
  • 使い方
    • 本(逆引)を読めばいいともう
    • libpq なので libpg のリファレンスを読むといい
  • "Rails とかやってみたかっただけ"
  • copy
    • サーバ側なら
      • copy t1 from '/tmp/csv.data';
    • クライアント側なら
  • "この変で力尽きたので終わります"
  • 非同期問い合わせなど
    • ruby-pg + fiber -> NeverBlockPG
  • 一度 libpq のキュメントを読めばいいと思うよ

レシピに書かれていないこと

  • 須藤さん
    • Rabbit の人
  • Rabbit というオブジェクトを作ってる
  • Ruby 本体の RSS の部分
  • Rabbit
プログラムを書く
  • レシピに書かれているもの
  • 書かれている以外の使い方
    • RSS Parser
    • rcairo
  • でも?
    • 書かれていないもの
    • 書かれていない使い方
  • Sinatra / Haml / Ruby/groonga / Poppler
  • 拡張
    • 添付PDF内検索
    • 添付PDFのサムネイル
まとめ
  • レシピは役に立つんです

Ruby における 2038 年問題の解決

  • 田中 哲さん (akr さん)
概要
    • Ruby 1.9.2 で Time クラスの制約が緩和
    • 2038 年以降も表現可能
    • 1901 年以前も表現可能
    • マイクロ秒よりも細かい制度で表現可能
    • 任意の時差を実現可能
    • 不合理な制約を排してプログラミングしやすいようにしよう
  • Ruby で時刻をあれこれすると問題になることがある
  • 2038 年問題
    • 1970-01-01 + 21億秒 までしか対応しない
  • 2922 億年問題の解決はない
    • OS にある 64bit 制約もない
  • 1秒以下の表現に有理数を使える
    • t.subsec で 1/3 秒などできる
  • 任意の時差が可能
    • + 2:30 とか
バックグラウンド
  • 自然の話
    • 自然科学では時間は一定ではない
  • 人間の話
    • 暦の話
    • 12月は冬であって欲しいとか
    • 春分の日は 3/20 か 3/21 であってほしいとか
    • 12時は昼であって欲しい
      • 時差とか
      • 閏秒で調整している
    • 夏の間時差を変える
    • ユリウス暦とか
  • 技術の話
    • 32bit time_t の制約
    • 64bit time_t のサポート状況などなど
  • Design Decision
    • Ruby 1.8 でできることは扱う
    • 有理数を扱えるように
    • 相対論やグレゴリオ暦以外はあきらめる
    • 難しいが何とかしたい
    • 時差・閏秒の情報
      • /usr/share/zoneinfo/Asia/Tokyo にある
    • zoneinfo 問題
      • ファイルとしてはデータがあるが,その格納形式は OS に依存
    • zoneinfo を自前で持つ
      • OS に依存しないで全てのタイムゾーンを安定して得られる
      • でもメンテナンスが大変で,OS の zoneinfo と一貫しないかも
    • なるべくなら OS の zoneinfo だけでなんとかやりたい
  • Ruby 1.9.2 の対応
  • 時差の推測
  • 時差が固定のタイムゾーン
  • 複数のタイムゾーンが扱えるようになる.
  • 夏時間の厄介さ
    • 存在しない事項がある
    • 夏時間を戻したときに同じ時間が発生することがある
まとめ
  • 理不尽な制約をなるべくプログラマに見せない
  • 容易なプログラミングの実現

Lightning Talks

「僕たちがSAMITを続ける理由」
  • 人付き合いは一人ではできない
「東京~とちぎ~札幌」
「田舎Ruby親方で元エンドユーザの自分が目指すこと」
  • 続「田舎親方Ruby会議」
  • "red pill を選択した!"
カーリングRuby
  • "栃木の方が田舎だと言っていましたが,何を言っているんだと"
  • "通し番号かもしれないのですが"
  • "いっときますが,わたし,稲作農家です"
  • カーリングDIY
RubyTwitterと私」
  • @h_hiro さん
  • "Twitter のおかげ"
「冬の札幌で、心温まるおしゃべりを。」
「動的HTMLスクレイピング対応並列分散クローラの紹介」
  • Greisi
  • "分散するには,タブを増やせばいい"
View 層のキャッシュシステムにおける問題点とその解決策
  • Fragment cache
    • Proc を遅延評価に使ってしまう
  • View から pull するのがいいよ!
JRuby最新事情@札幌」
  • "動物写真家といっしょ"
  • "世界の @jugyo さんが提案されている"
「そろそろカバレッジについてひとこと言っておくか - アンド・なう」
  • Slow tests
    • 増え続けるテスト
      • テストの数自体を減らす
        • モレなく,ダブりなく
      • そこでカバレッジ
  • micro coverage
    • 産学協同でやります!
達人出版会について」
  • "達人出版会から来ました"
  • TokyuRubu会議の続編
  • 世界を変えよう!

スイーツ懇親会

  • いなり寿司があった
    • たこ焼きはありだとわかった.
  • Akasaka.rb の人に dis られた.これもカリスマのテクニックなのか.
  • コミュニティー紹介で Tokyu.rb の紹介してきた
  • 地域Ruby会議の人といろいろお話しできました.
    • toRuby のあの方は Tokyu.rb の OB であることが判明
    • 仙台Ruby会議に Tokyu.rb の2人が参加すると勝手に宣言してきた

「高アクセス数のWEBサイトをRuby on Railsで構築、運用するためのTips基礎編」

  • "特に稲作農家"
  • 最大 70 req/s
cache
  • 変更がないコンテンツは page cache
    • リンクの URL は .:format (.html) をつけること
  • Action cache, fragment cache
  • Rails までアクセスさせたら負けだと思ってる
    • htcacheclean を忘れずに
    • BASIC認証はキャッシュが聞かない
  • ブラウザのキャッシュを使う
    • Cach-Control
    • Expire
  • トラフィックのサイトを考えるならスケーリングできるように
    • Apache + mod_proxy_balancer を使っているらしい
DB/Storage
  • View を使いましょう
  • インデックスを春
  • find_by_XXX ではなく find_by_sql
  • DBのスケール
  • Storage の I/O
    • CPU 負荷が低くて Load Average が高い場合は I/O が問題
    • パフォーマンスを上げた方がいい
  • セッション
    • active_record_store は使わない
    • やっぱり memcached
    • Rails 2.3 あたりから,セッションの値が膨大になる傾向がある
  • Helper
    • link_to をあまり利用しない
  • Web サーバ
    • mod_evasive
      • 一定時間内の DoS っぽいアクセスを 503 にしてくれる
  • Passenger の Pool サイズ
    • メモリや CPU の空き具合で
  • ブラウザのコネクション数制限
  • 80:20 の法則
    • パフォーマンステストをしてからチューニングしましょう
    • チューニングでコード変更する際は,テストが重要になる
    • monit で監視して自動再起動するようにして,眠りましょう

「大学教員はレシピ先輩たりうるのか -- レシピ先輩製造機としての大学教員(仮)」

  • Ruby 逆引レシピを出しました.
  • 大学教員は catalyst = 触媒
  • だから,レシピ先輩
  • 得も言われぬ楽しさ
    • 伝わんねえ・・・・
  • 教え方がまずかった
    • 課題設定のあいまいさ
    • 教科書にそってやるだけ
    • 呪文過ぎた
  • collaborative
    • 放っておくと
      • 議論が生まれ
      • 役割分担し
      • どうやって問題を解決したのかがわかる
  • challenging
    • やらされた感を
      • 興味ある課題
      • トライ&エラー
      • 難易度の設定
        • 問題をどう作るかが問題
        • 徐々にハードルを上げるのがいいのか
  • みんな大好き dRuby
  • 興味の持続には Ruby と言う選択肢はアリらしい

Ruby/Rails導入への道」

  • 会社の Ruby 割合は 5 割り程度
  • Foot in the door
    • 勉強して,実績作って,広めていけば,いずれ使えるようになる.

GitHub と Jekyll でつくる静的 Web サイト」

  • jpmobile 会議開催しました!
  • "static な"
  • "git clone でバックアップ"
  • "dynamic な"
  • Jekyll は便利そう
    • Web 制作には非常に有効に働きそう

「多様化するRubyの処理系の現在」

  • いろんな Ruby 処理系のご紹介
  • "再利用可能性の追及"
  • 処理系が多いなー
  • 選択肢が多いことは善
  • カリスマチェックが入った!

「Welcome to The Desert of The Real」

  • RubyistRuby Hacker の違い
  • 狭義の Rubyist
  • Ruby を使ったときの気分は,自由だ!
  • "赤いピルを飲めばいい"
  • Ruby は人に優しい言語
    • 今日の田中さんのセッションが Ruby revolition
  • "コードを読みにいかせるモチベーション"
  • The Ruby & Rails Ecosystem White Paper
  • 愛こそ全て
  • Jack in して The MATRIX に入って,赤いピルを飲ませていけばいいんじゃないか
  • 自分のやれるところからかかわっていくのが良いんじゃないでしょうか
    • かかわり方はいろいろあります.

打ち上げ

  • 掘っても掘っても無くならないという舟盛りらしいのだが,うちのテーブルは下敷きの昆布が見えてた
    • 札幌のエースが隣にいたからと言う話.私は普通の寮しか食ってないですよ?
  • 地域Ruby議席になぜかいた.
  • 札幌Ruby会議は地域Ruby会議じゃなくて,Copy of the RubyKaigi だと by @kakutani
    • 他の地域Ruby会議はあのTokyuRuby会議しかしらないので,何とも言いにくいけど,しっかり運営されているよなーとは思った.
  • TokyuRuby会議はいまのままで全然良いらしい.
    • 「別に地域Ruby会議にしなくていいよ?ただ俺がRTしなくなるだけだからwww」 by @kakutani

2次会以降

  • 前方に @_ko1 & @sumim という驚愕の座席に座ることに
    • @ko1_ さんは非情報工学出身者向けの情報工学入門書を書いてくれるそうです!
      • と言っておけば書いてくれるはず><
  • 普通にコース料理っぽいのが出てきた
  • Reject 会議開催
    • みんなのあまりの準備っぷりに驚く
      • 帰り道でネタを思いつくが,まあ機会があれば
  • @snoozer05 さんに相談される
  • 「東京来たときは是非 Tokyu.rb へ」と言っておいた.

感想

  • Ruby に関わるものはみんな手作りなんだなーと言うのを,再認識しました.
    • TokyuRuby会議やったときもそうでしたが,みんなが作り上げていくところに,オープンソース的な何かを感じました.
  • とりあえず rvm と RubySpec はすぐさまインストールします.
    • tdiary は早々に用意します!
  • @takai さんはあれで全力だったのかどうかが疑問
  • カリスマはどんなときもカリスマだよねと言うのを再認識
  • @takai & @kakutani は夜のすすきのへと(((カラオケをしに)))消えていきました.
  • いつも通り大人しくしていました.いつも通りでしたよね?
  • 札幌は熱かった!
    • みんなも地域Ruby会議いくといいよ!
    • むしろ行くべき.1つでもいいから言っておいた方が良い.
    • 特に東京の人は行かないと東京以外の状況が見えなくなるんじゃないかと思う.
      • 私は可能な限り参加する予定にしました!
    • あと前夜祭とか打ち上げも可能な限り参加すべし!
      • Tokyu.rb ではないですが,酒が入らないとダメなときもある.これは真理.
  • 来年中には達人出版会から何か出せるぐらいにはなる.がんばる.