Love PG , Liquor & Music

プログラマー備忘録やお酒や音楽

Microsoftに行って来ました

プロジェクトが忙しかったのでしばらく更新してませんでしたが、年末になり心と財布に余裕ができたこと、放置状態のブログがいつの間にか1万アクセスを超えてたことで少しモチベーションが上がったので久しぶり書いてみようと思いました。

f:id:gwaan_so:20141216192346j:plain

そして、今日仕事終わったあとに、品川にある日本マイクロソフト本社で開催された、Japan Azuru User Group(通称 JAUG)主催の第五回クラウドデザインパターン勉強会に行って来ました。

正直、クラウドサービスはAWSで充分過ぎるからAzuruにはあんまり興味がなかったのですが、ただ単にマイクロソフトに行って見たかったという軽はずみな気持ちで行きました。軽はずみな気持ちだったんですが、講義内容がすごく面白かったので行ってすごいよかったです。

Caching ガイダンス

冨田 さん

f:id:gwaan_so:20141216213841j:plain

今回聞いてきた内容はCache-Aside Pattern
(英語のドキュメントしかないです。。。)

で、このデザインパターンを証明するにあたり、キャッシュの概念の説明をしたあと、まさかのレジスタからL1、L2、L3キャッシュと順を追って行き、最終的にDBへのIO部分でReadはキャッシュから極力取得できるようにし、WriteはWrite Behindを非同期かつQueue使って疑似的に実現しましょーというような内容でした。
デザインパターン以外の話がすごく多く、特にインテルが提唱する次世代のインフラアーキの話がすごく面白かったです。

せっかくなので社内を探索

イケイケIT企業によくあるフリードリンク

f:id:gwaan_so:20141216192927j:plain

むだにかっこいいオフィス(エントランスではない)

f:id:gwaan_so:20141216213819j:plain

最後にお土産にステッカーとポスターいただいて帰りましたー

ので、さっそくMACに張りました。うっす。
f:id:gwaan_so:20141216213805j:plain

AWSジャパンツアーに行ってきました(^O^)

昨日8/8 Amazon Web Serviceジャパンツアー 夏 ~ニッポンにクラウドを~
に行ってきました。

f:id:gwaan_so:20140809034209p:plain

参加したのは
1.ビジネスセッション 初めてのAWS(講師 AWS 堀内さん)
2.ハンズオン CDNを使った画像配信サイト
3.ハンズオン ELBを使ったEコマースサイト
です。

1.ビジネスセッション 初めてのAWS

AWSの概要について紹介でした。
AWS導入を検討してる福岡の企業の方がスーツ着てたくさん来られていて、私服の僕は場違い感が半端なかったです。

2.ハンズオン CDNを使った画像配信サイト

このセッションでは、静的コンテンツの配信をS3で行い、運用中に世界中からアクセスが殺到した場合どう対応するか?という課題に対してAWSが提供するCloud Flontを利用して解決していくという感じの事をしました。

CDNと言うのは、簡単に言うとネットワークの最適化です。
このCloud Flontは地域性でネットワークの最適化をすることに特化してます。
例えば日本にサーバーがありアメリカからのアクセスがあった場合、距離的に凄い離れているのでどうしても遅くなります。そこでわざわざアクセスの度にオリジナルの日本のサーバーにデータを取りに行くのではなくアメリカにキャッシュサーバー設けアメリカ国内からのアクセスはそこからデータを取りに行くようにすることによって距離的問題でかかっていたコストを削減することができるということです。
確かずいぶん昔(7-8年前?)にWikipediaがこのやり方に変更して当時話題になった記憶が有りますがちっちゃい企業では世界中にサーバー置くなんて夢物語だなーなんて思ってましたが、Cloud Flontを利用することで個人レベルで数クリックでできちゃう時代になっちゃったんですね。

Cloud Flontにかぎらず、AWSサービスはロケーションを意識できるってところが凄い強みだと思います。

ハンズオン資料: https://horiyasu.s3.amazonaws.com/presentations/20140801_japan_tour_CDP-content-delivery-handson.pdf

3.ハンズオン ELBを使ったEコマースサイト

このセッションでは、EC2でWEBアプリを冗長化しよーということでELB(ロードバランサー)使ってWEBアプリを2つ動かすって感じのことをしました。

ロードバランサーって、高くて、構築難しくて、ネットワークエンジニア専用のよくわからない機械ってイメージが強いですが、ELB使うと僕みたいな素人でも30分もあれば調達から構築が可能なのでこれはかなり素晴らしい製品だと思いました。

2台目移行のEC2を構築する際に1から構築するのではなく、1台目のEC2のひな形(AMI=Amazon Machine Image)を作る事によってそのひな形から2台目移行のEC2インスタンスをワンクリックで作成できる事ができます。
このAMIは独自に作ることも可能ですが、Amazon Market PlaceからいろんなAMIを入手できるのでそれを使えばWEBアプリってなんなの?レベルの人でもすぐにECサイト立ち上げたりすることができるのでこれも凄い便利です。
最近マインクラフトやってて、サーバー立ち上げた時もマインクラフトのAMIを入手して構築したので数分で使えるようになりました。ソフトウェアプログラミングでは車輪の再発明はやめよーっていうのが常識ですが、ハードに対してもここまで出来るようになったってのはただただ凄いですねー。

ハンズオン資料:
https://horiyasu.s3.amazonaws.com/presentations/20140801_japan_tour_CDP-ec-handson.pdf

インフラのクラウド化で思ったこと

独自でインフラ周りの調達とか保守とか無駄な労力で馬鹿らしいから、その分コード書いた方がいい。
ネットワークエンジニアの必要性が余りなくなる。

AWS認定プログラムとっといたほうが今後は凄い役に立ちそうだけど、例題見たらかなり難しいからどうしよう・・・

Java8のラムダ式ってイラネ(゚⊿゚)

ここ数か月Javaから離れた生活を送ってきたのですが、久しぶりにJavaを入れたらVer8になっていたので少し習得する意味を込めて触れてみようと思い立ちました。 公式も謳っていますが、今回のバージョンアップで一番の目玉は何といってもラムダ式が書けるようになったことらしいです。

Java8のラムダ式って?

凄く簡単にいうとコード量をだいぶ削減できる書き方です。 関数を疑似的にオブジェクトとして扱うようなイメージなのかなー程度に思ってます。 C言語とかで使ってる関数ポインタに相当するようなものがJavaにはなかったのですが、これが実装されたような感じです。

どういうコードが削減できるの?

結構限られていて、第一級関数で関数型インターフェースで表現できるものだけです。 つまり結構おなじみのRunnableインターフェースのrunメソッドとかみたいな実装できるメソッドが1個だけのInterfaceです。 記載サンプルは死ぬほどネットに転がってるので割愛します。

なんでわざわざややこしくなるような記法を追加したの?

正直、削減できたコード量は簡単な処理だと2-3行、ちょっと複雑になっても数十行程度です。 大規模なシステムで書いたとしても0.5k行くか行かないかくらいでしょう。 で、大規模なシステムならいろいろなエンジニア、デベロッパーがいます。 それだったら、たかだか500行削除するよりは、Java7標準のわかりやすく・見やすく・共有しやすい従来のコードで書いたほうがまだましです。

コード削減が結構注目されているラムダ式記法ですが、オラクル公式見解では並列処理を簡単に実装できるというところにあります。 つまり、同時に提供されたStreamと組み合わせることで初めてJavaでラムダを使うメリットが出てくるってことです。 ただ単に、嫌がらせレベルで可読性を下げたり不慣れな記法でバグを大量発生させようとかいうオラクルの目論見ではないってことらしいです。

ラムダの使いどころ その1

上記で述べましたが、並列処理を行わせたいときに使うのが一番でしょう。メソッド一本噛ませるだけでできちゃいます。 特にコレクションを扱う上では凄くイケてる感じの記法になります。もうfor分を腐るほど書かなくてもいいんです!

例:並列処理を使って電気タイプで高さが50以上のポケモンを体重順に並び替えて取得する

List<String> box = pokemons.stream().parallel()
  .filter(p -> p.getType().equals("電気"))
  .filter(p -> p.getHeight() > 50)
  .sorted(Comparator.comparingInt(Pokemon::getWeight))
  .map(Pokemn::getName)
  .collect(Collectors.toList());

1行ののparallel()つけるだけで勝手に並列処理してくれます。 Streamと組み合わせることによって、見た目も結構すっきりかけます。 もちろん、同一JVM上での並列処理の話なので分散コンピューティング行いたいときはRMIとか組み合わせると便利かもです。

ラムダの使いどころ その2

非同期処理を実現するときに、関数ポインタとしてフレームワーク的な何かへのコールバックを実現するとかできそうかも。

最後に

特に並列処理で今まで困ったことはないし、変な書き方がただ追加されたただの改悪だと個人的に思ってます。 そもそもコレクションを扱う上で並列処理が必要って状況が思い浮かばないし、そういう状況に置かれるってことはまずストレージやDBからのデータ取得方法を再検討したほうが効率がいいと思います。

実はこのヴァージョンアップは、Javaを本格的に関数型プログラミングへ向かわせる布石とも言われてますがほんとのところはどうなのでしょうか・・・

システムでは個人情報を持つべきではない(理想と現実)

最近作っているシステムで僕が設計した個人情報の扱い部分について痛烈にディスられたので吐き出しです。

経緯

ユーザーが持っている情報を別のユーザーに移管するときに、そのユーザーがシステム利用者であればユニークなユーザーIDをキーとして移管し、ユーザーがシステム非利用者であればメールで通知しシステム利用を促す仕組みを僕が設計。
「利用者のメールアドレスを移管担当者が知ることはナンセンスなんじゃね?」との批判を受ける。

論点

個人情報の公開範囲の問題

現実を踏まえた反論

そんなことはわかりきってます。現実問題として顧客の要望を叶えるユースケースを実現するためにはメールアドレスを移管担当者が知る必要があります。
例えば、移管のキーをワンタイムトークンにして、QRコードとかで受け渡せばメールアドレスを知る必要は全くなくなりますが、移管者の運用フローにQRコードを発行して受け渡すという手間が出てきます。
QRコードを発行するにはプリンターが必要だし、印刷の手順もわかりやすく周知しなければ行けないです。顧客側としてもiPhoneとかだとデフォルトでQRコードの読み込みが出来ないし、そもそもQRコードってなに?美味しいの?みたいな人もいる可能性だってあります。
特に今回作ってるシステムは老若男女問わずの利用される可能性があるので、QRコードを選択するほうがユーザー獲得枠を狭めてしまう可能性が大いにあります。(だってメールからリンク開くだけの方が簡単ですよね?)
システム都合でこういった損失につなげるという設計は絶対にありえないことですので、現実社会として実装するのは難しいです。

で、現実問題としてそういう基板上に今のシステムの多くは成り立っています。レンタルビデオショップしかり、携帯ショップ然りです。
多くのシステムでは個人情報を閲覧できる権限を従業員であればほぼだれでも持っています。

理想的な個人情報を扱う基板

そもそもシステムで個人情報を持つべきではない

つい先日ベネッセで2000万人の個人情報がありましたが、そもそも個人情報を各民間企業なりシステムでもつ必要があるか?と常々考えています。
企業が情報流出を行うと、信頼は地に落ちヘタすれば倒産します。また、顧客も知らないところから変な連絡が来たりとかクレジットカード勝手に使われたとか迷惑千万極まりない状態に陥ってしまいます。

もしシステムで個人情報を持たなかったら、こういう悲惨なケースってなくなりますよね。
システム屋さんだったら、今後自分が作ったシステムで万が一情報漏洩につながった時に、「あっこの問題進研ゼミでみた!」なんて後ろ指をさされることもなくなります。
企業だって個人情報の扱いに対して金と気を配らなくなるのでメリットしかなくなります。

個人情報を管理するのは実は思っている以上に莫大な金がかかってるのです。
電話回線とかの契約している顧客情報を管理しているデータベースが関東の北の方にあるんですが耐震防災最新鋭のセキュリティ完備のビル1棟建てて厳重に管理しています。場所によっては映画とかで出てくる網膜認証とかしているところもあります。個人情報を管理するってのはそんなレベルなんです。

どうやったらシステムで個人情報を持たないですむか

シンプルです。
個人情報は国が一元管理すればいいのです。
システムが個人情報を使いたいときは、利用者から閲覧許可をもらって参照させるようにすればいいのです。
例えばAmazonで何か注文してから手元に荷物が届くまでのフローはこんな感じ。

f:id:gwaan_so:20140712144213j:plain

昔のエントリーで書いたOAuthの考え方ですね。
要は個人情報を閲覧する権限の譲渡で成り立つということです。
個人情報の利用を利用者の判断でできるっていうメリットもあります。
Amazonだけでなく楽天とか色々なとこで買い物する人結構いると思いますが、各サイトで初回購入時なんかはいちいち住所入力とかめんどくさい手間も省けます。

個人情報の一元管理という点では昔に国民総背番号制度なんて糞制度が未だに頓挫気味で進行中とかですが、せっかく進めるんであれば是非こういう使い方だけして欲しいです。
この制度について「管理社会は最低だ!」とか、「人権がなんたらかんたらだ!」っていう意見も色々とあると思いますが、誰だって日本に住んでれば国籍が発行されて管理されていますし、上記に書いたようにビデオ借りようと思ったらそのビデオ屋さんに「名前・住所」、もっと言うと「何月何日にアダルとビデオ○本借りました」とかの情報まで管理されますよね。それの延長なので抵抗ある人は使わなければいいだけです。

国民総背番号制度でシステムと連動できるような便利な社会に早くなればいいなと思いますが、民間に情報提供しなかったり、利用者の承認を得ず参照とかできるような脆弱すぎる作りには決してしないで欲しいものです。

ジャマイカ スカおすすめ・名盤20選!夏に聴く気持ちいいSKA!(One Loveとかも)

f:id:gwaan_so:20140708203552g:plain

今年も早いもので半分経過、 7月突入しましたね~!

夏ですね~
暑いですね~
熱いですね~
夏といえば、
レゲエですね~

天気がいい日に外でビール片手にレゲエなんて最高じゃないでしょうか。

レゲエと言えばボブマーリーで、
ボブマーリーといえばレゲエですが、
レゲエで売れる以前ボブはSKAバンドをやってたのをご存知でしょうか?
今日はスカとかそこらへんの話を書いてみます。

SKA(スカ)ってなに?

モヤモヤさまぁ~ずとかのBGMでよくかかってるようなアレです。
第2,4ビートを強調したオフビートなかんじのアレです。
バンド編成がJazzと同じなのでJamaican Jazzなんて呼ばれていた時期もあったみたいです。
実際にSKAにはJazz奏者が多くいました。
レゲエが国際的になる前に国際的になったJamaica起源の音楽です。

ボブマーリーとスカ

ボブマーリーが最初にリリースしたのは、ボビー・マーテル名義で「One Cup of Coffee」そして「Judge Not」って曲です。
近所のアイスクリーム屋からデビューしました。
リリースは1962年。当時のスカムーブメントに合わせた仕上がりになっています。
ちなみに2曲ともまったく売れなかったそうで1円も報酬をもらえずにアイスクリーム屋さんの元を去って行ったそうです。

Judge Not

Wailersとスカ

ボブマーリーといえばよくCDにはBob Marley & The Wailersとクレジットされてます。
このWailers、元祖は1960年初頭Bob Marley、Peter Tosh、Bunny Wailerで結成されたWailersがオリジナルです。(前身となるのは全員10代の時に構成したThe Teenagers)。
その後Bobがソロで目立つようになりー、Toshが抜けー、Wailersが抜けー、 いろんなメンバーが新規加入したりマーケティングも絡んだ結果Bob Marley & The Wailersになった感じです。
で、後述するCoxsonからWailersはいろんな曲を出しています。
Bob Marleyで一番有名な曲であるOne Loveも。広く知れ渡るOne Loveは実は1977年版のリテイクで オリジナルはCoxsonから1965年に出ているOne Loveです。
リテイク版は落ち着いた感じですが、オリジナルはかなりスカってます!

One Love

そしてSKAの一番最初のビッグヒットとなったであろう曲は、Wailersの「Simmer Down(落ち着けよ~)」

Simmer Down

こちらはFire Ballも初期の頃にカバーしてた凄いクールな曲です。
Rankin Taxiの「実の娘をナンパ~」って曲のRiddimでも使われてますね。
凄い好きです。

世界で一番最初に売れたスカ

といったらたぶんこれ!Millie SmallのMy Boy Lolipopでしょう。
一度聴いたら忘れられないような甲高い声とファンキーな曲。
その歌声はもちろん日本にも流れてきました。

新リズム"スカ"登場!のコピーが最高にクールです。

f:id:gwaan_so:20140705182401j:plain

My Boy Lolipop

あと、めっちゃかわいいです。

スカな人たち

Prince Buster

Prince Busterは元ボクサーでJamaica草分け的サウドシステムCoxsone Down Beatの用心棒をしていた話はあまりにも有名です。用心棒ってどんなことしてたのでしょう。日本では黒澤明監督の描いた侍的な用心棒なんかを想像してしまいますが、50年代のジャマイカでは主に敵対するサウンドシステムをつぶしたり、攻撃(物理)を防いだりとご活躍されていたそうです。
※サウンドシステムっていうのは移動式ディスコみたいな感じでトラックにスピーカ積んで空き地とかでレコードをかけたりするグループみたいなものです。今でいうDJとかそんな感じです。

近年でもサウンドシステム同士の戦いであるサウンドクラッシュは世界中で頻繁に行われていますが、基本的には曲の掛け合いとMCで敵のサウンドをつぶしていくスタイルが主流です。
Prince Busterが無名の時代、Jamaicaでは先に出たCoxsonのDownBeatとDuke ReidのTrojanという2大サウンドシステムがバチバチに戦っていました。最初の方は2サウンドとも相手が持っていないイケてる曲作って掛けたり、独自のルートで入手した最新の曲をかけたりして競い合っていました。当時はまだレコードをプレイしていたので相手に曲名とか知られないようにレコードのクレジット欄を塗りつぶしたりなんかもしてたりしたそうです。
んで、そうこうしているうちに規模も大きくなり戦いもエスカレートして相手のスピーカーの配線切ったりとか相手のチーム全員ぼこったりとかどんどん邪悪路線に走って行った結果、Prince Busterみたいな用心棒の需要ができたってわけですね。

んで、Prince Busterの代表曲「They Gotto Go(お前らどっかいけ!)」。
最近のサウンドクラッシュでもいまだにプレイされている名曲中の名曲です。内容的には「もうお前らみたいなお遊びサウンドはお呼びでありましぇーん」みたいな感じです(たぶん)。They Gotta Comeってクレジットされてるのもあるので「かかってこいやー!」みたいな意味合いも込められてるのかもしれません。ほかにもHard Man Fi Dead(俺を殺すのはなかなか難しいぜ~)とかMadnessとか元用心棒らしい曲がいっぱいあります。

They Gotto Go

Hard Man Fe Dead

Jamaica産のSKAとはちょっと離れますが、プリンスバスターがらみでイギリスのBLUE BEATレーベルもSKAを聞くなら絶対にはずせません。音源もすごくいいのが多いですが多すぎるのでまた別の機会にまとめたいと思います。

Derrick Morgan

Prince Busterの天敵Derick Morgan。
まあ初めにかみついたのはPrince Busterなんですがその後いろいろと曲で勝負してるみたいです。
経緯はDerrick Morganのリリースした「Housewives' Choice」に盗作疑惑があるとしてBusterがMorganを批判する曲をリリースします。
で、その曲に対してMorganがさらに曲で反撃し、Busterがまた反撃し・・・と続けていくうちにファン同士の抗争も激化してきてジャマイカ政府の介入を受け終焉に至ります。
日本で言うならば、むかーしZEEBRA率いるキングギドラDragon AshのKJに対して「公開処刑」をリリースし話題になりましたが、そんな感じのことがJamaicaの音楽文化では頻繁に行われているんですね。
最近でもMavado VS KartelとかBeenie Man VS BountyとかShabba VS Kartelとかリリースする曲でやりあうっていうスタイルは結構ありますが、このMorgan VS Busterはこういうスタイルのクラッシュでは最古のものとされています。

そんな激闘の中最初にMorganがBusterに返した曲が「Brazing Fire」
クラッシュとかでは「You say that, jah walk a blazing fire~」でPull Upするのがお決まりになってきてますが、通して聞いても凄くかっこいいです。

Brazing Fire

ちなみにいざこざの発端になった曲は、アイスクリーム屋からだしてます。
アイスクリーム屋の店主レスリーコング。この人もこの時代の音楽文化ではかなり重要人物なんですよね。

Justin Hinds

SKAのコンピレーションアルバムの裏を見ると必ずと言っていいほどクレジットされているのがこの人 Justin Hinds。
そしてこの曲 Carry Go Bring Comeです。
Justin Hindは無名時代Coxsonのもとへオーディションを受けに行きますが落とされてしまいます。
が、Coxsonと敵対していたDuke ReidがJustin Hindsに目をつけすぐに録音します。
録音が終わって、プレスが終わったその晩、DukeはCoxsonとのサウンドクラッシュでできたばかりの「Carry Go Bring Come」をプレイしたところ大盛り上がりで、この曲だけで計8回もプレイしCoxsonとのクラッシュは圧勝に終わったという逸話もあります。
Jamaican SKAの代表的曲といっても過言ではないんじゃないでしょうか。ホーンとかも合わせてめちゃくちゃかっこいいです。

Carry Go Bring Come

Jimmy Cliff

レゲエを初めて世界に広めた人はこの人Jimmy Clifだと思います。
本名James Chambers、Jamesの短縮型がJimmy、「絶壁」のような頂上を目指すという意味でClif それがJimmy Clifの由来です。
有名な映画「Harder They Come」、VHSしかなくて探しているんですけどまだ見れていません。。。
サウンドトラックは死ぬほど聞きましたが、どの曲もめちゃくちゃ格好いいです。

Jimmy Clifも最初はBob Marleyがデビューしたアイスクリーム屋からデビューしてます。
ただ、Jimmy Clifのほうが少し早くデビューしたのでBob Maleyの先輩ってところでしょうか。
デビューしてからはSKA旋風にのり一躍SKAのスターにのし上がります。

その中でも一番好きな曲は「King Of Kings」。ライオンがこの世で一番最強!!みたいなこと歌ってます。この当時の曲は結構童謡的な歌詞が多いです。
童謡然りですが、SKAにも似た文化があってかわいいお話に揶揄を挟んだりして軽く社会風刺につなげてるような歌詞が恰好多いです。

あとはMiss Jamaicaみたいな恋のSKAもあって、歌詞がすごい純粋で素敵です。

Jimmy ClifはSKAムーブメントの終焉からレゲエにシフトし始め、72年Harder They Comeに出演しています。
80年代にはグラミー賞も受賞し、現在でも来日したり世界中で歌いまわってます。

余談ですが、Jimmy Clifのダブプレートは偽物がすごく多くて、ついには本人が切ったダブはJamaicaの老舗サウンド Silver Hawkと日本のMighty Crownだけ!とYoutubeで公言していました。
Stone Love、Bass OddyseyとかがかけてたJimmyClifのダブは誰が歌ってたのでしょう笑

King Of King

One Eyed Jack

Miss Jamaica

The Skatalites

Jamaican Skaで絶対にはずせないのはこのバンド。
このバンドはCoxsonがStudio Oneレーベルのハウスバンドとして始めたのがきっかけ。
Jamaicaのこの年代の音楽をたどっていくと必ずCoxsonかDukeが絡んでますね~。
一番有名な曲は映画 ナバロンの要塞(邦題)のテーマ曲Guns Of Navarone。(まんまですね。)
メンバーが殺人で投獄されたりなんやかんやでSKAムーブメントも終焉を迎え自然解散しましたが、
嬉しいことに再結成して、また世界中で演奏して回ってます。
今年もBlue Noteに来てたりした気がします。

Guns Of Navarone

Lord Creator

一番有名な曲は間違いなく1962年8月ジャマイカが独立した年にリリースした「Independent Jamaica」です。Load Createrはもともとトリニダード出身なのでジャマイカの歴史なんか知る由もなさそうなもんですが、この曲の為に歴史を学びリリースまでこぎつけてメガヒットにまで至ったみたいです。めっちゃかっこいいです。

Independent Jamaica

他にも

スカにはいろんな有名アーティスト、有名な曲がたくさんありますので一部紹介します。

Eric Monty Morris

この曲はスーパーブレイクしたみたいです。
Bass OddyseyがサウンドクラッシュでMighty CrownのSami-Tに対して(Sammyと掛けて)この曲をかけていた印象がすごい残ってます。

Sammy Dead

Stranger Cole

Call My Name

Rough and tough

Delroy Wilson

I Shall Not Remove

Prince Pharoah

Don't Believe Him

Byron Lee & The Dragonaires

SKA SKA SKA ちゃちゃちゃっ!

Jamaican Ska

おわりに

ここで紹介したのはほんの一部です。さぐっていくといろいろ面白い曲もありますし、UKで成長していったUK SKA
日本でもスカパラとか現在進行形でスカの文化は世界中に根付いて成長していっています。

また、BBCが放送したHistory of Jamaican Musicの最初の方でSKAの成り立ちとか当時の映像を詳しく知ることができます。
興味あれば見て損なしです!SKA最高! 

RailsでMongoを使う(gem mongoの方)

Railsでmongo使おうと思ったらmongoidが結構主流で使われてます。
mongoidを使うとActive Record風にコレクションを扱えるのでふつうはこっちを使うのが一般的かと思います。

gem mongoidを使ってModelにField追加するってことはmigrationが不要になっただけであって、
mongo最大の利点であるスキーマレスを全く生かせてないんじゃ?なんて初心者特有の浅はかな考えが浮かんできました。

じゃあ、もっとmongoチックに実装してみようってことで’gem mongo’を使ってみることにしました。

mongo | RubyGems.org | your community gem host

gem mongoする

Gemfileに以下を追記します。bsonはmongo扱うときに必要になります。

gem 'mongo'
gem 'bson_ext'

mongoサーバーを作る

と書きましたが、作ってません。
めんどくさいのでMongo HQ上に一つサーバーを用意しました。
$ heroku addons:add mongohq で追加できます。追加したら環境変数MONGOHQ_URLみたいなのに接続情報が設定されます。Herokuすげー便利ですね。

MongoHQ | Add-ons | Heroku

app2XXXXXXから始まるのが自分のサーバーのIDになります。

f:id:gwaan_so:20140704002152j:plain

Adminタブから接続情報を確認できます。
アクセス権限や、ユーザーの削除追加もここからできます。

f:id:gwaan_so:20140704002559j:plain

Modelを実装する

こんな感じで実装します。

total.rb

ポイントは、require mongoすること。
あと、環境変数MONGOHQ_URLをパースしないとConnection.newに渡せないのでパースしてあげること。
正直ここが一番ハマりました。

initialize以外はコンソールでmongo使うような感じで好きなように実装してあげればOKです。

たぶんスキーマレスにするのはマスタ系とかは全然向いてないけど、
集計、統計なんかを動的に仕込みたいときとかだとすごい威力を発揮すると思いました。

SQL Fiddleの使い方メモ(どこでもSQL)

  • 外出先でSQLが思い浮かんですぐにでも試してみたい!
  • OracleMySQL、ポスグレとかいろんなDBでSQLを試してみたい!
  • 自分の作ったSQLをわかりやすい形で共有したい!

そんな要望に応えるようなWEBサービスSQL Fiddleを発見したので、試してみました。

最近はフレームワークにORマッパーがほぼついてるので、SQLを書く機会は減ってきましたが、
性能改善や特殊な参照を行う際は必ずSQLの知識が必要になってきますので少しずつ勉強していきたいと思います。

SQL Fiddleとは

SQL FiddleとはWEBブラウザからSQLの実行、確認ができるサービスです。
ログインして、Stackoverflowと連動させるようなこともできますが、特段ログインしなくても使えます。
また、実行結果はWEB上に永続的に保存されるため、URLでプライベートDBを共有することができます。

実際に使ってみる

まずはSQL Fiddleへアクセスします。

f:id:gwaan_so:20140624110355j:plain

アクセスするとこんな画面が表示されます。

My SQL、Oracle11gなど主要なエンジンはそろってます。今回はOracleを使ってみることにしました。

f:id:gwaan_so:20140624112248j:plain

リストからOracleを選びます。

次に、テーブルの作成とデータ投入を行います。 左のアクティブな枠にDDLを記載してあげ「Build Schema」を実行します。

f:id:gwaan_so:20140624112318j:plain

実行するとすると、右側がアクテイブになりました。
DDLの構文エラーなどが起きた場合は、Schema Ready部分にエラーが表示されます。

f:id:gwaan_so:20140624112349j:plain

右側に実行したいSQLを記述して実行します。 実行後の結果として、Tabular、Planetext、Markdown Outputが選択できます。 

f:id:gwaan_so:20140624112435j:plain

実行するとこのような形で結果の表が取得できます。便利ですねー。  また、データの総量や表どうしの関係図なども見ることができます。

f:id:gwaan_so:20140624112453j:plain

また、実行結果も保存できますので他のと共有したい場合はURLを送るだけです。 今回つかったURLは以下になります。

SQL Fiddle

世の中便利なサービスがいろいろありますね。 積極的に活用していこうと思います。