LoginSignup
3
1

More than 3 years have passed since last update.

【kintone】英語勉強ツールを作る

Last updated at Posted at 2021-01-12

kintoneで英語を読んでくれる英語勉強ツール作ってみたので紹介します👀

アプリの準備

フィールドの種類 フィールドコード フィールド名 メモ
スペース spSuteki 詳細画面の読み上げボタンにします
文字列(1行) 英文 英文
文字列(1行) 和訳 和訳
文字列(1行) 読み上げボタン 🔊(絵文字のスピーカー) 一覧画面用の読み上げボタンにします。値は空にしておきましょう。

一覧画面

JavaScriptを使ったカスタマイズで普通の一覧に読み上げボタン(🔊)をつけます。

image.png

詳細画面

詳細画面ではスペースに読み上げボタン(🔊)を設置します。
単語登録用のアクションボタンがあってもいいですね👀そのへんはお好みで。

image.png

JavaScriptを書く

英語で読み上げる

こちらを参考にさせていただきました👀
https://developer.mozilla.org/ja/docs/Web/API/SpeechSynthesisUtterance
https://qiita.com/hachisukansw/items/c2b9bf2f0e137af39f38

const readEng = (stcEng) => {
  const u = new SpeechSynthesisUtterance();
  u.text = stcEng;
  u.lang = "en-US";
  u.rate = 1.0;
  speechSynthesis.speak(u);
};

一覧画面

アプリの準備で作っておいた文字列(1行)をボタンに変身させます。
(わざわざフィールドを作らず、英文フィールドの前後に追加しても良いかも知れない。)

kintone.events.on(["app.record.index.show"], (event) => {
  //ボタンを置きたいフィールドの情報を取ってくる
  const sp = kintone.app.getFieldElements("読み上げボタン");
  event.records.forEach((r, idx) => {
    //ボタンを作る
    const btn = document.createElement("button");
    btn.textContent = "🔊";
    sp[idx].firstChild.appendChild(btn);
    //ボタンをクリックしたときの動作
    btn.onclick = () => {
      readEng(r.英文.value);
    };
  });

  return event;
});

詳細画面

ボタン設置してみましたが、わざわざクリックするのは面倒な気がしたので・・・
スペースキー押しても読んでくれるようにしました。


kintone.events.on(["app.record.detail.show"], (event) => {
  //ボタン設置
  const sp = kintone.app.record.getSpaceElement("spSuteki");
  const btn = document.createElement("button");
  btn.textContent = "🔊";
  sp.appendChild(btn);

  //ボタンをクリックしたときの動作
  btn.onclick = () => {
    readEng(event.record.英文.value);
  };

  //スペースキー押しても読み上げる
  document.onkeydown = (e) => {
    if (e.code === "Space") {
      readEng(event.record.英文.value);
    }
  };

  return event;
});

できあがり

gifだから音声でないけど・・・👀雰囲気でも伝わればいいかな。

やった!これで、英語の勉強がはかどりますね!
が、がんばります!
eng.gif

おまけ

読み上げボタンの位置

読み上げボタンを英文フィールドに追加しても、別に悪くはないかな!👀✨✨
image.png

他の言語で読み上げたいとき

英語以外の言語を勉強したいよ~!ってときは
langプロパティに好きな言語コードを設定します。
↓たとえば中国語ならこんな感じ!

const readChn = (stcChn) => {
  const u = new SpeechSynthesisUtterance();
  u.text = stcChn;
  u.lang = "zh-CN"; //←ここで読み上げる言語が変更できるよ
  u.rate = 1.0;
  speechSynthesis.speak(u);
};

読み上げたい言語は↓こちらを参考にされるといいかも?
https://www.benricho.org/translate/languagecode.html

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1