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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryohei Ikegami
September 21, 2014
Technology
1.3k
0
Share
RubyとQML/Qt Quickで デスクトップアプリを 書けるようにした
RubyHiroba 2014でLTしました
Ryohei Ikegami
September 21, 2014
More Decks by Ryohei Ikegami
See All by Ryohei Ikegami
新規プロダクトを高速で生み出すハーネスエンジニアリング
seanchas116
19
8.2k
AIでAIデザインツールを作った 1年間の実践
seanchas116
2
660
Figmaプラグイン(非Webページ環境)での Supabaseログイン
seanchas116
0
110
共同編集ドローツールの作り方
seanchas116
3
1.1k
FigmaからTailwind HTMLを 生成するプラグインの開発
seanchas116
6
4.6k
Web Componentsを作れる デザインツールの開発
seanchas116
0
950
C++視点からのRuby紹介
seanchas116
0
450
Other Decks in Technology
See All in Technology
運用を見据えたAIエージェント設計実践
amacbee
1
2.8k
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
250
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
150
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
160
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
190
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
1.5k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
180
形式手法特論:公平性制約の位相的特徴づけ #kernelvm / Kernel VM Study Kansai 12th
ytaka23
1
750
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
980
Dynamic Workersについて
yusukebe
2
590
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
7
4.6k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
390
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
My Coaching Mixtape
mlcsv
0
140
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
How to make the Groovebox
asonas
2
2.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
550
GitHub's CSS Performance
jonrohan
1033
470k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
220
Design in an AI World
tapps
1
220
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?)