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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
3
200
AIでAIデザインツールを作った 1年間の実践
seanchas116
2
610
Figmaプラグイン(非Webページ環境)での Supabaseログイン
seanchas116
0
96
共同編集ドローツールの作り方
seanchas116
3
1.1k
FigmaからTailwind HTMLを 生成するプラグインの開発
seanchas116
6
4.5k
Web Componentsを作れる デザインツールの開発
seanchas116
0
940
C++視点からのRuby紹介
seanchas116
0
440
Other Decks in Technology
See All in Technology
[4] Power BI Deep Dive [2026-05]
ohata_bi
0
100
Purview 勉強会報告 Microsoft Purview 入門しようとしてみた
masakichixo
1
460
AI飲み会幹事エージェントを作っただけなのに
ykimi
0
240
SpeechTranscriber + AIによる文字起こし機能
kazuki1220
0
120
AI Agent に“攻略本”を渡したら、150フォームの移行が回り始めた話/登壇資料(高橋 悟生)
hacobu
PRO
0
190
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
230
How to learn AWS Well-Architected with AWS BuilderCards: Security Edition
coosuke
PRO
0
190
生成AI時代に信頼性をどう保ち続けるか - Policy as Code の実践
akitok_
1
520
AWS WAFの運用を地道に改善し、自社で運用可能にするプラクティス
andpad
1
610
Redmine次期バージョン7.0の注目新機能解説 — UI/UX強化と連携強化を中心に
vividtone
1
210
Directions Asia 2026 | Beyond Buildable AI Agents: Let’s Visualize Partner Value in the AI Era
ryoheig0405
0
130
10サービス以上のメール到達率改善を地道に継続的に進めている話 / Continue to improve email delivery rates across multiple services
yamaguchitk333
6
2.3k
Featured
See All Featured
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
210
Speed Design
sergeychernyshev
33
1.7k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
810
Utilizing Notion as your number one productivity tool
mfonobong
4
300
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
350
Paper Plane
katiecoart
PRO
1
50k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
HDC tutorial
michielstock
2
660
Accessibility Awareness
sabderemane
1
120
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
440
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?)