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