ぶらっ記ぃ

日本語の練習をしています

【ぽえむ】今週やったこと(10/30~11/5)

ScalaとRのアドベントカレンダーに応募してしまった。

文章を書くのが苦手なのはこのブログでもTwitterでも見て取れると思う。 (大学を出ていないので、こういうのに不慣れなのは尚更である) とはいえ、いつまでも苦手なままではいかないなーと…。

何かこう、書きやすいお題がないかなーと考えていたところ、 「この一週間で(プログラムを)書いたこと、やったこと」を書くのがいいのではないか と、思い立ったところで筆を執った次第である。

というわけで、以下ポエム

読書

データサイエンティスト要請読本 登竜門編

データサイエンティスト養成読本 登竜門編 (Software Design plus)

データサイエンティスト養成読本 登竜門編 (Software Design plus)

読もう読もうと積んでいたので、一気に4章まで読んだ。
とはいえ、コマンドライン操作や基本的なデータベース知識など、
ある程度知見がある内容が多かったので時間はかからなかった。
5章からはRStudioやJupiterが絡んでくるので読むのが楽しみ。

Trailhead

お仕事柄Salesforceの勉強をしている。

今は1日にChallenge(問題)を3つ解くというペースでやっている。
基本的に通勤電車の時間で手を付けているので、ハンズオン系のモジュールはあまり手付かず…

とりあえず年内にレンジャー(バッジ100個)は行けるのではないかなぁという見込み…

fish-shell

`hub` コマンドの保管を入れた

https://github.com/NomadBlacky/fish-config/commit/7acd597f2289bf999d6e93fa274baf3247896876

Ansibleで追加した保管設定 をリポジトリに含めた。

fishはこういった保管を手軽に定義できるのがいい…
(自分で書いたことあるとは言ってない)

SalesforceDXの保管とか多分ないよね…?
`sfdx force:doc:commands:list` からコマンドの一覧は取ってこれるので、ちょっと頑張ればできるんじゃないかなぁ…

Emacs

faceの設定をいじるなど

https://github.com/NomadBlacky/.emacs.d/commit/d7936f708d9ebda6423f2fb5b319e15b99310f4f

見た目の設定とかいちいち設定ファイル書くのめんどくさいなーとか思ってたのだけど、
`customize-face` でインタラクティブに設定できることを最近知ってツエーってなった。

org-modeを使い始めた

先日、 Emacs実践入門 出版記念イベント に参加して、org-modeの最強たる故を肌で感じた…
というわけで、この文章もorg-modeで書いている。

markdownへの変換も `org-md-export-to-markdown` で一発。
ついでに目次もつけてくれちゃう…

org-mode道の第一歩を踏み出した。

Scala

enum的なものをScalaで使う方法を学んだ

https://github.com/NomadBlacky/scala_samples/blob/8f0c5dfbf2f48e5236d04480ed6178d9d81c09f9/src/test/scala/org/nomadblacky/scala/samples/scala/EnumInScalaSpec.scala

現状、Scalaenumをサポートしていないので、自分で実装する必要がある。
Enumerationを使う方法は簡潔だけど、Javaenumのような値や振る舞いを持たせるのに不便…
パターンマッチでも網羅性を担保できない。

基本的には sealed abstract class を使う方法が良さそう。
冗長になるけど仕方ないか…

Dottyまだかなー

otogame-updater

https://github.com/NomadBlacky/otogame-updater/compare/4fa005d9172d90cdafa9d57e89ae8d65c18fa254...master

音楽ゲームのレーティングやスコアの更新をチェックしてSNSに投げるーってやつ。
ServerlessFrameworkにScalaサポートがあったので、サーバレスやってみたーという感じ。
scala-scraperでスクレイピングしてDynamoDBに溜め込んで、更新があればTwitterに投げる。

今週は上記のEnumeration周りでハマったり、
関数を切る単位を間違えたせいで、えらくデカくなってしまった関数をリファクタリングしたりなどした。

やはり関数をより小さく保つのは改めて大事だなーと。
しばらく悩んで放置気味だったのですっきり。

とりあえず、ドメインとデータ取得のロジックはひととおり出来た感じ。
あとは、Lambdaのハンドラを実装すれば最低限求めてたものは完成…とおもったが、
楽曲の情報をユーザーIDと楽曲IDをキーにしたいと思ったら、DynamoDBじゃ微妙なんじゃないかなーと…さあどうしよう。

DynamoDBのStreamで更新の通知楽勝じゃーんとか思ってたけど甘かった。
そもそもNoSQLの使い方をまともに知らずに使った結果でした。
設計正しい知識を持ってちゃんとやろうね。趣味だから許される。

来週やること

  • Rに入門する
    • 会社の人にRの本を借りたので進めたい。今日やるつもりだったけど、otogameの方に時間を取られてしまった。
  • データサイエンティスト要請読本を読みすすめる
    • 上記と内容がかぶるので、読み比べながら実際手を動かしたいなーと
  • scalikejdbcまわりを調べる
    • (いままでScalaのORM触ったことなかったなんで言えない…)