KdotK

since 2010

アプリケーション

Windows

Windowsアプリケーションの作成方法は数多くあります。その中で当方は主に次の2つの方法を利用しています。

C++、MFC、Win32APIを利用する

Windows3.1時代からおよそ20年にわたって主流だった方法です。 現在も基本的な方法としてサポートされつづけられています。多くの場合に処理性能に優れたアプリケーションを作成できます。

10以上前になりますが実験結果を解析するプログラムの多くをこの方法で作成してきました。各種数値計算をし、結果をグラフ表示するというパターンです。実験結果の解析はお客様ご提示の方法によるもの、一般的な方法によるもの、両方の場合があります。専門知識が必要ない場合は当方で検討いたすこともあります。一般的な方法の場合は、たいていオープンソースのライブラリを利用して実装しています。

画像処理プログラムではOpen CVを利用する場合が多いです。OPEN CVは画像処理を中心に大変多機能なライブラリです。

形態要素解析にはmecabを利用しています。

その他ライブラリとして、データ構造や言語全般の機能強化のためにboost,行列計算のためにeigenをよく使います。また機械学習のためにdlibを使い始めたところです。

以上は主にGUIを持つアプリケーションについて記しましたが、同様な方法でコマンドライン版のアプリケーションを作成することもできます。ライブラリをうまく選ぶと同一のソースプログラムでWindowsとLinuxの両方に対応できます。

またC++言語はC++14/17規格が登場したことにより、さらに多機能になりました。充分な理解の元でプログラムの生産性、品質を大きく高めることができます。当方もこれら知識の習得に努めています。

  • C++14/17
  • opencv
  • boost
  • eigen
  • dlib
  • mecab

C#、.net frameworkを利用する

この方法は10数年前に登場し、今日では主流といえる方法となりました。

各種入力欄を持ついわゆるフォームアプリケーションを比較的容易に作成できるので、このようなアプリケーション作成の際に利用してきました。

もちろん.net frameworkの機能はこれだけではありません。上記のフォームのほか、グラフィックス、ファイル処理、HTTP通信などの機能も利用してきましたが、全体から見ればごく一部です。他の場合もそうですが各機能が必要になった時点で調査し、利用していくということになります。

.net frameworkはプログラミング言語に依存しないライブラリで、実際にC++/CLI、Visual Basicなど対応言語が多くあります。C++/CLIはC++言語を拡張したものです。

また、機能の一部をC/C++で作成して結合させることもできます。処理の一部を高速化したい、C/C++で実装されたライブラリを利用したい場合に有効です。

Android

Android Studioを利用して作成しています。Android向けアプリケーション作成のもっとも標準的な方法です。

いままでにフォーム、2Dグラフィックス、HTTP通信などを利用してきました。フォームについてはXMLによる部品作成やレイアウトを一通り利用してきています。WEBブラウザの機能を持つ部品を組み込みHTMLと連携することもできます。2Dグラフィックスは高度なゲームには向きませんが、処理結果のグラフ表示や簡単なゲームには充分です。HTTP通信は各種API利用の際に用いています。

またjniという機構を使ってC/C++で作成したプログラムを組み込むことができます。.net frameworkアプリケーションでC/C++を利用する場合と同様に処理の一部を高速化したい、C/C++で実装されたライブラリを利用したい場合に有効です。