キッザニア

先日、家族4人でキッザニア東京に行ってきた。

キッザニアというのは、子供向けにお仕事体験ができるテーマパークで、日本では豊洲と甲子園にある。非常に人気があって、土日の予約は3ヶ月先まで常に埋まっている状態だ。私も6月に予約してやっと先日行くことができた。

キッザニアは親子で入場し、なかの個別の仕事場(「建設現場」とか「ピザ屋さん」とか)には子供だけが入る事ができる。それぞれの仕事場は企業が実名を出してスポンサーになっている。たぶんスタッフもそれぞれの企業の若手社員だろう。仕事場で働くとキッザニアの通貨が「お給料」としてもらえて、その通貨でサービスが受けられたり物が買えたりする仕組みだ。企業のいい宣伝にもなるので、スポンサーになりたい企業は多いだろう。うまい仕組みである。

4歳の娘は「ピザ屋さん」「食品の研究開発員」「モデル」、8歳の息子は「建設現場」「ガードマン」「旅行会社員」の仕事をした。二人ともとても喜んでいた。

Force.com

Force.comはSaleforce.com上にカスタムアプリケーションを作成できるというプラットフォームサービスで、さらに作成したアプリケーションをSalesforce.comユーザーに配布できるAppExchangeというサービスとも連動している。いろいろいじってだいぶわかってきた。

オブジェクト(RDBで言うテーブル)を作成し、Visualforceページ(カスタムWebページ)を作成し、その二つをApexクラス(ほとんどJavaと同じ文法でクラスを定義する)で接着するというのが基本的な流れになっている。Visualforceページには必ず一つコントローラーというApexクラスを定義することになっていて、ページからメンバ変数をいじったりメソッドをコールする事でDBを書き換える。文法やライブラリでガチガチにSalesforceスタイルにさせられるので最初の敷居が高いが慣れれば生産性は高そうだ。ページのテキストボックスやボタンを直接クラスのメンバ変数やメソッドにバインドするような書き方ができる。

ちょうどMicrosoft Accessでテーブルを作成し、ウィザードでフォームを作成するような感覚だ。テーブルとフォームは直接接着されている感覚だが、Visualforceページとオブジェクトはその間に接着剤としてクラスを定義する。その分手間がかかるがそこにロジックを追加していく余地がある。

面白いのは複数ページで同じコントローラーを指定するとメンバ変数でデータの受け渡しができる事だ。セッションにクラスのインスタンスが入っているようなイメージ。

「オブジェクト」と「クラス」がまったく関連のない別のものを指すというのはプログラマ的には「?」だが一般の英語で「オブジェクト=物」だからDBを指すのは自然なのだろう。日本語版でもそのまま「オブジェクト」「クラス」となっている。

Developerアカウントでは2ユーザーでしかテストできないので、ISV and Test Editionの申請をUSのSalesforceにした(日本版にはない)。こっちは10,000回APIコールしかできない制限があるが、20ユーザーでテストできる。

今日はInternal Server Errorが2回出た。いまいち安定していないのはUSクオリティと言うべきだろう。

Salesforce LIVE

今日、Salesforce LIVEに行こうとしたら、小田急線が人身事故で止まっていた。

東京に住み始めた頃、日常的に電車が「人身事故」で止まるので漠然と故障かなと思っていた。しかし「人身事故」のほとんどが飛び込み自殺だという事を知って腰が抜けるほど驚いた。だって人身事故があっても皆ぜんぜん驚いていないじゃないか。

でもいつの間にか人身事故で電車が止まっても「私の帰る時間に飛び込むなよ」などと思うようになってしまった。朝起きてNHKを付けて電車が止まっていると、ゆっくり朝の支度をするようになった。遅延証明がもらえるので遅刻しても大丈夫だからだ。感覚が麻痺したのだ。

結局、Saleseforce LIVEの基調講演には間に合わなかった。Force.comのチュートリアルをもらえたので、帰ってからいくらかのコードを書いて動かしてみた。

今日は激しく雨が降った。こんな日に起きたトラブルの事を思い出した。

私がノンバンクのシステム部員で府中の集中管理センターで働いていた時の事だった。その時丁度私はサーバールーム内で作業をしていた。当然サーバールームというのは入れる人は非常に限定されており、非接触のICカードと暗証番号入力がないと入れないようになっていた。外は激しい雷雨だった。

突然、明かりが消えて真っ暗になり、まもなく赤い非常灯が点灯した。ビルごと全館停電したのだ。多数のUPSが作動してピーピー大きな音が鳴り始めた。サーバールームのドアががちゃがちゃ鳴って中に入ろうとしてたようだが、ドアが開かない様子だった。サーバー自体はUPSで当面の電源が供給されているが、ドアを施錠しているICカード装置が停電で動作しなくなったのだ。偶然中にいた私が内側からドアを開けると、システム部員が一斉に入ってきた。皆自分の担当システムを安全にシャットダウンさせるためだった。

停電で施錠装置が動作しなくなるというのは初めて経験した。普通はそんなことないだろう。

水泳

今日は長男Tの水泳教室の日だった。

午後3時に長男Tと一緒に自転車に乗って町田駅近くのスイミングスクールに行った。今小二の長男は幼稚園の頃からこのスクールに通っている。どこのスクールもそうだと思うがここも級別にクラスがあって練習して合格すると上の級に進級するというシステムになっている。長男はここ1年ほど進級試験に合格できずに悩んでいた。長男の問題は、授業態度だった。元気だけはありあまっている長男は友達とふざけあうのが大好きで、コーチが話をしているときも大声をだして邪魔をすることがしばしばあった。もう少し授業態度を改めないと進級させられませんと私はコーチから聞かされていた。本人も「やめたい」と言ってた事もあったが、私は辞めてもいいがせめてこの級を合格してからにしようと言っていた。

8月のはじめ、長男はこのスクールの3泊4日の合宿で沼津に行った。沼津では毎日海で泳いでいたとのことだった。友達と喧嘩したらしいがなんとか仲直りして、とても楽しかった、また来年も行きたいと言っていた。

今日は月末なので、進級試験の日だった。結果は、合格だった。本人は最初今日の泳ぎは良くなかったので不合格と思っていたらしく、予想外の結果に驚いていた。コーチは長男が幼稚園のころから知っているおばちゃんで、おかげで長男の授業態度もかわってきた気がする。合格してもしなくてもおばちゃんのもとで努力する事は長男にとってプラスになるだろうと思った。長男はさっそく「紺帽子を買ってくれ」とやる気を出していた。次は1級で、100m個人メドレーである。

「intro」セッション(高田馬場)

久しぶりにイントロセッションに行く。7時頃行ってみると、座る席は見つかるが店内を歩くのは一苦労という程度に人が入っていた。クーラーが入っているはずなのに、人が多くて店内が暑い。ギターの北川さん発見。お久しぶりですね。今日のハウスベーシストは若いにいちゃんだが、この人はピアノも弾いていた(どちらも非常にうまい)。初めて見るドラムのおじさんがいたが、シャープでダイナミックな演奏をしていてかなりうまい。驚いた事に尺八でジャズに挑戦するプレイヤーがいる。かなりバップ的な演奏なので、もともとジャズ畑の人なのかもしれない。4,5人ボーカルの人がいて、私の演奏はインストより歌番のほうが多かった。普段ここのセッションはマスターの井上さんの他にアルバイトの店員がいるのだが、今日は井上さん一人で店を仕切っていて、大変そうだった。9時半ごろ帰る。今日はバラードの演奏が多かったせいか血豆もできず、疲労感もそれほど大きくない。

「B♭M7」セッション

先週に引き続き帯広「B♭M7」のジャムセッションに行った。9時に子供を寝かせ、ばーちゃんの軽自動車を借りて帯広市街へ行く。

B♭M7」はクラウンビルという雑居ビルの地下1階にある。マスターはベーシストの佐々木源市氏(源さん)だ。セッションのマスターも源さんがやるので「ベースがいなくてセッションがはじまらない」という事はない。

今日は先週より人数は少なめで、ベース3人、ドラム3人、ピアノ2人、サックス2人、トランペット1人、ギター1人だった。源さんはジャズベースのレッスンもやっていて、そこの生徒さんはセッションで演奏するのもレッスンの一環となっている。今日も生徒さんが自分のウッドベースを持ってきてセッションに参加していた。ベースが2本あったので、源さんとデュオで「Billie’s Bounce」を演奏させていただいた。私は他に、「黒いオルフェ」「Cantalope Island」「Bye Bye Blackbird」等を演奏して、1時頃帰る。また来年来ます。

「B♭M7」セッション

今子供と帯広に帰省している。今日は地元のジャズクラブ「B♭M7」に行ってみた。

夜8時頃、「B♭M7」があったはずの場所に行ってみると、あるはずの「B♭M7」がない。まさか、と思った。以前「add」のセッションに行こうとしたら、「add」がビルごと無くなっていた事があったからだ。近くの酒屋で話を聞くと、移転しただけだという事で、ほっとした。

「B♭M7」に行くとまだセッションは始まっておらず、客も私しかいなかったので、ママさんから去年亡くなったトランペッター浅倉功一氏の話を聞いた。浅倉氏は十勝のジャズを長年にわたってリードし続けた人で、車椅子に座りながらも精力的にライブ活動を続けていた。ベースの稔さんは浅倉氏が亡くなってからウッドベースは弾いていないという話だった。浅倉氏が「銀巴里」で日野皓正や山下洋輔とセッションしていたほどの人だとは知らなかった。浅倉氏とは一度だけ、「add」で共演させていただいた事がある。

9時を過ぎて人が集まり、セッションが始まった。ベースが私を入れて3人、管4人、ドラム3人、ピアノ4人、ボーカル1人、あとはギャラリーが数人いた。私が帯広で参加したセッションのなかでは最も人数が多いし、レベルも高かった。私自身は、"Beautiful Love", "Old Folks", "Satin Doll"を演奏し、11時半ごろ帰る。

Couldn’t fetch mysqli

私的メモ

あるオブジェクトをserializeしてunserializeすると「Couldn’t fetch mysqli」が発生した。

そのオブジェクトはあるテーブルに対するラッパーとして作成したもので、ページ内でこのように使われている。

・ページ1:インスタンス化して、serializeした後でセッション変数に格納
・ページ2:セッション変数から取り出して、unserializeし、使用

このクラスは基底クラスのコンストラクタでDBへの接続をおこない、メソッドではそのDB接続を使って読み書きをおこなう。エラーはページ2で発生する。

ラッパーオブジェクトのコンストラクタで作成されたmysqliオブジェクトはserialize->unserializeのなかでその接続を失うようだ(mysqliオブジェクト自体がSerializableではない模様)。そのためラッパーオブジェクトの基底クラスに__wakeup()を追加してunserialize時に再度mysqliオブジェクトを作成するようにした。

よーく考えたらそりゃそうだろうという話だ。ページをまたがる過程でDB接続を保持したスレッドが死んでいるんだから。