情報科全教科書用語リストをindex.htmlだけで検索できるようにした

# 　概要

情報処理学会 情報入試委員会より、情報科全教科書用語リストがGoogleスプレッドシートなどで公開されました。こちらの詳細については以下のリンクでご確認いただけると助かります。

https://sites.google.com/a.ipsj.or.jp/ipsjjn/wordlist

今回、公開された用語リストをCSVにして検索できるようにしました。CSVの検索については、これまでも継続的にQiitaに投稿しており、一部のユーザーでカスタマイズしていただくなどしております。

- 第一弾

https://qiita.com/tamoco/items/87e344c8832c54d95cfb

- 第二弾

https://qiita.com/tamoco/items/7a0c1c63e262709f0cdc

- 第二弾の更なる改善

https://qiita.com/tamoco/items/84b38c9382d70a77f1bf

これまでのCSVの検索の地続きでかつ、情報科全教科書用語リストを検索しやすいようにしたのが今回の内容です。

# 成果物

- ソースコード

https://gitlab.com/tamoco-mocomoco/information-textbook-term-list-search

- 公開先URL：実際に動作を確認できます！

https://tamoco-mocomoco.gitlab.io/information-textbook-term-list-search/

- スクリーンショット
    - PC画面：こちらがメイン
        - <img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/b7a36d54-067d-0718-7a59-527a89d4e6bc.png">
    - モバイル用
        - <img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/55160234-4d92-5906-0218-97569285dd0e.png">

機能の詳細については以降に記載します。

# 作る目的

- これまでCSV検索を踏まえて検索しやすい仕組みを作る
- 初心者向けに`index.html`の１ファイルだけで作り切る
    - 環境構築とかビルドなどに囚われない
    - その代わり１ファイルのコード量が多くなるけど何とか頑張る
- 使用するフレームワーク類はできるだけ新しいものを使う
    - Vue3,Bulmaは1.0.0
    - `index.html`の１ファイルなのでCDNで読み込んで使う

# そもそもなぜ作るのか？

情報科全教科書用語リストだけでも利用できそうなモノです。ただ、エクセルの表でデータを見るのは限界がありそうです。

## 列やコードなどの説明が別添

コードなどをみると「１ア」などの記号で記載されており、これらが何であるかは別のシートを確認しないとわかりません。
各項目を覚えてからデータを見ていくのはかなりしんどいことになりそうです。

あと、番号は全角と半角で表記揺れがあったりします。例えば半角の1と全角の１など。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/12c8c859-79ae-f53d-4914-bb3274a92aaf.png">

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/8d324d24-d27b-d072-f2a0-85ba6650c916.png">


## 特に教科書のコードはしんどい

教科書のコードはめちゃくちゃ多いので、これもセル１つにドカって入力されていると認識しづらいところです。
これで特定のコードをフィルターで絞ったとしても見づらいです。

<img width="700" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/9d6fab5b-277f-a1c1-301a-80ae9ec4da7f.png">

またコードの教科書の記号・番号や出版社などの別添となる参考情報もかなり量があるので、都度確認しにいくのも辛くなりそうです。

<img width="350" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/08e37fff-2762-0461-63a6-72e10b4a0a1a.png">


### 教科書コードでカテゴライズされているのに重複がある

例えば「教c1」というコードは「情報C H17」に分類されています。ただ、情報C3と情報C2にありそれぞれの項目に重複してあることが正しいのか不安があります。あとエクセルの表だけだと、こうやって探すだけでも大変です。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/2f4b2ddb-8be4-00a5-f846-b23156489526.png">

`教c1`は`情報C H17`のカラムにしかないんじゃないのか？という若干の不安が・・・。

<img width="300" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/d43d1c52-2680-742d-7d40-7d9fca1d68e5.png">

という形でエクセルの表形式でデータを見ていくのはかなり辛いため、何かしらのウェブページでわかりやすくしてみようというのが今回の目的である「これまでCSV検索を踏まえて検索しやすい仕組みを作る」の原点になります。

# 作成したモノの説明

## キーワード検索：「用語」と「説明欄」

こちらは任意のキーワードで検索できます。
常にキーワードの状態によって検索結果が変わってきます。
この辺はCSVで予めデータをローカルで読み込んでいるからこそできることですね。

![画面収録 2024-05-09 20.10.19__-1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/11637da6-d008-b5bf-9f4a-a83ddc10444e.gif)

## チェックボックス絞り込み検索：「コード」「カテゴリ」「タグ」

何も選択されてなければ絞り込みされません。なにかしら選択されていれば絞り込みされます。
選択する項目が増えれば増えるほど一致する項目を表示するOR検索のようになっています。

### コード検索

チェックボックスによって選択すると絞り込まれます。
全角と半角のコードが混じっているので、それぞれ別項目として表示しています。

CSVのデータ側をクレンジングしたり、検索するときに丸め込む方法も考えたのですが、できるだけデータに準拠する方法を取ったほうが良いと思い、それぞれ別項目として出すことにしました。

以下のように全角と半角のコードで検索結果が変わります。つまりコードがバラバラだったりするわけで。

- 【全角】1：情報社会の問題解決
  - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/0035b7ac-0eba-93ce-3458-ce1d167f0c7e.png)
- 【半角】１：情報社会の問題解決
  - ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/33243b6e-4dc7-ec04-6ecb-4a18a82e59dc.png)

### カテゴリ検索

カテゴリ検索はCSVの該当のカラムから一意のデータをかき集めて項目を作るようにしています。

これは以前のCSV検索の知見を活かしたモノになります。
以前のCSV検索は汎用的に使えるよう、データから検索項目を作る仕組みを実装していたため、それをそのまま流用した形です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/7ff16fe0-c7b3-9cdb-e42a-398c30b59a01.png)

## タグ検索

タグ検索はデータの定義を手動で行いました。教科書コード対応表の形式がデータ構造化するのに辛いところがあり、ここは愚直に定数化していっています。もしかするとPythonのpandasとかだったら上手く加工してデータ化しやすいかもですね。

教科書ごとにカテゴライズされていますが、タグ自体は横断的に一致したものを表示するようにしています。
また、検索対象のタグは検索結果でわかりやすく赤いタグとして表示するようにしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/50d7dc59-4697-e431-5ef5-4d54052e6f9e.png)

## メニューの開閉

ちょっとした気遣いですが、タグ検索とか項目の数がとんでもないのでメニューを開閉できるようにしています。
検索メニューと検索結果が縦に並ぶスマホの画面だと特に必要になりそうです。

![画面収録 2024-05-09 21.45.24.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/12ce7669-55c9-7ee4-a6f7-2bacd58590e3.gif)

## ページング：ページを送る機能

今のところ20件ずつ検索結果を表示するようにしています。ページを送る機能としては一気にページを送っても問題ないのでプログレスバーにしてみました。細かく移動させたい場合は１ページごとに進む・戻るボタンもあります。


![画面収録 2024-05-09 21.47.09.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/cfb98d4f-23aa-b088-1020-2cdb4fe335e3.gif)

## モバイル用の画面

スマホなどでもみれるようにレスポンシブにしてあります。
ただ、文字がかなり小さいので今後の調整は必要かと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/a16c792a-6af7-57c3-2fe4-f3415004307a.png)

# 　最後に

見た目やUIの部分や機能面で改善できることがありそうです。

- モバイル用の画面でみると文字が小さいので大きくしたい
- 検索条件をURLのパラメーターなどにして共有しやすいようにしたい

かなり久々の投稿になりましたが、久しぶりに一気に作り上げることができました。
何か作りたいモノや目的があると作っちゃうモンですね。

今回は情報科全教科書用語リストが公開されて何とかしたいな〜という気持ちが強かったので無事に記事の投稿まで漕ぎ着けることができました。

また何か作りたいモノができたらがんばろうと思います。