相互再帰関数でポモドーロタイマー作ってみました

こんにちは

 

仕事上、Excelを使うことが多く、今回はポモドーロタイマーをExcel VBAで作ってみました!

 

ポモドーロタイマーとは

 

ググればすぐ出てくるので詳細は省きますが※1

要はX分作業、Y分休憩をZセット、みたいなタイマーですな。

 

VBAでやるには?

 

取っ掛かりもなにもないときは、まず検索ですね。「VBA タイマー」で検索すると、ストップウォッチの作り方が書いてあり、OnTimeメソッドを再帰させれば、設定時間おきにサブルーチン実施する云々。他の言語でよくあるThread的なことはできなそうなので、この機能使ってやってみるか!

 

で、最初作ったコードがこちら。

f:id:Shoriencohol:20191226211814j:plain

。。。あまりのif文の多さと再帰記述の多さにピントがぶれております。。。美しくない。。。裏でこんなに頑張られるとポモドーロやってても頭に「あー今4回めの再帰文呼び出してるんだな。さっきのポモドーロはあのifで殺されてて。あれ、一体今何セット目?」とか考えて集中できなそう。。。

 

と、悩んでいたところ、SNSより神の手が。

相互再帰させるのはどうですか?(マストドン、とりぽかさんより) 

 

 

おお!再帰を学んだばかりだし手を出すのをためらっていた相互再帰関数!確かに、作業と休憩の2モードがあるから、2関数を別のサブルーチンにすればうまくいきそう!!

実は、コードのヒントはもらいましたが、見ないで「相互再帰」という言葉だけでなんとか正解に行きつけるようにコーディングしよう!そして家に帰って(会社でコードいじってた)、いざVBAを開くと。。。

f:id:Shoriencohol:20191226212903j:plain

あー盛大に文字化けしてますね。。。自宅PCのOSが中国語ベースなので、全角文字が盛大に文字化け。でも、「中国語か文字化けかわからない」という突っ込みもあり。た、たしかに。。。まあ、諦めて英語にするか。。。

 

相互再帰できました!

 

といことで、最終的にできたコードがこちら。

f:id:Shoriencohol:20191226213130j:plain

スッキリした。。。if文の化け物みたいなコードが、各関数1ルーチンのifとたった2回の再帰関数の呼び出しで実現できるなんて。。。場合によるとは思いますが、再帰の凄さを認識しました。。。

 

とはいえ。。。

 

OnTime関数はサブルーチン自体の実行が終わっても裏で動作しているし、それを動的に止める方法はExcel強制終了以外にない、ということもあり、コードミスが有ったときや複雑なコードになった場合のデバッグは厳しそう、というなんとなーくの思いを持っていたら、

複数プロセス(or スレッド or プロシージャ)でくるくる回すと、
バグったときに追いかけるのが大変なので、僕だったらこんな感じで書くかもです。

(1):TrainningTime回数トレーニング繰り返す
(2):そのあと、RestTime回数休憩を繰り返す
(3):SetTime回数(1)(2)を繰り返す

繰り返しは
for rm.text = t.text -1 to 0 step -1
...
next rm.text
みたいにかけないかなぁ(やってないのでわからない。できなければループ変数をiでとって適宜rm.textに表示のため書き戻す感じで)
そうするとApplication.OntimeでなくてApplication.Waitとかでいけたりしないかなと。(sleepが使えたら一番なんだろうけどVBAには標準ではないっぽい。) 

マストドン、ぷらいずあうと さんより

そうですよね。自分も、再帰を学んだばかりだから使ってみたさでやったけど、自分で考えつくのはloop分だし、まあ、個人で使うならまだしも、品質保証必要になったら再帰ってなかなか書きにくいかもなーとか思いつつ、そういういろんなこと考えながらコードって書かなきゃならないんだな、とか思いつつ。

 

日々、勉強ですね。

 

ではではー

 

※1 私が書きたいように書いているので、しょっちゅう大事なところでも省きます。

 

客家黄酒

こんばんは。

今日は、中国のお酒について。

■その前に

私のお酒スペックですが、タイトルにもある通り、かなり好きです。ただ、よく言う「みんなで飲む飲み会は好きだけど、一人では飲まない」ようなタイプではなく、一人で黙々と酒と語らいながら晩酌するタイプです。かと言って、いろいろ知識を仕入れて高いお酒を飲んでウンチクを語るタイプでもないです。日本酒でいうと、吟醸酒や大吟醸酒といった高いお酒をありがたがって飲むタイプではなく、安くて美味しい普段飲みの酒を、飲みまくって探すタイプ。系統立てて鍛えられた精鋭兵士ではなく、野武士、といった感じかもしれません。

なので、今回のお酒も、決して高いわけでもないし、中国人に聞いても「え?そんなの飲んだことない」と言われかねないお酒です。

■黄酒とは

中国のお酒、というと、白酒が有名です。かなり度数の高い蒸留酒(40〜60度)で、元々中国の北の方で作られていたお酒と思われます。上級なものは、国賓の接待でも使われているようで、茅台酒という最上級のものはとんでもない値段がします。よく、「中国に行ったら乾杯で何度も飲まされる」というのはこの酒で、私も速攻で記憶が飛んだことがあります。

黄酒というのは、白酒と違って醸造酒です。日本でいうと、中国の醸造酒というと紹興酒がなじみ深いかと思いますが、紹興酒も「紹興で作った黄酒」というものです。糯米ベースで作ったお酒乃総称のようで、地域によって製法が違い、味も異なります。

■中国での黄酒

中国では、ものによりますが黄酒はかなり安く売っています。いいもので500mlで1600円くらい。安いものは4リットルで300円くらいで売っているものもあり、まあ飲用とは書いてあり飲めなくはないですが、基本的には料理酒のようです。飲めなくはないので、私はだいぶ飲みましたが、中国人には「あれは飲むものではない、正気か?」と言われました。

■客家黄酒

中国に行って一週間くらいで近所のスーパーで何気なく買ったのが「客家黄酒」でした。その頃は、黄酒という呼び名も知らず、客家というのも「接待用?」とか思うくらい何も知識なく購入。500mlで17元(約300円弱)なので、日本酒の感覚でいうとかなり安いし、全然期待はしてなかったのですが、なぜかものすごく美味しくて。なんというか、黄色いワイン、といった感じでしょうか。甘い割に中国人に聞いても「安すぎる、偽物じゃないか」と言われる始末。で、いろいろ調べた結果、黄酒はビール、ワインと並んで、「三大古酒」と言われているようで、その中でも南方(湖南省)が起源、ということがわかりました。
黄酒_百度百科

f:id:Shoriencohol:20191223205634p:plain
中国語まったくわからない状態でこういうのを読み解くぐらいにはお酒が好き

■現地に行ってみた

ということで、中国語しゃべれる人に「客家」に行きたい!と、読み方もわからないまま懇願し、現地へ。ここは本筋ではないので省略(!!)しますが、世界遺産にもなっていて、一昔前にロケット基地ではないかと疑われた、土楼という集合住宅に今も人が住んでいるという地域で、それはそれでとても楽しかったです。で、その土楼の中でお酒も売っているところもあって、念願の黄酒(現地では米酒と言っていた)をゲットしたわけです。

■直接郵送で注文してみた

で、そこのお酒、1リットルしか買わず、美味しかったので写真撮る暇もなく一瞬でなくなってしまいました(ここも省略)。ということで、その時もらった名刺にWeChatの連絡先がのっていたので、つたない中国語と翻訳を駆使して注文してみました。

f:id:Shoriencohol:20191223213934j:plain
この前に、私は日本人です、と伝えましたが、ゴリゴリの中国語で押してくるお店の人(白い方)

まあ、いっぺんにそんなにいらないし、お試しがいいけど、1リットル郵送は申し訳ないから2リットル(4斤)で、と言ったら、うちは10斤(5リットル)からしか郵送していない、と言われ。しかも値段も「あなたが前に買ったときの値段と一緒だよ!キリッ」とか言われたけど、覚えてないし!適当に、多分一リットルで60元くらいだったと思う、とったら、なんとなくその値段で送ってもらえることになり。とりあえず、成功!

■届いた

f:id:Shoriencohol:20191223191449j:plain

え?え?待って待って、たしかに1瓶で2.5リットルで2瓶分から郵送って言ってたけど、この色の違いは聞いてないし、よくわからないけど!しかも、ラベルもなにもないし、注意書きも書いてないし、これ、大丈夫!?いやでも、客家の人たちは商売よりも歓迎ムードがすごくて、騙すような感じじゃない(と一緒に行った中国語ペラペラの人も言ってた)し、とりあえず、お店の人にWeChatで写真送ってみる、か!?

f:id:Shoriencohol:20191223214830p:plain

あ、ああ、うん。「谢谢,您」ね…。ありがとうってことですね。色は、こういうことなんですね、そうですか。僕が悪かったです。まず飲んでみますね。

ということで、色が薄い方を飲んでみました。

f:id:Shoriencohol:20191223215542j:plain
うしろのパソコンは気にしないでください。

う、うまい。。。麹の味が残っている感じで、とてもうまい。。。なんだろう、すごく甘い、甘いんだけど、料理、特に中華料理の油が多い感じには絶妙に合うイメージ。。。度数も(書いてないけど)多分15度くらいで、とてもちょうどいい良い具合。。。5リットル、多い!!と思ったけど、まあ一瞬でしょうね。

薄い方を飲みきってから、濃い方を飲もうと思うので、飲んでから比較の感想を書こうと思います。。

ではではー

はてなブログは中国からアクセスできました

深センからこんにちは。

 

中国からVPNなしでログインできるブログサービスを探して早8ヶ月。

ようやく、はてなブログにログイン→投稿できることが判明。

アカウント作成はできなかったけれど、アカウントがあれば

アクセスとログインはできるようです。

 

とはいいつつ、日記も続けられないのにブログを書き続けるかは

非常に不明確ではありますが。

 

下記のことを酔っ払いながらゆるく書いていきたい。

 

  • Kotlinを使ってのアプリ作成
  • 中国の文化・酒
  • ゲーム
  • 中国語学習

では、初投稿はこのへんで。