その先へ

setohの色々殴り書き

今年飲んだビールとか

ハロー、@seto_hi です。

この記事はBeer Advent Calendarの23日目です。

今日はサッポロクラシックを飲みながらこの記事を書いています。
今年1番飲んだビールはサッポロクラシックだと思います。趣味は北海道なのですが、今年もなんだかんだ10泊くらいはしました。毎日何杯飲んだことやら。
最近近所のスーパーでなぜか売っていてありがたい限りです。
今年は一時期味が薄かった気がするけど気のせいかな。
f:id:seto_hi:20201223202419j:image

今年飲んだビール

1月は元気に出社していたようです。

 3月も元気に出社していました。

このくらいまではよく飲みに行っていたんですが、3月半ばに完全に在宅勤務になってからは最近までほぼ全く飲みに行かなくなりました。
ビアバーと呼ばれるようなところには今年は数回くらいしか行かなかったかなと思います。その反動で飲み過ぎることもしばしばありました。

とはいえ在宅でもお酒を楽しみたいと思ったので、それなりの頻度でお酒を取り寄せていました。

4月にY.MARKET BREWINGさんのビールを取り寄せました。
12本入りの詰め合わせだったのですが、限定だったらしく今はラインナップが変わっているようです。
前職の同僚と同じセットを買って、オンライン飲みで同じビールを飲むということをしたりしました。良い試みだったのでまたやりたいですね。

なぜか同じ日によなよなさんのクラフトビールはじめてセットも買っていました。当時は4種5本だったけど今は5種5本らしいです、いいな。利益出てるのか不安になる安さ。
あとクラフトザウルスは単品でも注文しました。苦み強めで好きでしたね。

この頃に近所のスーパーに閂IPAが売っていることに気付いて行く度に買ってました。夏場はよくベランダで飲んでました。
あとSORACHI 1984もよく買ってます。缶よりもサーバーの方が香りが良くておいしいんですが、なかなか外出ができないので缶で我慢していました。独特の香りと味がすごく好きなんですよね。

最近はよく行く旭川の酒屋さんから取り寄せたビールを飲んでます。
忽布古丹を3種類ほど取り寄せました。だらっと過ごしたい休日に一昼夜を飲んだところ最高にマッチして幸せでした。
前回のブログで書いたノースアイランドさんのビールも良かったです。
ちょっと今は旭川に行きづらい状況ですが、早く行ける状況になって欲しいです。店員さんとまた北海道のお酒事情を話したいですね。あとお酒買うのは得意なので経済回したいです。

こう見ると普段飲まないようなビールをお取り寄せしてのんだりしたので、なんだかんだ勉強になった1年だったのかなと思います。
勉強熱心なので、引き続き精進していきたいと思います。

 

家で飲むビールも好きなのですが、やはりお店で飲むビールは違ったおいしさがあるかなと思っています。
来年はいっぱい飲めるといいですね!

以上!

 

飲酒プログラミング advent calendar 13日目

ハロー、@seto_hi です。

この記事は飲酒プログラミングの13日目です。
父の誕生日です。ありがとうございます。

今日は日中に副業をしていました。

 今日も考古学の知識が役に立ちました。知識は強いですね。

さてお酒を飲みつつ、プログラミングをしたいきたいと思います。

まずはお酒

さて今日の飲酒ですが、ノースアイランドさんのビールです

beer.ocnk.net旭川にお世話になっている酒屋さんがあり、好きだと思うので!と言われたので買いました。商売上手ですね。
厚岸は2回行ったことがあり、やはり牡蠣が絶品です。
道の駅のコンキリエでは牡蠣にウイスキーをかけて食べるアイラ的な食べ方もあり贅沢です。ウイスキーを書けて食べるアイスもあり本当に贅沢です。
雑に食べたいならエーウロコもいいです。市場なので安いし、自分でレンチンして好みの熱の入れ具合で牡蠣を味わえて楽しいです。エンターテインメントです。

能書きはさておき、ビールをいただきます。
まずはW-IPAから。しっかりとした苦みがガツンと来るビールです。香りよりも苦みがしっかりとあります。お料理と一緒だとより楽しめます。脂っこい物でもスッキリと流してくれます。いいですね。

次はbarrel agedです。先ほどのビールを厚岸のNEW BORN2のウイスキー樽で寝かせたものです。
なんだこれは。前情報がなかったら全く同じビールだと思えないですね。あれほどあった苦みが一切ない。
匂いは風邪薬と言われるような甘さがあり、味はかなりスモーキーだけどやはり甘く、W-IPAにあった苦みは全くないです。ウイスキーよりもスモーキーなんじゃないかな。甘さはバーボン樽から来てるのかも。は〜〜〜面白い。

バーボン樽と言えば、家にバーボン樽で貯蔵した日本酒があるので比べます。

fukugao.shop-pro.jpうーん全然違う。同じバーボン樽でもオークが別のものなのかな。それとも寝かせたお酒の味なのかな。勉強不足。来年はバーボンも勉強します。

樽熟成の日本酒ということで、華鳩の貴醸酒オーク樽貯蔵です。
2年くらい常温で寝かせているのでだいぶ古酒感も出てますが、貴醸酒独特の甘みと酸味があって好きです。オーク樽感は抜けてしまいましたがこれはこれで好きです。

プログラミング

完全に忘れた。もういいでしょ。副業頑張ったもん。眠いから寝ます。おやすみ。

以上!

島根の日本酒 天穏を楽しむ #始めよう島根のお酒 #板倉酒造 #天穏

ハロー、@seto_hi です。

島根県の板倉酒造さんの天穏が手に入ったので、飲みます。

なんで手に入ったの

初めての島根の日本酒 トライアルキャンペーン で当選しました。

初めての日本酒と言いつつ、飲んだことがある人も応募できるキャンペーンです。
最近島根の日本酒飲めていないなと思って応募してみたところ運良く当選しました。ありがとうございます。

感想をSNSに投稿することが条件なので、せっかくの機会と思い真面目に書きます。(ここまでちゃんと書いてとは言われていないです、趣味です)

島根の日本酒と私

島根の日本酒との出会いは多分10年前だと思います。
同郷の親友が島根の大学に行き、友達に会いに松江に遊びに行ったときに蔵巡りをしました。
そのときは松江にある国暉、豊の秋(米田酒造)、李白の3つの蔵に行きました。
まだあまり日本酒に詳しくない頃だったのですが、国暉の純米吟醸が甘みと香りうまみのバランスが良く、お値段も安くて衝撃を受けました。自分を日本酒沼に招き入れてくれた日本酒の1つです。

2015年にも松江に行き、蔵巡りをしました。
その際は李白のベニバナ酵母の日本酒が香りが良くおいしかったことを覚えています。

ところで知り合いの @ymnd が島根の日本酒好きです。このキャンペーンを見つけてくれたのもymndです。
彼はどちらかというと島根の県央あたりのお酒に詳しく、そちらには旨みのある日本酒が多くてクセになる日本酒が多い印象です。食中酒や燗でおいしくいただくことが多いです。

お酒の情報

今回いただいたお酒は天穏の純米酒です。
天穏は以前飲んだことがあり、旨みがよく出ているという印象でした。
お米は奥出雲の五百万石を60%に削ったものです。地元の素材で仕込む地元のお酒が好きなのでスペックだけでお酒が飲めます。

f:id:seto_hi:20201029215905j:image
f:id:seto_hi:20201029215918j:image

https://www.tenon.jp/tenon/

蔵のサイトを見ましたが、飲み方や保管の方法まで書いてあってとても素晴らしいです。良い物を作っても正しく使って貰わないと意味がない、自分の仕事でも感じています。
無窮天穏は技術の塊とも言えるお酒なので、技術者としては見ているだけで飲みたくなってきますね!

とか言いつつ自分はあまり銘柄やスペックに興味がなく、おいしいお酒ならなんでもいいです。
好きな蔵でもおいしくなければ否定的です。例えば今年だと造りを大きく変えたa...おっとそろそろ飲みましょうかね。

飲んだ

まず常温(24度)でいただきました。

写真には残らない程度ですが、薄く黄色が買っています。
口当たりはまろやかで柔らかさがあります。味はスッキリとした中に旨みがあります。イメージしていたよりも酸味が強めです。お猪口で飲むと酸味がやや控えめになりますが、平盃で飲むとより酸味を味わえます。やや苦みもあります。ウォッシュ効果がある食中酒という印象です。

醤油系の料理と合わせてみたところ、非常に相性がいいです。旨みが増幅されるようです。
夕飯はミートボールのトマト煮だったのであえて合わせてみましたが、イケます。そこまで強い味付けではない料理ですが、お酒も全然負けていません。

次は冷やしてみました。控えめに15度くらいです。
鼻に抜ける酸味が心地よいですが、やや苦みが増します。個人的には常温の方は好きです。もうちょっと冷やしてもよかったかなと思います。

最後は燗です。
50度まで上げてみましたが、おいしいです。これは好きです。甘さと酸味と苦みのバランスが抜群ですね。もう少し旨みが出てくると思いましたが、ほどほどです。
温度が下がってくると苦みも消えて旨みが出てきます。50~40度で楽しむとよさそうです。奥が深いですね。

料理のために温度計を買ったのですが、完全にお酒の温度を見るために使われています。全く予想していませんでした(棒読み)

 

あえて悪いところを挙げると、常温ではややピリピリとしたアルコールを感じます。まだお酒としてなじみきっていない感じがあります。
個人の趣味で、一旦3ヶ月常温で寝かせてみようと思います。恐らく6~9ヶ月でまとまってくるのではないかと思います。蔵も熟成を味わいたい場合は常温と言っているので安心して寝かせられます。恐らくアルコールがなじんでまろやかになって、苦みも抜けて良く伸びくれると思います。

最後に

しっかりと日本酒を味わうと学びが多いですね。
調べていくうちに飲みたい日本酒もいくつか思い浮かびましたし、島根の日本酒はやはり深いなと感じました。
サンライズ出雲に乗れば東京駅から乗り換えなしで行けるというアクセスの良さ(※個人の感想です)も魅力です。サンライズは日本唯一の定期運行している寝台特急なので乗るだけでワクワクします。
松江駅近辺と出雲市駅近辺に日本酒の蔵がいくつかあるので、また巡りに行きたくなってきました。名産のしじみとも合わせたいですね。
まとまらなくなってきたので、今日はこのくらいにしたいと思います。

以上!

デグレを減らすリファクタリング手順

ハロー、@seto_hi です。

最近は業務でリファクタリングをやっており、できるだけデグレをせずにリファクタする方法を考えてきました。
言語化のため、記事にしたいと思います。

リファクタリングの分類

まず、リファクタリングは2つに分類ができると思っています。
動作の変更がない修正(非破壊的修正)と、動作の変更が入る修正(破壊的修正)です。

例えばメソッドを別クラスに移動させたり、クラスに切り出したりするだけではほとんどの場合に動作の変更がないので、非破壊的修正と言えます。
アルゴリズムを変えたり、コードを全部書き換える場合などは破壊的修正になります。

では非破壊的修正だけすればいいのか

非破壊的修正だけを繰り返せば理論的にはデグレは発生しません。
しかし現実は破壊的修正も行わないとコードは綺麗にならないと思います。

破壊的修正の安全性を高める方法があります。テストをすることです。
可能な範囲はテストを書き、コードだけでカバー仕切れない場合はアプリを実行して手でテストをします。
破壊的修正によってコードを全部書き換えたとしても、テストで動作が保証されていればデグレを起こす可能性は下げることができます。
テストで動作の同一性が完全に保証されている場合はコードを全て書き換えても非破壊的修正と言えると思います。

手順化

リファクタリングをするにあたって大事なことは、手順を明確にすることです。
特に、各手順が非破壊的修正と破壊的修正のどちらであるかを分類することが大事です。
デグレが発生しやすいのは破壊的修正の部分であるため、そこを厚くテストするなどといった対策を立てやすくするためです。

現状の実装から理想的な実装に持って行くにあたり、どんな修正が必要なのか、手順に依存関係はあるのか、どこに破壊的変更を入れる必要があるのか、を洗い出して手順に落とします。
だいたいの場合は一段階で理想的な実装に持って行くのは難しいと思います。非破壊的修正を数手順行い、破壊的修正の範囲をできるだけ小さくすることによってデグレの可能性を減らすことができます。

実例

簡単な例ですが、MVCのコードをAndroidRecommended app architectureにする例を考えます。

まずは通信などのロジックをRepositoryに切り出します。これはロジックをクラスに切り出すだけなので非破壊的修正です。AndroidStudioのRefactor機能を使えばより安全にできると思います。
ロジックが気に食わない場合、Repositoryのテストを書いてから修正をしていきます。これは破壊的修正ですが、テストによってデグレの可能性を減らすことができます。

次にViewModelを作成します。
通信などの処理をViewModelからRepository経由で行うようにし、結果をLiveDataに入れ、ActivityなどでObserveします。これは破壊的修正です。
Repositoryが返す結果によってLiveDataに何が入る、というテストを書くとViewModelに関する処理はデグレの可能性を減らすことができます。
ViewModelの動作は保証できても、ActivityでObserveする部分でデグレしている可能性が残ります。テストでも保証することが難しい部分であるため、この部分については実機でのテストなどで保証をすればよいのではないかと思っています。

こういった手順を踏めば、デグレを起こす可能性を減らすことができます。

 

注意すべき点を意識し、安全なリファクタリング生活を送りましょう。

以上!

グロースで陥りがちな判断

ハロー、@seto_hi です。

最近は業務でグロースをやっているのですが、我々は人間なので間違えた判断と意思決定をしがちです。
よく陥るポイントを書きます。

「あまり使われていない画面だからリニューアルして伸ばそう」

動線が悪くて使われていない画面の場合、リニューアルしても使われないと思います。
ポップアップなどで機能にアクセスさせようとしても、ユーザーは見流す可能性が高いと思います。あとポップアップは邪魔です。

そもそもユーザーのニーズが捉えられていない画面なので使われていない場合、リニューアルには効果がないと思います。

「なぜ使われていないのか」という原因を分析することが大切です。

「よく使われている画面だけど使い勝手が悪そうなのでリニューアルしよう」

よく使われているならわざわざリニューアルして、混乱を招かなくてもいいのではないでしょうか。

また「使い勝手が悪い」ことと、「こちらの意図した通りにユーザーが動かない」ことは別の話です。
使い勝手が本当に悪いかは定性的に調べる必要があると思います。

「こういう機能を使わせたいから、動線を強化しよう」

こちらの意図した通りにユーザーを動かす事はできません。押しつけても無駄です。

「ユーザーに使わせる」のではなく「ユーザーが使う」ものを作るべきです。

 

上記のような話は画面遷移率や機能の利用率だけを見ている場合に起こりがちです。
定量的な指標だけでなく定性的な指標にも目を向けて、その結果として上記の判断をするのであれば適切である可能性は高いと思います。
ユーザーの本当に欲しいものを作っていきましょう。

 

以上!

コンテキストスイッチとの戦い方

ハロー、@seto_hi です。

大量のタスクを抱えた結果、コンテキストスイッチにコストを払っている暇がなくなりました。

マルチタスクになって並列で仕事をこなせればいいのですが、自分はシングルスレッドの性能を高めるように生きてきたのであまり得意ではないです。
シングルスレッドで多種のタスクを行うには、コンテキストスイッチから逃げることはできません。

自分がどのようにしてコンテキストスイッチと戦っているかを書きます。

 はじめに

コンテキストスイッチを上手に行うにはある程度の慣れが必要だと思います。
自分も以前は得意ではありませんでしたが、やっていくうちに慣れてきました。

スイッチングコストの原因

コンテキストスイッチが大変なのは、恐らくタスク間のスイッチングコストが高いことだと思っています。
この原因を考えた時に、自分の中では大きく2つあると気付きました。

まずはやる気が出ない問題です。
新しいタスクをやらなければと思っても、なんとなく手が動かなくて、タスクに取りかかれないという状態です。

もうひとつは集中できない問題です。
新しいタスクをやり始めても前のタスクのことや次のタスクのことを考えてしまい、あまり集中できないという状態です。
あとはデータ分析→UIデザインなど、全く違う分野のタスクをやると集中することが難しいです。

これらに対処すればスイッチングコストを下げることができるはずだという前提で対策を行っています。

対策

前提

睡眠をしっかり取る、血糖値をコントロールするなど、パフォーマンスが出る体調にしておくことは大前提です。

また、コンテキストスイッチができると思い込むことも大切です。
できないと考えていると、実際はうまくっていても否定的に見てしまうことがあります。
自分はコンテキストスイッチができる、生まれながらのコンテキストスイッチ名人、スイッチングコストゼロ太郎だ、と思いながら毎日仕事をしています。

対策1 : 環境を変える

「今から自分は違うタスクをやるんだ」と意識するために、環境を変えます。

座り作業から立ち作業にしたり、BGMの音楽を変えたり、飲み物を変えたりと色々な環境を変えています。最近は家なので服装を変えたり髪型を変えるまでやることもあります。

トイレに行ったりキッチンで飲み物を準備したりと一旦物理的にデスクから離れるのも効果がありました。
あとは無意味にジャンプしたりストレッチしたりもします。

対策2 : とにかく手を動かす

「 何かをやり始めるとやる気が出る」という脳の働きは色々なところでよく言われています。自分はこれが当てはまると思うので、とにかく手を動かすようにしています。

とりあえずテストを実行してみたり、空のファイルを作ったり、クラス名だけ書いてみたり、関係のあるURLを開いたり、とハードルの低いタスクで手を動かします。
文章などを書く場合は最初からちゃんとしたものを書こうとせず、とりあえず箇条書きでひたすら書き出します。
そうしていくうちに徐々に「次は○○をするか」という思考になっていき、エンジンがかかることが多いです。

それでもうまくいかない場合は「もうちょっとだけやってみるか」と自分に言い聞かせて手を動かし続けると自然と集中できる気がします。
本当にダメな場合には「 やり始めるとやる気が出る」という強く法則を意識して、歯を食いしばってやり続けることもあります。こういう場合はだいたい疲れているので、急ぎでない時は休憩をした方が後の効率が上がると思います。

対策3 : 飛んできたタスクを即打ち返す

色々タスクが溜まってくると、タスクが溜まっているということだけで頭がいっぱいになります。

タスクが溜まっていなければこれに悩むこともないので、5~10分程度で対応できるタスクは気付いた瞬間に打ち返すようにしています。
5~10分で終わるタスクは調べることや考えることが少ないタスクのため、割り込みで作業をしてもあまり脳への負担にならない気がしています。

対策4 : 書き出して脳内から消す

簡単なタスクは即打ち返すことにしても、そんなに簡単なタスクばかりではありません。
溜まってしまったタスクに関しては、とにかく書き出すことでこれに対処しています。

1~2日以内に終わらせる仕事はslackの分報にメモし、それ以上かかるタスクはTodoistに積んでいます。slackのリマインダーもよく使います。
これによってやり忘れることもなく、溜まったタスクを意識することが減りました。

また、1日の業務の終了前に翌日のタスクを分報に書き出しています。
やはり始業直後は脳のエンジンがかかりにくいと思うので、何も考えずにやることが決まっているということは楽です。

最後に

これは自分なりのコンテキストスイッチのコストを減らす方法であり、万人に通用するものだとは思っていません。

コンテキストスイッチが苦手」で済ませずに、細かな原因を分析して対策をすれば各個人に合ったコンテキストスイッチの方法が見つかる可能性が上がると思います。

 

以上!

週5でペアプロ生活

ハロー、@seto_hi です。

 

弊チームではペアプロ・モブプロを積極的に行っており、特にAndroidチームではここ2ヶ月はほぼ毎日1時間半くらいペアプロをしています。
目的達成のためにやや独特なやり方をしているので、意図や手法を書きたいと思います。

なぜペアプロを始めたか

何回か書いていますが自分は事業支援チームに所属しており、現在支援している電子書籍チームでは開発レベルの底上げを期待されています。
チーム勉強会を開催していましたが実践レベルまで教えることは難しく、それを解決するためにペアプロをやり始めました。

目的

ペアプロのやり方や取り上げる内容は目的によって異なってくると思っています。 

弊チームのペアプロの目的は知見・経験の効率的な伝授実践です。

弊チームは現在、アプリ全般のリファクタリングを行っています。
誰が実装しても同じようなリファクタリングができる状態の実現、チームの全員が交換可能な人材になるためにペアプロを使っています。

ペアプロで何をやるか

自分がペアプロについて考えているのは、知見の伝授と実践という目的においては全てをペアプロで行う必要はないということです。

ペアプロでやることは目的の達成のために必要なことだけ絞っています。
また、ペアプロをすると2人分の工数を消費してしまうので、1人でやった方が効率が良いことは1人でやります。

ペアプロ・モブプロは複数人で仕事をしたり、説明しながらコードを書くなど普段と違う環境のため疲れますし、結果にかかわらず「仕事した感」が出やすいと感じています。
この感覚にとらわれず、本来の目的が達成できているかという点に集中することが非常に大事です。

ペアプロでやらないこと

以下はあくまで弊チームの例です。

・不具合調査 (普通の問題ならば個人で対応した方が早い、現状は単純なバグが多くチーム全員が詳細な内容を知る必要がない)
・新しい技術の勉強 (個々が勉強して他のメンバーに教える方が効率がいい)
・雑多な修正 (個人で実装した方が効率が良い、ペアプロでやるほど共有したい内容がない)

ペアプロのやり方

前準備

ペアプロの題材選びには時間をかけています。
弊チームでは自分がリファクタリングの手順をドキュメント化しているので、その手順が適用しやすい画面をペアプロで取り上げます。

また、ペアプロの本質に関係のない修正などは先に修正を済ませてしまうこともあります。

ペアプロ本番

だいたいの場合、1つの手順書について2回ペアプロを行います。

1回目は瀬戸が手順書の説明をしつつ、実装も中心的に行います。
イメージ的には3分クッキングみたいなもので、おおまかな手順を掴んで貰うためのペアプロです。「実装しておいたものがこちらです」みたいなこともやります。

2回目は同僚に手順書通りに実装をしてもらいます。
ここで同僚が一切の迷いなくスラスラできるということは(主に瀬戸の説明不足によって)あまりないので、手順書を修正したり3回目のペアプロを行ったりします。

ペアプロ中の意識

コーディング担当のときは、とにかく喋ることを意識しています。
他人が無言でコードを書いているのを見るのは(オンラインだと特に)つらいので、無駄なことでも喋ります。
・何をしているか
・どういう意図か
・関係するコンポーネントの雑学
などをよく喋ります。

あとはAndroidStudioの機能を使うことも意識しています。
特に「refactor」メニューには色んな機能があるので、試してうまくいったりうまくいかなかったりしています。

同僚がコードを書いているときは質問をしまくります
「○○ってどういう動作するんでしたっけ」という質問をよくしています。
間違えたときだけ質問をすると質問をした際に身構えられてしまうので、正しい実装でも質問をしています。
正直質問される側は大変だと思うので、心理的負荷を下げつつ質問できるような手法があったら知りたいです。

 

こんな感じで毎日ペアプロしています。

以上!