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

sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pmsphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
Takeshi Komiya
 
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 Agronegocios
juanmpalermo
 
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
 
Fiillerde Zaman
Fiillerde ZamanFiillerde Zaman
Fiillerde Zaman
yardimt
 
Fiilde çAtı
Fiilde çAtıFiilde çAtı
Fiilde çAtı
yardimt
 
Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗Playful learningプレゼンテーション 佐宗
Playful learningプレゼンテーション 佐宗
kunitake saso
 

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
 

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
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

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