技術系

Webアプリにチュートリアルを追加する

技術系

こんにちは、なかにしです。

最近はスマホ(ネイティブ)アプリにチュートリアルが存在しているのが普通になってきましたが、Webアプリにチュートリアルってあまり見かけないなーと思ったので、作成してみたいと思います。

実装方法を調べてみる

とりあえずマジョリティに従え!ということで調べてみます。

やはり多いのは、JSライブラリを使用した実装ですね。
Intro.jsshepherdjs あたりが有力みたいです。

自作でされている方もいらっしゃるのでしょうが、
今回調べた限りではほとんどヒットしませんでした。

Intro.jsで実装

Intro.js と shepherdjs ともに、オープンソースではありますが、商用利用はお金がかかるとのこと。

とりあえず簡単と評判の Intro.js を試してみます。

Webアプリを用意

簡単なWebアプリ的なものを用意しました。

▼ソースコードはこちら

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
  </head>

  <body>
    <div class="title">
      <h1>Webアプリ</h1>
      <p>サンプルのWebアプリです。</p>
    </div>
    <div class="process-list">
      <h2>手順一覧</h2>
      <ul>
        <li>手順1</li>
        <li>手順2</li>
        <li>手順3</li>
      </ul>
    </div>
    <div class="thoughts">
      <h2>チュートリアルを作成した感想</h2>
      <p>思ったより簡単でした。10分くらいで完成しました。</p>
    </div>
  </body>

</html>

これに、チュートリアルを付けていきます。

JS, CSSの読み込み

今回はCDNでインストールします。
公式に書いてある通り、cssとjsをインストールしてきます。

<link rel="stylesheet" href="https://unpkg.com/intro.js/introjs.css">
<script src="https://unpkg.com/intro.js/intro.js"></script>

チュートリアルの設定

チュートリアルは、以下の関数で呼び出しができます。

introJs().start();

チュートリアル中に強調したい場所に、data-intro データ属性を付与します。

<div data-intro="チュートリアルの手順です。">

今回は、ボタン押下時にチュートリアルが開始し、色分けした三カ所を回るようにしました。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://unpkg.com/intro.js/introjs.css">
    <link rel="stylesheet" href="style.css">
    <script src="https://unpkg.com/intro.js/intro.js"></script>
  </head>

  <body>
    <button onclick="startIntro()">チュートリアル開始</button>
    <div class="title" data-intro="タイトルです。">
      <h1>Webアプリ</h1>
      <p>サンプルのWebアプリです。</p>
    </div>
    <div class="process-list" data-intro="チュートリアルの手順です。">
      <h2>手順一覧</h2>
      <ul>
        <li>手順1</li>
        <li>手順2</li>
        <li>手順3</li>
      </ul>
    </div>
    <div class="thoughts" data-intro="感想です。">
      <h2>チュートリアルを作成した感想</h2>
      <p>思ったより簡単でした。10分くらいで完成しました。</p>
    </div>
    <script src="index.js"></script>
  </body>

</html>
const startIntro = () => {
  introJs().start();
};

完成

これにて完成です!

さいごに

今回は、CDNで用意されている CSS や JS を読み込み、デフォルトの挙動を使用するように実装しました。

ご覧いただいた通り、デフォルト挙動でも結構リッチですが、もっとオリジナリティを出したい!という方向けに、CSS や JS はカスタマイズ可能になっています。

ドキュメントのサンプルを見る限り、カスタマイズすればさらにリッチなものが出来そうです。
https://introjs.com/docs

npmにも対応しているので、Reactなどにも簡単に導入できそうですね。
自作アプリをリッチにする為の、いいアクセントになりそうです。

今回はここまで!
Enjoy Hacking!!

タイトルとURLをコピーしました