cnosuke's blog (′ʘ⌄ʘ‵)

へっぽこエンジニア

#golangtokyo のLTでkushiというのを作った話をしてきた

kushiとは

  • https://github.com/cnosuke/kushi
  • SSH Portfowardingをシュッとまとめるやつ
  • エンジニア全員の端末で同様のportfowarding書かれている状態に保つのはしんどい
    • 新規にAPIサーバふえたりDB増えたり...
  • VPNもなぁ。まぁいいんだけど...
  • まぁSSHでdynmaic forwardでよきにはからうのも考えた
  • ネットワークがオフィスから家に切り替わったりすると、まぁSSHセッション途切れるよね、再接続して欲しいよね、とか。
  • 一方で全部自分でというよりは接続自体は安心と信頼のプロトコルがいいよね
  • 今は弊社内で私と数人でちょいちょい試しているという感じ。3ヶ月くらい前に作ったけど、結構安定している。Go最高。
  • 本文中にも書いたけど、念のため申し添えると、本番では使ってないです。
    • (そもそも本番のアクセス権限はかなり制限している)

近いうちに実装するやつ

  • forwardingのリストを取ってくるところに認証機構
    • 今は無いのでURLを頑張って推測不可能にしてくださいとしか
    • AWS IAMとGCP IAMあたりを考えている

そのうち実装するやつ

  • SSHの鍵自体もGSuiteの認証と組み合わせて良い感じに楽したいなぁ
  • GSuite側のgroupsとかを結構弊社は活用しているので、それを使ってクラスタのアクセス権制御自体できると何かといい

ISUCON7本戦で @k0kubun と @rkmathi とのチームで4位だった 「Railsはもはや煩悩(ryチーム」

こんにちは、cnosukeです。 最近は、主にTHEOのSRE*1をやりながら、たまにGolangで裏側のAPIを作るマンになっています。

ISUCON自体はかれこれ5回目の参加で、今のメンバーでは4回目の参加です。 前回の本戦はISUCON4で、その時は学生枠だったので、本戦自体は2回目、社会人としては初めての本戦でした。

ざっくりした感想として、予選はnginxをいい感じに設定するとか、割とインフラ面を含めた幅広い知識が要求された一方で、本戦はアプリケーションを最終的にごりごり改善していく感じはありましたね。

k0kubun.hatenablog.com

rkmathi.hatenablog.com

やったこと概要

問題は、数年前に流行ったクッキークリッカーを模したゲームで、さすがKLabさんの出題といった感じでした。 ポイントとしては、データの書き込みとかは大して無く、データ転送も大したことが無いので、明らかにCPU負荷をどうやって分散して下げるか、という感じの問題でした。 通信は、おもにWebSocketを使っていて、そこにクリックの動作が流れたり、同じ部屋の他のユーザに状態が同期される、という感じです。

方針決め

とりあえずゲームを動かしてみると、「部屋」の概念があり、全ての操作は部屋の中で閉じていることがすぐに分かります。これは、ゲーム関係にはよくある「世界でサーバを分ける」方針がそのまま使えるということなので、サーバそれぞれを「部屋」で良い感じに分けるという方針はすぐに決まりました。 これは、どのチームも最初に決めた方針だと思います。

サーバ分割

それで、最初に雑にサーバを割り振ってみると、最初はベンチーマーカがかけてくる負荷が小さく、作られる部屋も少ない(4〜6部屋程度)ので、部屋名でハッシュをとってサーバを分けるのようにすると、確率的に一部のサーバにアクセスが集中して、そこがささるせいでベンチマーカがなかなか負荷走行を強くしていってくれないことに気づきました。

なので、4台与えられているサーバの1台(以下、初号機と呼ぶ)に、部屋の割り振りを一任して、その1台が各サーバに作られる部屋数を均等に割り振っていくようにしました。Least Connみたいな感じです。 こうすると、4台に万遍無く負荷がかかるので、初速が出やすくなりました。

あと、トップページやcss/js等のアセット類のアクセスはほぼ初回と最後くらいで、全くといって良いほどスコア貢献が無かったので、これも初号機のみで返すようにしました。 つまり、ベンチマーカは、最初は初号機のみにアクセスし、そこでhtml/js/cssを取得してWebSocketで繋ぎにいくべきサーバを知って、あとは他のサーバにWebSocketで繋ぎにいく、という感じです。

ついにRubyを辞めた

いろいろとRubyでキャッシュを入れるようにしたり工夫していたんですが、あまりうまく出来なくて、割と直ぐに今度はメモリが溢れるようになってしまいました。 そこで、遂にRubyをやめるか〜〜〜となって、WebSocketをハンドルするサーバはGolangを選択することに。 nginxも実質パイプしているだけで要らんなってなったので、GolangのWSサーバが直接リクエストをそれぞれのサーバで受け付ける構成に変更しました。 こうしていくと、前述の「初速が出やすくなるようにleast connにした」との組み合わせもあって、割と2万点は超えるようになりました。 (たぶん同じようにWSを複数サーバで受けて、かつGolangにしているチームは多かったようですが、ベンチの最初のほうでリクエストが少ない時に部屋が偏ると初速がかなり遅くなってしまう感じの部屋割り振りガチャになってるケースもあったんじゃないかと思う。他の工夫で初速が伸びるようになって、作られる部屋数が10を超えてくると、least connの分散の意味はほとんど無くなると見込めるが、2万点前後付近ではこの効果が出やすかったんじゃないかなと思う。)

ごりごりパフォチュー

rkmathiがプロファイルとってくれて、みんなで「いろがきれいだな〜」とかいいながら眺めたりした。

これ以降は、k0kubunが持ち前の爆速エンジニアスキルを発揮して、かなりいろいろとコードの高速化を試してくれて、rkmathiがそれをプロファイルを取ったりサーバの設定項目を見直したりしてサポートするという感じ。僕は累乗の計算しまくっててエグイ計算量になっているところを、事前に計算した結果を参照するようなキャッシュ機構の実装を一生懸命していた。

ラスト30分でキャッシュ機構が出来たかと思ったけど、うまく動かず結局revert。 最終的には、地道な改善効果も重なりはして、スコアは27,304点ということで、4位でした。

全体のリポジトリはここにあります。

github.com

心残り

やっぱりもっと、キャッシュをガンガンいれれる余地はあったかなぁと思っているのと、MySQLを結局捨てきれなかったのは少し残念な気持ち*2。 構成的には、全部Golangのオンメモリで裁ける性質の問題だったので、そこまでやれたらなぁという思いはある。 全部Golangオンメモリで、コード上でtransactionもうまく管理できれば*3MySQLトランザクションのロックが結構長いなみたいな問題も解決は出来ただろうし、悔しさが残った。

なんというか、最初はRubyで頑張って、途中からGolangに切り替えるみたいな流れ自体は、最初に分かりやすい言語で動作理解が出来たりどこが重いかが分かりやすかったので、よかったと思っているけれど、切り替え後に、最近Golang書いているとはいえ、まだまだ3人とも完全に手に馴染んでは無い感じがあって、苦労があったのが悔しかった。

終わったあとに、スギャブロエックスの各位とも話していたのだけど、ISUCONみたいに極度の緊張下で時間が厳しい環境ではコンパイル時にバグにすぐ気づけるみたいなのはとてもいいねという感じで、Golang最高みたいな気持ちになりました。(スギャブロエックスさんのところはTypeScriptのようでしたが)

*1:ちなみにTHEOはAWS上に構築したKubernetesでホストしています

*2:データ量が少ないので、MySQLのパフォーマンスが問題ということは特に無く、それよりはtransactionの範囲が広くなってロック期間が長くなるとかそういう問題があった。

*3:これが難しいんだと思うけど...

2千円で数キロの良質な肉を入手する方法

この記事は糖質制限アドベントカレンダーの2015年12月6日分として書いています

この記事をお読みのみなさん、今日もタンパク質とってますか。 糖質制限タンパク質の摂取が重要です。

そこで今日は、たった2000円で良質な肉を大量に購入する方法を書きます。 まぁここまで書けば勘が良い方ならもうわかりますね。

2千円の負担でかつ年末といえば、そう、ふるさと納税です。 住民税の2割程度を上限に、地方公共団体に寄付をした分が還付・控除される制度です。 寄付した額の半額がDMMポイントでもらえる件(既に中止)で以前話題になりましたね。

正確には扶養家族とか保険の控除とかで個人によって額は異なりますが、まぁ年収400万とかだとだいたい5万くらいという感覚です。 つまり、5万円分を寄付していろんな肉を御礼品として頂きましょうという話です。 5万円寄付すると、だいたい4.8万円くらいが還付されます。なので実質負担が2000円という感じですね。

ふるさと納税って手間かかりそう」

そうでもないです。正直ほとんどの人はほとんど手間がかかりません

例えば「ふるさと納税サイト[ふるさとチョイス]」というサイトを使うと、クレジットカード決済で寄付が出来て、普通のネットショッピングとほとんど同じ手続きで申し込みが出来ます。便利だ。。。

あとは給与所得者であれば、書類を寄付先の自治体に送付するだけでOKで、確定申告は必要ありません

以下、「寄付」という言葉が何度も出てきますが、その分はほぼ還付されて戻ってくるので寄付全体で2000円の負担が必要なだけで、金銭的負担が実質的にかからないことを意識しながら読んで下さい。

オススメの良質なお肉

f:id:cnosuke:20151206233805j:plain

ふるさと納税の自治体からの御礼品は食品が特に多いようです。どの自治体もご当地の美味しいものをリストしています。 お米が結構人気のようですが、糖質なのでみなさん興味無いですよね。ちなみに日本酒とかワインもありますけど、糖質多いので当然駄目です。

ではオススメはというと、特にオススメしたいのが「鹿肉」。

高タンパクで糖質制限に最高

え、鹿肉?そんなのあるの?って感じじゃないですか。あるんですよ、ふるさと最高。

鹿肉は低脂肪高タンパクで、馬肉に近い感じがあります。あと、鉄分が多いのも特徴で、栄養的に非常に優れた食品です。 ただしく加工されたものであれば、結構柔らかいし、凄く美味しい。当然、糖質制限にも最高。

もともと、鹿肉は鹿の害に困った自治体が駆除した鹿の肉を食材として加工流通させているものも多く、自治体としても食べてもらうと嬉しいらしいです。

www.furusato-tax.jp

もも肉ステーキは肉感が強くていいですね。筋肉が喜びますよ。

1万円の寄付で

  • 鹿肉モモステーキ400g(5枚入り)×3袋

を受け取ることが出来ます。合計で鹿肉1.2kg

www.furusato-tax.jp

鹿肉は高タンパクであっさり気味なので、ジンギスカンのタレとはすごく相性がいいです。

1万円の寄付で

  • 鹿肉ジンギスカン500g×2袋(宗谷産鹿肉)
  • しゃぶしゃぶ用鹿肉200g×2袋(宗谷産鹿肉)

を受け取ることが出来ます。合計1.4kg

www.furusato-tax.jp

北海道白糠町には「高タンパク・低カロリー・低脂肪 えぞシカ肉セット」というのがあります。

1万円の寄付で

  • 鹿ロース肉(約300g)
  • 鹿モモ肉(約500g) 

を受け取ることが出来ます。

ちなみにこの白糠町は、他にも

「羊・鶏・鹿肉をまるごと堪能! しらぬか自慢 味付き焼き肉セット」

  • 味付鶏肉(鳥じん、約900g)
  • 味付羊肉(らむじん、約1kg)
  • 鹿肉味付き焼肉(約300g)

とかもあります。こっちは全部で肉2.2kgですよ。凄い。 あと2万円の寄付でもらえる「鮭とば2kg」もおやつに凄くよさそう。オフィスの机に2kg置いておきたい。

www.furusato-tax.jp

北海道新冠町には熟成鹿肉もあります。こちらも1万円の寄付で鹿肉1kg分です。

他の肉も大量

もちろん、ふるさと納税では鹿肉の他にも良質なお肉は大量にありますよ。

www.furusato-tax.jp

1万円の寄付で

  • 豚ロース肉 1kg
  • ウインナー 9本(約315g)×2セット

合計1.6kgの豚肉。すごい。

www.furusato-tax.jp

「はくばの豚セット」には、1万円の寄付で

  • ロース肉かつ用 150g×4枚
  • もも肉しゃぶしゃぶ用 400g
  • かた・もも肉切落し 500g

合計1.5kgの豚肉

www.furusato-tax.jp

北海道池田町も肉類が充実。 なんと、2万円の寄付で3.8kgのハムとかあります。どうやって食べればいいんだろう。

まとめ

いかがでしたか。良質な肉、いっぱいあるでしょう。

なんどもいいますが実質負担は、たったの2000円なので、まだふるさと納税してない人は絶対やったほうがいいと思います。 寄附金の使途を指定出来る自治体も多いので、ちょっとその町のことを調べたりして選ぶことそのものも楽しいので是非オススメです。

もう2015年も12月に入ったので、手続きはお早めに!

ちなみに僕は、5kg以上肉が届く予定です。ヤバイ。

#isucon 4本戦に「railsへの執着はもはや煩悩(以下省略)」で参加 && 爆散しました

アルバイト仲間な @k0kubun と大学の友人の @rkmathi となんとか予選を突破できていたのでISUCON4の本戦に出場してきた。

そういえば今思い出したのですが予選も記事に書いてなかったのでさらっと予選についても書いておく。

予選の話

ちなみに去年も出てました。去年の話はこちら。予選突破と思いきやFail出過ぎで結局スコア低くて死亡みたいな感じだったので今年はなんとしても予選は突破したい気持ちでした。

去年の反省で一番大きかった「ベンチがちゃんと通る状態を続ける」というのを徹底的に守ることを意識。 今年は事前に集まって練習したりもしたので、まぁよく使われるnginxとかvarnishとかunicornとかmysqlとかはそれなりに設定いろいろ弄って実験して感覚掴んで望んだつもりだったのに、やはり試合となると、ほんとなかなか思い通りに行かなくて辛かった。。。

あと去年の反省でcapistrano的なのやっぱりあるほうが便利だなと思ってたので、今年はItamaeを使ってみたけど、結果的にはやはり完璧に使いこなせる状態じゃなく結構はまって時間使ってしまったのは痛かった。(Itamaeはしっかり実用段階だったけど、僕らの知識が不足してた。。。)

時系列でどんなことやったかはk0kubunrkmathiが時系列でまとめて記事にして下さったのでそちらをご参照下さい。

あと予選の時の大きな反省点として、チームワークが出来てなかったことがやはり大きかった。 具体的には作業の分担も曖昧で何がまだ出来てないかみたいなのもちゃんと把握出来てない状態で、終了間際になって、まだそれやってなかったんだっけ??みたいな状態にみんなでなってアワアワしてた。

それで、完全に実力を出せてないような不完全燃焼な感じだったのでマジ死亡したというか死亡して天に昇って雨となって地上に振り落ち草木を潤して幸せに過ごしたいと思っていたらなんとか予選突破できてたので本当に嬉しかったです(遠い目)

本戦の話

そんなわけで本戦ですが、前述のチームワークの反省を生かし、明確に僕が指揮を取ろうということになった。 指揮といっても、指示を出すような大層なものでは無く、なんていうか「事務局長」みたいな感じ。 具体的には、競技スタート直後の作戦会議やある程度コードを読んだあとの作戦会議の司会進行、仕事の分担の整理みたいな感じで、調整するための中心軸みたいなもの。 実作業の分担としては、やはりk0kubunが僕より全然コード書けることは普段の仕事でもいつも思っていたので、アプリケーションコードはk0kubun中心にまかせることにして、インフラ面を僕とrkmathiで見るという感じにした。もともとは3人ともアプリケーションをよく書いている人間だけれども、比較的僕とrkmathiは前職の関係もあったり僕らは元々インフラまわりが好きみたいなのもあってこういう分担になった

戦略

動画配信の問題だったので、ふと割と最近みた id:Yoshiori さんの料理動画のスライドとか思い出して、帯域とコネクション握りっぱなし問題で辛くなるのではと考えた。

f:id:cnosuke:20141111002707p:plain

そんなわけで、おおざっぱに図示すると上のような構成を考えた。 上の図、1がCPU1つのサーバ、2,3はCPU2つのサーバで、2と2'、3と3'は同一のサーバだけど便宜上図の上では分けた。

まず考えたのは、3台ともフロントに並べて外側の帯域を使い切れるように。その時、assetファイルは各サーバから直接返せるように。また、一貫性を保つためにredisの各assetがどこのサーバにあるかといった情報を含めた(assetそのもののデータ以外の)全ての情報を2'に集めて、ロギングは3'にいれたmysqlにぶっこんでいくようにした。

午前中の大半はコードを読んだりログを取ったりして戦略を練ったり、設定ファイルをリポジトリから管理しやすくしたりするのにほとんど使って、本格的に手を入れ始めたのはお昼ご飯の後だった。

最初にnginxとかの設定ファイルを先にこれまでのisuconの問題の傾向とかである程度テンプレート化したのを入れてしまった...。これが本当によくなくて、ある意味これを信じすぎたせいで最後までcache-controlには気づかなかったし、keep aliveも意図的に超絶短くしたままだった。 実世界だったら考えそうなことなのに、isuconは特殊な状況だという思い込みによって完全に縛られてしまっていた。本当に悔しすぎるし、ここをついてくるベンチマーカー優秀過ぎて辛い。。。

あと、実は僕らのチームは18時くらいまでは動画を普通にメモリ上から返していた。 理由は、最初の段階でログを見てみるとゆーてそんなに大量に動画postされてこなくね?みたいな考えがあって、僕らの戦略だと3台のサーバに動画ファイルがpostされてきて保存も3台に分散されるから、3台分のメモリ合計まではオンメモリでまだいけるんじゃね?それにやっぱり配信だからpostがめっちゃ来るというよりはやっぱり配信数がメインなんじゃないの?みたいに考えたからでした。 で、そんな感じでやっていくと、まぁベンチマーカーはスコアが上がれば上がるほど鬼畜になっていくみたいな感じで、8000点を安定的に超えるような点数になると、普通にswapして死亡みたいになるようになってきた(varnishも爆死するみたいになった)ので、流石にもう限界だね、って話をしてFileに書き出すよにした。(18時くらい) で、残り時間が少なくて、あと一時間でちゃんと再起動しても動く状態を保ってnginxから直接assetを返せるように設定とアプリケーションコードに手を入れるのはリスクが大きいのでは、という話になって、めっちゃゴミっぽいと3人とも認識しながらSinatraの上で File.writeFile.read するようにした。ゴミっぽいとは思ったけど、メモリ使い切って死ぬよりはマシだということで取りあえずこれにしたんだけど、そのあとはいよいよ時間が無くなってきて、なのに希に FATAL で測定で失格になりそうな現象が起きることに気づいて、アワアワしているとTimeUpみたいになった。

時間内に計測していた感じだと、8000点から12000点とかは出ていたので、なんとか学生枠では1位取りたい取りたい!!!って思っていたけど、最終スコアが5922点で本当に膝から崩れ落ちそうになった。辛い。Failしなくてよかったとか思ったけど、涙出るほど悔しい。

本戦についてのk0kubunの記事はこちらで、rkmathiの記事はこちらにあるので、時系列で詳しく見たい方はこちらを参照下さい。

感想

チームワークは本戦は凄く良かったと思うし、知識とか経験でも正直学生枠みんなそんな大差無かったんじゃないかと思う。で、敗因は何かってことをここ数日ずっと考えているんだけど、本当に人間的な無力さとかを考えてしまって辛い。。。

特に試合中のスコアを見てもまさかこんなに惨敗するとは思ってなかったので最終スコアみた時本当に辛い気持ちになった。 あと、やっぱり生ハム原木チームさんめっちゃ凄いと思う。本戦で、しかも例年のisuconの裏をかくようなベンチマーカーだったのに見事に見破ってたし、それ以外でもしっかりパフォチューしてきてるの、本当に尊敬。 あと、他のチームのみなさんも、後の懇親会でいろいろお話を伺ったり、会社で出場していた人に話聞いてみたりするとみんなやっぱり凄いいろんなこと考えていろんなこと試しててやっぱり全然勝てないと思った。同じ学生枠だったBIG丼チームとかも、元々友人で知っている人なつもりだったけど、やっぱり彼らめっちゃ凄いしめっちゃ面白いと思った。

はー、なんだか、ほんと信じられないくらい、自分の無力さを感じた試合だった。

だけれど、どMなのか知らないけどめっちゃ面白かったのも事実だし、ショックを受けたことが少し気持ちよかった気も今はしている。もしかしたら、さすがに日数が経って冷静になったからかもしれないけど、なんていうか、もっと勉強すべきことはいっぱいあるし、そのためには時間がいくらあっても足りないんだなみたいに思うとちょっと楽しくなってきた気がする。

めっちゃ悔しいし、考えていると胸の中ポカポカ状態になってくるけど、このエネルギーを使ってもっと精進したいし、今年度こそは修論を書き終えたい。

今年度こそは、修論を書き終えたい。

来年は一般枠でみなさんに拳を振り上げていきたいと思うので、引き続きよろしく御願い致します。

PS. 運営の皆様、本当にありがとうございました。 めちゃめちゃ面白かったですし、来年度以降、参加者の立場で盛り上げたい気持ちは当然ですが、僕も何かお力になれたらとか思うくらい、なんかかっこよかったです!パイセンかっけー!!!:star:

頻繁に東京とか筑波大学とか行ったり来たりする人が利用すると幸せになる交通手段

高速バス。

詳しくは関鉄バスのサイトをみるべし。

利点

大学→つくば駅→(TX)→秋葉原→東京駅 と比べて

少し安い

  • 上記経路だと合計1440円かかるところ、1150円で行ける
  • 3回分の回数券だと一回あたり1033円になるので、117円安い

所要時間はほぼ変わらない

  • 大学からだと乗り換えの時間とか考慮すると10分くらいの違いが出る程度だと思う
  • 乗り換え、東京駅だとちょっと便利なこと多い。特に白金台方面に住んでいると大手町から三田線乗れるのが良い。

少し快適

  • 100%座れるし、比較的空いているから二人席を一人で座れる
  • (というかTXの座席堅いし垂直だし辛い)
  • 広い区間地下で電波入りにくい&&車内でLAN使えます()が詐欺級に使えないTXと比べて、少なくとも電波は入る地上を走る
  • 首都高区間は景色割と楽しい(特に首都高速6号向島線)
  • 車内にトイレがある

車内アナウンスの英語が秀逸

  • カタカナで書かれた文章読んでそうな感じで微笑ましい
  • でも突然流暢な英語で話したりするし不思議な気分にさせてくれる

欠点

  • バス酔いする人は多分死ぬ
  • 時間帯によってはもしかして誤差結構大きい

便利情報

  • 東京駅の券売機で回数券買えばクレカ使えて便利〜(つくばは買ったことないから知らない)

追記

もっと高速バスを安くする方法あるらしい。 取りあえず車内でこの回数券変えるそうな。 (つくば駅でも買えそうだけど未確認) ※ただし上り専用

Chromeがver32でなんか便利なのついてた

いままで Google ChromeiPhoneのエミュレーションとかする時、Developer Tools の Overrides からしこしこUA違うの選択して画面サイズ選択して〜みたいにしてたのが、ポンっと変更出来るようになってた!!

めっちゃ便利〜〜

自分の余分なカロリーを他の子供に押しつけることで世界が幸せになって欲しい

毎々御世話になっております。

先日綴ったポエムにも書いてたけど、最近身体に地層のようにカロリーが重なりつつある。

今日も例によって昼に油そば大盛りを食べ、夜も角ふじという大変カロリー感満載な天使の食べ物を400g食べるということをしてた。
今日の夜のメンバーはいつもと同じような天使の食べ物愛好家のみなさんであったのだが、そこで如何にして身体に積み重ねられたカロリーを捨てていくかという話をした。

そもそも摂取量を減らせば自ずと地層が薄くなるのはよく知られた事実であるが、この手法はカロリー愛好家軍団としては受け入れられない。

では、どうするかというと、それはもう運動するしか無い。 遂にこの時が来たかという感じである。

痩せたいは痩せたいんだけど、運動して痩せるのって何だか取ったものをわざわざ捨ててるような感覚が少しある。 こんなこと考えるの、もしかして変な感じなのかもしれないけど、ちょっともったい無いみたいな。
せっかく100円多く払って食べた大盛り分のカロリー、結局捨てんのかい!みたいな。

うーん、どうしたらもっと運動するモチベーションあがるのだろう。 何かのゲーム的なのを考えたらよいのだろうか。 たくさん走るとスマホのアプリでバッジが集められるみたいなの、ちょいちょいあるけどそういうアプリ上での所有欲が殆ど無い俺には効果が無さそうだ。

そういえば、こういうカロリーを取っては捨てて取っては捨ててみたいなことを考えていると、一方では世界にはカロリーを取りたくても全然取れない人も居るんだようなぁみたいなこともちょっと考えてしまう。

そうだ、こういうのはどうだろう。

俺がカロリーを捨てたら、そのカロリー分だけ世界のどこかでカロリーが必要な子供にカロリーが届くというゲーム。

これなら、少しはやる気が出る気がする。 カロリーを無駄に捨ててる感無いし。

走った距離(時間)の分だけ、ご飯が食べられない世界のどこかの子供にご飯が行くように募金するみたいにしたら良さそう。

んー、でもこれだと走ってしかも自分のお金も無くなるというちょっと微妙な心境になる。

あ、ではこうしたらどうだろう。

俺がちゃんと走ったら、誰か募金して下さい、みたいな。
お前が募金しろよ!みたいに言われそうだけど、そこはまぁ、募金する口実が出来たってことで宜しくお願いしますよ。 もっとちゃんと考えて、俺のカロリーを減らすことが、ほんのちょっとだけみんなにとって楽しいみたいなことまでちゃんと出来れば、募金してくれるようにならないかなぁ。考えるの難しそうだけど。

というわけで、首記の件、皆々様には宜しくお願い致します。