要件定義の不安をなくす。要件定義の不安をなくす。ユニファのバックエンド分割に学ぶイノベーションメタバース開発に必要な技術の基本知識をおさらい。Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。KB)前回はSlackのBotを用いて使いやすい検索システムのUIを作成しました。今回はこれまでに作成した検索用のコンテナとUI提供のコンテナを連携し、質問しやすく使い勝手の良い検索システムを作成します。1.12Dockerコンテナによる各システムの連携について今回は検索機能を提供するElasticsearchとSlack上のUI提供部分を、コンテナによって連携する方法の紹介をします。これにより、システムの結合度が下がって変更や拡張に強い検索システムの提供が可能となります。疎結合なシステムのイメージ上図のように、検索用のコンテナを変えるだけで検索の内容を変えることもできますし、UI部分がSlackからLINEに移っても検索部分は再利用可能になっています。今回も仮想環境を使用するためVagrantを起動します。VagrantfileのIPアドレスを環境に応じて設定してください。同一のIPアドレスにならないようにしてください。第2回の記事で構築したVagrant環境のディレクトリに移動し、Vagrantを起動してください。upなお、第3回の記事で取得したWikipediaのデータは今回の記事でも使用するので、「{Vagrantのフォルダー}/elastic-search-docker_parallel/python/Data/split_data/」以下に分割されたJSONファイルがあるか確認してください。確認できたら、以下のコマンドでVagrantで作成した環境に入ってください。masayaresearch/elasticsearch_japanese_parallel次に、第2回の記事で紹介したDocker環境の構築方法に沿ってDocker環境を構築してください。Dockerを起動できる環境をVagrant上で構築済みの方は必要ありません。Slack用コンテナとElasticsearch用コンテナの連携Slack用コンテナとElasticsearch用コンテナの連携を以下の手順で行います。検索用のElasticsearchコンテナを先に起動し、検索システムを準備しておきます。「-v」のオプションで登録用のデータがあるフォルダを連携しています。第3回で使用したWikipediaのデータを使用して登録します。/sbin/initElasticsearchを起動するには、以下のコマンドを実行します。shell/elastic_search_setting.shすると、「sudo」のパスの入力が促されるので、sudoのパスである「e_pass」を入力してコマンドが通るようにします。検索用のElasticsearchコンテナにデータを登録し、検索できるようにしておきます。「/usr/share/elasticsearch/python/Data/split_data」に第3回の記事で作成したデータが保存されているので、そのデータのディレクトリを指定します。パイプ数と並列数は並列のためのパラメータになります。こちらも詳しい内容は第3回の記事に載せています。パイプ数:1並列数:10著者の環境では上のパラメータで試して約10秒で登録処理が終了したため、このパラメータでも問題ないと思われます。[3]SlackコンテナをElasticsearchコンテナと連携して起動SlackコンテナとElasticsearchコンテナの連携部分です。今回の連携用Slackコンテナを取得します。次に、ElasticsearchコンテナとSlackコンテナを下記のコマンドで連携します。「--link」のオプションで連携するコンテナを指定してElasticsearchコンテナと連携して起動しています。