http://corner.squareup.com/2014/05/open-sourcing-viewfinder.html
1 comment | 0 points | by WazanovaNews 3日前 edited
Viewfinderは、プライベートソーシャルネットワークでの写真共有サービス。実際に利用したことはなかったですが、1年ほど前のTechCrunchの記事によると、Google出身者が立ち上げたサービスで、写真のタイムライン表示のUIなどに面白い工夫がされてて、当時はそれなりに注目されていたスタートアップだったようです。
同社は昨年末にSquareに買収されています。いわゆるAcqui-hiringと呼ばれる人材確保目的のディールだったようで、Viewfinderのサービスは現在休止され、チームはSquareの開発チームに入っています。
今回、Viewfinderのサーバ / Android / iOSのソースコード全25万行が、オープンソースとして公開されました。下記の概要に興味あればチェックしてみてはどうでしょうか。
- サーバは、複数のインデックスオプション(secondary, full-text, geo)を備えたストラクチャードDBスキーマを持ち、Amazon DynamoDB上に構築されている。schema.pyとindexers.pyを確認されたし。べき等性のオペレーションを実行する機能については、operation.pyを参照。
- サーバは、DBとプロトコルレベルでのバージョン管理を提供。versions.py, message.py, json_schema.pyを確認できる。
- 円形グラデーションを早く描くにはどうすればよいか?CoreGraphics, Corelmageも試したが、最終的にはOpenGLを利用したViewfinderToolを用意した。
- iOSとAndroidのメタデータ保存にはLevelDBを使っている。CoreDataほど便利ではないという意見もあるが、iOSとAndroidでメタデータストレージのコードを共有でき、簡単で、早いのが気に入った。DB.hとContentTable.hを確認されたし。
- iOSのカメラロールで、重複もしくはほぼ同じような写真を検知するためにperceptual fingerprintの技術を使っている。ImageFingerprint.hとImageIndex.hで確認できる。
- モバイルで使えるフルテキストエンジンが欲しい?LevelDB上でコンタクトリストと写真を検索できるFullTextIndex.hをつくった。
- XcodeのプロジェクトファイルとAndroidのビルドファイルを生成するのにGYPを利用。Xcodeプロジェクトファイルのコンフリクト解消とiOS/Android間での大量のコードの共有に役立った。
- C++テンプレのメタデータプログラミングについては、C++メソッドから自動的にJavaメソッドのシグニチャを計算するC++11 variadic templateを利用しているJNIUtils.hを参照されたし。
#square #オープンソース #viewfinder #python #leveldb