かみぽわーる

kamipo's blog

【知らないでは済まされない】Webエンジニアのためのデータベース技術[実践]入門

Webアプリケーションを運用しているエンジニアであれば、サービスの成長とともにデータベースの性能問題に頭を悩ませた経験が少なからずあるのではないでしょうか。

データベースは、大量のデータを確実に保存してすばやく取り出せる魔法の箱ですが、種も仕掛けもある魔法の箱です。魔法の箱をうまく使ってみせるには種と仕掛けをちゃんと理解していることがとても重要だと思います。

この本では、データベースがどういうデータ構造でデータを保持して、どういう性質を持っていて、どういうことが得意で、どういうことをすると性能上の問題があって、どうやって解決するかの指針を得ることができると思います。

この、どういう問題があって、どうやって解決するかの指針は、日々データベースの性能問題に取り組むWebアプリケーションを運用しているエンジニアにとって、とてつもなく実践的な内容だと思います。

また、まだ本格的なWebアプリケーションの運用をしたことがない人にも、将来Webエンジニアを目指すなら是非この本を手に取ってほしいと思います。

データベースの性能問題は、それが問題になりだしてからの対策は非常に難しくなるので、データベースで起こる問題をあらかじめ知っておくことは将来のあなたをきっと助けてくれるはずです。

ということで、下のリンクから買っても僕にちゃりんちゃりんいかないけど是非読んでみるといいと思います!


Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Webエンジニアのための データベース技術[実践]入門 (Software Design plus)

Nokogiriのインストール

Nokogiriをビルドするのにlibxml/parser.hとかlibxslt/xslt.hが必要なのでいつもの方法でどのパッケージに含まれてるのか調べる。

$ apt-file search libxml/parser.h
libxml2-dev: /usr/include/libxml2/libxml/parser.h
lsb-build-desktop3: /usr/include/lsb3/libxml2/libxml/parser.h
$ apt-file search libxslt/xslt.h
libxslt1-dev: /usr/include/libxslt/xslt.h
$ sudo aptitude install libxml2-dev libxslt1-dev

Nokogiriがビルドできるようになる。

$ gem install nokogiri

rbenvで入れたRubyで no such file to load -- net/https いわれるとき

VPSのUbuntuにrbenvでRuby入れていろいろしようと思ったら

 no such file to load -- net/https. Try running apt-get install libopenssl-ruby (LoadError)

rest-client/lib/restclient.rb at master · rest-client/rest-client · GitHub

っていわれたけど、apt-get install libopenssl-rubyしてもrbenvで入れたRubyでopenssl使えるようにならないのでこれではダメです!

とりあえず、なにが足りないのか調べるために

cd ruby-1.9.3-p125/ext/openssl
ruby extconf.rb

してみたら

=== OpenSSL for Ruby configurator ===
=== Checking for system dependent stuff... ===
checking for t_open() in -lnsl... no
checking for socket() in -lsocket... no
checking for assert.h... yes
=== Checking for required stuff... ===
checking for openssl/ssl.h... no
=== Checking for required stuff failed. ===
Makefile wasn't created. Fix the errors above.

openssl/ssl.hが足りないっぽいんで

apt-file search openssl/ssl.h

すると

libssl-dev: /usr/include/openssl/ssl.h

openssl/ssl.hはlibssl-devパッケージに含まれてることがわかるので

sudo aptitude install libssl-dev

したらいけるようになると思います!僕はいけるようになりました!

あとはopensslだけ入れなおすなりRubyごと入れなおすなりするとよいです。

自動化とか最適化とか

ふだん仕事とかで自動化とか最適化ってことばはあまり使わずに、省力化とか効率化ってことばを使うようにしてる。

なんというか、思い描く本当に自動化された理想の姿からすればぜんぜん自動じゃないし、最も適したと書いて最適化だけど、いまの自分に考えうる最高の姿が最適だと思えるほど自信家でもない。

それでも自分の心に反して自動化とか最適化ってことばを使ったほうが、よくわかってない人向けには耳障りいいのかなーと思わなくもないけど、自分の心に反してるので僕にはすこし勇気が必要なことであったりする。

言わないように気をつけてることば

仕事の話をしてるときに「でも」っていわれるとめちゃくちゃむかつくので、少なくとも自分は「でも」って言わないようにしてる。
相手のいうことを否定するなら「でも」なんて使わずに率直に「それは間違ってる」「それは正しくない」と言って自分の考えを言えばいいだけだと思ってる。

テストってことばを使わないようにする

レガシーシステムにテストコードがないことはどこにでもよくある話だと思いますが
いろんなところでテストと名のつくことばが出てくることでなんとなくテストしてる風のふいんきがかもし出るのが僕はずっといやだなーと思ってた。

なのでテストといってる人がいても僕は意図して別のことばに言い換えるようにしてきてた、以下のような感じで。

テストサーバ -> 開発サーバ
テスト環境 -> 開発環境
テスト用DB -> 開発用DB

去年、それなりの人数でフルスクラッチで新規開発するプロジェクトがはじまったときに、既存のプロダクトでみんなが不満に思ってることクソだと思ってることを、ここではみんながこうするのがいいと思う方法でやっていこうってことで、テストいっぱい書いたりフロントエンドをRailsでやったりしてる。

そのなかで「テストしてないのにテストいうのおかしい、これは目視してるだけや!」から生まれた目視サーバというのがちょっとウケる感じで僕は気にいってる。使い方は「さっきの修正したやつ、目視にデプロイしました。」って感じ。

もしテストしてないのにテストいうのおかしい思ってる人がいたら、目視つかってもいいですよ。

2011年の振り返りとかいろいろ

昨日はノースリーブス8thシングル「ペディキュアday」の個別握手会&ミニライブでした!

ちょうど一年前の今ごろはみぃちゃんのこともAKBのこともノースリーブスのこともなにも知らなかったもので
僕の2011年のもっとも大きな出来事はみぃちゃんとの出会いといっても過言ではないかもしれません。

みぃちゃんとの出会い

一年前を振り返ると、そのころはまだ国民的アイドルてどこ国のアイドルの話だよって思ってたのに
まわりは毎日のように「○○かわいい」「△△かわいい」ばかりいっててまったく話についていけてなくて

ある日きまぐれにそのかわいいっていってる子がどれほどのもんかと思ってYouTubeで探してるときに
かわいいっていってる子とはまったく別の子をみつけてしまって、この子はどんな子なんだろうって夢中で関連動画をあさってた。
みればみるほど感情移入してしまったその子こそ、みぃちゃんこと峯岸みなみだったのです。

一番にはなれないというメンタリティ

世の中のほとんどの人は一番になれないので、誰しもこの類いの劣等感を持ってるんじゃないかなと思います。
ドラゴンボールでいうところの、悟空に対するベジータ的なメンタリティです。

4年前、Perlプログラマだった僕はまわりのPerlハッカー達に劣等感を持っていて
同じことをやってたらこの人たちより輝ける気がしないなと思っていたから
プログラマとしてもっと上を目指したくて、インフラと運用をするために転職しました。

インフラと運用をやることは、プログラマとしての劣等感を抑えるかわりに
一番にはなれない分野をまたひとつ増やすことでもあります。

サービス運用者をやっていてもまわりにすごい人たちがいて
はたして同じ環境だったとしてこの人たち以上の成果を僕は出せるだろうかと考えてしまうわけです。

私は私

みぃちゃんは、あっちゃん、たかみな、こじはる、ともちん、なっちゃんと
いまでは6人しか残っていない初期メンバーのひとりで、メディア選抜の同期とくらべて
自分は初期メンバーなのにこのままでいいのだろうかという葛藤があって

それでも「みぃちゃんが一番好き」っていってくれるファンの人たちがたくさんいて
自分で自分のことが嫌いっていってたら自分のことを一番好きだといってくれるファンの人たちに失礼だなと思うし

AKBのなかでチャンスは平等ではないしみんながみんな自分の個性を見いだせるわけじゃないけど
そのなかでもみぃちゃんは自分の個性を見いだしてがんばっていて

「私は私」っていうみぃちゃんのソロ曲はそういう歌で
この曲をみぃちゃんのために書いてくれて本当にありがとうって感じです。

みぃちゃんのかわいいところはいっぱいあるんだけど
なんかそういうところに感情移入してしまって、みぃちゃんを応援せずにはいられなくなってしまってた。

これから

きっとこれからも僕は一番にはなれないメンタリティを抑えられないだろうけど
それでも自分にできることをやっていくことしかできないし

一番すごい人にはなれなさそうだけど
昨日の自分より今日の自分のほうがだれかに必要とされてるようにはがんばっていきたいなと思う。