Appiumプロジェクトの歴史
Appiumは2012年から何らかの形で存在しています。様々な個人や組織の指導の下、3つの異なるプログラミング言語で実装されてきました! Appiumがどのようにして今日のような形になったのか、知りたい以上の情報をお届けします...
初期の着想¶
Dan Cuellar は2011年にZooskのテストマネージャーを務めていたとき、ある問題に遭遇しました。iOS製品のテストパスの時間が手に負えなくなっていました。テストを減らすという選択肢もありましたが、特にiOS App Storeの審査プロセスでパッチを適用するのに数日かかることを考えると、リスクが高まります。彼はウェブサイトで働いていた頃のことを思い出し、自動化が解決策だと気づきました。
Danは既存のツールを調査しましたが、すべてに大きな欠点があることがわかりました。Appleが提供するツールであるUIAutomationは、テストをJavaScriptで記述する必要があり、リアルタイムのデバッグや解釈ができませんでした。また、XcodeのプロファイリングツールであるInstruments内で実行する必要がありました。他のサードパーティツールはプライベートAPIを使用しており、アプリケーションにSDKとHTTPサーバーを埋め込む必要がありました。これは非常に望ましくないことでした。
既存のオプションに満足できなかったDanは、マネージャーに、より良い方法がないかを探るための時間を求めました。彼は2週間かけて、承認されたAppleのテクノロジーを使用してiOSアプリケーションを自動化する方法がないかを探りました。彼が最初に試みた実装では、AppleScriptを使用して、OS XのアクセシビリティAPIを介してMac UI要素にメッセージを送信しました。これはある程度は機能しましたが、実機では機能せず、他にも欠点がありました。
そこで彼は、UIAutomationフレームワークをインタプリタのようにリアルタイムで実行できたらどうだろうと考えました。彼はそれを調査し、UIAutomation javascriptプログラム内からコマンドを受信、実行、および応答する方法を見つけるだけでよいと判断しました。シェルコマンドを実行するためのAppleが提供するユーティリティを使用して、彼は順番に並べられたテキストファイルを`cat`してコマンドを受信し、`eval()`出力して実行し、`python`でディスクに書き戻すことができました。次に、順番に並べられたjavascriptコマンドを記述するために、Seleniumスタイルの構文を実装したC#でコードを準備しました。iOSAutoが誕生しました。
Selenium Conference 2012¶
Danは、ロンドンのSelenium Conference 2012で、まったく異なるトピックについて講演することになりました。プレゼンテーションの一環として、彼はSelenium構文を使用したiOS Automationを紹介し、共通インターフェースを持つプラットフォーム固有のページオブジェクトを使用して、プラットフォームに依存しないテストを記述する方法を実演しました。驚いたことに、クールなテストアーキテクチャは、WebDriverテストのように実行されるiOSテストの壮観さよりも注目を集めることになりました。何人かの人が、会議の後半でライトニングトークを行い、その仕組みを正確に説明することを提案しました。
会議2日目、Danはライトニングトークを行うためにステージに上がりました。Seleniumの共同作成者であるJason Hugginsがライトニングトークの司会を務めました。Danはプレゼンテーションの読み込みに技術的な問題が発生し、Jasonは次のライトニングトークに移行せざるを得ませんでした。最後の瞬間に画面が点灯し、Danはプレゼンテーションを開始しました。彼は実装の詳細とその仕組みを説明し、貢献者を募り、5分で終了しました。聴衆は丁寧に拍手喝采し、彼はステージを去りました。
電話が鳴る¶
Selenium Conferenceの4か月後、JasonはDanに電話をかけました。JasonはSauce Labsのクライアント向けにiOSテストのサポートに取り組んでいました。JasonはDanのライトニングトークを覚えており、プロジェクトがJasonの仕事に役立つかもしれないと考えましたが、Danのソースコードは公開されていませんでした。JasonはDanに会うように頼みました。その週の後半、DanはサンフランシスコのバーでJasonと会い、iOS Autoのソースコードを見せました。
長年のオープンソース支持者であるJasonは、Danにオープンソースライセンスの下でコードをリリースするよう勧めました。8月、DanはGitHubにC#でソースコードをリリースしました。Jasonは、潜在的な貢献者にとってプロジェクトをより魅力的なものにするために、言語を変更するようDanに勧めました。DanはPythonで新しいバージョンをアップロードしました。9月、JasonはWebサーバーを追加し、HTTP経由でWebDriverワイヤプロトコルを実装し始めました。これにより、iOS Autoはあらゆる言語のSelenium WebDriverクライアントライブラリからスクリプト化できるようになりました。
モバイルテストサミット¶
Jasonは、プロジェクトを11月のモバイルテストサミットで発表することを決定しましたが、最初にプロジェクトに新しい名前を付けることを提案しました。多くのアイデアが出され、AppleCartに落ち着きました。翌日、Appleの著作権と商標に関するガイダンスを読んでいたJasonは、Appleが商標を防御する名前の例として、最初の例が「AppleCart」であることに気づきました。彼はDanに電話をかけ、状況を伝え、Jasonが大当たりする前に少しブレインストーミングを行いました。Appium... Selenium for Appsです。
Sauce LabsとNode.js¶
2013年1月、モバイルテストサミットの shortly after shortly after、Sauce LabsはAppiumを sepenuhnya mendukungすることを決定し、より多くの開発者パワーを提供しました。現在の状態とプロジェクトを進めるための最良の方法を評価するためのタスクフォースが作成されました。Jonathan Lipps(現在のプロジェクトリーダー)を含むチームは、Appiumの再生が必要であると判断し、最終的にNode.jsを使用するフレームワークに決定しました。Nodeは高速で効率的なWebサーバーバックエンドとしてよく知られており、結局のところ、Appiumは高度に特化したWebサーバーにすぎません。また、JavaScriptは言語としてアクセスしやすい enoughであるため、AppiumはJavaScriptを使用するオープンソース開発者のより大きなコミュニティに成長できると判断されました。
わずか数日で、チームはAppiumの既存の作業を活用し、以前のPythonバージョンと同等の機能を備えた新しいバージョンのAppiumを開発しました。Appiumの基本アーキテクチャの基盤が築かれ、私たちはそれ以来、成功裏に構築を続けています。このスプリント開始から数週間後、Jonathan Lippsが正式にプロジェクトリーダーに指名され、コミュニティからより多くの人々をAppiumの開発に参加させるための戦略を立て始めました。
世界中のAppium¶
最終的に、Jonathanは、カンファレンスやミートアップでできるだけ多くの開発者にAppiumを紹介することが、ユーザーと貢献者を引き付ける最良の方法であると判断しました。新しい姿のAppiumは、Google Test Automation Conference 2013でデビューしました。2013年後半には、Appiumは米国全土だけでなく、イギリス、ポーランド、ポルトガル、オーストラリアのカンファレンスやミートアップでも発表されました。特に、JonathanはAppiumをバンドの楽器として演奏させ、Dan CuellarはSelenium Conferenceのために楽しいAppiumのビデオモンタージュを作成しました。
しかし、これらすべてのプレゼンテーションやカンファレンスの間も、プロジェクトは開発を続けました。2013年初頭には、AndroidとSelendroidのサポートをリリースし、Appiumを真のクロスプラットフォーム自動化フレームワークの最初の実現例としました。プロジェクトはユーザーと貢献者を引き付け続け、2013年末までに、すでに1,000件を超えるコミットがありました。
Appium 1.0への道¶
Appiumは大きく成長し、成熟し始めました。2014年5月には、Appiumの開発におけるマイルストーンとなるAppium 1.0をリリースしました。Appiumは様々な 賞を受賞し、最も人気のあるオープンソースのクロスプラットフォームモバイル自動化フレームワークとなりました。安定性が向上し、バグの優先順位付けと修正が行われ、機能が追加されました。Sauce LabsはAppiumの開発に携わる開発者の数を増やしましたが、コミュニティ全体がプロジェクトの指導と貢献に関与し続け、プロジェクトのガバナンスは公開メーリングリストとGitHubのイシュートラッカーで公開され続けました。
Appiumの傘は広がる¶
最終的に、Appiumのコードベースは、分散した、時折貢献する大規模なチームには最適化されていないことが明らかになりました。コミッターチームとして、よりモダンなバージョンのJavaScript言語を使用してAppiumをゼロから書き直し、ユーザーやサードパーティの開発者が独自のAppium「ドライバー」を簡単に構築できるようにAppiumのアーキテクチャを再構築する機会を得ました。新しい貢献者がAppiumのコードベースに容易に参加し、コアチーム以外のグループによってAppiumに新しいプラットフォームのサポートが追加されることを期待していました。そのビジョンは、MicrosoftやYoui.tvなどのグループがそれぞれWindowsデスクトップアプリの自動化とYoui.tvアプリの自動化のためにAppiumにドライバーを追加することで、実現し始めています。次にどのプラットフォームが追加されるかは誰にもわかりません。
人々のためのAppium¶
2016年後半、Sauce LabsはAppiumをJS Foundationにプロジェクトとして寄贈し、Appiumがオープンソースであり続けるというSauceのコミットメントを世界に確固たるものにしました。JS Foundationは、オープンソースプロジェクトの著作権を保持し、コミュニティで長く成功した任期を確保する責任を負う、非営利のオープンソース管理組織です。非営利財団への移行により、個人として、またはAppiumの発展に関心を持つ多くの企業の代表として、新しい貢献者のための扉がさらに大きく開かれることを願っています。
最終的に、JS FoundationはOpenJS Foundationに統合され、Appiumは現在、財団のインパクトプロジェクトとなっています。
Appium 2.0¶
Appium 2は2023年にリリースされ、単一のプロジェクトではなく、エコシステムとしてのAppiumに重点が置かれました。ドライバーとプラグインは誰でも開発および共有できるため、iOSやAndroidをはるかに超えたプラットフォームの自動化関連開発の可能性が広がります。