MINHON_WebAPIHelper
MINHON_WebAPIHelperはみんなの自動翻訳のAPI機能を使いやすくまとめたDLLです。

■概要
DLL(Dynamic Link Library)は、共通して利用する機能をモジュールでまとめることにより、開発者の実装の省力化を目的としています。
MINHON_WebAPIHelperを使用すれば、みんなの自動翻訳のWebAPIを容易に利用することができます。

■動作要件
MINHON_WebAPIHelperは.Net Standard2.0で作成されています。
使用するには、.NetFramework4.7以上、もしくは.NET5.0, .NET6.0で作成したアプリが対象となります。
.NetFramework4.7未満のバージョンで当DLLを使用したい場合は、.Net Standard2.0への参照が必要となります。

■搭載されているAPI機能
自動翻訳

・・・

翻訳APIを指定(※後述)して、原文テキストを翻訳します。

文章区切り

・・・

長い文章を指定して、文章を適切な長さに区切ります。

言語検出・・・

原文テキストを指定して、構成されている言語を検出します。

辞書引き・・・

指定した辞書で、指定した単語の意味を調べます。

標準自動翻訳・・・

原言語と訳言語を指定し、利用できる翻訳APIの一覧を取得します。

インストール・アンインストール■インストール
当DLLはVisual Studio上で「参照の追加」からパスを指定し、参照することで利用できます。

■アンインストール
当DLLはレジストリの変更を行っていないため、アンインストールしたい場合はDLLファイルを削除してください。

DLLの利用方法■サンプルコード// 標準自動翻訳APIの利用サンプル
var minhon = new MinhonWebApi(userName, apiKey, apiSecret, proxyInfo: proxyInfo);
var apiRes = minhon.GetStandardAutoTranslationApiList((Enums.Language)cboLang1.SelectedValue, (Enums.Language)cboLang2.SelectedValue);if (apiRes.IsError){// エラー処理return;}

・コンストラクタの引数にはユーザー名(ID), APIキー, APIシークレット, サーバーURL(省略可),プロキシ設定(省略可※)、タイムアウト秒(省略可)を指定してください。
・サーバーURLを省略した場合は、NICTのサーバー「https://mt-auto-minhon-mlt.ucri.jgn-x.jp/」が設定されます。
・タイムアウトを省略した場合は、デフォルト値として20秒が設定されます。

※プロキシ設定について
ProxyInfoはプロキシが設定されている環境での利用を想定しています。
・プロキシ設定されていない環境で利用する場合は該当の引数を省略してください。
・プロキシアドレスは「http://プロキシアドレス(or IP):ポート番号」の形式で指定してください。

※プロキシ認証を利用する場合
・ProxyInfo.ProxyAccountプロパティにユーザー名を設定してください。
・ProxyInfo.ProxyPasswordプロパティにパスワードを設定してください。

■ApiResponseについて
ApiResponseの中にはAPI実行の成否以外にも、様々なオブジェクトが存在します。
各API機能には専用のResultModel(結果モデル)を持っています。

・標準自動翻訳結果モデル
GetStandardResult
・文字区切り結果モデル
SplitResult
・言語検出結果モデル
LangDetectResult
・自動翻訳結果モデル
AutoTranResult
・辞書引き結果モデル
LookupResult
API機能の実行後は上記モデルに取得したデータが保存されています。
適宜利用してください。

注意事項
MINHON_WebAPIHelperは内部でHttpClientを利用しています。
HttpClientはusingで囲うなどして使う度に破棄する用途では設計されていません。
上記の使い方は間違いであり、ソケットを枯渇させる原因となります。
MINHON_WebAPIHelperも原則的には使い回すようにしてください。
例外として、APIが機能しているかどうか応答を得る為にその場で破棄するのは構いません。
上記のような使い方をする場合にはタイムアウト値を短めに設定してください。
■サンプル/// <summary>/// オンライン判定/// </summary>/// <returns>True:オンライン

False:オフライン</returns>

private bool IsOnline(){string proxyAddress = string.Empty;
MINHON_WebAPIHelper.ProxyInfo proxyInfo = null;

if (chkUseProxy.Checked){
proxyAddress = ApiInfo.ProxyAddress + ":" + ApiInfo.ProxyPortNum;
proxyInfo = new MINHON_WebAPIHelper.ProxyInfo();proxyInfo.ProxyAddress = proxyAddress;}

using (MINHON_WebAPIHelper.MinhonWebApi minhon = new MINHON_WebAPIHelper.MinhonWebApi(ApiInfo.ApiUser, ApiInfo.ApiKey, ApiInfo.ApiSecret, ApiInfo.ServerUrl, proxyInfo, 3)){
var res = minhon.SplitSentence("abc", MINHON_WebAPIHelper.Enums.Language.en);

if (res.IsError){
return false;}
else{
return true;}}}リファレンス - API機能■標準自動翻訳
メソッド
GetStandardAutoTranslationApiList
機能説明
原言語と訳言語の言語コードを指定し、自動翻訳APIで利用できる翻訳APIの一覧を取得する機能です。
引数
fromLang

原言語の言語コード(Language列挙体)

toLang

訳言語の言語コード(Language列挙体)

limit

翻訳API一覧の表示上限数(初期値：200)

offset

一覧取得データにおける、オフセット値(初期値：0)

戻り値
ApiResponse

APIで取得された結果データやAPI実行の成否のコードを保持しています。

■自動翻訳
メソッド
AutoTranslation
機能説明
原言語と訳言語の言語コードを指定し、原文を翻訳した結果を取得する機能です。
引数text

翻訳対象の原文テキスト

fromLang

原言語の言語コード(Language列挙体)

toLang

訳言語の言語コード(Language列挙体)

doSplit

翻訳時に原文を分割するかどうかのオプション(初期値：true)

apiId

翻訳APIのID(初期値：generalNT)(※1)

history

文脈利用翻訳の指定(※2)

xmlMode

XMLタグを考慮した翻訳オプション(初期値：0)

prompts

プロンプト(初期値：指定なし)

戻り値
ApiResponse

APIで取得された結果データやAPI実行の成否のコードを保持しています。

(※1) 翻訳APIのIDは言語ペアによって利用できる翻訳APIが異なります。
どの言語ペアでどの翻訳APIを利用できるか知りたい場合は「標準自動翻訳API」を実行してください。
(※2) history引数への値の指定方法はみんなの自動翻訳のWebAPIのページを参照してください。
https://mt-auto-minhon-mlt.ucri.jgn-x.jp/

■文章区切りメソッドSplitSentence
機能説明
原言語の言語コードを指定し、長い文章を適切な長さに区切ります。
引数
text

対象テキストlang

原言語の言語コード(Language列挙体)

doJoin

分割した文章を結合して返却(初期値：false)

戻り値
ApiResponse

APIで取得された結果データやAPI実行の成否のコードを保持しています。

■言語検出
メソッド
LanguageDetect
機能説明
対象テキストから、テキストを構成する言語を判定します。
引数
text

対象テキスト

戻り値
ApiResponse

APIで取得された結果データやAPI実行の成否のコードを保持しています。

■辞書引き
メソッド
Lookup
機能説明
原言語の言語コードと辞書ID(pid)を指定し、対象テキストから単語の意味を調べます。
※辞書IDは複数指定することが可能です。
引数
text

翻訳対象の原文テキスト

lang

原言語の言語コード(Language列挙体)

lookupId

辞書ID(※)

戻り値
ApiResponse

APIで取得された結果データやAPI実行の成否のコードを保持しています。

(※)

辞書IDは複数指定することが可能です。
指定できる辞書IDは後述するUtilityから取得することができます。

リファレンス - Utility■自動翻訳API用文章分割
メソッド
GetSplitTextListForAutoTranslationApi
機能説明
長い文章を翻訳する場合、NICTサーバーでの処理能力を最大限に発揮するため適切に文章を分割します。
※文章区切りAPIとは別の機能です。サーバー接続は行いません。
※短い文章で分割した場合は、かえって速度が低下する可能性があります。
引数
text

対象テキスト

戻り値
List<string>

文章を分割した結果をリスト形式で返却します。

■辞書引きAPI用用語集IDを取得
メソッド
GetLookupPidDictionary
機能説明
辞書引きAPIで指定する辞書ID(pid)の一覧を取得します。
辞書IDはLookupId列挙体で指定する為、どのIDを指定するか予め分かっている場合は当メソッドを利用する必要はありません。
引数なし
戻り値
Dictionary<LookupId,DictionaryオブジェクトにLookupId列挙体をキーとしてstring>キーに対応するID文字列を保持します。

■テキストのバイト数を取得
メソッド
GetByteCount
機能説明
指定したテキストのバイト数(UTF-8)を返します。
※自動翻訳APIでdoSplitオプションをfalseに設定した場合、翻訳テキストの上限値は4,000バイトです。
「自動翻訳API用文章分割」等を利用し、予め適切な文章量に区切ってください。
引数
text

対象テキスト

戻り値
int

引数に指定した対象テキストのバイト数