この記事は iOS Jailbreaking Advent Calendar 2015 の1日目の記事です。
初っ端ということでJailbroken環境向けソフトウェア/プラットフォームにまつわる懐古的な記事をお届けします。
iPhone OS 1 (2007-2008)
App Storeも存在しなかった時期のため、配布されるソフトウェアはアプリケーションがほとんどでした。
SDKも存在しませんので、この頃のアプリ作成は難易度が高かったことでしょう。
この頃はGoogleアカウントとの同期もデフォルトでは出来なかったためGoogle Calendarと同期するソフトウェアにはお世話になってました。
ソフトウェア
最初期のパッケージマネージャであるInstallerが形式にAPT(dpkg)を採用したため現在もパッケージはAPTが使われています。この時rpmが採用されていた場合はrpmになっていたことでしょう。
iPhone OS 2 (2008-2009)
App Storeが登場しPrivateAPIや規約的にリリース出来ないアプリケーションを除くとアプリケーションタイプのものは設定を行うためのインターフェースとして残りました。
ソフトウェア
App Storeの登場や、この頃にリリースされたMobileSubstrateによって徐々にいわゆるtweak(主にOSに対する各種微調整)が増えてきます。
この頃はTHEOS(Makefileフレームワーク+pre processor)が無かった為、Hooking用のコードも煩雑でMakefileもUNIXソフトウェアよろしく煩雑なものでした。
またこの頃にリリースされたJailbreak ToolのデフォルトパッケージマネージャがCydiaだったこと、その後のCydia Storeの登場、SHSHのバックアップ機能搭載によりこちらがデファクトスタンダードになります。
2008年末にはBigboss Prefsの後継であるSBSettingsがリリースされます、サードパーティのアドオン(Toggle)に対応したソフトウェアが出たのはこのあたりが初ではないでしょうか。ちなみにまだActivatorがないため独自のdaemonでステータスバースワイプを検出していたと記憶しています。
iPhone OS 3 (2009-2010)
Cydia Storeが誕生し、App Storeとおなじく7:3の割合で利益を得ることが可能になりました。
Cydia Storeに試用期間がなかったからなのか、対抗馬として有料ソフトウェアの試用期間のあるRock Storeも登場します。
この年に登場したiPhone 3GSからファームウェアのリストアには認証が必要になり、SHSHのバックアップシステムがうまれます。
ソフトウェア
この頃に登場したPreferenceLoaderにより簡単な設定UIはこちらに統合され、設定用アプリケーションはほぼ姿を消していきます。
また、前述のTHEOSがリリースされ面倒だったMakefileの作成簡素化、Logos pre processorにより障壁が非常に低くなりました。ものによってはMakefileは自動生成された状態から変更せず、コードはワンライナーですむほどになりました。
2009年末にはActivator(この頃はlibactivator)がリリースされジェスチャー起動によるアクションも徐々にプラットフォーム化されていきます。
iOS 4+ (2010~
Rock StoreがCydiaによって買収・統合されます。(会社だったんだなとビックリしました)
これによりパッケージマネージャはCydiaに一本化されたと言って良いでしょう。
ソフトウェア
この頃になると統廃合とデファクト化が完了し、ソフトウェア面では現在と大差ない状況になります。
- Cydia: APTフロントエンドパッケージマネージャ
- MobileSubstrate: Dynamic Library Loader
- PreferenceLoader: 設定用 bundle/plist Loader
- Activator: ジェスチャーによるアクション実行プラットフォーム
- THEOS: Makefileフレームワーク
ちなみにWi-Fiなどの設定ToggleプラットフォームだけはSBSettings→対抗馬NCSettings登場→両者開発終了→Flipswitch登場と変遷を経てFlipswitchが現在の標準になっています。
まとめ
Jailbroken環境におけるパッケージマネージャまわりの流れ(Icyとか省きましたが)とソフトウェアの流れを振り返ってみました。
こうしてみるとiOS 4の時には現在まで続く環境が確立していますね。
ARMアーキテクチャでコンパイル出来れば動作させる事が出来るのでlighttpdなどのサーバサイドソフトウェアなどもあるにはありますが、ものがものですので特に主流になる事はありませんでした。PythonやRubyなどのLLを入れて遊ぶ事も出来ますがキーボードがねぇ。。
さて懐古しきったところで2日目以降は主に開発にまつわる話をしていきます。