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