Text
Page: 1
高架下のRuby
横山昌史
札幌市中央区Ruby会議01
2014/02/08
高架下のRuby
Powered by Rabbit 2.1.2
Page: 2
自己紹介
@myokoym (GitHub, Twitter)
由来:m.yokoyama
発音例:myokoyamaa
ソフトウェア開発者
将棋指し(アマ三段)
高架下のRuby
Powered by Rabbit 2.1.2
Page: 3
Ruby Kaja 2013
高架下のRuby
Powered by Rabbit 2.1.2
Page: 4
札幌の将棋事情
北海道将棋会館
札幌市中央区南4西9
北海道将棋連盟のブログ
http://doshoren.blog.fc2.com/
札幌将棋情報のブログ
http://blogs.yahoo.co.jp/sapporoshogijoho
高架下のRuby
Powered by Rabbit 2.1.2
Page: 5
よろしくお願いします。
m(_ _)m
高架下のRuby
Powered by Rabbit 2.1.2
Page: 6
はじめに
高架下のRuby
Powered by Rabbit 2.1.2
Page: 7
高架下とは?
高架下のRuby
Powered by Rabbit 2.1.2
Page: 8
高架橋の下
高架下のRuby
Powered by Rabbit 2.1.2
Page: 9
高架橋とは
↑これ
高架下のRuby
Powered by Rabbit 2.1.2
Page: 10
私(達)
Railsを使っていない
高架下の住人
高架下のRuby
Powered by Rabbit 2.1.2
Page: 11
たまに見かける仮説
Ruby = Rails
高架下のRuby
Powered by Rabbit 2.1.2
Page: 12
私(達)
Railsを使っていない
Rubyは使っている
高架下のRuby
Powered by Rabbit 2.1.2
Page: 13
論破
高架下のRuby
Powered by Rabbit 2.1.2
Page: 14
お伝えしたいこと
Railsを使う機会がなくても、
Rubyを活用できるということ
高架下のRuby
Powered by Rabbit 2.1.2
Page: 15
話すこと
コマンドラインツール
デスクトップアプリケーション
高架下のRuby
Powered by Rabbit 2.1.2
Page: 16
話すこと
コマンドラインツール
デスクトップアプリケーション
高架下のRuby
Powered by Rabbit 2.1.2
Page: 17
コマンドライン
高架下のRuby
Powered by Rabbit 2.1.2
Page: 18
コマンドラインツール
bashやコマンドプロンプト
などで動くプログラム
puts "Hello, World!"
高架下のRuby
Powered by Rabbit 2.1.2
Page: 19
コマンドラインの利点
UIを作成しなくていい
気軽に書ける
Rubyだけで書ける
一括処理や自動化しやすい
シェルスクリプトの代替
高架下のRuby
Powered by Rabbit 2.1.2
Page: 20
シェルスクリプトの代替
違うOSで同じコードが動く
Rubyが動けばOK
環境の差は(ほぼ)Rubyが吸収
高架下のRuby
Powered by Rabbit 2.1.2
Page: 21
実行方法
irb
ワンライナー
ファイルに保存して実行
高架下のRuby
Powered by Rabbit 2.1.2
Page: 22
irb
1行ずつ実行
チュートリアル向き
$ irb
irb(main):001:0> puts "Hello, World!"
Hello, World!
=> nil
高架下のRuby
Powered by Rabbit 2.1.2
Page: 23
ワンライナー
コマンドラインに直接コードを書
いて実行
ヒストリーに残る
高架下のRuby
Powered by Rabbit 2.1.2
Page: 24
ワンライナー
$ ruby -e ...
$ ruby -e 'puts "Hello, World!"'
Hello, World!
高架下のRuby
Powered by Rabbit 2.1.2
Page: 25
ワンライナー
Perlに似たオプションが使える
$ echo こんにちは | ruby -ple 'gsub(/[な-の]/, "ぬ")'
こんぬちは
ヒント:るりまサーチ、Rubyの起動
高架下のRuby
Powered by Rabbit 2.1.2
Page: 26
ファイルに保存して実行
1行目はshebang
#!/usr/bin/env ruby
puts "Hello, World!"
高架下のRuby
Powered by Rabbit 2.1.2
Page: 27
shebang
Unixのスクリプトの一行目の #!
インタプリタのパスを指定
envの場合、環境変数PATHを探す
書かなくてもいい
高架下のRuby
Powered by Rabbit 2.1.2
Page: 28
ファイルに保存して実行
shebang+実行権限
$ ./hello.rb
shebangなし
$ ruby hello.rb
高架下のRuby
Powered by Rabbit 2.1.2
Page: 29
マジックコメント
shebangがあるときは2行目に書く
Ruby2.0以降はUTF-8なら省略可
#!/usr/bin/env ruby
# coding: utf-8
puts "こんにちは!"
高架下のRuby
Powered by Rabbit 2.1.2
Page: 30
実用例
ファイル名を一括変更
ファイルごとに圧縮
高架下のRuby
Powered by Rabbit 2.1.2
Page: 31
ファイル名を一括変更
require "fileutils"
Dir.glob("*") do |name|
next unless /\Asl.*\.txt\z/ =~ name
FileUtils.mv(name,
name.sub(/\Asl/, "ls"))
end
高架下のRuby
Powered by Rabbit 2.1.2
Page: 32
ファイルごとに圧縮
外部コマンドを使う場合
7-Zipなどはコマンドラインで使える
Dir.glob("*.log") do |name|
system("7z", "a", "#{name}.zip", name)
end
高架下のRuby
Powered by Rabbit 2.1.2
Page: 33
生Ruby
生Ruby
高架下のRuby
Powered by Rabbit 2.1.2
Page: 34
話すこと
コマンドラインツール
デスクトップアプリケーション
高架下のRuby
Powered by Rabbit 2.1.2
Page: 35
デスクトップアプリとは
デスクトップ環境で動作するアプ
リケーション
PCにインストールして使うもの
GUIツールキットを使って作る
GUIアプリケーションとも呼ばれる
高架下のRuby
Powered by Rabbit 2.1.2
Page: 36
GUIツールキット
GUIアプリケーションを構成する
部品の集まり
一からウィンドウを作成
自由度が高い
JavaScriptを書かなくていい
高架下のRuby
Powered by Rabbit 2.1.2
Page: 37
GUIツールキットの例
マルチプラットフォーム(C/C++)
GTK+, Qt, Tk
Mac OS X
Cocoa
Windows
.NET Framework
高架下のRuby
Powered by Rabbit 2.1.2
Page: 38
Ruby × GUI
Ruby標準添付
Ruby/Tk
GNOME開発環境(GTK+ 等)
Ruby-GNOME2(Ruby/GTK)
etc...
高架下のRuby
Powered by Rabbit 2.1.2
Page: 39
GNOMEとは
デスクトップ環境
Debian GNU/Linux
Fedora
CentOS, RHEL
TM
(Ubuntu)
高架下のRuby
Powered by Rabbit 2.1.2
Page: 40
デスクトップ環境
Linux
GNOME, KDE, Xfce, Unityなど
Mac OS X
Aqua
Windows Vista, 7, 8
Aero
高架下のRuby
Powered by Rabbit 2.1.2
Page: 41
Ruby-GNOME2とは
Ruby-GNOME2はGNOME
で使用されるGTK+などの主要
なライブラリのRubyバインディン
グ集です。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/
ruby-list/49734
高架下のRuby
Powered by Rabbit 2.1.2
Page: 42
Ruby-GNOME2とは
GTK+はマルチプラットフォー
ム対 応のG U Iツ ー ル キ ッ トな の
で、マルチプラットフォーム対応
のGUIアプリケーションをRubyで
書くことができます。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/
ruby-list/49734
高架下のRuby
Powered by Rabbit 2.1.2
Page: 43
なぜRuby-GNOME2か
楽しくプログラミングできる
高架下のRuby
Powered by Rabbit 2.1.2
Page: 44
なぜ楽しいのか
Rubyらしく書ける
拡張ライブラリがたくさん
GitHubでオープンソース
日本人開発者が多い
高架下のRuby
Powered by Rabbit 2.1.2
Page: 45
Rubyらしく書ける
R u b y言 語の持つ様 々な特 徴
(例外処理やブロックの使用)をう
ま く取り入れ る こ と でR u b yと の
親和性が極めて高い.
http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-
tut-introduction
高架下のRuby
Powered by Rabbit 2.1.2
Page: 46
拡張ライブラリがたくさん
Ruby/Poppler
PDF読み込み、書き出し
Ruby/GStreamer
音声、動画の再生、編集
Ruby/WebKitGTK
Webブラウザウィジェット
高架下のRuby
Powered by Rabbit 2.1.2
Page: 47
GitHubでオープンソース
https://github.com/
ruby-gnome2/ruby-gnome2
高架下のRuby
Powered by Rabbit 2.1.2
Page: 48
日本人開発者が多い
日本語メーリングリスト
ruby-list
ruby-gnome2-devel-ja
日本語で質問できる
煮詰まったら気軽に投稿
高架下のRuby
Powered by Rabbit 2.1.2
Page: 49
あと何分?
高架下のRuby
Powered by Rabbit 2.1.2
Page: 50
バージョンについて
Ruby/GTK2
Ruby/GTK3
高架下のRuby
Powered by Rabbit 2.1.2
Page: 51
Ruby/GTK2
GTK+ 2のRubyバインディング
旧バージョン
GTK+ 2の開発はほぼ終了
採用実績が多く、安定性は高い
Rabbit(プレゼンツール)
mikutter(Twitterクライアント)
高架下のRuby
Powered by Rabbit 2.1.2
Page: 52
Ruby/GTK3
GTK+ 3のRubyバインディング
最新バージョン
機能向上(CSS対応の強化など)
移行が推奨されている
採用実績
Mireru(ファイルビューア)
高架下のRuby
Powered by Rabbit 2.1.2
Page: 53
Hello, GUI!
require "gtk3"
window = Gtk::Window.new
window.title = "Hello, GUI!"
window.signal_connect("destroy") do
Gtk.main_quit
end
window.show_all
Gtk.main
高架下のRuby
Powered by Rabbit 2.1.2
Page: 54
準備
gtk2またはgtk3をインストールする
gem install gtk3
連絡先:
https://github.com/ruby-gnome2/ruby-gnome2/issues
https://lists.sourceforge.net/lists/listinfo/ruby-gnome2-devel-
ja
高架下のRuby
Powered by Rabbit 2.1.2
Page: 55
準備
gtk2またはgtk3をrequireする
require "gtk3"
高架下のRuby
Powered by Rabbit 2.1.2
Page: 56
メインウィンドウ作成
×ボタンなどが付いた普通のウィン
ドウが生成される
window = Gtk::Window.new
window.title = "Hello, GUI!"
高架下のRuby
Powered by Rabbit 2.1.2
Page: 57
イベント取得
既定のイベントが発生すると、ブロッ
ク内の処理が実行される
window.signal_connect("destroy") do
Gtk.main_quit
end
高架下のRuby
Powered by Rabbit 2.1.2
Page: 58
メインループ
showやshow_allで表示フラグON
Gtk.mainでメインループに突入
window.show_all
Gtk.main
高架下のRuby
Powered by Rabbit 2.1.2
Page: 59
Hello, GUI!
高架下のRuby
Powered by Rabbit 2.1.2
Page: 60
おわりに
Rubyは汎用プログラミング言語で
す。Webに限らず、いろいろな場所で
活用してみてください。
デスクトップアプリケーションの勉強会を検討中なので、興味がある
方はお知らせくださいませ :-)
高架下のRuby
Powered by Rabbit 2.1.2