Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RubyとQML/Qt Quickで デスクトップアプリを 書けるようにした
Search
Ryohei Ikegami
September 21, 2014
Technology
0
1.2k
RubyとQML/Qt Quickで デスクトップアプリを 書けるようにした
RubyHiroba 2014でLTしました
Ryohei Ikegami
September 21, 2014
Tweet
Share
More Decks by Ryohei Ikegami
See All by Ryohei Ikegami
共同編集ドローツールの作り方
seanchas116
3
720
FigmaからTailwind HTMLを 生成するプラグインの開発
seanchas116
4
3.6k
Web Componentsを作れる デザインツールの開発
seanchas116
0
700
C++視点からのRuby紹介
seanchas116
0
370
Other Decks in Technology
See All in Technology
現代CSSフレームワークの内部実装とその仕組み
poteboy
8
3.6k
20240418_Google ColabにLLMが搭載されたようなのでPython x データ分析の勉強方法を考えてみる
doradora09
0
130
Google Cloud Next '24でブログを10本書いた方法と勉強会を沸かせた方法
yasumuusan
0
290
SIEMを用いて、セキュリティログ分析の可視化と分析を実現し、PDCAサイクルを回してみた
coconala_engineer
0
280
ServiceNow Knowledge Learning Rise up
manarobot
0
210
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
470
Python と Snowflake はズッ友だょ!~ Snowflake の Python 関連機能をふりかえる ~
__allllllllez__
1
120
オーナーシップを持つ領域を明確にする
konifar
13
3.1k
Java EE/Jakarta EEの現状と将来―クラウドネイティブ時代にJava EEは対応できるのか?―
takakiyo
1
150
いつか使うかも貯金してたらめちゃめちゃ機能が増えてた話
riyaamemiya
0
120
どうするコスト最適化のトレードオフ
tetsuyaooooo
1
510
障害対応をちょっとずつよくしていくための 演習の作りかた
heleeen
0
160
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
73
8.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
9
8.3k
Designing with Data
zakiwarfel
96
4.8k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Writing Fast Ruby
sferik
621
60k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
21
1.6k
Atom: Resistance is Futile
akmur
259
25k
The Cult of Friendly URLs
andyhume
74
5.7k
Building Your Own Lightsaber
phodgson
99
5.7k
Creatively Recalculating Your Daily Design Routine
revolveconf
210
11k
Optimizing for Happiness
mojombo
370
69k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Transcript
RubyとQML/Qt Quickで デスクトップアプリを 書けるようにした ! 2014-09-21
" seanchas_t # seanchas116 大学生 (10月から休学予定 Ruby歴は2年くらい “しゃなはす”と読みます
Qt Quick Qtの一部 QMLという専用言語で UIを記述するフレームワーク Ruby Rubyで スクリプトとして ロジックを記述する 組み合わせて
デスクトップアプリを書けるようにする!!
ruby-qml https://github.com/seanchas116/ruby-qml $ gem install qml
デスクトップアプリ?
None
None
どうやって書くの?
require 'qml' ! QML.run do |app| app.load_path 'main.qml' end Ruby
import QtQuick 2.2 import QtQuick.Controls 1.1 ! ApplicationWindow { visible: true width: 200 height: 100 title: "Hello, world!" } QML
class ClickMe include QML::Access register_to_qml ! property :text, 'Click me'
def on_clicked puts 'clicked' self.text = 'Clicked!!' end end Ruby ApplicationWindow { visible: true Button { text: clickMe.text onClicked: { clickMe.on_clicked() } } ClickMe { id: clickMe } } QML
item.value # => 10 item.poyo Ruby Item { property var
value: 10 function poyo() { console.log("poyo") } } QML
item.value # => 10 item.poyo Ruby class Foo : public
QObject { Q_OBJECT Q_PROPERTY( int value MEMBER m_value) int m_value = 10; public: Q_INVOKABLE void poyo() { qDebug() << "poyo"; } }; C++
開発した理由
QMLの特徴 UIの記述に特化した言語 ! 宣言的記法 プロパティバインディング オブジェクトのプロパティ同士のデータバインド …
QMLの特徴 QMLでビュー (UI) を記述 C++でロジックを記述 イベントとデータバインドでつなげる いわゆるMVVMパターン UIとロジックを分離できる (最近では当たり前?)
QMLの開発スタイル QMLでビュー (UI) を記述 C++でロジックを記述 ◯◯で書きたくない? (◯◯: 任意の好きな言語) QMLは動的言語なので バインディングが比較的作りやすい
QMLの開発スタイル QMLでビュー (UI) を記述 C++でロジックを記述 Go go-qml https://github.com/go-qml/qml
QMLの開発スタイル QMLでビュー (UI) を記述 C++でロジックを記述 Ruby ruby-qml 今回作った!!
せっかくRubyをつかうので… Rubyらしいライブラリにしたい プロパティなどのクラスマクロ ブロック … DSL、メタプログラミングを通して QMLの世界観をRubyに違和感なく持ってくるのを 心がけた
考えられそうなユースケース
RubyとQMLのみで C++を書かず楽にデスクトップアプリを作る Ruby コード QML ビュー ruby-qmlアプリ
C++・QMLなどをラップ Rubyはグルー言語 Ruby コード ruby-qmlアプリ C++/Qt コード QML ビュー 他の
機能
これから
Windows対応 ! モバイル対応 (with mruby?)