2013-04-26

JICA WORLD REPORTER #15

JICAワールドレポーター更新。
HIU EASTER FUN!!!



イースターの休暇を利用して所属する部局(Health Information Unit、通称HIU)でイベントが行われた。もうこちらに来て2年になるが、こうしたイベントが行われるのは初めて。イベントはシンジケートという地域にあるハイキング客用のウェルカムセンターをベースに、その施設の裏山にあるトレイルコースのハイクと施設周辺でバーベキューを行うというもの。

現地近くのガソリンスタンドに午後1時集合とのことだったが、結局全員揃って出発したのは3時。ドミニカンタイムである。

そういえば、こうした時間のいい加減さにこちらに来た当初はイライラしたものだった。日本の遅刻とは程度が違い過ぎるし、待たせられたあげくに来ないということも多々ある。しかしそんなことも2年も経てば慣れてくる。時間通りに揃うことなど全く期待していないからか精神的にも余裕があり、適当に近所を散策したりして時間を潰してる。


ハイクは全区間で整備されている。事前に楽なコースとは聞いていたが、普段行くハイクと比べると格段に短く緩い。ちょっと拍子抜け。むしろ熱帯雨林公園とか植物園を散歩しているような感じに近い。

この地域は、ドミニカ最高峰のディアブロティンという山がそびえ、ドミニカでもオウムがよく見れる地域と言われている。ドミニカには主にJacoと Sesserouという2種類のオウムがいる。Jacoは全体が緑色で首に赤いマフラーを付けている。そして、Sesserouは別名Imperialともいわれドミニカの国鳥であるとともに、国旗のデザインにも使われている胴体が紫色のオウムである。

幸いこの日にはJacoが数匹飛んでいるのを見ることができた。比較的、山には良く行くほうだが、残念ながらまだ一度もSesserouは見たことがない。


バーベキューのやり方は日本と若干違っている。日本の場合は焼きながら同時に食べたりするのが普通だが、こちらではとりあえず全部焼いてしまってトレーに盛り、その他沢山の持ち込みした食べ物も一緒に並べ、各自が皿を持って自分の好きな物を盛ってきて食べる、どちらかといえばビュッフェのようである。

なお、ドミニカのお店で食べるビュッフェは、ビュッフェとは名ばかりでお代わり自由じゃないので要注意。

2013-03-27

JICA WORLD REPORTER #14

JICAワールドレポーター更新。
任期延長と同期帰国




先月、任期延長の正式書類にサインした。当初、自分 <-> JICAドミニカ <-> JICA本部(日本) <-> 所属先 <->そしてまた自分と四者が関わっているせいか、情報が錯綜していて思いのほか手続きに時間を費やした。しかし、最終的には、無事に所属先の了解を得られ延長確定。延長期間は、9ヶ月間。帰国は本年12月中旬の予定。

そして先日、公式パスポートを更新するためにトリニダード・トバゴに行って来た。ドミニカには在外公館が置かれておらず在トリニダード・トバゴの大使館がドミニカ大使館を兼轄しているためである。といっても観光する時間などなく食事のみ。それでも韓国料理屋で二年以上ぶりにキムチとビビンバを食べれた(ドミニカには韓国料理屋もなければ日本料理屋もない)。


■延長理由
自分の仕事が遅いせいもあるかもしれないが、そもそも2年で終わる仕事量じゃない。ここ保健情報局(通称HIU)のIT担当者は3人しかおらず(うち自分も含めボランティア2人)、マンパワーに徹しているが完全に人手不足。その人数で今ある保健関連情報(パソコンで管理してるものだけに限らず、紙のカルテとかも)を全てWeb化して、ドミニカ中からアクセス出来るようにしようというのだから無理もない。ドミニカにおけるJICAの協力から「保健」分野が外れたことから、自分を最後に、後任は派遣されてこない現状、自分が残ってやるしかない。また、個人的にもこのまま中途半端な状況で作業を打ち切って帰国したらきっと後悔すると思った。目の前のできることをやるしかないか。

 
■同期帰国
そうこうしているうちに同期の帰国ラッシュが始まった。ちょうど今、世界中に散った同期が東京で再会しているようだ。そんな話を聞くたびに、あの時延長の決断をしていなかったら自分ももう今頃は日本に居るかと思うと、少し複雑な心境。まあ自分で決めた道だから...

何はともあれ同期のみなさま、2年間お疲れさまでした。

2013-02-20

JICA WORLD REPORTER #13

JICAワールドレポーター更新。
カーニバル



自分としては今年で2度目となるドミニカのカーニバル。前回は観客に徹したが、今年は他の隊員が所属するドミニカ障がい者協会(通称DAPD)がTシャツバンドで参加するというので混ぜてもらう。地元のドミニカ人や我々日本のボランティアの他に、アメリカ、カナダ、オーストラリアなどのボランティアも加わり、とてもインターナショナルなバンドとなった。


ちなみにカーニバル期間中の主なイベントと内容。
  • ナショナル クイーンショウ
    いわゆるミスコン。今年のミスドミニカが決定する。去年のインディペンデンス(11月)の頃までには既に候補者が10名程度にまで絞られている。その後、水着、衣装、スピーチや特技の披露などを半年近くに亘って繰り広げられる女性の美と才能の戦い。
  • カリプソ決勝
    数十名の中から今年のカリプソ(音楽のジャンル)のキングが選ばれる。カーニバルが近づくにつれ毎週のように予選やトーナメントが繰り広げられる。
  • ジュベ
    カーニバル ホリデー初日の早朝(4時くらい)から行われる。カーニバルの前夜祭的な意味を持つ仮装パーティー。首都(タウン)を人々は思い思いのコスプレをして練り歩く。近隣カリブ諸国と違ってペンキを掛け合ったりというのは、ここドミニカではほとんど行われてない模様。
  • Tシャツバンド
    基本的には参加登録をしている各バンド単位でパレードを行う。バンド毎に共通のTシャツを身につけているのが特徴。
  • コスチューム パレード
    最終日に行われるカーニバルのメインイベント。こちらも参加登録しているバンド単位でパレードを行う。いわゆるカーニバルの衣装であったり山車が登場するのもこのパレード。
  • ジャンプ アップ
    Tシャツバンドの後やコスチュームパレードの後の夜に行われる。音楽を演奏する山車にくっついて踊りながら市内を巡回する。参加登録とかはなく自由に参加できる。 ジャンプアップ自体はそう珍しいものではなく、カーニバルに限らず事あるごとに各地で頻繁に行われている。 

今回参加して思ったのは、見ているだけだった去年に比べて、参加することは思った以上に楽しかった。阿波踊りの言葉ではあるが、まさに「踊る阿呆に見る阿呆、同じ阿呆なら踊らな損々…」である。もっともいくら首都ロゾー市内が狭いとはいえ、あの炎天下の中、自分は1周するのが限界。コスチュームパレードでは2周、中には3周する強者も見かけたが、とても真似出来ない。

話が変わるが、ここのところジャンプアップでは喧嘩や事件が絶えず、毎回、予定終了時間よりだいぶ早くに終わってしまうことが続いていたが、今回はどうだろうか。疲れて先にあがってしまったので良くわからないが、そんなに騒いでいないところをみると、今回は何もなく無事に終了したのだろう。

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系メソッドの恩恵は少ないように感じなくもないが、それでもなお各テストメソッドにおいて動的に返り値を指定できるというメリットは大きい。
 
Copyright 2010 toconuts. Powered by Blogger Blogger Templates create by Deluxe Templates. WP by Masterplan