翻訳記事‎ > ‎

Sauce LabsでAppium1.5がリリースされました

2016/03/29 2:52 に Nozomi Ito が投稿   [ 2016/03/30 2:54 に更新しました ]

Appium1.5

Appiumチームは非常に自信を持ってAppium1.5のリリースをお知らせします。Appium1.5はこれまで半年以上計画されてきましたが,私たちにとってどれだけ重要なリリースなのかを共有させていただきたいと思います。Appium1.5では技術的なアーキテクチャを根本的に見直しています。プロジェクトが揺籃期から1.0に,そしてさらにバージョンを重ねて成長する中で,コアチームはコードが組織化されているよう維持し,新しい貢献者がプロジェクトに入りやすい状態を保ち,時流に応じてバグ修正と機能追加を行うことに注力してきました。しかしながら,多くのソフトウェアプロジェクトと同様に,私たちの努力にもかかわらず,私たちと足並みを揃えるのではなく,私たちに反するようにAppiumの基礎アーキテクチャが機能している時代が来たのです。

バージョン1.4.xは安定していたので,私たちは次代のAppium開発の速さに投資する良い時期だと感じました。Appium1.5の開発では,次の点をゴールに設定しました。

  • 現在のコード構成を厳しく見直し,Appiumの異なるサブセクション間の関係性を,より明確に区別して繋がりを分離する観点から,再び概念設計すること。
  • NPM環境のベストプラクティスを推進し,信頼性や保守しやすさなどの観点からAppiumを複数のパッケージに分割して,常に適切な状態にすること。
  • 全体のコードベースをES5 JavaScriptから,async/awaitのあるES2015 JavaScriptに書き直すこと。(およびAppiumの不具合をトレースしにくくしている巨大なソースも一掃すること)
  • サブプロセス管理を標準化すること。Appiumでは基本的にAPIサーバとサブプロセスマネージャ(私たちが管理しているのは,例えばinstruments, uiautomator, chromedriver, selendroidなどなど)が連携していますので,サブプロセス管理を標準化することでプロジェクトを通じてコードの可読性が向上します。
  • 共通で使われているドライバーの振る舞いを抽象化すること。AppiumのiOSサポートとAndroidサポートは,実は同じ共通インタフェースから派生しています。ですので,私たちはAppiumの異なるドライバー間で存在する動作の重複と定型文を減らすため,そのインターフェースを取り除きたかったのです。
  • ビルドプロセスを整理し,状況に応じて扱いの難しいビルドツールを使い分けなくてもいいようにすること。Appiumのリリース時には,時間を節約するため,サブパッケージレベルでCIを走らせていることを保証すること。
  • 新しくAppiumに貢献してくれる開発者がより親しみやすさを感じるアーキテクチャ環境を創出すること。ある種の変更は,一箇所でかつREADMEが豊富なところで発生する必要があると確認すること。
さらにたくさんの非常に特殊な技術的ゴールが設定されています。開発者の視点から現在どのようにAppiumが企画されているかについて詳しくは,developer's overviewをご参照ください。重要なことですが,私たちのゴールは新しい機能の追加ではありませんでしたので,書き直しは,新機能の追加で曇らされることなく行われていると考えました。内部的には刷新されていながらも,基本的にAppium1.5はAppium1.4.16と全く同じ振る舞いをします。もちろん,ここそこに多少の微調整を入れざるをえませんでした。書き直しの結果,長く放置されてきた,セッション操作を処理する様々な不具合が修正されましたので,私たちはサーバについての議論を非難し,URI経由でAndroidの意図を立ち上げる能力を追加しました。詳細,とりわけ今回のリリースで私たちが実装することにしたいくつかの変更点について,リリースノートをご覧ください。

Appium1.5はオープンソースコミュニティで何ヶ月間もベータ版で公開されていて,私たちは問題を活発に修正してきました。しかし,全てを書き直している以上,自動あるいは手動テストでカバーされていないエッジケースの存在が強く予想されますので,作成中のCIを使用する前に注意喚起しています。つまり,可能な限りハードに扱ってもよいのです。Appiumに関連した不具合はどんなものでもバグトラッカーにご報告ください。Sauce Labsで起こるのにローカルでは起こらない問題については,サポートにご連絡ください。Appium1.5をSauceで使うには,単純にご希望の機能をappiumVersionが「1.5」(この指定方法ですと1.5系のパッチがリリースされると自動的に取得します)もしくは「1.5.0」(こうした特定のリリースを指定する方法ですと,例えば1.5.1などの将来的なアップデートを手動で行う必要があります)にアップデートします。Sauce上で行うテストのためにちょうど求められる機能を取得するための詳細な情報は,Platform Configuratorご参照ください。

Appiumの未来

バージョン1.5はAppiumの将来にとって何か意味しているのでしょうか? かなりたくさんのことを実際に示しているのです! たくさんの新機能を搭載しているわけではないのにもかかわらず,プロジェクト史上の重要なターニングポイントであり,来たる数年間がどうなるかを私たちに提示しているのです。ここでは,Appium1.5で私たちが実現した仕事に基づき,前進することを楽しみにしている幾つかの事柄をご紹介します。

  • Appium開発における進行中の基盤に関わっている個人または企業の貢献者が増えています。今やコードは,より良く組織化され簡単に理解できるバージョンのJavaScriptで書かれており,私たちは新たな貢献者を求めています。もしかしたらあなたを求めているかも? Appiumプロジェクトは@jlippsが率いており,「Appium開発者になるにはでプレゼンが公開されています。お見逃しなく!
  • 技術的な負債を一掃していますので,新しいドライバが素早く効果的に追加されるかもしれません。モバイル自動化技術の趨勢は常に変動しています。Appiumはそれら全ての技術に対する単一のフロントエンドAPIでありたいです。Apple社のUIAutomationを始め,Google社のUiAutomator,さらにSelendroidもサポートしています。しかしそこで満足するつもりはありません。すでにオープンソースコミュニティでApple社の新しいXCUITestフレームワークのサポートであるappium-xcuitest-driverのベータ版が公開されていますし,Google社の新しいUiAutomator 2 frameworkへの対応も始まっています。
  • 不具合が減りました! 書き直しによる一番の恩恵は,醜いコールバックベースの制御フローパターンから読みやすい「async/await」パターンに移行できたことです。今後結果的に分かりにくいリグレッションが減ることを期待しています。
  • 名前の付いたリリースを行うときはセマンティックバージョニンの基準に厳格に則りはじめています。いつAppiumのバージョンをアップグレードして良いかをあらかじめ知る方法を得ることが,「非常に大きな」新機能のためにメジャーバージョンリリースを保っておくという伝統に追随することよりも重要なことだ,ということに皆さんが賛同してくださることを期待しています。例えば,Appiumのバージョン2.0やバージョン3.0が思っていたよりも早く登場したとしましょう。このことは,1.0と1.5の間にあったのと同じくらいたくさんの変化がある,という意味ではありません。単に,これまでいくつかの変更点があったということを意味しているに過ぎません。
常にそうであったように,私たちが今後どうしていこうと考えているかがわかるAppiumプロジェクトのロードマップを確認できますし,現在準備しているリリース内容がわかるマイルストーンも見られます。私たちはAppiumプロジェクトの未来にとてもわくわくしていますし,Sauce Labsで開発を継続しています。続報をお待ちください。

Happy testing!


Comments