MATLAB 入門 ~ 開発向けプログラミング編 ~ MathWorks Japan アプリケーションエンジニアリング部テクニカルコンピューティング 大開孝文 2015 The MathWorks, Inc. 1
プログラミング言語としての MATLAB 2014 年 7 月 IEEE Spectrum による プログラミング言語の人気調査 (12 種類の項目での結果 ) 結果 : MATLAB が C, C++, Java などの従来からの汎用言語と並び 10 位にランクイン Data sources: Google, CareerBuilder, IEEE Xplore, Github, and more. 2
ソナーのマルチ ビーム測深機から得られるデータを解析するソフトウェアの開発と配布 Challenge 科学者は海洋学の生データ ( テラバイト単位のサイズ ) を処理して 分析することが可能 Solution MATLAB を使ってソナーのマルチ ビーム測深機から得られるデータを信号処理 解析 可視化の高品質なソフトウェアを作成 Results アルゴリズム開発が促進 何十万ものコード行は 効率化 再利用 MATLAB を使うことで 同等のコードを C で記述するコード量を 75% 削減 (MATLAB 27 万行 ) MATLABを使うことで アルゴリズムの開発 計算結果の可視化 何度もアルゴリズムを洗練することができたので MATLABはソフトウェアを開発するための理想的な環境であることがわかりました." Jean-Marie Augustin Ifremer 事例 (HTML) 3
はじめに テスト MATLAB 開発者 MATLAB ファイル データ ドキュメント エンドユーザー ユニットテスト レポート生成パブリッシュ機能.mltbx.exe コードの品質 / パフォーマンス コードアナライザー デバック プロファイラー チェックイン / チェックアウト リビジョン管理 協調 連携 GitHub ソース管理 (Git, Subversion) 4
アジェンダ MATLAB スクリプトと関数 コードの品質とパフォーマンス プログラムのテスト ソースコントロールによる MATLAB プログラミングの管理 アプリケーション カスタムツールボックスの共有化 5
MATLAB スクリプトと関数 ファイルの先頭に注目 スクリプト : X 関数 : function 可変入出力が可能 varargin / varargout nargin/narginchk : 入力数のチェック nargout/nargoutchk : 出力数のチェック function varargout = varlist(varargin) narginchk(1, 2) % 引数の数チェック fprintf('number of arguments: %d n',nargin) for k = 1:nargin % 入力回数ループ処理 val = (varargin{k}); % サイズを出力する S = whos('val'); % 変数情報の取得 varargout{k} = S.class; % データ型の出力 end サブ関数の定義 スクリプト : X 関数 : 6
アジェンダ MATLAB スクリプトと関数 コードの品質とパフォーマンス プログラムのテスト ソースコントロールによる MATLAB プログラミングの管理 アプリケーション カスタムツールボックスの共有化 7
MATLAB のコード改善 コードの分析 デバック 入力 エラーのハンドリング 8
MATLAB コードのパフォーマンス測定 プロファイラ コード内のボトルネック検出 相対実行時間の測定 tic/toc コード スクリプトの部分実行時間測定 (tic~toc の間 ) timeit 関数の時間測定 何回も測定した時間の平均値 Video 9
MATLAB コードアナライザー コードの最適化とシンタックスエラーの回避 エディター内ので自動チェック checkcode フォルダー内の複数ファイルの自動実行とレポート生成 Video 10
MATLAB コードのデバック 診断検出 エディター内でのグラフィカル設定 コマンドラインでの設定 ブレイクポイントの設定 ファイル内でのステップ実行 変数のチェック Video 12
アジェンダ MATLAB スクリプトと関数 コードの品質とパフォーマンス プログラムのテスト ソースコントロールによる MATLAB プログラミングの管理 アプリケーション カスタムツールボックスの共有化 14
なぜ プログラミングのテストが必要か? テストは品質の向上 工数の削減に貢献 コードの動作チェック プログラミングの修正が早く着手できる レグレッションテスト ユニットテストの流れ テスト 1 スタート 準備設定 setuponce : 終了処理 teardownonce 終了 テスト N 15
MATLAB で効果的なコードテスト MATLAB ユニットテストフレームワーク スクリプトベース 関数ベース クラス (OOP) ベース テストできる種類 : テストのタイプ テスト結果のレポート出力が可能 ( パブリッシュと併用 ) Video 16
アジェンダ MATLAB スクリプトと関数 コードの品質とパフォーマンス プログラムのテスト ソースコントロールによる MATLAB プログラミングの管理 アプリケーション カスタムツールボックスの共有化 17
コラボレーション開発 MATLAB 言語におけるコラボレーション開発の増加 効率的にコードやアイデアを共有することによって より速く より多くの結果を実現 コードを管理することの必要性 ソースコントロール環境を使うことで : トラッキング 比較 コードを前のバージョンに戻す コードの共有化をするときに コードのコピーを修正 変更をコミットする ハイライト表示 同時に複数の人がコード変更を行った時の解決 18
ソースコントロール MATLAB デスクトップから コードの管理 ソースコントロールのツールの活用 GIT / Subversion とのインテグレーション 現在のフォルダとの連携 リビジョン間の変更の確認と競合を回避するための比較ツール Video 19
GitHub との連携事例 20
アジェンダ MATLAB スクリプトと関数 コードの品質とパフォーマンス プログラムのテスト ソースコントロールによる MATLAB プログラミングの管理 アプリケーション カスタムツールボックスの共有化 21
共有化 ドキュメント レポートの自動生成 アプリケーション (exe) の配布 動的ライブラリ (dll) の配布 MATLAB アプリと カスタム Toolbox のパッケージ化 MATLAB MATLAB Compiler MATLAB Compiler SDK Standalone Application Excel Add-in C/C ++ Java.NET MATLAB Production Server Video 22
共通の疑問? ユーザーにアプリ の共有させる方法は? インストール方法 使用方法 アップデート情報 アンインストール方法 MATLAB パスを管理する方法はどれが一番いいのか? 23
ファイル共有サイト (File Exchange) にあるファイルを共有する方法 24
アプリのパッケージ化 UI 上のある自己完結型のアプリ インストールファイルを一緒にアプリが提供 アプリギャラリーに登録できる簡単な配布環境とインストレーションファイル 自動的に依存性のファイルも含まれる アプリを使うための 依存しているツールボックスが表示 Video 25
カスタムツールボックスのパッケージ化 単一のインストーラで カスタムツールボックスの作成 プログラム, サンプルデータ, アプリ, ドキュメント 例題を含める 依存ファイルのチェックと自動的な追加 必要なツールボックスの表示 インストール時に 自動的にフォルダとファイルをパス上に配置 アイコンから詳細の表示 アンインストールすることもツールボックスのダイアログからの可能 Video 26
まとめ テスト MATLAB 開発者 MATLAB ファイル データ ドキュメント エンドユーザー ユニットテスト レポート生成パブリッシュ機能.exe.mltbx コードの品質 / パフォーマンス コードアナライザー デバック プロファイラー チェックイン / チェックアウト リビジョン管理 協調 連携 GitHub ソース管理 (Git, Subversion) 27
大好評の MATLAB の授業を いつでも自分の PC から! 新しいトレーニング形態のお知らせ (2 分だけ CM) 必要な物は Web ブラウザ だけ いつでも 好きな時間に 学習可能 MATLAB 基礎コース が日本語化 28
2015 The MathWorks, Inc. 29
MATLAB 開発者向け Tip 集 30
テスト MATLAB 開発者 MATLAB ファイル データ ドキュメント エンドユーザー ユニットテスト レポート生成パブリッシュ機能.mltbx.exe コードの品質 / パフォーマンス コードアナライザー デバック プロファイラー チェックイン / チェックアウト リビジョン管理 協調 連携 GitHub ソース管理 (Git, Subversion) 31
ダイジェスト 1 スクリプトと関数について 関数 : 先頭に function 可変入出力が可能 varargin / varargout 入力 出力変数 nargin/narginchk : 入力数のチェック nargout/nargoutchk : 出力数のチェック コードの品質 コードアナライザー : 静的解析機能 [ ホーム ] タブ コードの解析 MATLABエディタの右端の色を確認 : 緑がOK デバッカー [ エディター ] タブを開くエディターの行数の横の をクリック : 赤 / 黄色の エラー直前で止める : dbstop if error 不要な出力要素を抑えるときには ~ サブ関数の定義 スクリプト : X 関数 : 時間の計測 プロファイラ : プログラム全体の時間計測 [ ホーム ] タブ 実行および時間の計測 tic/toc : コマンド間の時間計測 timeit: 単体関数の平均時間計測 32
ダイジェスト 2 ソースコントロール対応 (R2015a -) Git Subversion(1.8) テスト環境 ユニットテストフレームワークを提供 (R2013a~) スクリプト 関数 クラスファイルをサポートテストケース作成変数のタイプのチェック結果の数値が指定の範囲内警告が出ないかどうかテスト実行 :runtest 共有化 ドキュメント レポートの自動生成 [ パブリッシュ ] タブ パブリッシュ MATLAB アプリ (2012b) [ アプリケーション ] タブ アプリケーションのパッケージ化 カスタムToolboxのパッケージ化 (2014b) [ ホーム ] タブ アドオン ツールボックスのパッケージ化 アプリケーション (exe) の配布 MATLAB Compiler [ アプリケーション ] タブ アプリケーションコンパイラ ダイナミックライブラリ (dll) の配布 MATLAB Compiler SDK (R2015a ~ 変更 ) [ アプリケーション ] タブ アプリケーションコンパイラ 新規作成 ライブラリコンパイラプロジェクト 33