【ニュースガチャ】ランダムなキーワードでニュースを見るサイト

タイトルの通り、ランダムなキーワードで、ニュースを見れるようなサイトを作ってみました。

※投稿後、早速不具合を発見しました。

※iPhoneやPCの言語設定を「日本語以外」にしていると、うまく動作しないかもしれません。

→リクエストURLで言語の指定をすることで回避できました

結論

サイトはココです。

ソースも公開しています。

(クソコードであることはご了承ください)

解説

ソースコードの解説を少ししてみようと思います。

まず、ディレクトリ構造は次のようになっています。

.
├── README.md
├── dockerfiles
│   ├── Dockerfile_mysql
│   ├── Dockerfile_php
│   └── docker-compose.yml
└── mountpoint
    └── php
        ├── csv
        │   ├── all.csv
        │   ├── citys.csv
        │   ├── country.csv
        │   └── knowledge_category.csv
        ├── index.php
        ├── mario.gif
        └── style.css

dockerfilesには、「PHP + Apache + MySQL」の環境が構築できるdockerファイルがあります。

環境構築するときは、dockerfilesディレクトリに入り、docker-compose up -d --buildを実行すればOKです。

すると、「mountpoint/php」配下がApacheのドキュメントルートとなります。

つまり、「http://localhost」にアクセスすると、「mountpoint/php」配下のコンテンツが表示されます。

次に、index.phpの処理をざっくりと説明すると、以下のようになっています。

  1. キーワードが詰まったcsvファイルをサーバ(PHP)でjsonに変換し、フロント(JavaScript)に渡します
  2. フロントがそれを受け取り、jsonファイルをそれぞれのジャンルの配列に変換します
  3. ボタンが押された時に、配列に入っているキーワードをランダムに抽出し、各サイトで検索をかけます

最後に

このサイトを作ろうと思ったきっかけは、Wikipediaの記事をランダム表示するChromeプラグインを作ったことによります。

当たり前だと思われるかもですが、何かを検索する時は、自分の知っている(あるいは知りたいと思っている)キーワードでしか検索することができません。

それだと、知見を広げることが難しいんじゃないだろうか、とつくづく感じていました。

話が少しそれますが、DuckDuckGoなどの、プライバシー保護をコンセプトにしたサービスが普及しつつあります。

これらの動きから推測すると、今後はこのような「秘匿性」や「乱雑性」を売りにしたサービスがトレンドになるのではないかと思っています(少なくとも私はそういうものに惹かれるので、今回のようなサイトを作っています)。

今回作ったものは、デモ的なものなので、気が向いたときにでも、より本格的なものを作ろうと思います。