Top Banner
tDiary Ruby1.9 対応の過程と 今後のロードマップ 柴田 博志 (tDiary.org) SHIBATA Hiroshi (tDiary.org) Our tDiary's policy and strategies to support Ruby 1.9 and our future plan. 1 2009719日日曜日
80

RubyKaigi2009 Presentation Slide

May 15, 2015

Download

Technology

Hiroshi SHIBATA

Our tDiary's policy and strategies to support Ruby 1.9 and our future plan.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RubyKaigi2009 Presentation Slide

tDiary の Ruby1.9 対応の過程と今後のロードマップ

柴田 博志 (tDiary.org)

SHIBATA Hiroshi (tDiary.org)

Our tDiary's policy and strategies to support Ruby 1.9 and our future plan.

12009年7月19日日曜日

Page 2: RubyKaigi2009 Presentation Slide

自己紹介

22009年7月19日日曜日

Page 3: RubyKaigi2009 Presentation Slide

• SHIBATA Hiroshi a.k.a hsbt (hsbt.org)

• ソフトウェアエンジニア

• 1981年生まれ 北海道在住

32009年7月19日日曜日

Page 4: RubyKaigi2009 Presentation Slide

Rubyとの関わり

• 高専4年の時の応用数学で id:gotoken から教えてもらう

• tDiary を使い始めて主にWeb関連のライブラリを使い始める

42009年7月19日日曜日

Page 5: RubyKaigi2009 Presentation Slide

• Administrator of developer team for tDiary.org

52009年7月19日日曜日

Page 6: RubyKaigi2009 Presentation Slide

RubyKaigi2009テーマ「変わる/変える」

62009年7月19日日曜日

Page 7: RubyKaigi2009 Presentation Slide

よろしくお願いします。

72009年7月19日日曜日

Page 8: RubyKaigi2009 Presentation Slide

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

82009年7月19日日曜日

Page 9: RubyKaigi2009 Presentation Slide

まずはじめに

92009年7月19日日曜日

Page 10: RubyKaigi2009 Presentation Slide

tDiary使ってる人いますか?

102009年7月19日日曜日

Page 11: RubyKaigi2009 Presentation Slide

tDiary

112009年7月19日日曜日

Page 12: RubyKaigi2009 Presentation Slide

tDiaryと言えば…

122009年7月19日日曜日

Page 13: RubyKaigi2009 Presentation Slide

tDiary

• feed reader でコメントスパムが(ry

• tDiaryのソースコードは読まない方が(ry

• テストコードがない典型的レガシーコー(ry

132009年7月19日日曜日

Page 14: RubyKaigi2009 Presentation Slide

tDiary

• Tsukkomi oriented Diary system

• before Railsから開発継続中(25年計画)

• Rubyと共に成長

• レンタルサーバーにRubyを入れさせる作戦

142009年7月19日日曜日

Page 15: RubyKaigi2009 Presentation Slide

tDiaryはRubyと共に成長

152009年7月19日日曜日

Page 16: RubyKaigi2009 Presentation Slide

2009/01/30Ruby 1.9 Release!

162009年7月19日日曜日

Page 17: RubyKaigi2009 Presentation Slide

Ruby 1.9使ってる人いますか?

172009年7月19日日曜日

Page 18: RubyKaigi2009 Presentation Slide

RubyKaigi2009テーマ「変わる/変える」

182009年7月19日日曜日

Page 19: RubyKaigi2009 Presentation Slide

「変える」tDiary による Ruby

1.9 普及作戦

192009年7月19日日曜日

Page 20: RubyKaigi2009 Presentation Slide

tDiary によるRuby 1.9 普及作戦

• Ruby 1.9はいつかは使わなければならない

• tDiaryをRuby 1.9普及のキラーアプリにする

• とりあえず動くからRubyを1.9にバージョンアップしてしまう

202009年7月19日日曜日

Page 21: RubyKaigi2009 Presentation Slide

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

212009年7月19日日曜日

Page 22: RubyKaigi2009 Presentation Slide

tDiary-2.3.2リリース計画

(Ruby 1.9 サポート)

222009年7月19日日曜日

Page 23: RubyKaigi2009 Presentation Slide

とりあえず動かしてみる

232009年7月19日日曜日

Page 24: RubyKaigi2009 Presentation Slide

orz242009年7月19日日曜日

Page 25: RubyKaigi2009 Presentation Slide

でもやるんだよby kakutani

252009年7月19日日曜日

Page 26: RubyKaigi2009 Presentation Slide

とりあえず何から始めたものか…

262009年7月19日日曜日

Page 27: RubyKaigi2009 Presentation Slide

まずは計画272009年7月19日日曜日

Page 28: RubyKaigi2009 Presentation Slide

2008年12月神奈川県某所

282009年7月19日日曜日

Page 29: RubyKaigi2009 Presentation Slide

作戦会議292009年7月19日日曜日

Page 30: RubyKaigi2009 Presentation Slide

Ruby 1.9 での主な対応

•過去バージョンとの非互換部分

•文字エンコーディングの変更

302009年7月19日日曜日

Page 31: RubyKaigi2009 Presentation Slide

Ruby 1.9 対応計画

•1.8と1.9に存在する様々な非互換をどうするか

•magic comment をどうするか

312009年7月19日日曜日

Page 32: RubyKaigi2009 Presentation Slide

Ruby 1.9対応計画

•ruby 実行時の --encodingどうするか

•エンコーディング周りの細かい修正どうするか

322009年7月19日日曜日

Page 33: RubyKaigi2009 Presentation Slide

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

332009年7月19日日曜日

Page 34: RubyKaigi2009 Presentation Slide

Ruby 1.9 対応の詳細

342009年7月19日日曜日

Page 35: RubyKaigi2009 Presentation Slide

その1

互換性対応(core/misc/lib/compatible.rb)

352009年7月19日日曜日

Page 36: RubyKaigi2009 Presentation Slide

compatible.rb

• プロトタイプは machu さんが作成

• 1.8と1.9との非互換を吸収

• for 1.9: String.each_line, String.to_a ...

• for 1.8: String.force_encoding, String.bytesize ...

362009年7月19日日曜日

Page 37: RubyKaigi2009 Presentation Slide

その2

マジコメる(magic comment ru)

372009年7月19日日曜日

Page 38: RubyKaigi2009 Presentation Slide

マジコメる

•*.rb の1行目に文字エンコーディングを明示

•shebang が使われているものは2行目

382009年7月19日日曜日

Page 39: RubyKaigi2009 Presentation Slide

お題

1行目に任意の文字列を挿入するワンライナーを書きなさい

392009年7月19日日曜日

Page 40: RubyKaigi2009 Presentation Slide

gsed -i "1s/.*/# -\*- coding: utf-8; -\*-\n&/" **/*.rb

sed を使うんだ!

402009年7月19日日曜日

Page 41: RubyKaigi2009 Presentation Slide

その3

ruby --encoding=utf-8

412009年7月19日日曜日

Page 42: RubyKaigi2009 Presentation Slide

ruby --encoding=utf-8

• ruby 実行時に --encoding オプションをつけることでエンコーディングを強制できる

• tDiaryの場合だとindex.rbやupdate.rbのshebangに追加

• ユーザーに優しく無いので意識しなくても動くようにする

422009年7月19日日曜日

Page 43: RubyKaigi2009 Presentation Slide

その4

外部エンコーディングの指定

432009年7月19日日曜日

Page 44: RubyKaigi2009 Presentation Slide

外部エンコーディングの指定

•最初はopen( file, ‘r:utf-8’) を使っていた

•Ruby 1.8.6 だと使えない技

•却下442009年7月19日日曜日

Page 45: RubyKaigi2009 Presentation Slide

Encoding::default_external = ‘UTF-8’

default_externalを使うんだ!

452009年7月19日日曜日

Page 46: RubyKaigi2009 Presentation Slide

関係者連絡

RUBY_VERSIONは使わない

462009年7月19日日曜日

Page 47: RubyKaigi2009 Presentation Slide

その他細かい修正

472009年7月19日日曜日

Page 48: RubyKaigi2009 Presentation Slide

細かい修正• cgi.cookies が ASCII-8BIT と認識されるので

encodingを個別に指定する

• ブロックをつけない map は Enumerator を返すようになったので to_a する

• get の第二引数が nil 許容しなくなったので何らかの値を指定

482009年7月19日日曜日

Page 49: RubyKaigi2009 Presentation Slide

ここまで対応すると…

492009年7月19日日曜日

Page 50: RubyKaigi2009 Presentation Slide

ひとまず動作確認完了

502009年7月19日日曜日

Page 51: RubyKaigi2009 Presentation Slide

ところが…

512009年7月19日日曜日

Page 52: RubyKaigi2009 Presentation Slide

eval実行時にSecurityError

522009年7月19日日曜日

Page 53: RubyKaigi2009 Presentation Slide

eval実行時にSecurityError

532009年7月19日日曜日

Page 54: RubyKaigi2009 Presentation Slide

[BUG]だった• $SAFE= 1の時のevalに[BUG]

• 直るまでこんな感じで対応

542009年7月19日日曜日

Page 55: RubyKaigi2009 Presentation Slide

ruby-1.9.1p129 で bug fix

552009年7月19日日曜日

Page 56: RubyKaigi2009 Presentation Slide

老師曰く• Ruby の [BUG] を踏んだら喜びなさい

• Ruby の [BUG] を踏むようになってから一人前のアプリケーション

• ただのレガ(ry

562009年7月19日日曜日

Page 57: RubyKaigi2009 Presentation Slide

2009/05/08tDiary-2.3.2 リリース

572009年7月19日日曜日

Page 58: RubyKaigi2009 Presentation Slide

めでたしめでたし

582009年7月19日日曜日

Page 59: RubyKaigi2009 Presentation Slide

hsbt.org

592009年7月19日日曜日

Page 60: RubyKaigi2009 Presentation Slide

Agenda

• まずはじめに

• tDiary-2.3.2リリース計画(Ruby 1.9 サポート)

• Ruby 1.9 対応の詳細

• tDiary-2.3.3~ future

602009年7月19日日曜日

Page 61: RubyKaigi2009 Presentation Slide

「変わる」tDiary-2.3.3~ future

612009年7月19日日曜日

Page 62: RubyKaigi2009 Presentation Slide

tDiary-2.3.3~ future

• testing frameworkの採用

• rspec

• cucumber

• CGIからRackへの載せ替え

• 機能追加と不具合修正

622009年7月19日日曜日

Page 63: RubyKaigi2009 Presentation Slide

testing framework

• 老師(マイケル・C・フェザーズ)曰く:

• 自信を持って変更ができない• 燃料: rspecとcucumber

「テストが無いコードはレガシーコード」

632009年7月19日日曜日

Page 64: RubyKaigi2009 Presentation Slide

rspec

•pluginの挙動をテスト

•contribの成果をcoreにマージ予定

642009年7月19日日曜日

Page 65: RubyKaigi2009 Presentation Slide

cucumber

•シナリオをテスト•testable_tdiary の成果をマージ済

652009年7月19日日曜日

Page 66: RubyKaigi2009 Presentation Slide

testable_tdiary!!

662009年7月19日日曜日

Page 67: RubyKaigi2009 Presentation Slide

おさらい

672009年7月19日日曜日

Page 68: RubyKaigi2009 Presentation Slide

SapporoRubyKaigi01

682009年7月19日日曜日

Page 69: RubyKaigi2009 Presentation Slide

詳しくは…

• 札幌tDiary会議01の角谷さんのスライドを参照

• http://kakutani.com/20081025.html#p01

692009年7月19日日曜日

Page 70: RubyKaigi2009 Presentation Slide

testable_tdiary のマージ

702009年7月19日日曜日

Page 71: RubyKaigi2009 Presentation Slide

githubで作業中

http://github.com/hsbt/tdiary/tree/testable_merge

712009年7月19日日曜日

Page 72: RubyKaigi2009 Presentation Slide

作業ステータス

•script/server (pure webrick)

•rackup -s webrick tdiary.ru

•cucumber -l ja features

•一部のシナリオのみ動く

722009年7月19日日曜日

Page 73: RubyKaigi2009 Presentation Slide

tDiary会議報告

732009年7月19日日曜日

Page 74: RubyKaigi2009 Presentation Slide

夢のある世界tDiary cgi.rb

webrick

rack

cgi.rb

webrick

passenger

742009年7月19日日曜日

Page 75: RubyKaigi2009 Presentation Slide

ユーザー/コミッタの声• cacheフォルダにcacheじゃないデータがある

• XMLRPCが動かないまま放置されている

• mod_ruby怪しいからfcgiを取り込みたい

• Ruby 1.9 で動かすと微妙に遅い

752009年7月19日日曜日

Page 76: RubyKaigi2009 Presentation Slide

僕らの道のりはまだまだ長い

762009年7月19日日曜日

Page 77: RubyKaigi2009 Presentation Slide

まとめ

772009年7月19日日曜日

Page 78: RubyKaigi2009 Presentation Slide

まとめ• tDiaryはRubyと共に成長しています

• 「変える」: tDiaryがRuby1.9に対応したので皆さん使いましょう

• 「変わる」: tDiaryは2.3.3でレガシーコードから卒業します

782009年7月19日日曜日

Page 79: RubyKaigi2009 Presentation Slide

ご静聴ありがとうございました

792009年7月19日日曜日

Page 80: RubyKaigi2009 Presentation Slide

Q&A

802009年7月19日日曜日