目次
- 今回は、BacklogSyncというプロジェクト管理ツールのバックエンドに関わるシステム担当者の方に、技術的な背景や最近のアップデート内容についてお話を伺います。まずは、BacklogSyncの概要から教えてください。
- BacklogSyncが、どのようなシステムで連携しているのか、技術的な部分を教えてください。
- こちらは、ADX社内でのSalesforceからのBacklogへのケースのエスカレーションをDX化するために社内ツールとして構築したことが始まりだったかと思います。そこからBacklogSyncという名称での製品化に至るまでの背景や開発時に苦労した点なども教えていただけますか?
- ADX社内での利用範囲だけではなく、様々な利用ケースに応じて対応できるように仕様を考えた上で製品化に繋がったのですね。
- アップデート内容に関して
- ここからは、最近のアップデート(Ver.1.90)にて新規追加した機能について深堀できたらと思います。まずは、手動課題取り込みの課題数が、これまでの上限4000件から5万件へと大幅に増えた点について、技術的にどのように対応したのでしょうか?
- SalesforceからBacklog への新しい課題登録では、Backlogの標準項目に加え、親課題も入力して登録できるようになりました。こちらもBacklogユーザーのタスク管理においては以前より欲しかった機能なので追加機能としては非常にありがたいです。
- 他にも新たに、Salesforceから課題登録時にカスタム属性項目を入力指定できるようになりました。この機能についても詳しく教えていただけますか?
- プロジェクト管理においては欠かせない項目もしっかりとカバーできるのですね。こちらはプロジェクトによっては必須項目として設定しているものもあるかと思いますが、Salesforce側でも入力漏れは発生しないようになっているのでしょうか?
- ちなみにBacklogでは、標準項目の種別(タスク、バグなど)で選択した値に応じて、入力できるカスタム属性項目の設定が可能ですが、こちらはBacklogSyncでも対応しているのでしょうか?
- 他にも、Backlog側で更新した課題をSalesforceに自動連携できる機能が追加されました。こちらも非常に便利な機能ですが、どのように実装したのでしょうか?
- まさにBacklogとSalesforceの双方向同期におけるキーとなる機能なのですね。これまで以上に利便性が向上したと思いますが、最後に、開発チームとしてBacklogSyncに対する思いをお聞かせください。
- お忙しい中、貴重なお話をありがとうございました。これからもBacklogSyncをADX Consultingの主要プロダクトとして発信していきましょう。
今回は、BacklogSyncというプロジェクト管理ツールのバックエンドに関わるシステム担当者の方に、技術的な背景や最近のアップデート内容についてお話を伺います。まずは、BacklogSyncの概要から教えてください。
システム担当者:BacklogSyncは、BacklogとSalesforceのシームレスな連携を実現するサービスで、プロジェクト管理を効率化します。Salesforce上で管理しているケースや商談をBacklogに登録することでメンバーへ共有できます。また、Backlogの課題をSalesforceに取り込むことで、Salesforce上のレポートやダッシュボードにより、複数のプロジェクトを俯瞰して状況把握できるところが強みです。これにより誰が、どのプロジェクトで、どれくらいの課題を担当し、遅延がどの程度あるかを簡単に確認できるようになります。
BacklogSyncが、どのようなシステムで連携しているのか、技術的な部分を教えてください。
SalesforceからBacklogへの課題登録は、Backlogが提供するインテグレーション「メールによる課題登録」を利用して実現しています。BacklogSync内部では、利用者が指定した「件名」と「課題の詳細」のフォーマットにしたがって、「件名」をメールの「件名」へ、「課題の詳細」をメールの「本文」へ設定し、Backlogへメールを送信しています。フォーマットの「件名」と「課題の詳細」には、ケースや商談などのオブジェクトレコードのデータを可変で埋め込むこともできます。これらのメール送信やレコードデータの取得/埋め込みは、Apexコードにより実現しています。
ただし、従来の課題登録機能では、Backlogの「開始日」、「期限日」などの標準項目や、カスタム属性項目を登録できない点があり、これらについて以降で説明する新機能で改善しました。
また、Salesforce上でのBacklogの課題取込み機能は、Backlogが提供するAPIを利用して実現しています。利用者が選択したプロジェクトについて、Backlog側の全課題を一括で取り込んでおり、Apexコードで実現しています。
こちらについても、定期的に手動で取込みを行う必要がある点が課題でしたが、以降で説明する新機能では、常にBacklogと同期して自動で取込みを行うように改善しました。
ただし、従来の課題登録機能では、Backlogの「開始日」、「期限日」などの標準項目や、カスタム属性項目を登録できない点があり、これらについて以降で説明する新機能で改善しました。
また、Salesforce上でのBacklogの課題取込み機能は、Backlogが提供するAPIを利用して実現しています。利用者が選択したプロジェクトについて、Backlog側の全課題を一括で取り込んでおり、Apexコードで実現しています。
こちらについても、定期的に手動で取込みを行う必要がある点が課題でしたが、以降で説明する新機能では、常にBacklogと同期して自動で取込みを行うように改善しました。
こちらは、ADX社内でのSalesforceからのBacklogへのケースのエスカレーションをDX化するために社内ツールとして構築したことが始まりだったかと思います。そこからBacklogSyncという名称での製品化に至るまでの背景や開発時に苦労した点なども教えていただけますか?
当時のコラムはこちら
システム担当者:当時の社内ツールでは、Salesforce側のオブジェクトはケース限定、連携先のBacklog情報(連携先URLや認証情報、連携先プロジェクト)も固定、連携する件名や本文もケースの特定項目を埋め込むのみと、範囲を限定できていました。
BacklogSyncとして製品化となると、オブジェクトは任意、連携先のBacklog情報も任意、連携する件名や本文、埋め込む情報も任意として汎用化する必要があり、それぞれの情報を利用者がどのように指定し、どのように内部で管理し、どのように取得/処理するか、コンサルティングメンバーと開発メンバーがディスカッションしながら仕様を詰めていきました。
特に、Backlogへアクセスするための認証情報について、セキュリティ面で利用者が参照できないようにする必要があり、指定や管理方法について悩みました。
BacklogSyncとして製品化となると、オブジェクトは任意、連携先のBacklog情報も任意、連携する件名や本文、埋め込む情報も任意として汎用化する必要があり、それぞれの情報を利用者がどのように指定し、どのように内部で管理し、どのように取得/処理するか、コンサルティングメンバーと開発メンバーがディスカッションしながら仕様を詰めていきました。
特に、Backlogへアクセスするための認証情報について、セキュリティ面で利用者が参照できないようにする必要があり、指定や管理方法について悩みました。
ADX社内での利用範囲だけではなく、様々な利用ケースに応じて対応できるように仕様を考えた上で製品化に繋がったのですね。
アップデート内容に関して
ここからは、最近のアップデート(Ver.1.90)にて新規追加した機能について深堀できたらと思います。まずは、手動課題取り込みの課題数が、これまでの上限4000件から5万件へと大幅に増えた点について、技術的にどのように対応したのでしょうか?
システム担当者:従来は、futureメソッドを利用して課題を100件ずつループして取得していましたが、Salesforceの制限でfutureメソッドの呼び出し回数は50回が上限でした。
そのため、バッチ化して改善しました。
そのため、バッチ化して改善しました。
SalesforceからBacklog への新しい課題登録では、Backlogの標準項目に加え、親課題も入力して登録できるようになりました。こちらもBacklogユーザーのタスク管理においては以前より欲しかった機能なので追加機能としては非常にありがたいです。
システム担当者:従来のインテグレーション「メールによる課題登録」を利用した課題登録では、各種標準項目や親課題の指定はできませんでした。そのため、Backlogが提供するAPIを利用することで実現しました。あわせて登録する際の入力画面も作成しました。
また、Salesforce上でのBacklogの課題取込みについても、親課題の設定を取り込めるように改善しました。子課題を取り込む際には、Salesforce上で親課題への紐づけを行うため、親課題、子課題の順に取得してSalesforceへレコード登録する必要がありました。
また、Salesforce上でのBacklogの課題取込みについても、親課題の設定を取り込めるように改善しました。子課題を取り込む際には、Salesforce上で親課題への紐づけを行うため、親課題、子課題の順に取得してSalesforceへレコード登録する必要がありました。
他にも新たに、Salesforceから課題登録時にカスタム属性項目を入力指定できるようになりました。この機能についても詳しく教えていただけますか?
システム担当者:Backlog側では、プロジェクト毎に利用者が色々な用途に応じて個別の項目「カスタム属性項目」を作成しています。Salesforceから課題登録を行う画面では、まずプロジェクトを選択し、選択したプロジェクトで定義しているカスタム属性項目をBacklogから取得して画面に表示し、入力できるように対応しています。
プロジェクト管理においては欠かせない項目もしっかりとカバーできるのですね。こちらはプロジェクトによっては必須項目として設定しているものもあるかと思いますが、Salesforce側でも入力漏れは発生しないようになっているのでしょうか?
システム担当者:はい、そうですね。プロジェクトに定義しているカスタム属性項目をBacklogから取得する際、項目毎に「必須 or 任意」の情報も取得しており、Salesforce側の入力画面で必須チェックを行うようにしています。
他にも選択リストについて、項目毎に選択できる値をBacklogから取得し、Salesforce側の入力画面で選択値を選べるように対応しています。ちなみに、Backlogでは選択リストで「その他」を選択することができ、あわせて具体的な値をテキスト入力できる仕様があります。BacklogSyncでもこれに対応し、Salesforce側の画面でその他を選択した際は、テキスト入力欄を設けています。
他にも選択リストについて、項目毎に選択できる値をBacklogから取得し、Salesforce側の入力画面で選択値を選べるように対応しています。ちなみに、Backlogでは選択リストで「その他」を選択することができ、あわせて具体的な値をテキスト入力できる仕様があります。BacklogSyncでもこれに対応し、Salesforce側の画面でその他を選択した際は、テキスト入力欄を設けています。
Salesforce側でもBacklogでの課題登録時と同じ内容で入力ができるようにする細部までのこだわりを感じますね。ユーザーにとっても痒い所に手が届く機能だと思います。
他の細かなこだわりなどもあれば教えてください。
システム担当者:数値型や日付型の入力範囲についてもこだわりました。Backlogでは入力できる値の範囲指定が可能になっています。こちらもSalesforceの入力画面で同様の動きを実現するために、Backlogから範囲設定を取得して、範囲内の値のみ入力できるようにしました。また、Backlogでは、初期値(デフォルト値)の指定も可能であるため、Backlogから初期値の設定情報も取得し、Salesforceの画面で省略した場合は初期値を設定するようにしています。他にもBacklogでは数字の単位表示(MB、GBなど)もカスタム指定できるため、Salesforceの入力画面でも、Backlogから単位の設定情報を取得して表示するようにしました。こういったカスタム属性項目全般への対応によりBacklog側での課題登録と同じユーザビリティを感じられるようにしています。
ちなみにBacklogでは、標準項目の種別(タスク、バグなど)で選択した値に応じて、入力できるカスタム属性項目の設定が可能ですが、こちらはBacklogSyncでも対応しているのでしょうか?
システム担当者:はい。こちらも、種別と種別毎に入力できるカスタム属性項目をBacklogから取得することで、入力できる項目のみをSalesforceの入力画面に表示するように対応しています。
他にも、Backlog側で更新した課題をSalesforceに自動連携できる機能が追加されました。こちらも非常に便利な機能ですが、どのように実装したのでしょうか?
システム担当者:こちらの実現には、Backlogのwebhookを利用しました。自動連携の対象プロジェクトは、予め、有効ボタンを押下してもらうことで、内部的にBacklogへwebhook登録を行うようにしています。それによりBacklog側では、課題更新時にwebhookが動作し、その先でSalesforce上のBacklogSyncの機能が動き、課題の更新処理を行っています。
まさにBacklogとSalesforceの双方向同期におけるキーとなる機能なのですね。これまで以上に利便性が向上したと思いますが、最後に、開発チームとしてBacklogSyncに対する思いをお聞かせください。
システム担当者:BacklogSyncは、バックエンドの技術的な設計と最適化を通じて、プロジェクト管理をより効率的にしています。新機能の追加により、さらにスムーズな連携が可能になり、チーム全体の生産性が向上しました。今後もOEM版も含めてより広く普及してほしいという想いがあります。