OpenWork Tech Blog

社員クチコミサービスを運営しているオープンワークエンジニアによるテックブログです。

SymfonyデバッグツールバーでElasticsearch開発の生産性を向上しました

はじめまして、Webアプリチームのビリーです。

Elasticsearchのおかげでユーザーはスピーディーに検索することができますが、Elasticsearchの開発は大変なことが多いです。それを楽にするために、symfonyのデバッグツールバーを活かしてカスタムなデバッグツールを開発しました。

今回はそのデバッグツールについて話していきたいと思います。

symfonyデバッグツールバーとは

symfonyのデバッグツールバーは、ブラウザでsymfonyの役に立つデバッグ情報を確認することができるツールバーです。

詳細はこちらです:https://symfony.com/doc/current/profiler.html

デフォルトの情報は豊富ですが、自社のチームのニーズに応じてツールバーをカスタマイズすればさらに役に立つと思います。

Symfonyツールバーを使うメリットは、開発が早く、保守も容易で、カスタマイズすることができる点です。

Elasticsearchデバッグツールについて

オープンワークのエンジニアがElasticsearchの開発をする時、以下のようなことで困難していました。

  • クエリ、スコアの計算を確認することが大変

  • コード上でどのファイルがElasticsearchクエリを呼び出すかを確認することが大変

  • あるページが無駄にElasticsearchクエリを呼び出さないかを検証することが大変

この3点の困難を解消して、エンジニアの体験をよりスムーズにするために、Symfonyのツールバーをカスタマイズして、Elasticsearchをデバッグするツールを作成しました。

ツールのUIは以下のようです。

Elasticsearchリクエストごとに、以下の情報が表示されます

  • クエリ

  • スコアの計算

  • バックトレース

このシンプルなツールでElasticsearchの開発体験を向上することができました。

実装

Elasticsearch Client phpのElasticsearchクライアント。

ElasticsearchDebug Client Elasticsearch Clientを継承して、Elasticsearchリクエストの情報(クエリ、スコア計算、バックトレース)を持つクラス。

Elasticsearch Client Factory debug modeがtrueであれば、ElasticsearchDebugClientを作成する。falseであれば、Elasticsearch Clientを作成する。

Elasticsearch Data Collector Data Collectorは、Symfonyデバッグツールバーで表示される情報を持つクラスです。Elasticsearch Data CollectorはそのData Collectorを継承し、Elasticsearchリクエストの情報を持つクラス。

Data Collectorについての詳細はこちらです。 https://symfony.com/doc/current/profiler.html#creating-a-data-collector

最後に

自社チームのニーズに応じてツールを作成することで、このようにパフォーマンスを高めることができます。オープンワークでは、積極的に開発体験の改善に取り組むことを大切にしています。

最後に、弊社ではエンジニアを募集しています。今回の記事を読んで興味を持っていただけましたら、採用サイトの方もご覧いただけると嬉しいです。

www.openwork.co.jp