BT

Facebook Sonarは、モバイルアプリ向けの可視化されたインタラクティブなデバッグツール

| 作者: Sergio De Simone フォローする 14 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年7月5日. 推定読書時間: 4 分 |

原文(投稿日:2018/06/12)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Facebook Sonarはオープンソースのツールセットである。開発者が、視覚的にインタラクティブで拡張可能な方法で、iOSとAndroidアプリの構造と動作を検査し理解することの支援を目的としている。

FacebookのエンジニアであるEmil Sjölander氏によると、SonarはStethoの経験を基に開発された。Stethoは、開発者がChrome DevToolsを使用してアプリケーションをデバッグできるAndroidデバッグブリッジである。Sonarでは、iOSプラットフォームもターゲットする拡張性の高いツールを設計することを目的としている。しかし、Stethoの機能のすべてがSonarにあるわけではない。したがって、アプリの状態をダンプするコマンドラインツールなどの機能が必要な場合、開発者は引き続きStethoを使う必要がある。

拡張性のために、SonarはプラグインAPIを提供している。プラグインAPIを使用すると、開発者はアプリからのデータを視覚化してデバッグするための独自のプラグインを作成できる。Sonarの初期リリースにはすぐに使えるプラグインが多く含まれている。例えば、アプリケーションからのシステムログを検査するためのLogs、iOSとAndroidアプリの両方のレイアウトを検査するLayout Inspector、ネットワークトラフィックを検査するNetwork Inspectorなどがある。これらはSonarでできることのベーシックな例である。Sjölander氏によると、Facebookのエンジニアは、GraphQLリクエストのストリームを監視するプラグイン、パフォーマンスマーカを追跡するプラグインなども開発した。

Sonarを使用するには、モバイルアプリはSonar SDKと統合する必要がある。Sonar SDKは、モバイルアプリとElectronベースのデスクトップアプリとの間で通信する機能をもっており、デスクトップアプリにはデバッグデータを表示する。Sonarプラグインには、デスクトップコンポーネントとモバイルコンポーネントの両方がある。デスクトッププラグインはReactを使用して書かれている。デスクトッププラグインはリモートプラグインと通信し、データのレンダリングを行う。モバイルプラグインは、Swift/Objective-CあるいはJava/Kotlinで書かれており、通信先のデスクトップからの要求を管理するためのハンドラとレスポンスを登録する。

GradleまたはCocoaPodを使用してSonarを使用するプロジェクトをセットアップしたら、以下の例に示すように、アプリケーション内で初期化するのは非常に単純である。

// Android
public class MyApplication extends Application {

  @Override
  public void onCreate() {
    super.onCreate();

    if (BuildConfig.DEBUG && SonarUtils.shouldEnableSonar(this)) {
      final SonarClient client = AndroidSonarClient.getInstance(this);
      client.addPlugin(new MySonarPlugin());
      client.start();
    }
  }
}
// iOS
#import <SonarKit/SonarClient.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
#if DEBUG
  SonarClient *client = [SonarClient sharedClient];
  [client addPlugin:[MySonarPlugin new]];
  [client start];
#endif
  ...
}
@end

iOSプラットフォームでのSonarの既知の制限は、Swiftアプリ内で実行できないことである。これは、いくらかC++を使っているためである。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT