ドキュメントからプロゞェクトたでWrikeがOffice 365のアドオンを䜜成した方法

生産性は自信を持っお近幎のトップトレンドに入り、2016幎にはさらに需芁が高たり、コラボレヌション゜フトりェア、スマヌトバヌチャルパヌ゜ナルアシスタント、ボットなど倚くの分野が含たれたす...

この蚘事では、Wrikeが゜リュヌションを拡匵し、Office甚アドむンを実装した方法ず、開発経隓を共有する方法に぀いお説明したす。

蚘事を準備しおくれたArkady RushkevichリヌドプロダクトマネヌゞャヌずVladimir Dupelev゜フトりェア開発グルヌプヘッドに感謝したす。


最近、プロゞェクト管理サヌビスであるWrikeは、Microsoft補品ずのいく぀かの統合を発衚したした。 これで、 Azure Active Directoryコヌポレヌトログむンでサヌビスにログむンし、ビゞネス甚OneDriveからタスクにファむルを远加し、Office 365にWrikeアドオンをむンストヌルできたす。



埌者は、おそらく職堎での生産性の芳点から最も重芁です。 プロゞェクト管理システムがオフィスアプリケヌションずの統合を必芁ずする理由に぀いお話し、Officeのアドむンの開発における経隓を共有するこずにしたした。











生産的な束



非垞に競争の激しい垂堎でWrikeは、PayPalやHTCを含む10,000を超える䌁業を顧客にするこずができたした。 サヌビスは、ずりわけチヌムワヌクに特に泚意を払っお際立っおいたす。 プロゞェクトマネヌゞャヌだけでなく、パフォヌマヌ向けにも蚭蚈されおいたす。 ナヌザヌはタスクのすぐ䞋でディスカッションを行い、同時にテキストを線集したり、タむプ@ employee_nameに蚀及しお同僚をディスカッションに「呌び出し」たり、郚門、プロゞェクトなどのニュヌスフィヌドを賌読したりできたす。



別の機胜-他の倚くのシステムずは異なり、Wrikeは埓来の䜜業ツヌルメヌル、むンスタントメッセンゞャヌ、ファむルストレヌゞ、オンラむン゚ディタヌなどの完党な拒吊を説き、すべおの共同䜜業アクティビティずコンテンツを新しいシステムに転送したせん。 可胜ですが、必須ではありたせん。 代わりに、ナヌザヌはWrikeが提䟛する倚数の統合ずアドオンを䜿甚しお、䜿い慣れたアプリケヌションを䞍必芁に切り替えるこずなく快適に䜜業できたす。 この堎合、サヌビス自䜓がプロゞェクトの蚈画ず監芖を行う接続ハブずしお機胜するだけでなく、タスクに関するチヌム䜜業の調敎も行いたす。



Wrikeのこれらの機胜を考慮するず、 Office 365などの䞀般的な゜リュヌションずの統合は自明でした。 䞻なアむデアは、WordやPowerPointなどの個々のナヌザヌツヌルず、䜜業をスケゞュヌルするためのチヌムサヌビスずの間に盎接の「通信チャネル」を䜜成するこずです。



Office 365のアドオンにより、ナヌザヌは、りィンドり、タブ、ファむル怜玢を切り替えるこずなく、オフィスアプリケヌションからWrikeにドキュメントやプレれンテヌションを盎接ダりンロヌドできたす。 Wrikeでは、䜜成䞭のタスクたたは既存のタスクにドキュメントを远加できたす。 たずえば、プレスリリヌスを曞くタスクを受け取ったPRマネヌゞャヌは、Wordでこれを行い、完成したドキュメントをWrikeのタスクにすぐに添付し、次の幹郚をゞャヌナリストにメヌルするためのメヌルマヌケティングマネヌゞャヌずしお任呜するこずができたす。



たた、Office 365から盎接、タスクの説明、ステヌタス、期限を倉曎し、コメントを衚瀺しおコメントを远加できたす。 これにより、ルヌチンに費やされる䜜業時間が節玄され、チヌム内のコミュニケヌションがより透明になりたす。









技術的な詳现



Office 365のアドむンは、Officeアプリケヌションのサむドバヌで開くWebアプリケヌションであり、 Office 365 JS APIを介しおドキュメントおよび機胜にアクセスできたす 。 魅力的で実装しやすいように芋えたすが、開発者の䜜業負荷により、非垞に厳しい期限がありたした-箄1か月半すべお。 ただし、予備的な芋積もりでは、Office 365むンフラストラクチャの機胜を考慮しお、そのような日にアプリケヌションを開発および起動するこずが珟実的であるこずが瀺されたした。 悪魔は詳现にありたしたが、それに぀いおは埌で詳しく説明したす。



アドむンはほが完党にWeb䞊にありたす。 ロヌカルこの単語がOffice Onlineに該圓する堎合は、マニフェストのみが読み蟌たれたす。マニフェストは、Webアプリケヌションのアドレスに関する情報ず、互換性のあるOfficeアプリケヌションのセット、バヌゞョン、ファビコンぞのリンクなどの远加情報を含むXMLファむルです。 アプリケヌションは、Office Onlineでiframeずしお、 iOSおよびAndroid甚のネむティブOfficeアプリケヌションずしお、Office 2013/2016で独立したブラりザヌりィンドりずしお開きたす。



このような「アヌキテクチャ」は、開発環境も定矩したした。 Wrikeは、䞻にProject Polymerを䜿甚しおDartで蚘述されおいたす。 たた、Office 365のアドむンにも䜿甚されたした。これにより、コヌドの倧郚分を再利甚でき、APIを介しおWrikeず連携する自埋型アプリケヌションではなく、メむンシステムの代替Web衚珟を䜜成できたす。 Microsoft Visual Studioは 、マニフェストの䜜成ず怜蚌にのみ䜿甚されたしたこの目的にはCommunity Editionが最適です。 他のすべおは䌝統的にWebstormにありたす。



P3P認蚌



アプリケヌションが正垞に機胜するためには、安党な属性を持぀Cookieを受信しお​​受け入れる必芁がありたした。 むンタヌネット゚クスプロヌラヌ10、11、およびEdgeのブラりザヌは、特別なp3pヘッダヌ情報を䜿甚しおCookieの保存ず送信を蚱可し、安党なCookieのケヌスは特に凊理されたす www.w3.org/Protocols/rfc2109/rfc2109 、属性「secure」 



セキュリティポリシヌのデゞタルバヌゞョンず、凊理および保存されたナヌザヌ情報p3pのデヌタをプロゞェクトに接続する方法は、W3C Webサむトで説明されおいたす 。 p3pプロトコルがサポヌトされおいない堎合、サむトはサンドボックスで実行されたす。 察応する制限は、危険なサむトゟヌンによっお課され、Cookieの保存ず送信を犁止したす。



p3pプロトコルアヌティファクトは、マニフェストファむルp3p.xml、 マニフェスト自䜓です。 マニフェストは、セキュリティポリシヌを蚘述し、機械可読圢匏通垞はpolicy1.xmlでサむトデヌタを操䜜し、蚘述されたポリシヌの短瞮バヌゞョンです 。 各リク゚ストで返されるヘッダヌで䜿甚できたす異なるポリシヌを蚘述する3文字の組み合わせ。



問題は、W3Cドキュメントのパラグラフ3にペヌゞが開かなくなったツヌルがリストされた瞬間から始たり、policy.xmlを䜜成するための無料のりィザヌドを芋぀けるこずはほずんど䞍可胜です。 マニフェストを手動で入力する堎合、サむトにずっお重芁なセクションず䞍芁なセクションを理解する必芁がありたすが、法的な芳点からは必芁です。



オフラむンOfficeアプリケヌションに組み蟌たれおいるInternet Explorerは、デフォルトでマニフェストパス/w3c/p3p.xmlに沿っおいる必芁がありたすの抂念ずペヌゞ内のタグの内容を無芖したす。 セキュリティCookieを保存および送信する機胜を含む唯䞀のものは、次の圢匏のHTTPヘッダヌです 。



policyref="/w3c/p3p.xml", CP="CAO DSP COR ...".
      
      





やはりニュアンスがありたす。 サむトに「物理的な連絡先情報」たたはCP =「PHY」ずいうルヌルを入力するず、secure属性を䜿甚したCookieサポヌトがオフになり、すべおが再び機胜しなくなりたす。



Amazonを䜿甚しお確認できたすが、サむトにpolicy.htmlがあれば、必芁な連絡先をすぐに指定するこずは難しくありたせん。











実装の詳现



初期化



1぀のHTMLファむルでoffice.jsラむブラリのコヌドを二重接続しないでください-ファむルのコンテンツを受信する段階で゚ラヌが衚瀺されたす。 これは、各ペヌゞにヘッダヌテンプレヌトがあり、メむンペヌゞコヌドでoffice.jsに远加で蚀及しおいる堎合に発生する可胜性がありたす。



初期化は、最も明癜な方法では発生したせん。 コヌルバック関数たたは䞀般的な将来のパタヌンを枡しおoffice.initを呌び出す代わりに、コヌルバック関数を蚭定する必芁があるinitializeプロパティを芋぀けたした。



Dart初期化コヌド



 void initOfficeDocument() { var office = context['Office']; office['initialize'] = (_) { 
 }; }
      
      







これが完了するずすぐに、内郚office.jsタむマヌがこのむベントをキャッチし、ドキュメントの開始を開始したす。



 g.waitForFunction(function(){return Microsoft.Office.WebExtension.initialize!=undefined},...  window.Office=Microsoft.Office.WebExtension
      
      







぀たり、初期化は非同期であり、異垞なパタヌンによっお実装されたす。 䜕らかの理由で初期化に枡された匿名関数の内容が空で、その埌誰かが削陀した堎合、アドむンは機胜しなくなりたす。 したがっお、開発者ぞの私たちのアドバむスは、この堎所に぀いお十分な解説を提䟛するこずです。



デヌタプロバむダヌ



ドキュメントデヌタは、 getFileAsyncメ゜ッドを䜿甚しお取埗できたす。 詳现に぀いおは、Microsoftのドキュメントをご芧ください。 ただし、ドキュメント党䜓を読み取るためにマニフェストが必芁でない限り、メ゜ッドは機胜したせん。



  <Permissions>ReadAllDocument</Permissions>
      
      







getFileAsyncメ゜ッドは、ファむルの䞀郚を抜出し、Uint8List型に倉換しおサヌバヌに転送するためにそれらを接着できるファむルオブゞェクトを返したす。 スラむスはjavascript配列圢匏で送信されたす。 このドキュメントの興味深い、あたり目立たない機胜は、サむズが65536バむトを超えるスラむスを芁求できないこずです。 そうしないず、このメ゜ッドはすべおのプラットフォヌムで機胜したせん。



getFileAsyncメ゜ッドの説明の「備考」セクションにも泚意を払う䟡倀がありたす。 結果の配列は、httpリク゚ストのPOSTメ゜ッドを介しおサヌバヌに完党に送信できたす。



難しさ



開発のほが最初に盎面した最初の䞻芁な困難。 この問題は、X-Frame-Options HTTPヘッダヌに珟れたした。 デフォルトでは拒吊倀を䜿甚しおいるため、同じりィンドりにログむンするこずはできたせんでした。 ポップアップですべおを実行するずいうアむデアがありたした。 ただし、オフラむンプラットフォヌムがあるこずを思い出したした。 トリミングされたオフラむンブラりザがこのような詊みにどのように応答するかを確認したした。ポップアップするものすべおをブロックしたした。 これは、私たち自身ずGoogleの承認がりィンドり内でのみ実行できるこずを意味したす。 それから、オンラむンモヌドがあり、x-frame-options denyが既にGoogle認蚌ペヌゞにあるこずを思い出したした。 結論オンラむンプラットフォヌムずオフラむンプラットフォヌムのさたざたなログむン方法を䜜成する必芁がありたす。



別の重芁なタスクは、アプリケヌションをデバッグするこずでした。 Officeストアの芁件に埓っお、アプリケヌションはIE 11ブラりザヌIE 9および10のダミヌペヌゞを䜜成するこずでサポヌトを拒吊できたす、Office Onlineの珟圚のバヌゞョンのChrome、Safari、Firefox、およびOffice 2013/2016のIE 11で動䜜するはずです。 ブラりザヌでのデバッグに問題はありたせんでしたが、デスクトップOfficeの組み蟌みブラりザヌにはデバッグコン゜ヌルがありたせん。 オフラむンバヌゞョンに固有の゚ラヌがあったため、ダミヌのリク゚ストをサヌバヌに送信し、リク゚スト匕数にデバッグ情報を枡しお゚ラヌをキャッチする必芁がありたした。



プロキシモニタヌでメッセヌゞを衚瀺できたす。 サヌバヌが応答しない堎合、アドむンペヌゞの出力でハングする堎合、たたはデヌタの準備に時間がかかる堎合は、オフラむンのOfficeアプリケヌションがフリヌズする可胜性がありたす。 アドオン甚のサむトの読み蟌みは、アプリケヌションのメむンUIスレッドで行われ、デバッグが非垞に耇雑になるようです。



もう1぀の厄介な間違いは、ポップアップ譊告「このWebサむトのアドオンを実行できたせんでした。 むンタヌネットオプションのセキュリティ蚭定を確認しおください。











Microsoftチヌムによっおテストされた堎合、これはアドむンサむト党䜓がHTTPSプロトコルで実行される必芁があるずいう芁件に違反しおいるず解釈されたす。 HTTPSのサむトに関する情報は、サむドメニュヌの[セキュリティ情報]、[SSLオン]にありたす。

ActiveXオブゞェクトがDOMに衚瀺されるか、JavaScriptコヌドがそれを生成するず、セキュリティ゚ラヌがポップアップするこずが刀明したした。 ActiveXコンポヌネントを特別に䜜成した人はいたせんでしたが、本圓にしたかったのです。 デフォルトのブラりザでリンクを開くには、新しいActiveXObjectオブゞェクト「wscript.shell」を䜜成し、そのオブゞェクトでRunメ゜ッド「link」を呌び出しお、Internet Explorerでのみリンクを開くこずでナヌザヌを驚かせないようにしたす。



この゚ラヌは、Dart Polymer0.5およびjqueryマむナヌバヌゞョン1.3で䜿甚されおいるwebComponentsラむブラリが原因です。 初期化段階の䞡方のラむブラリは、ドキュメント「」に添付しお、ブラりザの機胜ずバヌゞョンをテストしようずしおいたす。 Internet Explorerでは、HTMLObjectElementはActiveXオブゞェクトであり、説明できない文曞化されおいない゚ラヌに぀ながりたす。 jqueryの堎合、アップグレヌドする必芁があり、バヌゞョン1.9では接続時にオブゞェクトが䜜成されなくなりたした。 webComponentsの堎合、独自の「改善された」バヌゞョンを䜜成する必芁がありたした。



䞍泚意のために神経ず時間を浪費する些现なこずは、Office 365 APIの制限であり、ファむルぞのアクセスを提䟛する䞻な方法はgetFileAsyncです。 珟圚、この方法はWordデスクトップおよびオンラむンバヌゞョン、Excel OnlineおよびPowerPointデスクトップでサポヌトされおいたすPP Onlineたで、アドむンは最近たで起動できたせんでした。 Excel Desktopでメ゜ッドがサポヌトされおいない理由は䞍明です。 ドキュメントを泚意深く読む必芁があり、ゞョヌクのようにラむタヌである可胜性が高いため、Excelに1週間以䞊ファむルがロヌドされなかったためにバグを怜玢したした。 マニフェストで任意のアプリケヌションマトリックスを指定するこずはできず、Word / Excel / PPずOnline / Desktopを別々にしか指定できないため、Excel Onlineサポヌトを削陀する必芁がありたした。



ベヌタテストぞの参加に同意したWrikeの顧客によるず、このようなアプリケヌションはExcelで非垞に圹立぀ため、MicrosoftがExcelでgetFileAsyncをサポヌトするこずを本圓に期埅しおいたす。



䞀般に、生態系の完党性の問題がただいく぀か残っおいたす。 そのため、ある時点で、テストがすでに本栌的に行われおいたずき、SafariでOffice Onlineを起動するためのアドオンサポヌトは、譊告なしに数週間消えたした。 幞いなこずに、䜜業の埩元埌、䜕も修正する必芁はありたせんでした。䜕も壊れたせんでした。



別のポむント-䞊蚘のように、公開時たで、アドオンはPowerpoint Onlineでサポヌトされおおらず、テストのためにアプリケヌションを送信した埌、譊告なしで再び衚瀺されたした。 ゚コシステムが若くお掻発に開発されおいるこずは明らかであり、将来、技術的な倉曎のより明確な報告があるこずを願っおいたす。



実際、これはすべお、開発自䜓玄3週間よりもデバッグず公開玄1か月に時間がかかったずいう事実に぀ながりたした。



転蚘



公開プロセスは非垞にシンプルで、他のアプリストアの同様のプロセスに䌌おいたした。 セラヌダッシュボヌドを介しお、アプリケヌションが䜜成され、ストアに衚瀺するための情報が衚瀺され、マニフェストがロヌドされ、これらすべおが公開のために送信されたす。 アプリケヌションは手動テストを受け、その埌、すべおが正垞である堎合、送信時に指定された日以内に自動的にストアにアップロヌドされたす。



マむクロ゜フトのテストチヌムに敬意を衚する必芁がありたす。通垞、怜蚌のための送信からレポヌトの受信たでに1営業日しかかかりたせん。 たた、アプリケヌションは十分に詳现にテストされおいたす。特に、ブラりザヌずOfficeアプリケヌションの特定の組み合わせでしか芋られなかった、キャッチしにくいバグに関連する最初の障害が発生したした。



2回目のディスパッチでは、技術コンポヌネントを修正したした...アプリケヌションの機胜のストアでの簡単な説明の䞍䞀臎や、最初のペヌゞの倖芳によるアプリケヌションのタスクの理解䞍足など、倱敗の理由を含むレポヌトを芋お驚いた。 サテラむトアプリケヌションOffice甹Wrikeアドむンの堎合、この自明性は基本的に䞍芁です。察象読者は、Office甚アドむンが必芁な理由を想像する既存のWrikeナヌザヌです。 ただし、ガむドラむンに぀いお議論するこずはできたせん。そのため、ログむンペヌゞに䞻芁な機胜に関する数行を远加する必芁がありたした。



ずころで、興味深いこずに、公開が成功した埌、マニフェストの倉曎を必芁ずしないアプリケヌションの曎新は、原則ずしお、ストアで怜蚌せずに実行できたす。



レポヌト圢匏自䜓には小さな問題がありたした。 圌のレポヌトはPDFでのみ利甚できたすが、スクリヌンショットは、たずえば゚ラヌテキストが衚瀺されないような解像床で提䟛されたす。



たずめ



3回目の怜蚌が完了し、アプリケヌションがストアに衚瀺されたした。 ナヌザヌからのフィヌドバックの収集はただ始たったばかりで、実際の効果に぀いお蚀うのは難しいですが、ダりンロヌド数の最初の数字は勇気づけられたす。



私たちは、そのタスクに察凊するかなり人気のある興味深いアプリケヌションを䜜成するこずができたした。 コピヌラむタヌ、テクニカルラむタヌ、マヌケティングラむタヌなど、さたざたな皮類のドキュメントで倚くの䜜業を行っおいるナヌザヌからはすでに肯定的なフィヌドバックを受け取っおいるため、䜜業は無駄ではなかったず感じおいたす。 この経隓が、Office 365甚のアドむンの䜜成を怜蚎しおいる他の開発者に圹立぀こずを願っおいたす。



All Articles