ブラウザ英単語スライドショーを作成する方法を解説します!

slide-show2 中級者向け
リン先生
こんにちは!英語上級者になりたい方のサポート役、リンです♪

突然ですが、画面操作せずに手軽に英単語を覚えたいことってありませんか?


フラッシュカードやAnki等で画面操作して英単語を覚えることも悪くないですが、画面操作せずに英単語を覚えることができたらもっとお手軽に勉強ができると思います。


本記事ではそんな望みを実現する方法を解説するものです。


具体的な画面を見てみましょう、次です。

このようにPCまたはスマホで英単語がスライドショーのように流れます。


しかも、流れてくる単語は自分が好きな単語リストにできたり、ランダムにすることができます。


興味湧いてきましたか?


もしあなたがそうであればこの記事は役に立つと思います。


それでは「ブラウザ英単語スライドショーを作成する方法を解説します!」と題して解説を始めます。

「ブラウザ英単語スライドショー」の作成方法(免責事項)

リン先生
「ブラウザ英単語スライドショー」の作成方法(免責事項)について話します。

免責事項は次になります。

免責事項
このページ掲載されている方法は正確性について万全を期していますが、当ブログの管理人はこのページの情報を用いて行う一切の結果について、何らの責任を負うものではありません。当ページの情報に起因して利用者に生じた損害につき、当ブログの管理人は責任を負いかねますので了承ください。


「ブラウザ・ランダム英単語スライドショー」の作成方法(必要なもの)

リン先生
「ブラウザ・ランダム英単語スライドショー」の作成方法(必要なもの)について話します。

スライドショーを実装するにあたり、次のものが必要になります。

 PC(Win、Mac問いません)環境
 Googleのメインアカウント(※メインアカウントでないとGAS(プログラム)の実行ができません)
 インターネット接続環境


「ブラウザ・ランダム英単語スライドショー」の作成方法(実行)

リン先生
「ブラウザ・ランダム英単語スライドショー」の作成方法(実行)について話します。

次のステップ1-3を実行します。


うまくいけば5分ほどで完了します。

 

ステップ1 単語帳を用意する
・Google Spread Sheetファイルを新規作成する。
・英単語リストを貼り付ける。


 

ステップ2 GASを貼り付ける


 

ステップ3 Webページを開く


GASの実行が成功すると次の動画のように処理されます。


ステップ1・単語帳を用意する

リン先生
ステップ1・単語帳を用意する を開始します。



Googleドライブを開きます。


Googleスプレッドシートを新規作成するために、「新規」ボタンをクリックします。

kyokugen020

「Googleスプレッドシート」をクリックします。

kyokugen021

Googleスプレッドシートを開きました。

kyokugen022

シート名は「単語帳」としてください。


1行目はヘッダー部になります。


2行目以降について、

  • A列には単語を入力してください。
  • B列には発音を入力してください。
  • C列には意味を入力してください。
slide-001

これでステップ1は完了です。

ステップ2・GASを貼り付ける

リン先生
ステップ2・GASを貼り付ける を開始します。

ツールバーの「拡張機能」「App Script」をクリックします。

slide-001-2

なお、メインアカウント以外でログインした状態だと下図の画面になります。


もしこうなったら、すべてのアカウントからログアウトして、再度ログインしてください。

kyokugen026

スクリプトエディタを開きました。

kyokugen027

プロジェクト名を分かりやすい名前にします(下図だと「スライドショー」)。


「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。


ファイル名を変更します、「コード.gs」の右横にある「︙」をクリックし「名前を変更」をクリックしてください。

slide-002

「doGet.gs」と名付けてください。


「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

slide-003

次のコードをコピーしてください。

function doGet() {
  return HtmlService.createHtmlOutputFromFile('Page');
}

上書きして貼り付けます。


次の部分も上書きして貼り付けてください。


貼り付けた後は「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

function myFunction(){

}
slide-004

ファイルを追加します。


「+」「スクリプト」をクリックします。

slide-005

ファイルに名前を付けます。

slide-006

「getRandomWord.gs」と付けてください。


「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

slide-007

次のコードをコピーしてください。

function getRandomWord() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('単語帳');
  const lastRow = sheet.getLastRow();
  const randomRow = Math.floor(Math.random() * lastRow) + 1;

  const range = sheet.getRange(randomRow, 1, 1, 3);
  const values = range.getValues();

  return {
    word: values[0][0],
    pronunciation: values[0][1],
    meaning: values[0][2]
  };
}

上書きして貼り付けます。


次の部分も上書きして貼り付けてください。


貼り付けた後は「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

function myFunction(){

}
slide-008

ファイルを追加します。


「+」「HTML」をクリックします。

slide-009

ファイルに名前を付けます。


「Page.html」と付けてください。


「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

slide-010

次のコードをコピーしてください。

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
    <base target="_top">

    <style>
        body { background-color: #343540 !important; color: #FFFFFF !important; }
        #wordDisplay, #pronunciationDisplay, #meaningDisplay { display: none; opacity: 0; transition: opacity 2s; font-size: 10vh; }
        #wordDisplay, #pronunciationDisplay { font-family: "Times New Roman", Times, serif; }
        #meaningDisplay { font-family: "Hiragino Mincho Pro", "Yu Mincho", "YuMincho", "MS PMincho", serif; }

        @keyframes fadeIn {
            0% { opacity: 0; }
            100% { opacity: 1; }
        }

        .fade-in { animation: fadeIn 2s forwards; }

        @keyframes fadeOut {
            0% { opacity: 1; }
            100% { opacity: 0; }
        }

        .fade-out { animation: fadeOut 1s forwards; }
    </style>
</head>
  <body>
    <div class="container">
  <div class="row justify-content-center">
    <div class="col-12 text-center">
      <div id="wordDisplay"></div>
    </div>
  </div>
  <div class="row justify-content-center">
    <div class="col-12 text-center">
      <div id="pronunciationDisplay"></div>
    </div>
  </div>
  <div class="row justify-content-center">
    <div class="col-12 text-center">
      <div id="meaningDisplay"></div>
    </div>
  </div>
</div>

    <script>
      function fetchData() {
        google.script.run.withSuccessHandler(displayData).getRandomWord();
      }

      function displayData(data) {
        const wordDiv = document.getElementById("wordDisplay");
        const pronunciationDiv = document.getElementById("pronunciationDisplay");
        const meaningDiv = document.getElementById("meaningDisplay");

        [wordDiv, pronunciationDiv, meaningDiv].forEach(div => {
        div.style.opacity = 0;
        div.style.display = "none";
        div.classList.remove('fade-out', 'fade-in');});

        wordDiv.innerText = data.word;
        pronunciationDiv.innerText = "【" + data.pronunciation + "】";
        meaningDiv.innerText = data.meaning;

         [wordDiv, pronunciationDiv].forEach(div => {
        div.classList.add('fade-in');
        div.style.display = "block";
        setTimeout(() => {
            div.style.opacity = 1;
        }, 0);
    });

    setTimeout(() => {
      // 9秒後に答えのフェードイン開始
        meaningDiv.classList.add('fade-in');
        meaningDiv.style.display = "block";
        setTimeout(() => {
            meaningDiv.style.opacity = 1;
        }, 0);
    }, 9000);

        setTimeout(() => {
        // 14秒後にフェードアウト開始
        [wordDiv, pronunciationDiv, meaningDiv].forEach(div => {
            div.classList.add('fade-out');
            div.style.opacity = 0;
        });
    }, 14000);

        setTimeout(fetchData, 15000);
      }

      window.onload = fetchData;
    </script>
  </body>
</html>

上書きして貼り付けます。


次の部分も上書きして貼り付けてください。


貼り付けた後は「Ctrl + S」(Macの場合 「Command + S」)でプロジェクトを保存してください。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    
  </body>
</html>
slide-011

「デプロイ」「新しいデプロイ」をクリックします。

slide-012

」マークをクリックしてください。

slide-013

「ウェブアプリ」をクリックします。

slide-014

説明を入力してください(この入力は任意です)。

slide-015

「デプロイ」をクリックしてください。

slide-016

「アクセスを承認」をクリックします。

slide-017

自分のアカウントをクリックします。

slide-018

「Advanced」をクリックします。

slide-019

「Go to スライドショー(unsafe)」をクリックします。

slide-020

「Allow」をクリックします。

slide-021

デプロイ後、Webページができました。


「コピー」をクリックするとWebページのURLをコピーできます。


「完了」をクリックして完了です。

slide-022

もしWebページのURLをコピーし損ねた場合、「デプロイ」「デプロイを管理」クリックから先程の画面に入ることができます。

slide-023


ステップ3・Webページを開く

ステップ1、ステップ2を行うとWebページで英単語のスライドショーが流れます。


OS、PC、スマホ等の環境に依存せず表示されるスライドショーとなります。


まとめ

リン先生
以上が「ブラウザ英単語スライドショーを作成する方法を解説します!」のお話でした。

仕事をしながら、家事をしながら英単語を覚えたい方はぜひ活用ください。


また、英単語に限らず一問一答系の知識もこのスライドショーで覚えることができます。


それではこのプログラムがあなたの学習の役に立てば幸いです。

リン先生
Let’s do it!


メール相談受付中

ブログに対するご意見、

英語の勉強法についての相談、

気軽にしていただけたらと思います。

管理人のキャパシティーが超えない範囲で対応させていただきますね♪

(↓ メール相談は↓をクリック! ↓)

mail-soudan-2