Qt Contributors' Summit 2015の参加費用について

先日の記事でもチラッと書きましたが、スポンサーシップの制度があり旅費をKDEさんに負担して頂いたので、いろいろな意味で参加することが出来ました。
そのあたりの話を少し書きたいと思います。と、言うか費用的な話です。
(知りたくなかった食費の現実になるかもしれません。)
そして、これくらいの予算でQtの本場に行って、すげー人たちに会ってお話ができます。
英語ができないと悲しい思いしますが......。
英語ダメでもアレな表紙の本のお陰で変なインパクトだけは残せたと思いますけど。

もし、来年もQtユーザー会から参加できる人がいたら参考になればと思います。

なにか尖ったことしてあの人すげーってなって日本クレイジーって言われるような事するとご招待も近いかもしれません。

Qt Contributors' Summit 2015に参加してきました

 Qt Contributors' Summit 2015とは、毎年Qtの開発者が集まって今後どうしていくかとかを話し合う会合です。毎年Qtの関連してる各国で行われているようですが今年は本家のノルウェーのオスロでした。
 僕はQtの開発自体にはほとんど関わってないですが、本を書いたりとQtに対して貢献していることを認めて頂いて招待していただきました。なので、実際のところサミット本編では「参加」したと言っても「座っていただけ」なのですが、少なからず参加していた他のメンバーに「日本がんばってるぜ!」ってところをアピールできたと思います。
 と、偉そうに書きましたが推薦してくれた人がいろいろ見越して仕込んでくれたからなので......。

何は無くとも謝辞

 サミット運営へスポンサーシップについて交渉していただいた鈴木さん(@task_jp)と、運営内でいろいろ調整したりスポンサーシップについての対応をして頂いているTeroさん(@tekojo)に感謝です。
 本当に有難うございます。
 お二人の尽力で無事参加出来ました。

お断り

 すでに察して頂いていると思いますがサミットの内容についてふれられません。どんな事が話し合われたのかを少しでも知りたい方は鈴木さんのブログや本家のセッションノートを見てください。
  ・サミットプログラム(各セッションの説明の後ろにリンクがありのもあります)
  ・Qt Contributors' Summit 2015(前日編) - Qt 5 の未来は明るいブログ
  ・Qt Contributors' Summit 2015(1日目) - Qt 5 の未来は明るいブログ
  ・Qt Contributors' Summit 2015(2日目)- Qt 5 の未来は明るいブログ
 あと、写真はすべて携帯なのであしからず。

大まかな内容的なもの

 ・出国~到着 ・観光Part1~前夜祭
 ・サミット初日~パーティ
 ・サミット2日目~観光Part2
 ・ミュンヘン観光~帰国

「The Art of Qt」のダウンロード販売始めました

コミケC87で頒布した「The Art of Qt」のPDF版のダウンロード販売をBOOTHで始めました。
本の方は昼過ぎに無事(?)に完売することができました。
当日は寒い中スペースまでお越しいただいた皆様ありがとうございます。
もし当日購入出来なかった方はこちらでお願いします。
当日、用事だったり遠方だったりで来れなかった方もこちらでお願いします。

販売サイト(BOOTH)
 「The Art of Qt

本をご購入された方は最後のページにPDF版のダウンロードのお知らせが挟まっていますのでそちらで入手可能です。
BOOTHで販売しているバージョンは購入特典よりも更に少しだけ修正されていますが。

Qtプロジェクトにコミットしようよ

この記事はQt Advent Calendar 2014 - Qiitaの22日目のエントリーです。

この記事を読んで君もQt Contributorだ!

さて、Git初心者、英語壊滅的な僕がとある理由でQtプロジェクトコミットした時のことを振り返りながら手順を紹介します。
Gitのことをよく知らないと人からこうやってあーやってこうするんだよとコマンドとか用語を言われてもバットの振り方を擬音で説明されているような感じです。コマンドなどを実行した結果や挙動がわからないし、やり直しが効くのかもよくわからないのでドキドキしながら作業してました。
なのでだいぶ丁寧目に説明をしたいと思います。Gitとか知ってる人にはかったるくなるかもしれませんがご容赦ください。

そう、難しくないんです。(パッチが簡単に受け入れられるとは言ってない。)

今回はQt本体ではなくQt Installer Frameworkにコミットしたときの作業を振り返って説明しますがやることは同じです。
(冬コミの本でQt Installer Frameworkを紹介するし変なところ直したかったの、それがとある理由)

わからないことあったら
日本Qtユーザー会のメーリングリストに投稿
日本Qtユーザー会の勉強会に参加
・Twitterに#qtjpでつぶやく
などです。

参考にしたサイト
Qtプロジェクトにコミットしてみた

やってみたらそんなに難しくないですよ!ってことではじまりはじまり。

夏コミ(C86)に続いて冬コミ(C87)にもQt関連本を頒布するべく参加します。
なんとも壮大な雰囲気なタイトルになってしまいましたが、Qtのコツと題してQtに関連する情報をまとめていく本です。
今回は、Qt Installer Frameworkというプラットフォームをまたいでインストーラを作成できるフレームワークを解説する本です。
(なんと、Qt Quick関連じゃないけど気にしない)

hyosi_s.jpg

/// 情報 ///
サークル名:JCROM(委託先様のお名前)
場所:火曜日 西く03b
ページ数:64ページ
予価:800円
著者:理音伊織
イラスト:能義たか好(@nogi_takayoshi)

/// 内容 ///
Qt Installer Framework(QtIFW)は、Windows/Ubuntu/Mac OS Xに対応したインストーラ作成フレームワークです。
テキストベースの設定ファイル(XML)と少しのJavaScriptでインストーラを作成できます。
しかも、オンラインインストーラも作成できるすぐれもの。
もちろんQtアプリ以外にも使えます。
そんな、Qt Installer Frameworkを基本的な作成方法からカスタマイズまで解説します。

/// 目次 ///


はじめに
目次
第1章 Qtとは
 1.1. 特徴
 1.2. Qtの開発環境
第2章 Qt Installer Frameworkとは
 2.1. 概要
 2.2. 対象バージョン
 2.3. 対応環境
 2.4. 動作確認環境
 2.5. 必要なもの
 2.6. 主な手順
 2.7. サンプルコード
第3章 Qt Installer Frameworkの環境構築
 3.1. バイナリ版のセットアップ
 3.2. ソースからビルド
  3.2.1. Qt5.3.2のビルド
  3.2.2. Qt Installer Frameworkのビルド
第4章 インストーラの作成
 4.1. オフラインインストーラ
  4.1.1. パッケージフォルダの作成
  4.1.2. 設定ファイルの作成
  4.1.3. パッケージ情報ファイルの作成
  4.1.4. スタートメニュー(Windowsのみ)
  4.1.5. インストーラのコンテンツ作成とパッケージフォルダへのコピー
  4.1.6. インストーラの作成
 4.2. オンラインインストーラ
  4.2.1. リポジトリ作成
  4.2.2. リポジトリの設定
  4.2.3. インストーラ作成
  4.2.4. アプリケーションの更新
 4.3. ページのカスタマイズ
  4.3.1. 不要なページの非表示
  4.3.2. ページに部品を追加
  4.3.3. オリジナルのページを追加
 4.4. オンラインとオフラインどちらが良いか(など)
 4.5. リファレンス
第5章 バグ報告をする
 5.1. バグ検索
 5.2. バグ報告
第6章 メンバー紹介という名のあとがき

Qt Installer Framework 2.0のバイナリ

Qt Installer Frameworkというインストーラ作成用の便利なフレームワークの最新版のバイナリです。
(Qtの公式サイトでは古くバグも多くて正直使い物にならない1.4と1.5しか配布されていないため)
と、それを作成したときのQtのスタティックビルドバージョンです。
QtについてはQt Installer Framework用に最小限のモジュール構成になっているので常用はできないと思います。

Qt Installer Frameworkの使い方などに関しては冬コミで頒布する本で解説予定です。乞うご期待!

/// ダウンロード ///
 -- Qt Installer Framework --
  ・Windows 32bit / 64bit
  ・Mac OS X 64bit
  ・Ubuntu 32bit / 64bit
  ライセンス:LGPLv2.1

 -- Qt 5.4.0(static)(おまけ) --
  ・Windows 32bit / 64bit (MSVC 2013版)
  ライセンス:GPLv3とLGPLv2.1

 Windowsは、qmakeのパスが以下のようになるように配置してください。
  ・C:\Qt\Qt5.4.0static-vs13-32\bin\qmake.exe
  ・C:\Qt\Qt5.4.0static-vs13-64\bin\qmake.exe

/// Qt Installer Framework元情報 ///
ソースコードは以下から入手したものです。
gitorious:https://qt.gitorious.org/installer-framework/installer-framework.git
ブランチ:2.0
リビジョン:ccdf663923cfc286912fc2f5cdc6714ddca9d6ba
このブランチに以下のレビュー中の内容を追加したものです。
 ・https://codereview.qt-project.org/#/c/102389/
 ・https://codereview.qt-project.org/#/c/102570/

/// Qt元情報 ///
ソースコードは以下から入手したものです。
gitorious:git://gitorious.org/qt/qt5.git
ブランチ:5.4.0
 使用しているモジュール
  ・qtbase
  ・qttools
  ・qtdeclarative
  ・qttranslations
  ・qtwinextras

/// その他 ///
・Qt IFWについては年末に向けて修正された内容を適宜アップデートする予定です。

夏コミ用の本を作成するときにペイントソフトの「Krita」を使用しました。

公式サイト:https://krita.org/

使用した理由は
・表紙のイラストは本職の人にお願いしたけどタイトルの文字を入れないといけなかった
・CMYKのデータを印刷所に提出する必要があった
・CMYKを扱えるソフトを持ってなかった
・psd形式のファイルに対応している

という感じでした。
 PhotoShop Elementsは持ってたのですがCMYKのデータをRGBに変換して開けるけど編集はできないという制限もあってどうしても何かしら準備する必要に迫られてました。
 印刷所はRGBのデータで受け付けてくれるのですが、RGBからCMYKに変換するときにどうしても色がくすんでしまうのでできるだけCMYKで作った方が良さそうです。イラストを描いてくれた方に言われて実際に見せてもらったら、変換前後の違いにこれはちゃんと調整しないとマズイなと感じました。
 ただ、モニターの色と印刷した色も変わってしまうのでだからどうなのよ?と思わなくも無いですが、せめて画面の中だけでも納得のいく状態にしたいですよね。(うちの場合、目の前に並んでる2枚のモニターでも色違いますけどネー。)
 イラストレーターさんに入稿するだけの状態で描いてもらって提出するだけなら特に必要ないのですが、そうもいかなかったので。

 さて、自分は絵は描けないのでどんなことができるとかは紹介できませんが、1つ気をつけないといけないなと思うことがあったのでその紹介です。

ペイントソフトとしての所謂お絵かきとしてのスペックとかは僕からは紹介できないのですが、たぶん、すごく高機能でよく出来ているようです。
【イラスト】おめでとうKrita!資金調達成功!!無料ペイントソフト最高峰の機能をご紹介!!そしてMac版発売も・・・!?
このサイトでも紹介されているのでこちらのほうが伝わるかもしれません。

/// カラーモードの設定はレイヤー単位にある ///
 これが、気をつけることです。Photoshopのフル版でも多分そうなのですが、カラーモード(RGBとかグレースケールとかCMYKとか)はファイル全体で1つの設定になってます。
メニューの「イメージ→モード」で選べるものです。
Kritaでは、メニューの
「Image→Convert Image Color Space...」と
「Layer→Convert Layer Color Space...」
の2箇所で変更できます。
 ファイル全体としての設定とレイヤー単位での設定があります。なので、レイヤー単位でモードの違うものをごちゃまぜに出来てしまいます。(Kritaのファイルのことを以下、kra形式と呼びます。)

実際の夏コミのときの表紙に裏表紙と挿絵用の絵を混ぜた状態のスクリーンショットを用意しました。

krita_color_space_diff.png

左から
 ・イラスト(CMYK)
 ・タイトル文字(CMYK)
 ・挿絵(グレースケール)
 ・裏表紙(RGB)
になっています。
色選択の円のところに注目してください。左2つと1番右で色みが違うのがわかると思います。
RGBからCMYKに変換するとこの辺りの違いがイラストに反映されます。

レイヤーのプロパティを見ると以下のように表記されます。
krita_color_space_layer_property.png

 というわけで、psd形式に変換して保存するときに注意が必要です。特にKritaで直接psd形式を編集するときです。
 Kritaで開いている間はカラーモードの設定が混ざってても問題ありませんが、保存されたpsdにはレイヤー単位での設定情報がないため次に開くと無理やりファイル全体での設定で読み込むので色がおかしなことになります。

 自分がやらかしたパターンとしては、別で作ったpngファイルを編集中のKritaにドロップするとレイヤーとして追加することができるので、そのファイルをpsdとして保存して開いたらアレ?ッて感じでした。

 カラーモードの混ざった状態でpsd形式に変換して保存してPhotoshopで開くと以下の用になります。
 krita_convert_psd.PNG

おまけ
 非表示にしているレイヤーは削除の項目が選べません。ちゃんと表示して内容確認してから消してねってことだと思いますが。

おまけ2
 KritaはKDEアプリケーションです。つまりQtが内部的に使われています。Kritaの開発者がQtを意識しているのかは知りませんけど。


イラストはかわぐちけいさんですよ!

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.動画をお楽しみください


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