2019年1月29日火曜日

たるこふ日記#2

昨日はkeiくんと2人で。

keiくんのタスク(Prapor - Checking)のお手伝いでカスタムへ。タンクローリー運転席にある懐中時計を回収するタスクだが、タンクローリーの鍵は俺が持っていたのですんなりクリア。回収するとき見張り役を立てれたりするし、こうゆうタスクは協力してやるとめっちゃ楽。

その後はkeiくんのWoodsでScavを14killするタスク(Prapor - Shootout picnic)と俺のAK用60magを集めるタスク(Prapor - Ice cream cones)をやるためにWoodsへ。

何度かレイド入って無事keiくんの14killは終わったが、マガジンが1個も見つからなった。。バンカーの鍵をもってて、そこにスポーンしやすいはずなのだが、もう少し確率上げてくれてもええやろ。これはフリマで解決した方がいいかな。。

しかし途中Woodsの魔法陣みたいなレアアイテムがスポーンするところでなんとVSSが落ちてるのを発見。

VSSはPUBGとかだとゴミ扱いされがちだが、タルコフだとかなりのレアリティ。まあ結局弾は9mmだし、実際強いのかどうかはなんともいえないが。

拾ったVSSにちょっとアタッチメントを追加した。

サプとストックは標準装備 神棚へ
・Pliad 043-02 Mount
・Sig BRAVO4 4X30 Scope
・20-round 6L25 9x39 VSS magazine

タスクは全然進まなかったが今回は全部のレイドでサバイブしたので結構おいしかった。
サイト付きのSKSを3つ用意できた。SKSはかなり使い勝手がいい。やっぱり7mmは強い。

PUBGもちょいちょいやっているが、最近は昔と違って7mmが結構好きになってAKMとベリルをよく使うようにしてる。

2019年1月28日月曜日

たるこふ日記#1

最近keiくんと小原にオススメされた Escape from Tarkov というFPSにはまってます。



かなりリアル仕様でハードコアなFPSだけど、銃含む物資を持ち帰ってカスタムしたりする感じが収集好きにはたまらない。

しかし収集好きあるあるで、ロストが怖くて良い銃をレイドに持っていかないからちょっと本末転倒感はある。(保険システムもあるけど結局PMCにやられたら奪われる可能性が高いし)
PMCから強奪した60mag付M4A1 神棚へ
もっとトレーダーのレベル上げるのと資金を溜められれば気楽に持ち出せるのでそれまで頑張りたい。(トレーダーのレベル上げるために資金使いすぎて金がない)
ちなみに現在Mechanic以外のトレーダーはレベル2になった。

昨日はkeiくんと最近始めたばかりのkardさんと3人でやった。
ショアラインのリゾートで戦死した僕とkeiくん。残されたkardさんがPMCを倒して仇を打ち、血まみれになりながら見事生還。始めたばかりなのに凄い。
おいしい物資をもってギリギリ生還できて感動していたので、きっともうタルコフにはまったに違いない。

リゾートみたいな屋内戦は難しいけど、3人とかなら外だと敵を囲めるからだいぶ楽だなと思った。プレイヤーSCAVを3人でリンチするのはちょっと可哀そうだったがこれがタルコフの厳しい世界。

★次回のタスク★
Mechanicの収集タスク「Farming. Part 2」と「Signal. Part 2」 を進めたいのだけどやっぱりインターチェンジ周回が一番いいのかな。インターチェンジのマッチングまじで遅いから(過疎ではないらしい。バグ?)なんとかしてほしい。

2019年1月11日金曜日

【ネタバレ注意】狼と香辛料XXI Spring Log IV感想 + Spring Logについて

2019年1月10日に発売された狼と香辛料21巻の感想(まとめ)を書いていきます。
そもそも狼と香辛料の原作についてちゃんと記事を書くこと自体初めてなので、先にSpringLogとはどのような物語なのかというところから話していこうと思います。

以降ネタバレ注意です。

◆狼と香辛料 Spring Log
amazon
記念すべきSpringLog1巻

狼と香辛料SpringLogシリーズは、原作10周年を記念して連載が始まった狼と香辛料の正当な続編です。正当な続編なのでナンバリングは通しの18巻からスタート。SpringLogとしては現在4巻まで発売しています。

狼と香辛料は17巻で一旦の完結を迎えました。ロレンスとホロが結婚し、ロレンスの「自分のお店を構える」という夢をホロの故郷ヨイツにも近いニョッヒラで叶えます。お店の名前は、湯屋「狼と香辛料亭」。

SpringLogは、そこから10年ほど経った2人の物語が中心になっています。その間に大きく変わったことは、ホロとロレンスの娘であるミューリと湯屋の経営を一緒に支えてくれていたコルの2人がいなくなったこと。この2人については別シリーズ「狼と羊皮紙」で語られます。

amazon
ミューリとコルが主人公 3巻まで出てます

湯屋の経営も軌道に乗り、大部分はホロとロレンスの幸せな夫婦生活を描くものになります。 (台所番のハンナさんはずっといますし、SpringLogの途中から新たな従業員も増えますが)

本編のように長い旅をすることもなければ、破産しかけたり命が脅かされるような事件も起きません。勿論ちょっとした事件はあったりしますが、昔を思えば平和なものです。
「幸せであり続ける物語」がSpringLogのキャッチコピーなのですが、本当にその通りの物語です。

平凡だけど幸せな毎日。しかし、それこそが本編から続く逃れられない問題と結びつきます。

それは、「ホロの寿命」です。

この先何百年生きるか分からないホロは、どうしたって未亡人になります。ロレンスはただの人間です。
ですが、その事実については2人ともこれまでの旅で覚悟を決めています。覚悟の上で、一緒にいれる時間を大切にしようとしています。

ホロにとって1番の問題は、ロレンスの死後長い年月を経て「記憶が風化してしまう」ことでした。

幸せな毎日だけど、平凡な毎日。あっという間に過ぎ去ってしまい、あのとき何をやっていたのか、どんな気持ちだったのか、きっといつか忘れてしまう。そんなことを思い、ホロは憂鬱になっていました。

これは、読者である私にとっても同じでした。ホロの気持ちを思うと、儚さや焦燥感が心の隅にありました。

私は「人ならざる者」が好きなのですが、人間と人外がつがいになる話はあってもここまでリアルな夫婦(日々の生活、湯屋としての二人三脚での経営)の話は中々ないのではないかと思います。(知識不足なだけなので、もしこのような物語があれば教えて欲しいです)
1人になる寂しさより、記憶が風化する焦り。人ならざる者にとっての価値観、わかるわけもないのですが、ホロをみていると「そうだよなあ、つらいよなあ。。」と共感できてしまいます。

そんな焦燥感を拭い去ってくれる出来事が、SpringLog2巻で語られました。章名は「狼と香辛料の記憶」。
ホロの1人称(!?)で語られるこの話は、狼と香辛料の全てといってもいいと私は思います。ずっとホロとロレンスを見てきた読者にとって、きっと納得できる話だと思います。

ロレンスが一生懸命ホロのために用意した羊皮紙とペンとインク。これでホロに「毎日の出来事を書き溜める本」を書いていくことを勧めます。本のタイトルは「狼と香辛料」。

私たちは、ホロが書き留めた本を読んでいます。


◆狼と香辛料 Spring Log 4巻
amazon
表紙エモすぎワロタ

というわけでここからは新刊の感想です。

ホロとロレンスが旅に出ます。
これまでの流れからすると、え?ってなりそうですが、これは3巻の最後に2人で決めたことです。ロレンスは湯屋を出たミューリとコルがとにかく心配なのですが、湯屋を空けることとホロに心配をかけたくないため我慢していました。
そこでなんとホロが旅に出ようと提案してくれます。「半年程度の旅なら大丈夫じゃろ」
詳しくは3巻参照です。


【狼と湯煙の向こう】
1章はセリムが語り部となっていて新鮮です。セリムは狼と香辛料亭で働いている狼の女の子です。なぜ働くことになったのかは1、2巻で語られます。
旅支度をするホロとロレンス、そして2人がいない間の切り盛りを任されたセリムがあまりの重圧に落ち込んでいるという場面。
セリムは2人に大恩があり断るわけもないが、真面目で気弱な性格のため自分に務まるか不安でなりません。旅支度をする2人をみてほっこりしつつも、早く帰ってきてほしいと言えずにやきもきしています。セリム視点でホロとロレンスを見ると本当に間近でいちゃいちゃしているのが伝わってきます。多分セリムも今風に言うと「は~~~~なにその絡み、てぇてぇ~~~すこ」って感じになっているのですが、真面目なのでそんなことは言いません。

ホロもロレンスも旅にそれぞれの目的(ホロは仲間の手がかり探し、ロレンスは湯屋仲間からの依頼消化)があるのですが、それは言ってしまえばダミーで自分のためではなく相手のためだった。というお話。
ロレンス「ホロが本当は仲間を探したいのに俺を思ってやめようとするだろうから、依頼をこなすという口実があれば気兼ねなく行動できる」
ホロ「あやつ村の頼みをこなしたいのに、わっちのためにやめようとするじゃろうから、わっちが仲間を探したいといえば旅を続ける気になるじゃろ」
全く同じこと考えててわろたオチ。てぇてぇ~

そんな2人を見てセリムは笑ってしまい、今までずっと言えなかった「早く帰ってきてくださいね」がすっと出ました。セリム、ポジティブになれた!


【狼と秋色の笑顔】
続いて旅に出たばかりの道中のお話。
支倉先生、本当に読者が求めていたものを書くのが上手いと思いました。
初っ端からこれからの旅についてやんややんや言う合う2人。それは昔私たちがずっと見てきた2人の旅の道中のシーンそのものでした。あまりの懐かしさに涙が。。

腕が訛って火を熾すのにも苦労したり、道に迷ってしまうロレンスを尻目に物語は進みます。

ここで驚愕の事実が発覚します。
なんとホロは「虫を食う虫」が大の苦手だったのです。虫を食う虫というのは、虫に寄生する寄生虫のことです。
糸が垂れ下がった蜂をみて、糸を寄生虫と勘違いしたホロが「ぎゃーーーー!」と叫んでロレンスにしがみついて本気で怯えます。ぎゃーて。。(かわいい)(乙女)(天下無双)

これはロレンスも初めて知ったらしく、”旅はいつも驚きの連続で、人の意外な面を明らかにする” と旅のよさを語ります。かっこつけたこと言っていますが、確実にロレンスは怯えてすがるホロに興奮してます。
>ロレンスは、あと軽く百年はホロのことを愛せると確信した。
これは引用ですが、軽く百年という言い回しがとてもいいですね。

ちなみに糸の正体は、おそらく密漁で巣を見つけるためのものだろうとのこと。そして2人は蜂を追って巣を見つけ、ぶんどって蜂蜜をゲットします。(ロレンスが巣を取りに行く直前にホロが後ろから抱きついているシーンの挿絵が最高です)
次の章の話になってしまいますが、ホロはこの蜂蜜と葡萄酒を混ぜてお手製の蜂蜜酒を作り、道中ぺろぺろ舐めて酔っぱらっています。おいしそうだな~

やっぱり2人には旅が似合うし、旅って楽しい。たった1話で存分にそう思わせてくれる、懐かしくも新鮮な素晴らしい旅の始まりでした。


【狼と森の音】
あまりの旅の楽しさにウッキウキのホロ様、楽しかった出来事をたくさん本に書きすぎてインクを使い果たしてしまいました。(かわいい)(お茶目)
仕方なく遠回りして近くにある旅籠に寄って筆記用具がないか聞いてみることに。

少しだけ筆記用具はあったが、少しだけだし今は価格が高騰していて買うのも困難とのこと。ちなみに価格が高騰している理由はコルの影響で、聖典の俗語翻訳が進められているため。詳しくは狼と羊皮紙を参照。

この章は、狼と香辛料では割とある「通りかかった村の揉め事をホロとロレンスが解決する」タイプのお話。褒美は少ないながらも紙とインク。

これまでのSpringLogは基本的にニョッヒラの中だけの話でした。しかし、世に出ると色々な事象や事情があることに気づく。そしてどうにもならないこともある。そんなことを強調しているように思いました。

しかしホロとロレンスにかかれば、苦戦するものの解決策を導き出せてしまいます。
村の問題はざっくり「お金が欲しいが森を切り倒したくない」というもの。そこで最終的に木のコブからインクを作れることに気づき、インクなら高値で売れるし木そのものを切る必要もなく万事解決。ホロのインクもたくさん!やったね!
ざっくりメリットを上げましたがこれだけじゃなく細かいいろんな条件を同時に解決する案で、インクの伏線もありつつ、完成度の高いお話でした。


【狼と旅の卵】
ようやく最初の大きな町についた2人。港町アティフはコルとミューリがすったんもんだあった町でもあり、コルとミューリは神のように崇められています。
そんなことは知らずの2人ですが、まずコルとミューリが描かれた絵画を持つ聖職者に出会います(ホロがミューリと間違えられたため)。

コルとミューリが描かれた壮大な絵画を見て、ホロに電撃が走ります。そう、「記憶を風化させない」ことにおいて、絵画は本の上位互換ともいえることに気づきます。そこに描かれているのが自分の娘ならなおさら衝撃でしょう。
ホロは自分とロレンスの絵を描いてもらいたいとやっきになります。しかし、この時代の絵の具は超高級品。ロレンスには到底手の届かないものでした。それでも2人は希望を捨てず、少しでも貯金していくことに決めました。

なんと、ホロ様がバイトをします。

まずパン屋の看板娘。パンにつられました。
しかし接客業など勿論初めてのホロ様、人見知りでもあるので愛想も使い果たし死にかけます。甘えられるのはロレンスだけ。めちゃくちゃ甘えます。

次は「かきまぜ娘」。麦の品質を維持するためにかきまぜる仕事。こちらは割と性に合っていたそうで、同僚の娘たちとも仲良く歌ったりしながら仕事しています。(かわいい)(えらい)

ロレンスはというと、頼まれごとの仕事をしつつ、賭博をします(!?)。といっても勝算はありましたし、賭け金も少なめ。昔のように全財産をはたいたりしません。成長しましたね。。

ところが、コル気取りの勘違い司祭野郎が賭博を取り締まろうとしました。実際には鰊の卵の取引所なので賭博ではないのですが、実質賭博みたいなもんとして取引の停止を命令。

困ったことになりましたが、ここもホロとロレンスの協力により解決。ついでに取引所に司祭の絵画をかざるという交渉におけるダメ押しの案を出し、その絵画にホロとロレンスも描いてもらうことに。ちゃっかりしてますね。解決する際にプラスアルファでどんどん利益を乗せていくのがロレンスの才能だと思います。
ホロは本当に嬉しそうでした。ホロにとって、ロレンスと共に生きた証を色んな形で残していくことが何より大事なことなのです。


【狼ともうひとつの誕生日】
最後は過去に戻り、コルとミューリが狼と香辛料亭にいたころの短いお話。
狼と香辛料亭の10周年、そしてミューリが10歳になり大人の女性としてのお披露目をお祝いする宴でした。
ミューリ傭兵団のルワードも出てきたりして、こうゆう場には絶対駆けつけてくれるんだなとほっこり。
コルとミューリの会話がメインでしたが、ここでミューリがコルに対する思いを確かなものにしたんですね。。ミューリ、がんばれ!


【4巻を通して】
旅の楽しさ、面白さを再確認させてくれました。
しかしこれまでの旅とは明らかに違うことがあります。それは帰るべき場所があることです。その事実のおかげで、旅とはいえどこか穏やかな気持ちで読むことができました。

また、今まで少ない手紙でしか聞くことがなかったコルとミューリの話が、実際の町でダイレクトに伝わってきます。狼と羊皮紙も読んでいるとより楽しめるかと思います。※勿論読んでいなくても全然問題ないです

正直SpringLogは基本いつ終わっても違和感のないような話が続いていて不安だったのですが、旅のおかけでまだまだ先があると確信できるのがいいですね。

1~3巻とはガラっと変わった感もありつつ、2人が熟練の夫婦であることや、「記憶」を常に意識している点は変わらないなと思います。昔の大冒険と違い、ちょっとした旅行に近いものだと思います。決して無理はしない、2人はもう幸せなのだから。


◆余談
先日、2019年発売予定の「狼と香辛料VR」を記念して、狼と香辛料×フォークトロニカをテーマにしたDJmixを公開しました。

【狼と香辛料VR発売記念】狼とfolktronica v2 (HokBoy's spice and wolf DJmix)


version2なのは6~7年ほど前に一度同じテーマで作ったことがあるからです。一応mixcloudの方に残っていますが、正直出来がいまいちです。それに比べると、流石に成長したなあと思います。

よかったら旅のお供に聴いてくださいね。

2017年1月17日火曜日

ポケモンSM シーズン1 使用構築 トドンナマコ

HokBoyです。
サンムーンシーズン1お疲れ様でした。最高は1700中盤ぐらいで最終レートがこれ。


ゴミ!
ただバンク解禁前のこの環境は今回限りの可能性もあるのでせっかくだし残しとこうかなと。強いかは置いておいて、構築も割と気に入ってるので。 
ちなみにシーズン1の競技人口は20万人ぐらいらしいので、この辺だと上位5%って感じですね。

◆最終パーティ紹介
トリトドン、ナマコブシと特に好きなウミウシとナマコを中心に組んだ構築。といってもナマコの選出率はかなり低め。ごめん。
あと色ナマコブシ、色ベトベトンと色違い2匹も使えてよかった。
軟体生物が好きです。ウツロイドもかなり好きですね。




トリトドン@食べ残し
特性:呼び水
性格:生意気
努力値:HD252 B4
実数値:H218 A103 B89 C112 D147 S42
技:地震/熱湯/毒毒/自己再生

相棒枠。サンムーンでは東の海の姿なので嬉しい。
特殊受けで環境に多いコケコなどの電気がいれば選出。毒守以外のガルドにも強い。デンジュモクとテテフは無理。コケコの草結びは火力UPアイテム持ってなければ受けれる。
トドンがいても他にナマコ、ギャラ、パルと水がいるのでコケコは高確率で出てくるが、逆にトドン、ベトン、ウツロイドがコケコにめっぽう強いので誘って有利に展開できることも多い。





ナマコブシ@ゴツゴツメット
特性:天然
性格:図太い
努力値:HB252 D4
実数値:H162 A70 B200 C50 D151 S21
技:毒毒/自己再生/水浸し/挑発

色違いが可愛いので頑張って国際孵化したナマコ。
物理受けで、一応鋼や毒タイプにも水浸しを入れれば毒を入れられる。(+タイプ変化によりダメージ軽減)
天然なのでマンダやミミッキュなどの積んでくるやつにも安心してあと投げできる。補助技にめっぽう弱いので挑発を採用しているが、遅いので交換読みとかで入れないと厳しい。
物理はギャラでなんとかできたりもするので、選出率は低め。
浄化バトンも使っていたが、バトンできないことも結構あってなかなか難しかった。




アローラベトベトン@バンジの実
特性:くいしんぼう
性格:意地っ張り
努力値:H244 A252 B12
実数値:H211 A157 B97 C76 D120 S70
技:ダストシュート/はたき落とす/影打ち/大文字

色違いその2。意図せず生まれた。トリトドン、ナマコブシと好きな色の緑が続いているので通常色の方がよかったかもしれないが、せっかくだし王冠使って採用した。
カプ全般に強く、ポリ2対策にもなってる。
ハッサムに打点がないパーティなので申し訳程度に大文字を入れてる。一応確2にはできる。





ウツロイド@電気Z
特性:ビーストブースト
性格:臆病
努力値:CS252 H4
実数値:H185 A65 B67 C179 D151 S170
技:パワージェム/ヘドロウェーブ/サイコショック/かみなり

唯一の特殊アタッカー。このパーティーだと相手は物理に厚くしてくるので刺さることも多い。環境に多いカグヤやメガギャラを電気Zかみなりで確1にできるのは強い。こいつに地面後投げはあんまりないので割と楽に交代読みで打っていける。
めざ氷個体なので最初はめざ氷で使っていたが、ガブを確1にできないのはやはり微妙。代わりにミラーやゲンガーに強くなるショックを入れた。めざ地が欲しかった。





ギャラドス@メガ石
特性:威嚇→かたやぶり
性格:意地っ張り
努力値:AS252 H4
実数値(メガ前):H171 A194 B99 C68 D120 S133
実数値(メガ後):H171 A227 B129 C78 D150 S133
技:滝登り/地震/氷の牙/竜の舞

こいつがいればなんとかしてくれるって感じの過労死枠。
1舞でコケコを抜けないが、コケコは他に対応できるポケが結構いるので少しでも火力を上げるために意地っ張りを採用。






パルシェン@気合の襷
特性:スキルリンク
性格:意地っ張り
努力値 H52 A252 S204
実数値:H132 A161 B200 C90 D65 S116
技:つららばり/ロックブラスト/殻を破る/氷の礫

初代からずっと好きなポケモン。水Zも使ってみたが個人的にはやはりパルは襷が使いやすい。
Sは殻破後に準速スカガブを抜けるとこまで。準速スカーフテテフも抜けるが、対面した時に限って臆病スカーフだったりする…




◆選出
刺さってるアタッカーを先発にして(ウツロイドが多め)、あと投げできるやつを控えさせる+補完みてもう1枠って感じ。普通。
デンジュモク以外の電気がいればトドン、物理竜や積み技持ちがいればナマコ、輝石持ちがいればべトン。など。ただナマコは脳筋っぽいパーティ以外には出すの躊躇しがち。

カグヤがいたら先発にウツロイド出すとあと投げされることが多いのでウツロイド安定。先発ウツロイドコケコ対面でカグヤ後投げされるパターンが結構あった。

ステロまかれることが多いので、ステロまいてきそうなやつがいたらギャラを先発にすることもある。



◆感想
シーズン1だけど結構色んなポケモン使えたと思う。
他にはヌメルゴン、テテフ、ルカリオ、カイリュー、クワガノン、ギガイアス、ガブリアス、ウインディ、アローラキュウコン、ダダリン、ファイアロー、ミミッキュ、ドヒドイデ。

環境トップメタのコケコを相棒のトドンで倒せたりマンダがナマコに手も足も出ずやられたりするのは楽しいなと思った。
この2匹はバンク解禁後も活躍させてあげられるだろうか。。
ナマコはZクリスタル持たせていろいろ構築考えたいけど、やっぱり役割破壊や強引に突破するためにZ技使うのが強いと思うので、他のポケモンに持たせたいんですよね。。

バンク解禁後は6世代お世話になったイカサマブラッキーを使いたいが環境的にきつそう。。
メガ枠は結局メガ石の解禁がいつになるやら分からんが、リザとバナは使いたいですね。

2015年10月23日金曜日

【H.K.WORKS】SoundCloudアカウント開設&新作Remix公開

これまでH.K.WORKSの作成物は、RemixはDroplamp(以下相方)のアカウントで公開したりmixは僕のアカウントで公開したりして、セットリストでまとめたりしていました。

しかし僕も相方も最近サウンドクラウドさんとのやり取りがすったもんだありまして、H.K.WORKSの曲達は一旦削除となりました。

ということでどうせならと新たにH.K.WORKS用のアカウントを開設。
過去曲は全て公開し、DLもFREEでできます。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓
https://soundcloud.com/h-k-works
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ 

MIXはないですが、P.A.WORKSオンリーのやつだけ僕のmixcloudにUPしてあります。

で、更に新作のRemixを公開。
シャーロットのOP「Bravely You」 のRemixです。




こちらは後日公開予定の「Charlotte EP」に収録予定なので現在視聴のみです。

今回のRemixはドリルンベースな感じになってます。
シャーロットやこのOPのイメージは「流星群」とか「夜空」とかあると思うんですけど、それでカタイ感じのブレイクビーツでキラキラした感じにしたかったです。まあ元々そうゆうのが好きなので。
日本のアーティストで言うとデデマウスとか。星空感満載ですよね。



【出演情報】
そんなこんなでH.K.WORKSで直近2本出演があります。

■10/24(土) 15:00 -
アニメ山 @おおばキャンプ村
http://tweetvite.com/event/yama


野外です。星空の中DJができる。さっきもデデマウスとか言ったけど星空っぽい感じにエモく仕上げたい。珈琲のみたい。

■10/31(土) 15:00 -
P.A.LOVERS @川崎 月明かり夢てらす 
http://twipla.jp/events/165061



ついにP.A.WORKSを大々的にフィーチャーしたイベントにお呼ばれされました。
とはいえ一年前の前回、相方が先に出演しているのですが。

それも踏まえて僕が加わったことでまた違う感じが出せればなと。

ちなみにP.A.WORKS作品で一番好きなキャラはアルファルドです。

2015年10月18日日曜日

H.K.WORKS Limited Pocket-T

マイメンの何人かが所属してるクリエイティブチーム「THIS IS MY____」にH.K.WORKSでTシャツを作ってもらいました!




ボディはFRUIT OF THE ROOMのポケットTシャツ
胸ポケットにフレームロゴ
でオーダーしました。

オーダーで作ってもらいましたが、言ってもらえればまた作れるそうなので。

THIS IS MY____ は最近公式サイトもOPENしたので是非チェックしてください。
WEBSHOPにはTシャツの他にコーチジャケットやパーカなんかもあります。

HP: http://thisismyunderbar.com/
WEBSHOP: http://www.thisismyunderbar.com/shop





2015年3月18日水曜日

[Hadoop] MapReduceでHBaseにバルクロードする

JavaでHBaseへデータを登録する方法についてのメモ。
一連の流れが具体的に書かれてるようなのが見つからなかったので。
詳しくは馬本を読めとのこと。。

[目的]
HDFSファイルの内容をHBaseに登録すること。
一行ずつ直接HBaseにPutしてもいいけど、ファイルの中身が膨大なんでMapReduceを使いたいのと、登録はバルクロードでやりたい。

[概要]
・MapReduceでHFile(※)を生成する
・HFileのあるディレクトリを指定してHBaseにバルクロードする
※HBase用データファイル

[方法]
全体のソースは丸ごと最後に書くので、部分的に。

まずMapReduceJobの設定。
Inputはファイルの中身のテキストを読み込むので、
job.setInputFormatClass(TextInputFormat.class);


OutputはHBaseへの登録。なのだが、それは最終的な出力であって、MapReduceの出力はあくまで"HFileの生成"。
OutputFormatには以下のように"HFIleOutputFormat"を指定。
job.setOutputFormatClass(HFileOutputFormat.class);

そして、HFileOutputFormat.configureIncrementalLoad() というメソッドを使って設定をしておく。これをやっとけば勝手に指定HTbaleのHFile生成用Reducerを作ってくれる。
HFileOutputFormat.configureIncrementalLoad(job, hTable);

ちなみに、MapReduceではJobの結果ファイルを出力するが、その時指定した出力先ディレクトリがHFileの出力先になる。指定ディレクトリ配下に、HBaseへPutするファミリーの名前で階層が自動で作られ、そこにHFileができる。
FileOutputFormat.setOutputPath(job, outputDir); 

Mapper側では、InputはTextでOutputは以下のキー・バリューを使用する。
job.setMapOutputKeyClass(ImmutableBytesWritable.class);
job.setMapOutputValueClass(Put.class);

ImmutableBytesWritableはHBaseに登録するRowKeyになる。
そして、そのキーに対して登録する内容をPutクラスで作ってバリューにセットする。
ここで出力をPutにしたことで、HFileOutputFormatは自動で"PutSortReducer"というReducerを自動で使ってくれる。あとはKeyValueクラスも使えるが、他の形式には対応していない。
正直、Incrementにも対応していて欲しかった。拡張もできねーし。。

話戻りますと、↑のような感じなのでReducerはナシ。作るのはMapperのみ。

で、Jobを実行。無事Jobが終わったら、HFileが出来ているので、ディレクトリを指定してバルクロード。"LoadIncrementalHFiles"というAPIを使う。(JavaのAPIがあることに中々気づけなくて苦労した。。)
以下のように実行。
LoadIncrementalHFiles loadTool = new LoadIncrementalHFiles(conf);
loadTool.doBulkLoad(outputDir, hTable);

これでバルクロードしてくれる。超早いです。
Jobが終わってからファイルでロードするので、Jobが途中でこけたりしても問題なし。
中途半端にデータが入ったりせず、簡単に再実行できる。


以下サンプル。

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.hbase.mapreduce.HFileOutputFormat;
import org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

public class TestBulkLoadJob {

 /**
  * 
 
  * args[0]:InputPath
  * args[1]:OutputDir
  * args[2]:HTableName
  * 
* @param args */ public static void main(String[] args) throws Exception { Configuration conf = HBaseConfiguration.create(); String inputPath = args[0]; Path outputDir = new Path(args[1]); HTable hTable = new HTable(conf, args[2]); Job job = new Job(conf, "hbase bulk load job"); job.setJarByClass(TestBulkLoadJob.class); job.setMapOutputKeyClass(ImmutableBytesWritable.class); job.setMapOutputValueClass(Put.class); job.setMapperClass(TestMapper.class); job.setNumReduceTasks(0); // Reduceは勝手にPutSortReducerでやってくれる job.setInputFormatClass(TextInputFormat.class); // ファイルから入力 job.setOutputFormatClass(HFileOutputFormat.class); // HBaseへ出力 // Input設定 FileInputFormat.setInputPaths(job, inputPath); // Output設定 FileOutputFormat.setOutputPath(job, outputDir); // 結果ファイル(HFileを含む)出力先 HFileOutputFormat.configureIncrementalLoad(job, hTable); // HFileのOutput設定 // Job実行 boolean success = job.waitForCompletion(true); if (success) { // Jobが成功したらHFileのあるディレクトリを指定してバルクロード LoadIncrementalHFiles loadTool = new LoadIncrementalHFiles(conf); loadTool.doBulkLoad(outputDir, hTable); } System.exit(success ? 0 : 1); } public static class TestMapper extends Mapper { @Override protected void map(Writable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString(); // HBaseのRowKey(とりあえずlineをそのままkeyとしておく) byte[] rowKey = Bytes.toBytes(line); // 登録用Putオブジェクト作成(とりあえずカウント(1)をセットしておく) Put put = new Put(rowKey); put.add(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes(1L)); // MapのOutputKeyはRowKeyで作成 ImmutableBytesWritable imKey = new ImmutableBytesWritable(rowKey); // contextにkeyとvalue(Put)をセット context.write(imKey, put); } } }