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
Figmaプラグイン(非Webページ環境)での Supabaseログイン
seanchas116
0
50
共同編集ドローツールの作り方
seanchas116
3
1k
FigmaからTailwind HTMLを 生成するプラグインの開発
seanchas116
5
4.3k
Web Componentsを作れる デザインツールの開発
seanchas116
0
840
C++視点からのRuby紹介
seanchas116
0
400
Other Decks in Technology
See All in Technology
金融システムをモダナイズするためのAmazon Elastic Kubernetes Service(EKS)ノウハウ大全
daitak
0
120
MCP で繋ぐ Figma とデザインシステム〜LLM を使った UI 実装のリアル〜
kimuson
2
1.3k
令和トラベルQAのAI活用
seigaitakahiro
0
520
libsyncrpcってなに?
uhyo
0
110
Babylon.jsでゲームを作ってみよう
limes2018
0
100
大事なのは、AIの精度だけじゃない!〜1円のズレも許されない経理領域とAI〜
jun_nemoto
11
5.1k
アプリケーションの中身が見える!Mackerel APMの全貌と展望 / Mackerel APMリリースパーティ
mackerelio
0
440
やさしいClaude Code入門
minorun365
PRO
31
23k
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
8
65k
[zh-TW] DevOpsDays Taipei 2025 -- Creating Awesome Change in SmartNews!(machine translation)
martin_lover
1
640
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
700
Oracle Database オプティマイザ・ヒントの活用
oracle4engineer
PRO
1
140
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
KATA
mclloyd
29
14k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Building a Modern Day E-commerce SEO Strategy
aleyda
40
7.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
Embracing the Ebb and Flow
colly
85
4.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
15
890
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Designing for humans not robots
tammielis
253
25k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Balancing Empowerment & Direction
lara
1
84
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?)