ネットワークよりのインフラエンジニアなのですが、最近ではOSS製品を活用してサービス提供する事が増えてきておりまして、そのなんですかね、色々困っている事多数なんです。そんな時にこの神様のようなツールがあることを知りました!それがSourcetrailとの出会いだったわけです。
このツールはWindowsやMacなど手元にあるPCにも入れる事が可能ですが、Linuxにも入れることができるようなので、やってみました。(業務だと会社貸与のPCには決められたツールしかだめって企業がほとんど。ただ、開発環境のAWSなら好きに使っていいよって可能性もあるかなと思いました。誰かの役に立てれば幸いです!)
1. 環境
- OS:CentOS 7.9
- Kernel: 3.10.0-1160.53.1.el7.x86_64
- Clinet:Win10
2. OS最新化/DeskTOP環境の準備
yum update -y
reboot
yum groupinstall 'Development Tools' -y
yum groupinstall 'GNOME Desktop' -y
yum install epel-release -y
yum install --enablerepo=epel xrdp -y
systemctl start xrdp.service
systemctl enable xrdp.service
timedatectl set-timezone Asia/Tokyo
timedatectl
date
3. openjdkのインストール
yum install java-1.8.0-openjdk java-1.8.0-openjdk-headless java-1.8.0-openjdk-devel -y
4. sourcetrailのインストール
wget https://github.com/CoatiSoftware/Sourcetrail/releases/download/2021.4.19/Sourcetrail_2021_4_19_Linux_64bit.tar.gz
tar zxvf Sourcetrail_2021_4_19_Linux_64bit.tar.gz
cd Sourcetrail
bash install.sh
5. FireWalld変更/ログイン用ユーザ作成
firewall-cmd --add-port=3389/tcp --permanent
firewall-cmd --reload
useradd nwengineer
passwd nwengineer
mkdir .ssh
chmod 700 .ssh
# ここに公開鍵をauthorized_keys, 権限600で保存しておきます。
6. リモートデスクトップ接続
リモートデスクトップ接続します。コンピュータにCentOSのIPアドレスを入れます。
GUI接続するためのユーザ名/パスワードを求められますので、先ほど作成したユーザ名とパスワードを入力して「OK」をクリックします。
デスクトップ画面上で右クリックして「端末を開く」をクリックします。
ターミナルが起動しますので、sourcetrailと入力してEnterを押します。
ようやくSourcetrailが起動しました。画面左したの「New Project」をクリックします。
ここで、sourcetrailに読み込ませるjavaのファイルとしていつもお世話になっているmybatis-guiceを利用したいと思います。下記コマンドでcloneしておきます。
git clone https://github.com/mybatis/guice.git
ファイルが存在している事が確認できてら、プロジェクト用に一つディレクトリを作成しておきましょう。(私はtrailというディレクトリを作成しました)
sourcetrailの画面にもどります。任意のプロジェクト名と先ほど作成したディレクトリを選択して「Add Source Group」をクリックします。
「Java」を選択し、「Empty Java Source Group」をクリックします。
Java Standardは8を選択し、「Files & Directories to Index」にgit cloneしたディレクトリを選択し、画面右下の「Create」をクリックします。
大量にエラーが出ますが、そこは無視する強い精神力を持ちましょう。終わったら「OK」をクリックします。
overview画面にアイコンがいくつか出てきます。試しにclassesをクリックすると
それぞれのClass毎の関連性や変数/メソッドなどわかりやすく可視化してくれます。まさに神のようなツールです。
7. その他
現時点ではJava/C/C++/Pythonのみ有効ではありますが、私が携わっている範囲は十分カバーできている為、本当の助かっています。今後のアップデートも目が離せないツールの一つです。