Qt Quick本のダウンロード販売始めました

コミケC86で頒布した「Qt Quickを使いこなすクロスプラットフォームUIプログラミング」のPDF版のダウンロード販売始めました。
当日はお越しいただきましてありがとうございます。

もし熱い中、現地に来ていただいたのに買えなかった方が居ましたらこちらでどうぞ。
そもそも遠くて行けるわけないよって方もどうぞ。
午後までよゆーで残ってますよって言葉を信じてくれた方もこちらでお願いします。
(ご購入頂いた方は挟んである紙を探してください。PDF版がダウンロードできます。)

販売サイト(BOOTH)
 「Qt Quickを使いこなすクロスプラットフォームUIプログラミング

現状、これしか無いのですが半年に1冊増えたらいいなと思っております。

去年発売したこちらも合わせていかがでしょうか?(Amazon)
 Qt QuickではじめるクロスプラットフォームUIプログラミング

コミケC86でQt Quick本を頒布してきました

まずは、参加された皆様お疲れ様でした。
つ部(3日目の西か43b)でQt Quick本を委託頒布してきました。
つ部の本にも寄稿していたりするので参加サークルのところに個人本を置いていた感じでした。

コミケ開場前の様子です。 本の入った箱が届いているのを見て安心して、中身を確認して安心してという感じで準備してました。(自分で印刷所に頼むの初めてでした)

成績としては、Qt Quick本完売しました。
つ部本は若干残りましたがQt Quick本より全然たくさん刷ってたので上々だったかと。

あらためて、つ部(&理ろぐ)スペースへ足を運んで頂いて本当にありがとうございます。
買っていただいた方、ありがとうございます。
品切れで買えなかった方、申し訳ありません。

Qt Quick本は、何らかの形で電子書籍版として販売する予定ですのでしばらくお待ち頂ければと思います。
詳細が決まり次第、告知します。Kindleになるか他になるかはまだ不明です。

買って頂いた方と少しだけでしたがお話する機会がありました。
Qt使ってるよとかQt使ってたよとか艦メモ知ってるよと言って頂けて自分が思ってるよりは認知されてるのかな?と思いました。
本の売れ方的にもで、東ホールでの戦いが終わって賑やかになり始める前の午前中に売り切れてました。
本当にありがとうございます。全然売れなかったらどうしようとリアルにオドオドしてました。

というわけで、もう少し調子にのってもいいのかな?と思いつつ(そーじゃないですね)、次回の冬コミこそちゃんとスペース取りたいなと意気込んでおります。


追伸
 一部の方に、お昼過ぎてから並ばずにきてもらえばよゆーですよと話してたのですが、全然大嘘でした。スミマセン。

艦メモ(ver 0.15)に録画機能が追加されました

/// 概要的な何か ///
ゲーム画面を連続的にキャプチャしてffmpegで最終的に結合することで録画します。
キャプチャのタイミングは割りとアバウトなので数秒に1度足りないフレームを直前のデータで補間して最終的な音とのズレを防ぎます。
ffmpegで動画に変換するため30fpsなら画像が30枚必要になるため、1秒ごとに画像の枚数を調整します。
10分程度録画したときの参考情報です。
 動画形式:MP4
 出来上がりサイズ:62MByte
 作業ファイルサイズ:881MByte

/// 注意事項 ///
 ・ffmpeg必須です。
 ・PCのマスター音源を拾うのでメディアプレイヤーなどで音楽再生してるとひろってしまいます。
  ゲーム内の音だけを録音しないので他のアプリの音は消した状態で録画を始めないと生放送中の家族乱入的な感じになります。
  Ubuntuでの録音方法よくわかりませんでした。誰か教えてぷりーず。
 ・キャッシュフォルダにガンガン画像を保存します。ディスクの残量は考慮しません。
  ディスク残量には注意してください。
 ・マップ攻略などを記録に残そうと録画をして「ボス戦で勝った!」というタイミングで艦メモが落ちても責任取れません。
 ・用法用量を察して計画的にご利用下さい。


/// サンプル動画 ///
 夏イベントのE-4をクリアした時の動画です。
 


/// 準備・設定(Windows) ///
1.ffmpegのインストール
  公式サイトからダウンロードしてください。
2.コントロールパネルでPC内の音を録音できるようにします。
  コントロールパネル→サウンド→録音タブ
  一覧を右クリックして「向こうなデバイスの表示」「切断されているデバイスの表示」をONにします。
  「ステレオミキサー」が表示されたらそれを既定のデバイスにしてください。
  controlpanel_sound_record00.jpg
  もし表示されないときは、サウンドボードのドライバが対応していないようです。残念です。
  マイク入力はあると思うのでスピーカーの出力を物理的にマイク入力へつないでください。
3.艦メモを起動して録画設定をします。
  ファイル→録画設定
   ・ffmpegのフルパスを設定してください。
   ・音源を選択して下さい。
   ・fpsを調整してください。録画開始しただけでゲームがカクカクするならここを調整です。


/// 準備・設定(Ubuntu) ///
1.avconvのインストール
  ffmpegの代わりです。
  $sudo apt-get install libav-tools
2.PC内の音を録音できるようにします。
  よくわからないので誰か教えてください。
3.艦メモを起動して録画設定をします。
  ファイル→録画設定
   ・avconvのフルパスを設定してください。
   ・音源を選択して下さい。
   ・fpsを調整してください。録画開始しただけでゲームがカクカクするならここを調整です。


/// 準備・設定(Mac OS X) ///
1.ffmpegのインストール
  Homebrewを使用すると簡単でした。
  $ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
  $ brew install automake celt faac fdk-aac git lame libass libtool libvorbis libvpx libvo-aacenc opencore-amr openjpeg opus sdl schroedinger shtool speex texi2html theora wget x264 xvid yasm
  $ brew install ffmpeg   --with-fdk-aac --with-libvo-aacenc   --with-libvorbis --with-libvpx   --with-openjpeg --with-theora   --with-opencore-amr
  $ ffmpeg 
  /usr/local/bin/ffmpeg
  参考情報
  ・Homebrew
  ・Mac OS XでFFmpegのインストールとWebM動画の作り方
2.PC内の音を録音できるようにします。
  Soundflowerを使用します。
   ダウンロード:http://cycling74.com/products/soundflower/
  システム環境設定→サウンド→出力と入力タブ
  で、「Soundflower(2ch)」を選択します。
  参考情報
  ・Mac内部で鳴ってる音を録音する [Soundflower, Audacity]
3.艦メモを起動して録画設定をします。
  ファイル→録画設定
   ・ffmpegのフルパスを設定してください。
   ・音源を選択して下さい。
   ・fpsを調整してください。録画開始しただけでゲームがカクカクするならここを調整です。


/// 艦メモでその他の設定 ///
 ・音ズレ修正
  動画の頭と録音の頭の同期が厳密に取れないのでフレーム単位で調節できるようにしました。
  ずれてるなーと思ったら調整してみてください。
   正:動画に対して音が後ろへ行く。つまり動画の最初を捨てる
   負:動画に対して音が前へ行く。つまり動画の頭が水増しされる
 ・戦果報告
  戦果報告画面のコピーが映り込むのでデフォルトでは非表示にします。処理も重くなるので。
  連合艦隊のときはとくに気をつけてください。
 ・お知らせタイマー
  繰り返しですが、PCのマスター音源を録音するため録画中に鳴ると残ってしまいます。


/// 使用方法 ///
1.ファイル→思い出を動画で残す
  ゲーム画面右にボタンが表示されます。
2.赤丸の録画ボタンを押して録画開始
  経過時間とステータスが表示されます。
3.録画ボタンを押して停止
  ステータスが、Recording->Saving->Convert->-
  と、変化します。
4.Convertが終わるのを待ちます
  ディスクへの書き込みが遅いとSavingでかなり待たされるかもしれません。
5.動画をお楽しみください


/// ダウンロード ///
 ダウンロードはいつものページでお願いします。
 艦メモ ~艦娘メモリーズ~(艦これ専用ブラウザ)

コミックマーケットC86で、Qt Quick本の新刊を出します。

hyoshi-mihon-for-blog.png

/// 情報 ///
サークル名:つ部(委託先様の名称です)
場所:日-西か43b
ページ数:88ページ
予価:1000円
著者:理音伊織
イラスト:かわぐちけい

///内容///
去年出版した「Qt QuickではじめるクロスプラットフォームUIプログラミング」の追補版のような内容です。
当時はQt 5.0.2でしたが現在はQt 5.3.1がリリースされて色々と事情が変化しました。
特に、Qt Quickコントロールが追加されていわゆるデスクトップアプリケーションの開発がやりやすくなりました。
この辺りの取っ掛かりになればと、いくつかの機能を紹介します。


///もくじ///

はじめに
目次
第1章 Qtとは
1.1. 特徴
1.2. QtとQt Quickの違い
1.3. Qtの開発環境
第2章 開発環境の作成
2.1. Qtのバージョンと動作確認環境
2.2. セットアップ
2.3. 環境設定の確認
第3章 Hello Worldで準備運動
3.1. プロジェクトの作成とQt Quickコンポーネントセット
3.2. プロジェクトの構成
3.3. 新しくなった初期ファイル(その1)
3.4. 新しくなった初期ファイル(その2)
3.5. 各プラットフォームでの実行結果
3.6. コマンドラインでのビルド
第4章 Qt Quickコントロール
4.1. どのようなものがあるか
4.2. ボタン
4.3. ラジオボタン
4.4. メニュー
4.5. スタイル
4.6. 子ウインドウ
4.7. ダイアログ
4.8. レイアウト
第5章 配布パッケージの作成
5.1. Windowsでは
5.2. Linuxでは
5.3. Mac OS Xでは
5.4. Androidでは
第6章 エレメント一覧
6.1. Qt Quickコントロールのエレメント一覧
6.2. Qt Quickコントロールスタイルのエレメント一覧
6.3. Qt Quickダイアログのエレメント一覧
6.4. Qt Quickレイアウトのエレメント一覧
メンバー紹介という名のあとがき

艦メモ 0.15 betaで録画機能テスト中です

端的にいうと人柱版ですね。

/// 概要 ///
ゲーム画面を連続的にキャプチャしてffmpegで最終的に結合することで録画します。いじょ


/// 注意事項 ///
 ・ffmpeg必須です。
 ・PCのマスター音源を拾うのでメディアプレイヤーなどで音楽再生してるとひろってしまいます。
 ・キャッシュフォルダにガンガン画像を保存します。ディスクの残量は考慮しません。
 ・マップ攻略などを記録に残そうと録画をして「ボス戦で勝った!」というタイミングで艦メモが落ちても責任取れません。
 ・用法用量を察して計画的にご利用下さい。


/// 準備・設定 ///
1.ffmpegのインストール
  公式サイトからダウンロードしてください。
2.コントロールパネルでPC内の音を録音できるようにします。
  コントロールパネル→サウンド→録音タブ
  一覧を右クリックして「向こうなデバイスの表示」「切断されているデバイスの表示」をONにします。
  「ステレオミキサー」が表示されたらそれを既定のデバイスにしてください。
  controlpanel_sound_record00.jpg
  もし表示されないときは、サウンドボードのドライバが対応していないようです。残念です。
  マイク入力はあると思うのでスピーカーの出力を物理的にマイク入力へつないでください。
3.艦メモを起動して録画設定をします。
  ファイル→録画設定
   ・ffmpegのパスを設定してください。
   ・音源を選択して下さい。
   ・fpsを調整してください。録画開始しただけでゲームがカクカクするならここを調整です。


/// 使用方法 ///
1.ファイル→思い出を動画で残す
  ゲーム画面右にボタンが表示されます。
2.赤丸の録画ボタンを押して録画開始
  経過時間とステータスが表示されます。
3.録画ボタンを押して停止
  ステータスが、Recording->Saving->Convert->-
  と、変化します。
4.Convertが終わるのを待ちます
  ディスクへの書き込みが遅いとSavingでかなり待たされるかもしれません。
5.動画をお楽しみください


/// 動作確認環境 ///
 以下のマシンでざっくり30fpsで録画できました。
  ・CPU : Intel Core i7-4770 3.4GHz
  ・Mem : 32BG
  ・HDD : SEAGATE ST2000DM001(SATA3 2TB 7200rpm 64MB)
  ・M/B : ASRock H87 Pro4
  ・G/B : Palit NE5X65001301-1071F(GTX650 1G GD5 1D1A1mH)U
  ・OS : Windows 8.1

Qt Developer Day Tokyo 2014が開催されました

Qt Developer Day Tokyo 2014が5/20に秋葉原で開催されました。
数年ぶりのQt公式のイベントとと言うことで平日でしたが会社を休んで参加しました。

イベントの内容としては、午前中にキーノート、午後からいくつかの部屋に別れてセッションが開かれました。
細かいことは他の方にお任せするとして・・・。
Qt 5 の未来は明るいブログ
Qt DEVELOPER DAY 2014 Tokyo に行ってきました

■自分が気になった事
・Qt Quick Compiler
 QMLを予めコンパイルしてネイティブコードにできるようになるそうです。
 今まで、JITでコンパイルしている時間分だけアプリの起動時間が伸びたりとあったのですがなくなります。
 起動しきったあとの処理スピードにどれくらい差があるかは未知数ですが、JITが使えないデバイスなどでは差がでると思います。
 別の面としては今まではQMLファイルをそのまま添付するかリソースに含めて配布しますがソースコードが丸見えになってしまいます。それがバイナリになるのでセキュリティ的な面でも期待できるとのことでした。
 (リソースに含めればて多少はマシになりますが、実行ファイルを開くとベタッとテキストのソースが見れます)

・マルチスクリーン対応
 Qtのモバイル対応が進んでいろいろなサイズのモニターサイズでアプリを動かす事になるのでその辺りにも対応しますよーって事でした。(僕の聞き間違いじゃなければ)
 今回発表された内容と一致するかはわからないですが。実は、1年位前にUbuntuPhoneのSDKが公開されたときに、そちらは対応されてました。Androidで言うところの「dp」みたいなのです。
 Qt Quickアプリはレイアウトが柔軟に変化させることができるので、スクリーンサイズの違いへの対応が無いのが辛かったです。どうしても対応したいときは、自力で倍率を変化させられるように作りこむ必要がありました。
 最近は、11インチでフルHDという高dpiなノートPCが登場したりしていて、デスクトップ向けQtの世界だけでも必須機能になると思っています。
 今後どうなるかに期待したいです。

■その他、雑感など
・同時通訳
 キーノートから各セッションまで全て同時通訳がついてて良かったです。英語の不自由な自分には安心設計です。
 しかも質問も逆の同時通訳がされててすごいなーと思いました。
・おやつ部の差し入れ
 チロルチョコとおせんべい。
 まさか、名古屋から遠征していた@sazusさんがおせんべいを用意してくれていたとは。僕ほんとに遊びに行っただけ状態でした。
・受付がアナログだった
 紙に印刷したリストでチェックしてました。僕もですが参加者が「あ、これです」とか指さしてるの見るとちょっと技術系のイベントなのにと思ってしまいますね。(自分たちの勉強会のことは棚にあげますよーすっごい大きい棚にあげますよー)
 せめて、シリアル番号発行するだけでもしてれば楽そうだったのにって感じですね。
・受付のおねーさん方
 イベント請負のところからきてたのかとても対応が良かったです。みんな綺麗だったし。
・Androiderな方々に会いました
 かなり久々な人も含めて意外とお会いすることができて、ちょっとは興味持ってもらえてるのかなと思いました。
・スライドの字が小さいことがちょこちょこ
 ついついやってしまいがちですが、情報を詰め込んでたら字が小さくて読めなかったところがありました。
 特に字が小さい上にハイコントラストな背景に白文字は全く読めませんでした。
・いろいろな発表で「Qt QuickではじめるクロスプラットフォームUIプログラミング」を紹介していただきました。
 SRAさんのキーノートでも口頭でしたけどご紹介していただいたのでびっくりしました
 Qt 5.0.2の頃に書いたのでQt Quick Controlsの事とか入ってない内容もありますが、QMLの基本的なことは変わってませんので基礎を知るには十分だと思います。
 
・お昼のLT大会
 お昼ごはんを食べつつ暇つぶしがてら聞いてもらえていればと思いました。
 ひさびさに沢山の人の前でしゃべったらもード緊張で終始シドロモドロでした。それでもちょこちょことリアクションを貰えてたので良かったです(本当か・・・

他にもいろいろあった気がするけど思い出せないので、以上で。
これからもQtで楽しんで行けそうだなと思ったので良かったと思います。

あ、Ambassador制度復活しないですかね?

艦メモに遠征時間の自動取得機能追加してみました。
例によって似非画像認識で実装していて通信データを見ていません。
1ドット数字の位置ずらされただけでアウトな弱々仕様ですのでご了承ください。
その辺りに対応する逃げ機能も盛り込む予定です。(労力の方向性が・・・)

時間を取得するタイミングに違和感があるかもしれませんので挙動や注意事項について簡単に説明です。

・実際に残り時間がわかる画面(遠征の各項目の詳細)を表示すると取得します。
 艦メモを起動しただけでは時間は反映されません。
 画像認識なので必要な情報を見れる状態になる必要があります。

遠征を始めるとき
 1.遠征選択画面で「決定」を押した時にトータル時間を取得
 2.艦隊選択後に、「遠征開始」を押した時にカウントスタート

既に遠征に出ているとき
 1.遠征に出している項目を選択
 2.画面上の任意の位置をクリックしたときに、残り時間を取得してカウントスタート

時間の取得はクリックしたときにキャプチャして遠征の時間を取得しようとします。
そのため、クリックして画面が切り替わった後に表示される情報の取得はできなくは無いですが負荷も上がるので避けてます。画面の切り替わりの終了を判定しないといけないので。
というわけで、既に遠征にでている艦隊の情報の取得はちょっと違和感があるかもしれませんがご了承ください。

遠征を始めるときの残り時間の表示が実際のゲームの時間とずれるかもしれません。
可能性としては、
・サーバーとPCの時計がずれていて見かけ上の時間がずれてた
・ネットワークの調子が悪くてボタンを押すタイミングと開始タイミングが大きくずれてしまった
遠征を始めるときは、「遠征開始」ボタンを押したタイミングで(サーバーの応答に関係なく勝手に)トータル時間からカウントするのでサーバーが返してくる終了時間と一致しないかもしれません。
 通信内容を調べてないので予想ですが、サーバーは何時何分に終了しますという情報をクライアントに投げてきています。(PCの時計を大きくずらすと開始直後にマイナス表示したりします。)ですので、見かけ上の時間が一致していなくても結果的に遠征が終わるタイミングは大体同じになると思います。


最新版のダウンロードはこちらから
 艦メモ ~艦娘メモリーズ~(艦これ専用ブラウザ)

 

Qt 5.2になってからQt Quickアプリへの対応がされてました。
(Qt 5.3リリースされようとしている中で今更感ありますが。)

Qt Quickアプリへの対応として、「-qmldir」が追加されました。
使用方法は、

$ macdeployqt -qmldir=<path> hoge.app/

となります。
QMLファイルを保存しているパスのルートを指定するとサブフォルダも検索してくれます。
これで、QMLで importしているライブラリが自動的に追加されます。
今までは、自力でコピーしてライブラリへのリンクを書き換える必要がありましたがお手軽になります。
サードパーティ製のライブラリなどでQtのディレクトリにないものは今まで通り手動でコピーです。

おまけ
Qt 5.2からアプリ内のフォルダ構成でQt Quick関連のプラグインの配置位置が変更になってます。
(今までと同じ場所に保存してたら Qt Quick 2.0がないと怒られてなんじゃこりゃってなってました)
この辺りにあるライブラリは
 Qt5.2.1/5.2.1/clang_64/qml/
ここにコピーする必要があります。
 hoge.app/Contents/Resources/qml
ご注意ください。
macdeployqt使えばほとんど気にしなくていいのですけどね。


Qtで作成したアプリケーションを配布するとき、必要なライブラリ(dllとかsoとかdllibとか)を実行ファイルと一緒にする必要があります。
必要なライブラリを調べるのが意外と面倒だったりします。
Macではmacdeployqtというツール以前から使えていたのですが、他の環境ではありませんでした。

が、これから違います。
Qt 5.2からWindows用にも作成されSDKに同梱されるようになりました。
このツールのすばらしいところは、QMLファイルのimport構文を解析して必要なプラグインも同梱してくれるところです。
正直、ここが一番面倒でしたので。

この記事は、Qt 5.2.1 MSVC2012版で書きました。

/// 入手場所 ///
標準のインストールフォルダだと以下のあたりにあります。(VS2012版の例)
C:\Qt\Qt5.2.1\5.2.1\msvc2012_64\bin

/// 使用方法 ///
簡単で以下の書式でOKです。

> windployqt <実行ファイルのパス>

これで、実行ファイルと同じフォルダにライブラリをコピーしてくれます。
QMLファイルがある場合は、以下のようにします。

> windeployqt --qmldir <qmlのパス> <実行ファイルのパス>

QMLファイルのフォルダは中を再帰的に調べてくれますのでトップのフォルダを指定すればOKです。

ライブラリをコピーして配布パッケージを作るフォルダを実行ファイルが現在あるところから変更することもできます。
(実行ファイルはコピーされません)

> windployqt --dir <コピー先のパス> <実行ファイルのパス>

その他のオプションのことは「windeployqt.exe -h」です。

/// 注意 ///
・1つコピーされるライブラリが変です。
 このファイルだけはツール実行後に手動でコピーしてください。
  誤:D3Dcompiler_47.dll
  正:d3dcompiler_46.dll
・サードパーティ製のライブラリはコピーされないようです。
 手動でコピーしてください。
・QMLファイルがリソースに含まれる場合はサーチしてくれません。
 「--qmldir」オプションでプロジェクトにある生データのパスを指定してください。
・OpenSSL系のライブラリはコピーされないようです。(調べようがないですよね)
 手動でコピーしてください。

 

2014 Qt Developer Day Tokyoが開催されます。

2014 Qt Developer Day Tokyoが5/20に開催されるそうです。
開発元が公式に開催するイベントとしては2011年以来で楽しみです。
今回は、Qt Developer Days Asia 2014と題して中国と日本で開催され5/20に東京となります。
Qt Project のチーフメンテナ Lars Knoll氏も来るそうなので興味の有る方には是非参加してほしいです。

Qt公式ブログに東京で開催する理由めいたことも書いてありますが、中の人達が日本に興味を持ってもらえてるのはコミュニティなどを通じて関わっている身としては嬉しいですね。

Qtユーザー会からもアプローチしてイベントを盛り上げれないかを@task_jpさんがきっかけを作ってくれました。参加するだけじゃない関わり方もできるかもしれません。社会人の人も学生の人も中の人達と密に関われるチャンスが来そうです。
ぜひ、お休みとって参加しよう(笑)
自分は有給決定だけど、火曜日なのがちょっと残念。金曜日だったら泊まりにできたのに。。。

2014 Qt Developer Day Tokyoで、メールアドレスを登録して最新情報を入手しましょう。


前回の2011年の時は、Nokia Japanの方のサプライズで端末もらえたりとかあっていい事もあったなーと思い出に浸ってみたり。