Devinをやっている組織が提供するDeepWikiというものがあり、GitHubのレポジトリを解析してインタラクティブなドキュメントを自動生成してくれる。
OutSystemsのレポジトリも解析済みのようだったので、Cloud Connectorのレポジトリを対象に確認してみる。
リソース
Cloud Connector - DeepWiki
Cloud Connector - GitHub (オリジナルのレポジトリ)
レポジトリのページを開く
DeepWikiの検索窓でOutSystemsと検索すると、2025/05/15時点で3つ出てくる。
OutSystems / docs-productとOutSystems / docs-supportは公式ドキュメントのソース(MarkdownファイルをGitHubで管理している)。
そこで、実際にソースコードが入っているOutSystems / cloud-connectorを開いて、どんな感じか見ていく。
サイト構成
DeepWikiでレポジトリに対応するページを開くと以下のような構成になっている。
①レポジトリ内の構成
DeepWikiが、該当するレポジトリに対して生成したドキュメントの構成を示すツリービュー。
GitHubのレポジトリにあるREADME.mdファイルの目次が以下なので、単純にREADMEから構成を引っ張ってきているわけではない。
例えば、Architecture and Design > Network Architectureには、READMEになく、かといってレポジトリ内に画像ファイルとして置かれているわけではない、Protocol Stack(Web Socketを使っていることなどを読み取れる)やCloud Connector・Private Gateway・接続先のオンプレミス側システム間のシーケンス図などもある。
恐らく、ソースコードとドキュメントを読み取って生成したのだろうか。
②開いているページの情報源(レポジトリ内のファイル)のリスト
ドキュメント、画像ファイル、ソースファイル(このレポジトリの場合はGo)へのリンク。
クリックすると、別タブで開く。
③本文
ページの本文。特にいうべきことはないので省略。
④検索UI
日本語や英語でレポジトリに対する質問を書くと、レポジトリの内容を踏まえて、その場で回答ページを生成してくれる。
これがメイン機能な気がする。次から質問をいくつか投げて確認してみる。
Q&A
どの言語で開発されている?
まず、非常に基本的な以下の質問を投げて、どんな回答が表示されるのか、等ポイントを見ていく。
このプロジェクトはどの言語で開発されている?
(リンクの有効期間は不明。使えなかったら、直接DeepWiki内で質問を入力)
- まず、日本語で質問できる
- 日本語で質問すると日本語のページをその場で生成してくれた
- 回答には根拠が示される
- 根拠にはさらに、ソースへのリンクが貼られていて、クリックスト画面右に該当箇所が開く(上の図は、ソースとして示されたREADME.mdのリンクをクリックしたところ)
「Go deeper」というボタンをクリックしてみると、もう少し深掘りした調査をしてくれて、根拠が追加された。
回答の構成は同じなので、次の質問からは概要とポイントのみ書いていく。
このソフトウェアはWeb Socketを使っているか?
使っていると回答あり。
ドキュメント・ソースコード・図それぞれから根拠を探し出してきて回答をくれた。
図まで見ているらしい。
内部で利用している重要なライブラリは?
WebSocket実現のためにChiselというライブラリを内部で利用しているのだが、そのことが正しく返ってきた。
Chisel: このプロジェクトの中核となるライブラリで、WebSocketを使用したTCP/UDPトンネリングを実装しています。READMEにも記載されているように、「WebSockets over HTTPS」と「SSH using ECDSA with SHA256 keys」による暗号化を提供しています。
Cloud Connectorは冗長化できるか?
以下のような内容が整理されて返ってきた。
調査としては良さそう。個別に妥当性の確認は必要。
実現方法2つ。2の方は冗長性とは違う気もするが。
- 複数のCloud Connectorインスタンスを実行する方法
- 単一インスタンスで複数のリモート接続を設定する方法
1.の例として、後の方に、Cloud Connectorを2台用意して、それぞれ同じ接続先に繋ぐ設定例があった。これが実現できればたしかに冗長なのだが、この構成は何か制約があったような気もする。とはいえ、このように調査した結果を整理してくれれば、動作確認するのは比較的簡単そう。
複数のサーバーまたはコンテナで同じPrivate Gatewayに接続するCloud Connectorを実行
サーバー1
outsystemscc --header "token: TOKEN" >> https://organization.outsystems.app/sg_id R:8081:192.168.0.3:8393
サーバー2
outsystemscc --header "token: TOKEN" >> https://organization.outsystems.app/sg_id R:8081:192.168.0.3:8393
未登録のレポジトリを指定すると
対象レポジトリをインデックスに追加するUIが表示される。
例えば、2025/05/16時点では未登録のDataGridのレポジトリを、DeepWikiのレポジトリ検索UIに指定してみると、「Repository Not Indexes」と返ってくr。
https://github.com/OutSystems/outsystems-datagrid