210 likes | 422 Views
オープンソースと マイクロソフト の 良い関係 ~ Ruby on Rails on Azure ~. 日本 Ruby の会 arton ( Tajima Akio ). D5-302. 2000 年( Ruby 1.4 )から Rubyist 昼の仕事は、業種特化垂直統合システムの開発者 Ruby や C# や Java についての著作があります 2010 年の 9 月から Ruby のコミッタ. 自己紹介. Ruby は Windows をサポートしています Windows 用 Ruby のディストリビューション
E N D
オープンソースとマイクロソフトの良い関係 ~ Ruby on Rails on Azure ~ 日本Rubyの会 arton (TajimaAkio) D5-302
2000年(Ruby1.4)から Rubyist 昼の仕事は、業種特化垂直統合システムの開発者 Ruby や C# や Java についての著作があります 2010 年の 9 月から Ruby のコミッタ 自己紹介
Ruby は Windowsをサポートしています Windows 用 Ruby のディストリビューション 演能-Windows 特化 Web サーバインターフェイス 能楽堂-Ruby on Rails 特化ディストリビューション NougakuDoCompanion―Azure 用インストーラ アジェンダRubyon Windows、Ruby on Rails on Azure
プログラミング言語 Ruby • スクリプト言語 • 正規表現、ヒアドキュメント、テキストベース • ファイル、ディレクトリ操作 • ソケット、http などのネットワークライブラリ • クラスベースオブジェクト指向言語 class Ruby def hello puts ‘hello world !’ end end Ruby.new.hello
プログラミング言語 Ruby(続) • ほとんどすべてが式 if true 4 else 3 end #=> 4 • 関数プログラミング [1, 2, 3, 4].map(&:succ).inject(0, &:+) #=> 14 • メタプログラミング
Rubyのサポートプラットフォーム • Supported • 公式にサポートしている。 • エラーが残っている限りリリースしない。 • DebianGNU/Linux 4.0 on IA32 • Best Effort • Supported には及ばない。 • 多少のエラーがあってもリリースしてしまう。 • mswin32,mswin64,mingw32 • 他に Mac OS X (Intel) 10.5 以降 など http://redmine.ruby-lang.org/projects/ruby-19/wiki/SupportedPlatformsJa
Windowsディストリビューション • バイナリー配布 • zip ―ruby mswin • C:\Ruby―RubyInstaller • ActiveScriptRuby ― C:\Program Files • ソースからビルド (Gemの作成に必須) • 依存ライブラリの入手、ビルド • コマンドラインからのMake • 無料のビルド環境 (Visual C++ Express Edition) • X64 については PlatformSDK を併用 • http://tatsu-zine.com/books/winrubybuild
Ruby on Rails • Web アプリケーションフレームワーク全部入り • MVC フレームワーク • テスティングフレームワーク • 開発、テスト、運用の 3つの環境 • OR マッパー • 特徴 • 少ないコード量 • シンプルな生成物 • 少ない設定ファイル • 純粋な設定ファイルは RDBMS の構成ファイルのみ
Ruby on Rails • Web アプリケーションフレームワーク全部入り • MVC フレームワーク • テスティングフレームワーク • 開発、テスト、運用の 3つの環境 • OR マッパー • 特徴 • 少ないコード量 • シンプルな生成物 • 少ない設定ファイル • 純粋な設定ファイルは RDBMS の構成ファイルのみ
Ruby on Railson Windows • SQLServerbinding ? • MySQL • IIS binding ? • CGI ! • 仮想ホスト中心主義 • JRuby • JDBC for SQLServer • Tomcat+Apachewith AJP or WebLogic • それって次善の策と次善の策の組み合わせ……
Ruby on Rails の黄金パターン • 一度起動したらメモリーフルになるまで常駐 • 仮想ホスト • マルチプロセス Ruby アプリケーション Ruby アプリケーション Ruby on Rails Ruby on Rails Rack Rack …… Thinor Mongreletc. Thinor Mongreletc. ApacheWeb サーバ Webサーバ
Http.sys • Windows Server 2003 / Windows XP SP2 • カーネルモードドライバ • プロトコルハンドラ + リクエストベースイベント • マルチプロセス 同一 ポート、マルチ URI WCFホスト アプリケーション IIS 既定のWebサイト IIS 追加のWebサイト …… Http.sys Webサーバ
演能 (Ennou & Ennoumu) • Rack ハンドラー • マルチプロセスサポート • IIS と共存可能 Ruby アプリケーション Ruby アプリケーション …… Ruby on Rails Ruby on Rails Rack Rack Ennou Ennou Http.sys Webサーバ
能楽堂 (NougakuDo) • Visual C++ 2010 (x64) ですべてをビルド • Ruby 1.9.3 mswin64 • zlib, yaml, OpenSSL などのライブラリ • tds.lib, tiny_tds, activerecord_sqlserver • Ennou/Ennoumu • 1.0.x → Rails3.01.1.x → Rails3.1 Http.sysは Administrator のみが利用可能 • ローンチャ
Ruby on Rails on Azure • activerecord_sqlserver (tiny_tds) は、 SQL Azure に対応済み • NougakuDo は X64 native • Ruby on Rails は REST を推進 (サーバステートレス) → クラウドのスケーラビリティとの相性
能楽堂コンパニオン • 開発PC に構築した能楽堂とアプリケーションを 簡便な手順で zip 形式でパッケージ化 Web ロールに配置し、 zip をロードして実行 http://nougakudo.codeplex.com/
能楽堂コンパニオンの仕組み WebRoleVM AdminWeb(8080)Managementsite Configurationfile AzureStorageBlobTableQueue RoleInstance NougakudoController Deployruntime Deployapps Controlapps Runtime Applications Configuration NougakudoLauncherRackstart(80)/ stop
まとめ • Ruby は Windows を サポートしている • Web アプリケーション プラットフォームとして RubyonRails は実用レベルで稼働 • Ruby onRails 運用プラットフォームとして WindowsAzure は有力な選択肢
リファレンス 能楽堂http://www.artonx.org/data/nougakudo/ tiny_tds https://github.com/rails-sqlserver/tiny_tds 演能 https://github.com/arton/ennou 能楽堂コンパニオン http://nougakudo.codeplex.com/ Ruby環境構築講座 Windows編 http://tatsu-zine.com/books/winrubybuild
ご清聴ありがとうございました • アンケート • にご協力 • ください • D5-302