プログラミング

検索エンジン自作への道

2020年7月27日

検索エンジン

検索エンジンって何?という人もいなくはないですかねー。
簡単に言えばGoogleとかYahooの検索機能ですね。Amazonや楽天の商品検索も検索エンジンですね。詳しくはWikipediaへ!!

検索エンジン(けんさくエンジン、英: search engine)は、狭義にはインターネットに存在する情報(ウェブページ、ウェブサイト、画像ファイル、ネットニュースなど)を検索する機能およびそのプログラム。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

検索エンジンを自作しようと思った理由

実際はすでに専門学生時代に小規模なロボット型検索エンジンを卒業研究で作っています。で、就職してからある程度知識と技術がついてから再挑戦しようと思ったわけです。
卒業研究で検索エンジンを作成しようとした経緯は

普段普通にGoogleを使って検索をしてるけど、そもそもどういう仕組みで情報を集めているんだ?

と疑問を持ったところがスタートです。
そこから色々調べたんですけど、まぁ情報がないこと!そりゃそうですよね。
ご丁寧に独自技術を公開するような人間がどこにいるんだって話ですよ。
そこで思ったんです。

ん?仕組みが分からないならとりあえず作ってみれば仕組みとかわかるんじゃね?

今思うとおかしいですね。
こんな軽い気持ちで作ったら、なんとなくできてしまって......
でもなんとなくで作り始めたものなのでいろいろと力不足だったわけです。
なので今になって、「よしそろそろやろう」となったわけです。

検索エンジンの種類

これもWikipediaからですねー


  • ロボット型検索エンジン
  • ディレクトリ型検索エンジン
  • 分散型検索エンジン
  • メタ検索エンジン

です!詳しい内容は全部Wikipediaに投げます。

この中のどれを作っていくかですが、「ロボット型検索エンジン」です。
卒業研究の引継ぎですねー。社会人になって学生時代に比べて多少お金に余裕も出てきたので家に検索エンジン用のサーバーを立ててやっていきます。

今後の予定

今後どのような感じに作っていくかですが、こんな感じになると思います。


  1. クローラー
  2. ランキング機能
  3. 検索条件設定
  4. なんか色々

です。まずはクローラーからですね。
独自の方法でやっていくのでかなり手探りでやっていこうと思います。......と言っても、学生時代に作った小規模検索エンジンをベースにするので既になんとなくの仕組みは出来上がっています。
はい。
次回の記事からクローラー云々の方をやっていこうと思います。

ちょっとした問題点

クローラーを作るーということですが、ちょっとした問題があります。

著作権法上の問題
利用規約との抵触
サーバーへの高頻度のアクセス

です。
クローラーはwebサイトの情報を収集し、データベースに保存していきます。ここで第一に問題となるのが「著作権」です。webサイトのコンテンツは著作物であり複製する場合は原則としてwebサイトのオーナーに許可を取る必要があります。
ただ、インターネット上に存在するコンテンツは膨大であるため、1つ1つに許可を取ることは現実的ではありません。
ここで「じゃあ、検索エンジン作れないじゃん」とあきらめることはありません。著作権法には少し例外があります。
それが「情報解析を目的とした記録または翻案」です。

翻案」とは、取得した情報に新たに表現を加えることを指します。
ただし、取得したデータを複製し譲渡する行為や情報解析以外の目的で使用した場合については違法となる可能性があるので注意が必要です。

利用規約との抵触についてはそのままの意味ですね。
webサイトの利用規約に「スクレイピング禁止」という趣旨の記述があった場合、その規約に同意しているにもかかわらずスクレイピングを行った場合ですね。
例外はありそうですが、「スクレイピング禁止」と規約に書かれているwebサイトのデータは収集しないようにした方が良さそうですね。

サーバーへの高頻度のアクセスについては、対象のwebページを運用しているサーバーに過度な負荷をかけることで業務を妨害してしまう可能性があるからです。
この辺はデータ収集に行く頻度や、一度で収集するデータの量を制限することで対策ができると思います。

このように法的な罰則があるかもしれない問題があります。
開発段階では自分の運用しているwebサイトを対象としてテストを行うので問題ありませんが、本格的にサービスとして稼働させることを決めた場合は弁護士や司法書士といった法律に詳しい人に相談すると良さそうです。

-プログラミング
-,