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
950
FigmaからTailwind HTMLを 生成するプラグインの開発
seanchas116
4
4.1k
Web Componentsを作れる デザインツールの開発
seanchas116
0
810
C++視点からのRuby紹介
seanchas116
0
400
Other Decks in Technology
See All in Technology
When Windows Meets Kubernetes…
pichuang
0
300
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
110
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
270
2025年のARグラスの潮流
kotauchisunsun
0
790
今から、 今だからこそ始める Terraform で Azure 管理 / Managing Azure with Terraform: The Perfect Time to Start
nnstt1
0
230
Oracle Base Database Service:サービス概要のご紹介
oracle4engineer
PRO
1
16k
技術に触れたり、顔を出そう
maruto
1
150
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
150
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
1.4k
KMP with Crashlytics
sansantech
PRO
0
240
実践! ソフトウェアエンジニアリングの価値の計測 ── Effort、Output、Outcome、Impact
nomuson
0
2.1k
20250116_自部署内でAmazon Nova体験会をやってみた話
riz3f7
1
100
Featured
See All Featured
A Tale of Four Properties
chriscoyier
157
23k
Side Projects
sachag
452
42k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
192
16k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Become a Pro
speakerdeck
PRO
26
5.1k
We Have a Design System, Now What?
morganepeng
51
7.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
It's Worth the Effort
3n
183
28k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Building Adaptive Systems
keathley
38
2.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
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?)