SlideShare a Scribd company logo
1 of 31
Download to read offline
RubyCocoa
LiveCoding
2009-08-21(Fri.) Ruby Sapporo Night
@Apple Store Sapporo




                     まえだ ともき
                       Maeda Tomoki
前田智樹 / MAEDA Tomoki / tmaeda
✓Ruby暦10年
✓MacおよびMacプログラミング歴15年
✓株式会社アンタス勤務
✓Ruby札幌運営、RubyKaigiスタッフ
✓最近の興味はOCaml、AR(MR)、集合
 知プログラミング
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
RubyCocoa
RubyCocoa


  その前に...
Cocoa
✓MacOSX用の     Cocoaアプリ
アプリケーション
               Cocoa
フレームワーク
              Mac OS X
✓
Objective-C
で書かれている
Objective-C
✓Cに、Smalltalkから強く影
響を受けた動的なオブジェクト
システムを追加した言語
RubyCocoa
✓RubyとCocoaの間の橋渡し
をするブリッジ

✓RubyとObjective-Cは性
質が似た言語なのでRubyから
Cocoaを自然な形で利用可能
※MacOSX10.5(Leopard)からOSに標準添付
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
MVC
  Model

  View

Controller
Model
✓アプリが扱いたいデータ
✓および、そのデータを管理・加工するロ
ジック

✓つまりアプリケーションの存在意義
✓iTunesなら音楽データの管理、検索、変換、再
 生がModelに入れるべきロジック

✓メーラーならメールデータ作成、送受信、保
 存、検索がModelに入れるべきロジック
View
✓   「出力」担当

✓ Modelのデータをいろいろ
な見せ方で表示するのみ

✓Modelに対しては基本的に
Read Onlyでアクセスする
Controller
✓   「入力」担当

✓ キーボード、マウスなどから
入力を受け取り、それを
Model内の適切なロジックに
渡す

✓   ModelとViewの仲介役
MVCのキモ
✓アプリケーションのUIと
アプリケーションの機能を分離

Controller      View



        Model
MVCのキモ
✓アプリケーションのUIと
アプリケーションの機能を分離

Controller        View
       MはVやCのこと
        を知らない

        Model
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
作るもの
カウンターアプリ
今回のアプリでのMVC
                      ソース上には現れて
                    いないが、nibファイル内で
                     自動的に設定されている


               target
 Controller              View
              ib_outlet :countLabel
@counter         (@countLabel)

           Model
LiveCoding
MVCの効果1:再利用
✓VやCは環境に依存するコード
になりやすいが、Mの中にVや
Cに関するコードを書かないの
で、Mは他の環境(Winや
Linux)でも動かしやすい
MVCの効果2:テスト
✓MがUIと関連しないので、M
に対する自動テストがやりやす
い(UIを自動テストでテストす
るのは困難)
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
Cocoaアプリの構造


      コンパイルされた
        バイナリ
RubyCocoaアプリの構造
         コンパイルされた
           バイナリ
        (Rubyインタプリタ
           を内包)
今日のお話
✓   RubyCocoaとは?

✓ MVCのおさらい

✓ RubyCocoaでアプリ作成の
実演

✓   RubyCocoaの仕組み
日本初!RubyCocoaの書籍
毎日コミュニケーションズから2009年9月下旬発売予定

           著
           高尾宏治

           監修
           木村渡、中川智史
今日のポイント
✓ロジックを極力Mにを集めるようにし
 ましょう

✓M内にはVやCに関連したコードを書
 かないようにしましょう

✓RubyCocoaアプリはRubyインタ
 プリタを内包したアプリです

✓もうすぐRubyCocoaの本が出ます

More Related Content

What's hot

いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンYuta Matsumura
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28光一 原田
 
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考えるtomo_masakura
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点Jun-ichi Sakamoto
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来Akira Inoue
 
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かうMvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かうShun Hikita
 
無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリYasuhiko Yamamoto
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おうHayashi Yuichi
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門Masuda Tomoaki
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRshinnosuke kugimiya
 
TypeScript and Visual Studio Code
TypeScript and Visual Studio Code TypeScript and Visual Studio Code
TypeScript and Visual Studio Code Akira Inoue
 
Visual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptVisual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptAkira Inoue
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションMasahiko Tachizono
 
究極にして至高のWAF
究極にして至高のWAF究極にして至高のWAF
究極にして至高のWAFYuki Ishikawa
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio CodeAkira Inoue
 
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ慎一 古賀
 

What's hot (20)

いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターンいまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28Web App Framework at SwapSkills vol28
Web App Framework at SwapSkills vol28
 
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来Visual Studio ~ 過去、現在、そして未来
Visual Studio ~ 過去、現在、そして未来
 
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かうMvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
 
無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ無償のVisual studioで作るクライアント アプリ
無償のVisual studioで作るクライアント アプリ
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
 
TypeScript and Visual Studio Code
TypeScript and Visual Studio Code TypeScript and Visual Studio Code
TypeScript and Visual Studio Code
 
Visual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScriptVisual Studio Codeで始めるTypeScript
Visual Studio Codeで始めるTypeScript
 
PhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーションPhoneGapで作るハイブリッドアプリケーション
PhoneGapで作るハイブリッドアプリケーション
 
究極にして至高のWAF
究極にして至高のWAF究極にして至高のWAF
究極にして至高のWAF
 
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
 
MVCもやもや話
MVCもやもや話MVCもやもや話
MVCもやもや話
 
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップASP.NET SPA開発をはじめよう~今と未来とステップアップ
ASP.NET SPA開発をはじめよう~今と未来とステップアップ
 

Similar to 090821 Ruby Sapporo Night Ruby Cocoa

MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方Kazuki Shibata
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門normalian
 
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslidenomlab_okayamaruby_subslide
nomlab_okayamaruby_subslidenomlab
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介LINE Corporation
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかYoshifumi Kawai
 
20140517 knockoutjs hands-on
20140517 knockoutjs hands-on20140517 knockoutjs hands-on
20140517 knockoutjs hands-onSeiji Noro
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)masanori kataoka
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発lalha
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介david9142
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)Sosuke Kimura
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発Yuta Matsumura
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAMLYuya Yamaki
 

Similar to 090821 Ruby Sapporo Night Ruby Cocoa (20)

Mvc conf session_1_osada
Mvc conf session_1_osadaMvc conf session_1_osada
Mvc conf session_1_osada
 
LT発表資料
LT発表資料LT発表資料
LT発表資料
 
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
iOSでMVVM入門
iOSでMVVM入門iOSでMVVM入門
iOSでMVVM入門
 
nomlab_okayamaruby_subslide
nomlab_okayamaruby_subslidenomlab_okayamaruby_subslide
nomlab_okayamaruby_subslide
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
 
C#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのかC#の強み、或いは何故PHPから乗り換えるのか
C#の強み、或いは何故PHPから乗り換えるのか
 
20140517 knockoutjs hands-on
20140517 knockoutjs hands-on20140517 knockoutjs hands-on
20140517 knockoutjs hands-on
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
 
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
【17-C-2】 クラウド上でのエンタープライズアプリケーション開発
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
 
【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)【アジャイル道場】Rails勉強会(view編)
【アジャイル道場】Rails勉強会(view編)
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
WPF/Silverlight視点で視る MetroスタイルのXAML
WPF/Silverlight視点で視るMetroスタイルのXAMLWPF/Silverlight視点で視るMetroスタイルのXAML
WPF/Silverlight視点で視る MetroスタイルのXAML
 

Recently uploaded

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」Tetsuya Nihonmatsu
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 

Recently uploaded (7)

プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
U-22プログラミング・コンテスト2024 作品説明動画を制作するポイントを紹介
U-22プログラミング・コンテスト2024 作品説明動画を制作するポイントを紹介U-22プログラミング・コンテスト2024 作品説明動画を制作するポイントを紹介
U-22プログラミング・コンテスト2024 作品説明動画を制作するポイントを紹介
 
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」
OWASP Hardning Privacy セッション 「セキュリティの守るべきものとは情報とプライバシーへ」
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 

090821 Ruby Sapporo Night Ruby Cocoa