10/8に開催された技術書典5(イベント詳細は←のリンクへ!)にサークル参加したレポートです。

 今回も無事に新刊を執筆できて「Qt Quickアプリの設計事情」を無事に頒布できました。

 前回の4では抽選に外れてしまって色々お世話になっているサークル「底なし沼の魔女」さんにて委託させていただく事でなんとか滑り込んでましたが、今回はちゃんとサークル参加でした。まず、出店できて良かった。そして、委託も含めても良ければサークル参加皆勤賞です。

当日の雰囲気

 スペースにお越しいただいた皆様。本を買っていただいた皆様。本当にありがとうございます。手伝ってくれた@yuuxzy_さんもありがとうございます。

 今回は、会場が池袋のサンシャインシティに移動して広くなりました。壁際に大きな柱が出っ張っている関係で壁際配置のサークルの後ろは余裕があって助かりました。が、島中のサークルさん達には申し訳ない広さでした。

 広くなった意味では、通路の淵でサークルさんを見ている人の層と通路中央で移動する人の層と余裕が出来ていたように感じました。それでも、開場直後のピーク時は少しツラそうでした。4のときのすし詰めに比べれば全然マシだったのではと思います。

 通路の余裕という意味ではこんな呟きをしたのですが、子連れの方が増えていた印象です。

 以前は、抱っこひもで小さなお子さんを連れてくる(実質親御さんと一体化している状態)パターンは見かけたことがありましたが、今回はベビーカーや、もう少し大きくなった子と一緒に歩いているパターンなどもちょくちょく見かけました。

 身近な人たちもここ数年で結婚してお子さんができて、というのを見ているので、もっと気軽に参加してもらえる雰囲気になると良いですね。さすがに開場直後のピーク時はどんなに配慮がなされても危なそうなので、時間をずらしても大丈夫なような子育て世代へのちょっとした配慮ができると良いかもですね(子供と同伴しないと受け取れない公式取り置きとか、妙な案くらいしか思いつかないが......)。臨時託児所とかもできると理想かもしれませんが理想過ぎますね。

 それと、机の上が見えるくらいの背丈があると展示してあるものに興味をもって楽しんでいる子もいたので親子で何かしら楽しんでもらえるとよいなーと思いました(メイカー系ほど楽しくはないかも?)。

実績

 本の売れた数など

 決済方法の割合は以下の感じでした。

  • 現金:70%
  • かんたん後払い:25%
  • pixv PAY:5%

 既刊は本当にわずかを持ち込んでいたので完売して良かったです。

 新刊については50冊で印刷依頼して予備が6冊入っての49冊頒布。展示見本や献本用を除くと50冊の用意で49冊頒布なので見事な受注予測だったと言えます。嘘ですごめんなさい。いつもどおりでいいやって感じで印刷しました。

 今回の新刊は「C++でQtの経験がある人向け」「何となくQt Quickにふれたことがある人向け」という狭き門をくぐるかごときのテーマでした。それでも、興味をもって手に取ってくれた人がいてとても嬉しいです。しかも、超ドストライクな方に手に取ってもらえて奇跡です!!

 そして、Qt Quickに興味を持ってもらえたのでとても嬉しいです。しかも感想が早い!

執筆など

本文について

 実は、無理をしない。本当の意味で薄くてもOKのつもりで執筆を始めました。実は、ここしばらく技術書典で技術書を執筆し、コミケで小説を執筆して年間4冊を書いていたので無理しすぎは良くないはずだと考えていたのです。しかし、最終的に70ページ近くなり普段とあんまりかわんなくない? となってました。良い誤算?

 ともあれ書き始めるに当たって今までQt Quickの使い方的なことはまとめてましたが、結局避けては通れないC++の部分とのつなぎと言いますか「関係性」を説明したことはなかった気がしたのでまとめてみようと思ったのです。QML主導にするか、C++主導にするかでやることが変わってくるのですが、自分の中でも少しモヤッとしていた部分でもあったので以下の図のイメージができて、これなら書けそうだと思えました。

qtquick_sample.png

 QMLとC++がどんな関係になるかの解説とともに実装的にどんな違いがでるかも解説してます。

 その他に、Qt Quickで複数ウインドウのアプリとか、ウインドウ無しアプリとか、QMLタイプのマルチスレッド化とかについて書いておりますので、興味があればぜひ電子書籍版をご購入ください。

電子書籍について

 以下のサイトで行っております。

 今回はBOOK☆WALKERとKindleで10/8発売で予約受付をしました。夏コミのときもBOOK☆WALKERでやってみたのですが少しですが予約してもらえていたので、再びチャレンジという感じです。

 ただ、予約状態にするにはBOOK☆WALKERで1週間程度、Kindleで4日程度前には原稿が用意できていないといけないです。予約なので仕方がないかもですね。

 Re:VIEWや一太郎で執筆している方はepubへの変換は難しくないと思うので印刷所への入稿タイミングも考えれば不可能なタイミングでは無いと思います。ちなみにWordの場合は「LeME」というソフトがありますのでぜひご検討ください。自分の技術同人誌を変換するために作ってるので図や表も対応です。

表紙について

 Qt Quickの本を書くときはいつもお世話になっているかわぐちけいさんにお願いしました。シリーズ的に同じキャラクターで統一したいからです。という手前のもと「いつもの女の子をお願いします!」と恐る恐る(厚かましく)メールをするといつも快く快諾していただけるので正直甘えまくってます。前回の時はイラストレーターさんとのやり取りをしっかり文字ばっかりで報告したのですが、大した内容はないですけども、以下な感じです。

  1. 6月末頃にスケジュール的にお願いできそうかメール(イラストの内容は何も考えてない)
  2. 「OKです。決まったら教えてください」と快諾してもらえる(歓喜!)
  3. 7月は夏コミの原稿で必死(しかも急遽コピー本を追加して更にアホになる)
  4. 8月頭にイラストの内容とかテーマをお伝えする
  5. 「9月に入ったら作業しますね」と返信
  6. 9/4にラフが2パターン届く(2パターンいただいたの断腸の思いで選ぶ)
  7. 9/6に完成が届く(相変わらずの仕事の速さ)

 とても甘えまくったスケジュール管理も何も無い作業工程でした。何回もお願いしていて仕事の速さは知っているので安心クオリティでした。いつも「仕事が忙しくてなかなか手をつけられなくてごめんなさい~」とか言いながら、僕がお願いしているタイミングより早く速くしれっと仕上げてくださるので神です。

 イラストが上がるとデザイナーさんにバトンタッチです。春に続いて藤宮藍さんにお願いしました。

  1. 夏コミのときに9月くらいスケジュールどうですか?と聞く
  2. OKしてもらえるたので、すぐに仕様をまとめて伝える
  3. 9/4に届いたイラストのラフを参考に9/5に送るが、翌日完成品が届いてしまったので慌てて送り直す
  4. 9/17にデザイン案が届く。
  5. 2パターンもらっていたので、めっちゃ悩んで1日くらい悩んで決断
  6. 数回やりとりして9/21に完成

 我が儘を聞いてもらってなんとか完成しました。過去最高の表紙ですね。お二人に頼んで良かった。

 ところで、ですがイラストを担当していただいた、かわぐちけいさんは児童書などで漫画やイラストを描いていらっしゃいますので、本屋さんで見かけたらぜひ!

運営様へ

 感謝を。何を置いても感謝を。

 運営の方々の努力あっての技術書典であり、あの場だと思います。微力ながらもパトロン枠として今後も参加したいです。

おわりに

 3桁頒布のような景気の良い話はありませんが、スペースにいらした方とお話をしてると「ブログを参考にしてます」と言っていただけたり、感想を呟いていただけたりと「これだから同人って最高だぜ!」と思える一日でした。

 また、頑張るぞ!

 次はQMLのレイアウトについてかなぁ......。

追伸?

 各所で書いていますが、技術書典へのサークル参加をそそのかした人の本が盛況で、同人デビューで爆死を体験させずに済んでホッとしてます。

 技術書オンリーイベント「技術書典5」に参加します!
 前回の4では奇しくもパトロンでも公平に抽選され落選することもあるを実証してしまったサークル「理ろぐ」ですが、今回は無事に当選しましたので、サークルのスペースにて皆様のご来場を待ち構えることができます。
 毎回、規模が大きくなるイベントでついに会場の広さが足りなくなって池袋のサンシャインシティ文化会館での開催になります。参加される方は、場所を間違えないようにご注意ください。
 さて、今回の頒布情報についてお知らせです。

/// サークルの情報 ///

 サークル名:理ろぐ(イベントサークルページ
 配置場所:き-05

/// 新刊情報 ///

 180920_book_qtquick_fix_s.jpg
タイトル:Qt Quickアプリの設計事情
著者 : 理音伊織
イラスト : かわぐちけい
デザイン:藤宮藍
B5サイズ / 68ページ
物理版:1000円
電子版:800円(BOOK☆WALKERKindleBOOTH

 Qt Quickアプリって結局どうやって作るんだろう?の疑問に答えます。
 本書では設計で考える機能配置についてQML主導とC++主導の2パターンを解説します。また、それぞれの考え方で実際のコードに落とすときの違いをサンプルコードを使って具体例に解説します。
 さらに、QMLタイプのマルチスレッド化の手法も紹介します。
 今回は、BOOK☆WALKERとKindleで予約が可能です。当日イベントに参加できない方はぜひご利用ください。


/// 既刊情報(その1) ///

 hyoushi_M.jpg
タイトル:Qt Quickを使いこなすクロスプラットフォームUIプログラミング2
著者 : 理音伊織
イラスト : かわぐちけい
B5サイズ / 72ページ
物理版:1000円
電子版:800円(BOOTHBOOK☆WALKERKindle

 技術書典2で頒布した本で、Qt Quick Controls 2についての解説書です。
 たくさんある機能の中でもスタイルについて取り上げています。基本的な使い方からオリジナルスタイルの作成方法まで解説します。
 アタッチプロパティの活用方法について掘り下げてます。


/// 既刊情報(その2) ///

 180404_book_ins_入稿データ_syuusei_M.jpg
タイトル:インストーラーで配ろう!
著者 : 理音伊織
イラスト : アシマ
デザイン:藤宮藍
B5サイズ / 188ページ
物理版:2000円
電子版:1800円(BOOTHBOOK☆WALKERKindle

以下のようなニーズを持ったデスクトップアプリ開発者向けにインストーラーの作成方法を解説します。

・お手軽にインストーラーを作成してアプリを配布したい
・バージョンアップをこまめにするので手軽な更新手段がほしい
・大量のPCに少ない手間でインストール作業をしたい
・Qt Creatorでアプリのビルドからインストーラーの作成までスタイリッシュにこなしたい


 イベント当日も今週末(というか来週?)に近づいてきて、入稿した本がちゃんと出来上がるかドキドキな日々です。なんだか、台風が2週連続で襲来な上に予報がやばい感じになりつつあって別の意味でもドキドキですね。
 当日、お会いできることを楽しみにしております。


 

技術書典4にサークル(委託)参加してきました

 4/22に秋葉原UDXで開催された技術同人誌オンリーイベントである「技術書典4」に参加してきました。参加したと言っても落選してしまったので委託でしたが。
 そんなわけで、参加した感想とか準備とかいろいろ報告したいと思います。「3桁冊数完売しました」みたいな景気の良い内容はないですが、いつぐらいから何をしていたとう部分を綴りたいと思いますので、参考になりそうなところがあったらすくい上げてみてください。別に~ってところは捨てておいてください。

 


/// 謝辞 ///
 本編に入る前に、運営に関わった皆様、いつも素晴らしいイベントをありがとうございます。そして、一緒に参加してイベントを盛り上げたサークル・一般の皆様、お疲れ様でした。


/// 教訓 ///
 一言で書くと「検収作業はきっち念入りに」です。
 今回、表紙のデザインのところで僕がスルーしてしまったがためにリテイクをお願いしてしまいました。しかも、僕がOKですと伝えて支払いまで終えた後にです。もう、とんでも依頼主です。反省です。
 こんな僕が書いても説得力ないですが、見るときのポイントです。

 ・イラストは拡大して見える範囲を狭くして見る
  →見える範囲が広いと見落としが発生します。
   靴紐の編み込みは左右でそろってる?
   塗りミスはない?
   衣装の形や髪型は複数のイラストで揃ってる?
   などなど
 ・イラスト・デザインに依頼した要素がちゃんと入っているか確認
  →小物とか衣装とかタイトルとかいろいろ
 ・文言関係は誤字脱字に注意
  →依頼先の方に馴染みのない文言のときもあります
 ・気になったことはとにかく伝える、相談する

 依頼する側がスルーしてしまったがためにイラストレーターさんやデザイナーさんの黒歴史にだけはならないようにしたいですって感じですね。
 そして、双方納得のいく作品にしたい感じです。
 最終的には普段のお仕事とたいして変わらないと思いますけど。


/// イラスト発注で伝えてること ///
 こんなはずじゃなかったにしないためですね。可能な限り考えていることを並べてみます。
 (正直、これで良いかはわかりません)

 ・イラスト全体のテーマ
  →今回は配達をテーマに伝えて郵便屋さんをイメージしてもらって描いてもらいました
   完成形:180404_book_ins_入稿データ_syuusei_M.jpg
 ・全体的に使って欲しい色とか
 ・キャラクター(がいるなら)
  ・性格
   →おっとり、ツンデレ、クーデレなどなど
  ・年齢
   →18歳くらいとか
  ・容姿
   ・髪型
    →長め・短め・三つ編み・前髪ぱっつんなどなど
   ・胸のサイズ
    →貧乳・巨乳など
   ・身長
    →高い・低い・具体的な数値など
  ・衣装
   →魔法少女みたいとか
    スカートが良いとか
    いろいろです

 シチュエーションとかも具体的に書けると良いと思いますが、とにかくイメージしているキーワードをたくさん書くとイラストレーターさんもイメージしやすいと思います。
 特殊な例としてはロリBBA系みたいなのを期待する場合とかは、具体的に書いた方が良いと思います。
 キーワードだけ見たら絶対あのキャラだよって思っても気にしないで良いです。後で答え合わせをしたことがあるんですが、別のキャラを思い浮かべてました。ただ、具体的に「このキャラ」っぽい感じでと伝えてしまうとどうしてもそのイメージに引っ張られてしまうという人もいるので、僕は特定のキャラを指定するのは避けてます。
 小物で形とかを伝えたいときは「~ってキャラがしているやつ」みたいな伝え方はありかなと思ってます。
 デザインは、ゲームパッケージとかラノベの表紙とかイメージの近いものを上げると良いと思います。


/// 1月ごろ ///
 まずは、申し込みをしました。
 当落の結果はでていないですが、書く内容は決めていたので表紙の算段をします。フライングも甚だしいですが、今回は表紙のタイトルやらの装丁をデザイナーさんに頼んでみたかったので、納期の加減(イラストができてからどれくらいの期間が必要かがですね)がわからなかったのでとにかくやる気を出した瞬間に動くしかないといった感じです。
 イラストとデザインでお願いしたい人は実は去年の内(の年末)から決まってました。イラストレーターさんは去年くらいからTwitterで見かけ始めた方で夏コミで本を(確か)買えなくて委託ショップで買っていたので冬コミでは絶対に本を買うぞ、と意気込んで自分のスペースをお手伝いさんに任せて開幕ダッシュして買いに行きました。で、その本のデザインがとても素晴らしくTwitterでのやりとりもあり良いコンビっぽいと目をつけていたのです。
 結果として、依頼を受けていただいたのでこの話題を書いておりまして、後に本は完成しております。
 では、お二人についてご紹介です。
 
 イラスト:アシマさん(TwitterPixivWeb
 デザイン:藤宮藍さん(TwitterWeb

 アシマさんは全体的に爽やかな感じのイラストが多くて色使いも鮮やかですね。冬コミの新刊(めろん委託もよろしくね)も花言葉をテーマに描いていらして華やかな感じなんですけど、黒基調の「クリスマスローズ」のイラストもとても良いです。
 藤宮さんは、それぞれのイラストに対して元の花をモチーフにしたロゴなど作られていて素敵だったのですよ。

 最初にアシマさんの方に連絡をとって快諾をいただきつつ、藤宮さんをご紹介いただく形で話を進めさせてもらいました。ある意味狙いどおりです。
 このとき、依頼事項をまとめたWordファイルを共有してお二人に送っていました。本文の前に依頼先にちゃんと伝えるべきことは伝える感じですね。スケジュールも確認して資料にまとめて提出しました。ざっと、下記のような感じでした。

  2月末までに表紙ラフ
  3月上旬にイラスト完成、イラストの仕上げと平行して表紙のデザインラフ
  3月末までにデザイン完成

 ここで大事なことがあります。表紙を含めた装丁が完成するということは背表紙の厚さも確定しなくてはなりません。つまり、原稿が3月末までに完成しなければならないのです(校正はのぞくとしても)。サークル参加した皆さんや技術書典のハッシュタグを追いかけていた方はご存じかもしれませんが、がんばれば締め切りはもっと後ろにずらせるのに、です。
 もちろん、交渉次第ではデザイナーさんに修正していただく期間を後ろにできますが、自分が3月末くらいには完成させたいと思っていてそれを最初にお二人に伝えたので粘るわけにはいきません。

 表紙駆動執筆の始まりです。

 イラストの調整をしつつ、今回の新刊で一番やりたかった「Qt Creatorでビルドボタンを押したらインストーラーが出来上がってしまうお手軽状態にする」を調べ始めました。概ねできること自体は確信していたのですが、中々に苦戦して1月いっぱいを使ってしまった感じでした。そこで、一番やりたかったことができてしまって少し油断が生まれてしまったのは失敗だったかもしれません。2月中は思ったほど進捗がでなかったのです。


/// 2月ごろ ///
 待ちに待った当落発表。すでに語ったとおり「落選」しました。回を重ねるごとに盛況さが増している技術書典ですから、サークル参加の希望者も増えているので仕方がありませんね。
 さっそく、知っている人で当選した人にお願いして委託の快諾をいただきました。委託を快諾してくれたのは、サークル「底なし沼の魔女」のれいなさんです。ありがとうございます。
 表紙を描いてもらって本も作ったのに頒布する場所がないと悲しいことになりますので、一安心です。

 原稿自体もがんばって進めてはいました。ただ、今回の新刊は過去に頒布した本の総集編+ネタ元のQt Installer Frameworkのバージョアップ対応+Qt Creatorでビルドネタでしたので、原稿のほとんどが改訂作業です。正直、気分が乗りきらない! とうだうだしてたら2月が終わりました。
 言い訳をします。今回の改訂は前の原稿の誤字とか変更があったところを修正くらいで済ませても微妙だし、説明が足りないところを補強したり、いろいろしたかったので新規ファイルに直しながら書き写す的なことをしていたので、時間がめっちゃかかったのです。
 
 ところで、ネタ元のQt Installer FrameworkはOSSです。やり始めて日本語訳がまだらになっていることに気づきました。Qtの翻訳の仕組みの都合もあってソースコードの修正に翻訳情報が追従できなくなっていたので、そこを修正してパッチを送りました。なので翻訳自体で新規要素はほとんどありませんでした。ですが、結果的に自分のパッチが取り込まれ採用されると嬉しいものです。「やったー」と思って油断しているとあることに気づきました。
 売りにしてる「オンラインインストーラーの更新確認機能で微妙なバグがある!」ということに気づいたのです。これはヤバいと思いました。実際、自分でも使っているのでコレ放置していつ直るかわからないの待っていると自分の運用的にも困るし、新刊が微妙なことになる。ということで、これまた修正してパッチを送りました。つたない英語で何度かやりとりをして結果的に取り入れられました。「やったー」と言った感じです。ささやかな修正でもOSSに自分のパッチが取り込まれるのは本当に嬉しいものです。これで新刊も無事に出せる(おい)。

 そんなこんなしていると、表紙のラフが届きます。
 めっちゃやる気でます。滞っていた作業が進む気がしてくるので不思議です。山田エルフ先生もおっしゃっております。

  「やる気マックスファイヤーで書いた文章のほうが絶対におもしろいに決まってるでしょ!」
 
 2月も終わって3月に入ったらいよいよ本格的に原稿を仕上げていかなければなりません。でも、イラストのラフが来るとやる気のレベルが一段上がるのは間違いありません。


/// 3月ごろ ///
 イラストのラフやデザインのラフが上がってきてヤル気もうなぎ登りですが、反面焦りがでてきます。原稿やべぇ。
 2月のところに書きましたが、ネタ元で見つかったバグの修正は結局3月中旬まで期間を要しました。僕だけの都合じゃないですからね。なので、かなりヒヤヒヤしながら最悪バグがあったらこんな説明をってのを追加しつつ書いてました。最終的にはバッサリ消すことができましたので、良かったです。
 気がついたら当初Ver3.0.3だったのが、自分の送ったパッチを含んだVer.3.0.4がリリースされて大慌てて出直したりもしました。
 なんだかんだで、3月の前半は原稿の残りを書いて後半は修正をしてました。
 数日おきに届くイラストやデザインの進捗を確認してお願いをしたりの時間もありますので注意が必要ですね。もちろん、表紙も自分でやるよりはトータルでクオリティ的にも工数的にも良いわけですが。


/// 4月ごろ ///
 なんだかんだで、原稿がおわって入稿できました。
 前述した僕の「やらかし」のせいで冷や汗もかきましたが、ありやま先生の指摘で事なきを得ました。ありがとうございます。
 これ以上は特に書くことなかったかもって思いましたが、今回早めに原稿を終えることができたので当日新刊を買ってくれた人にプレゼントするダウンロードカードを印刷所に頼むことができました。いつもなら自宅名刺プリント用シートにインクジェットで印刷して切り離ししてました。さらに電子書籍を作るソフト「LeME」のイメージキャラクターの名刺も作ってみました。ほんとデザイナーさんは偉大だなって思います。
 BOOK☆WALKERに事前登録して予約状態にすることもできましたね。発売日を指定しようとすると1週間前までに用意しないといけないのですよね。


/// 当日 ///
 当日の盛況っぷりは書くまでもないと思います。
 ただ、一日中つねに人がサークルの前にいるってのは久々で、流石に疲れましたね。結局、対岸の島が見えたの15時か16時くらいになってからでした。ずっと人の壁に阻まれて見えなかったんですよね。
 途中、数回ほどスペースを離れさせてもらって、買い物しました。いくつか売り切れで買えなかった本もありましたが概ね買えたので良かったです。戦利品はまだ届いてないので後日。デザイン系の本も数は少ないですが存在しているので、そのあたりを意識して買いました。できるなら本職の人に頼みたいですが、資金的なつらみもあるしできるなら自分でもやってみたいので勉強です。
 かんたん後払いは本当に楽で便利ですね。


/// 結果 ///
 印刷50冊
 頒布42冊(うちかんたん後払いでの決済は5冊)

 Web関係のサークルが並ぶ中でデスクトップ向けの本で検討したかなと思ってます。
 印刷代はまかなえました。イラスト・デザイン代は僕の心的にプラスレスなので伏せときます。

 電子版の販売始めてます。販売サイトごとにファイル形式が違いますのでお好みで選んでください。
 ・BOOTH(PDF版)
 ・BOOK☆WALKER(epub版)


/// まとめ ///
 まとめるほどのこともないですが、こんな感じで技術書典4に向けて動いてました。
 なにか役に立ちそうなことありましたかね。長文にお付き合いいただいてありがとうございました。

 あと、何か書くことあったかな?

Qt Quickでスプラッシュスクリーンを表示

こんにちは。こんばんわ?
Qt Advent Calendar 2017の24日目を担当する@IoriAYANEです。

今回は、Qt Quickでスプラッシュスクリーンを表示しつつ、その必要性について語りたいと思います。
他のカレンダーの記事と比べるととってもゆるふわですが、ご了承ください。

/// まずは導入してみる ///
 導入してみます。
 今回のサンプルの主なファイルは以下の通りです。

  ・main.qml
  ・MainWindow.qml

 main.qmlの方でスプラッシュスクリーンを表示する部分を作り込みます。
 MainWindow.qmlは今回のサンプルではどんな内容でも良いので省略します。

 サンプルの仕様を簡単にまとめると以下の通りです。

  ・起動後、画像だけのウインドウを表示
  ・上記ウインドウが表示できしだいメインウインドウのロード開始
  ・メインウインドウのロードが完了しても最低2秒は、上記ウインドウを表示しつづける

 です。

import QtQuick 2.9
import QtQuick.Window 2.3

Item {
    property double startTime: 0

    //スプラッシュスクリーンに相当するウインドウ
    Window {
        id: splash
        visible: true
        width: 480
        height: 300
        //ウインドウ枠をなし・閉じるボタンなどをなしにする
        flags: Qt.SplashScreen
        Component.onCompleted: {
            //スプラッシュスクリーンができたらアプリ本体である
            //MainWindow.qmlを読み込み開始
            startTime = new Date().getTime()
            loader.source = "MainWindow.qml"
        }
        Image {
            //かっこいい絵を用意しよう
            anchors.centerIn: parent
            source: "images/splash_screen.png"
        }
        //ロードが終わっても一定時間は表示するために
        //時間を管理するためのタイマー
        Timer {
            id: timer
            repeat: false
            interval: 1000
            onTriggered: {
                splash.close()
                loader.item.visible = true
            }
        }
    }

    Loader {
        id: loader
        asynchronous: true
        onLoaded: {
            var elapseTime = new Date().getTime() - startTime
            if(elapseTime > 2000){
                //スプラッシュスクリーンが一定時間以上表示されているので
                //すぐにウインドウを切り替える
                splash.close()
                loader.item.visible = true
            }else{
                //ロードは終わったけど一定時間たってないのでちょっと待つ
                timer.interval = 2000 - elapseTime
                timer.start()
            }
        }
    }
}

 対して難しくないですね。
 
 QMLの使い方というかエレメントの組み方でポイントになっているのはアプリケーションのルートにItemエレメントを使用していることです。
 むかーしは、どんなエレメントを使用してもウインドウが生成されていたのですが、現状はApplicationWindowやWindowエレメントのようなウインドウ系のエレメントをあえて使用しないとウインドウは生成されません。
 複数のウインドウを持つアプリケーションを作成しやすくするための措置だと思うのですが、C++(main.cppなど)からQMLを利用するときに使用するクラスにQQmlApplicationEngineクラスを使用するとウインドウが表示されません。そのQQmlApplicationEngineクラスがQt Creatorがプロジェクトを新規作成したときに使われているため、今回のサンプルのような構成でウインドウを二つ並列で用意するといったことが可能になります。ちなみに、QQuickViewクラスを使用するとウインドウが作成されます。

 Windowエレメントのflagsプロパティでウインドウの形態(ウインドウ枠をダイアログ形式や×ボタンを無くすとか)を設定できます。しかも、スプラッシュスクリーン用も用意されいて準備がとても良いです。
 どんな値が設定できるかは「enum Qt::WindowType」を参照してください。

 Loaderエレメントのasynchronousプロパティをtrueにするとメインウインドウをロード中にスプラッシュスクリーンをブロックしないです。今回の作りではたいして意味はないですが......。何らかの状況表示を更新する場合には必要です。

 やっぱり、簡単ですね。


/// で、なんでいるんだっけ? ///
 Qt Quickのアプリケーション(というよりQt QuickでGUIを作ったアプリケーション)は、実行時にテキストのQMLファイルを解釈している関係で起動が遅いです。しかも、QMLファイルの解釈が終わるまでウインドウなどは表示されず、ユーザーにはダブルクリックのミスを疑わせたりと非常にわかりづらい状況です。
 そんな中でQt 5.9からQt Quick Compilerの恩恵を一部受けられるようになりました。QMLのキャッシュファイル(*.qmlc, *.jsc)を用意して近い状況にしてくれるようになりました。デフォルトでは初回起動時に作成します。そのため、起動速度が2回目以降で改善されました。
 
 そうは言っても大規模なアプリケーションで読み込むQMLファイルが多いと起動に時間がかかるのは避けられません。
 そこで、スプラッシュスクリーンです。
 可能な限り軽量に作成したスプラッシュスクリーンを表示し、その後、メインのGUIを含むQMLファイルを読み込む流れにします。
 もちろん、アプリ本体の扉になる画面が軽量ならそこから必要に応じて逐次ロードもありですね。それを極端にしたのがスプラッシュスクリーンなので。

 以前、Qtデバイスの高速起動】Part1: 車載インストルメントクラスタという公式のブログ記事でも紹介されていたように、全くノーリアクションは良くない、なにかユーザーの目に映るモノを用意して裏で頑張るという手法をとるわけです。


/// 状況確認 ///
 QMLの解釈で時間がかかるとはいったものの実際どんなもんだろうってところだと思います。
 なので、参考情報です。
 QMLプロファイラーが用意されているため、それを使用して計測しました。

 詳細:Profiling QML Applications

 題材として僕が開発している電子書籍(epub)を作るソフト「LeME」を使用しました。手元に使えそうなのがなかったので^^;
 結果としてはすごくざっくり数値だと思って以下をみてください。

 
ファイルキャッシュコンパイル(ms)生成(ms)合計(ms)
スプラッシュなし40237277
あり15222237
本体なし253493746
あり156539695
 
 実行するたびに誤差で値が変化していると思いますが、キャッシュがあるとプロファイラでいうところのコンパイル時間が減ります。
 今回題材にしたLeMEがQMLファイル20個程度の規模ですが、スプラッシュスクリーンの方が体感できるレベルで早く表示が可能です(と言っても1秒以下ですが)。
 ただ、Qtの大きなライブラリがディスクキャッシュに入っているかも大きく影響しそうで、そっちの方が実は影響が大きいのではなかろうかという説もあり、無駄なあがき感もありそうですけどね......。ディスクキャッシュが効いているだろうなって状況でもスプラッシュスクリーンのような軽量ウインドウならワンテンポ速く表示できるので微妙な待ちがなくなって良いと思います。

/// おまけ ///
 キャッシュファイルは基本的にQMLファイルと同じフォルダに作成されますが、書き込みできない場合(リソースに含まれるときなど)は、QStandardPaths::CacheLocationのサブフォルダに保存されます。


/// 最後に ///
 本当に意味があるのか怪しい感をにおわせてしまいましたが、キャッシュが効けば早くなるのは間違いないですし、複数ウインドウのアプリケーションも作れることは理解していただけたと思います。
 
 Qt Advent Calendar 2017も残すところ、最終日のみ。
 期待して待ちたいと思います。ではでは。

10/22に開催された技術書典3にサークル参加してきました。

スペースにお越しいただいた皆さんありがとうございます。
台風の中、技術書典に集まった皆さんお疲れ様でした。
今回も最高の運営をしてくれたスタッフの皆さんありがとうございました。

/// 当日の運営 ///
 当日以前に、お手伝いで来てくれる人をちゃんと探して無くて数日前に急遽依頼するという酷い対応をしてしまったので、引き受けてくれた@sharkppさんには感謝です。
 で、当日ですが。
 時間よりちょっと早く開場したサークル入場で入って準備をして最後まで居た感じです。

 100冊オーバー頒布するようなサークルさんとは違って基本的にまったりなのでお客さんとのやりとり自体はそれほど大変じゃないです。
 ただ、それでも知っている人が挨拶にきてくれたり、本の中身について話したりするとどうしてもかかりっきりになるので、お手伝いさんがいると本当に心強いです。あとは自分が他のサークルさんを見て回ったりトイレに行ったりも安心してできます。
 と言うわけで、2人参加がお勧めです。ソロ参加の人すごいなーといつも思ってます。
 さりげなく電子書籍(epub)を作るソフト「LeME」のデモとチラシを置いていたのですが、何人かの人に興味を持って貰えました。本当はチラシを積極的に配りにいかないとなーと思いつつ出不精してます。
 今回は整理券配布が功を奏したのか、人がひどく滞留することもなく流れていた印象でした。再入場と戦利品確認部屋があったのが良かったのかなと。
 サークルとしては特にトラブルもなく無難に過ごせたかなと思います。

/// 頒布数 ///
 在庫が宅配中なので正確にはわからないですが。

 新刊:(12+24)/50
 既刊:(2+10)/20
 ※(かんたん後払い+現金)/印刷
 ※既刊は持ち込み数

 かんたん後払いを利用してくれた人は、13人でした。
 新刊と既刊の両方を買ってくれた人もいるので、だいたい25%くらいの人が電子決済で購入してくれていたと思います。
 傾向としては早めの時間に来てくれた人ほど、電子決済率が高い感覚です。
 購入が確定するとその場で頒布履歴に表示されてシェアコード(小さくて見にくかった><)が確認できてスムーズでした。
 あと、購入する側も不正してませんよってのをアピールする感じか、決済ボタンを押すところから見せてくれる人もいました。単にぼくが操作しているところガン見していたからかもしれませんが^^;

 被チェック数が前回の技術書典2と比べても少ないしこんなもんかなーと思ってましたが、ひとつ忘れ物をしていました。若干ずるくさいものの今までQtユーザー会の勉強会用に何冊かまとめ買いしてもらっていたのをすっかり忘れてやりとりをしていませんでした。なので、トータルで見れば概ね予定通りだったのではと。思ってます。
 そもそも、QtとQt Quickを知っている前提、一見さんお断り状態な内容なのによくこんなに買ってもらえたなぁと思います。Qtって聞いたことあるけど、入門してみようかって人は完全に置いてきぼりなので......。そんな本なので完売しないで欲しいと思ってくれた人全員にお届けできたのは良かったかなと思います。
 ついつい、売れるか売れないかを気にしてしまいがちですが、同人誌にしている内容って大体自分が知りたい・残しておきたい情報をまとめているだけなので、なにが問題なんだと。そう考えることにしてます。
 でも、できれば完売したいですけどねー。「完売、ありがとうございます!」って呟きたいw

/// お金的な話 ///
 ・印刷(88ページ50部):\30,890-
 ・交通費(新幹線往復):\20,220-
 ・表紙イラスト代:ひみつ
 ・その他小物:過去に買った物の使い回しので不明

 よく見ると新刊は完売しなくても印刷代だけなら赤にはならないです。ただ、表紙のイラストはかわぐちけいさん(漫画家さん)に描いてもらっているので費用がかかってます。なので、これから電子版の売上が勝負だったりします。
 イラスト代ですが、もともと以前からの付き合いもあって(いろいろはしょると)タダでも良いよくらいの勢いで引き受けてもらっているのですが、そんなわけにもいかないので気持ちでお支払いしているので、具体的な金額は伏せています。

/// あると良いもの ///
 ・透明なブックカバー
  立ち読みしてもらうようの見本誌に取り付けます。
  見本シールとか張っても本体を汚しませんし、見本用の本を間違えて売ってしまう心配も減ります。
  後で在庫整理しているときも一発で見本用とわかります。

/// 最後に ///
 楽しかったので、また参加したいです!
 
 なんか色々書こうと思ってたけど、書きながら忘れたので思い出したら呟きます。

 またもや技術書オンリーイベント「技術書典3」に参加します!
 なんと年2回に増量して開催されています。ナンバリングではない超技術書典も含めると4回目、すごいです。

 さてさて、今回もなんとか新刊を用意できました。
 いつも通り、Qt Quickの本です。

/// サークルの情報 ///

 サークル名:理ろぐ
 配置場所:お-12

/// 新刊情報 ///

 hyoushi_only.jpg
タイトル:Qt Quickを使いこなすクロスプラットフォームUIプログラミング3
著者 : 理音伊織
イラスト : かわぐちけい
B5サイズ / 84ページ
予価:1000円

 Qt Quick拡張プラグインの作成方法と少し変わったQMLタイプ(エレメント)の作成方法を解説します。
 QMLタイプ(エレメント)作成のおさらいからプラグインとして構築し、Qt Creatorのデザイナーでの編集に利用できるようにするところまでエスコートします。
 また、プラグインのバージョンアップに合わせたQMLタイプの拡張も解説します。
 目次などの詳細情報はBOOTHを参照してください。

/// 既刊情報 ///

 hyoushi_M.jpg
タイトル:Qt Quickを使いこなすクロスプラットフォームUIプログラミング2
著者 : 理音伊織
イラスト : かわぐちけい
B5サイズ / 72ページ
価格:1000円

   春の技術書典2で頒布した本で、Qt Quick Controls 2についての解説書です。  たくさんある機能の中でもスタイルについて取り上げています。基本的な使い方からオリジナルスタイルの作成方法まで解説します。  目次などの詳細情報はBOOTHを参照してください。


/// 展示情報 ///

 当日は、電子書籍(epub)を作るソフトの「LeME」のデモも行っています。
 Wordやテキストや画像から作成できます。
 漫画・小説・技術書をターゲットにしてます。
 もし、電子書籍に興味のある方は、遊びに来て下さい。


 では、当日お会いできることを楽しみしております。

夏コミ(C92)参加情報

 すっかり直前になってしまいましたし、コミケのWebカタログの方に見本やらなんやら登録はしていますが、こちらもで告知です。

サークル:理ろぐ
スペース:3日目 東P-23a

Webカタログでは、見本として冒頭が読めるようになってます。


/// 新刊情報 ///
7a04df06-d84c-4708-9aae-800ba7b2319d.png
タイトル:渚くんの鏡に映る恋人
価格:700円
仕様:文庫・172ページ
著者:あやねいおり
イラスト:ましろ.あー。

今回も新刊を買ってくれた人には、おまけで栞をプレゼントします。

/// 既刊情報 ///
以下の3種類を持っていきます。
・雨の贈り物(500円)
・ワールド・アドミニストレーター(800円)
・君の中の魔法少女(500円)

君の中の魔法少女はラス1ですので、お早めに?


/// その他 ///
あと、電子書籍作成ツール「LeME」のデモもやってます。
イメージキャラクターとして、リーゼロッテ・ルーダ・グーテンベルグにデビューしてもらいました。
こちらもよろしくお願いします。

技術書典2にサークル参加してきました

 予告通り、4/9に秋葉原のアキバスクエアで開催された技術書典2にサークルとして参加してきました。
 今回は、若干調子にのって印刷し過ぎた話とか、制作に関して少しレポしたいと思います。
 が、まず最初に、当日運営を頑張っていたスタッフの皆さんに感謝の気持ちを伝えたいと思います。とても、楽しかったです。ありがとうございます。
 そして、スペースにお越しいただいた皆様ありがとうございます。

様子など

 9:30頃に会場付近でお手伝いをしてくれることになっていた人と待ち合わせをしました。他のサークルさんが少し並んでました。この後すぐにサークル入場が始まって準備開始です。本来は10時からのところを準備を頑張って早めに開けてくれたそうで。流石です。  IMAG0750.jpg

 せっせこ準備をしてこんな店構えで皆さんのお越しをお待ちしておりました。
 C87wd4vV0AEs4gX.jpg

 ぼやけて見にくいのですが、UDXの柱のサイネージで「技術書典2開催中!」という文字が表示されてました。なんか、凄いところでイベントやってるなーと改めて思いました。
 IMAG0752-2.jpg

 なんと、これ以外写真が残っていないという状況でした。もう少し、会場を回りつつ写真撮ったり余裕を持ちたいという気持ちがありつつも、スペースに来てくれた方の対応をちゃんとしたい気持ちもあって結局ほとんどスペースにいました。まぁたいしてトークがうまくないのでたどたどしい説明を少しする程度なんですけどね。でも、「既刊を持ってます」と言っていただいたり、わざわざ質問しに来ていただいたりとあると、とても嬉しいです。それに買ってもらえたら「ありがとうございます」と直接言いたいです。
 

何を頒布していた?

 Qtというクロスプラットフォームフレームワークに関連した本を頒布していました。詳細は「技術書典2で「Qt Quickを使いこなすクロスプラットフォームUIプログラミング2 」を頒布します」を見ていただければと思います。
 Qtって過去だとGoogleEarthやSkypeとか、最近だとLINEのデスクトップ版で使われていたりします。あとは車のナビ的な位置にあるでっかいモニターで使われていたりします。あまり、表だってQt使っているよって主張されることがなくて目立ってないのが残念です。「何とか入ってる」くらいあると目立ちそうなのですけどね。

どれくらい売れたの?

 おそらくどこのサークルさんも気になるところだと思うので数だけですが。
 ・新刊は、100冊印刷で47冊売り
 ・既刊は、50冊印刷で38冊売り
 正直なところ、去年の来場者数が1200くらいで、今年は倍くらいは来るだろうし、Qtに興味を持っている人も相対的に増えるだろうと思っていましたが、甘かったようです。
 もともと4月末の超技術書典を見越して多めにと考えてはいたものの、新刊はQtを知っていて更にQt Quickを使ったことがあるという前提まで必要な内容だったので、数が出にくくなるのは目に見えていたのです。なんか発注するとき変な考えをおこしたようです。あわよくば完売したいとか考えていたようです。
 技術書典サイトの被チェック数が46なので、チェックしてた人は概ね買いに来てくれた感じでしょうか。

制作について

 技術系ではおそらく嫌われ者のWordを使ってます。Re:VIEWとか流行ってますしね。複数人で原稿をGitで管理とかするなら、テクブさんが公開しているシステム使ったりが便利だと思います。基本、ソロ執筆前提ですが参考になればと思います。

 使っているソフト
  ・Microsoft Office Word 2013(本文)
  ・一太郎 2015(文章校正のみ)
  ・JUST PDF 3(PDF版の出力)
  ・LeME(epub版の出力)
  ・しまや出版さんの「Wordをカンタン入稿」(プリンタドライバで入稿データを作ってくれる)
  ・Adobe Photoshop CC 2017(表紙のタイトルロゴ入れ)
  ・Microsoft Office PowerPoint 2013(チラシ)
  ・Inkscape 0.92.1(おまけ用PDF版ダウンロードカード)

 なんでWord使ってるの?って疑問あると思います。なので理由を列挙してみたいと思います。
  ・仕事でWordを使っているので慣れている
  ・初めて同人誌を作るときにしまや出版さんの上記のプリンタドライバがあると
   入稿データを簡単に失敗無く作れたので安心して入稿できた
  ・出来上がりの状態を見ながら編集をしたい
   (タグとかを見ながら編集が苦手。内容に集中したいのにノイズになる)
  ・図が直接描ける(出来上がりと似てますが)
  ・当初は一太郎を持ってなかったので文章校正機能が無いよりは全然マシだったから
  ・他の人にレビューしてもらうとき、OneDriveで共有してメモ機能で指摘してもらえて、
   相手がWord持ってなくてもWeb版で対応できて便利

 こんな感じでしょうか。他にもあった気がするけど。
 出版業界の人に言わせればWordで組版なんてするものじゃないって思っているかもしれませんが、ぼくレベルでは十分です。
 それに、ちゃんと使えば結構便利です。アウトライン・スタイル・相互参照あたりを押さえておけば、十分便利に使えます。この記事を読んでいらっしゃる皆さんは神Excelを指させるくらいでしょうから、きっと仕事では使いこなしていると思います。
 スタイルを使うと書式設定を一括管理できて変更も楽なので、本文に直接設定したりしないです。相互参照を設定しておけば、PDFやepubにするときに別の章や表とか図にリンクが張られるのも便利ですね。いろいろあると思うけど、ぱっと思い出せないなー。これくらいか?
 ただ、すでに書きましたが、複数人で編集するのは向いてませんし、差分も見にくく、バージョン管理がしにくいです。なので、LaTexやRe:VIEWを使うのも良いと思います。

 本文とは関係ないですが、今回の新刊では以下のフォントを使用しました。
  ・本文:JJS游明朝体 Pr6N L
  ・見出し、表、図:JJS游ゴシック体 Pr6N D
  ・ソースコード:Source Code Pro
 既刊では以下を使ってました。
  ・本文:IPAex明朝
  ・見出し、表、図:IPAexゴシック
  ・ソースコード:Source Code Pro
 個人的には、本文を明朝体、表や図の中ではゴシック体が読みやすいと思っています。本文がゴシック体は少し主張しすぎかなーと。ただ、商業誌でも本文がゴシック体の本はいくらでもあるので好みで良いと思います。

 表紙のイラストについては、以前からTwitterで付き合いのあるかわぐちけいさんに描いていただいてます(全部の本ではないですが)。
 ただし、イラストのみでタイトルロゴは自分で入れているため、今年はPhotoshop CCを導入しました。凄い捗りました。フリーでCMYKを使用できるソフトではKritaがあるのですが。ぼくには使いこなせませんでした。でも、Windows/Linux/macOSで動く優れものだったりしますし、KDEソフトなので内部でQtが使われていたりもします。
 ロゴについては、いつも凄い苦労しているのですが、とある作品のオマージュの気持ちでロゴの配色を決めたら凄い楽に進みました。配色大事です。
 ところで、技術書に萌え絵を使うのはどうなんだろう的な意見もあるようですが、ぼくがそうしたかったのだから仕方が無いとしか言いようがなかったりします。実際、「会社に置きづらいよ」って意見も直接聞いているので、損している部分はあるのでしょうけれど、仕方が無いのです。ぼくがそうしたいから。同人誌だし。

海外の反応

 実は、あったのです。
 



 どこで見つけてきたのか、技術書典前に出していた案内サイトを発見したようです。日本語でしか書いてないですが、今時はGoogle翻訳とかで何とかなってしまう感じなんですかね。
 そもそもQt Quickの本が少なすぎてすぐにヒットしてしまうのかも?
 Qtの中の人にも捕捉されていたらしいので、驚きを隠せない感じです。

 さて、とりとめもなく色々書いてきましたが、読んでいただいてありがとうございます。
 改めて、関係した皆様にお疲れ様と楽しかったですねとありがとうを。
 次回は超技術書典です。現場でぜひお会いしましょう!

 技術書の同人誌即売会「技術書典2(2017/4/9)」に参加します。
 今年で2回目のこのイベント。開場が秋葉原UDXに変わってかなり拡大しています。とても楽しいイベントになりそうです。たくさんの人に来てもらって賑わうと良いなーと思ってます。

 さて、今回もQt本を頒布します。新刊が用意できたので、ぜひ、遊びに来て下さい。
 実はお隣さんもQt関連のサークルさんです。

/// サークルの情報 ///

 サークル名:理ろぐ
 配置場所:え-28


/// 新刊情報 ///

 hyoushi_M.jpg
タイトル:Qt Quickを使いこなすクロスプラットフォームUIプログラミング2
著者 : 理音伊織
イラスト : かわぐちけい
B5サイズ / 72ページ
予価:1000円

 Qt Quick Controls 2についての解説書です。
 たくさんある機能の中でもスタイルについて取り上げています。基本的な使い方からオリジナルスタイルの作成方法まで解説します。
 目次などの詳細情報はBOOTHを参照してください。

 Qt Quick Controls 2のスタイルをさわっていたら、作り方知りたくなるよなーと思って調べ始めたのですが、標準で用意されているマテリアルと同じことができるようにしようとすると結構大変なことになることがわかって、意外と苦労しました。なんというか、目玉的な内容ができて良かったとも言えますけども(笑
 内容とは関係ないがですが、今回はフォントを変えて行間を少し広くしたので読みやすくなっているかなと。
 恒例のPDF版の販売は超技術書典(4/29,30)が終わったら開始します。少々お待ちください。


/// 既刊情報 ///

hyoushi.jpg
タイトル:Qt Quickを使いこなすクロスプラットフォームUIプログラミング+
著者 : 理音伊織
イラスト : かわぐちけい
B5サイズ / 116ページ
予価:1300円

 去年の技術書典で頒布した本の再版です。  内容的には夏コミ(C86)で頒布したQt Quick本のQt5.6対応に加筆修正したものです。  追加分として、Qt Quickデザイナーについても少しふれてます(これだけ知ってれば何とかなる的な)。  目次などはBOOTHでご確認ください。  こちらは既にBOOTHでPDF版を販売しておりますが、紙の本で欲しいよって方はどうぞ。


/// 特典情報 ///

 今回も本を購入していただいた方にPDF版を配布します。新刊・既刊ともにです。
 ダウンロードURLを記載したカードか何かを添付します。何にするかは悩み中です(間に合うのか?!)。


 今回もなんとか新刊が出せそうで良かったです。
 同じ4月の超技術書典にも参加しますので、よろしくお願いします。というか、ニコニコ超会議っていったこと無いので別の意味でも楽しみです。どうなることかサッパリですが(笑
 あと、本当にどうでも良いですが、「+」は改訂で「2」は続きという意味です。
 では、当日お会いできることを楽しみしております。

 アプリの開発をしていると、実行時に必要なファイルがでてくると思います。dllとかsoとかdylibとか......、いえ、今回の記事では何でも良いのですけどね。何か設定的なことを書いたテキストでもリソース的なファイルでも何でも。
 大抵、シャドウビルドで開発をするのでそれらのファイルは通常、手でコピーしなければなりません。シャドウビルドで作られたフォルダに都合良く勝手にコピーはされませんから。
 で、数日前の「Qtからお手軽にZIPファイルを扱えるQuaZIPの紹介」でも、サラッとdllをコピーする方法を紹介したのですが、若干使い勝手が悪いです。
 複数のファイルをコピーしたい場合にこの方法だと冗長になってしまうので、イマイチです。
 なので、少しは楽にならないかなーと考えた方法を紹介します。もっと、良い方法があったら誰か教えてください! 凄い人!

/// ポイント ///
 繰り返しもありますが

置換関数を作る
 結局のところ、パスを作るところが冗長なので置換関数でなんとかします。なんとも普通な発想です。もう少し、qmakeっぽいやり方ないものかと思いますが......。
 結局、QMAKE_EXTRA_TARGETSに登録するところは、頑張って書かないといけないのが現状の難点です。つまり、プロジェクト設定でMakeの引数をいっぱい書かないといけないって事です。

コピーコマンドは「$(COPY_DIR)」で書く
 これはMakefileへ「$(COPY_DIR)」がそのまま出力されるので、Makefileで定義されるコピーコマンドが使えます。環境にproファイルで何とかする必要がありません。

Windowsはパスの区切り文字を「\」に統一
 proファイル内は、「/」で統一して書いて良い(Makefileを出力するときにqmakeがなんとかしてくれる)のですが、QMAKE_EXTRA_TARGETSのcommandsはそのままMakefileに出力されるので環境に合わせたパスの表記をしなければなりません。


では、こんな感じです。

/// hoge.pro ///
# 置換関数の宣言(使うところより前)
defineReplace(makeCopyCommand){
    DEPEND_FILE = $$1
    win32:{
        CONFIG(debug,debug|release){
            APP_BUILD_DIR=$$shadowed($${PWD})/debug
        }else{
            APP_BUILD_DIR=$$shadowed($${PWD})/release
        }
        DEPEND_FILE ~= s|/|\|gi
        APP_BUILD_DIR ~= s|/|\|gi
    }else{
        APP_BUILD_DIR=$$shadowed($${PWD})
    }
    return($(COPY_DIR) $$DEPEND_FILE $$APP_BUILD_DIR)
}
# なんかのファイル1個目
copyfile1.commands += $$makeCopyCommand($${PWD}/hoge.txt)
QMAKE_EXTRA_TARGETS += copyfile1
# なんかのファイル2個目
copyfile2.commands += $$makeCopyCommand($${PWD}/../fuga/fuga.dll)
QMAKE_EXTRA_TARGETS += copyfile2
(※proファイルに日本語を書くと化けます。説明用にあえて日本語を書いているだけなのでご注意ください)

/// プロジェクト設定 ///
 以下の画像のようにビルドステップを追加してMakeの引数を設定します。
 qmake_project_setting_build_step.JPG
 (※プロジェクトのパスは今回の例と関係ないので気にしないでください)

 リリースとデバッグの両方で設定してください。ビルド設定を切り替えて「アレ?コピーされない?」となりますので。
 何はともあれ、これでいちいちビルドフォルダへコピーする煩わしさから解放されます。

 

/// 宣伝 ///
 proファイルの詳しいことを知りたい方は、緑野翁さんの著書「qmake入門」を参照してください。BOOK☆WALKERか今冬のコミケC91(2016/12/29 ビックサイト)のスペース「西み32b」で入手できます。
  BOOK☆WALKER:qmake入門