弊社の開発アシスタントが実装したライブラリ cumo が、pypi.orgで公開されました 。
今回は、cumoの実装背景やアーキテクチャ、開発者インタビューなどを記載します。
動作イメージ
cumo は、Webブラウザ上に点群( pcdデータ )を描画する python ライブラリです。
cumo単体で動かすこともできますし、ライブラリとして使用することもできます。
使用技術
主に以下3つを主軸にしています。
- Python
- websocket
- three.js
GitHubリポジトリは以下のURLです。
https://github.com/kurusugawa-computer/cumo
開発の背景
元々、社内で実施していた とある企業案件から発生したものです。
その案件で、点群を描画するライブラリがバラバラにいくつか存在していたので、それらを共通化する目的で開発されました。)
アルバイトの業務としてはかなりレベルが高く、アルバイト主体で設計~開発~提供まで行ないました。
開発者インタビュー
- Q. 技術選定を python + websocket + three.js にした理由を教えてください
- A. ゼロベースから開発しようと決めてイチから考えたのですが、もともとロボサッカーのコミュニティで公開されていたGoのサーバがブラウザからWebSocket経由でProtocol Buffersを使って通信する試合進行ツールを見て※「この方式を何かに使いたいな」と思っていたので、ブラウザ上でGUIを作ろうと思ったときにそれを思い出してこの方式にしました。
three.jsはJavaScriptで3D表示ができるライブラリをこれしか知らなかったのと、それ以外を探して使うとなると情報や安定性に不安があったので採用しました。 - ※ 開発者は、本業の学業の方で RoboCupに参加しています
- Q. アルバイト主導で進めることに不安はありましたか。あるとしたら 不安を解消するためにどう動かれましたか
- A. 点群を取り扱った経験がほぼなく、使用場面がよくわかっていなかったので大丈夫かなと不安には思いました。細かくフィードバックをもらえるように、とりあえず動く小さいバージョンを作って、そこから改善していくようにしました
- Q. 外部に公開するにあたって気をつけたことなどありますか
- A. あまり思いつかないです。コミットメッセージやコメントは公開すると思ってないころからわりと丁寧に書いていたので、過去の自分に助けられたなと思いました
- Q. 「ここはよくできた!」と自慢したいところはありますか
- A. ユーザからもらったフィードバックに応えるために構成要素が少しづつ独自機能を持つオリジナル実装に置き換わっているところです。最近はカメラコントローラを独自のものに置き換えたので、three.jsのデモによく使われるコントローラよりも点群の閲覧に特化した、便利な操作ができるようになっていくはずです
- Q. もっとこうしたい、といった欲はありますか。あるとしたら どこをどう改造していきたいと思いますか
- A. ブラウザとの通信周りは改善の余地があるかもなと考えています。それ以外にも実際の使用場面をもとにした要望をたくさんもらっているので、機能の追加をしていければいいなと思います