ネットワーク関連のソフトウェア開発
ネットワーク通信を行うクライアントソフト、サーバーソフトの開発を行います。
得意なジャンルは以下のとおりです。
1. RFCに従ったプロトコル実装
ネットワーク関連のソフトウェアを開発すると、通信処理に必ず何らかのネットワークプロトコルを使うことになります。
これらの通信処理を開発するにあたって、オープンソースで利用できるものがあればいいのですが、ライセンス的に利用が難しかったり、実験的な実装でしかなく製品にはとても使えないということもあります。こういった状況において、通信処理の実装を行います。
通信処理だけでなく、もっと上位レイヤーのアプリケーション部分も含めて開発することもできます。
例:
PPPoEサーバーの実装
RADIUSクライアント/サーバーの実装
2. プロトコルシミュレーターの開発
特定のシナリオを想定した負荷テストツールの作成などを行います。
例:
サーバーへの大量の同時接続を試す負荷ツール
プロトコル的に敢えて誤った手順でデータを送信し、障害等が発生しないかをテストするツール
ARP/NDPテスターのような負荷テストツールの開発も行っております。
3. OpenSSLを利用した暗号通信
近年では、クライアント/サーバー間の通信に暗号化が求められることが多くなっています。OpenSSLを使って暗号化通信に対応したソフトウェアを開発することも可能です。状況によっては、VPNを使った別の解決方法の提案もさせていただきます。
ソフトウェア開発において、本来は仕様やドキュメントに記載されている情報を元に開発を行うべきですが、開発にあたってUndocumentedな事項が出てきたり、OSやライブラリの奇妙な動作に悩まされることがよくあります。こういった時に「お手上げ!」ではなく、弊社ならLinux KernelやOpenSSL等の内部を調査して問題解決することもできます(*1)。
言語はC/C++/Goを使うことが多いですが、Python等、他の言語でも対応可能です。
開発以外にコンサルティングも行っております。
(*1) Linux KernelやOpenSSLに関する調査能力がある程度あることを示す事例として以下を挙げさせていただきます。
Linuxカーネルメモ: Linuxカーネルの実装を調査してまとめたもの。最近は更新していませんが。