【football manager2019】選手名の日本語化をGoogleスプレッドシート・VBAを駆使して自動化する

translate
これまでFM2019の日本語化の方法について紹介してきました。

日本語化の方法についてはこれまでの記事の通りですが、日本語化する時に問題となるのが英語名の選手名を日本語にする作業です。
はっきりいってこれが一番面倒くさい作業です、人数も多いし時間もかかって正直やってられません(このチマチマした作業が好きなマゾい人もいますが・・・)

ちまちま一人一人Google検索で調べても良いのですが、何とかして自動化できないか?を追求してみた記事です。
なお元々このブログのテーマでもある社内SEの経験を生かしたややテクニカルな内容となっています。

Advertisement

ユニークIDと選手のリストを作成する

日本語化には前回の記事で紹介したLNCファイルを使用します。

このファイルの構文を見てカンの良い人なら「ExcelにIDと選手名を出力できれば一気に変換できそう」と思う事でしょう。

ですが、このFMシリーズではデータベースの内容を外部出力する機能がありません。テキストファイルに出力する方法はあるのですが形式がRTFのため使い物になりません。
まあ膨大なデータベースがこのゲームの肝になっているので、簡単にはいじらせないようになっているのも理解できます。

ですが、下記の手順ならExcelにIDと選手名をリスト状態で貼り付けるが可能です。

ユニークIDの一覧画面を表示させる

この手順の前に設定画面でユニークIDを表示させる設定にしてください。設定箇所は前回の記事で紹介しています。

ゲーム内の「チーム」を選択すると選手の一覧画面になります。
この画面の左上に、一般情報となっている所をクリックします。
FM2019_ss12

その中にあるユニークIDの項目を選択します。
FM2019_ss13

するとIDと選手名の一覧画面が表示されます。
FM2019_ss14

これで準備完了です。

IDと選手名の一覧をExcelに貼り付ける

次にExcelへこの一覧を出力します、一発で出力は出来ないので下記の手順を踏みます。

先程のID一覧の画面を表示した状態で、右上の「FM」メニューから「ゲーム画面の出力」を選択します。
FM2019_ss15

出力方法は「ウェブページ」を選択します。
FM2019_ss16

次にどこに保存するか聞かれるので、任意の場所に保存します。
FM2019_ss17

保存先にこのようにHTMLファイルが出力されます。
FM2019_ss20

このファイルを開くとこのように先程のID・選手名の一覧がテーブル形式で表示されます。
※もし文字化けしている場合は「UTF-8」へエンコードすれば正常に表示されます。
FM2019_ss18

表示されたテーブルをドラッグで選択状態にして、Excelに貼り付ければこのとおり。
IDをキーとしたレコード一覧として貼り付ける事が可能です。
ここまで来ればデータを加工するのはたやすいでしょう。
FM2019_ss19

ネックなのは1チーム毎しかこの一覧を出せない所です。
なので、チーム毎にウェブページへ出力しないといけません。結構メンドイですが、一人一人作業するよりはかなりマシですよ。

英名→日本名の自動変換

さてここまで来たら後は選手名を日本語にするだけなのですが、Excelに出力できたのだから出来れば一気に変換したいですよね。
とはいっても人名を日本語名に変換する関数なんて無いので、ちょっとひと手間かける必要があります。

私が編み出した方法として下記の2つの手順を紹介します。

方法1:GoogleスプレッドシートのGOOGLETRANSLATE関数を使う

Googleスプレッドシートはご存知でしょうか?
Googleの機能の一つでExcelチックな表計算ソフトです、Googleアカウントがあれば無料で使用できます。

このスプレッドシートはExcelには無いGoogle特有の関数を使用する事が出来ます。その中の一つが「GOOGLETRANSLATE」関数です。

GOOGLETRANSLATE
テキストをある言語から別の言語に翻訳します

構文
GOOGLETRANSLATE(テキスト, [ソース言語, ターゲット言語])

テキスト – 翻訳するテキストです。
テキストの値は二重引用符で囲むか、適切なテキストを含むセルへの参照にする必要があります。

ソース言語 – [省略可 – デフォルトは “auto”] – ソース言語を 2 文字の言語コードで指定します(例: 英語は “en”、韓国語は “ko”、言語を自動的に検出する場合は “auto”)。
ソース言語を省略する場合は、ターゲット言語も省略する必要があります。

ターゲット言語 – [省略可 – デフォルトはシステムの言語] – ターゲット言語を 2 文字の言語コードで指定します(例: 英語は “en”、日本語は “ja”)。

使用例
GOOGLETRANSLATE(“Hello World”,”en”,”es”)

GOOGLETRANSLATE(A2,B2,C2)

GOOGLETRANSLATE(A2)

引用:Googleドキュメントヘルプより

指定したセルの文字列をGoogleの翻訳エンジンを使用して指定した言語に翻訳してくれるという関数です。なかなか素晴らしい関数だと思います。
この関数を使用して英語名が入ったセルを日本語にして変換する、というのが方法1になります。

ではどの程度の変換精度なのか、試してみましょう。

例としてJリーグの外国人選手名を変換してみます。JリーグのデータはJリーグMODでおなじみのかりんちゃんのPS4宅急便にあるデータを使用させて頂いております。いつも有難うございます。

GoogleスプレッドシートにFM2019から出力したデータを貼り付けました。
FM2019_ss21

これをGOOGLETRANSLATE関数で変換してみます。

結果はこのとおり。
B列を変換元のセルにして、ソース言語は「auto」ターゲット言語を「ja」としました。
FM2019_ss22

う〜ん、まあ5割くらいはちゃんと変換されているかなぁという印象です。

Googleの翻訳機能を使用しているので、やはりイニエスタのような有名な選手は変換精度は高いです。
逆に名古屋のジョーのような短名な選手や、比較的珍しい名前は変換精度は低い傾向です。
また中国人・韓国人は漢字名に変換されちゃいますね。

という事で結局チェックや手直しが必要にはなりますが、5割は問題なく変換できたので労力が半分になった、のか・・・?
なおサッカー選手は選手によって呼称が違う場合があり(エムバペ・ムバッペなど)、この方法だと一般的な読み方が重視されるケースが多いです。

方法2:ExcelのVBAでレコード毎にGoogle検索を自動的に行う

もっと変換精度を高めたいという方向けの方法です。

Googleで英語名を検索した結果、表示される日本語名は比較的欲している情報と同じだった事が多かったので、「レコード毎にGoogle検索させて、結果をセルに代入すればいけんじゃね?」と思い付きました。

下記の手順をVBAで一回の処理で行います。

1. IEを起動
2. Googleのトップページを表示
3. 検索ワードを指定セルから取得
4. 検索ボタンを押す
5. 検索結果ページのナレッジパネルの名前をコピー
6. 指定セルに貼り付け

VBAのコード

このコードはパソコンスキルの教科書様にあったサンプルコードを若干改造しています。

なおこのコードの実行の前に参照設定で下記の追加が必要となります。

・Microsoft HTML Object Library
・Microsoft Internet Controls

FM2019_ss23

下記のコードを標準モジュールにコピー&ペーストすれば動作するはずです。

コードの説明

サンプルとして下記のデータを変換すると仮定して進めます。
B列に変換前のデータ、C列に変換後のデータが入ります。
なおこのデータはバルセロナの選手一覧です。

FM2019_ss24

まずはデータの開始行と終了行を変数に格納してください。
そしてコードを実行するとIEが起動して、Googleの検索ボックスにB列の検索ワード(英語名)が入力され、検索が実行されます。

さて次の処理で記載がある「ナレッジパネル」とは何でしょうか。

Googleの検索結果がビジネス情報だった場合、結果の右側に表示されるパネルが「ナレッジパネル」です(画像赤枠)
ここに表示される結果が高確率で日本語名になる事に気づきました(画像青枠)
そこで、このコードでは日本語名をこのナレッジパネルから取得しています。
FM2019_ss25

コードの実行結果は下記のようになります。
これはサンプルの結果なので、正直なところここまで綺麗な結果にはなりません。
ただ方法1が5割くらいの精度だとすると、こちらは8割くらいの精度で変換が可能です。
FM2019_ss26

まとめ:完全自動化は難しい

どちらにしても完全な自動化は難しいという結果ですが、膨大なデータ数を誇るFM2019では日本語化の時間短縮になってくれるはずです。

なお選手名だけでなく、チーム名や監督名などでも使用できます。ただIDは自分で入れないといけませんが・・・。
あとGoogleにも情報が少ないU23以下の選手は精度がかなり落ちます、この辺りは情報の多さから考えると仕方ないですね。

余談ですが、ようやく本格的にFM2019を始めました。
ヴィッセル神戸と日本代表の兼任で始めたんですが、9連敗して速攻監督を解任され次に2部の東京ヴェルディに拾われたものの15位から12位まで順位を上げてシーズンを終えた時点で、選手からの評判が悪すぎるという理由で理事会から解任通告、と現実さながらのきっつい結果です。
残された日本代表監督で現在アジアカップを戦いつつ、次の監督のオファー待ちです。

ゲームの内容についても時間できたら記事にしたいと考えています。