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