Linux

Ubuntu18.04にOpenGrokをインストールしてみた

私の職場ではソースコードの管理にGitlabを使っているのですが、コードの閲覧や検索の面ではイマイチと感じることが多くあります。そんな中、ソースコードの閲覧・検索ツールとしてOpenGrokというものを知ったので、まずは手元で試してみることにしました。

ということで、今回はUbuntu18.04にOpenGrokをインストールして動かすまでの備忘録です。

OpenGrokとは?

OpenGrokとは、サーバーにインストールするタイプのソースコード閲覧・検索ツールです。対象のソースコードを解析し、関数の定義やその呼び出し箇所をブラウザ上で簡単に検索することができます。

サーバー型なので、開発内に1つサーバーを立てればみんなからアクセスできる点に加え、複数のプログラミング言語にも対応しているのが良さげです。

Ubuntu18.04で動かす

1.必要なパッケージをインストール

まずは、OpenGrokの動作に必要なパッケージをインストールします。OpenGrokはTomcatというWebコンテナ上で動かすアプリなので、それらに関連するパッケージを用意する必要があります。

2.OpenGrok本体のダウンロード

次にOpenGrok本体をダウンロードし、環境内の適当な場所に展開します(以下、OpenGrokフォルダとします)。とりあえず、今回はrelease版である1.0をダウンロードしました。

ライブラリへのリンク作成

最後に、OpenGrokフォルダのlib中にjflex.jarへのシンボリックリンクを作成してあげます。ちなみに、jflexは字句解析に必要なパッケージとのことです。

ひとまず起動してみる

ここまでで起動準備は完了です。OpenGrokフォルダ中のbin下に移動して、deployコマンドを実行します。その後、Tomcatを再起動すればOKです。

Tomcat起動後、「http://<サーバーのIP>:8080/source」にアクセスし、OpenGrokのトップページが見えていればインストールは成功です。

ただし、この時点では閲覧・検索対象となるソースコードがないため、エラーになってしまいます。そこで、以降はOpenGrokにソースコードを登録していきます。

ソースコードの登録

OpenGrokにソースコードを登録するには、以下3つのフォルダを作ります。

このうち、srcフォルダにソースコード本体を置いてあげます。ちなみに、OpenGrokではsrc中の1フォルダを1プロジェクトとして扱うので、複数のプロジェクトを登録したい場合は、プロジェクト毎にフォルダを切って格納しましょう。コードを置いたら、再びOpenGrokフォルダ中のbin下に移動して、indexコマンドを実行します。

これでコードの解析とインデックス作成が行われ、ブラウザ経由で閲覧・検索ができるようになりました。実際にアクセスしてみるとこんな感じにコードを見ることができます(・∀・)

関数定義やその呼び出し箇所をクリック1つでポチポチ辿るだけでなく、全文検索にも対応しているので、エディタ上であれこれ検索するよりもだいぶ楽な印象でした。

コードを追加・更新する場合は、その度にindexコマンドを実行する必要がありますが、cronに登録して定期実行するようにすれば、その手間も省けそうです。

ある程度規模の大きいソースコードの閲覧・検索にはとても便利だと思うので、興味のある方はぜひ試してみてはいかがでしょうか?

ではではノシ

関連記事

Linux

2020/3/28

SSHで公開鍵認証を設定する方法

これまでに何度かLinuxでサーバーを立てて遊んだりしていますが、毎回忘れてしまうのがSSHの公開鍵認証の設定方法です。一度設定してしまえば頻繁に触るものでもないので、ついつい忘却の彼方へ消えてしまいます(´・ω・`) この先、毎回調べなおすのも面倒なので、これを機に手順をまとめておくことにしました。ちなみに、サーバー(接続される側)がLinuxの想定です。 目次手順1:クライアント側で鍵ペアを作る手順2:サーバーに公開鍵を設定する手順3:SSHサーバーの設定 手順1:クライアント側で鍵ペアを作る まずは ...

この記事を読む

Flutter

2020/3/10

【Flutter】FutureBuilderで非同期にWidgetを生成する

ここ最近、Flutterでアプリを作ってきてある程度の知識がたまってきたので、徐々にこちらでもアウトプットしていこうと思います。 アプリの機能が複雑になってくると、外部との通信や重たい処理の終了を待ってからWidgetを生成したいときがあります。そんなときはFutureBuilderという仕組みを使うと簡単に非同期でWidgetが生成できます。 目次FutureBuilderの使い方builderについて非同期処理の状態を見る非同期処理の結果を取り出すまとめ参考 FutureBuilderの使い方 Fut ...

この記事を読む

日記 自作物

2020/3/7

FlutterでToDoアプリをつくってみた

最近、Flutterを使ったモバイルアプリの開発にハマっているのですが、前回このブログでも紹介した「SaltyStock」というアプリに続き、新しいアプリをリリースしました(・∀・) App Store‎CotoMemo‎CotoMemoはタブ型のToDoアプリです。仕事からプライベートまで、日々のやるべきこと(Coto)を気軽にメモ(Memo)する感覚で整理することができます。【主な機能】・タブによるタスク管理タブ毎にタスク整理ができるので、このアプリ1つで仕事もプライベートもあら... リリースしたの ...

この記事を読む

日記 自作物

2019/12/22

FlutterでiOS/Androidアプリを作ってみた

2019年の密かな目標の1つとして「スマホアプリを作ってリリースする」というのを掲げていたのですが、なんとか年内に達成することができました(・∀・) どうせ作るならiOS/Android両対応がいい!ということで、FlutterというGoogle製のフレームワークを使いました。開発したのは「SaltyStock」というアプリです。長期保有して塩漬け状態になっている株式銘柄を管理するというかなりニッチなアプリです笑。 「個人的にこういうのあったらいいな」というものを作ることができたので、概ね満足です。もし興 ...

この記事を読む

Linux

2020/3/10

Docker + Growiでイントラ向けWikiを立ち上げる

チーム開発をしていくうえで、課題の1つになるのが情報共有です。チームの歴史が長いと経験値は溜まっていきますが、それらが情報として整理されていないとメンバー交代時などに大きなコストが発生します。 そこで、イントラ向けのナレッジベース(Wiki)を探していたところ、Growiという良さげなOSSを見つけたので、お試し環境を立ち上げてみることにしました。手元の環境はUbuntu18.04ですが、Linuxであれば大体同じような手順になると思います。 目次DockerのインストールGrowiの準備接続ポートの変更 ...

この記事を読む

-Linux

Copyright© Corgi Lab. ~備忘録のための技術ブログ~ , 2020 All Rights Reserved.