20150314 appforofficestudy

36
Apps for Office Excelアプリ開発の事例で見るバッドノウハウと回避策

Upload: hipsrinoky

Post on 19-Jul-2015

83 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 20150314 appforofficestudy

Apps for OfficeExcelアプリ開発の事例で見るバッドノウハウと回避策

Page 2: 20150314 appforofficestudy

山本 優ピタリ株式会社

簡単だから活用できるクラウド販売管理「セールスノート」を提供しています。

ロープライス 基幹システム利用 カスタムがお得

ユーザー単位でなく会社単位課金 システム製作~倉庫管理まで 細かなセミオーダーに対応

Page 3: 20150314 appforofficestudy

「E2D3」というExcelアプリの開発に関わっています。

Page 4: 20150314 appforofficestudy

今日の内容

• Apps for Office開発の重要なポイント

• ハマるポイント5選

• 今後のアプリの可能性

Page 5: 20150314 appforofficestudy

Apps for Officeの 重要なポイント(Excelアプリ編)

• 開発環境の選択

• マニフェストファイルの注意点

• アプリで最も重要な要素「Bind(バインド)」

Page 6: 20150314 appforofficestudy

開発環境

JavaScriptアプリケーションなので、 なんでも良さそうですが。。。

Page 7: 20150314 appforofficestudy

開発環境

Page 8: 20150314 appforofficestudy

• アプリ上のエラーコンソールを見る唯一のツール

• ブレークポイントの設定

• Visual Studio Community(無料)

これまでのExpressでは出来なかったオフィスアプリの開発が可能に

Page 9: 20150314 appforofficestudy

マニフェストファイル

Page 10: 20150314 appforofficestudy

ドキュメントサイトの サンプル

Visual Studioで 作成された

デフォルトサンプル

Page 11: 20150314 appforofficestudy

マニフェストファイルの 注意点IDやバージョンの桁数は正しく

※間違っていると起動しません ※そもそも不要な項目もあります

アプリ申請時にどの サンプルにも無い項目を求められる

※リジェクト理由に書かれますので、 よく読みましょう。

Page 12: 20150314 appforofficestudy

バインドとは

任意の領域とそのデータの オブジェクトセット

Page 13: 20150314 appforofficestudy

Bindオブジェクト (固有のID(Bind ID)があります)

Bindオブジェクトを通じて、 ◯データ取得 ◯データ編集

Page 14: 20150314 appforofficestudy

実際の開発現場から ありがちなハマるポイントと

対策をご紹介

Page 15: 20150314 appforofficestudy

ケース1: アプリから

任意のセルを選択したい時

Page 16: 20150314 appforofficestudy

例えば・・・

◯アプリからレイアウトを指定したい

◯アプリからバインド領域を指定したい

◯アプリから特定のセルの値を書き換えたい

Page 17: 20150314 appforofficestudy

できません

Page 18: 20150314 appforofficestudy

◯「A1:C3」のように、特定のセルを指定することは出来ない。

◯あくまでユーザーが選択したセル、セルの範囲に対して、アプリが干渉できる。

◯「選択」「選択解除」という機能は無い

Page 19: 20150314 appforofficestudy

E2D3の場合

Page 20: 20150314 appforofficestudy

ユーザーに特定のセルを選択するよう案内を出すことで対応したり、

Page 21: 20150314 appforofficestudy

欲しいデータ範囲(例えば「A1:H7」)分の2次元配列を作成して、データを流し込んだりしている。

Page 22: 20150314 appforofficestudy

空白セルやデータ削除は空文字で埋めることで、 データ書き換えやレイアウト生成を実装している。

テスト

array = [ [“”,””,””,””,””,””], [“”,””,””,””,””,””], [“”,””,””,””,”テスト”,””], [“”,””,””,””,””,””]

]

こんな感じ

Page 23: 20150314 appforofficestudy

注意!

ユーザーが任意のセルを選択中に、その範囲以上のデータを挿入しようとするとエラー

array = [ [“”,””,””,””,””,””], [“”,””,””,””,””,””], [“”,””,””,””,”テスト”,””], [“”,””,””,””,””,””]

]

データ範囲が違うと怒られます

Page 24: 20150314 appforofficestudy

適切な案内をしましょう。

Page 25: 20150314 appforofficestudy

ケース2: バインド領域を動的に

変更したい

Page 26: 20150314 appforofficestudy

例えば・・・

◯外部連携アプリから取得したデータをインタラクティブに反映する ◯動的にレイアウトを変更する

Page 27: 20150314 appforofficestudy

でき、、、なくはない

Page 28: 20150314 appforofficestudy

E2D3の場合、グラフ毎に異なるサンプルデータがある

Page 29: 20150314 appforofficestudy

最初のバインド領域分の データを削除

バインド領域を破棄

新しいバインド領域分の 配列を挿入

新規にバインド領域(オブジェクト)を生成

Page 30: 20150314 appforofficestudy

注意!

同じBind-IDで再度作り替えた場合

Bind-ID:1 Bind-ID:1

Bind-ID:1 Bind-ID:1’

適切にBindオブジェクトを破棄しないと、内部的にBindオブジェクトが残る

Page 31: 20150314 appforofficestudy

ケース3: バインド領域の変更を監視したい

Page 32: 20150314 appforofficestudy

出来ます!

addHandlerAsyncメソッド

Page 33: 20150314 appforofficestudy

注意!

◯使わなくなったイベント監視は必ず削除する ◯同じBind-IDであっても、複数回同じイベント処理を登録しない(イベント処理は上書きされない)

Page 34: 20150314 appforofficestudy

イベント処理1

イベント処理2

イベント処理を変更 するために再登録

イベント処理1

イベント処理2

両方実行される

Page 35: 20150314 appforofficestudy

今後のアプリ動向

App for Office

Page 36: 20150314 appforofficestudy

Have fun!!