April 30, 2019 • ☕️ 3 min read
さーて。最後の手段だ。
名前の生成には、haikunatorを使用し、日本語化にtranslate-google を使うつもりだったが、translate-google を Web上からうまく使えないんで作戦を改める。
その作戦とは・・・
** あらかじめ翻訳済みのテキストをランダムに表示する! **
・・・いや、元々そういう思想がなかった訳じゃ無いんだよ?
翻訳の速度が微妙だった場合、あらかじめいくつか作っておいたセットを用意して、既にリストにあったらそこから取って、無かったらAPI投げる。
んで、新しく取ってきたらリストに追加し、キャッシュちっくに扱う。・・・なんて発想がなかった訳では無いんだ。
が、翻訳APIのスピードがいい感じだったんで、まいっかーみたいな感じにしてただけで。
それに、上記のような方法を取るとしたらスレージが必要になるし、Netlifyはストレージのサービスは今の所無いみたいだから他に用意しないといけないのも面倒だし。
(2019/4/21 時点。できませんかね。ストレージサービス。)
それのさらに退化系。
言ってしまえば
「内部に保持してるテキストをランダムに表示する」
という、もはや人前に晒す意味があるのかどうかも疑わしいレベルのチンケさに成り下がったが、まぁいいや。余計な事考えずに走り切ろう。
という訳で、haikunator カモン!
このライブラリ、adjectives(形容詞)+ nouns(名詞)の組み合わせで言葉を生成しているんだけど、adjectives と nouns を実は配列で保持しているだけなので、見ようと思えば中身が見れたりする。
という訳で、いくつフレーズがあるか、見てみよー! 2000~3000くらいあるかしら。
var Haikunator = require('haikunator')
var hkn = new Haikunator();
console.log(hkn.nouns.length) //=> 96
console.log(hkn.adjectives.length) //=> 91
あ・・あれ? 想像していたよりずっと少ない。 全部で 8736 パターンしか無かったのかよ! 肩透かしくらっちまった。
が、これなら楽勝! nouns と adjectives を分けるべきか? と思ってが、作成したフレーズの日本語訳、こんな感じになった。
art weathered → 風化したアート
art white → アートホワイト
art wild → アートワイルド
art winter → アート冬
art wispy → かすかな芸術
art withered → 枯れた芸術
art yellow → アートイエロー
続く名詞によって形容詞の訳が変わってくるんで、ここは分けずにまとめといた方がよさそう。
というわけで、全ての nouns と adjectives を取り出し、それを組み合わせたフレーズを翻訳APIに投げるスクリプトを作成。
が、translate-google ちゃん、同時に翻訳できる言葉には上限があり、結果 96回すクリプトを流す事に・・・
用途的に RDBに近いので、まず csv に吐き、8736レコード作成完了。
あとはこれを jsonにコンバートして読み込ませればOKかなー
と思ったが、Node.js って、デフォルトでCSVを扱うライブラリ持ってないんかーい。
って事でライブラリ選定から開始。