推しアイデア
アイスブレイクで 「あい」がモチーフのランダムなテーマで あいうえお作文してもらって AIに採点させる アプリ
アイスブレイクで 「あい」がモチーフのランダムなテーマで あいうえお作文してもらって AIに採点させる アプリ
「あい」がいっぱいついている。すごい
ベースはシンプルな静的Webアプリケーションで作成しつつ、必要な機能を API から提供していること
あいうえお作文を、AIに採点してもらうゲームです。 「アイ」スブレイクに使えそうなアプリを目指してみました。←うまい
たとえばユーザーの入力が「吾輩は猫である」として、「ワ」から始まっていることを検査するには、jsの機能では不十分でした。
"吾輩は猫である".startsWith("ワ") // false
これを正しく検査するために、Java の形態素解析エンジン Kuromoji を JS 用にラップした kuromoji.js のラッパーライブラリである kuromojin を使用しました。 以前までは形態素解析用にサーバーが必要でしたが、このライブラリでは 不要になっています。うれしい。
このライブラリを「文字列→読み」の変換として利用したり、
/** * 与えられた文字列を、カタカナのみの読みに変換する関数。 * @param {string} text 変換対象の文字列 * @returns 読み(カタカナ)に変換された文字列 */ export async function convertToYomi(text) { return tokenize(text).then((tokens) => { return tokens .map((token) => { return token.reading || token.surface_form; }) .join(""); }); }
指定した文字列から始まっているかをチェックする関数として実装することで、要件を解決しています。
/** * 文字列が、指定されたひらがなから始まっているかを確かめる関数。 * @param {string} text 検査したい文字列 * @param {string} excepted 頭にくることが期待されている文字(例:あ、い) * @return {boolean} 指定した文字で始まっているかどうか */ export async function startsWithHiragana(text, excepted) { if (!text || text === "" || !excepted || excepted === "") { throw new Error("引数が不正です"); } const yomi = await convertToYomi(text); const exceptedKana = hiraToKana(excepted); return yomi.startsWith(exceptedKana); }
(最近話題の)さくらのクラウドを利用してみたかったので、使いました。もともと AWS Beanstalk (EC2 + Code Pipeline)を使用してホスティングしていましたが、これを移行した形になります。
さくらのクラウドでは、「AppRun」というコンテナをホスティングするサービスをベータ版として提供しています。デプロイしたいサーバをdockerイメージとしてビルドし、クラウド上のコンテナレジストリに登録することで AppRun 上から使用することができます。(参照)
以前は jisho.org の API に問い合わせてランダムな「あい」から始まる単語を取得していました。が、
Wiktionary が前頁のデータを xml.bz2
形式で公開していることに気が付いたので、これを ダウンロードしてJSONに変換、これを参照することでお題を選んでいます。
参加者の技術レベルが
なので、比較的難しい技術は使わず、HTML+CSS+JS の範囲で開発できる環境を整えるようにしました。 そのうえで技術的限界を引き上げるべく、Express でホスティングした API サーバから各機能を提供することで高度な機能を実現しています。
みんなでアイコンを書きました。
よつ
まいか
天パ
ゆうた