VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

MongoDBのGUIツールを比較してみた

みなさんこんにちは。
(株)adingoでprivate DMPと呼ばれるcosmi Relationship Suiteの開発をしています。
@tana_raことあらたです。

世の中にはアルファベット3文字が溢れていて混乱しますよね。AWSと広告業界が混ざるとカオスです。
AWSとかEMRとかSSPとか。DMPもその一つですね。
ちなみにDMPはData Management Platformの略です。

ところでcosmiでは、データの管理にMySQLとMongoDBを利用しています。
私は開発時にはMySQLのGUIツールをよく利用するのですが、
MongoDBのGUIツールってあまり聞かないなと思ったので探してみました。
今日は触ってみたMongoDBのGUIツールを紹介してみたいと思います。
基本的にWEBベースの物を利用しています。

触ってみたGUIツールたち
  • phpMoAdmin 1.1.2
  • RockMongo 1.1.7
  • mongo-express 0.18.0 (※) 
  • Genghis 2.3.11
※mongo-expressは最新版では、依存ライブラリのバージョンによって動かなかったため、
現在masterブランチに上がっているものを利用しています。

phpMoAdmin

まずはじめにphpMoAdminです。
名前から分かる通りPHP製です。
phpMyAdminとかphpMyFaqとか似た名前のものがたくさんありますね。
1ファイルで出来ているので、apacheのDocument Rootに配置するか、
PHPのビルトインサーバで利用することが出来ますね。

インストール
$ wget http://www.phpmoadmin.com/file/phpmoadmin.zip
$ unzip phpmoadmin.zip
$ mv moadmin.php /var/www/html/moadmin.php
でインストール完了です。
以下がその画面です。

phpMoAdmin1


何にもせず接続できました。
デフォルト設定で接続ができますが、Configファイルなどはないので
portを変えたり、認証をつけたりすると使えなくなってしまいます。

(無理やりコードを変更することで色々できますが・・・w)
基本的なデータの確認は可能ですが、ユーザ認証とかは無いみたいですね。

RockMongo

次にRockMongoです。これもPHP製。
したがって、phpMoAdminと同様の方法で利用することが出来ます。


インストール
$ wget "http://rockmongo.com/downloads/go?id=14” -O rockmongo.zip
$ unzip rockmongo.zip
$ mv rockmongo-1.1.7 /var/www/html/rockmongo
これで完了です。
アクセスすると以下のような画面が現れます。
RockMongo
ログイン認証もできますが、以下のように
/var/www/html/rockmongo/config.php
の31行目を編集すれば認証を無くすことも可能です。
31 //$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
32 $MONGO["servers"][$i]["control_auth"] = false;
するとこんな画面が現れます。

RockMongo2

RockMongoは結構機能が多そうですね。
データの確認も見やすくていいです。

mongo-express
mongo-expressはJavaScript(node.js)製のGUIツールです。
CSSはTwitter Bootstrapを利用しているようで綺麗です。

インストール
$ npm install https://github.com/andzdroid/mongo-express/tarball/master
・・・
$ cd node_modules/mongo-express
$ cp config.default.js config.js
$ vim config.js
デフォルトだとconfig.jsが無いため怒られます。
なのでconfig.default.jsをコピーして使いましょう。
今MongoDBで認証は行っていないのでconfig.jsで認証が必要ないように変更します。
変更しないとConnectionErrorとコンソールに出てきます。

 35 //    adminUsername: 'admin',
 36 //    adminPassword: 'pass',
 37     adminUsername: '',
 38     adminPassword: '',

$ node app
Mongo Express server listening on port 8081
Database connected!
Admin Database connected
以下がアクセスした時の画面です。
mongo-express-find
右のバツボタンを押したらこのレコード消してくれそうだなーと思って押したら
確認なしで消してくれましたw
とてもカジュアルですね・・・(´・ω・`)w

Genghis

最後にGenghisです。
Genghisの読みがわからなくてぐぐったらチンギスハンのチンギスらしいです。
gem installでもできるらしいのですが、
PHPerな私はPHPのビルトインサーバを利用しました。
(色々躓いたわけでは決してないです。)
こちらもTwitter Bootstrapを利用しているのでどことなくモダンな感じです。

インストール

$ wget https://github.com/bobthecow/genghis/archive/v2.3.11.zip -O genghis.zip
$ unzip genghis.zip
$ mv genghis-2.3.11 genghis
$ cd genghis
$ php -S localhost:8080 genghis.php
として、アクセスしたら下のような画面にたどり着きました。

genghis-top


localhostを選択すればlocalhostのサーバにつながります。
その他にもAdd serverとやれば、他サーバのMongoDBにもつなげることが出来そうです。
localhostにつなげてみた画面が以下のようになります。

genghis

Twitter Bootstrapのおかげかとても見やすいですが、
findとinsertくらいの機能しかありませんでした。

まあ見やすければ・・・いいですかねw

全体的な比較
phpMoAdmin RockMongo mongo-express Genghis
Version 1.1.2 1.1.7 0.18.0 2.3.11
言語 PHP PHP JavaScript(node.js) PHP or Ruby
License GNU GPL BSD MIT MIT
Github phpMoAdmin RockMongo mongo-express Genghis
出来ること
データ
コレクション
データベース管理
認証 × △(configファイル利用) ×
他サーバアクセス × × △(configファイル利用)


という感じでしょうか。
データの確認レベルであればphpMoAdmin以外はどれも良さそうだなーと思いました。
MongoDBにはAggregationMap-Reduce機能もありますが、
それら用のなにか特別な機能はなさそうでした。
考えてみたら、結局難しい処理はシェルで打ち込んでしまうと思ってしまい、
個人的にはGUIツールに要求する機能はデータの確認くらいという結論に至りました。

そうすると、データの確認がカジュアルにできる、
mongo-expressはかなりいいなと思います。
(開発環境とはいえ誤って複雑なレコードを消したら泣きそうですがw)

GUIツールは個人に依る部分があると思うので皆さんも試してみるといいかもしれません。
以下に検証に利用したレポジトリを用意したので、
是非みなさん、MongoDBのGUIツールと戯れてみてください。
VagrantとVirtualboxを利用してMongoDBのGUIツールを検証出来るレポジトリです。

https://github.com/tarata/mongo-gui-try


「RubyKoans」で たのしいRubyテスト駆動学習

こんにちは!
VOYAGE MARKETINGシステム本部の @saya_223n です。

私はこれまで、ほぼPHP一本でやってきた新米(ギリギリ)エンジニアなのですが、
この春から扱う言語が変わってアワアワしておりました。

PHPerだった私がRubyistになるにあたって、
とても助けられた学習ツールがあったので、今回はそれをご紹介します。

「RubyKoans」

http://rubykoans.com/

RubyKoansとは、
ユニットテストを利用してRubyの言語仕様を会得することが出来る学習用のコードセットです。


上記サイトからコードをzipでDLしてみると、
中に入っているのは40ほどのユニットテストのファイルその他諸々。

56(2)


ですが、そのテストを実行してみると、全てのファイルがエラーになります。


コードを見てみると…

39(2)


ユニットテストのAssert部分が穴埋め問題のような形式になっているのです!

例えば、上記コードの穴埋め部分には、trueが入りそうですよね。
入れてみて実行すると、テストが通ります!

この要領で、データ型やクラスごとにまとまっているユニットテストをどんどん埋めていくことにより、
Rubyの細かな言語仕様を理解することが出来る、という仕組みです。

==============================

※個人的には、
1つのユニットテストを書いてはテストを回す、というやり方ではなく、

1つのテストファイル(元のテストコードが40-150行くらい)を一気に埋めていき、
1ファイル仕上がった時点で、テストを実行するほうが良いと思います。

なぜなら、頻繁にテストを回しすぎると、コアを理解する前になんとなく穴埋めの解が読めてしまうからです。
(※assert に true 入れてテストがコケたなら、多分 false 入れれば通るよね…というメタ的な解き方が出来るということです)

==============================


ファイル群のうち、「about_xxxx.rb」というファイルはこのような「穴埋めUnitTest」となっており、
それ以外には「xxxx_project.rb」に関連するファイルが存在します。

これは、穴埋めではなく出来上がったUnitTestのファイル群となっており、
このテストが通るようにコードを自由に書きます。

58

例えば、上記、 about_triangle_project.rb というテストに関するものならば、
予め用意されている triangle.rb というファイルの中に、
三角形の判定プログラムを自由に実装し、
その後 about_triangle_project.rb のテストを実行して正しいプログラムになっているかを見るという塩梅です。

これに関しては、よくいうTDD(テスト駆動開発)そのものと言って良いと思います。


==============================


RubyKoansを利用して勉強をするメリットは、大きく3つあります。

1つは、本を読み写経しながらの勉強では、ついつい読み飛ばしがちな、

細かな言語仕様についてもユニットテストが存在するということ。

(例えばsymbolとstringの違いなど)


2つめは、テストによってこれまで自身が扱ってきた言語や経験によって偏りがちな

「苦手部分」を炙り出せること。


3.つめは、テストが通って行くことに寄る快感&達成感です\(^o^)/

(そのページの学習ドリルが終わったら達成シールを貼れる、みたいな小学生レベルの気持ちよさですw)


58(2)

テストファイルの数は結構沢山ありますが、
全てに取り組まなくても身になりますし、ぜひ挑戦してみて頂ければと思います。

ありがとうございました!

Adtech Studio × VOYAGE Casual Talks #2

先日、第2回目となる Adtech Studio × VOYAGE  Casual Talks を開催しました。
DSC04249


サイバーエージェントさんでもエントリが公開されてます。
【第2回開催】Adtech Studio × VOYAGE Casual Talks!
きっちり翌週月曜の朝にはブログが更新されてるところがさすがです!

というわけで当ブログでも簡単にご紹介。

▼前半戦
前半は「アドテクでのAWS活用」をテーマにAdtech Studio 木村さん、VOYAGE GROUPからはZucks 大谷が登壇しました。

最初はZucks 大谷から。
「Zucks Adnetwork作ったけど何か質問ある?」ということで、アーキテクチャ、AWSに対する所感、リリース後に起こった様々な事件など、クローズドな場だからこその話に質疑応答も盛り上がりました。

次は木村さんからの事例。
サービスの概要と、様々なAWSのサービスから好きなサービスを3つほど紹介してくれました。
質問に対する回答にも利用実績に裏付けされた重みがあり、とてもためになりました。


▼後半戦
後半は「本当にあった怖い話」をテーマにパネルディスカッションを行いました。
Adtech Studioからは福原さん、鷹雄さんが、VOYAGE GROUPからはZucks 舘野、adingo 粟飯島が参戦!
まじで外ではできない話のオンパレードでみんな大笑いや苦笑いしてましたw
DSC04276


▼最後に
今回も大いに盛り上がったので、まだまだ続けていきたいと思います。


[PR]
VOYAGE GROUPではアドテクエンジニアを絶賛募集中です!
adingo WEBアプリケーションエンジニア
Zucks 広告配信システムエンジニア
cosmi WEBエンジニア



記事検索
QRコード
QRコード