リアルビジネスruby
DESCRIPTION
KOF 2010 /関西Ruby会議03 で 10月5日発表した内容です。TRANSCRIPT
リアルビジネス Ruby
2010/11/5
cuzic
22
KOF2010 11/5 リアルビジネス Ruby
自己紹介
cuzic といいますきゅーじっく と読みます
Ruby 暦は かれこれもう10年くらいいろんな活動をしています。
Ruby 勉強会@尼崎 10月まで「リファクタリング Ruby エディション」 の読書会をしていました。 来年「メタプログラミング Ruby 」の読書会を始めます。 2011年1月29日(土) の予定・・・。
場所: JR 尼崎駅徒歩 2 分の好立地です
33
KOF2010 11/5 リアルビジネス Ruby
この発表で言いたいこと
不況が長引いていますよね・・・システム開発案件の単価は下がる一方・・・
その一方コンプライアンスはうるさくなって
ルーチンワークは増えまくり
仕事がラクになり、会社も儲かるすぐに使えるRuby 実践事例を紹介します。
44
KOF2010 11/5 リアルビジネス Ruby
キャズムを超えた Ruby
Ruby はキャズムを超えました今は「アーリーマジョリティ」フェーズ
少しずつ、 Ruby での開発案件も増加の傾向
イマココ
イマココ
55
KOF2010 11/5 リアルビジネス Ruby
Ruby は Ruby on Rails だけじゃない
Ruby on Rails Ruby ブレイクの起爆剤WEB アプリケーション開発フレームワークJava の 10 倍開発効率がいい!
けど、それだけじゃない!Ruby は汎用プログラミング言語
ログ処理、ネットワークプログラミング、外部の DLL の呼出し、GUI プログラミング etc 、 etc
他の言語にできて、 Ruby にできないことはない!
いざとなれば、 JRuby や IronRuby などもあるし!
66
KOF2010 11/5 リアルビジネス Ruby
では特に、いつ Ruby を使えるか?
開発の現場を効率化できる事例を3つ紹介
GUI の画面項目の確認作業の自動化テーブル定義書からの SQL の自動生成重複が多いプログラムの自動生成
事務処理業務の効率化事例を2つ紹介複数の Excel ファイルの一括印刷画面遷移が遅く手数が多い WEB 操作の自動化
77
KOF2010 11/5 リアルビジネス Ruby
画面項目の確認作業の自動化(1)
やりたいことGUI 部品の Excel 管理表と、実際にできたGUI 画面とで、不一致がないかどうかの確認
単一行テキスト単一行テキスト名前
複数行テキスト複数行テキスト住所
送信
Excel 管理表で管理されているコントロールやプロパティと作成中のアプリケーションの値が一致しているかを確認
アプリケーション1
88
KOF2010 11/5 リアルビジネス Ruby
画面項目の確認作業の自動化(2)
実現方法Windows アプリケーションは GUI 部品のクラスやプロパティを外部から取得可能 AutoITX : GUI 部品のクラスやプロパティを 取得する一連の関数を COM 技術で公開Excel も COM 技術で、値の取得等が可能Win32OLE : COM 技術を Ruby から利用する ためのライブラリ
超便利。
99
KOF2010 11/5 リアルビジネス Ruby
テーブル定義書からの SQL の自動生成(1)
テーブルの定義から、 CREATE TABLE 等の SQL を自動生成
CREATE TABLE bookmarks ( id SERIAL PRIMARY KEY, user_id INTEGER , url VARCHAR(255) FOREIGN KEY (user_id) REFERENCES users(id));
1010
KOF2010 11/5 リアルビジネス Ruby
テーブル定義書からの SQL 自動生成(2)
Excel は Ruby から COM 経由で操作可能テキスト生成は Ruby の得意分野!自動生成することで
2度手間を削減することができる生成される SQL の品質を一定化できる管理表の品質が保持されやすくなる
逆向きも可能実際のデータベースからリバースエンジニアリングして、テーブル定義書 (Excel) の生成ActiveRecord と Win32OLE の夢の協演が実現
1111
KOF2010 11/5 リアルビジネス Ruby
重複が多いプログラムの自動生成(1)
GUI プログラムの自動生成コントロールの配置などは非常に単純な作業のため、自動生成に向いている
テストプログラムの自動生成特にユニットテストでの利用が多いようですIronRuby 、 JRuby を活用して、他の言語のテストを Ruby で書くこともできますWEB ・・・ Selenium Ruby で統合テストを作成可能
Selenium ・・・ WEB ブラウザを利用したテスト自動化ツール
Ruby on Rails の script/generate も自動生成の例データベース関係は自動生成の宝庫
Data Access Object の自動生成
1212
KOF2010 11/5 リアルビジネス Ruby
重複が多いプログラムの自動生成(2)
プログラム自動生成は何が良いか?品質の底上げにつながる
似たコードが生成されるため、保守性が向上ベテランのノウハウを新人に自然に伝授できる
Ruby on Rails ではコードの自動生成によって、MVC Framework
Convention over Configuration
Test First
などのノウハウを自然に学べるよう工夫されているベテランにとってもツールに落とし込む過程で、互いの開発ノウハウ、規約を共有・洗練できる
1313
KOF2010 11/5 リアルビジネス Ruby
事務処理業務の効率化事例 ( Excel 編)
複数の Excel 帳票を開いて、一括印刷Ruby を使えば、複数の Excel ブック印刷も簡単
Excel は非常に多くの作業を COM で公開値の入力、取得、変更、セルの表示形式の設定罫線の取得、生成。グラフの作成オートシェイプの作成。色等の加工画像処理(明るさの変更、グループ化画像を1枚に)印刷設定の変更( A4 縦、 A3 横 etc )、印刷
filename1 = “ ~~ .xls” ; filename2 = “ ~~ .xls”xl = WIN32OLE.new(“Excel.Application”)xl.Workbooks.Add(filename1); xl.Workbooks.Add(filename2)xl.Workbooks.each do |book| book.PrintOutend
1414
KOF2010 11/5 リアルビジネス Ruby
事務処理業務の効率化事例( WEB 編)
WEB 基幹ソフト操作の自動化も可能方法1: 情報取得のみであれば、
open-uri 、 mechanize などの利用が効果的wget などの外部実行ファイルも開発効率向上に役立つ
方法2: 操作が必要で、 Ajax などもあれば・・・
InternetExplorer を COM 経由で制御FireFox を Selenium 経由で制御
方法3: JavaApplet などもあれば・・・開発者ならいろいろ方法がありますが、ただの利用者なら汎用的な AutoIT などで、キーボード操作、マウス操作をシミュレートして、自動操作する必要も・・・。
1515
KOF2010 11/5 リアルビジネス Ruby
まとめ
いろいろな 実際の業務をカイゼンする方法を紹介してきました
時間が残っているようなので、質疑応答デモンストレーション質疑応答(自問自答編)
の3つを用意しています。
1616
KOF2010 11/5 リアルビジネス Ruby
質疑応答(自問自答編)
1717
KOF2010 11/5 リアルビジネス Ruby
いろんなテクを紹介してきましたが・・・
Q. うまく自動化して、効率化できる作業をどうやって見つけるの?
作業をしている本人なら、わりかし簡単ネックとなるのは「できるわけがない」という思い込み実は意外に結構どんな業務でも自動化できちゃう
Q. 管理職が部下の効率化可能な業務を見つけ出せるか?
これは案外 難しい・・・。そもそも、管理職は部下の業務内容を知らない・・・。日常的な事務処理などのルーチンワークの詳細は知らない
どんな業務をしているか気軽に話せる関係が必要
1818
KOF2010 11/5 リアルビジネス Ruby
なんで、 Ruby ?
Q. 今回紹介したのって COM とか結構どの言語からでも利用できるものが多いけど、なんで、開発言語は Ruby を採用するの?A. 汎用性と生産性のバランスが優れているから汎用性) シェルスクリプトや Makefile の代替から 大規模アプリケーションまで可能 Win32API の呼び出しや JRuby 、 IronRuby を利用して、
既存のアプリケーション資産の活用も可能であるため。生産性) ハッシュや正規表現リテラルの存在 豊富なライブラリの存在 読みやすく、覚えやすい文法 (昔、 Makefile や bash スクリプトをかなり高度に使いこなせる まで勉強しましたが、実現できる内容に比べてしんどかった・・・)
1919
KOF2010 11/5 リアルビジネス Ruby
タイトルは釣り?
Q. もっと開発案件としての Ruby の動向とかを聞きたいんだけどA. 残念ながら、 cuzic はその専門ではありません。それでも回答すると・・・
・一般に、 Ruby 採用事例は増えているようです。 ・ただ、現状でも PHP 、 Java などの開発が主流です ・短納期、高機能の WEB システム開発が多いそう ・運用・デプロイ、レンタルサーバ業者の選定、
チーム開発 などに課題が多いようです ・全体に今は幻滅期を乗り越え、適切な要件の場合に
Ruby を採用しようとする機運が進んでいるようです。
2020
KOF2010 11/5 リアルビジネス Ruby
自動化がうまくいかないような例は?
Q. 逆に自動化がうまくいかないような事例は?A. いっぱいあります。 特に複雑な判断が必要な場合は、自動化せず、 人手で介するようにした方がいいと思います。
典型的にはデータのクレンジング作業は、人手で実施して、機械処理用のデータを入力したのちに、自動処理させるというのは1つのノウハウです。
あと、たとえ単純作業でも Java アプレットとかネイティブでない GUI の場合は難しいです。マウス、キーボード制御、画像キャプチャ、 OCR などを組合せなきゃダメなこともあったり・・・。