<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Officeアドイン &#8211; 株式会社カジトリ 技術ブログ</title>
	<atom:link href="https://develop.kajitori.co.jp/archives/tag/office%E3%82%A2%E3%83%89%E3%82%A4%E3%83%B3/feed" rel="self" type="application/rss+xml" />
	<link>https://develop.kajitori.co.jp</link>
	<description>Officeアドイン、Laravel、Exmentなどの技術記事を記載します。</description>
	<lastBuildDate>Fri, 29 Jan 2021 09:00:19 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://develop.kajitori.co.jp/wp-content/uploads/2021/01/cropped-logo1-32x32.png</url>
	<title>Officeアドイン &#8211; 株式会社カジトリ 技術ブログ</title>
	<link>https://develop.kajitori.co.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ローカルのOfficeアドインを、Office Onlineで実行・デバッグする</title>
		<link>https://develop.kajitori.co.jp/archives/155</link>
					<comments>https://develop.kajitori.co.jp/archives/155#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Fri, 29 Jan 2021 08:49:08 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[OfficeOnline]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=155</guid>

					<description><![CDATA[概要 Officeアドインを、Office Onlineで実行するための手順です。 「Office Online」でOfficeアドインを実行するためには、アプリ本体となるhtmlファイル・各種プログラムをサーバーにアッ...]]></description>
										<content:encoded><![CDATA[<h1>概要</h1>
<p>Officeアドインを、Office Onlineで実行するための手順です。</p>
<p>「Office Online」でOfficeアドインを実行するためには、アプリ本体となるhtmlファイル・各種プログラムをサーバーにアップロードしなければいけない・・・と考えがちですが、実はそんなことはなく、localhostにアプリを配置したまま、アプリを実行し、デバッグ・検証することができます。<br />
以下、その手順を記載します。</p>
<h1>前提条件</h1>
<h2>執筆時環境・バージョン</h2>
<ul>
<li>Windows10</li>
<li>Microsoft Office (Microsoft365版) ビルド13530.20376</li>
<li>Edge  88.0.705.53(Chromeでも可)</li>
<li>VSCode 1.52.1</li>
<li>Live Server v5.6.1</li>
</ul>
<h2>前提</h2>
<ul>
<li>すでにOfficeアドイン(クライアント版)を、ローカル環境で動作するための手順が整っていること</li>
</ul>
<h2>実行環境</h2>
<ul>
<li>ローカル環境URL：<a href="https://127.0.0.1:5500">https://127.0.0.1:5500</a>  （Live Server）</li>
</ul>
<h2>必要ソフトウェア</h2>
<ul>
<li><a href="https://slproweb.com/products/Win32OpenSSL.html">OpenSSL</a> ※自己証明書を作るために必要です。証明書がすでにあったり、別の方法で証明書が作成可能な場合は、不要になります。</li>
</ul>
<h1>手順</h1>
<h2>自己証明書作成</h2>
<p>Office Onlineでは、https通信で実行する必要があるようです。<br />
そのため、証明書を作成します。すでに証明書がある場合は不要です。</p>
<ul>
<li>証明書を配置するフォルダで、以下のコマンドを実行します。<br />
※Windows用です。OpenSSLが&quot;C:\Program Files\OpenSSL-Win64&quot;にリリースされている前提です。その他諸々は、自己責任でお願いします。</li>
</ul>
<pre><code>&quot;C:\Program Files\OpenSSL-Win64\bin\openssl.exe&quot; req -x509 -newkey rsa:4096 -sha256 -nodes -keyout vscode_live_server.key.pem -out vscode_live_server.cert.pem  -subj &quot;/CN=example.com&quot; -days 3650</code></pre>
<ul>
<li>これで、コマンドを実行したフォルダに、証明書&quot;vscode_live_server.key.pem&quot;, &quot;vscode_live_server.cert.pem&quot;の2つが作成されます。</li>
</ul>
<h1>VSCode設定</h1>
<ul>
<li>
<p>VSCodeを開き、アプリ本体(htmlファイルなど)のあるフォルダを開きます。</p>
</li>
<li>
<p>Live Serverをhttpsで開くための設定を行います。<br />
VSCodeのメニューより、「ファイル」→「ユーザー設定」→「設定」を選択します。</p>
</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online1.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online1-284x300.png" alt="" /></a>
<ul>
<li>「ワークスペース」タブの、「拡張機能」→「Live Server Setting」を選択します。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online2.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online2-256x300.png" alt="" /></a>
<ul>
<li>Settingsの「Https」項目を探し、値を変更します。
<ul>
<li>enable : true</li>
<li>cert : 作成した証明書のcertファイルのフルパス</li>
<li>key : 作成した証明書のkeyファイルのフルパス</li>
<li>passphase : 空欄</li>
</ul>
</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online3.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online3-300x126.png" alt="" /></a>
<ul>
<li>右下の「Go Live」ボタンをクリックします。 </li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug8.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug8-300x195.png" alt="" /></a>
<ul>
<li>ブラウザで、証明書の確認メッセージが表示されますので、一旦承認し、アクセスを許可します。（この過程がないと、アプリが起動しませんでした）</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online4.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online4-300x205.png" alt="" /></a>
<h2>マニフェストファイル修正</h2>
<ul>
<li>マニフェストファイルのURLが、httpになっている場合、httpsに修正してください。デバッグとして必要な最低限は、以下の2箇所です。</li>
</ul>
<p>①DefaultSettings-&gt;SourceLocation</p>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online15.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online15-300x91.png" alt="" /></a>
<p>②Contoso.Taskpane.Url</p>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online16.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online16-300x108.png" alt="" /></a>
<h2>Office Onlineでアプリ実行</h2>
<ul>
<li>そのブラウザのまま、Microsoft365などで、Office Onlineを開きます。<br />
※キャプチャではWordですが、Excel・PowerPointなどでも手順は一緒なはずです。OneNoteやOutlookは同じか怪しいかも</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online9.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online9-300x164.png" alt="" /></a>
<ul>
<li>メニューの 「挿入」をクリックし、「アドイン」 を選択します。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online10.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online10-300x132.png" alt="" /></a>
<ul>
<li>「個人用アドイン」の中の「個人用アドインの管理」をクリックし、「マイ アドインのアップロード」をクリックします。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online11.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online11-300x213.png" alt="" /></a>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online12.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online12-300x223.png" alt="" /></a>
<ul>
<li>これで、マニフェストファイルがアップロードされます。クライアント版Officeと同じような手順でアプリを実行することで、アプリが読み込まれます。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online13.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online13-300x142.png" alt="" /></a>
<p>localhostで実行されている環境にも関わらず、アプリが読み込まれました。<br />
※もちろん、Live Serverを実行している端末以外で、Office Onlineを起動しマニフェストファイルを読み込んでも、アプリは実行されませんので、ご了承ください</p>
<h1>デバッグする</h1>
<p>いろんな場所で記載していますが、OfficeアドインはWebアプリケーションです。そのため、ブラウザのデバッグ機能をそのまま実行できます。</p>
<ul>
<li>
<p>Edgeの場合、F12をクリックし、「ソース」タブを開きます。</p>
</li>
<li>
<p>左リストの中の、「ぺージ」から、「top」→「WebApplicationFrame」→「{&quot;baseFrameName:....}」→「ローカル環境のURL(127.0.0.1:5500)」と開くことによって、作成したhtmlやスクリプトが開けます。</p>
</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online5-1.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online5-1-190x300.png" alt="" /></a>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online6-1.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online6-1-226x300.png" alt="" /></a>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online7.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online7-300x153.png" alt="" /></a>
<ul>
<li>後は、各々で作成したコードにブレークポイントを置いて、実行することで、デバッグが実施できます。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online8.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/office-online8-300x168.png" alt="" /></a>
<h1>まとめ</h1>
<p>クライアント版のOfficeの方が安定感がありますが、前回の記事で書いたように、どうにも環境依存で動く・動かないがあるようです。<br />
この手順なら、ごく普通のブラウザで動作・デバッグ可能ですので、場合によっては、Office Onlineでの開発も検討してみてください。</p>
<h1>参考</h1>
<p><a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/testing/sideload-office-add-ins-for-testing">https://docs.microsoft.com/ja-jp/office/dev/add-ins/testing/sideload-office-add-ins-for-testing</a><br />
<a href="https://qiita.com/ma2shita/items/297c812a6cd09b5e82c8">https://qiita.com/ma2shita/items/297c812a6cd09b5e82c8</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/155/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Officeアドイン(クライアント版)のデバッグを、VSCodeで実施する</title>
		<link>https://develop.kajitori.co.jp/archives/129</link>
					<comments>https://develop.kajitori.co.jp/archives/129#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Thu, 28 Jan 2021 02:02:37 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[VSCode]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=129</guid>

					<description><![CDATA[概要 Officeアドイン（クライアント）のデバッグを、VSCodeで実行するための手順です。 Visual Studio 201XのOfficeソリューションであったり、nodeを使用した環境であれば、デバッグの方法に...]]></description>
										<content:encoded><![CDATA[<h1>概要</h1>
<p>Officeアドイン（クライアント）のデバッグを、VSCodeで実行するための手順です。</p>
<p>Visual Studio 201XのOfficeソリューションであったり、nodeを使用した環境であれば、デバッグの方法についてはちょいちょい出てくるのですが、それ以外の環境で、VSCodeを使用した手順がなかなか出てこなかったので、まとめました。</p>
<p>今回はサーバーにLive Serverを使用していますが、XAMPP、IIS、Apacheなど、環境は何でも良いと思います。</p>
<p>また、どういうわけか同じ手順を踏んでいても、なぜかデバッグが正常に動かなかったり、ブレークポイントに引っかからなかったりということが発生していました。<br />
そのため、もしこの手順でデバッグが正常に動かない場合は、お手数ですが、端末の再起動、VSCodeの再起動など、お試しください。<br />
それでも駄目なら、なにか別の理由があると思いますが、今は分かりません。ごめんなさい。</p>
<h1>前提条件</h1>
<h2>執筆時環境・バージョン</h2>
<ul>
<li>Windows10</li>
<li>Microsoft Office (Microsoft365版) ビルド13530.20376</li>
<li>Edge  88.0.705.53</li>
<li>VSCode 1.52.1</li>
<li>Microsoft Office Add-in Debugger v0.2.0</li>
<li>Live Server v5.6.1</li>
</ul>
<h2>前提</h2>
<ul>
<li>すでにOfficeアドイン(クライアント版)を、ローカル環境で動作するための手順が整っていること</li>
</ul>
<h2>実行環境</h2>
<ul>
<li>ローカル環境URL：<a href="http://127.0.0.1:5500">http://127.0.0.1:5500</a>  （Live Server）</li>
</ul>
<h1>手順</h1>
<ul>
<li>
<p>スタートメニューで、「Visual Studio」と入力すると、「Visual Studio Code」が表示されます。</p>
</li>
<li>
<p>そこで、「管理者として実行」をクリックします。  (※)</p>
</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug1.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug1-300x280.png" alt="" /></a>
<ul>
<li>正常に開けた場合、VSCodeのタイトルに[管理者]と表示されます。</li>
</ul>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug2.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug2-300x124.png" alt="" /></a>
<ul>
<li>左メニューの「拡張機能」で、「Microsoft Office Add-in Debugger」で検索し、インストールします。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug3.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug3-300x192.png" alt="" /></a></li>
</ul>
<ul>
<li>
<p>左メニューより「実行」を選択し、「launch.jsonファイルを作成します」リンクをクリックし、「Office Addin」を選択します。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug4.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug4-300x192.png" alt="" /></a></p>
</li>
<li>
<p>launch.jsonファイルが作成されます。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug5.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug5-300x192.png" alt="" /></a></p>
</li>
<li>
<p>launch.jsonに、行を追加します。※最初の行に「,」を追加してください<br />
※ここで、&quot;url&quot;の値の&quot;?&quot;の前に、「/」を付けてください。これが無いと、正常に動きませんでした。<br />
※逆に、「/」があると動かないケースもあるかもしれません。この値は、有る無しで切り替えてみてほしいです。</p>
</li>
</ul>
<pre><code>        ,
        {
            &quot;type&quot;: &quot;office-addin&quot;,
            &quot;request&quot;: &quot;attach&quot;,
            &quot;name&quot;: &quot;Attach to Office Add-ins&quot;,
            &quot;port&quot;: 9222,
            &quot;trace&quot;: &quot;verbose&quot;,
            &quot;url&quot;: &quot;http://127.0.0.1:5500/?_host_Info=Word$Win32$16.01$ja-JP$$$$0&quot;,
            &quot;webRoot&quot;: &quot;${workspaceFolder}&quot;,
            &quot;timeout&quot;: 3000
          }</code></pre>
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug6.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug6-300x162.png" alt="" /></a>
<ul>
<li>
<p>VSCodeで、任意の場所にブレークポイントを置きます。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug7.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug7-300x192.png" alt="" /></a></p>
</li>
<li>
<p>Live Serverで実施する場合、右下の「Go Live」ボタンをクリックします。  (※)<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug8.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug8-300x195.png" alt="" /></a></p>
</li>
<li>
<p>Wordを起動し、Officeアドインを開きます。  (※)<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug9.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug9-300x192.png" alt="" /></a></p>
</li>
<li>
<p>VSCodeに戻り、左メニューの「実行」をクリック後、左上の「Launch」と書かれている再生ボタンの右の一覧をクリックし、「Attach to Office Add-ins」を選択します。  (※)<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug10.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug10-300x192.png" alt="" /></a></p>
</li>
<li>
<p>そのまま、左上の「Launch」と書かれている再生ボタンをクリックします。  (※)<br />
正常にデバッグが完了すれば、VSCodeのページ上部に下記キャプチャのような表示が行われます。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug11.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug11-300x196.png" alt="" /></a></p>
</li>
<li>
<p>Wordのアプリのjs処理を実行してみます。 (※)<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug12.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug12-300x191.png" alt="" /></a></p>
</li>
<li>
<p>VSCodeで、ブレークポイントで停止しました。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug13.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/officeaddin-debug13-300x194.png" alt="" /></a></p>
</li>
</ul>
<h2>再度、デバッグを実施する場合</h2>
<p>端末の再起動などで、再度デバッグを実施する場合は、手順に(※)と記載の部分のみ、実施を行ってください。</p>
<h1>やっぱり動かない場合</h1>
<p>どうもこのOfficeアドインのデバッグは不安定なようで、どうやっても正常に動作しない、というご報告をいただいていました。<br />
そのため、Office Onlineでの動作手順も、今後記事にしようと思っています。気長にお待ちください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/129/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Officeアドイン】OfficeアドインでSSOを有効化 実装編[Laravel]</title>
		<link>https://develop.kajitori.co.jp/archives/36</link>
					<comments>https://develop.kajitori.co.jp/archives/36#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Tue, 28 May 2019 12:05:12 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[Laravel]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=36</guid>

					<description><![CDATA[前回の記事の続きです。今回は、実際に実装して検証しました。 実装方針 MSのサイトに、node.jsとASP.NETのサンプルはすでにあるので、今回は別の言語で実装することにします。 今回は最近愛してやまない、PHPのL...]]></description>
										<content:encoded><![CDATA[<p>前回の記事の続きです。今回は、実際に実装して検証しました。</p>
<h1>実装方針</h1>
<p>MSのサイトに、<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/create-sso-office-add-ins-nodejs">node.js</a>と<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/create-sso-office-add-ins-aspnet">ASP.NET</a>のサンプルはすでにあるので、今回は別の言語で実装することにします。<br />
今回は最近愛してやまない、PHPの<b><span style="color: #ff0000">Laravel</span></b>で実装しました。Laravelサイコー。</p>
<p>なお、基本的には以下のドキュメントに記載の内容の後追いになります。こっちと自分の記事を読みながら検証するのがベスト。<br />
<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins</a></p>
<p><a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/register-sso-add-in-aad-v2">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/register-sso-add-in-aad-v2</a></p>
<p><span id="more-36"></span></p>
<h1>準備・設定</h1>
<h2>前提</h2>
<ul>
<li>
<p>今回構築するLaravelサイトの情報は以下になります。<br />
<a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a><br />
※実際に公開する場合は、「127.0.0.1:8000」を修正してください<br />
※また、この記事を書き始めた当初、「localhost:9000」と思い、キャプチャを作成し始めてしまいました。そのため、キャプチャ内に「localhost:9000」があった場合、「127.0.0.1:8000」に修正をお願いします。  </p>
</li>
<li>
<p>Laravel5.6で構築しております。  </p>
</li>
</ul>
<h2>Office365インストール</h2>
<p>Office365のクライアント版を、Office365のサイトからインストールします。  </p>
<h2>Azure AD v2設定</h2>
<ul>
<li>
<p>以下のAzureポータルページにアクセスし、Office365のアカウントでサインインします。<br />
[<a href="https://go.microsoft.com/fwlink/?linkid=2083908">https://go.microsoft.com/fwlink/?linkid=2083908</a>]
</li>
<li>
<p>「アプリの登録」より、「新規登録」をクリックします。<br />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213050-300x148.png" alt="" /></p>
</li>
<li>
<p>以下のように入力し、「登録」をクリックします。<br />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213149-300x244.png" alt="" /></p>
</li>
<li>
<p>アプリケーション (クライアント) IDとディレクトリ (テナント) IDをコピーしておきます。（あとで使用します）<br />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213414-300x116.png" alt="" /></p>
</li>
<li>
<p>「証明書とシークレット」をクリックし、「新しいクライアント シークレット」をクリックして、クライアントシークレットをコピーします。(こちらも後で使用します)<br />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213534-300x118.png" alt="" /></p>
</li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213643-300x197.png" alt="" />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525213747-300x37.png" alt="" />
<ul>
<li>「API の公開」→「設定」をクリックし、値に以下を入力します。<br />
api://(Webサイトのドメイン)/(先ほどコピしたアプリケーションID)<br />
例： api://127.0.0.1:8000/f4255842-2ac6-4b01-b8a6-aaaaaaaaaaaa  </li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525221840-300x138.png" alt="" />
<ul>
<li>「Scopeの追加」をクリックし、以下のように入力します。<br />
※スコープ名に「access_as_user」、同意できるのは誰ですかを「管理者とユーザー」と記入し、後は適当に  </li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525214443-300x281.png" alt="" />
<ul>
<li>「承認済みのクライアント アプリケーション」下の「クライアント アプリケーションの追加」をクリックし、<br />
「クライアントID」に以下の3つを入力し、「承認済みのスコープ」チェックを行い、「アプリケーションの追加」をクリックします。<br />
(Office系の設定値らしいです)<br />
d3590ed6-52b3-4102-aeff-aad2292ab01c<br />
57fb890c-0dab-4253-a5e0-7188c88b2bb4<br />
bc59ab01-8403-45c6-8796-ac3ef710b3e3  </li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525215007-300x261.png" alt="" />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525215115-300x133.png" alt="" />
<ul>
<li>「APIのアクセス許可」をクリックし、[Microsoft Graph] を選択してから [委任されたアクセス許可] を選択します。<br />
その後、以下にチェックを行い、「アクセス許可の更新」をクリックします。<br />
offline_access<br />
openid<br />
profile  </li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525215633-300x171.png" alt="" />
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525215857-236x300.png" alt="" />
<p>最後に、「既定のディレクトリ に管理者の同意を与えます」をクリックします。  </p>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525220019-300x109.png" alt="" />
<p>以上で、Azure AD v2側の設定は完了です。  </p>
<h2>Laravel開発</h2>
<p>Laravelの開発を行っていきます。<br />
※composerをインストールしている前提です。composerの説明は割愛します。</p>
<ul>
<li>
<p>インストールするフォルダで、コマンドプロンプトなどで、以下のコマンドを実行します。<br />
実行後、officejs_sso_laravelフォルダにcdします。<br />
composer create-project &quot;laravel/laravel=5.6.*&quot; officejs_sso_laravel</p>
</li>
<li>
<p>以下のリポジトリより、phpファイルをダウンロードします。<br />
<a href="https://github.com/hirossyi73/office-js-sso-laravel">https://github.com/hirossyi73/office-js-sso-laravel</a></p>
</li>
</ul>
<p>該当ファイルを、Laravelディレクトリに上書きます。  </p>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190525221236.png" alt="" />
<ul>
<li>.envファイルに、以下の値を記入します。<br />
CLIENT_ID=(コピーしたアプリケーションID)<br />
CLIENT_SECRET=&quot;(コピーしたクライアントシークレット。ダブルクオーテーションで囲むことを推奨)&quot;<br />
SCOPE=&quot;offline_access openid profile&quot;<br />
TENANT=(コピーしたテナントID)  </li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190528091147-300x81.png" alt="" />
<ul>
<li>以下のコマンドを実行します。<br />
php artisan serve</li>
</ul>
<p>これで、以下のURLでサーバーが起動します。<br />
<a href="http://127.0.0.1:8000">http://127.0.0.1:8000</a>  </p>
<h2>Officeアドイン設定</h2>
<ul>
<li>githubより、マニフェストファイルをダウンロードします。  </li>
</ul>
<p><a href="https://github.com/hirossyi73/office-js-sso-laravel/blob/master/Office-Add-in-Laravel.xml">https://github.com/hirossyi73/office-js-sso-laravel/blob/master/Office-Add-in-Laravel.xml</a></p>
<ul>
<li>ダウンロードしたマニフェストファイルを開き、135行目以降のWebApplicationInfo以下の内容を修正します。</li>
</ul>
<pre><code>    &lt;WebApplicationInfo&gt;
      &lt;Id&gt;(アプリケーションID)&lt;/Id&gt;
      &lt;Resource&gt;api://(ドメイン)/(アプリケーションID)&lt;/Resource&gt;
        &lt;Scopes&gt;
            &lt;Scope&gt;openid&lt;/Scope&gt;
            &lt;Scope&gt;offline_access&lt;/Scope&gt;
            &lt;Scope&gt;profile&lt;/Scope&gt;
        &lt;/Scopes&gt;
    &lt;/WebApplicationInfo&gt;</code></pre>
<ul>
<li>
<p>マニフェストファイルを、Officeのセキュリティ設定で「カタログ URL」に設定したパスに配置します。  </p>
</li>
<li>
<p>PowerPointを開き、アドインを起動します。  </p>
</li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190528143501-300x80.png" alt="" />
<ul>
<li>正常終了すると、このようにトークンが取得されます。</li>
</ul>
<img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2021/01/20190528143602-300x223.png" alt="" />
<ul>
<li>このうち、
<ul>
<li>アドイントークン：OfficeのSSOから取得したトークンです。</li>
<li>ユーザー名：アドイントークンから取得したログインユーザー名です。</li>
<li>Eメール：アドイントークンから取得したメールアドレスです。</li>
<li>Graphアクセストークン：アドイントークンを使用し、PHP(Laravel)側で取得したMicrosoft Graphトークンです。もちろん、このトークンをMicrosoft Graphに使用すれば、情報を取得できます。  </li>
<li>Graphリフレッシュトークン：アドイントークンを使用し、PHP(Laravel)側で取得したMicrosoft Graphのリフレッシュトークンです。  </li>
</ul>
</li>
</ul>
<h1>解説</h1>
<p>ソース単位でご説明します。</p>
<h3>アドイントークン取得</h3>
<p>以下の内容で、アドイントークンを取得しています。</p>
<pre><code class="language-javascript">//  app.js
(function(){
    // 初期化処理
    Office.onReady(function(info) {
        if(!Office.context.auth.getAccessTokenAsync){
            log(&#039;Office.context.auth.getAccessTokenAsync not supported&#039;);
            return;
        }

        // 認証実行
        Office.context.auth.getAccessTokenAsync(function (result) {
            if (result.status === &quot;succeeded&quot;) {
                // Use this token to call Web API
                var ssoToken = result.value;
                $(&#039;#addin_token&#039;).val(ssoToken);

                // decode user info
                var decoded = jwt_decode(ssoToken);

                $(&#039;#username&#039;).val(decoded.name);
                $(&#039;#email&#039;).val(decoded.preferred_username);

                getGraphToken(ssoToken);
            } else {
                if (result.error.code === 13003) {
                    // SSO is not supported for domain user accounts, only
                    // work or school (Office 365) or Microsoft Account IDs.
                } else {
                    // Handle error
                }

                log(&#039;error &#039; + result.error.code);
            }
        });
    });
})();</code></pre>
<p>ポイントは「Office.context.auth.getAccessTokenAsync(function (result) {」で、この関数で、PowerPointのアプリケーションからSSOで、アドインのトークンを取得しています。<br />
トークンはJWT形式なので、「//decode user info」の部分で内容を解析し、名前とメールアドレスを取得しています。  </p>
<h3>Microsoft Graphトークン取得</h3>
<p>以下の内容で、Microsoft Graphトークンを取得しています。</p>
<pre><code class="language-javascript">//  app.js

/**
 * Microsoft Graphのトークンをサーバーサイドから取得
 * @param string apptoken アドイントークン
 */
function getGraphToken(apptoken){
    var CSRF_TOKEN = $(&#039;meta[name=&quot;csrf-token&quot;]&#039;).attr(&#039;content&#039;);

    $.ajax({
        url:&#039;./graphtoken&#039;,
        type:&#039;POST&#039;,
        data:{
            &#039;apptoken&#039;:apptoken,
            &#039;_token&#039; : CSRF_TOKEN,
        }
    })
    // Ajaxリクエストが成功した時発動
    .done(function(data){
        $(&#039;#graph_token&#039;).val(data.access_token);
        $(&#039;#graph_refresh_token&#039;).val(data.refresh_token);
    })
    // Ajaxリクエストが失敗した時発動
    .fail(function(data){
        log(&#039;Graph token error : &#039; + JSON.stringify(data));
    })
    // Ajaxリクエストが成功・失敗どちらでも発動
    .always(function(data){
    });
}
</code></pre>
<pre><code class="language-php">// IndexController.php
    /**
     * Graphのトークン取得
     *
     * @return void
     */
    public function graphtoken(){
        $apptoken = request()-&gt;get(&#039;apptoken&#039;);

        // ホントはここで検証を行う

        // Graphのアクセストークンを代理フローで取得
        // https://docs.microsoft.com/ja-jp/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow
        $client = new \GuzzleHttp\Client;

        $res = $client-&gt;request(
            &#039;POST&#039;,
            &#039;https://login.microsoftonline.com/common/oauth2/v2.0/token&#039;,
            [
                &#039;form_params&#039; =&gt; [
                    &#039;grant_type&#039; =&gt; &#039;urn:ietf:params:oauth:grant-type:jwt-bearer&#039;,
                    &#039;client_id&#039; =&gt; env(&#039;CLIENT_ID&#039;),
                    &#039;client_secret&#039; =&gt; env(&#039;CLIENT_SECRET&#039;),
                    &#039;assertion&#039; =&gt; $apptoken,
                    &#039;scope&#039; =&gt; env(&#039;SCOPE&#039;),
                    &#039;requested_token_use&#039; =&gt; &#039;on_behalf_of&#039;,
                ]
            ]
        );

        $list = json_decode($res-&gt;getBody()-&gt;getContents(), true);
        return $list;
    }</code></pre>
<p>検証をサボってますが、本番環境では検証、ちゃんとやってくださいね。<br />
この内容によって、代理フローを使用し、Microsoft Graphトークンを取得するわけです。</p>
<h1>まとめ</h1>
<p>長くなってしまいましたが、以上でSSOを使用したサンプルは完了します。<br />
今後実装を検討される方は、是非参考にしてみてください！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/36/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Officeアドイン】OfficeアドインでSSOを有効化し、ログインを1回のみにする[Preview版]</title>
		<link>https://develop.kajitori.co.jp/archives/34</link>
					<comments>https://develop.kajitori.co.jp/archives/34#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Wed, 22 May 2019 11:56:46 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[SSO]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=34</guid>

					<description><![CDATA[はじめに Officeアドインを開発時に気を付けなければいけない地雷まとめの「Officeのログイン者情報を、Officeアドインで取得することはできない」にも書いたのですが、Officeアドインの安定版では現在、「Of...]]></description>
										<content:encoded><![CDATA[<h1>はじめに</h1>
<p><a href="https://develop.kajitori.co.jp/?p=22">Officeアドインを開発時に気を付けなければいけない地雷まとめ</a>の「Officeのログイン者情報を、Officeアドインで取得することはできない」にも書いたのですが、Officeアドインの安定版では現在、「Officeにログインしているユーザー」を取得することはできません。<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/ac1b3b4d-6691-8fcd-a5f9-f696395620f1.png" alt="画像" /><br />
どう考えても取れそうな「佐藤 裕」という情報が、残念ながら取得は出来ないのです。安定版では。  </p>
<p>そのため、もし「Officeアドインで、Office365のユーザー情報を取得してゴニョゴニョする」というアプリを検討していたとしても、ユーザーに再度ログインを強要する必要があります。<br />
これがクライアント版のOfficeならまだ良いのですが、Online版まで考えると本当に地獄。<br />
アプリがiframeで実装されているがゆえに、認証できず、dialogを表示する必要が出てしまいます。<br />
※これも<a href="https://develop.kajitori.co.jp/?p=22">Officeアドインを開発時に気を付けなければいけない地雷まとめ</a>の「認証が絡む場合、Office Onlineには本当に注意」を参照  </p>
<p>しかし、<b><span style="color: #ff0000">これがPreviewでは、一部できるようになります！</span></b><br />
Office系、それもAzure AD v2でのログインに限り、SSOとして、Officeのアプリにログインしている情報（正確にはアクセストークン）を取得できるようになるわけです。<br />
そのため、ユーザーはわざわざ2回目のログインを行う必要がなくなるわけですね。  </p>
<p>今回は、この「Office アドインのシングル サインオン」の概要をご紹介します。<br />
検証はまだなので、触りのみとなってしまうことをご了承ください。  </p>
<p><!-- more --></p>
<h1>概要</h1>
<p>基本的にはこちらの公式サイトをご参照ください。<br />
<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins</a><br />
キーポイントをかいつまんで解説します。  </p>
<h3>流れ</h3>
<p><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2019/05/20190522000532-300x251.png" alt="" /><br />
※引用：<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins">https://docs.microsoft.com/ja-jp/office/dev/add-ins/develop/sso-in-office-add-ins</a></p>
<p>ざっくり流れをまとめると、以下のとおりです。</p>
<ul>
<li>
<p>Officeアプリ(各開発者が開発するWebアプリ)内のjsファイルで、getAccessTokenAsync関数を実行する</p>
</li>
<li>
<p>getAccessTokenAsync内の処理で、Officeプログラム（ExcelやWordの本体）に、現在ログインしているユーザー情報を取得するよう要求する</p>
</li>
<li>
<p>Officeプログラムにログインしていない場合、ログインするようユーザーに要求するダイアログを表示する</p>
</li>
<li>
<p>Officeプログラムは、Azure AD v2エンドポイントから、現在のユーザーの<strong>アドイン トークン</strong>を取得する</p>
</li>
<li>
<p>Officeプログラムから、getAccessTokenAsync関数の処理として、Officeアプリに、アドイントークンを返却する<br />
→アドイントークン(JWT)を解析して、ログインユーザーのメールアドレスなどを取得する  </p>
</li>
</ul>
<p>ユーザー情報などを取得するのみであれば、ここまでで処理は終了なのですが、Microsoft Graphなども絡める場合、以下の処理も必要になります。  </p>
<ul>
<li>
<p>Officeアプリから、サーバーサイドにアドイントークンを送信する</p>
</li>
<li>
<p>サーバーサイドで、Microsoft Graphなどで使用できるアクセストークンを取得し、Officeアプリに返却する</p>
</li>
</ul>
<p>このような処理になります。</p>
<h3>注意点</h3>
<p>ここからは、現在分かっている注意点を記載します。やはり地雷は多し。</p>
<h4>Office Insiderに参加が必要</h4>
<p>2019/05/21現在、プレビュー版のみ対応であるため、「Office Insider」に参加する必要があります。<br />
参加した上で、プレビュー版のOfficeをインストールする必要があります。</p>
<h4>Office2013や2016には非対応</h4>
<p>これがとっても大事ですね。<br />
SSOは「IdentityAPI」という要件セットが必要で、これは<strong><span style="color: #ff0000">Office2013や2016は非対応です。</span></strong>恐らく今後も。<br />
なので、このSSOを対応させるのであれば、2013や2016を切り捨てる必要がありますね。</p>
<h4>サーバーサイドの実装が必要</h4>
<p>これは実際のサンプルコードで実装した時に解説予定なのですが、Microsoft Graphなどのトークンを活用したい場合には、サーバーサイドの実装が必要になります。<br />
通常のhtmlとjavascriptだけのアプリを開発しよう！と思っても、それはNGなんですね。vueとかReactとかも多分NG。  </p>
<p>今回取得できるトークンは、あくまでも「アドイントークン」で、Microsoft Graphのアクセストークンではありません。<br />
Microsoft Graphのアクセストークンを取得する際には、別途サーバーサイドの処理が必要、ということを覚えておいてください。  </p>
<h1>まとめ</h1>
<p>このように、どうしても限定的な範囲にはなってしまいますので、これはOfficeストアのような全体公開向けのアプリではなく、組織内でのアプリの方が向いているかもしれないですね。<br />
また、現在はプレビュー版なので、いずれにせよ正式版に採用は難しいです。  </p>
<p>それでもメリットは十分にあります。Office365前提のアプリであれば、非常に便利な機能になることは間違いないです。  </p>
<p>実装の検証と、具体的な解説は次回行う予定です。ぜひお待ちください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/34/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Officeアドインを開発時に気を付けなければいけない地雷まとめ</title>
		<link>https://develop.kajitori.co.jp/archives/22</link>
					<comments>https://develop.kajitori.co.jp/archives/22#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Mon, 15 Apr 2019 11:48:01 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[iframe]]></category>
		<category><![CDATA[PICKUP]]></category>
		<category><![CDATA[地雷]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=22</guid>

					<description><![CDATA[はじめに 「Officeアドイン」は、ざっくり言うとOffice上で動作するWebアプリケーションです。 Office2013から登場し、Office2016、Office365(クライアント版)、Office365(W...]]></description>
										<content:encoded><![CDATA[<h1>はじめに</h1>
<p>「Officeアドイン」は、ざっくり言うとOffice上で動作するWebアプリケーションです。<br />
Office2013から登場し、Office2016、Office365(クライアント版)、Office365(Web版)など、様々なOfficeで動作します。</p>
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/b6feaee7-d18b-413a-88c8-c658a536d416.png" alt="image.png" />
<p>Officeアドインは2013年頃に登場し、細々と機能追加を繰り返してきました。<br />
しかし、いかんせんノウハウと情報が少ないです。<br />
そしてこの技術を使えるエンジニアの方も非常に少ないので、なかなか広まらないのも事実です。<br />
「Officeアドイン」と日本語で検索すると、MS公式か、ほとんどが自分の発信な気がしてます・・・笑<br />
（先日、「officeアドイン」で検索したら、<strong>MS公式ページより先に、自分の過去の発信が上位に出てきました笑</strong>）</p>
<p>そしてもう一つ。<br />
このOfficeアドインは、いかんせん情報が少ないこともあり、いざやってみると、意外なところで詰まってしまう「<strong>地雷</strong>」が多いです。<br />
そこで今回は、幾多の案件を行ってきて、この地雷に立ち向かってきた自分が、「<strong>Officeアドインで気を付けなければいけないところ</strong>」についてまとめます。<br />
今後、もしOfficeアドインを案件や自社開発などで使用することを検討している方は、まずこの記事を読んでいただいて、事前に検証いただけることをオススメします。</p>
<h1>地雷まとめ</h1>
<h2>Officeの種類によって、出来ることがぜんぜん違う</h2>
<p>OfficeアドインはOffice2013から登場した、ということは上記で説明しました。<br />
そこからOffice2016、Office365(クライアント版)、Office365(Web版)と増えてくるにつれて、出来る機能も増えてきました。<br />
ですが、<strong>その出来る機能が、すべてのOfficeで使えるものではありません。</strong></p>
<p>例えば「アドインコマンド」。これはOfficeのメニューにコマンドを追加するという機能です。<br />
あらかじめアドインを設定しておけば、以降わざわざOfficeアドインを選択しなくても、メニューボタンをクリックするだけでアドインを実行できます。<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/8ee7f3f9-9fd1-1cb3-5f21-f6f432b337a9.png" alt="image.png" /></p>
<p>※引用：(<a href="https://docs.microsoft.com/ja-jp/office/dev/add-ins/design/add-in-commands">https://docs.microsoft.com/ja-jp/office/dev/add-ins/design/add-in-commands</a>)</p>
<p>しかし、この機能はOffice2013とOffice2016では動作しません（ただしOutlook2016のみOK）。<br />
こちらに<a href="https://docs.microsoft.com/en-us/office/dev/add-ins/reference/requirement-sets/add-in-commands-requirement-sets">アドイン コマンドの要件セット</a>というページがあるのですが、ここでアドインコマンドは、Office2013と2016は「N/A」や「16.0.4678.1000 Supported in Outlook only」となっています。<br />
つまり非対応ですね。<br />
最新のOfficeだけで合わせると、「これ出来なかったのか」という事故につながるので、気をつける必要があります。</p>
<p>なお、各Officeで出来ること、出来ないことは、以下のページをご参照ください。<br />
<a href="https://docs.microsoft.com/en-us/office/dev/add-ins/reference/requirement-sets/office-add-in-requirement-sets">Office Common API requirement sets</a></p>
<h2>Officeのログイン者情報を、Officeアドインで取得することはできない</h2>
<p>Office2013から、Officeにログインを行うことができます。<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/ac1b3b4d-6691-8fcd-a5f9-f696395620f1.png" alt="image.png" /></p>
<p>なのでOfficeアドインを始める際、「このログイン情報を取得しよう」と誰もが思うでしょう。このログイン情報からアクセストークンを取得し、ゴニョゴニョしよう、ということです。<br />
ですが、<strong>このOfficeの情報を、Officeアドインでは取得することが、現在は出来ません。</strong><br />
なので、ユーザーのOffice365の情報を絡めたアプリを作成する場合、ユーザーは再度、サインインページを表示する必要があります。</p>
<p>なお正確に言うと、2019/04/13現在、上記機能はプレビュー版です。<a href="https://docs.microsoft.com/en-us/office/dev/add-ins/reference/requirement-sets/identity-api-requirement-sets">Identity API</a>という名前で、現在プレビュー版ということで実装しているようです。<br />
ただし、それでもやはり「Office 2013 or later for Windows」では「N/A」になっているので、いずれにせよOffice2013と2016は切り捨てて実装しなければなりません。</p>
<h2>認証が絡む場合、Office Onlineには本当に注意</h2>
<p>クライアント版のOfficeアドインが、Office Onlineでも動作すると思っていると、確実に失敗します。<br />
なぜなら、クライアント版のOfficeアドインと、Office OnlineのOfficeアドインは、作られ方がぜんぜん違うからです。</p>
<p>クライアント版のOfficeアドインは、ざっくり言うとアプリ内で、ブラウザ（IE）を立ち上げるような形式に対し、<br />
<strong>Office OnlineのOfficeアドインは、iframeで起動します。</strong></p>
<p>もし、サードパーティ(GoogleやOffice365やGitHubなど)のアクセストークンを使用して、サードパーティの情報を使用したアプリを開発しようと考えた場合。<br />
iframeなので、つまりサードパーティ(GoogleやOffice365やGitHubなど)のログイン画面などは、パネル内で表示されないことになります。</p>
<p>一方で、クライアント版では普通に表示されます。<br />
なので、最初にクライアント版でログイン画面が表示され、よしこのままOnline版もやっちゃおう！となった場合、<br />
このことを知らないと、Office Onlineでは確実にエラーになってしまいます。</p>
<h2>回避方法もあるが、IEで以上に面倒なことになる</h2>
<p>これを回避するために、<a href="https://github.com/OfficeDev/office-js-helpers">office-js-helpers</a>という仕組みも用意されています。<br />
これは、ログイン画面をOfficeアドイン内ではなく、ダイアログを起動してログイン画面を表示する仕組みです。<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/c5ba9332-cd91-22e4-0772-1fd9914d7d15.png" alt="image.png" /><br />
上記のように、アドインとは別のダイアログを起動します。<br />
未ログインの状況であれば、そのままログイン画面が表示され、IDパスワードを入力し、ログイン完了したら、ダイアログを自動で閉じて、アドイン側にトークンを受け渡す、という仕組みです。<br />
ダイアログ内で表示するので、iframeの制約にも引っかかることなく、ログインを行うことができます。</p>
<p>これを使えばいいじゃないか、と思うかもしれませんが、今度はIEの場合で、「<strong>信頼済みサイト</strong>」の問題が出てきます。<br />
「信頼済みサイト」の問題とは、簡単にいうと「<strong>ブラウザ内のすべてのサイトを、同一のセキュリティゾーンに入れなければいけない</strong>」、という制約です。</p>
<p>例えば、Office365にログインを行ってアクセストークンを取得し、Office365の情報を取得するようなアプリを考える場合。<br />
この場合、以下のページの信頼済みサイトを揃える必要があります。<br />
「Office OnlineのSharePointサイト」（<a href="https://foobar.sharepoint.com">https://foobar.sharepoint.com</a>）<br />
「アドインの本体のサイト」（<a href="https://foobar1234567.azurewebsites.net">https://foobar1234567.azurewebsites.net</a>）<br />
「Office365ログインページ」(<a href="https://login.microsoftonline.com">https://login.microsoftonline.com</a>)<br />
<img decoding="async" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/204834/73238fc0-0c3b-7a33-6477-fef1f7725377.png" alt="image.png" /></p>
<p>「揃える」とはすなわち、<br />
「<strong>すべて信頼済みサイトに入れる</strong>」か、「<strong>すべて信頼済みサイトに入れない</strong>」の、どちらかです。<br />
これが揃っていないと、エラーが発生します。</p>
<p>そしてこれが厄介なのが、<strong>『いつの間にか、Office OnlineのSharePointサイトが追加されていることがある』</strong>ということです。<br />
Office365をいじっているときなのか、クライアント版のOfficeにアプリのURLを追加した場合なのかは分かりませんが、気付いたらこのSharePointサイトが信頼済みサイトに追加されているときがあります。<br />
そうなると、アプリが起動できなくなります。その場合には、残りのサイトを追加する必要があります。</p>
<p>そして、<strong>この一連の流れを、アプリを利用する利用者にやってもらわなければなりません。</strong><br />
会社でポリシー配布などを行っていればいいですが、そうでない場合でIEで実行を行う場合に、すべての利用者に、この信頼済みサイトの追加をやってもらわなければなりません。・・・まあ、超面倒ですね。<br />
対策としては、「IEをサポートから切り捨てる」というのも有りかもしれないですね笑</p>
<h2>Windows10のIE11で、データのやり取りが正常に動作しない場合がある</h2>
<p>上記のダイアログ形式で、アクセストークンのやり取りをするわけですが、<strong>ここまでやっても、正常に動作しないことがあります。</strong><br />
それはどうも、Windows10の、一定時期より古いIE11だと、正常に動作しないようです。<br />
かんたんに調査してみたでのすが、</p>
<ul>
<li>ダイアログ同士のデータのやり取りは、標準ではjavascriptのpostMessageで行う</li>
<li>だが、IEではpostMessageに対応していないので、localStorageの監視によりデータをやり取りしている</li>
<li>だがだが、Windows10のIE11だと、上記の「IEかどうか」という条件が正常にしておらず、うまく動かない（Office.jsのバグ？）</li>
<li>そのため結果的に、一部のWindows10のIE11だと動作しない</li>
</ul>
<p>ということで、Windows10のIE11だと、うまく動かないことがあるようです。<br />
なので、最終的な結論としては、Online版は<strong>IE非推奨</strong>にしてしまうのが一番ですね。（切実）</p>
<h1>まとめ</h1>
<p>Officeアドインはどうにも伸び悩んでいます。<br />
その背景は多々ありますが、一つはこの地雷の多さにあると、私は思っています。<br />
それでも、Officeアドインで開発する！という事になった場合、まずはこの記事を読んでいただき、どんな地雷があるかどうか、知ってもらえると嬉しいです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/22/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>【Officeアドイン】設定値を保存する2つの方法</title>
		<link>https://develop.kajitori.co.jp/archives/32</link>
					<comments>https://develop.kajitori.co.jp/archives/32#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Mon, 10 Sep 2018 11:55:48 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=32</guid>

					<description><![CDATA[■はじめに Officeアドインで、設定値を保存したい場合。 例えば、アプリの表示言語を変更・設定できるようにしたい場合、 設定値を保持することが出来れば、アプリを再起動した場合でもわざわざ再設定する必要が無くなって便利...]]></description>
										<content:encoded><![CDATA[<h2>■はじめに</h2>
<p>Officeアドインで、設定値を保存したい場合。<br />
例えば、アプリの表示言語を変更・設定できるようにしたい場合、 設定値を保持することが出来れば、アプリを再起動した場合でもわざわざ再設定する必要が無くなって便利ですね。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/1.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/1-768x339.png" alt="1" /></a></p>
<p>このような機能を実装したい場合、果たしてどのように開発すればいいでしょうか？<br />
その方法について、実は2つの方法があります。<br />
その2つの方法はどのようなものか？ その使い分けも含め、今回はその開発方法について解説します。 </p>
<h2>■解説</h2>
<p>上記でも記載した通り、Officeアドインで設定値を保存する方法は主に2つあります。<br />
それぞれメリット・デメリットあるので、それぞれ見てみましょう。 　</p>
<h3>①Officeアドインの関数&quot;Settings.set&quot;を使用する</h3>
<p>&quot;Office.context.document.settings.set&quot;というメソッドを使用することで、 Officeのドキュメントに名前/値のペアとして設定値を格納します。<br />
参考：<a href="https://msdn.microsoft.com/ja-jp/library/office/fp161063.aspx">https://msdn.microsoft.com/ja-jp/library/office/fp161063.aspx</a> </p>
<p>イメージとしては、<span class="font-red">Officeファイルに</span>名前/値のペアとして設定値を格納することになります。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/2.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/2-768x419.png" alt="2" /></a> </p>
<p>Officeファイルに格納するので、<span class="font-red">保存時とは別のOfficeファイルを開いた場合は、その設定値を読み込むことは出来ません</span>。別の値として扱われます。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/3.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/3-768x281.png" alt="3" /></a></p>
<p>一方で、<span class="font-red">別ユーザーが同じファイルを読み込んだ場合は、すでに保存済みの設定値を読み込むことができます</span>。<br />
これはファイルそのものに設定値を書き込みしているので、どのユーザーが開いても同じ設定値を利用することが出来るのです。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/4.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/4-768x253.png" alt="4" /></a></p>
<h3>②HTML5の機能&quot;LocalStorage&quot;を使用する</h3>
<p>LocalStorageは、HTML5で新たに追加された機能です。<br />
ブラウザ側に名前/値のペアとして設定値を格納する事ができます。<br />
<a href="http://wp.tech-style.info/archives/742">http://wp.tech-style.info/archives/742</a><br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/5.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/5.png" alt="5" /></a> </p>
<p>「OfficeなのにHTML5の機能を利用できるの？」と思う方もいるかもしれませんが、 OfficeアドインはれっきとしたWebアプリケーションなので、問題なくLocalStorageを使用できます。<br />
OfficeアドインでLocalStorageを使用した場合、そのアプリ内では共通して同じ値として管理されます。<br />
つまり、<span class="font-red">別のOfficeドキュメントでアプリを起動した場合でも、同じ設定値を保存・読込することが出来ます</span>。わざわざ保存し直す必要がなくて便利ですね。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/6.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/6-768x258.png" alt="6" /></a></p>
<p>しかし、別ユーザーが同じファイルを開いたとしても、同じ設定値を使用することは出来ません。 そこはご注意下さい。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/7.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/7-768x235.png" alt="7" /></a></p>
<h3>③結局どっちがいいの？</h3>
<p>ぶっちゃけ用途によります。 以下、簡単にまとめてみました。</p>
<p>※Settings.set関数<br />
・ドキュメントに設定値を格納する<br />
・同じファイルを開いた場合、どのユーザーであっても同じ設定値を保存・読み込むことができる<br />
・別のファイルを使用した場合、設定値は共有されない<br />
・Excelセルに記載された金額・人物名など、各Officeファイルに紐付いた値を保持しておきたい場合におすすめ </p>
<p>※LocalStorage<br />
・ブラウザに設定値を格納する<br />
・保存時とは別のファイルを開いた場合でも、設定値を共有することができる<br />
・別のユーザーが保存時のファイルを開いた場合、設定値は共有されない<br />
・アプリの表示言語など、実行したユーザーごとに異なる設定を保持しておきたい場合におすすめ </p>
<p>開発したいアプリの用途によって使い分けることをおすすめします。 もちろん両方使用することもアリでしょう！ あなたの開発にお役立て下さい。</p>
<h2>■おわりに（自己紹介）</h2>
<p>まだまだマイナーながら、無限の可能性を秘めた「Officeアドイン」の解説記事を少しずつ執筆しています。<br />
もっと詳しく知りたい！といったことや、この内容を解説して欲しい！ということがありましたら、 コメントなどにてお気軽にご連絡ください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/32/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>連載[3/3] いちから学ぶOfficeアドイン – Officeアドインの生きる道とは（考察）</title>
		<link>https://develop.kajitori.co.jp/archives/29</link>
					<comments>https://develop.kajitori.co.jp/archives/29#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Fri, 01 Jun 2018 11:53:26 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=29</guid>

					<description><![CDATA[はじめに その1 その2 前々回でOfficeアドインの紹介、およびメリット。 前回は、Officeアドインの現状抱える課題、デメリット。 これらについてまとめてきました。 特に前回は、ある意味致命的ともいえる「Offi...]]></description>
										<content:encoded><![CDATA[<h2>はじめに</h2>
<p><a href="https://develop.kajitori.co.jp/?p=24">その1</a><br />
<a href="https://develop.kajitori.co.jp/?p=26">その2</a><br />
前々回でOfficeアドインの紹介、およびメリット。 前回は、Officeアドインの現状抱える課題、デメリット。 これらについてまとめてきました。<br />
特に前回は、ある意味致命的ともいえる「<strong>Officeでやる必要ない</strong>」という欠点についても紹介しました。<br />
……こんな事言ってしまって、今回ひっくり返せるのかすごく心配ですが(ﾟoﾟ;笑</p>
<p>さて！連載最終回となる今回は、「<strong><font color="Red">Officeアドインの生きる道とは</font></strong>」をテーマにまとめていきたいと思います！<br />
VBAほどの柔軟さは無く、Webアプリであればブラウザで十分。 そんな中で、Officeアドインが今後広まっていくにはどうすればいいか？<br />
一筋の光となるかもしれない、そんな提起をしようと思います。 </p>
<p><strong>※今回は今までより更に、私見が大量にあります。 その点ご理解いただける方のみ続きをお読みください。</strong></p>
<h2>これがOfficeアドインの生きる道</h2>
<p>結論から言いましょう。それはズバリ、<br />
<span class="font-red font-larger font-bold">「そのアプリでしか出来ない価値を提供する」 「Officeの機能を拡張する事を徹底追及する」</font>** という事です！</p>
<p>………？(´･ω･`) なに当たり前の事を言ってるんだ……？と思う方もいるでしょう、多分笑<br />
どういう事か？今からこれを説明していきますが、その前に。<br />
前回の課題で挙げた、「Officeでやる必要ない」。<br />
これがどうして発生するのか、もう少し深堀りして考えてみます。</p>
<h2>失敗パターン</h2>
<p>前回の記事の例ですと、「家計簿サイトをアプリで実行し、内容をExcelに出力できるアプリ」。これを作ることを想定します。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/1468355556_calc.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/1468355556_calc.png" alt="1468355556_calc" /></a><br />
①すでに完成されている家計簿サイトをアプリで呼び出して、<br />
②1ヶ月に1回ぐらいの頻度で内容を出力する。こんなフローになります。</p>
<p>……もうお分かりだと思いますが、<strong>Officeアドインである必要がまったくありません。</strong><br />
①は通常のWebブラウザ、またはスマホあたりで登録すればいいし、<br />
②もやっぱり、WebアプリケーションでExcelファイルを作成する仕組みの方が、よっぽど柔軟性があるはず。<br />
改めてこういう風にまとめると、Officeアドインの必要が無いことが良く分かると思います。</p>
<p>ただ現実の話、今完成されているサービス・アプリを見て、<br />
「家計簿→Excel→Officeアドイン…… <strong>あっ！これOfficeアドインに向いてそう！！</strong>」と思い、開発に飛び付いてしまうと、きっと失敗します。<br />
何故ならば、そのサービスは大抵がすでに完成されていて、Officeアドインである必要がないから。<br />
開発をする前に、本当にOfficeアドインでやる必要あるか？という点を、改めて改めて改めて考慮してみてください。 </p>
<h2>改めて、Officeアドインの生きる道</h2>
<p>以上のように、失敗パターンをまとめてみました。<br />
それを踏まえた上で、もう一度Officeアドインの生きる道である <strong>「そのアプリでしか出来ない価値を提供する」「Officeの機能を拡張する事を徹底追及する」</strong> を見てみましょう。 </p>
<h3>普段のOffice業務を中心軸に</h3>
<p>失敗パターンが「普段のWeb業務をOfficeでやろう」だとするならば、その逆です。<br />
<span class="font-red font-large">「普段のOffice業務をアプリで補助する」</font><strong><br />
</strong>これが唯一の、当たり前とも思える、Officeアドインを開発する上で唯一の最大の鍵だと思います。** </p>
<p>皆さんの普段のOffice業務は何でしょうか？ プレゼン資料作成？設計書作成？勤怠管理？経費精算？<br />
色んな業務があるはずですが、その普段やっている業務を補助するためのアプリを作ることが超大切。</p>
<p>×Officeアドインの為にOfficeを開かせよう（絶対めんどくなる）<br />
<strong>○OfficeをサポートするOfficeアドインを使わせよう</strong><br />
この考え方を持ち続けて設計・開発すること。<br />
そして、開発者がこれを常に意識して、開発したアプリがOfficeストアに公開され続ければ、皆さんの普段の業務を網羅する、「なんか便利なものがあるらしいぞ」と広がっていくことになるでしょう。<br />
Microsoftもきっと、キラーアプリを待ち望んでいるんじゃないかと思います。<br />
どんな人、どんな業務でも使える、Microsoftきってのオススメアプリを！ そんなアプリを、あなたの手で開発してみましょう。 　</p>
<h2>まとめ</h2>
<p>あくまでもOfficeアドインは、Officeのアプリなんです。Webアプリケーションとは基本はOffice。<br />
Officeを使った業務を活かすアプリ、これを作れば、きっとOfficeアドインも、作ったあなたも、知名度が変わってくるでしょう。<br />
貴重なビジネスチャンスを作っていけるはずです！ </p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/29/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>連載[2/3] いちから学ぶOfficeアドイン – Officeアドインの問題点とは</title>
		<link>https://develop.kajitori.co.jp/archives/26</link>
					<comments>https://develop.kajitori.co.jp/archives/26#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Tue, 01 May 2018 11:51:03 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[いちから学ぶ]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=26</guid>

					<description><![CDATA[はじめに 前回の記事で、Officeアドインとは何か、そしてOfficeアドインのメリットについて説明しました。 それだけのメリット、そして「Office」という非常に知名度のあるベースがありながら、 現状ではOffic...]]></description>
										<content:encoded><![CDATA[<h2>はじめに</h2>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/argument-238529_1280.jpg"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/argument-238529_1280-768x512.jpg" alt="argument-238529_1280" /></a><br />
<a href="https://develop.kajitori.co.jp/?p=24">前回の記事</a>で、Officeアドインとは何か、そしてOfficeアドインのメリットについて説明しました。<br />
それだけのメリット、そして「Office」という非常に知名度のあるベースがありながら、<br />
<span class="font-bold font-red">現状ではOfficeアドインが「成功している」とはそこまで言えません。</font>**</p>
<p><strong>なぜOfficeアドインがそこまで広がらないのか？</strong><br />
連載2回目となる今回は、Officeアドインが現状抱える問題点、デメリットについてまとめていきます。<br />
※あくまでも個人の見解です！Microsoft様およびOfficeを中傷する意図はありませんのでご了承下さい</p>
<h2>Officeアドインのデメリット</h2>
<h3>知名度が低い</h3>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/6e43c72587fef544893841f0355e9305.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/6e43c72587fef544893841f0355e9305-300x224.png" alt="存在を知らず" /></a><br />
まず、<strong>「Officeアドインというものがあるよ」「Office上でアプリが動くんだよ」</strong>ということを知っている人は果たしてどれだけいるのでしょうか？<br />
「Office」の知名度は抜群でも、「Officeアドイン（ないしは「Officeで動くアプリ」ということだけでも）」の知名度はかなり低いでしょう。<br />
「Officeアドイン」というものがあることを知らなければ、ストアに多数アプリがあったとしても、使うことはきっと無いはずです（知らない訳だし）。</p>
<h3>ストア掲載のアプリが少ない</h3>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/b72fedd2c957c1a371fa6e41d573acdb.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/b72fedd2c957c1a371fa6e41d573acdb-300x261.png" alt="170件" /></a><br />
Officeアドインが動くようになったのは、Office2013から。<br />
詳しく開始日までは分かりませんが、単純計算で現在（2016年7月）から3年が経過しています。<br />
しかし、現在Officeストアに掲載されているアプリ数は、決して多くありません。<br />
2016年7月1日現在、Excel用アプリケーションは<strong>263</strong>件、Outlook用アプリケーションは<strong>170</strong>件でした。そして多くが海外製です。<br />
せっかくOfficeアドインの存在を知っても、欲しいアプリがなかなか無い…というのが実情です。<br />
（書いていて、Outlook用アプリケーションが170件しかないことに(゜o゜;でした）</p>
<h3>【開発者向け】出来ることが少ない</h3>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/vbavsofficeaddin.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/07/vbavsofficeaddin-300x232.png" alt="vbavsofficeaddin" /></a><br />
VBAの感覚でOfficeアドインを開発しようとすると、ほぼ確実に失敗します。<br />
何故なら、<span class="font-red font-bold">Officeアドインで出来ることはかなり限られているからです。</font><strong><br />
最近はバージョンアップにより、可能なことも大分増えてきたようではありますが、特に初期の頃はかなり少なかったです。<br />
例えばExcelで言うと、「セルB4に文字を書き込む」「指定のファイルパスのファイルを開く」といった、</strong>VBAでは当たり前のように出来ていたことが出来ませんでした。**<br />
こうなってしまう原因で考えられるのは、Officeアドインが「Office365でも動く必要がある」ということだと考えています。<br />
Office365で動かす以上、セキュリティはクライアント版より強固でなければいけません。<br />
Office365とOffice2013と両対応するために、出来る機能が少ないのでは…と推察しています。</p>
<p>今では実装可能になったり、工夫次第で回避できるようになってはいますが、VBAの感覚で開発を始め、出来ることの少なさにぶち当たり断念する……といった方も多いとか。</p>
<h3>わざわざアプリを使用する必要がない</h3>
<p>これが自分の思う、<strong><font color="Red">最大の、そして致命的なデメリットです。</font></strong><br />
もちろん、すべてのアプリがそうとは思いません。ただ、わざわざOfficeを立ち上げて、アプリを起動する…といった流れをするだけの価値があるアプリ提供を、なかなかすることが出来ていないんじゃないか？と思います。</p>
<p>具体的に話しましょう。例えば、家計簿サイトのような便利なWebサイトを、Office上で実行できる。たまに、Excelの表に出力する。そんなアプリがあったとします。<br />
Officeを立ち上げて、アプリを立ち上げて……って工程をやるうちに、ユーザーのあなたはきっと気付くはずです。<br />
<strong><font color="Red">「これOfficeのアプリ使う必要無くね？」</font></strong>と。<br />
端的に言えば、ブラウザで十分なことが非常に多いです。<br />
ブラウザのWebアプリの方が、画面幅は圧倒的に広いですし、リンク先や機能の制限を受けることもありません。<br />
Office（この場合はExcel）と連携できるメリットはありますが、基本的にOfficeと連携する回数は少ないので、Web上で「必要なときだけ」Officeファイルに出力とかすれば済んじゃうんです。<br />
なので、<span class="font-red font-large">既存のWebアプリをOfficeアプリにそのまま入れ込もうとすると、確実に罠に陥ることになります。</font><strong><br />
</strong>「Officeの必要性」<strong>という罠に。<br />
</strong>「Office用のアプリ」なのに「Office使う必要ない」**という、ある意味致命的な矛盾を抱えているのが、多くのOfficeアドインの現状でしょうか。<br />
Officeアドイン独自の価値を見出すものをなかなか生み出せていない、という風に見解しています。</p>
<h2>どうすりゃいいんだ・・・</h2>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/cry-1316458_1280.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/cry-1316458_1280-300x271.png" alt="cry-1316458_1280" /></a><br />
以上、Officeアドインが現在抱える問題点をまとめてみました。<br />
本当はまだ何点かあって、例えば「Office2010だと動かない」「Webサーバー立てないと使えないから手軽じゃない」とか色々あるのですが、今回はこのあたりで。 </p>
<p>さて、今回まとめたように、Officeアドインにはまだまだ発展途上です。<br />
それでは、これからOfficeアドインが発展していくには果たしてどうすればいいのでしょうか？ 上記のような課題を抱えるOfficeアドインで、開発者はこれからどんなアプリを開発していけばいいのでしょうか？<br />
次回はこの連載のシメ、「<strong>Officeアドインの生きる道とは</strong>」になります。ご期待ください！ </p>
<h2>Next</h2>
<p><a href="https://develop.kajitori.co.jp/?p=29">いちから学ぶOfficeアドイン – Officeアドインの生きる道とは（考察）</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/26/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>連載[1/3] いちから学ぶOfficeアドイン &#8211; Officeアドインとは？</title>
		<link>https://develop.kajitori.co.jp/archives/24</link>
					<comments>https://develop.kajitori.co.jp/archives/24#respond</comments>
		
		<dc:creator><![CDATA[hsatou]]></dc:creator>
		<pubDate>Sun, 01 Apr 2018 11:50:21 +0000</pubDate>
				<category><![CDATA[Officeアドイン]]></category>
		<category><![CDATA[PICKUP]]></category>
		<category><![CDATA[いちから学ぶ]]></category>
		<guid isPermaLink="false">https://develop.kajitori.co.jp/?p=24</guid>

					<description><![CDATA[はじめに 2016/04/01、Microsoftで「Build 2016」が開催されました。 https://build.microsoft.com/ そのBuild2016で、僕が以前から携わっている「Officeア...]]></description>
										<content:encoded><![CDATA[<h2>はじめに</h2>
<p>2016/04/01、Microsoftで「Build 2016」が開催されました。<br />
<a href="https://build.microsoft.com/">https://build.microsoft.com/</a></p>
<p>そのBuild2016で、僕が以前から携わっている「Officeアドイン」についても大きな発表がありました！<br />
おすすめの動画はこれらです。<br />
<a href="https://channel9.msdn.com/Events/Build/2016/P554">https://channel9.msdn.com/Events/Build/2016/P554</a><br />
<a href="https://channel9.msdn.com/Events/Build/2016/P561">https://channel9.msdn.com/Events/Build/2016/P561</a></p>
<p>Officeアドインの大幅な機能拡充により、今後利用ユーザー、開発ユーザーともに増えていくことが予想されます！（増えてほしいです）<br />
しかし、Officeアドインの内容をまとめた記事や情報、そしてアプリそのものもかなり少なく。<br />
興味を持った方が利用、もしくは開発しようにも、断念しかねないというのが現状です。</p>
<p>そこで今回は、Officeアドインのついての概要と、Officeアドインのメリット、そして現在抱えている課題とその解決策を、連載としてまとめていこうと思います。<br />
連載第1回は、<strong>「そもそもOfficeアドインとは何か」</strong>、そして<strong>「Officeアドインのメリット」</strong>についてまとめていきます。 </p>
<h2>Officeアドインとは？</h2>
<p>「Office アドイン（Office Add-ins、Office用アプリ、office.js）」は、「Microsoft Office 2013（以下Office）」以降で動作する、Officeの機能を拡張するWebアプリケーションです。<br />
Office上で各アプリが起動し、ドキュメントと連携して情報をやり取りしたり、種類によってはメールを送信する等を行うことも出来ます。 </p>
<p>Officeアドインには何個か種類があります。例えば、 </p>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/wikipedia.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/wikipedia-768x491.png" alt="wikipedia" /></a><br />
Officeの右側でアプリが起動する「作業ウインドウ」形式。Word・Excel・PowerPoint等で動作します。 </p>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/BingMaps.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/BingMaps-768x523.png" alt="BingMaps" /></a><br />
Excel上のシート右側でアプリが起動する「コンテンツ」形式。 Excelで動作します。 </p>
<p><a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/Outlook.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/Outlook-768x381.png" alt="Outlook" /></a><br />
Outlookでアプリが起動する「メール」形式。見た目上は「作業ウインドウ」形式と変わりませんが、内部構造は若干異なります。<br />
また、Outlookでは上記の画像のように、メールの本文上でアプリを開くことも出来ます。 </p>
<p>このように、Office上でアプリを動作させることが出来るのが「Officeアドイン」の特徴です。 </p>
<h2>Officeアドインのメリット</h2>
<p>Officeアドインを使用することによって、どのようなメリットがあるか？<br />
独自の見解になりますが、これから解説していきます。<br />
一般ユーザー向けと、開発者向けの2つのアプローチから解説します。</p>
<h3>【一般ユーザー向け】アプリケーションをWeb上から簡単に導入できる</h3>
<p>従来のOffice系プログラミングであるVBA・VSTOで、プログラムを追加したい場合、通常はWebブラウザを別途起動して、ファイルをダウンロード→実行、ということが多いと思います。<br />
（他に方法あるかもしれませんが・・・あまり詳しくないです笑）<br />
管理は大変ですし、ファイルごとにプログラムを実行しようと思ったらけっこう面倒です。</p>
<p>ですがOfficeアドインの場合、<strong>Office上のリボンにある「Officeアドイン」ボタンを押下することで、Officeストアからアプリを入手する事ができます</strong><br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/Excel.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/Excel-768x523.png" alt="Excel" /></a><br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/officestor.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/officestor-768x520.png" alt="officestor" /></a><br />
非常に手軽ですし、ボタンひとつで複数のファイルにアプリを挿入する事ができます。<br />
「手軽さ」「誰でも実行できる」これは本当に便利です！</p>
<h3>【一般ユーザー向け】Office365でも使用可能</h3>
<p>Microsoftのクラウドサービスとして、『Office365』というものがあります。<br />
Microsoftが全面に打ち出している（らしい）このOffice365では、「Word Web Apps」や「Excel Web Apps」など、ブラウザ上でOfficeが起動できるのですが、<br />
<strong>このOffice365でも、アプリが起動できます！</strong><br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/online.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/online-768x372.png" alt="online" /></a><br />
クライアント版のOfficeを持っていない人でもアプリを実行できるので、アプリの敷居は低いと言えるでしょう。</p>
<h3>【開発者向け】Webアプリケーションなので、HTML・CSS・Javascriptなど、汎用的な技術をそのまま流用できる</h3>
<p>それまでのOffice系プログラミングであるVBA・VSTO等では、けっこうとっつきにくい開発言語や、言語が限定されていました。<br />
VBAでは「Visual Basic for Applications」という比較的昔の言語、「VSTO」は「Visual Studio Tools for Office」という、限定された言語での開発となってしまいます。<br />
しかし、Officeアドインは「office.js」というJavaScriptファイルを使用したWebアプリケーションです。Webアプリケーションなので、ナウでモダンでメジャーな言語・技術をいっぱい使用できます！<br />
PHP、C#、RoR、node.js、Python、GO・・・ Typescript、coffeescript、Jquery・・・<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/lang.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/lang-300x144.png" alt="lang" /></a><br />
情報が無数にある技術を使用できるので、非常に手軽に開発することができます！</p>
<h3>Officeアドイン最高！！・・・と言いたいけれど</h3>
<p>以上が、Officeアドインのメリットになります。<br />
こうして書くと、すごく優秀なOfficeのパートナーになりそうですね！<br />
これだけ優れてならば、きっとアプリが超充実！技術界隈も大盛り上がり！！<br />
・・・となっている、そう思う方もいるかもしれませんが、<br />
<strong>現実は、そう甘くはありません。</strong><br />
冒頭にも書いたのですが、このOfficeアドイン界隈は、 残念ながら2016年現在、<strong><font color="Red">そこまで栄えているとは言えない現状</font></strong>にあります。<br />
<a href="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/cry-1316458_1280.png"><img decoding="async" src="https://develop.kajitori.co.jp/wp-content/uploads/2016/06/cry-1316458_1280-300x271.png" alt="cry-1316458_1280" /></a></p>
<p><strong>「Microsoft」の「Office」という強力な2大双璧を持ちながら、なぜこのような現状なのか？</strong><br />
次回は、<strong>「Officeアドインの抱える欠点とは」</strong>ということをテーマとして、記事を書いていきたいと思います。</p>
<h2>Next</h2>
<p><a href="https://develop.kajitori.co.jp/?p=26">いちから学ぶOfficeアドイン – Officeアドインの問題点とは</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://develop.kajitori.co.jp/archives/24/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
