SlideShare a Scribd company logo
1 of 27
王子様本のRuby1.9対応を調べる つぼい @tsuboi
自己紹介 名前 つぼい twitter: @tsuboi すみかとかつどう 某社R&Dセンター(最近は傭兵として地方遠征中) 平日のネットは某社内IRC とちぎRubyは拡大会には参加(欠席一回) Rubyはほそぼそと10年(反省:使い方が変わってない) お仕事 新しめのファイル共有とか文書管理とかメッセージ交換なシステムを考えたり作ったり 最近のトピック 好き勝手にクラウドとか言うやつは死んでしまえ 先週、自由な生活を手放してしまいました
ある日の某IRC Seki「だれか幸福の王子様本が1.9で動くか、調べてほしい!」(そうすれば初刷脱出だ!)
幸福の王子様本
要件の確認 顧客要件 「dRubyによる分散・Webプログラミング」の売り上げを増やすこと とちぎ的な要件 Seki節を布教し、とちぎRuby会議の次回参加者を増やすこと 次の戦いのために。次の次の戦いのために。
よろしい、では作戦開始だ 方法 幸福の王子様本のサンプルコードをRuby1.9で動かしてまわる 妥協点 本文中の自然言語上の非対応やスニペットが動かないのは目をつぶる 完全な検証は要件でないことに注意 課題 どうやってサンプルコードを入手するか? 賢者さまから直接もらう ×紳士はそんな無粋なことはしない ひたすら手入力 ×ネタにならない (学習としてはこれがベターではある) 最新でじたるテクノロジーでなんとかする
Buy
Split
Scan スーパーファイン(白黒600dpi) 白黒 両面読み込み OCRなし、自動傾き補正なし
OCR ScanSnap標準添付 読み取り精度は悪くない程度 コストパフォーマンスでは国内最強 (東芝製は精度高いけど値段も高い) ダウンロード価格4800円 英語モードか日本語モードかはプログラムが対象の場合は微妙 (大文字小文字変換を後処理で行うなら、日本語モードの方が分がいいことも)
PDFからのテキスト抽出 Rubyな人ならrroongaの ChupaTextを使う http://groonga.rubyforge.org/#about-chupatext Macな人ならOS-XのPDFKitを使う OSX::PDFDocument.alloc.initWithURL(file_url).string.scan(/doi[|:].*/i)[0]].join("") 手っ取り早くいくならxdoc2txt http://www31.ocn.ne.jp/~h_ishida/xdoc2txt.html
I) A "2.4 reminder cuiO.rb class ReminderCUI def initialize(reminder) @model = reminder end deflist @model.to_a.each do Ik, vi puts format_item(k, v) end nil end def add(str) @model.add(str) End def show (key) puts format_item (key, @model[key]) end def delete(key) putsツキ [delete? (Yin)]: #{@model[key]}” if lツ・s*nツ・s*1 =- gets puts "canceled” return end @model.delete(key) list end private defformat_item (key, str) sprintf("%3d: %sツ・n", key, str) end end 9 - ~ -t Iv 3 "f
I) A "2.4 reminder cuiO.rb class ReminderCUI def initialize(reminder) @model = reminder end deflist @model.to_a.each do Ik, vi puts format_item(k, v) end nil end def add(str) @model.add(str) End def show (key) puts format_item (key, @model[key]) end def delete(key) putsツキ [delete? (Yin)]: #{@model[key]}” if lツ・s*nツ・s*1 =- gets puts "canceled” return end @model.delete(key) list end private defformat_item (key, str) sprintf("%3d: %sツ・n", key, str) end end 9 - ~ -t Iv 3 "f
(唯一の)まじめな話 RubyコードをOCRする際にぶつかる壁 ダブルクォートが認識にしくい パイプ「|」の認識精度が極めて悪い ←かなりどうしようもない 辞書に存在しない単語がひどいことに(変数や関数名) 英語モードで認識すると、「¥」が認識できない 王子本はこの点がつらい 意外と大丈夫な点 Rubyはスペースの有無に対して比較的ロバスト 王子本も実はけっこうばらばら インデントがなくなっても大丈夫 一般的な問題(ポストフィルタで対応) ページ境界 ページヘッダ、フッダの除去 半角、全角がばらばらになる(特に日本語モード)
このままでは 調査ができません!!
大丈夫だ
電子書籍として買えるようにしておいた! http://estore.ohmsha.co.jp
わかっていると思いますが 買うのはこれです。
一緒に買うと960円もお得です(お支払いはPayPalで)
リスト 2.4 reminder_cui0.rb class ReminderCUIdef initialize(reminder) @model = reminder end def list @model.to_a.each do |k, v| puts format_item(k, v) end nil end def add(str) @model.add(str) end def show(key) puts format_item(key, @model[key]) end def delete(key) puts" [delete? (Y/n)]: #{@model[key]}" if /¥s*n¥s*/ =~ gets puts "canceled" return end @model.delete(key) list end private defformat_item(key, str) sprintf("%3d: %s¥n", key, str) end end ターミナル 3 で ReminderCUIを起動して実験しましょう(図 2.4)。 さすがにほぼOK! しかし、よくわからないルールで改行が落ちる (Privateなどが単独行にならない)
ひとまずの要約 Ruby関係の書籍に掲載されているサンプルコードをOCRする際に遭遇する課題を、簡単にまとめてみました 結論:ためらいなく、容赦なく、電子書籍版を買え(時は金なり) ただし、完全ではない。ポストフィルタを書く必要はありそう。 改行が怪しい(これはPDFビューア/ツールの問題かもしれない) 見やすさ優先でダブルクォートが全角になっている本もある なお、インデントが重要な言語の場合は、手打ちかダウンロードサイトがある書籍を選びましょう
で、Ruby1.9で動いたの? ハァ、まぁ賢者さまがすでに確認済じゃないんですか? 4章までは動きました(ちなみに5章はスレッドネタ)
問題が出たらWebへ改訂版に備えて加筆中らしい http://d.hatena.ne.jp/m_seki+b/
まとめ:要件の確認 とちぎRuby会議 LT CM枠(?)で王子本を紹介 Amazonでの王子本の買い方の紹介 オーム社 eStore(β)での王子本の買い方の紹介 さらに、王子のサイトを紹介 +b を紹介 なにより、Ustreamで全世界に露出 スタッフの皆さんに感謝 すくなくとも、私が2冊買いました

More Related Content

What's hot

「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)
「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)
「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)Yoshikazu GOTO
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Soudai Sone
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmTakeshi Komiya
 
底辺部な勉強会へのお誘い
底辺部な勉強会へのお誘い底辺部な勉強会へのお誘い
底辺部な勉強会へのお誘いYAMANE Toshiaki
 
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理Akishige TAKEKOSHI
 
htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話司 知花
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入Hisao Soyama
 

What's hot (9)

「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)
「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)
「DNS浸透いうな」と言うけれど… (OSC 2018 Tokyo/Spring)
 
Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由Web エンジニアが postgre sql を選ぶ 3 つの理由
Web エンジニアが postgre sql を選ぶ 3 つの理由
 
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
 
底辺部な勉強会へのお誘い
底辺部な勉強会へのお誘い底辺部な勉強会へのお誘い
底辺部な勉強会へのお誘い
 
2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理2017 02-14 キュー実装に見る排他処理
2017 02-14 キュー実装に見る排他処理
 
tsudaりについて
tsudaりについてtsudaりについて
tsudaりについて
 
htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話htmlとjsだけでチャットが実装できちゃった話
htmlとjsだけでチャットが実装できちゃった話
 
グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入グラフデータベース「Neo4j」の 導入の導入
グラフデータベース「Neo4j」の 導入の導入
 
Osh2014
Osh2014Osh2014
Osh2014
 

Viewers also liked

Unidad Agronegocios
Unidad AgronegociosUnidad Agronegocios
Unidad Agronegociosjuanmpalermo
 
Play play playトークイベント
Play play playトークイベントPlay play playトークイベント
Play play playトークイベントkunitake saso
 
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)yardimt
 
التعليم الإلكتروني E learning
التعليم الإلكتروني E learningالتعليم الإلكتروني E learning
التعليم الإلكتروني E learningmg33662
 
CAG Report On Offset Details
CAG Report On Offset DetailsCAG Report On Offset Details
CAG Report On Offset DetailsAnkur Gupta
 
Zientzia Hezkuntza Moodle Tere Santos
Zientzia Hezkuntza Moodle Tere SantosZientzia Hezkuntza Moodle Tere Santos
Zientzia Hezkuntza Moodle Tere SantosMoodleMoot Euskadi
 
Fiillerde Zaman
Fiillerde ZamanFiillerde Zaman
Fiillerde Zamanyardimt
 
Sesiones Online Xabier Basogain
Sesiones Online Xabier BasogainSesiones Online Xabier Basogain
Sesiones Online Xabier BasogainMoodleMoot Euskadi
 
Class Project MBA-29
Class Project MBA-29Class Project MBA-29
Class Project MBA-29guest268b49
 
Distributed Systems In One Lesson
Distributed Systems In One LessonDistributed Systems In One Lesson
Distributed Systems In One LessonTim Berglund
 
Fiilde çAtı
Fiilde çAtıFiilde çAtı
Fiilde çAtıyardimt
 
The MOOC Phenomenon: What Does it Mean for Business Schools?
The MOOC Phenomenon: What Does it Mean for Business Schools?The MOOC Phenomenon: What Does it Mean for Business Schools?
The MOOC Phenomenon: What Does it Mean for Business Schools?Jeremy Williams
 
A Simple Direct Marketing Primer for Business Executives & Digital Marketers
A Simple Direct Marketing Primer for Business Executives & Digital MarketersA Simple Direct Marketing Primer for Business Executives & Digital Marketers
A Simple Direct Marketing Primer for Business Executives & Digital MarketersGilbert Direct Marketing, Inc.
 
Increased FDI in defence manufacturing Press Note (7), 2014 series.
Increased FDI in defence manufacturing Press Note (7), 2014 series.Increased FDI in defence manufacturing Press Note (7), 2014 series.
Increased FDI in defence manufacturing Press Note (7), 2014 series.Ankur Gupta
 
What I Learned At Drupal Con Dc 2009
What I Learned At Drupal Con Dc 2009What I Learned At Drupal Con Dc 2009
What I Learned At Drupal Con Dc 2009Neil Giarratana
 
Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗kunitake saso
 
Social media marketing per gNe
Social media marketing per gNeSocial media marketing per gNe
Social media marketing per gNeFabrizio Faraco
 
Sözcükte Anlam Özellikleri
Sözcükte Anlam ÖzellikleriSözcükte Anlam Özellikleri
Sözcükte Anlam Özellikleriyardimt
 

Viewers also liked (20)

Unidad Agronegocios
Unidad AgronegociosUnidad Agronegocios
Unidad Agronegocios
 
Economia
EconomiaEconomia
Economia
 
Play play playトークイベント
Play play playトークイベントPlay play playトークイベント
Play play playトークイベント
 
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)
5 söz öbekleri-3-(atasözleri-özdeyişler-dolaylama-güzel adlandırma)
 
التعليم الإلكتروني E learning
التعليم الإلكتروني E learningالتعليم الإلكتروني E learning
التعليم الإلكتروني E learning
 
CAG Report On Offset Details
CAG Report On Offset DetailsCAG Report On Offset Details
CAG Report On Offset Details
 
Zientzia Hezkuntza Moodle Tere Santos
Zientzia Hezkuntza Moodle Tere SantosZientzia Hezkuntza Moodle Tere Santos
Zientzia Hezkuntza Moodle Tere Santos
 
Fiillerde Zaman
Fiillerde ZamanFiillerde Zaman
Fiillerde Zaman
 
Sesiones Online Xabier Basogain
Sesiones Online Xabier BasogainSesiones Online Xabier Basogain
Sesiones Online Xabier Basogain
 
Class Project MBA-29
Class Project MBA-29Class Project MBA-29
Class Project MBA-29
 
Distributed Systems In One Lesson
Distributed Systems In One LessonDistributed Systems In One Lesson
Distributed Systems In One Lesson
 
Fiilde çAtı
Fiilde çAtıFiilde çAtı
Fiilde çAtı
 
The MOOC Phenomenon: What Does it Mean for Business Schools?
The MOOC Phenomenon: What Does it Mean for Business Schools?The MOOC Phenomenon: What Does it Mean for Business Schools?
The MOOC Phenomenon: What Does it Mean for Business Schools?
 
A Simple Direct Marketing Primer for Business Executives & Digital Marketers
A Simple Direct Marketing Primer for Business Executives & Digital MarketersA Simple Direct Marketing Primer for Business Executives & Digital Marketers
A Simple Direct Marketing Primer for Business Executives & Digital Marketers
 
Increased FDI in defence manufacturing Press Note (7), 2014 series.
Increased FDI in defence manufacturing Press Note (7), 2014 series.Increased FDI in defence manufacturing Press Note (7), 2014 series.
Increased FDI in defence manufacturing Press Note (7), 2014 series.
 
Corporate Lessons
Corporate LessonsCorporate Lessons
Corporate Lessons
 
What I Learned At Drupal Con Dc 2009
What I Learned At Drupal Con Dc 2009What I Learned At Drupal Con Dc 2009
What I Learned At Drupal Con Dc 2009
 
Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗
 
Social media marketing per gNe
Social media marketing per gNeSocial media marketing per gNe
Social media marketing per gNe
 
Sözcükte Anlam Özellikleri
Sözcükte Anlam ÖzellikleriSözcükte Anlam Özellikleri
Sözcükte Anlam Özellikleri
 

More from toRuby

Tリック・サンダース / "去年の社会人一年生のRuby研修"
Tリック・サンダース / "去年の社会人一年生のRuby研修"Tリック・サンダース / "去年の社会人一年生のRuby研修"
Tリック・サンダース / "去年の社会人一年生のRuby研修"toRuby
 
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕toRuby
 
「儲かるWiki」江渡浩一郎
「儲かるWiki」江渡浩一郎「儲かるWiki」江渡浩一郎
「儲かるWiki」江渡浩一郎toRuby
 
「Rubyで描くビジネスモデル」池澤 一廣
「Rubyで描くビジネスモデル」池澤 一廣「Rubyで描くビジネスモデル」池澤 一廣
「Rubyで描くビジネスモデル」池澤 一廣toRuby
 
大川祐介
大川祐介大川祐介
大川祐介toRuby
 
樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) 樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) toRuby
 

More from toRuby (7)

Tリック・サンダース / "去年の社会人一年生のRuby研修"
Tリック・サンダース / "去年の社会人一年生のRuby研修"Tリック・サンダース / "去年の社会人一年生のRuby研修"
Tリック・サンダース / "去年の社会人一年生のRuby研修"
 
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕
「雑談コミュニケーションのススメ(インド人編)」佐藤 基裕
 
「儲かるWiki」江渡浩一郎
「儲かるWiki」江渡浩一郎「儲かるWiki」江渡浩一郎
「儲かるWiki」江渡浩一郎
 
「Rubyで描くビジネスモデル」池澤 一廣
「Rubyで描くビジネスモデル」池澤 一廣「Rubyで描くビジネスモデル」池澤 一廣
「Rubyで描くビジネスモデル」池澤 一廣
 
大川祐介
大川祐介大川祐介
大川祐介
 
樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会) 樽家昌也 (日本Rubyの会)
樽家昌也 (日本Rubyの会)
 
stuboi
stuboistuboi
stuboi
 

坪井創吾さん / "王子様本のRuby1.9対応を調べる"