Hitoshi Fujii F797 Fujii

Hitoshi Fujii F797 has not set their biography yet

高橋(智)です。 今日は、Appmethod(C++Builder)を使用して、オープンソースのC++向けクラスライブラリを試してみましょう。今回紹介するのは、ネットワークを利用するアプリケーション向けに様々な便利なC++クラス群を提供している「POCO C++ Library」(ライセンスはBoost Software License)です。(※より高機能でサポート付きのPro版もあります) この「POCO C++ Library」は基本的にはマルチプラットフォームに対応しているネットワークライブラリですが、複数のイベントハンドラ(Delegate)を登録して順番に呼び出すような面白い機能も搭載されています。例えば、イベントハンドラを +=, -= という演算子を介して追加したり削除します。なんだか.NETのマルチキャストデリゲードみたいですね。 例: source.events += Delegate<Target, int>(&target, &Target::OnEvent1); 1. まず、最新の安定版(無料版) 1.4.6p4 Basic Edition をダウンロードして展開します。 2. Appmethod(C++Builder)でFireMonkeyプロジェクトを作成したら、Androidの場合には Introduction - POCO C++ Libraries Android Platform Notes のドキュメントを参考にしながら、コンパイル時の定義を追加したり、Android向...
高橋(智)です。 RAD Studio XE6(Appmethod)を使用してモバイルアプリを作成していると気付くことがあります。Windowsデスクトップアプリ構築時に慣れ親しんで作成してきた「モーダル(モードレス)ダイアログボックスが無い」という点です。もともとFireMonkeyには別フォームを表示(ShowModal/Show)する機能はあるのですが、iOS/Androidのモバイルアプリの場合には、フォームが画面全体を覆ってしまうので、フォームをダイアログボックスとして利用でません。 そこで今日は、ダイアログボックス風にデザインしたパネル(TPanel)をメインフォームの中央に表示する手法を紹介しようと思います。 1. まず、メインフォーム(TForm1)のデザインを設計します。ダイアログボックス風のパネルを表示するボタンを画面上部に配置します。 2. 次に、再利用する目的で、「ダイアログボックス風のパネル(TPanel)」や「メインフォームを触れないようにする半透明の矩形領域(TRectangle)」を保持する別フォーム(TForm2)を設計します。ここに配置してあるTRectangleやTPanelは任意の位置でOKです。 3. メインフォームのイベントハンドラでは、Form2からTRectangleやTPanelのインスタンスを借りてきて、メインフォーム自身に表示するコードを記述します。 4. このようにして、いったんWin32アプリとして仮に実行し、うまく動作したら、Androidの実機(例: Nex...
こんにちは。いがぴょん こと伊賀敏樹です。 エンバカデロ・テクノロジーズのアプリケーション開発ツール「Appmethod, RAD Studio Delphi, C++Builder」について、ユーザーの方々がお使いのハッシュタグについて、ちょっとまとめてみました。(於 2014/07/16) •Appmethod #am_jp •RAD Studio #rs_jp •Delphi #delphi_jp •C++Builder #cppb_jp •エンバカデロ デベロッパーキャンプ関連 #dcamp_jp •エンバカデロ デベロッパーTV関連 #デベロッパーTV なお、これらハッシュタグはエンバカデロ・テクノロジーズが公認したり規定したりするものではありません。...
こんにちは。いがぴょん こと伊賀敏樹です。 エンバカデロ・テクノロジーズのアプリケーション開発ツール「Appmethod, Delphi, C++Builder, RAD Studio」について、体験版などを利用する場合には所定の環境を整える必要があります。ここでは、私のおすすめ環境一式を紹介します。(於 2014/07/04) ■必要なもの ・EDN アカウント (Eメールアドレスおよび EDN 登録手続き) http://edn.embarcadero.com/jp ・潤沢なネットワーク環境とインストール時間 インストールの過程でネットワークとインストール時間が必要になります。 ■おすすめ環境 ・仮想環境上の Windows 8.1 や Windows 7 など 体験版などを試用する目的などであれば、インストール先として VMware などの仮想環境上の Windows を利用することをすすめたいです。ちなみに、新規で仮想環境を構築する場合は、仮想 HDD 領域として 100 GB 程度を確保できると Windows インストール後の HDD 空容量にゆとりがあって安心です。 ・Android 端末 (実機) 開発したアプリは実機に転送して動作させるのがおすすめです。Android 端末としては、Nexus 5 や Nexus 7 を準備するのが望ましいです。 ■オプションの環境 (iOS 実機 (iPhone, iPad 等) を利用する場合には必要) ・iOS アプリ開発の場合は、Mac OS X + iOS Developer...
高橋(智)です。 先日のブログ記事では、C++ネイティブAndroidアプリからpingコマンドを実行して、その出力結果を取り込んでみました。しかし、system関数の終了後にリダイレクトされたファイル全体を読む必要があり、pingの出力をもう少しリアルタイムに参照したくなりますよね? そこで今日は、popen/fgets/pcloseの関数を使用して、pingコマンドの出力を行単位で画面に表示してみたいと思います。 1.  まず、C++Builder(またはAppmethod)でFieMonkeyモバイルアプリプロジェクトを作成して、「pingコマンドを起動するボタン」や「出力結果行を表示するリストボックス」を配置します。 2. 次に、C++のテンプレートクラスを設計して、「ワーカースレッドを実行するTThread::CreateAnonymousThreadメソッド」と「GUIスレッド配下で処理を行うTThread::Synchronizeメソッド」にそのインスタンスを渡せるようにします。 3. C++11のラムダ式を作成してpingコマンドをpopen関数で実行しfgets関数/pclose関数を呼び出します。さらにそのラムダ式の中に別のラムダ式を作成し、fgets関数で取得した出力行をリストボックスに追加するようにします。なお、pclose関数の戻り値(int型)を使って、pingコマンドの終了ステータスも確認するコードを追加しても良いでしょう。 4. 最後は、アプリをAndroidデバイスで実行してみました。...
高橋(智)です。 私はまだAndroid Wear搭載ウォッチは持っていませんが、怪しげな腕時計型Androidスマホは持ってます。閑話休題。先日のGoogle I/O 2014ではAndroid Wearが発表されましたが、最新のAndroid SDKをダウンロードするか、既存のAndroid SDKをアップデートすることで、Android Wearのエミュレータを試すことができます。 例えば、RAD Studio(Delphi/C++Builder) XE6であれば、Android SDK Managerで「Android 4.4W (API 20)」の「Android Wear ARM EABI v7a System Image」をインストールし、その他に必要なものもインストールしておきます。 Android Virtual Device (ADV) Managerで「Use Host GPU」を有効にしたARMのADVを作成します。今回は、280x280の画面サイズで正方形のADVを作成してみました。 あとは、FireMonkeyモバイルアプリを作成したら、プロジェクトマネージャの[ターゲットプラットフォーム]の[ターゲット]に表示されている「AndroidWear (5554)」をアクティブにしてアプリを実行すると、FireMonkeyアプリが起動しました。...
高橋(智)です。 先日のブログ記事では、C++Builder(またはAppmethod)のモバイルアプリにおいて、C++11のラムダ式とワーカースレッド生成機能を組み合わせて利用する手法を紹介しました。 今回はその仕組みを利用して、Cのシステム関数「system」に、Androidのgetpropコマンドやpingコマンド(※)を渡して実行し、ファイルにリダイレクトされた出力内容や、コマンドの終了値を取得して画面に表示してみようと思います。 (※ C++Builderに搭載されているネットワークコンポーネントIndyには、Android向けにもICMP/Pingのためのコンポーネントが一応用意されていますが、RAWソケットの生成にroot権限が必要であるなど、動作しないため、Androidの/system/bin/pingコマンドを利用するのが簡便でしょう) 1. まず、C++言語のFireMonkeyモバイルアプリプロジェクトを新規に作成したら、getpropやpingコマンドを実行するボタン、コマンドの終了値を表示するラベル、リダイレクトされたファイルの内容を表示するメモなどを配置したフォームを用意します。 2. ボタンのイベントハンドラでは、TThread::CreateAnonymousThreadのコンストラクタにC++11のラムダ式を2つ渡しています。1つ目はワーカースレッド配下でsystem関数を実行するもので、2つ目はGUIスレッド配下で画面を更新するものです。pingコマンドも含め一般的に、system関数の戻り値が0なら...
はじめまして。いがぴょん こと伊賀敏樹です。 C++Builder の新版 C++ コンパイラについて、小ネタを取りあげて お伝えします。(於 2014/07/03) RAD Studio の最新世代の C++ コンパイラはオープンソースの Clang コンパイラ(LLVM コンパイラのフロント エンド)をベースにしています。   ■Embarcadero: Clang ベースの C++ コンパイラ 最新版である RAD Studio および C++Builder の XE6 では、Android、iOS (iPhone, iPad)、Windows (64bit) 向けの C++ コンパイラが新版となっています。Windows (32bit)向けの新版化もロードマップで計画されています。 ここで挙げられた LLVM および clang のホームページは それぞれ以下となります。   ■LLVM   ■clang 日本語で書かれた LLVM 関連の書籍で 一般的に良く知られているのは以下のものとなります。   ■書籍: きつねさんでもわかるLLVM   -コンパイラを自作するためのガイドブック-     著者: 柏木 餅子、風薬     出版社: インプレスジャパン (2013/06/21)     ISBN: 4844334158     参考: Amazon: http://www.amazon.co.jp/dp/4844334158 ■書籍: LLVM/Clang実践活用ハンドブック 著者: 出村成和 出...
高橋(智)です。 先日のブログ記事では、FireMonkeyデスクトップアプリでWebブラウザコンポーネントを利用する例を紹介しましたが、有償のコンポーネントであったり、Webブラウザエンジン(.dll類)の配布が必要であったり、まだWin64のサポートが無かったり、ということもあり、別のライブラリを紹介したいと思います。 実は、エンバカデロのMVPの細川さんが、Delphi XE6のFireMonkey向けに、無料で利用できるWebブラウザライブラリ「TWebBrowser」を開発・公開されています。使用方法やライセンスなどについてはReadme.mdを参照していただくとして、以下に利用手順を紹介します。なお、ブウラザのエンジンとして、Win32/Win64ではIWebBrowser(IE)を、OS XではWebView(Safari)を採用しています。 1. まず、Delphi XE6でFireMonkey HD アプリのプロジェクトを作成したら、ターゲットプラットフォームに、Win32のほかにWin64とOS X を追加します。GitHubのページから「FMX.WebBrowserEx.pas」「FMX.WebBrowser.Win.pas」「FMX.WebBrowser.Mac.pas」「Macapi.WebView.pas」の.pasファイルをダウンロードしたらプロジェクトフォルダにコピーし、必要があればFMX.WebBrowserEx.pasをプロジェクトに追加します。 2. uses に FMX.WebBrowserEx を追加した...
高橋(智)です。 無料でC++言語によるAndroidスマホアプリ開発も可能になった「Appmethod」がリリースされましたが、やはり気になるのはAndroidデバイスの画面サイズでしょうか。 そこで今日は、C++言語およびObject Pascal(Delphi)言語を使用して、手元にあるNexus 4とNexus 7(2012)の画面サイズ(単位:インチ)を計算してみました。一般的に画面サイズはディスプレイの対角線の長さで求まるので、幅と高さのピクセル数と画素密度(ppi)からおおよそのサイズを計算できます。 1. まず、C++言語のFireMonkeyモバイルアプリを作成したら、Android APIの「android.util.DisplayMetrics」のインスタンスを取得しなければなりません。幸いなことに、FireMonkeyのFMX.Helpers.AndroidユニットにGetJDisplayMetricsメソッドが用意されていますので、それを呼び出して幅と高さのピクセル数と画素密度(ppi)から画面サイズ(インチ)を計算してみました。 2. 次に、同じ処理をObject Pascal(Delphi)言語版のアプリでも行ってみました。ここでは、System.MathユニットのSqrt関数とPower関数を呼び出すようにしました。 3. 最後に、Nexus 4とNexus 7(2012)にアプリを転送して対角線の位置と画面サイズ(インチ)を確認してみると、スペックと合致しますね。 参考: Nex...