Download presentation
Presentation is loading. Please wait.
1
Ruby入門 2009/11/06 けーちゃん 楽しいアプリ制作の会 [たのアプ] http://tanoapp.tworks.jp/
2009/11/06 けーちゃん 楽しいアプリ制作の会 [たのアプ] 楽しいアプリ制作の会 #09 テーマ「Hello Ruby World!!」 日時:2009/11/6(金)19:00 – 21:10 場所:KOKO PLAZA (大阪市立青少年文化創造ステーション) 801会議室 メインセッション(1) Ruby入門 by けーちゃん
2
はじめに このセッションについて 自己紹介 Rubyってどんな言語? 言語仕様の紹介 使い方の雰囲気 けーちゃん
COBOLer→オープン系へ ・このセッションについて Rubyって最近よく聞くけどどんな言語?と思っておられる方に、 言語の仕様と簡単な使い方を知ってもらうためのセッションです。 オブジェクト指向そのものを説明する時間がとれないため、そのあたりがあまり 得意でない方にはわかりにくい部分があるかもしれませんが、何とぞご容赦くださ い。 すべてを深く掘り下げる時間はありませんが、言語や使い方の雰囲気は感じて頂 けると思います。 コーディングスタイルについては、Java/PHPと一部比較しながらご紹介します。 良い/悪いではなく、そういう違いがあるんだ~と思いながら聞いて頂ければ。 なおRubyのバージョンは最新の1.9を使用します。 1.8と1.9で大きく変化している部分があるため、1.8でサンプルを使用される場合 はご注意ください。 ・自己紹介 名前、略歴、etc. 2
3
Rubyとは まつもとゆきひろ(Matz)さんが開発 オブジェクト指向スクリプト言語 7月の誕生石から命名
Ruby on Rails で爆発的に普及 ・まつもとゆきひろさん 英語圏ではMatz(まっつ)さん。 島根県松江市の名誉市民(Rubyの開発に関する功績により) ・Ruby 1995年12月、「Perlのうれしさと、オブジェクト指向の美しさを兼ね備えた言語」とし て考案された。 オブジェクト指向 すべてのオブジェクトは特定のクラスのインスタンス。 コンパイル不要、インタプリタ型のスクリプト言語 ・誕生石 Perlにならい、まつもと氏の同僚・石塚氏の誕生月である7月の誕生石Rubyから 命名。 ・RoR 2004年7月発表。 Rubyで記述されたWebアプリケーションフレームワーク。 詳しくはメインセッション2で! 3
4
Rubyの特徴 純粋なオブジェクト指向言語 動的型付け 変数名でわかるスコープ 珍しいオブジェクト指向機能(Mixin、特異メソッド)
演算子オーバーロード 例外処理 イテレータ マルチスレッド ガーベージコレクタ ・純粋なオブジェクト指向言語 整数や文字列なども含めデータ型はすべてがオブジェクト。 C++やJavaと異なり、プリミティブ型のような「オブジェクトでないもの」は存在しない。 クラス、メソッドコールなど、一般的なオブジェクト指向の機能を持つ。 ・動的型付け 変数の定義上、型の指定を行わない。 ・変数名でわかるスコープ ・珍しいオブジェクト指向機能 Mix-inという機構で、多重継承を可能にしている。 特異メソッド=クラスメソッドのほか、インスタンスのみにメソッドを追加することも可能。 ・全ての演算はメソッドなので、オーバーロードすることが可能。 (一部、オーバーロードできない演算子はあり) ・例外処理の機構を持つ。 ・イテレータ 制御構造(特にループ)の抽象化のために用いられるメソッドの一種。 コレクションの各要素に対して同じ処理を繰り返したいような場合に使用する。 (forを使って書く場合、境界条件の判定ミスでバグが生まれる可能性があるが、イテレータでは起きない) Rubyではブロック付きメソッド呼び出しとともに使用される。 ・スレッドも実行可能。 ・オブジェクトの廃棄は基本的にガーベージコレクタに任せている。
5
Rubyの使いどころ Webアプリケーション開発言語 ちょっとしたデータ加工やシステム管理 教育用言語 ゲームなど
超簡単に作れるRuby on Railsはもちろん、後ほど紹介するWEBrickや ERBを利用してWebアプリケーションを作成可能です。 Apacheではmod_rubyの追加でRubyをCGIとして利用可能。 tDiaryの普及を契機に、Rubyが使えるレンタルサーバもかなり多いです。 →Rubyが使えるレンタルサーバ一覧~日本Rubyの会 ・ちょっとしたデータ加工やシステム管理 手軽なスクリプト言語として、作業の効率化などに適用可能。 ・教育用言語 表記が簡潔でなじみやすいため、コード例として利用されるケースも。 ・ゲームなど プレゼンテーションツールRabbitなどGUIアプリ。 RPGツクールXP/VXには、Rubyベースのスクリプト言語が組み込まれている。 5
6
何はともあれ、まずは見て頂きましょう! interlude.
7
Rubyのインストール(1) 本家 http://www.ruby-lang.org/ja/downloads/
本家 ActiveScriptRuby One-Click Ruby Installer for Windows <Windows版> ・本家 インタプリタをソースコードで提供。 そのままでは使いづらい人のために、いくつかのバイナリが配布されている。 <Windows版> ・ActiveScriptRuby ←今回はこれを使用します。 arton氏が作った日本人/日本語によるRubyバイナリインストーラ。 配布ページやインストーラが日本語で、標準以外の便利なライブラリも同梱されて いる。 ActiveScriptとは、WSHやIEからRubyを使えるようにしたもの。 もちろんそれを使わない用途でも使える。 ・One-Click Ruby Installer mswin32版のRubyに色々な便利なライブラリ・アプリケーションをセットにしたパッ ケージ。 Windows環境へrubyおよび関連ツールを一度にインストールするのに便利。 ただし、配布ページやインストーラは英語。 7
8
Rubyのインストール(2) ActiveScriptRuby ・1.9系の最新版をダウンロードします。
例)Ruby p243 Microsoft Installter Package(2009/7/20) 14,813,696バイト * MD5 checksum: ced5a9bb66f45b53a3793d324fe364e5 ※ファイルは *.msi形式です。 ・Rubyがインストールされるパスを、c:\Program Filesではなく、c:\ruby191などにする。 Windowsの環境変数で、PATHに c:\ruby191\bin を追加。 5分もあればインストールは完了。
9
さっそく試してみる 最初はやっぱりコマンドプロンプト 対話型で試せるirb
GUI開発環境RDE (Ruby Development Environment) ・コマンドプロンプト rubyが入ってパスが通っていれば、ruby –v↓ →ruby 1.9.1p243 ( revision 24175) [i386-mswin32] などと出ま す。 print “hello world\n” をhello.rbに保存して、ruby hello.rb↓ ・irb interactive rubyの略。 Rubyの式を対話的に実行するためのツール。 すぐに結果が表示されるので、メソッドやコードの断片を確認するのに便利。 <実演>irb↓ 2*3↓ 2**10↓ ”ruby tanoapp #9”.split↓ <実演>a=123↓ print a↓ <終了>exit↓ ・RDE RubyのGUI開発環境(無償)。 Windows上でのRuby開発に便利。 設定すれば、RDEからRubyのWindows HTML Helpも利用可能。 後ほど、実演。 9
10
RDEのインストール(1) まずはダウンロード RDE本体 リファレンス (ヘルプ版) ・RDE
ダウンロードページ 途中でRubyのありかを聞いてくるので、c:\ruby191\bin を指定。 合わせて、Rubyのリファレンスマニュアル(Windows HTML Help版)も ダウンロードしておく。
11
RDEのインストール(2) RDEの初期設定 Ruby本体と リファレンスの 位置を指定 ・RDE
起動時に、RubyのパスとHTMLヘルプの場所を聞いてくるので指定。 メニューの日本語化は、Config FileのTranslating Fileに以下を指定。 C:\Program Files\RDE\Translations\Japanese_1110.xml
12
RDEのインストール(3) これで準備完了です リファレンスも 日本語で! 日本語 メニュー ・RDE これでインストールは完了!
これでインストールは完了! F1を押せば、ヘルプでリファレンスマニュアルも見れます。 エディタ部分に日本語が出ない場合は、 ツール → エディタ設定 を選び、 表示タブのフォントボタンを押して指定。 その他、デフォルトの文字コードなど必要に応じて設定。 RDEを再起動しないと反映されないので注意。
13
雰囲気をつかんで頂いたところで ちょっと硬いお話に戻ります! interlude.
14
文法(1/5) 基本の基本 大文字と小文字は区別します # から行末までがコメント 式は改行、またはセミコロンで区別
文法(1/5) 基本の基本 大文字と小文字は区別します # から行末までがコメント 式は改行、またはセミコロンで区別 リテラルの書き方 数値、文字列、配列、ハッシュ、正規表現 ・文法、5ページあります。 量が多いので多少、駆け足で・・・ サンプルを見ていただきながら進めます。 ・RDE、irbで実演。 sample01.rb
15
文法(2/5) 変数・定数 変数に型はありません 変数名で決まるスコープ 擬似変数 self/true/false/nil
・RDE、irbで実演。 sample02.rb
16
文法(3/5) 演算子 演算子 自己代入、++は使えません 演算子オーバーライド ・RDE、irbで実演。 sample03.rb
17
文法(4/5) 条件分岐と繰り返し 条件分岐は “if, elsif, else, end”とcase
文法(4/5) 条件分岐と繰り返し 条件分岐は “if, elsif, else, end”とcase 繰り返しは while, for, そしてイテレータ 例外処理は begin, rescue, ensure, end ・RDE、irbで実演。 sample04.rb
18
文法(5/5) オブジェクト指向 クラス定義と継承 メソッド定義とブロック付き呼び出し モジュール定義とMix-in
文法(5/5) オブジェクト指向 クラス定義と継承 メソッド定義とブロック付き呼び出し モジュール定義とMix-in ・RDE、irbで実演。 sample05.rb
19
ちょっと退屈でしたかね^^; ではいよいよ実践です! interlude.
20
実演その1 ~コンソールアプリ 仕様: タメになる格言がたくさん入ったCSVから、 ランダムで1つ選んで表示する。 格言 CSV Ruby
1,格言その1,山田太郎 2,格言その2,鈴木卓三 : こけたら、立ちなはれ。 (松下 幸之助) ・RDEで実演。 tanoap09_01cui.rb ※ランダムに1件を表示 20
21
実演その2 ~DBを使う(1) DBI:Rubyからデータベースを利用する方法の1つ DBI Ruby DBの種類に依存しない、
抽象化されたアクセス SQLite3 SQLite3用の ドライバ SQLite3用の ライブラリ DBI ・DBI Rubyからいろいろな種類のデータベースを透過的にアクセスできる仕組み。 異なる種類のデータベースであっても、同じようなプログラムでアクセスできるよう、 データベースの操作を抽象化してある。 ・追加インストールするもの (1) sqlite3-ruby・・・SQLite3にRubyからアクセスするためのライブラリ gem install sqlite3-ruby (2) dbi・・・DBI本体 gem install dbi (3) dbd-sqlite3・・・SQLite3のドライバ gem install dbd-sqlite3 (4) sqlite3.dll・・・SQLite3本体 その他の DB 他のDB用の ドライバ 他のDB用の ライブラリ 21
22
実演その2 ~DBを使う(2) 仕様: グルメデータベースから、指定されたジャンルのお店をランダムで1つ選んで表示する。 Ruby グルメ
<イタリアン> ローザネーラ ジャンル 店舗名 ・・・ 和食 寿司政 ・・・ 洋食 いくた ・・・ ※ランダムに 1件を表示 : ・RDEで実演。 tanoap09_02db.rb
23
実演その3 ~GUIも出来ます Tk(ツールキット):GUIライブラリ Ruby Tcl Tk Perl (GUI) Python
Ruby/TK Tk (GUI) Tcl スクリプト Perl Perl/TK Python TKinter ・Tk GUIを開発するためのウィジェット・ツールキット。 デスクトップ・アプリケーションを開発するために必要な ボタン、メニュー、テキスト、フレーム、ラベルなどのウィジェットを提供する。 もともとはTcl/Tk(ティクル・ティーケー)といって、Tclというスクリプト言語から利用するGUI ライブラリ。 設計の良さと覚えやすさから、他の言語からも使われるようになった。 Perl、Python、Ruby などの言語から利用可能。 ・Tcl/Tkのインストール ActiveStateのサイトからActiveTclをダウンロードしてインストール。 ・環境変数の設定 変数: TCL_LIBRARY 値: ActiveTclのインストールフォルダの \lib\tcl?.? フォルダの フルパス (?.?はバージョン番号。例:d:\Tcl\lib\tcl8.4) 変数: TK_LIBRARY 値: ActiveTclのインストールフォルダの \lib\tk?.? フォルダのフ ルパス (?.?はバージョン番号。例:d:\Tcl\lib\tk8.4) ・RDEで実演。 tanoap09_03gui.rb 23
24
実演その4 ~やっぱWeb(1) WEBrickで簡単にHTTPサーバ HTTPサーバ WEBrick ページ クライアント File
Handler WEB ページ クライアント ・WEBrick WEBrickは、単純なHTTP Webサーバの機能を提供するRubyのライブラリ。 Webサーバーのようなものを作るときの土台になる部分を提供する。 (Webサーバー以外も作成することが可能) ・RDEで実演。 tanoap09_04web_1.rb 24
25
実演その4 ~やっぱWeb(2) WEBrickでプログラムを実行 ERB (eRuby) Ruby ERB HTTPサーバ WEBrick
Proc Handler Ruby クライアント ERB Handler ERB ・ERB eRubyとは、Rubyでプログラムをテキストに埋め込むための仕様。 (embedded rubyの略) ERBはeRubyを実現したプログラムの一つで、Rubyのクラスライブラリとして提供 されている。 Javaに対するJSP、PHPとSmartyのような関係。 ・RDEで実演。 tanoap09_04web_2.rb tanoap09_04web_3.rb tanoap09_04web_4.erb
26
関連技術、情報源 XMLを読むならREXML Apacheにはmod_ruby ライブラリ管理:RubyGems
他の実装:YARV,JRuby, IronRuby, ・・・ リファレンスマニュアル るびま ・時間切れでこれ以上はご紹介できません。 組み込みクラス:Numeric、String、Regexp、Array、Hash・・・ ・RubyGems Ruby言語用のパッケージ管理システム。 gem コマンドを使ってRubyのパッケージの管理・作成・配布 等が簡単に行える。 PerlのCPAN、PHPのPEAR/PECLのようなもの。 今回の例で言うと、DBIのインストール時に gem install dbi↓ ・実装 まつもとゆきひろ氏自身が開発したC言語による実装。 実装はいくつかあります。 ・YARV(Yet Another Ruby VM) バイトコードインタプリタとして実装されており、Rubyプログラムをバイトコ-ドへ JIT方式でコンパイルし、仮想計算機上で実行する。 Ruby1.9より、正式に組み込まれた。 ・JRuby JVM上でRubyプログラムを実行できるRubyの処理系。 RubyのプログラムをJavaのバイト・コードに変換して実行する。 JavaのライブラリをRubyから操作することが可能。 ・IronRuby .NET Framework上で動作するRubyの実装。 .NET Frameworkのライブラリと連携させることができる。 ・リファレンスマニュアル 困ったら、まずはここを見る。 ・るびま 日本 Ruby の会の有志による、 Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌。 26
27
最後に・・・ Ruby技術者認定試験制度 そして、お話は流行りのRoRへ! さわださん、よろしくです^^ ・Ruby技術者認定試験制度 Rubyアソシエーションが直々に運営している試験。 Rubyベースのシステムを設計、開発、運用するエンジニア、Rubyでシステム提案 を行うコンサルタント、 Rubyを教える講師などを対象とした認定試験制度。 Silver、Gold、Platinumの3種類が予定されており、現在はSilverのみ実施。 合格すると、まつもとゆきひろさん名義の認定証が届きます^^ ・そしてRoRへ。 27
28
ご静聴、ありがとうございました。 ありがとうございました^^
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.