Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【環境ごとまるっと提供】ソースコードを手軽に全文検索してみよう

More than 5 years have passed since last update.

環境ごとまるっと提供とは

ツールのインストールが若干面倒だったり、環境の違いで動かないといった状況を無くすために、Vagrantとそのプロビジョニング用のファイルを提供することで、確実に動く環境を手元にお届けするのが狙いです。
※VirtualBox&Vagrantの環境をセットアップしてあることが前提になってしまうのですが、それらのインストールは、非常に簡単ですので、「動かないから断念」問題になる可能性が低いです。

Milkodeとは

今回の記事では、MilkodeというおんがえしさんがRubyで作成したソースコード検索ツールを利用します。rubyのgemとして提供されており、MacやLinuxでは、インストールもとっても簡単なのですが、windowsでは、若干面倒だったり(rubyインストールしたり、必要なツールのインストールしたり)したので、Vagrantのスクリプトとして紹介します。
Milkodeについて、筆者は、以下のポイントを非常に気に入っています。
 ・Milkode本体にwebアプリがついて、サクッと利用できる点
 ・検索が非常に早い点(内部で利用している検索エンジンにGroongaがとても高速らしいです。)
 ・日本語も問題なく検索でき、ハイライトは弱いが、日常のメモも全文検索できる点
参考:
Milkodeの特徴
github:ソース
Ruby でソースコード検索エンジンの作り方 〜Milkode の内部実装解説〜
Windowsに ソースコード検索エンジン「Milkode」をインストールする

どんな風に使えるの?

1.Vagrant上のOSにログインしてMilkodeのwebアプリを起動しておく
2.共有フォルダにソースを格納する
3.ブラウザ上で検索(indexの更新もブラウザ上からできちゃいます)

1.Milkodeのwebアプリを起動しておく

後述のVagrantfileにて仮想マシンを作成したら、「vagrant ssh」で一旦ログインして
以下のように入力してください。

# Milkodeのwebアプリをバックグランドで実行する。
# hostマシンからアクセスできるように--hostオプションも指定する。
milk web -n --host 0.0.0.0 &

2.共有フォルダにソースを格納する

今回提供するスクリプトでは、vagrantの共有フォルダに、「milkode_work」という仮想マシン側とホストマシン側の共有フォルダをmilkodeの検索対象として登録しています。
私は、ホストマシンは主にwindowsを利用しているので、ドラッグ&ドロップで検索したいソースを格納したり、日々のメモをそのフォルダ上に格納しています。

1.jpg

3.ブラウザ上で検索(indexの更新もブラウザ上からできちゃいます)

ブラウザを起動して、以下のURLにアクセスしましょう。
http://192.168.55.15:9292/home
最初は、indexが作成されていないので、「パッケージを更新」を押下してindexを更新します。(ファイルを更新したら、パッケージを更新してください。)
2.jpg

後は、検索キーワードを入力して検索するだけです。
使っていただけるとわかると思いますが、「めっちゃ早い」です。あと、ハイライトがかなり美しい感じがします。
統合開発環境を使っていない場合は、よくgrepでしのいでいたりnamazuなどを使ったりしていたのですが、一度Milkodeを使ってしまうともう戻れませんね。

ちなみにソースを開いた後のイメージは、こんな感じです。
3.jpg

環境構築用のVagrantfile

最後に、Milkodeを利用するための、Vagrantの環境構築スクリプトを記載します。

まずは、お決まりのVagrantfileから

Vagrantfile
Vagrant::Config.run do |config|
  config.vm.box = "centos64_6_5"
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"

  config.vm.define "for_milk" do |for_milk|
    for_milk.vm.network "hostonly", "192.168.55.15"
    for_milk.vm.provision "shell", path: "setup_rbenv.sh"
    for_milk.vm.provision "shell", path: "setup_milk.sh"
  end

end

setup_rbenv.sh→Vagrant Tips#3 rbenvを使ったRuby環境をセットアップする(centos)をご参照ください。

setup_milk.sh
#!/bin/bash
rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
yum makecache
yum install -y groonga groonga-devel
yum install -y gcc-c++

gem install milkode

if [ ! -d /vagrant/milkode_work ]
then
  mkdir /vagrant/milkode_work
fi

milk init --default

milk add /vagrant/milkode_work

これらのファイルを配置して、
「vagrant up」を実行して、無事起動できたら。
「vagrant ssh」でログインし、
「milk web -n --host 0.0.0.0 &」で
Milkodeの内蔵webアプリを起動してください。(上記コマンドを実行後は、exitで抜けてしまって構いません。)

yukimura1227
フルスタック目指して日々、奮闘中。あいつにマネジメントばっかりやらせるなんてもったいないと言われるように、インフラ~アプリ開発~運用ツールまで食わず嫌いせずに精進します!!
http://yukimura1227.blog.fc2.com/
gi-no
IT/Webエンジニアに特化した転職・学習サービス "paiza (パイザ)" を開発・運営しています。【異能をのばせ】をミッションとして、IT人材のスキル/経験を可視化する成長プラットフォームを目指しています。
paiza.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away