エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

翻訳API:みんなの自動翻訳をJavaScriptから呼び出して使ってみた

経緯

RSSリーダー作ったのだが、英語サイトも購読している。
その際、英語だと視認性が悪いので、翻訳したいと考えて、翻訳のAPIがないか探したら、"みんなの自動翻訳"ってAPIが無料で使えるらしいので、使うことにした。
その際に使い方を調べたので、まとめておく。

環境

nodeからAPIを呼び出しているので、nodeのバージョンと利用しているモジュールのバージョンを記載

$ node -v
v18.6.0
"axios": "^1.3.4",
"axios-oauth-client": "^2.0.2",
"dotenv": "^16.0.3",

axios:APIを呼び出すリクエスト生成のために利用 axios-oauth-client:Oauth認証のために利用 dotenv:APIキーなどの管理のために利用

dotenvについては、以下で調査したので、気が向いたら見て貰えればと

suzaku-tec.hatenadiary.jp

実装

まだAPIとして実装はせず、実験的に利用できるか調査するための実装をした。

require('dotenv').config();

var url = 'https://mt-auto-minhon-mlt.ucri.jgn-x.jp'; // 基底URL (https://xxx.jpまでを入力)
var key = process.env.api_key; // API key
var secret = process.env.api_secret; // API secret
var name = process.env.login_id; // ログインID

var api_name = 'mt'; // API名 (https://xxx.jp/api/mt/generalNT_ja_en/ の場合は、"mt")
var api_param = 'generalNT_ja_en'; // API値 (https://xxx.jp/api/mt/generalNT_ja_en/ の場合は、"generalNT_ja_en")

var axios = require('axios');
var oauth = require('axios-oauth-client');
const getClientCredentials = oauth.clientCredentials(
  axios.create(),
  url + '/oauth2/token.php',
  key,
  secret,
);

async function test() {
  const auth = await getClientCredentials();

  var params = {
    access_token: auth.access_token,
    key: key, // API Key
    api_name: api_name,
    api_param: api_param,
    name: name, // ログインID
    type: 'json', // レスポンスタイプ
    text: 'おはようございます', // 翻訳テキスト
  };

  // クエリパラメータで渡さないと523エラーが返ってくる(´・ω・`)
  var searchParams = new URLSearchParams();
  for (let key in params) {
    searchParams.append(key, params[key]);
  }

  const res = await axios.post(url + '/api/', searchParams);
  console.log(res.data.resultset.result.text);
}

test();

実行したら、以下の結果になった。

$ node index.js
Good morning

簡単な文字列だから、当然
流れとしては、Oauth認証→翻訳リクエストの流れ。
よくあるAPI利用手順。
APIのリクエストレスポンスの形式は、公式サイトにサンプルソースと一緒に公開されているから、内容見て、必要な情報を抜き出せる。

感想

調査する前までは、DeepLかGoogle翻訳に行き着くんだろうなぁと思っていたが、全然認知してないAPIがあることに驚いた。
日本のITはダメとか言っている記事をよく見るけど、ちゃんと動くし、研究されていることに少し感動しましたわ。

あんまり、国立の研究機関の情報を注視したことがなかったので、今度から見るようにしたい。

公式サイト

みんなの自動翻訳@TexTra®

参考サイト

【Node.js】「みんなの自動翻訳」APIを使ってみた - echo("備忘録");