リアルビジネスruby

20
リリリリリリリ Ruby 2010/11/5 cuzic

Upload: tomoya-cuzic

Post on 30-Jun-2015

1.298 views

Category:

Technology


1 download

DESCRIPTION

KOF 2010 /関西Ruby会議03 で 10月5日発表した内容です。

TRANSCRIPT

Page 1: リアルビジネスRuby

リアルビジネス Ruby

2010/11/5

cuzic

Page 2: リアルビジネスRuby

22

KOF2010 11/5 リアルビジネス Ruby

自己紹介

cuzic といいますきゅーじっく と読みます

Ruby 暦は かれこれもう10年くらいいろんな活動をしています。

Ruby 勉強会@尼崎 10月まで「リファクタリング Ruby エディション」 の読書会をしていました。 来年「メタプログラミング Ruby 」の読書会を始めます。 2011年1月29日(土) の予定・・・。

場所: JR 尼崎駅徒歩 2 分の好立地です

Page 3: リアルビジネスRuby

33

KOF2010 11/5 リアルビジネス Ruby

この発表で言いたいこと

不況が長引いていますよね・・・システム開発案件の単価は下がる一方・・・

その一方コンプライアンスはうるさくなって

ルーチンワークは増えまくり

仕事がラクになり、会社も儲かるすぐに使えるRuby 実践事例を紹介します。

Page 4: リアルビジネスRuby

44

KOF2010 11/5 リアルビジネス Ruby

キャズムを超えた Ruby

Ruby はキャズムを超えました今は「アーリーマジョリティ」フェーズ

少しずつ、 Ruby での開発案件も増加の傾向

イマココ

イマココ

Page 5: リアルビジネス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 などもあるし!

Page 6: リアルビジネスRuby

66

KOF2010 11/5 リアルビジネス Ruby

では特に、いつ Ruby を使えるか?

開発の現場を効率化できる事例を3つ紹介

GUI の画面項目の確認作業の自動化テーブル定義書からの  SQL の自動生成重複が多いプログラムの自動生成

事務処理業務の効率化事例を2つ紹介複数の Excel ファイルの一括印刷画面遷移が遅く手数が多い WEB 操作の自動化

Page 7: リアルビジネスRuby

77

KOF2010 11/5 リアルビジネス Ruby

画面項目の確認作業の自動化(1)

やりたいことGUI 部品の Excel 管理表と、実際にできたGUI 画面とで、不一致がないかどうかの確認

単一行テキスト単一行テキスト名前

複数行テキスト複数行テキスト住所

送信

Excel 管理表で管理されているコントロールやプロパティと作成中のアプリケーションの値が一致しているかを確認

アプリケーション1

Page 8: リアルビジネスRuby

88

KOF2010 11/5 リアルビジネス Ruby

画面項目の確認作業の自動化(2)

実現方法Windows アプリケーションは GUI 部品のクラスやプロパティを外部から取得可能  AutoITX : GUI 部品のクラスやプロパティを   取得する一連の関数を COM 技術で公開Excel も COM 技術で、値の取得等が可能Win32OLE : COM 技術を Ruby から利用する ためのライブラリ

超便利。

Page 9: リアルビジネス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));

Page 10: リアルビジネスRuby

1010

KOF2010 11/5 リアルビジネス Ruby

テーブル定義書からの SQL 自動生成(2)

Excel は Ruby から COM 経由で操作可能テキスト生成は Ruby の得意分野!自動生成することで

2度手間を削減することができる生成される SQL の品質を一定化できる管理表の品質が保持されやすくなる

逆向きも可能実際のデータベースからリバースエンジニアリングして、テーブル定義書 (Excel) の生成ActiveRecord と Win32OLE の夢の協演が実現

Page 11: リアルビジネスRuby

1111

KOF2010 11/5 リアルビジネス Ruby

重複が多いプログラムの自動生成(1)

GUI プログラムの自動生成コントロールの配置などは非常に単純な作業のため、自動生成に向いている

テストプログラムの自動生成特にユニットテストでの利用が多いようですIronRuby 、 JRuby を活用して、他の言語のテストを Ruby で書くこともできますWEB ・・・ Selenium Ruby で統合テストを作成可能

Selenium ・・・ WEB ブラウザを利用したテスト自動化ツール

Ruby on Rails の script/generate も自動生成の例データベース関係は自動生成の宝庫

Data Access Object の自動生成

Page 12: リアルビジネスRuby

1212

KOF2010 11/5 リアルビジネス Ruby

重複が多いプログラムの自動生成(2)

プログラム自動生成は何が良いか?品質の底上げにつながる

似たコードが生成されるため、保守性が向上ベテランのノウハウを新人に自然に伝授できる

Ruby on Rails ではコードの自動生成によって、MVC Framework

Convention over Configuration

Test First

などのノウハウを自然に学べるよう工夫されているベテランにとってもツールに落とし込む過程で、互いの開発ノウハウ、規約を共有・洗練できる

Page 13: リアルビジネスRuby

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

Page 14: リアルビジネスRuby

1414

KOF2010 11/5 リアルビジネス Ruby

事務処理業務の効率化事例( WEB 編)

WEB 基幹ソフト操作の自動化も可能方法1: 情報取得のみであれば、

open-uri 、 mechanize などの利用が効果的wget などの外部実行ファイルも開発効率向上に役立つ

方法2: 操作が必要で、 Ajax などもあれば・・・

InternetExplorer を COM 経由で制御FireFox を Selenium 経由で制御

方法3: JavaApplet などもあれば・・・開発者ならいろいろ方法がありますが、ただの利用者なら汎用的な AutoIT などで、キーボード操作、マウス操作をシミュレートして、自動操作する必要も・・・。

Page 15: リアルビジネスRuby

1515

KOF2010 11/5 リアルビジネス Ruby

まとめ

いろいろな 実際の業務をカイゼンする方法を紹介してきました

時間が残っているようなので、質疑応答デモンストレーション質疑応答(自問自答編)

の3つを用意しています。

Page 16: リアルビジネスRuby

1616

KOF2010 11/5 リアルビジネス Ruby

  質疑応答(自問自答編)

Page 17: リアルビジネスRuby

1717

KOF2010 11/5 リアルビジネス Ruby

いろんなテクを紹介してきましたが・・・

Q. うまく自動化して、効率化できる作業をどうやって見つけるの?

作業をしている本人なら、わりかし簡単ネックとなるのは「できるわけがない」という思い込み実は意外に結構どんな業務でも自動化できちゃう

Q. 管理職が部下の効率化可能な業務を見つけ出せるか?

これは案外 難しい・・・。そもそも、管理職は部下の業務内容を知らない・・・。日常的な事務処理などのルーチンワークの詳細は知らない

どんな業務をしているか気軽に話せる関係が必要

Page 18: リアルビジネスRuby

1818

KOF2010 11/5 リアルビジネス Ruby

なんで、 Ruby ?

Q. 今回紹介したのって COM とか結構どの言語からでも利用できるものが多いけど、なんで、開発言語は Ruby を採用するの?A. 汎用性と生産性のバランスが優れているから汎用性) シェルスクリプトや Makefile の代替から      大規模アプリケーションまで可能       Win32API の呼び出しや JRuby 、 IronRuby を利用して、

      既存のアプリケーション資産の活用も可能であるため。生産性) ハッシュや正規表現リテラルの存在      豊富なライブラリの存在      読みやすく、覚えやすい文法      (昔、 Makefile や bash スクリプトをかなり高度に使いこなせる     まで勉強しましたが、実現できる内容に比べてしんどかった・・・)

Page 19: リアルビジネスRuby

1919

KOF2010 11/5 リアルビジネス Ruby

タイトルは釣り?

Q. もっと開発案件としての Ruby の動向とかを聞きたいんだけどA. 残念ながら、 cuzic はその専門ではありません。それでも回答すると・・・

 ・一般に、 Ruby 採用事例は増えているようです。 ・ただ、現状でも PHP 、 Java などの開発が主流です ・短納期、高機能の WEB システム開発が多いそう ・運用・デプロイ、レンタルサーバ業者の選定、

チーム開発 などに課題が多いようです ・全体に今は幻滅期を乗り越え、適切な要件の場合に

Ruby を採用しようとする機運が進んでいるようです。

Page 20: リアルビジネスRuby

2020

KOF2010 11/5 リアルビジネス Ruby

自動化がうまくいかないような例は?

Q. 逆に自動化がうまくいかないような事例は?A. いっぱいあります。  特に複雑な判断が必要な場合は、自動化せず、  人手で介するようにした方がいいと思います。

   典型的にはデータのクレンジング作業は、人手で実施して、機械処理用のデータを入力したのちに、自動処理させるというのは1つのノウハウです。

   あと、たとえ単純作業でも Java アプレットとかネイティブでない GUI の場合は難しいです。マウス、キーボード制御、画像キャプチャ、 OCR などを組合せなきゃダメなこともあったり・・・。