ラベル メモ の投稿を表示しています。 すべての投稿を表示
ラベル メモ の投稿を表示しています。 すべての投稿を表示

2014年1月6日月曜日

はじめてのReVIEW読了

正月早々3日坊主ならぬ2日坊主だった隠者です。

いや、年末年始の甥っ子姪っ子の攻撃ですっかりHPがゼロでしたので・・・。
コミケで買って来たおもちゃの猫絵のお札をプレゼントしたら、同じ額の本物のお札欲しいなって幼稚園児にねだられて困りました。1万猫が5枚、五千猫が5枚、千猫が5枚ですからねぇ。
どうやら、お駄賃とかでお金を蓄えさせて、欲しいものは自分で買わせてるとの事で、幼稚園児なのにお金に興味津々のようでした。あの年頃は、紙のお金で売買ごっこなんじゃないのかな。ゲーム買うにはあといくらで・・・を真面目に計算する幼稚園児は怖いです。

さて、コミケで売り子をやっていたので、開店直後にテクブのブースに並んで、テクブ本購入してきました。

中でも、一番気になっていたのが、ReVIEW本です。
ReVIEWは、軽量マークアップ形式であるReVIEW記法を使ってテキストベースで書いた内容をEPUBやPDFに変換してくれるツールです。

実は、隠者のお客様はドキュメントについての定型というものがありません。人によっては、Textで書く人、Wordで書く人、HTMLで書く人をはじめ、Excelで書く人や中にはPowerPointで書く人までいる状況でして。正直よくないと考えています。
そこで、お客様にこの辺りのドキュメントのフォーマットを統一できないかという話をしたくて、だいぶ前にこの手のツールを調べていました。

既に個人的にはReVIEWではなくSphinxを使ってドキュメントを用意するようにつとめているのですが、TLではReVIEWを使っている人が多いようなので、もしかしたらReVIEWの方が国内では流行るのかもという気もしていて、今後の動向が気になっています。

ReVIEWは、Rubyのソースコード完全解説本や、Rubyを256倍使う本の無道編の著者である、青木峰郎さんが作成され、現在は、独習○○系本で良く名前をお見かけする武藤健志さんをはじめとする方々がメンテナンスをされている、書籍を書く事に重点を置いて作成されているツールのようです(調べてたくせに制作者がこの方々とは知らなかった)。

ReVIEW本では、環境の構築から、簡単なドキュメントの生成、スタイルをつかった整形まで、電子書籍等を作る場合に必要になりそうな基礎がしっかり入っていました。
特に、悩みそうなスタイル部分と、コマンドの解説のあたりは重宝しそうです。

ちなみに仕事で使うつもりといったSphinxですが、こちらはPythonで書かれたツールで、reStructuredText記法を使ってテキストベースで書いた内容をHTMLやPDFやEPUB形式に変換してくれるツールです。まぁ、ReVIEWと思いっきりかぶっているのですが、使った感触では、ReVIEWは書籍のような出版系に、Sphinxの方はHTMLベースでの運用も含めた仕様書やマニュアル系に向いている気がしています(注:個人的な感想ですが)。

ReVIEWの方の調査は半端で止めてしまった(というか、仕事の環境の都合で早めに断念した)ため拡張方法は不明ですが、Sphinxはいろいろと拡張できるように設計されているようで、拡張モジュールもいくつか提供されていて、特にテキストでの表記から図を生成できる、blockdiagとかmscgenとかinheritance_diagramとか、慣れは必要なものの便利な機能もあったりします。

取っ付きやすさと面でいうと、機能がしぼられている分、ReVIEWの方が取っ付きやすいように思いますけど、仕様書のために使いたいと思うと、少し物足りない感がありますね。

ただ、Sphinxの残念なところは、PDF化の時に、なんだか思い通りに出力させるのが大変だった気がしています。とりあえず、仕事上はHTMLでも十分な感じなので、一応は満足しているのですが。

何にせよ、どうせなら仕様書もテキストベースに切り替えて、きっちりバージョン管理したいものですねぇ。

2014年1月2日木曜日

Qtのバグレポートを書いてみました

甥っ子と姪っ子の相手でふらふらの隠者です。この子供達と毎日つきあうと思うと、弟夫婦には頭が下がる思いです。

さて、そんな二人が寝静まった後、先日見つけた間違いのうち、Qt5.2のMac版では、PluginPackageMac.cppが使われていない問題を初バグレポートしてみました。

どうやってバグをレポートするのかについての紹介は以下のサイトにあります。

Qtでは、JIRAを使ってバグ管理がされています。バグレポートを上げるには、まずはJIRAのアカウントが必要になります。アカウントが無い場合、Sign Upから簡単にアカウントの作成が可能です。



アカウントが用意されたら、まずはJIRAのIssueリストで類似の問題が無いか、キーワードを考えて右上のQuick Searchで検索してみます。が、この検索、デフォルトでCloseされた問題も一緒に検索したり、バージョン指定で検索しにくかったり、いまいち使いにくいですね。JIRAには結構期待してたのにちょっと残念。

まぁ、重複登録しないにこした事はないのですが、考えたキーワードで見当たらなければ仕方が無いので、バグを登録してしまいましょう。

Issueのページには、Create Issueのボタンがありますので、それをクリックすると、バグ登録のページが表示されます。

バグ報告の場合、ProjectはQt、Issue TypeはBugのままで良いです。

Summaryには、バグを簡潔かつ具体的に記載するのが良さそうです。長過ぎたり、曖昧だったり(うまく動かないみたいな記載は駄目)するのは良くないです。
 
Affects Version/sには、問題が発生するバージョンを記載します。今回は、Qt 5.2.0の検証のために、v5.2.0をチェックアウトしたコードで試したので、5.2.0を選択しました。

Component/sでは、問題の根本原因と思われるコンポーネントを選択します。今回は、WebKitを選択しました。

Descriptionは、説明になります。一般的には
・何をしたのか1ステップずつ再現に必要な手順を記載する
・何を期待したのか記載する
・何が起きたのか期待する
といった事を書くと良いようです。

Environmentは、問題の再現した環境の説明になります。
・使用しているコンパイラ名とバージョン
・使用しているOS名とバージョン
・Qtのバージョンやその構成(ビルドしたQtならconfigureのオプションとかも入れるとよさそう?)

今回は、問題の原因に近い部分まで探っていたので、Descriptionについては、どこの変更が原因で、何が動いて、どうなったのかを、なんちゃって英語で軽く書いて見ました。こういうの書くと、英語のスキルの無さが露呈して、悲しくなりますね・・・。

https://bugreports.qt-project.org/browse/QTBUG-35899

入力して3日も立たずに、これを試してくれというメッセージが追加されました。

https://codereview.qt-project.org/#change,74564

修正内容は、おおよそは調べていたものと同じですが、こちらで考えた修正では足りてない部分もあったようです。まぁ、残念ながら実家の貧弱な回線だとgit fetchがさっぱり終わらず(というか途中で止まる)、まだ試せていませんが、自宅に帰り次第試してみたいなと思います。

まぁ、上記で記載したバグのレポートが、Qtのプロジェクトに貢献する一番楽な部類になるのではないかと思います。さらに進んだ貢献をしたいという方は、以下のURLを参考にがんばってみて下さい。

http://qt-project.org/contribute


Required

2013年10月30日水曜日

艦メモのメモ

先週の金曜日に、うっかり着任してしまい、艦コレはまり中の隠者です。

先日、開発者の @IoriAYANE さんから、Qtユーザー会の方でも開発者募集のメールが出ていた艦メモについて、メモ書きを残しておこうと思います。

まずは、伊織さんからのメッセージの転載。

> こんばんわ
> アプリはさくっと作ってさくっと放流の、いおりです。
> MLをもっとフランクに使っていこうぜって話題があったので。
>
>
> 艦メモという、DMMのゲーム「艦隊これくしょん」を遊ぶためのアプリを作ってます。
> ソースをGithubで公開しているので、もし艦これで遊んでてちょっといじってやるぜ!って
> 提督さんはぜひビルドしてみてください。
> そして、ぜひプルリクエストを送ってください!
> (チート機能は禁止ですよー、マクロとか)
>
> 艦これ
>
> 艦メモの紹介
>
> ビルド方法
>
> 艦メモのビルド方法(Windows編)
>
> 艦メモのビルド方法(Ubuntu編)
>
> 艦メモをビルドしてみた(MacOSX編)
>
> Github

続きまして、ディレクトリツリー。一度ビルドした後で取ったので、余計なものも入っているかもしれませんが。

KanmusuMemory
 - aboutdialog.cpp [いわゆるaboutダイアログ。貢献するとここにアカウント名が表示されるっぽい]
 - aboutdialog.h   [同上]
 - aboutdialog.ui  [同上]
 - cookiejar.cpp   [クッキー保存オブジェクト]
 - cookiejar.h     [同上]
 - favoritemenu.cpp [お気に入り機能、webpageform用かな?]
 - favoritemenu.h  [同上]
 - gamescreen.cpp   [キャプチャ時のGame画面切り出し?]
 - gamescreen.h     [同上]
 - i18n/ [翻訳ファイル - 伊織さんは英語で作ってから翻訳を作るそうです。すばらしぃ
   - qt_ja.qm
   - qt_ja_JP.qm
   - qt_ja_JP.ts
 - imageeditdialog.cpp  [画像編集ダイアログ]
 - imageeditdialog.h    [同上]
 - imageeditdialog.ui   [同上]
 - KanmusuMemory.icns
 - KanmusuMemory.ico
 - KanmusuMemory.pro [Qtのプロジェクトファイル。QtCreator使いはコレをQtCreatorで開く]
 - KanmusuMemory.qrc [Qtのリソース設定ファイル]
 - KanmusuMemory.rc  
 - kanmusumemory_global.h
 - LICENSE          [Apach2ライセンスですね]
 - main.cpp         [main関数はここ]
 - mainwindow.cpp   [main windowです]
 - mainwindow.h     [同上]
 - mainwindow.ui    [同上]
 - memorydialog.cpp [View Memoryダイアログ]
 - memorydialog.h   [同上]
 - memorydialog.ui  [同上]
 - qml/
   - KanmusuMemory/
     - ClipTool.qml
     - GradientEx.qml
     - imageEditDialog.qml
     - ImageEditView.qml
     - images/ 
       - spinner.png
     - js/
       - HttpAccess.js
     - memoryDialog.qml
     - test.qml
     - timerDialog.qml
     - TimerItem.qml
     - TimerSetting.qml
 - qtquick/
    - clipcursor.cpp
    - clipcursor.h
    - operatingsystem.cpp
    - operatingsystem.h
    - qfileasync.cpp
    - qfileasync.h
    - qmlfile.cpp
    - qmlfile.h
    - qtquick.pri
    - qtquick2applicationviewer.cpp
    - qtquick2applicationviewer.h
    - thumbnailprovider.h
    - timerdata.cpp
    - timerdata.h
 - README.md [githubでの説明用]
 - Readme.txt [艦メモについての説明書き]
 - resources/ 
   - alarm.mp3
   - downloaddata/
     - favoritedata.json
     - timerselectguide.json
     - timerselectguide_en.json
   - fav_icon_off.png
   - fav_icon_on.png
   - go_back.png
   - go_forward.png
   - icon.svg
   - KanmusuMemory128.png
   - KanmusuMemory16.png
   - KanmusuMemory256.png
   - KanmusuMemory32.png
   - KanmusuMemory48.png
   - KanmusuMemory512.png
   - KanmusuMemory64.png
   - KanmusuMemory80.png
   - KanmusuMemory96.png
   - mobile_icon.svg
   - mobile_icon_off.png
   - mobile_icon_on.png
   - reload.png
 - scripts/                [主にビルド後の配布パッケージ作成用スクリプト]
   - deb/                  [Ubuntu用debパッケージ作成用]
   - deploymac-dmg.sh      [dmgパッケージ作成用]
   - deploymac.sh          [Macデプロイ用スクリプト]
   - deploymaclibs.txt     [Macで利用するライブラリリスト]
   - deployubuntu.sh       [Ubuntuデプロイ用スクリプト] 
   - KanmusuMemory.sh 
   - macdeployhelper510.sh [deploymac.shから呼び出される]
   - Readme.txt            [Macデプロイスクリプトについて]
   - translate.bat         [lupdate呼び出し簡略化用?]
 - settingsdialog.cpp      [設定ダイアログ]
 - settingsdialog.h        [同上]
 - settingsdialog.ui       [同上]
 - tabwidget.cpp           [WebPageFormにタブを表示する用]
 - tabwidget.h             [同上]
 - timerdialog.cpp         [Timerダイアログ]
 - timerdialog.h           [同上]
 - timerdialog.ui          [同上]
 - tweetdialog.cpp         [ツイート用ダイアログ]
 - tweetdialog.h           [同上]
 - tweetdialog.ui          [同上]
 - twitterinfo_sample.h    [ツイッター用のヘッダサンプル。ビルド手順に従い、コピーと設定が必要]
 - webpageform.cpp         [Web表示ウィジェット - 配布版はまだ入っていない、ブラウザ分割ウィンド]
 - webpageform.h       [同上]
 - webpageform.ui      [同上]
 - webview.cpp             [QWebView拡張。WebPageFormとメインウィンドウで利用]
 - webview.h               [同上]

ほかのOSでも調べてからIssue登録予定だけど、Mac OS X(10.9)で、ビルドした環境での起動(英語表示)だと、以下の表示がウィンドウ内におさまってないらしい。

Timer Dialog

思い出のダイアログも以前は収まってなかったけど、update/merge後に試したら修正済みだったようです。最初にビルドした時は、キャンセルボタンも見えてなかったので、強制終了させてしまったのですけどね。同じ状態が再現した人はウィンドウを拡大すればキャンセルボタンがあるので、それでキャンセルできます。

ところで、Timerダイアログの参考時間は使いやすいのだけど、英語版でもそこだけは日本語なんですよねぇ。さすがにすべて英語訳するのは大変そうですけど。

大雑把にですがコードは読んだので、何か機能思いついたらごそごそ入れていってみたいなと思います。

P.S.
どうやら、翻訳ファイルには艦名が入っている模様。Timer用の翻訳データに見えるけど・・・・。もう少し調査が必要そう。