コンテンツへスキップ

cumo ~Webブラウザ上に点群を描画する python ライブラリ~ が公開されました

弊社の開発アシスタントが実装したライブラリ cumo が、pypi.orgで公開されました 。 今回は、cumoの実装背景やアーキテクチャ、開発者インタビューなどを記載します。

動作イメージ

cumoは、 Webブラウザ上に点群( pcdデータ )を描画する python ライブラリ です。 cumo単体で動かすこともできますし、ライブラリとして使用することもできます。

使用技術

主に以下3つを主軸にしています。

  1. Python
  2. websocket
  3. 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. ブラウザとの通信周りは改善の余地があるかもなと考えています。それ以外にも実際の使用場面をもとにした 要望をたくさんもらっている ので、機能の追加をしていければいいなと思います

© 2003 Kurusugawa Computer Inc.