34
エエエエエエ エ エエエエエエエエ エエエエエエエ 63 エ ( エエエ ) html5j エエエエエエエエエエエエ エ 11 エエエエ

Electron Vs Enterprise

Embed Size (px)

Citation preview

Page 1: Electron Vs Enterprise

エレクトロン 対 エンタープライズ技術に感電した 63 日 ( 営業日 )

html5j ウェブプラットフォーム部第 11 回勉強会

Page 2: Electron Vs Enterprise

本日のお話introduction

Page 3: Electron Vs Enterprise

“本日のお話

エレクトロンに感じた魅力Electron は産業を支えるに魅力的なプラットフォームか?

実際の導入について実際に導入しての詰まりどころ、手離れ具合と導入コストが何処にかかり、何処を省略すべきか?

効果の見込めるユースケースどのようなユースケースで導入効果が見込めるか?

Page 4: Electron Vs Enterprise

本日のお話概要

1. 導入についての検討2. 開発から運用まで

1. 開発編2. テスト&ビルドインフラ編3. 運用編

3. 社内でエレクトロンを使うとき4. ふりかえり

Page 5: Electron Vs Enterprise

導入編introduction chapter

アプリ怪獣エレクトロン登場

感電度

Page 6: Electron Vs Enterprise

導入について

未知の技術をいきなりぶっこむのは禁忌

エンタープライズでの IT 活用はエンジニアリングを中心として利益をあげているのではなく、別の産業もしくはサービスサイエンス的な IT を補助的に活用することが主になる。責任を持てるエンジニアが居たとしても、運用でその一部のエンジニアに負荷が集中ないし、俗人化するような状況を残さないようにすることが大切。

Page 7: Electron Vs Enterprise

導入について

責任を最後まで持てるのか?最低でも損益分岐を迎えられるまで運用できるのか?

手離れしやすいものか?CI/CD インフラの構築についてどれだけできるのか?

該当技術の更新をキャッチアップできるか?新機能やセキュリティアップデート等の追従にどれだけコストを裂かなければならないのか?

Page 8: Electron Vs Enterprise

導入について

とはいえ・・・手を拱いていては最後まで使う事は無いだろうし選択肢も増えない

情報だけキャッチアップしたり、個人での検討・検証だけしたものをいざ必要になった時に本番で使ってしまうと言う事も負債製造スパイラルの開始になってしまう。

昔の人は便利な事を言いました。

Page 9: Electron Vs Enterprise

検査と適応

InspectAndAdapt問題があるなら改善すればいいじゃない

Page 10: Electron Vs Enterprise

導入について

個人手の検証

開発インフラへの適用と検査

CI/CD への適用と検査

Business バックエンドへの適用と検査

Business フロントへの適用と検査

改善に Electron を使う

小さなところから使ってみる。ダメならパージ ( 捨てれば ) 良い改善できれば次のステップへ

Page 11: Electron Vs Enterprise

導入について

個人手の検証

開発インフラへの適用と検査

CI/CD への適用と検査

Business バックエンドへの適用と検査

Business フロントへの適用と検査

改善に Electron を使う

小さなところから使ってみる。ダメならパージ ( 捨てれば ) 良い改善できれば次のステップへ

Page 12: Electron Vs Enterprise

開発から運用まで

Develop Testing Operator

Page 13: Electron Vs Enterprise

開発編Development chapter

アプリ怪獣エレクトロン登場

感電度

Page 14: Electron Vs Enterprise

開発に置ける ElectronWeb 開発プラットフォームが整っている場合、既存の資産がほぼ流用可能作り方は古川氏、セキュリティは長谷川氏より前もってお話があるので割愛。

1. Web 開発で得た知識、ノウハウ2. JavaScript Library3. Task runner (Gulp/Grunt)4. End to End Testing

Chrome ブラウザ固定Input type=“xxx” が動作する。Web Notification が真の価値を発揮できる。

Page 15: Electron Vs Enterprise

開発に置ける Electron注意するところに注意すればそんなにハマらない

以下にだけ注意しておく必要がある。

1. Origin が file://2. Dom を弄る系のライブラリ (JQuery, Angular) の場合特殊なエスケープが必要

3. Main と render の2つの処理が動いてる4. npm –g electron5. Windows は 7 から

Page 16: Electron Vs Enterprise

検証編テスト & ビルドインフラTesting chapter

アプリ怪獣エレクトロン登場

感電度

Page 17: Electron Vs Enterprise

検証に置ける Electron〜無駄死の章〜

目標開発〜リリースまでの手順をなるべく省力化・自動化し、運用監視含めて手離れを良くしたい。

具体的には

1. Web と同等の開発ライフサイクル2. モニタリング&死活監視による問題と障害検知3. リリースのオートメーション化と自動テスト

俺の屍

越え

てゆ

Page 18: Electron Vs Enterprise

検証に置ける ElectronWeb 開発と同等の開発ライフサイクル

既存の Web 開発と同じGulp/Grunt で構築するのは割と簡単にできるほとんどが既存の Web 開発のノウハウを流用可能

一点違うところはライブリロード開発部分Render プロセスは既存の Livereload 開発と同じだが、Main プロセス側に修正を入れた場合は再起動を行う必要が有る。

手軽に導入するなら @Quramy 氏の `electron-connect` と言う物も

Page 19: Electron Vs Enterprise

検証に置ける Electronモニタリングと死活監視

Main プロセスで監視、 Update サーバーをそのまま転用既存の SPA の要なモニタリングでは Render プロセスしかモニタリングできない為、アプリケーション起動時の Main プロセスからWeb Socket経由でのモニタリングを行う事に。

後で説明する自動更新用のサーバーに監視用 API を追加するだけで済むため、既存の Web インフラが有れば簡単に導入が可能。

Page 20: Electron Vs Enterprise

検証に置ける Electron機能テスト自動化を目指す調査に時間がかかった。 ( 無駄に時間を食ったとも言う )

Electron は複数の技術 Web が絡まっている為、それぞれの部分に対する Cross Platform テストの構築が難しい自動化するにあたって、投資とリターンの分岐点はどこか探る必要があった。

機能 技術 テスト技術

Render ブラウザ (Chrome) KarmaJS + electron

main NodeJS Jasmine + electron

Menu Native Coded / RobotJS

Installer/Updater Squirrel / NSIS Coded

リリース自動化の為の自動テスト化

Page 21: Electron Vs Enterprise

検証に置ける Electron計画した自動テストの内訳 ( 導入コスト検証 )

RenderUnit Testing

Main Unit Testing

IntegrationTesting(E2E)

acceptanceTesting

Unit Testing ( Render / Main )カバレッジを取りつつ部品の機能をテストするFunctional TestingRender プロセスの振る舞いをテストするIntegration TestingRender + Main 合わせないと確認できない系、メニューのテストAcceptance Testingサービスとしての機能を満たすか確認する。インストール、アップデート死活監視の機能チェックはここで

FunctionalTesting (E2E)

Page 22: Electron Vs Enterprise

検証に置ける Electron以下のような構成で自動テスト化してみた所結論として「 Web Driver のテストであれば導入コストが安い」

テストフェーズ

Run Pint Cost 備考

Unit (Render) Karma 中 Karma + electron で実行

Unit (Main) NodeJS 中 - Spawn で electron + jasmine を実行

Functional Protractor 小 WD が使えるので Protractor で

Integration Protractor 中 + Protractor + RobotJS + Node.spawn

Acceptance CodedRobot FW

大 Windows の場合インストール後にしかテストできない機能が割と有る。

リリースオートメーション化の為の自動テスト

Page 23: Electron Vs Enterprise

運用編Operation chapter

アプリ怪獣エレクトロン登場

感電度

Page 24: Electron Vs Enterprise

運用に置ける Electron自動 Update

Squirrel.Windows の導入は手軽認証回りは Gatekeeper と code signing認証(お金がかかる・・・)後はネットワークインフラが整えば準備完了

既存の Web サーバーに API を追加するだけで導入可能基本的に必要なサーバー側機能は次の通り

1. 自動更新をチェックする API2. 更新用ファイルができる URL

mac の場合は zip ファイル、 window の場合は Nuget形式3. 余裕があれば死活監視とモニタリング用 API

Page 25: Electron Vs Enterprise

運用に置ける ElectronElectron 本体の更新の早さ

更新速度はかなり速い手放し運用はできないが、不安定 /放置されている技術ではない為逆に安心感はある。どちらかと言うと前章でお話しした検証回りの自動化部分をやりすぎるとそちらの改善と追従に時間を取られる、検証の自動化はほどほどが良さそう

0.34.0 2015/10/160.35.0 2015/11/160.36.0 2015/12/110.36.10 2016/03/05

0.36.5 2016/01/220.36.6 2016/01/290.36.7 2016/01/300.36.8 2016/02/190.36.9 2016/02/260.36.10 2016/03/05

メジャーバージョンアップ マイナーバージョンアップ

Page 26: Electron Vs Enterprise

社内でエレクトロンCorporate of the Electron

アプリ怪獣エレクトロン登場

Page 27: Electron Vs Enterprise

社内で Electron同様のインフラが構築済みの場合

無理にエレクトロンを利用する必要は無いJava や .Net でこれまで話したアプリ配布インフラは構築可能です。すでに同じような開発インフラが出来ているのなら無理して置き換える物ではありません。

フロントエンジニアのリソースが余っているのならバックのエンジニアが足りなくフロント (Web) エンジニアのリソースが余ってる場合は、フロントエンジニアにクライアントアプリを作成するインフラが提供できるので、一考の価値はある・・・かもしれない(フロントエンジニアが余ってるならうちにもリソース分けて欲しい・・・)

Page 28: Electron Vs Enterprise

社内で Electronまだ同じようなインフラが出来ていない場合

まずは社内に居るエンジニアの割合で社内に Web エンジニアが居るのであれば Electron を取り入れる価値は十分ある。しかし他の技術でも同等のインフラは構築可能なので、社内に別の技術で責任を持てるエンジニアが居るのなら、そのエンジニアと要相談。

既存 Webシステムの機能拡張として既存のサーバーに対して自動更新と更新ファイルダウンロードの APIを追加するだけで導入可能。(あればインストーラをダウンローする API なども)

既存 Web で諦めていた機能が実現可能になる。(Web クライアントでの Excel取り込み・出力、 AcriveDirectory連携など)

Page 29: Electron Vs Enterprise

社内で Electron導入に効果がありそうなところ

常駐アプリケーション通知領域に常駐するアプリケーションを作成可能

既存 Webシステムの延長インフラ的には更新通知とインストーラー・更新ファイル DL を追加するだけなので既存 Webシステムの Native拡張としての導入が容易

XULRunner と同様の用途Webシステムにおけるブラウザの固定化

Browser Extension で無理矢理実現していた業務Webシステムの Native連携を行う場合など

Page 30: Electron Vs Enterprise

社内で Electronやめたほうが良いところ

負の既存資産を置き換えするのは現実的ではありません。

既存 XULRunner アプリを置き換える多分動きません。どうしてもやりたい場合はテスト頑張りましょう

既存 Webシステムの Electron 化同上サポートブラウザに Chrome が有れば動作するかも

Windows 7以前の OS 対応Electron は Windows 7以上のみサポート

Page 31: Electron Vs Enterprise

まとめSummary

Page 32: Electron Vs Enterprise

まとめElectron Vs Enterprise

開発良い良い運用怖い自動化構築は割と大変、ある程度で重要な機能と自動化投資のバランスが大切バグやセキュリティアップデートで Electron 本体の更新はかなり早いため責任と覚悟が必要

既存資産の置き換えには向かない既存 Web 資産を Electron 化する場合は素直に作り替える位を考えて基本は新規で作るものに向いているが、既存システムの部分拡張として使え無い事も無い。

内製であるなら有用上記をわきまえた上で、内製するのなら適用出来そうなユースケースは割とある納品のある受託開発のような売り切り型では顧客に負の資産を押し付ける事になるか、保守コストが嵩む。

Page 33: Electron Vs Enterprise

まとめ個人的に…

業務用デスクトップアプリを作る技術として.NET(UWP/WPF) >>> Electron >>> JavaFx >= その他 UI 技術

開発については楽だけれどテストや運用、デプロイ回りを考えると .net系技術の方が手離れが良いElectron に置ける利点はクロスプラットフォームと言う点だけれど、エンタープライズの場合殆ど Windows なので上記のような感想に

簡単な開発からリリースインフラ構築までは低コストいきなり Native アプリ目的として使うのはハードルが高いと思う人は低コスト導入できる XULRunner のような利用ブラウザの固定化目的で使うのがユースケースとして手軽でオススメ

外向けに作るならエレクトロン外向けに作る場合は UI の作成に手慣れているフロント (Web) エンジニアを使わない手は無いと思う、外向けに Native Client を作る場合に Web エンジニアが活躍できるのが、他の技術よりも Electron の方が優れている所かも。

Page 34: Electron Vs Enterprise

酒巻 瑞穂グロースエクスパートナーズ(株)所属

Frontend EngineerI am here because I love to programing. https://github.com/MSakamaki

Thanks!