So-net無料ブログ作成

クラス間の機能分担とQtのスレッド [Qt]

さて、今週はQtの話に戻ります。前回、バックアップ処理の実現に何らかの並行処理が必要なことに気付きました。って、最初から気づけよと言う感じですかね・・。手動で停止することが頭に無かったのでした。

「並行処理」でぱっと思いついたのが「スレッド」ですが、Qtにはどのような並行処理が用意されているのでしょうか・・?と思って、リファレンスを眺めていたら、スレッドのページがありました。ここを読んで行きましょう。

*

単純にスレッドを実行するには、下記の通り行えばいい様です。



クラス図にすれば、こんな感じでしょうか?ファイルのバックアップ処理を行うクラスを「BackupMain」としました。

11012500.png
バックアップ処理をスレッド化する際のクラス図


どういう機能のクラスにすればいいですかねぇ・・。バックアップ処理の分担分けとしては、下記の通りにしたい気がします。

BackupControl バックアップ元ファイルとバックアップ先ディレクトリを選定し、BackupMainに通知。 BackupMainの開始と停止制御。
BackupMain BackupControlから指定された情報を元に順次バックアップを実行。


実装イメージとしては、BackupMain内にバックアップ元、バックアップ先(今回の場合、バックアップ元一つ一つに持たせる意味はありませんが・・)のペアを保存するキューを持たせ、BackupControlからそこにファイルのパスを追加、BackupMainでパスを取り出してコピーを実行としたいと思っています。

・・・とここまで考えていましたが、も一つスレッドが必要かも・・・。バックアップ元のファイルの抽出をBackupControlで行っていると、停止ボタンのイベントが拾えない気がします。と言うか、ファイルパスの抽出と実行を同じスレッドですればいいか・・。

機能分担を考えなおすとこんな感じでしょうか。

BackupControl バックアップ元ディレクトリとバックアップ先ディレクトリをBackupMainに通知。 BackupMainの開始と停止制御。
BackupMain BackupControlから指定された情報を元に対象ディレクトリを選定し、順次バックアップを実行。


ま、ほぼ一緒ですね。バックアップ元のディレクトリとバックアップ先ディレクトリをまとめてBackupMainに渡して、後は勝手にやってくれと言う感じにしましょう。

先程のキューの排他処理が必要かと思ってましたが、この構成にすれば、それも不要ですね。


と言う感じで、実装して行きましょう。


【参考】
Thread Support in Qt - Qt 4.5.3






Android SDKのインストールのつづき [Android]

さて、前回の続きでInstalling the SDKのページのAdding Platforms and Other Componentsを実行していきます。

AVD Managerと言うものを利用して、「Android Platform」と「SDK Platform-tools」をインストールせよとの事。additional componentも強く推奨するとの事ですが、今は意味がよくわかりません・・。AVD ManagerはEclipseの「Window > Android SDK and AVD Manager」から起動できるとの事です。

11011800.png
「AVD」は「Android Virtual Devices」の略の様です


「Available packages」を見てみると、ずらずら〜っとたくさんパッケージが出てきました。推奨されている内容を見て、選んだのは「Android SDK Platform-tools, revision 1」「Documentation for Android SDK, API 9, revision 1」「SDK Platform Android 2.1, API 7, revision 2」「Samples for SDK API 7, revision 1」「Google APIs by Google Inc., Android API 7, revision 1」の5つです。

11011801.png
ドキュメントは最新向けのみ・・


保有しているSmartiaのAndroidのバージョンは2.1なので、SDKも2.1向けのみを落とす事にしました。

ダウンロード終盤で「ADB Restart」と言うダイアログが出ました。何のことか分かりませんが「Yes」。

11011802.png
Android Debug Bridge」の様です


で、インストールが終わった様です。入れた一覧は「Installed packages」で確認できます。

11011803.png


ようやく、インストールが完了しました。



   

新年一発目は・・? [Android]

年が明けてからちょっと間を空けてしまいましたが、昨年は結局1本もアプリを作成する事ができませんでした。今年は1本くらいは完成させたいなぁとぼんやり思っていますが、まあ、のんびりとやっていきたいと思います・・。

ところで、話は変わりますが、昨年末Smartiaと言う端末を購入しました。Androidを搭載したタブレットです。と言う事で、今年はAndroidのアプリの開発もしたいなぁと思います。。・・・Qtはもういじらないと言う訳ではなくて、両方ぼちぼち触っていこうと思ってるんですが・・。・・さらに上の目標の到達が遅くなる気もしますね・・。と言うか、二兎追うものは一兎をも得ず(卯年だけに・・)??

*

まずは開発環境をいれなければなりません。が、Macで開発できるらしい事は知ってますが、他は何も知らないので、取りあえずandroid developersのサイトからチェックします。

SDKのタブでDownload the Android SDKのページに移ったところ、Mac OS X用はintel機用しか用意されてないみたいですね。まあ、私は問題ありません。取りあえず、SDKをダウンロードしときます。

で、実際のインストールの詳細はInstalling the SDKのページに書かれていました。まずは「コンピュータを準備せよ」との事。System Requirementsをチェックします。Mac OS X は10.5.8以降だそうです。IDEにはEclipseを利用との事。3.4以降との事ですが、私のMacは既にEclipseが入ってました。いつ入れたんでしょうか?

と思って、立ち上げたところ「AIR GEAR」とやらが出てきました・・・。そう言えば、AIRの勉強でもしようかと思いついた事がありました。結局、何もしてないですけどね・・。まあ、ほっておいて、バージョンを確認したところ、3.4.2でした。取りあえず、Eclipseのバージョンはクリアです。

11011100.png
最新ではないですが・・



続いて、JDT pluginが必要だとの事。設定項目にJava関連のものがあるので、たぶん入ってるでしょう。

コンパイラとして、JDK 5かJDK 6が必要だとの事。入ってるのかどうかよくわからなかったのでターミナルから「javac -version」と入力してみたところ「javac 1.6.0_22」だそうです。これはJDK 6になるんでしょうか・・?よくわかってませんが、まあいいでしょう。

で、Android Development Tools (ADT) pluginを推奨するとの事。取りあえず、入れときます。Installing the ADT Pluginの項目を見たところ、Eclipseから直接インストールできる様ですね。Eclipse 3.4 (Ganymede) の項目を参考に設定していったところ、「Android DDMS」「Android Development Tools」「Android Hierarchy Viewer」と言うのが出てきました。今は「Android Development Tools」だけを入れときます。

11011101.png
バージョンは「8.0.1v201012062107-82219」


ADTのインストール後、Eclipseを再起動しました。続いて、Configuring the ADT Plugin説明の通り設定をしようと思ったら・・、あれ?既にSDKがインストールされている事になってます・・。まず、System Requirementの確認をしていたところなので、私はSDKをまだ入れてませんでした・・。う〜ん。

と言う事で、SDKのインストールのDownloading the SDK Starter Packageの箇所に戻ります。と、先程落としたSDK(私が落としたのは「android-sdk_r08-mac_86.zip」)を「安全な」場所に解凍しろとの事。意味がよく取れていませんが、一応、作業用のディレクトリを作成して、そこに解凍しました。

続いて、ADT Pluginを入れろとの事なので、先程のページに戻ります。・・・。なんか読んでいると先程のSDKは解凍した箇所で運用される様な雰囲気に感じますね。念のため、「/Developer/android-sdk-mac_86」に移動させました。

さて、ADTの設定をしようとしたところ、使用バージョン等のデータをGoogleに送るのを許可して欲しいとか言うダイアログが出てきました・・。あんまり、こう言うのは好きではないんですけどね・・・。まあ、一応後からオフにもできる様なので、了承しときました・・。ちなみに、設定は「ddms」ツールで行うらしく、「File > Preferences > Usage Status」から行うそうです。・・・って、DDMSは先程ADTをインストールする時にチェックを入れてなかったですね。これも入れとかないとダメか・・。

11011102.png
裏で何かされるのは嫌ですね・・


ここで、SDKの位置として、移動させた「/Developer/android-sdk-mac_86」を指定しておきました。

続いて、Installing the SDKのページのAdding Platforms and Other Componentsの項目に移ります。って、記事が長くなりましたね・・。相変わらず、歩みが遅いですが続きは次回に・・。

つづく。



   

ブログを作る(無料) powered by So-netブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。