すごいHaskellたのしく学ぼう! 第1章

リスト内包表記

-- 基本形
[x * 2 | x <- [1..10]]
-- フィルタ
[x * 2 | x <- [1..10], x * 2 >= 12]
-- 条件分岐
[if x < 10 then "BOOM!" else "BANG!" | x <- [1..20], odd x]
-- 2つのリスト
[x + y | y <- [0, 10..90], x <- [0..9]]
-- リストの値を捨てるパターン
length' xs = [1 | _ <- xs]

タプル

  • 複数の違う型の要素を格納できる
  • 型の組み合わせ自体が型になる
-- 基本形
(1, 3)
(3, 'a', "hello")

3/2~3/8 歯は治ったっぽい/疲労/人恋しい

歯は治ったっぽい

歯の疼きは木曜日くらいに解消された。怖いのでしばらく酒は飲まない。

疲労

大きめの仕事が片付き、残り物を整理しつつ新しい仕事の様子見をしている。疲労感が強いので勉強会は休みにしてDota2ばっかりやってた(勝てない)。

休暇の消化のために3月後半に長い休みを作った。何をするか、どこに行くかは未定。九州とかいいかもしれない。

人恋しい

在宅勤務が長引いているので食事のレパートリーは尽きるし運動不足になるし、おまけになんとなく鬱っぽい。生活が平坦になるのはよくない。

書くことない

週1にしても書くことないときはないなあ…

2/25~3/1 歯との戦いは続く/人生相談/自炊のレパートリーが尽きた/コロナウィルス/DDD本をもうすぐ読み終わる/30日OS本は詰んでいる/ Dota2の好調

歯との戦いは続く

削った歯が疼く感覚がある。削ったときに傷ついた神経が炎症を起こしているそうだ。順調に治ってくれればそれで済むが、痛みが出るなら神経を取ることになる。自分の体の回復力を信じるしかない。

削って1週間以上経ってから疼き始めたのはなぜだろうと考えると、日曜日の飲酒がトリガーのような気がする。やはり酒は体に悪い。虫歯が発覚してから菓子も間食もパタリとやめてしまった。

人生相談

振り返ると健康問題の多い1年間だった。まだ終わってないが。

  • ドライアイ
    • 治ってないし仕事変えない限り治る希望もあまりない。目薬でごまかしてる
  • 大音量ライブで聴力低下
    • 薬を飲み続けて2週間くらいで治った
  • 高熱のあと咳が1ヶ月くらい続いた
    • うがいを徹底したら治った
  • 親知らず抜歯
    • 抜けば終わりなので実は一番ラク
  • 虫歯
    • ぎりぎり神経を取らずに済むタイミングで発見できてよかった…?

会社員になって負担が増えたのもあるだろうし、加齢による不連続的な健康力(?)の低下が25歳で発生したというのもあるだろう。加齢というのものにどう相対すればいいのか不安になってサークルの先輩に人生相談に乗ってもらった。

自炊のレパートリーが尽きた

在宅勤務が2週間。これまでは朝はパン・昼は外食で夜だけ自炊だったから鍋の連打でも耐えられたが、在宅勤務だと昼も夜も自炊なので鍋にうんざりしてしまった。かと言って自炊に手間をかける気力もなく、困っている。

コロナウィルス

意識してやっている対策は帰宅時の手洗いくらいだ。若くて健康な男なので過剰に心配する必要はなかろう。ただし高齢者に移すと厄介なので、実家に帰る予定をやめようか悩んでいる。

学校が休みになるとのことで、大事感が出てきた。いろいろな会社が休みに入ると物流も滞り、食料が不足する心配がある。とりあえず米とスパゲッティを多少備蓄用に購入した。

DDD本をもうすぐ読み終わる

明日の読書会で読み終わる予定。記録を見ると読み始めたのは11月15日だったので3ヶ月半かかった。DDD本は思想寄りの本だったので、次は技術寄りに倒して『すごいHaskellたのしく学ぼう!』を読もうと思っている。

30日OS本は詰んでいる

sprintfが定義できない…謎のコンパイルエラーが出る…

Dota2の好調

直近20試合で勝率75%。Legend5昇格。ようやく体が7.24環境に慣れてきた。7.23はジャングルファームを多めに取ると勝ちやすかったが、7.24はレーンのお守りとファームスペース確保のためのプッシュ・ワーディングの方が重要という感覚。

ソロプレイしかしていないので戦略に関する感覚が育たず行き詰まりを感じている。自分が部分部分で最適な動きをするだけでは限界がある。チームをどうやって勝たせるかを考えられるようになるためにはパーティプレーの経験が必要な気がしてきた。

2/18~2/24 在宅勤務/過剰な健康への不安

在宅勤務

すでに発表されている通り弊社は在宅勤務期間中だ。僕はソフトウェアエンジニアの一般社員なので仕事に占めるコミュニケーションの割合が低く、在宅勤務でもそこまで不便を感じていない。エンジニア職以外の事情はよくわからないし、エンジニアでもリーダー級以上になるとミーティングが多くあるのでなかなか大変なところがあるのではと思う。

あえて不便なところを挙げると、オフィスが使えない分自宅の環境に左右されるところか。自宅のPCデスクはかなりリソースを投じて強化してきたので問題ないどころか会社以上に快適。だがネット回線は時間帯によって不安定でイライラする。自宅の周りに飲食店がないので食事に変化がなくなるし(自炊のレパートリーが少ない)、運動不足にもなる。通勤が不要なぶん1日あたり80分くらい時間が浮いてるので、その時間を使って散歩でもすればいいのか。でも花粉のシーズンだからなあ。

過剰な健康への不安

先週の虫歯の処置以降、なんでもない歯の感覚がどれも虫歯の兆候なのではと思えてしまって不安だ。歯医者では処置した歯以外は問題ないと言われているが、それもあまり信用できない気分。一般論として医者は信用すべきなんだが。

もともと僕は健康を損ないたくない、特に永続的にダメージが残るような病気にはなりたくないという心配が強すぎる。年齢的に考えればこれから健康は失っていく一方だというのに、バカバカしい。

ちゃおネイキッドプロジェクトの進展

自動デプロイ

Spotify機能のためにredisを立ててdocker-composeで連携するようにした。これに伴いデプロイの手順が変わったので.drone.ymlを調整した。docker runに複雑なオプションを載せまくるよりもdocker-compose.ymlに書いてしまう方が楽だし1コンテナでもdocker-composeを使うべきなのかもしれない。

CSSレイアウトのお勉強

Spotifyで聴いている曲を表示できるようになったので、画像・タイトル・アーティストをいい感じにレイアウトしたくてCSSのお勉強をした。MDNのドキュメントが大変参考になった。というかCSS系の情報はググってもノイズが多すぎる。

勉強のためにstyled-componentsでCSSをTSの中で記述してみた。ファイルの中身がカオスになる感覚は否めないが、コンポーネントとスタイルの結びつきが強くなるのは使いどころによっては便利なのだろう。特にwebpackを弄らずとも導入できるのはよい。

bundleサイズ削減

bundle analyzerで見てみるとmomentのタイムゾーンとかlocaleのファイルがすごい容量食っててビビったのでググって削減した。効果が数字で見えるのは楽しいのだが、webpack.config.jsがどんどん複雑になっていくのはつらい。

今後の野望

  • 監視・ロギングの強化
  • 様々な自動投稿機能がついたTwitterタイムラインのようなサービスにしていきたい

日記毎日書くのやめる/歯との戦いリターンズ/横浜中華街/ちゃおネイキッドプロジェクト

書いてた日記が操作ミスで全部消えてブチギレてるので簡潔に。

毎日日記書くのやめます。労働者やってると書けることがないので。今後は週1。

2/10~2/17

歯との戦いリターンズ

定期検診で虫歯発見。前回の検診で見落としてなーい?不信なので病院変えます。治療はあっさり。でも永久歯削るのは悲しい。

横浜中華街

日曜は所用で横浜へ。ついでに中華街の『大連餃子基地ダリアン』で餃子や春巻きを食べてきた。餃子は皮が厚く内側にしっかり肉汁が詰まっていてよい。春巻きは具がどろっとしていてよい。

ちゃおネイキッドプロジェクト

sencha.chao.tokyoのこと。僕の行動をことごとくデータ化して蓄積・公開していくプロジェクトだ。Spotifyで聞いている曲を載せるためにディレクトリ構造が大幅に変わり、自動デプロイが死んでしまった…

SpotifyAPI実装記

2/11(火)

自宅にこもってSpotifyNowPlayingをホームページに表示する機能を作っていた。

Spotifyのaccess_tokenをredisで保持することにしたのだが、そうすると本番環境にもredisを用意せねばならない。docker-composeで連携させることになるだろうが、デプロイフローをまるごと変えなければならないので大変だ。

クライアントとサーバーのアプリケーションをどういうリポジトリ構成で管理するかも難しい問題だ。クライアントはReact、サーバーはexpressなので両方ともTypeScriptであり、型の共有などのメリットは活用したいが、両者を近づけていくとビルド周りの設定が煩雑になりそうだ。

既にサーバー側のビルドがなぜかクライアント側の型エラーで落ちる現象が起きている。おそらくtsconfigを共有しているせいでクライアント側のコードまでincludeしてしまっているからだろう。

OAuth認証も難しい。僕のSpotifyアカウントでリソースへのアクセスを許可する必要があり、これはブラウザからしかできない。よってその工程までは手作業で行ってからaccess_codeをconfに記入し、アプリケーションを起動することになる。