クラウド翻訳サービス「Gengo」のAPIを使って25万文字をわずか10日で翻訳してみた - ノウハウ編

とある仕事でクラウド翻訳サービスのGengoを利用しました。ちょっとしたハマりどころや落とし穴があったのでメモしておきます。

はじめに

前回はGengo APIの導入方法について書きました。 今回は発注時のノウハウや気をつけたい点について書きます。

発注のフロー

まずは発注から納品完了までのフローを書いておきます。

  • APIで見積もり取得する(「クレジット」という単位で見積もりが返ってきます)
  • 必要なクレジットを管理画面から購入(1クレジット=1円)
  • APIで発注(費用としてクレジットが引かれます)
  • 翻訳者から翻訳がアップされる
  • 確認して修正要望があればそのようにF/B
  • なければ承認して完了

時間圧縮したいなら発注は分割する

これが最重要です。何よりも大事。

GengoはAPIによる1回の発注につき1人の翻訳者がつきます(厳密には違いますが)。

1回の発注APIに100件の案件を盛り込めば一人の翻訳者が100件を担当します。 1回の発注APIに10件の案件を乗せ、それを10回に分割すれば10人が100件を担当します。

無自覚に発注すると「一人の翻訳者に全案件をまとめて発注する」という形になるかと思いますが、 これでは一人の翻訳者が多くの案件をこなすためほとんど期間圧縮になりません。

多くの翻訳者に薄く広く発注し期間を圧縮するなら、発注を分割すべきです。

つまりこうではなく

data = { 
        jobs : {}
    }


# forでdata['jobs']にjobを100件入れて一回のリクエストで投げます
for i in range(0, 100):
    data['jobs']['job_' + str(i)] = {
            'type'          : 'text',
            'slug'          : '#type your slug',
            'body_src'      : 'body text body text body text ...',
            'position'      : 'no',
            'lc_src'        : 'en',
            'lc_tgt'        : 'ja',
            'tier'          : 'standard',
            'auto_approve'  : 0,
            'force'         : 0,
            'use_preferred' : 0,
            'comment'       : ''
    }

gengo.postTranslationJobs(jobs=data)

こうです。

# 10件ごとにリクエストなげます
for i in range(0,10):

    data = { 
            jobs : {}
        }

    for j in range(0, 10):
        data['jobs']['job_' + str(i) + str(j)] = {
                'type'          : 'text',
                'slug'          : '#type your slug',
                'body_src'      : 'body text body text body text ...',
                'position'      : 'no',
                'lc_src'        : 'en',
                'lc_tgt'        : 'ja',
                'tier'          : 'standard',
                'auto_approve'  : 0,
                'force'         : 0,
                'use_preferred' : 0,
                'comment'       : ''
        }

    gengo.postTranslationJobs(jobs=data)

実は、私もこれを知らずに最初は一人の翻訳者に250件を発注してました…。

目安時間は目安にならないこともあるので注意

これも重要です。

Gengoに発注後、管理画面を見ると「完了目安時間」がでます。 これは安心感があってありがたいのですが、残念ながらこの時間までに終わらないこともあります。

この目安は文字数をもとにシステムが概算した数字で、翻訳者の方が提示した納期ではないんですね。 ですので納期をこちらから明示するとよいです。

発注の際に下記のコメントを記述しておくのがよいと思います。「日本時間●月●日(●曜日)の●時までによろしくね」と書けばよいかと。

I'd appliciate it if you translated this sentence 
by Jan 15, 201X 11:30 AM Japan time.
Best regards.

Japan timeと書いておくのは大事。

1クレジット=1円

APIで見積もりを取得するとクレジットという単位で見積もりが返ってきます。これ、単純に1クレジット=1円と考えて下さい。 クレジットは管理画面から買えます。APIで発注リクエストをする前に、必要な分のクレジットを買ってください。

なお、領収書はクレジット単位で発行できます(案件単位でもでますが)。

翻訳者は実は交代することがある

先ほど、1APIリクエストに1翻訳者と言いましたが、厳密には違います。 翻訳者が辞退することがあり、そこに別の人が対応に入ることがあるのです。

例えば200案件を1リクエストで投げた場合、 最初の翻訳者は10件やって辞退し、次の人が20件やってまた辞退し、ということが起こり得ます。

gengoの翻訳者交代シーン

翻訳者が辞退すると次の翻訳者がつくまでに空白の時間が生まれて効率が悪化しますから(シームレスに翻訳者がつくこともあります) この観点でもやはりAPIによる発注は分割することが望ましいです。

発注する時は以下の点を考えて分割するのが良いでしょう。

  • 一人の人間が常識的にこなせる量に案件を分割する
  • 試しに一かたまりを発注し完了するまでの時間を計測する
  • 時間がかかりすぎてないか、頻繁な辞退がなかったかをチェックして1リクエストの発注量を調整
  • 残りの案件も分割して発注

発注件名にシリアルな番号を付与しておくとあとで便利になる

Gengoの案件管理UIはまだまだ発展途上段階で、大量の案件管理には若干の難がありあす。 特定の案件を探すにはキーワード検索に頼ることが多いので、案件の件名にユニークな番号を振っておくと便利です。

だいたいこんなところです。 また思い出したら追記します。