2012-12-29

JICA WORLD REPORTER #12

JICAワールドレポーター更新。
デング熱?!


11月下旬のことだが、オフィスに出社後、急に寒気を感じ、椅子に座っているのも辛かったので早退。家に帰って熱を測ってみると37度位と微熱気味。横になっていると、その後も熱はどんどん上がり続けて夕方には38.6度までに。このまま熱が上がりつづけたらまずいと思い、勤務先でもある病院の緊急外来に駆け込む。

しばらく待たされた後に熱を測って、パラセタモールを服用させられ1時間くらいエアコンの直下に放置され(意味不明)、その後も熱が下がらなかったので、ようやく採血と検尿、結果が出るまでまたまた1時間くらいロビーで待たされ、ようやくドクターによる診察。たぶんデング熱だろうと、2日後に再検査に来いという。

デング熱とは、デングウィルスが原因の感染症である。熱帯病なので日本ではほとんど聞かないが赤道付近の国々では流行している。デングウィルスは、主にネッタイシマカと呼ばれる蚊により媒介される。症状は、発熱、頭痛、筋肉痛、関節痛、発疹等とされる。

自分の場合、毎日38度以上が一週間続き、39度も数回。その間は頭痛、関節痛や目の奥の痛みが伴う。風邪とは違うのがだんだん良くなっていくという実感が全くない。解熱剤を飲めば熱は下がって、その効果が切れたらまた上がってという繰り返し。また、38度超えているのに寝てても汗はほとんどかかない。そんな症状が1週間続いたかと思うと急に熱が下がる。熱が下がった後は、赤いプツプツした発疹が腕、掌や足の裏に出て夜寝ようと思っても痒くて眠れない。それが2, 3日続く。症状が回復した後も何だか倦怠感があって、ちょっと何かするとすぐ疲れる。

それにしても、先に書いた初日は結局あれだけで4時間以上も病院に、帰ったのは深夜。その2日後は2日後で、病院に行くとすぐ採血されたので今日こそすぐ帰れるかなと思ったら、7時間以上も高熱の中、ロビーで待たされた上に、挙句の果ては検査結果は今日は出ないから帰って2日後に結果を取りに来いと。

元気じゃないと病院行けないな...というのが感想。

そして、未だデング熱かどうかは分からず。国内での検査ではデングウィルスや抗体は検出されず。採血をトリニダード・トバゴにも送ったらしいがそちらは未だ結果は出ず。
なので今のところ病名は「デング熱疑い」。

2012-12-06

JICA WORLD REPORTER #11

JICAワールドレポーター更新。
インディペンデンス デー 


ここドミニカは今年で34歳と非常に若い国である。1978年11月3日にイギリス連邦(Commonwealth of Nations)加盟国として独立した。その独立を記念して、この日に向け各地で色々な行事が開かれる。公式パンフレットによれば、今年の祭典期間は9月23日-11月5日、総イベント数は60にものぼる。その中のいくつかをご紹介。

■クレオール デー (CREOLE DAY) - 10/26 (金)
この日は平日であるが、多くのドミニカ人が正装であるチェックのクレオール衣装を身につけて職場に行く。オフィスワーカーはもとよりスーパーの店員までもがクレオール衣装を着ている。町中がそんなチェック柄一色に染まる一日である。女性のチェックのクレオールの派手さに比べ、男性は控えめである。白シャツ、黒ズボンが基本、シャツあるいはタイとベストにチェック柄を使うか、またはチェックは全く用いず腰にサッシュと呼ばれる赤い布を巻く。



音楽関係イベントもこの期間に多数開催される。中でも規模が大きいのが次の2つである。
■クレオール イン ザ パーク (CREOLE IN THE PARK) - 10/22 (月) - 25 (木)
ボタニカルガーデン(植物園)で開かれる地元ドミニカのバンドが中心で地元住民を対象としているためか入場料も安い(数百円)。平日にも関わらず昼間から夜7時位まで連日開催される。昼間は会社勤めの人間にはちょっと行きづらいが、多くの職場が4時で終わるため、その後に行く人が多く夕方以降が一番盛り上がる。前年に比べ、今年は天候にも恵まれたせいか、超満員だったように思う。

■ワールド クレオール ミュージック フェスティバル (WORLD CREOLE MUSIC FESTIVAL) - 10/26 (金) - 28 (日)
こちらは中国が投資して作られたドミニカ唯一のスタジアム(主目的はクリケット試合用)で開催される。ワールドとつくだけあって海外からも多数のアーティストを呼び、チケット代も高い(3,000円強)。そのためか、地元住民よりは海外からの観光客が目立つ。こちらは連日、夕方頃から始まり夜通しライブが行われ朝方に終わる。住宅地も近くだし大音量なので、日本だと問題にもなりそうな時間帯であるが、こちらの人は特に気にもしてない様子。


独立記念日当日に行われるのが次のイベントである。

■ナショナル デイ パレード (NATIONAL DAY PARADE) - 11/3 (日)
一年間の功労を表彰する式典が行われ、その後、警察官を中心に編成されたパレードバンドが演奏する。日本のパレードバンドの凄さを知っているだけに、練習不足のバラバラ感は否めない。人数少ないし楽器も古そうなものが多いので音も迫力に欠ける。まあ、そこはドミニカ(人)のご愛嬌でもあったりする。ただ、去年よりは確実にましになった気がする。

2012-11-01

JICA WORLD REPORTER #10

JICAワールドレポーター更新。
突撃ストリートライブ


自称スムースジャズバンドのストリートライブにギター1本で飛び入り参加してきた。当日、ギターの他に小型アンプとアンプシュミレーターの付いたマルチエフェクター(いずれも先輩隊員の置き土産)、ついでに変圧器までと準備万端、重い思いをして持っていったのだが、道中でケーブルが断線したようで使えず。結局、ギターからPA卓に直接繋ぐことに。エレキギターを弾いている人はわかると思うが、アコースティックギターやキーボードと違って、エレキギターはアンプ(もしくはシュミレーター)があってこそ一つの楽器といえる。PAスピーカーから聞こえる完全なドライで、まるでラジカセに繋いだかのようなバンドから一人浮いたペンペケな自分のギターサウンドに早くもヤル気半減、出鼻を挫かれた。

ストリートライブの場所は首都ロゾー(タウンと呼ばれる)のほぼ中央にあるチャイナタウン(中華街じゃなくてそういう名の店)の軒下。金曜なこともあり、平日はあまり夜遊びしないドミニカ人もこの日ばかりはタウンに繰り出すため、結構な人だかりに。なので気を取り直して、とはいえ事前に何をやるかなんて知らされてないから全くの行き当たりばったりなのだが、とりあえず何とかバンドについていこうと奮闘。



ジャズバンドとはいうものの、このバンドにはスコアはおろかコード譜すら存在しない。そもそもドミニカ人で楽譜読める人はほんの一握り。このバンドの彼らも楽譜は苦手のようだ。毎週2回集まって練習しているらしいが、どうやってメンバー間でコード進行やらアレンジを共有してるのか不思議に思う。ドミニカ人の特徴でもあるが、あんまり音楽理論だったり楽譜読んだりといったことは、コツコツ勉強したり訓練したりしなきゃならないことだから苦手らしく、それに代わってリズムを中心にもっと感覚的に音楽を捉えている印象。なので多少ベースとキーボードが違うコード弾いててもそんなのお構いなし。パワーでゴリ押しといった感じ。

正直に言うと、このバンドは選曲とかはジャズ風ではあるけど、ジャズバンドじゃない。ソロオーダーも適当過ぎで、一曲のうちにソロが数回まわってきたりするし、4バースや8バースとかもごちゃ混ぜ。互いに好き勝手に個性を主張しながら演奏していて、周りの音を良く聞いてないからジャズの醍醐味でもあるインタープレイなんてものは皆無。

そして何より辛いのがドミニカのバンド全般にいえることだが、いつ終わるか分からないエンドレスのように感じる曲の長さ。E7一発物みたいなジャムでも大したソロをまわす人数が居ないのに30分以上やってたりする。適当な気分で誰かがソロとって、あれ、さっきやったのにまた同じ人がソロとってみたいな感じで、聞いてる方もそうだろうが演奏しているこちらも疲れてきてしまう。

そしてさらに酷いのがエンディング。ソロオーダーが適当だから曲がいつ終わるのかも予測不能、その上、誰もエンディングをどうしようなんて考えてないから、どの曲やってもゴチャゴチャと終わる。何か疲れたんで終わり、みたいな。

たぶん大事な基本的な事を知らないのだろう。Youtubeとかで動画を見て、見よう見まねでこんな風だったかなみたいな感じでやってるように思う。
ちょっと学べば良いだけの事なのに、そして今やその情報を得る事は我々日本人より容易に出来るはずなのに、その辺を物臭がるドミニカ人の嫌な気質を久々にみてしまった。こんなもんだろみたいな。満足点が低いというか。

話は飛ぶが、ここドミニカは本当の意味でのプロフェッショナルが少ない。道路工事やっても、水道工事やっても、大工仕事やってもみんな中途半端。一見して素人仕事にしか思えないということが多々ある。こんな出来だったらわざわざ依頼するまでもなく自分でするのだけどな…という気にさせるられる。


もっとも嫌なことだけが見えたわけではない。逆にドミニカならではの凄いと思えることも多々あった。聴衆と奏者の垣根が低いこともその一つだろう。

小さな子供を抱えたおばちゃんが近づいてきたかと思うと誰かにその子を預け、いきなりマイクを取ってスキャットでアドリブをとりだしたり(それも見事なリズム感と声量で)、今風の格好をしたお兄ちゃんがラップとダンスを披露したり、帰宅途中と思える格好をしたお父さんがバンドをカラオケ代わりにしてレゲエソングを歌ったり。しかもみんなそこそこ様になっている。こうした好きな事、楽しい事に対する彼らの直感的な反応とそのセンスには目を見張るものがある。

嫌な面も良い面も、一言で言ってしまえばすべて直感的、感覚的。例えそれが将来の自分のためだと分かっていても、嫌いだからやらない。面倒だからやらない。逆に今こうしていることは、楽しいからやる。好きだからやる。ドミニカ人をよく知るためのキーワードでもありそうだ。

2012-10-06

JICA WORLD REPORTER #9

JICAワールドレポーター更新。
トレーニング&カンファレンス参加

現在、所属先ではWebアプリケーションフレームワークとしてSymfony2 というオープンソースのフレームワークを用いている。比較的最新のフレームワークであるため、情報が不足しており、とりわけ、ここドミニカでは書籍も全く手に入らなければ、周りに一人も詳しい人がいないような状況。そんななかフレームワークを提供するSensio社(フランス)がトレーニングとカンファレンスを開くということで参加してきた。

会場はサンフランシスコのダウンタウンにあるマイクロソフトのオフィス。Sensio社がフランス企業なこともあり、南北中米大陸では、例年ここサンフランシスコでしか行われていない。そのためカナダや南米からの参加者も多数見受けられた。カンファレンス初日の夜にはオフィシャル カクテルパーティーが開かれ、そこで世界中の技術者と情報交換や連絡先の交換ができたのは良かった。これも、こうしたイベントに参加するメリットの一つだと思う。

一つ驚いたのは、ここでのMacの比率の高さである。会場は見渡す限りMac。各自ラップトップを持参しているが、Windowsのラップトップを持ってきている人は一割以下という印象。日本でもこうしたイベントに参加した事はあるが、まだまだMacの方が少数派のイメージであったが、時代が変わってきているのか、場所柄なのか(町の喫茶店等でみかけるのもMac)、イベントの傾向なのかは分からないが、Macばかりだった。

これまた日本のそれとは違ってレジュメは全く配られず、当然ネイティブ対象なのでプレゼンテーションの進みも早く、自分の英語力では着いていくのがやっと、途中???な時が何度もあったが、それでも得られるものは大きかったし、これから自分自身で克服しなければならない課題も色々見つかった。本当に参加できて良かったと思う。




 念のため、ちょっと専門的だが下記がイベントの詳細。

26日(水) 8:30 - 18:30 トレーニングデイ
コンテキストサービスの作成
依存性の注入の管理
ファンクションテスト(PHPUnit)
HTTPキャッシュ セキュリティ設定

27日(木) カンファレンスデイ 1
8:00 - 9:15 Registration & Breakfast
9:15 - 9:30 Welcome Session
9:30 - 10:20 Keynote
10:40 - 11:30 Security: In Real Life
11:40 - 12:30 Symfony2 search engine propelled by Solr
14:00 - 14-50 Symfony2 meets Drupal 8
15:00 - 15:50 Leveraging the Serializer Component
16:20 - 17:10 Designing HTTP Interfaces and RESTful Web Services
17:20 - 18:20 JEOPARDY

28日(金) カンファレンスデイ 2
9:00 - 9:30 Registration & Breakfast
9:30 - 10:20 Silex, the other Symfony full-stack framework
10:40 - 11:30 In-Depth with Composer
11:40 - 12:30 Bundle Pro-tips
14:00 - 14:50 Symfony2 Form Tricks
15:00 - 15:50 The Wonderful World of the Symfony Components and Composer
17:20 - 18:20 LIGHTNING TALKS - Various Speakers

29日(土) フリー ハッキングデイ


それにしてもサンフランシスコは寒かった。南国ドミニカとの気温差はどの位あったのだろうか。もうかれこれ1年半に亘ってドミニカに住んでいるため暑さに対する耐性はついたが、寒さに対するそれは逆になくなってしまったようだ。スプリングコートも持っていったが、それだけでは足りず秋冬物のセーターを買ってしまった(ドミニカじゃ絶対使わない)。逆に、カナダから来た技術者は、サンフランシスコは暖かいといって半袖半ズボンにサンダルで過ごしていたのにはビックリ。

今回は業務出張なので、観光はほとんどできず。それでも最終日の飛行機に乗る前に少しだけ時間があったので、自転車を借りてゴールデンゲートブリッジを渡ってきた。さすがに20世紀中頃まで世界最大の吊り橋だっただけにやはり大きい。思っていたより遠くて、近くに見えているのになかなか橋までたどり着かない、加えて結構な登りが続き、ようやく橋の上と思ったら猛烈な逆風で自転車が思うように進まない。時間に余裕もないため焦って漕いだので、もう汗だく。でも、この時ばかりはサンフランシスコの冷たい風が心地よく感じた。

2012-09-01

JICA WORLD REPORTER #8

JICAワールドレポーター更新。
Waitukubuli National Trail



ワイツクブリ・ナショナル・トレイル(Waitukubuli National Trail、以下WNT)とは、ドミニカ中を右往左往しながら縦断するトレイルコースのことで、欧州連合(EU)、隣国フランス領マルティニークとドミニカ政府が共同で整備を行った。ちなみにWaitukubuliとは先住民カリブ族が呼んでいたこの島の名称である(前にも書いたがドミニカは先住民カリブ族を排斥せず共存している)。

この辺りのカリブ諸国の中で、国を縦断/横断するくらいにまでトレイルコースが整備されている国は珍しいらしい。トレイルコースは全部で14のセグメントに分割されていて、それぞれ独立している。パンフレット、案内版やWebサイト等で各セグメントの総距離、所要時間、難易度とハイクのタイプおよび見所が表記されている。参加者は事前にどんなハイクであるか想像することができるため、自分の体力や好みに合わせてコースを選択することができる。

各セグメント毎にそれぞれ見所はあるが、全体として、公式サイトの言葉を借りれば、「文化、歴史的遺産、地元民の生活、ドミニカ島の地形、および川、滝、山、エキゾチックな小渓谷や熱帯雨林といった大自然のある最高のドミニカ」を概観することができる。そんな理由もあり、自分はこのトレイルが大好きである。

公式サイト: Waitukubuli National Trail


とはいえ、トレイルコースが整備されていても、多くのセグメントでその入口、出口に行くまでの交通網が整備されていない。そんなところがいかにもドミニカらしい。普通にバスで行ったら、バス降りてからトレイルコースの入口にたどり着くまでに1,2時間以上かかるようなセグメントも多い。そのため、自分はローカルのハイク・グループに入れてもらっている。聞くところによると、ドミニカには大きなハイキンググループが3つあるらしいが、自分が入れてもらっているグループもその中の一つである。

このグループの活動は月に最低1回、多い月は2回、どこかにハイクに行くわけなのだが、普通のハイク グループなのでWNTばかりに行っているわけではないが、それでも結構な頻度でWNTに行く。また、グループのメンバーの中では連続して何日間で14セグメントを制覇するか競っている人達もいて(特に女性数名が)、今のところの記録は連続3日間らしい。初めてこの話を聞いたときには耳を疑った。自分にはとてもじゃないが無理だ。1日1セグメントで良いから14日間で全て制覇しろといわれても疲労等考えると正直厳しいと思う。最近はその往復に挑戦しようと思うと言っていた。全く恐れ入る。

実は、自分は根っからのハイク好きとかではない。ここドミニカに派遣されるまで、日本ではほとんどハイクや山登りをしたことがない。たまに年に1度くらいは高尾山に登っただけである。そんな自分がここまでハイクにほれ込むのも、「何もないが自然はある国ドミニカ」のせいなのか(笑) 帰国(半年後)までに、WNTの全14セグメントを制覇しようと思っている。

自分の備忘も兼ね、各セグメントの特徴(距離、所要時間とタイプ)と自分の達成状況。

  • #1 Scotts Head to Soufriere Estate
    7km, 5.5時間, Easy hike, family hike
    2011年10月8日
  • #2 Soufriere Estate to Bellevue Chopin
    10.8km, 6.5時間, Moderate hike
    2011年6月5日(Walk and Smileイベント)
    2012年6月16日(PUBLIC SERVICE DAY ACTIVITY)
  • #3 Bellevue Chopin to Wotten Waven
    14.9km, 7時間, Moderate hike
    2012年2月4日(ローカルハイクグループDwivayez)
  • #4 Wotten Waven to Pond Casse
    11.7km, 6時間, moderate hike /nature lovers
  • #5 Pont Casse to Castle Bruce
    12.8km, 6時間, Easy hike, family hike
    2012年6月19日
  • #6 Castle Bruce to Hatten Garden
    15km, 7時間, moderate hike
    2013年1月5日
  • #7 Hatten Garden to First Camp
    12.6 km, 6時間, Moderate hike/nature lovers
  • #8 First Camp to Petite Macoucherie
    10km, 6時間, Difficult (strong hikers who are well trained)
  • #9 Petite Macoucherie to Colihaut Heights
    9.8km, 7時間, hard hike/nature lovers
    2012年6月2日(ローカルハイクグループDwivayez)
  • #10 Colihaut Heights to Syndicate
    6.4km, 4時間, Easy hike, family hike
    2012年5月19日
  • #11 Syndicate to Borne
    10km, 7時間, Hard hike/long hike suited to nature lovers
    2012年4月6日(別のローカルハイクグループ)
  • #12 Borne to Penville
    9.5km, 7時間, difficult & long hike
    2013年7月6日(ローカルハイクグループDwivayez)
  • #13 Penville to Capuchin
    8km, 3.5時間, moderate hike
    2012年12月30日
  • #14 Capuchin to Cabrits
    10.8km, 5時間, moderate hike
    2012年12月30日
達成: 11セグメント
残り: 3セグメント(#4, #7, #8
(更新日: 2013年7月7日)

少なくとも一月に1回行ければ何とかなる。
ただ、特に交通不便な#7,#8を残してしまっているのがちょっと気がかり...

2012-07-31

JICA WORLD REPORTER #7

JICAワールドレポーター更新。
多事多端


最近、ホントに活動(仕事?)が忙しい...そんなでこのブログも投稿が滞りがち。週末の予定は全てキャンセル、平日も毎晩2時くらいまで家で仕事をしてる。ここ2ヶ月間で出かけたのは平日の夜に外食に3回行っただけという引きこもり具合。万国共通でこの業界(IT系)は納期前になるとどうしてもこうなってしまうのか、自分のやり方が悪いのか、何だか日本で仕事をしていたときのようになってきた。

とはいえ配属先から納期や残業をとやかく言われているわけではなく、今まで自分で決めた納期を守れずズルズルと延長してきた自分に嫌気がさし、覚悟を決めてやってるわけなのだが...それにしてもやらなきゃならないことが多過ぎる。こんなに働いてるJICAボランティアは世界中探しても他に居ないんじゃないかなと思う。

こんな状況が9月末までは続きそう(というか、その頃までには終わらせたい...)。

開発環境のご紹介

朝9時に出社して昼休みに家に戻って1時間弱仮眠して、また職場に戻って6時頃に帰宅。その後は夕飯を食べてから2時くらいまで仕事をしてシャワー浴びて寝る。仕事中は独り黙々とコーディングしているだけ。そんな毎日の繰り返しなのでブログネタがないというのが正直なところ。というわけで、今回は同職種(同業者)向けに開発環境のご紹介。何という内輪ネタ(苦笑)。

開発概要:
ドミニカ国の保健情報を統合管理するWebサイトの構築

  • サーバー: Ubuntu 12.0.4 LTS
  • Webサーバー: Apache 2.2
  • DB: MySQL 5.5
  • 言語: PHP 5.3, Twig, Ajax(jQuery)
  • フレームワーク: Symfony2
  • 主要追加バンドル: StofDoctrineExtensionsBundle, DoctrineFixturesBundle, JMSSecurityBundle, KnpPaginatorBundle
  • ツール, モジュール: Google Maps API, FPDF, Spreadsheet_Excel_Writer
  • テストフレームワーク: PHP Unit, Stagehand_TestRunner
  • ソース管理: Git, git-flow, GitHub

こうして見るだけでも色んな知識が必要なのが分かる。しかも日本で仕事してた時よりはるかに最新の開発環境。ちなみに要求定義~設計~コーディング~テストまで全て独りです。根っからのソフト開発屋なのでWebの画面デザインとかあまり得意じゃないんだけどな...

2012-07-02

NetBeans で PHPUnit を使う際の注意

NetBeans 上で PHPUnit が使えるのは非常に便利だが、その際にNamespace を用いているクラスの場合、名前解決に結構クセがありハマったのでメモ。
以下いくつか注意点を列挙。

PHPUnitフレームワーククラス自体の名前解決

当然ながらテストクラスはnamespace宣言により、テスト対象クラスの名前空間になっているので、継承時にPHPUnit_Framework_TestCaseだけではダメで最初に"\" が必要。サイトや書籍のサンプルを試すときは要注意(テストクラス自動生成時は既に追加されている)。
namespace Hoge\Moge;
class SomeClassTest extends \PHPUnit_Framework_TestCase 
{
}

クラス読み込み(require_once)

テストで使用するクラスはモックを使用する場合でも全て読み込みをする必要がある。 通常テスト対象クラスとテストクラスはディレクトリが異なるので(例えばsrcとtestsのように)、そこまでのパスを相対指定する。
namespace Hoge\Moge;
require_once __DIR__ . '/../../../src/Hoge/Fuga/AnotherClass.php';

ただし、この方法だと階層が深いと読みづらい上に、使用クラスが多くなると大変。bootstrap.phpを用意してauto_loadを実装したクラスローダークラス等を先に読み込ませた方がスマート。
その場合は、プロジェクトのプロパティ>PHPUnitカテゴリーのUse Bootstrapにチェックしてファイルを指定するか、require_onceで読み込ませる。
namespace Hoge\Moge;
require_once __DIR__ . '/../../bootstrap.php';

この方法だと使用クラスが増えた際も、その都度個別のファイルを指定する必要がなく便利。

クラスインスタンス生成

通常のクラスインスタンス生成はuseキーワードを追加することで、ショート名を用いることができる。
namespace Hoge\Moge;
require_once __DIR__ . '/../../bootstrap.php';

use Hoge\Fuga\AnotherClass;

class SomeClassTest extends \PHPUnit_Framework_TestCase
{
    public function testMethod() {
        $class = new AnotherClass();
    }
}

モック生成時のクラス名指定

問題はモックを使用する場合で、requireで個別にファイルを読み込ませたか、クラスローダーに読み込ませたかに関わらず完全修飾名で指定する必要がある。
namespace Hoge\Moge;
require_once __DIR__ . '/../../bootstrap.php';

use Hoge\Fuga\AnotherClass;

class SomeClassTest extends \PHPUnit_Framework_TestCase
{
    public function testMethodNotUseMock() {
        $class = new AnotherClass();
        $this->assertEquals('foo', $class->doSomething());
    } 

    public function testMethodUseMock() {
        $stub = $this->getMock('Hoge\Fuga\AnotherClass');

        $stub->expects($this->any())
               ->method('doSomething')
               ->will($this->returnValue('foo');

        $this->assertEquals('foo', $stub->doSomething());
    }
}

なぜか、PHPUnitに渡すクラス名の場合、名前解決は完全修飾名ではないとダメな模様。自分は、これに引っ掛かって相当時間を費やした。もしかしたら設定で指定できるのかもしれないが、とりあえずこれでも解決。

Abstract クラス
抽象クラスのモックインスタンス生成はgetMockForAbstractClassを使う(抽象クラスはそもそもgetMockではインスタンス生成できない)。その際、具象メソッドはメソッド上書きの対象にならないので注意。抽象クラス上の具象メソッドを偽装させたい時は一度その抽象クラスを継承したクラスを宣言した上で、そのクラスをgetMockで上書きする必要がある。
// AbstractClass.php
abstract class AbstractClass
{
    public function notOverridable() {
        return 'hoge';
    }

    public function concrete() {
        $this->overridable();
    }
     public abstract function overridable();
}

-------------------------
// AbstractClassTest.php
class ConcreteClass extends Abstracrt
{
    public function overridable() {
        return 'fuga';
    }
}

class AbstractedClassTest
{
    public function testAbstractMethod() {
        $stub = $this->getMockForAbstractClass('AbstractClass');
        $stub->expects($this->array())
             ->method('overridable')
             ->will($this->returnValue('moge');

        // abstractメソッド(overridable()) は上書き(実装)される
        $this->assertEquals('moge', $stub->concrete());
    }

    public function testConcreteMethod() {
        $stub = $this->getMockForAbstractClass('AbstractClass');
        $stub->expects($this->array())
             ->method('notOverridable')
             ->will($this->returnValue('moge');

        // 具象関数 notOverridable は上書きされず 'hoge'が返される(アサート発生)
        $this->assertEquals('moge', $stub->notOverridable());
    }

    public function testOverridedConcreteMethod() {
        $stub = $this->getMock('ConcreteClass');
        $stub->expects($this->array())
             ->method('notOverridable')
             ->will($this->returnValue('moge');

         // ようやく overridable()  は上書き(実装)される
         $this->assertEquals('moge', $stub->notOverridable());
     }
}

もっともこのように抽象クラスの具象メソッドを偽装させたい時に、テストクラス側に抽象クラスのサブクラスを記述しなければならないのであれば、あまりgetMock系メソッドの恩恵は少ないように感じなくもないが、それでもなお各テストメソッドにおいて動的に返り値を指定できるというメリットは大きい。

2012-06-19

Waitukubuli National Trail Seg. 2 - PUBLIC SERVICE DAY ACTIVITY

I have uploaded a short movie 'Waitukubuli National Trail Seg. 2 - PUBLIC SERVICE DAY ACTIVITY' I made to my Photo Blog 'photoconuts' and Vimeo.  enjoy!
 
WNT Seg. 2 - PUBLIC SERVICE DAY ACTIVITY from toconuts on Vimeo.

2012-06-16

github 導入2 - リポジトリ作成編

github にリポジトリ作成

github のサイト右上の Create a New Repo をクリック
プロジェクト名を入力して作成。

※ Initialize this repository with a README のチェックは外しておく。
チェックしたまま作成すると、下記の手順ではpush時にreject される。
その場合は git fetch 後 git merge origin/master を実行すればOK。

ローカルにリポジトリ作成

$ mkdir test
$ cd test
$ git init
$ touch README
$ git add README
$ git commit -m 'first commit'
$ git remote add origin https://github.com/username/test.git
$ git push -u origin master

push時にgithubに登録したユーザー名とパスワードを入力
以降は既存のファイルを編集したり、新たにファイルを追加したり際には、 add > commit > push  を繰り返す
既存ファイルの編集だけで、新たに追加したファイルがない場合は"-a"オプションをつけてcommitを実行すればaddを省略することができる。
$ git commit -a -m 'modified'

SSHで接続するにはリモート追加時に下記のように記載する
$ git remote add origin git@github.com:username/test.git

README.md の編集

Markdown 文法については下記サイトを参照

リポジトリ内のファイル操作

ファイル名変更 (README からREADME.md に変更)
$ git mv README README.md

ファイル削除(README.mdを削除)
$ git rm README.md

コミット前に削除を取り消し
$ git reset HEAD -- README.md
$ git checkout -- README.md

ファイル名変更、ファイル削除のいずれの場合も commit でリポジトリに反映
$ git commit -m 'comment'

コミット前にステータスを確認するには
$ git status

2012-06-15

github 導入1 - 設定編

gitのダウンロードとインストール

Ubuntuの場合
$ sudo apt-get install git-core
他の環境はこちらを参照
git - downloads

gitの設定

デフォルトユーザー名とEメールアドレス
$ git config --global user.name "Your Name Here"
$ git config --global user.email "your_email@youremail.com"

これらは個別のリポの設定で上書きすることもできる
$ cd my_other_repo
$ git config user.name "Different Name"
$ git config user.email "differentmail@email.com"

HTTPSでのPassword caching の使用とタイムアウトの指定(秒: デフォルト15分)
$ git config --global credential.helper chache
$ git config --gllbal credential.helper 'cache --timeout=3600'

設定の確認
$ cat ~/.gitconfig


※以下はgithubとの接続にSSHを用いる場合のみ設定が必要。Httpsで接続するのであれば上の設定だけで良い(こちらがgithub推奨)

SSH鍵の作成と登録

既存の鍵の確認
$ cd ~/.ssh
$ ls

.ssh ディレクトリが既に作成されていて、そこにid_rsa と id_rsa.pubがあればそれを使うこともできる。その場合は「公開鍵のコピー」までスキップ

既存の鍵のバックアップ
$ mkdir key_backup
$ cp id_rsa* key_backup
$ rm id_rsa*

鍵の生成
$ ssh-keygen -t rsa -C "your_email@youremail.com"
Generating public/private rsa key pair.
Enter file in which to save the key (home/user/.ssh/id_rsa): [just press enter]
Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type a passphrase]

公開鍵のコピー
$ xclip -sel clip < ~/.ssh/id_rsa.pub

xclipがインストールされていない場合は先にインストール
$ sudo apt-get install xclip

公開鍵の登録

githubのサイト右上のAccount Settingsをクリック
左のサイドバーのSSH Keysをクリック
Add SSH keyをクリック
Keyフィールドにペースト

2012-06-14

Flower - movie version

Uploaded a short film I edited about Dominican style of flower arrangement.
enjoy!!!

Flower from toconuts on Vimeo.

2012-06-11

JICA WORLD REPORTER #6

JICAワールドレポーター更新。
訪問者


 我々ボランティアが持てるパスポートは普通のパスポートとは違いオフィシャルパスポートと呼ばれている。国交がある国であればどこにでも行ける通常のパスポートとは異なり、青年海外協力隊員に限っていえば、渡航できる国はかなり制限されている。

加えてJICAでも独自に任国以外に旅行できる先を制限している。そのためドミニカを訪問できる国はかなり限られている。

2つ下(南)の島St. Luciaもそんな数少ないドミニカに渡航できる国の一つである。そのSt. Luciaの隊員から、あちらに住む台湾ボランティアがドミニカを訪問するのでその際のアテンドをして欲しいと頼まれ、先日、Whit Mondayのホリデーを含めた4日間の日程で来ドミした。


ドミニカを満喫してもらうべく連日朝から晩まで色々なところに案内した。
参考までに今回の日程は下記の通り。
  • Day1 - 首都ロゾー市内観光 - Scotts Head - ドミニカ最南端の陸続きの島 - Champagne Beach - 海中からシャンペンの泡のように吹き出ているビーチ - Fort Young ホテル(ハッピーアワー) - Jazz 'n Creolイベント 
  • Day2 (一日バス貸切り) - Middleham Falls - 壮大な滝壺のある滝 - Titou Gorge Falls - パイレーツカリビアンでも使われた洞窟内の滝 - Trafalgar Falls - ファザー、マザーと呼ばれる二つの滝と天然温泉 - Screw's Spa - 個人的にドミニカ一と思う温泉
  • Day3 (一日バス貸切り) - Chaudiere Pool (Bense) - 高さ5m位の崖の上から滝壺にダイブできる川 - バーベキュー No.1 Beach (Calibishie) - Cabrits National Park - Jazz 'N Creole メインイベント
  • Day4 (一日バス貸切り) - Glasse - 岩場に穴が空いていてそこがプールになっている海岸 - Melville Hall Airport(見送り)

こうやって予定を見直すだけでもかなりハードな4日間だったと今更ながら思う。正直なところ自分もかなり疲れた。


ゲストの台湾ボランティアに加え、米国Peace Corps、フランス、オーストラリアのボランティア、ロスユニ(米大学ドミニカキャンパス)の学生、もちろん地元ドミニカ人などに声をかけ、結果かなりの人数に集まってもらえ、どれも多国籍なイベントとなった。果たしてドミニカを楽しんでもらえただろうか...

ドミニカ在住のJICAボランティアが少なくなったせいか、最近こういうことでもないとタクシーをチャーターしてどこかに出かけることはめっきり減った。その意味でも我々ドミニカ ボランティアにとっても良い機会だったと思う。

余談だが、聞くところによると、ここドミニカにもかつては台湾ボランティアが農村部を中心に入っていたが、現政権になり中国中心の政策への転換がなされた結果、台湾ボランティアは全て追い出されてしまったらしい。中国の支援は多額の資金を投入し、人員も本国から連れてきて、いわゆる箱物や道路などの建設を行っている。そのため、ドミニカを大規模に開発することを嫌う人々からは批判的な意見を聞くことも多い。一方、農家に対する人的貢献等を行っていた台湾ボランティアに対しては、「あの頃は良かった」のような昔を懐かしむ声を聞くこともある。ここ遠く離れたドミニカでこうした中国-台湾の問題を垣間見るとは思いもしなかった。

2012-06-07

【備忘】 Utuntu11.04にXdebugをインストール


eclipse PDTやNetbeansでデバッグ実行するためのXdebugの導入手順。

1 Xdebug
$ sudo apt-get install php5-xdebug

2 設定ファイルに追記
$sudo gedit /etc/php5/apache2/conf.d/xdebug.ini

zend_extension=/usr/lib/php5/20090626/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

3 Apatche 再起動
$ sudo /etc/init.d/apache2 restart


2012-05-09

JICA WORLD REPORTER #5

JICAワールドレポーター更新。
活動報告会



先日、JICAドミニカ共和国事務所長がここドミニカ国(紛らわしい...)を訪問された際に活動報告会が開かれた。

ドミニカ共和国事務所は、この辺りのカリブ地域を統括しており、ドミニカ国にはない機関、例えば健康管理員の方等は、ドミニカ共和国の健康管理員の方が兼務していたりするため、隊員も何かと相談したりで利用したりする機会が多い事務所である。


今回の報告会では、一人10~15分程度で、活動計画書に沿った形で、現在の進捗状況や今後の課題等を報告するという形で行われた。当初この話が持ち出された時には、隊員の多くは「え~、そんなに話すことはない」なんて言っていたが、いざ本番となれば全員が持ち時間オーバーで、しかもまだまだ話し足りないという感じだった。やはり各自それなりに思うことが溜まっていたのだろう。ドミニカの現在の隊員は最低でも一年以上はここで活動を続けている人たちなので、活動において悩んだり、自分なりに工夫したり努力したりすることも少なくはなかったはず。


今思えば、隊員全員が発表するという場はある意味新鮮だった。もちろん各自の中間報告会(着任後1年経過時)であったり、最終報告会(帰国直前)であったりで話を聞くことはあったが、こうして全員が発表するという機会は、自分が着任後一度もなかったのではないかと思う。

ここドミニカの隊員は首都ロゾーに集中しており、いずれも徒歩圏なので会おうと思えばいつでも会える。そのため、今現在どんな活動をしているのかについては何かと話したり聞いたりする機会も多い。そんな感じだから、他の隊員のひとつひとつの活動内容については何となく知っている気がするのだが、逆に、その隊員の活動の全体像やその活動を行う意義については、実はこれまであまり知らなかったんだな、ということを痛感した。

2012-04-19

JICA WORLD REPORTER #4

JICAワールドレポーター更新。
中間報告会


ドミニカに来て早一年、先日、JICA、配属先、そして隊員(自分)の三者による中間報告会が行われた。前回までの中間報告会はホテルで大勢を呼んで発表の場としての意味合いが強かったが、今回からはもう少し忌憚のない協議の場としたいとの意図からJICA事務所にて関係者だけで設けられた。そのせいもあってか、終始リラックスしたムードで深い議論がなされたように思う。

前にも書いたが自分の活動内容は大きく分けると3つある。
  1. 現在あるスタンドアロンの保健関連の情報システムを、国内の病院・診療所からアクセス可能なWebシステムとして再構築する
  2. 先代JICAボランティア(自分で4代目)がこれまで構築してきたシステムのメンテナンス
  3. 3. その他、職業柄依頼されること(例えば、ウィルス駆除、PC修理やデータ入力支援ツールの作成等)
このうちの2,3は特に問題ないが、主たる活動である1の作業の進捗が、自分で立てた計画に対し大幅に遅れをとってしまっている。その原因はいくつかあるが、一番は自分が立てた計画上の工数見積もりにだいぶ考慮漏れがあったことであろう。
ユーザー管理、メンテナンス、ログ出力、バックアップ、セキュリティといった現行システムに備わっていない機能の追加や、サーバー環境の設計(使用言語、アプリケーションサーバーやサードパーティーのモジュールの選定)及びその構築など、当然といえば当然だが、1人だけが使う事を想定して作られている現在のスタンドアロンのアプリケーションから単なる環境移行というわけにはいかない。今有る機能、無い機能にかかわらず全て一から作る必要がある。正直、一人で全部を行うには作業が多すぎる。また、自分自身の生産性の低下、すなわち、勤務時間が日本に比べて短く、加えて調べものをするにも、ドキュメント読むにも、メール等で報告書を書くにも、英語のため何かと時間がかかるということも考慮に入れる必要があった。

もっとも、この点については、この中間報告会に先立って配属先と事前会議をして、現状の進捗状況、問題点及びその解決策について議論し、リスケジュールも決定してあったので本報告会では、その内容の確認程度に留まった。

それより中間報告会での一番の収穫は、自分の活動の意義をもっと大きな視野で俯瞰できたことであろう。「貧困対策」、これはJICAおよび我々ボランティアの一番の柱であるはずなのに、とかく今の配属先でこうした活動を行っている限り、そのようなものを感じさせる場に出会わすことは皆無に等しく、その言葉を忘れかけていた。

確かにドミニカにもカリブ地域(先住民族であるカリブ族が住む独立自治のテリトリー)など、経済的弱者が多く住む地域が存在する。首都の病院にはバス代がなくて行けないなんて話も聞く(片道300円前後)。配属先が目指す全国どこからでもアクセス可能な医療関連情報システムが構築されることにより、今まで中央にしか集まらなかった各種有益な情報に地方の小さな診療所からでもアクセスし閲覧することが可能となる。それにより、疫病流行時の早期対策や医療水準の全体的な向上などが期待できる。

得てして、経済的弱者は持てる情報も少ないことが多い。また情報の質といった面でも正確さを欠く間違った情報を与えられていたりすることも多い。全国どこからでもアクセス可能な医療関連情報システムの構築は、こうした情報格差をなくすことに寄与する。そのシステムの一部を自分が築くと思うと俄然ヤル気が湧いてくる。

2012-03-31

JICA WORLD REPORTER #3

JICAワールドレポーター更新。
ドミニカ国って? (2)



前回に続き、もう少しドミニカ国について紹介。

■日本からのアクセス
次の2通りが一般的。いずれにしてもどこかで一泊必要。
  • 成田→シカゴ→マイアミ→サン・ファン(プエルト・リコ)→ドミニカ
  • 成田→ニューヨーク→サン・ファン(プエルト・リコ)→ドミニカ
自分の時はニューヨーク経由でニューヨークで一泊。そういえばちょうど1年前、まだ3月下旬のニューヨークの寒さから、いきなりここの灼熱にさらされたのを思い出す。

■通貨
東カリブドル(EC、通貨コード:XCD)が使われている(観光地はUS$も可)。 レートは固定で、1USD = 2.7XCD

■時差
大西洋時間でUTC -4。日本との時差は日本の方が13時間進んでいる。

■交通
ドミニカ国内は、鉄道も空海の国内線もないため車での移動となる。バスは普通のワンボックスカーでいわゆる乗り合いバスである。ある程度の路線が決まっているものの運転手と交渉次第で寄り道もしてもらえる。タクシーはバスと同じワンボックスの場合もあればSUVの場合もある。バスは月-金の7:00-18:00間であれば、わりと待たずに見つかるが、それ以外の時間や土曜は中々見つからず、日曜に関してはまず走ってないと思ったほうが良い。当然ながら時刻表などない。週末は、バスの運転手と交渉してバス一台をタクシーとして利用することも多い。どこに行くにも車がないと始まらないこの国では、欧米の長期旅行者などはレンタカーを借りて移動しているようだ。



■首都
ロゾー ドミニカ島南西のカリブ海に面しロゾー・リバーとモーン・ブルース(小さな丘)に囲まれた地帯でドミニカ最大の都市。といっても人口1万7千人ほどで、南北に縦断するだけなら、ものの10分もかからない。一番上の写真がモーン・ブルースからの眺めで、これで首都がほぼ全て見渡せている。

イギリス領になる前はフランス領であったため、フレンチ・コロニアル様式の建築が並ぶが、道路(特に歩道)がきちんと整備されておらず、決して綺麗な町並みではなく雑然とした感じなのが少し残念なところである。

観光シーズンになると大型のクルーズシップがやってくるが、ドミニカにあるどの建物よりも大きいその船が停泊している姿は異様で、船の全長はロゾー中心地の南北の全長に匹敵する。


JICAのドミニカ・フィールド・オフィスもこの首都の北端、ロゾー・リバーの脇にあり、目の前は、メイン通りが走っている。ちなみにロゾー中心地の道路は全て一方通行。

首都といっても、映画館もなければデパートやショッピングモールもない。大きなスーパーは3件、本屋も1件、観光客向けのレストランやお土産屋が数件、それ以外は小さなバーや中国製雑貨を売る店などが占めている。

なお現在、在ドミニカ・ボランティアは全員ロゾー周辺に住んでいて、各自の家、フィールド・オフィスや調整員宅などは全て徒歩圏である。

前回ドミニカ共和国との違いに少しふれたが、ちょうど先日、ドミニカ共和国の首都サント・ドミンゴに行ってきた。ここドミニカ国の首都ロゾーとは比べものにならないほど大都会だった。大型のショッピングモールもあれば寿司やラーメンが食べられるレストランがある。スーパーでも日本食が手に入る。各国の料理が食べられるおしゃれなレストランなどもたくさんある。何だか少し羨ましくなって帰国したのだが...

とはいえ、ここドミニカ国だって見所はたくさんありますよ...たぶん。次回はそのあたりを。

2012-03-13

JICA WORLD REPORTER #2

JICAワールドレポーター更新。
ドミニカ国って ?



ドミニカ国って?
「今度ドミニカに行くことになったよ。」
「あっドミニカ、知ってるよ。野球が強いとこでしょ!」
「それは、ドミニカ共和国なんだけど・・・」
こんな風に日本では全くといって良いほど知られていないドミニカ(国)。


正式名称はドミニカ国(Commonwealth of Dominica)といい、1978年にイギリスから独立した。ドミニカの名称の由来はコロンブスが来島した日が日曜日(ドミンゴ)だったからという。先住民のカリブ族はこの島をWaitukubuliと呼んでおり、この名称は島を縦断するトレイルコース(後日掲載予定)の名称だったりで今も目にすることが多い。

島の面積は754Km2で日本の奄美大島とほぼ同じくらいの大きさ。人口は6.7万人ほど(2010年)。横浜の日産スタジアムであれば全国民を一度に収容することができるといえばその規模が容易に想像できると思う。

カリブ海の西インド諸島のひとつであり、カリブ海の東に位置する。この辺りは西洋諸国の都合で小さな独立国家が数多く存在する。

良く間違えられるドミニカ共和国(Dominican Republic)は、ドミニカ国の北西にあり、人口1000万人以上、面積4.8万Km2と大国である。ドミニカ国が英語が公用語なのに対し、こちらはスペイン語が公用語となっている。


ドミニカ国は、先住民のカリブ族が今も住む数少ないカリブ諸国であり、島の北東に独自のテリトリーを持っている。彼らは、長年にわたる南国での生活のためか肌の色こそ褐色であるが、良く見れば我々と変わらないモンゴロイドである。カリブ族の前にはアラワク族が元々住んでいたらしいが、カリブ族に追いやられ、現在はドミニカだけではなく、西インド諸島全体で民族としての彼らを見ることはないらしい。ドミニカ国旗にある黄色のラインは、そんなドミニカの先祖アラワク族とカリブ族を表している(他に主要産物のバナナやオレンジの意も含んでいる)。


食文化は、クレオール料理と呼ばれるもので肉(鶏、豚、牛、七面鳥)か魚のメインディッシュと、米やプロビジョンと呼ばれる芋やバナナなどの主食、その他に豆煮などがワンプレートで提供される。比較的日本人でも美味しく感じられる味付けだが、毎日こればかりだと結構重い。大手ファーストフードチェーンは私の知る限りケンタッキーとサブウェイくらいだろうか。

ドミニカ国には、ピトン国立公園というユネスコ世界遺産(自然遺産)が1つある。比較的周辺諸国に比べて発展が遅れているドミニカは、こうした自然を除けば、正直なところみるものは何もない。それが一年あまりここに住んでみたドミニカ国の印象である。もっとも、そんな手つかずの自然だけというところが、逆に良かったりもする。彼らもそれを分かっているのか、地元観光業もネイチャーアイランドのイメージを全面的に押し出して広報を展開している。

2012-02-24

初回投稿 ワールドレポーター

このブログの更新もままならないのに、選ばれてしまったJICAワールドレポーター

急かされ急かされ、ようやく初回の記事を投稿してみた。

初回記事
http://worldreporter.jica.go.jp/j22-4hara/cat1/001479.php

今後は2週に一度のペースで更新していって下さいとの事。
ネタがもつか...

ネイチャーアイランドより


はじめまして、ドミニカ国でコンピュータ技術として活動する原です。 ここドミニカに来て、もうすぐ1年になります。 システムエンジニアとしてちょうど10年が経過した頃、もっと広い視野で自分の事、人生の事を見つめ直したいと思ってる矢先に、電車の吊革広告で見た「世界も、自分も、変えるシゴト。」というキャッチコピー。そのフレーズに惹かれ、浅はかにも自分にも簡単にできると思い込み応募したのが1年半前。幸い職場にも理解が得られ、現職のままでの参加となります。

正直なところ、自分の個人ブログでさえ更新が滞っているのに、ひょんなことから選ばれてしまったワールドレポーター役。ですが、やるからには、私のボランティア活動を通じて感じている、ここドミニカでの生活やドミニカという国について、皆さまに多少なりとも紹介できればと思ってます。


初回ですので自己紹介も兼ねて、まずは自分の要請概要から。
配属先: 保健省保健情報局 (HIU)
任地: 首都ロゾーにある国立病院
活動内容:
  1. 現在あるスタンドアロンの保健情報システムを、国内の病院・診療所からアクセス可能なWebシステムとして再構築する
  2. 先代JICAボランティア(自分で4代目)がこれまで構築してきたシステムのメンテナンス
  3. その他、職業柄依頼されること(例えば、ウィルス駆除、PC修理やデータ入力支援ツールの作成等)
当然主たる要請は1ですが、当部署の人員は限られているためほとんどの作業を一人で行うことになりそうです(というよりいつの間にかそうなってます)。


任地に行ってみたら事前に聞いていた要請内容と違っていたという話も良く聞きますが、自分の場合は事前の情報通り。もっとも、教育系の要請がほとんどであるコンピュータ技術という職種において、純粋に開発しか行わないこの案件は非常に稀な存在といえます。

第 一印象は、この職場に限って言えば、発展途上国という先入観が払拭されるくらい環境面は整備されています。オフィスには日本の職場と変わらない最新のマシン やPAHO/OECF諸国とすぐにやりとり可能な電話会議システムが備わっており、開発言語やサーバー環境(Ubuntu, Apatch, PHP, MySQL等)もできるだけ最新バージョンを用いてくれとリクエストされてます。

次回は、ドミニカってどこ?ドミニカ共和国と違うの?との誤解に応えるべく、ドミニカ国について少々書きたいと思います。
 
Copyright 2010 toconuts. Powered by Blogger Blogger Templates create by Deluxe Templates. WP by Masterplan