本稿では、弊社サポートエンジニアの協力を得て、WebAPIを用いた機能拡張に関して記述いたします。
TimeTracker NXは、ソフトウェア開発、ハード設計、営業、Web制作などの知識労働・デスクワーク業務における工数管理・プロジェクト管理のためのツールです。最大の特徴は「徹底した現場志向に基づいて開発されたツール」であることです。
Webサイトやアプリケーションなどのプログラムに対し、外部のプログラムからデータの送受信を行うためのインターフェースです。Web APIを使用することで、外部のプログラムから特定の機能を利用したり、Webサイトの情報を取得したりすることができます。
TimeTracker NXは、Web APIを使用することで、ブラウザの画面から実施できる操作はもちろんのこと、ブラウザの画面からは難しい一括操作や自動実行も実現できます。これにより、TimeTracker NX以外のツール(※)と自動でデータをやり取りすることができます。
※ 例えば、基幹システムやBIツールがあります。
TimeTracker NXは、『プロジェクト』や『ワークアイテム』といったリソースに対して URI(※) が割り当てられています。そのURI に対して GET/POST/PUTといった HTTP の標準的なメソッドを使用してリクエストを送ることで、対象のリソースを操作します。
※Uniform Resource Identifier:Web上にあるあらゆるファイルを認識するための識別子の総称です。
ここでは、Web APIを使用するまでに必要な以下のステップをご紹介します。
どちらも一般的に使用される認証方法ですが、セキュリティや使用状況に応じて
最適な方法を選択する必要があります。
認証方式 |
利用する情報 |
Basic認証 |
ユーザー名とパスワード |
トークン認証 |
トークン(ランダムな文字列) |
どちらも一般的に使用される認証方法ですが、セキュリティや使用状況に応じて
最適な方法を選択する必要があります。
TimeTracker NXにおける具体的な認証方法は以下のページを参照してください。
https://docs.timetracker.jp/webapi/docs/use-api#%E8%AA%8D%E8%A8%BC%E6そ%96%B9%E5%BC%8F
Web APIのメソッドは以下の4種類あります。
メソッド |
実現する処理 |
取得 (GET) |
クエリパラメーターで取得対象のデータや条件を指定し、データを取得します。 |
追加 (POST) |
追加するデータをリクエストボディで指定します。 |
更新 (PUT) |
更新するデータをリクエストボディで指定します。 |
削除 (DELETE) |
URIのパスパラメーターに対象オブジェクトのIDを指定し、データを削除します。 |
各メソッドでは、各形式のデータを使用します。
例) https://timetracker-server.com/api/system/users?id=25
Web APIアプリ開発には、一般的に使用されるプログラミング言語の知識が必要です。
代表的な言語には、JavaScript、Python、Ruby、Java、C#などがあります。
これらの言語の基本構文やデータ操作、関数やクラスの作成などの基礎知識が必要です。
また、各プログラミング言語向けのWebフレームワークを使用することが一般的です。これらのフレームワークは、APIのルーティング、リクエストの処理など、開発者がAPIを作成する際に便利な機能を提供します。
代表的なWebフレームワークには、Express.js(Node.js向け)、Django(Python向け)、Ruby on Rails(Ruby向け)、ASP.NET(C#向け)などがあります。
開発には、APIの作成や操作をサポートするためのライブラリやツールも使用されます。例えば、HTTPリクエストの送信やレスポンスの処理には、Axios(JavaScript)、Requests(Python)、RestSharp(C#)などのHTTPクライアントライブラリが利用されます。
具体的なライブラリは使用する言語やフレームワークに依存します。各言語の解説書などを参照して、使用してください。
一般的にWeb APIを活用により以下の効果があると言われています。
次の章で実際に TimeTracker NXにてWeb APIを活用する例を紹介します。
本章で説明した効果も含まれていますので、あわせて確認してください。
TimeTracker NXを新しく導入しても既に他システムに実績工数を入力している場合は二重で入力することになりますが、これは避けたいところです。
Web APIを活用することにより、他システムに入力した実績工数のデータをTimeTracker NXに自動的に取り込むことができます。
さらに、この処理を定期的に実行する仕組みを作ればデータの入力先を一か所に集約することができ、利用者の負担は増えません。
TimeTracker NXで入力された実績工数は、社内の採算管理や勤怠管理にとっても重要なデータです。
Web APIを活用することでTimeTracker NX に蓄積した実績工数データを、社内で運用している他のシステムに簡単に取り込むことができます。
TimeTracker NXのダッシュボードに表示する工数やワークアイテム件数のデータも、Web APIを用いることで手軽に他の用途に再利用できます。
報告資料にデータを取り込んだり、自社の業務システムで統合管理をしたりと、様々な用途に活用できます。
Web APIの使用においては、セキュリティと認証に関する注意が必要です。HTTPSを使用して通信を暗号化し、データのセキュリティを確保しましょう。HTTPプロトコルでサーバーにアクセスする場合、データの内容は平文でサーバーに送信されるため、データが外部に流出するリスクがあります。必要に応じて、トークンベースの認証メカニズムやOAuthなどの認証プロトコルを使用して、APIへのアクセスを制御することも推奨されます。
TimeTracker NXではトークン認証に対応しているため、トークンを安全に管理し、不正なアクセスから保護することが重要です。
Web APIを使用する前に、リファレンスなど利用方法が記載されたドキュメントを詳しく確認しましょう。
利用可能なAPI、メソッドやパラメータ、応答の形式な度を理解することが重要です。
また、APIのバージョンによりAPIの振る舞いやパラメータが変わることもあります。利用するバージョンに対応したドキュメントを確認しましょう。
TimeTracker NXでは、Web APIリファレンス(※)を公開しており、バージョンアップ時も変更前のバージョンで使っていた機能やパラメータを踏襲するため安全です。(仮に既存動作に影響がある変更が発生する場合には、リリースのご案内にてご連絡します)
※TimeTracker NX のWeb APIドキュメント:https://docs.timetracker.jp/webapi/
Web APIを使用する場合、意図せずサーバーマシンに負荷をかけてしまい、サービスを提供できない状態に陥る(最悪の場合はサーバーマシンがダウンする)ことがあります。特に、Web APIはプログラムから実行することが可能であり、短い時間で多数のリクエストを送ってしまうことが主な要因として挙げられます。
Web API実行時は以下の点を注意することが重要です。
提供元のサービスが設定しているリクエスト数の制限に従う必要があります。過度なリクエストの送信や高負荷状態を引き起こす処理は避け、APIの利用ポリシーに従ってリクエストの頻度や制限に注意しましょう。
TimeTracker NX では、目安としてWeb APIの呼び出し間隔を最低でも100msは空け、Web API利用時はサーバーマシンの処理負荷を監視して過度な負荷をかけない運用を推奨しています。
頻繁に変化しないデータやリソースの場合、キャッシングを活用することでリクエストの呼び出し回数を抑え、サーバーマシンの処理負荷を軽減します。
TimeTracker NXでは『ユーザー数』や『プロジェクト数』などのデータは、一連のWeb APIの処理中には変わらないことが多いです。1度取得した情報をプログラム内の変数で保存し、再度呼び出さない方法があります。
Web APIの利用においては、不要なリクエストや冗長なデータの送信を避けることが重要です。必要なデータのみを要求し、レスポンスに含まれるデータのサイズを最小限に抑えるようにしましょう。
TimeTracker NX には各プロジェクトの「ルートアイテム」があり、このアイテムに対して処理するとプロジェクト内のすべてのアイテムを検索/特定するため、サーバーマシンに負荷がかかります。必要なデータを抽出する条件を指定することで、処理するデータ量を減らし、サーバーマシンにかかる負荷を抑えることができます。
今回の記事では、TimeTracker NXに搭載されているWeb APIの活用について紹介しました。使い方次第では、様々な自動化が実現できます。
活用例でもご紹介した「他システムとの連携」や「集計」の処理を、実際にWeb APIを活用して自動化にチャレンジしてみてください。
既にTimeTracker NXを利用されている方でWeb APIをまだ使ったことがないという方は、これを機にWeb APIを活用してみてはいかがでしょうか?
保守契約をご契約の方は、サポートチームでWeb APIの使い方をサポートいたします。お気軽にお問い合わせください。