Rabbit Slide Show

高架下のRuby

2014-02-08

Description

Railsのない生活。

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

Other slides