TDLib (Telegram Database library) は、Telegram クライアントを構築するためのクロスプラットフォーム ライブラリです。ほぼすべてのプログラミング言語から簡単に使用できます。
特徴
例とドキュメント
依存関係
建物
CMake C++ プロジェクトでの使用
Java プロジェクトでの使用
.NETプロジェクトでの使用
他のプログラミング言語と併用する
ライセンス
TDLib
は多くの利点があります。特にTDLib
次のとおりです。
クロスプラットフォーム: TDLib
、Android、iOS、Windows、macOS、Linux、FreeBSD、OpenBSD、NetBSD、illusmos、Windows Phone、WebAssembly、watchOS、tvOS、visionOS、Tizen、Cygwin で使用できます。最小限の労力の有無にかかわらず、他の *nix システムでも動作するはずです。
多言語: TDLib
C 関数を実行できる任意のプログラミング言語で簡単に使用できます。さらに、ネイティブ Java ( JNI
を使用) バインディングと .NET ( C++/CLI
およびC++/CX
を使用) バインディングがすでに存在します。
使いやすさ: TDLib
すべてのネットワーク実装の詳細、暗号化、およびローカル データ ストレージを処理します。
ハイパフォーマンス: Telegram Bot API では、各TDLib
インスタンスは 25000 を超えるアクティブなボットを同時に処理します。
詳細な文書化: すべてのTDLib
API メソッドとパブリック インターフェイスが完全に文書化されています。
一貫性: TDLib
、すべての更新が正しい順序で配信されることを保証します。
信頼性: TDLib
、低速で信頼性の低いインターネット接続でも安定した状態を保ちます。
安全: すべてのローカル データは、ユーザーが提供した暗号化キーを使用して暗号化されます。
完全非同期: TDLib
へのリクエストは相互にブロックしたり、その他のものをブロックしたりすることはなく、応答は利用可能なときに送信されます。
TDLib の基本概念の説明については、「はじめに」チュートリアルを参照してください。
例を見てみましょう。
TDLib のビルド方法の詳細については、TDLib ビルド手順ジェネレーターを参照してください。
JSON、C++、Java、および .NET インターフェイスの説明を参照してください。
使用可能なすべてのTDLib
メソッドおよびクラスのリストについては、td_api.tl スキームまたは自動生成された HTML ドキュメントを参照してください。
TDLib
以下に依存します。
C++14 互換コンパイラー (Clang 3.4 以降、GCC 4.9 以降、MSVC 19.0 以降 (Visual Studio 2015 以降)、インテル C++ コンパイラー 17 以降)
OpenSSL
ズリブ
gperf (ビルドのみ)
CMake (3.0.2+、ビルドのみ)
PHP (オプション、ドキュメント生成用)
TDLib
ビルドする最も簡単な方法は、TDLib ビルド命令ジェネレーターを使用することです。完全なビルド手順を受け取るには、プログラミング言語とターゲット オペレーティング システムを選択するだけで済みます。
一般に、すべてのTDLib
依存関係をインストールし、 TDLib
ソースを含むディレクトリを入力し、CMake を使用してそれらをコンパイルする必要があります。
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build .
メモリの少ないデバイスでTDLib
ビルドするには、メインのTDLib
ソース コードをコンパイルする前に SplitSource.php スクリプトを実行し、必要なターゲットのみをコンパイルします。
mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release .. cmake --build . --target prepare_cross_compiling cd .. php SplitSource.php cd build cmake --build . --target tdjson cmake --build . --target tdjson_static cd .. php SplitSource.php --undo
私たちのテストでは、libc++ を使用した Clang 6.0 ではファイルあたり 500 MB 未満の RAM が必要で、GCC 4.9/6.3 ではファイルあたり 1 GB 未満の RAM が必要でした。
CMake を使用する C++ プロジェクトの場合、 TDLib
プロジェクトの一部としてビルドするか、システム全体にインストールするのが最善の方法です。
CMake プロジェクトで使用できるライブラリがいくつかあります。
Td::TdJson、Td::TdJsonStatic — JSON インターフェースの動的バージョンと静的バージョン。これはシンプルな C インターフェイスを備えているため、C 関数を実行できるプログラミング言語で簡単に使用できます。詳細については、td_json_client のドキュメントを参照してください。
Td::TdStatic — 一般的な用途のための C++ インターフェイスを備えた静的ライブラリ。詳細については、ClientManager およびクライアントのドキュメントを参照してください。
たとえば、CMakeLists.txt の一部は次のようになります。
add_subdirectory(td) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
または、 TDLib
をインストールして、次のように CMakeLists.txt で参照することもできます。
find_package(Td 1.8.39 REQUIRED) target_link_libraries(YourTarget PRIVATE Td::TdStatic)
example/cpp/CMakeLists.txt を参照してください。
TDLib
、JNI を通じてネイティブ Java インターフェイスを提供します。有効にするには、CMake にオプション-DTD_ENABLE_JNI=ON
を指定します。
Java からTDLib
使用する例と、詳細なビルドおよび使用手順については、example/java を参照してください。
TDLib
C++/CLI
およびC++/CX
を通じてネイティブ .NET インターフェイスを提供します。有効にするには、CMake にオプション-DTD_ENABLE_DOTNET=ON
を指定します。 .NET Core は、バージョン 3.1 以降、Windows 上でのみC++/CLI
サポートするため、古い .NET Core が使用されている場合、または移植性が必要な場合は、代わりに P/Invoke を通じてTDLib
JSON インターフェイスを使用する必要があります。
C# からTDLib
使用する例と詳細なビルドおよび使用手順については、example/csharp を参照してください。 C# UWP アプリケーションからTDLib
使用する例については、example/uwp を参照してください。また、Visual Studio 拡張機能「TDLib for Universal Windows Platform」のビルドと使用方法の詳細については、「example/uwp」を参照してください。
TD_ENABLE_DOTNET
オプションを有効にしてTDLib
をビルドすると、一部のファイルからC++
ドキュメントが削除されます。 C++
ドキュメントを戻すには、次のファイルをチェックアウトする必要があります。
git checkout td/telegram/Client.h td/telegram/Log.h td/tl/TlObject.h
TDLib
効率的なネイティブ C++、Java、および .NET インターフェイスを提供します。ただし、ほとんどのユースケースでは、C 関数を実行できるプログラミング言語で簡単に使用できる JSON インターフェイスを使用することをお勧めします。 JSON インターフェイスの詳細な説明については td_json_client ドキュメントを、使用可能なすべてのTDLib
メソッドとクラスのリストについては td_api.tl スキームまたは自動生成された HTML ドキュメントを参照してください。
TDLib
JSON インターフェイスはセマンティック バージョン管理に準拠しており、同じメジャー バージョン番号を持つバージョンはバイナリで下位互換性がありますが、基礎となるTDLib
API はマイナー バージョンやパッチ バージョンごとに異なる場合があります。異なるTDLib
バージョンをサポートする必要がある場合は、 version
オプションの値を使用して正確なTDLib
バージョンを見つけ、適切な API メソッドを使用できます。
このような使用例については、example/python/tdjson_example.py を参照してください。
TDLib
、Boost Software License の条件に基づいてライセンス供与されています。詳細については、LICENSE_1_0.txt を参照してください。