日記 2021/04/17 (土)

今日はつくばのアルスコンサートにフレンズのメンバーが出演するということでそれを聴きに行った。 つくばに行くのはおそらく去年の 2 月のライブ以来である。 TX で 20 分くらいで着くのだが、 まあ特に用事もなかったので。

出演は 3 グループ。 最初はカントーイバラキ、茨城出身だか在住だかの人たちが集まったグループ。 こちらもひとり同期が入っているということで楽しみにしていた。 編成は管とパーカスの兼任がひとりに弦が 4 人というなかなか特殊なもの。 管とパーカスは少々忙しそうだったがマルチタスクはさすがのもので、 弦が多いのも音に厚みを出していてうらやましい。

ふたつめが今回の目当てのグループ。 選曲は一番好みだった。 自分が作曲した曲もひとつ演奏していただいたのだが、 やっぱりあれは難しいな... 神戸でも演奏したが、3 人でやるとどうしても退屈な感じになってしまう。 自分がアルバム音源に慣れているだけかもしれないが。

最後は主催のアシタバ。 こちらもさすがのクオリティで満足。 オリジナル曲だけでなく、現地の曲に日本語で歌詞をつけたり、 また Coldplay の Viva la Vida のアレンジなどもあって多彩な曲を楽しめた。

そういえば人の演奏を聴きに行くだけのイベントはずいぶん久しぶりな気がする。 予定では去年の春にひとつ下の代の卒業ライブを聴きに行くはずだったがコロナでなくなったので、 それ以前となるといつだろうか... なかなか難しい情勢だが、 またこういう機会があれば積極的に顔を出したいところ。

スーパーに寄って帰宅。 夜は特に何もせず。 買ったお菓子を両方とアイスも 2 本食べてしまった... 今月は割と節制できていたので、このまま崩れてしまわないようにしたいが。

日記 2021/04/16 (金)

遅くなってしまったので簡潔に。

仕事は Scala チュートリアル 4 日目。 内容的には 5 日目の分まで一通り終わっているので、 もし月曜日に研修担当の予定が合えば次に進もうかといったところ。 余裕をもって終われそうな気もするが、 最終日の課題はなかなか大変そうだ。

昨日そのうち Haskell を勉強したいと書いたが、 同期が以前 Haskell をやっていたことがあるそうだ。 研修が落ち着いてもし予定が合えば勉強会とかもしてみたい。

昨日は昼夜と雑な食事をしてしまったが、 今日は自炊することに成功した。 夜は Vue の勉強をかねて サイト を Vue CLI で作り直すことにした。 当初は Vue 3 系を使おうと思っていたが、 ネットの情報がすくないのと、いろいろ試したが結局うまくいかなかったので ひとまず Vue 2 で作ることにした。 まあ業務も 2 系であることだし。 ところでいまのところはもともとあったトップページとイベント一覧のページをひとつずつコンポーネントにしただけなので、 また Vue っぽいコードに書き直すことにしよう。

日記 2021/04/15 (木)

ディズニーランドが 38 周年。 また気軽に行けるときは来るのだろうか... 世間が元に戻っても普通に仕事があるから年パスは厳しいなあ。

Scala チュートリアル 3 日目。 内容は特に問題ないが、咀嚼しきれていない部分があるのは昨日までと同じ。 進捗としては明日の分の練習問題まで一通り終わっていて、 もし早めに終わった場合次の研修に進めるか? と聞いてもらっているところ。 まあ、やることはいろいろあるし急がなくてもいいのだが。

夜はすこし Vue.js も触ってみようと思って WSL にインストール。 初心者が Vue CLI で始めるのはおすすめしませんと公式に書かれているが、無視して CLI を使うことにする。 昔は vue-cli だったがいまは @vue/cli というよくわからない名前になっているらしいので、 それを npm でインストール。 プロジェクトの作成時に Vue 2 にするか Vue 3 にするかを選べるらしい。

すこし研修の資料を覗いてみたところ Vue 2 の文字が見えたので業務では 2 系を使うと思われる。 しかし自分で勉強するときにいまから 2 系を学ぶのもなあ、ということで今回は Vue 3 でやってみることにする。 まあ、Python ほどの差異はないと信じたい。 そういえば Scala も 3 が出たとかこれから出るとか。 Ruby もだっけ。

Scala、特に関数型言語の側面を勉強しているとやはり Haskell を知っていた方が楽しそうだなあという印象になる。 かなり怖そうな言語だがそのうち触ってみたいところ。 まあ、まずは業務で使う Scala と Vue に習熟するのが先だが。 ちなみに、Scala で出てきたカリー化というのは数学者 Haskell B. Curry に由来していて、 Haskell の名前もこの人からなんだとか。 開発者というわけではないらしいが。

日記 2021/04/14 (水)

Scala チュートリアル 2 日目。 昨日は広い範囲を大雑把に学ぶという感じだったが、 今日は昨日の最初の方の内容をより深くといった感じ。 今日の分の課題自体はあまり多くなかったので、 残った時間は昨日やり残した部分の確認と明日の分をすこし進める時間にあてる。 後半の方は課題も難しそうだし、 チュートリアル以外にも予定が入っていて時間も減りそうなので。

あまり様子が見えないのも微妙だろうということで times チャンネルを作ってみた。 同期 8 人中 times は自分を含めて 4 人分発見した。 特に宣伝されていない times を検索して見つけたときに参加していいものか迷う。 公開チャンネルなのでもちろん自由なのだが、 わざわざ検索して... みたいになりそう。ならないが。

夜はまたすこしピアノの練習。 最近はベタなレパートリーを増やそうとしているところで、 月の光は弾けるようになったので次は亡き王女のためのパヴァーヌをやっている。 これ本当か? みたいな和音が頻出するので弾いていて自信がなくなってくる。 隣り合う半音を同時になんてまずやってはいけないという認識だったが、 どちらの曲も割と出てくるので新しめの曲はすごいなあという印象。

Scala の練習のために AtCoder Beginners Selection を Scala で解いてみた。 Scala 自体の何かというよりはローカル環境でのオブジェクト名のつけ方だったり (提出時は Main である必要があるが手元に Main が大量にあると困る)、 標準入力を適切に受け取るのに手間取ったりというところに時間がかかった印象。 Scala 特有の、というところでいうと break がないのが難しい。 そもそも break が必要ないような書き方をするのが正統派なのだろうが、 毎回そこまでストイックになってもいられないので return で代用することにしている。 パターンマッチで再帰が書きやすいのはメリットだが、 他に目立つところはないな...

日記 2021/04/13 (火)

今日から Scala チュートリアルがスタート。 環境構築は昨日のうちになんとなく終わらせておいたので、 今日はまずは基本的な構文などをテキストに従って学んでいく。 テキスト自体はおそらく外部で公開されているものだと思う。

最初は一瞬で終わりそうだと思ったが、 後半に行くにつれて文章が長かったり問題が難しかったりで意外と時間がかかる。 チュートリアルの説明とメンター活動で 2 時間分減っていたのもあるだろうが、 結局ギリギリになってしまった。 一問余裕があったら解いてみてねみたいな問題があったのを後回しにしたまま忘れていたので、 また明日時間があったら考えてみよう。

業務では IntelliJ を使うので、 私用の Windows にも同等の環境を用意してみた。 はじめは WSL に入っている sbt と JDK を使おうと思っていたのだが、 Windows 側に入れた IntelliJ から WSL の JDK を呼んでいるのが悪いのか、 ビルドが通らない。 このあたり を見ると普通にできそうなのだが。

無難な解決策はふたつで WindowsJDK を入れるか WSL に IntelliJ を入れるかだが、 後者は GUI の設定が大変そうなので前者を採用。 ついでにターミナルも cmd.exe になってしまって悲しいので、 Git と Git Bash をインストールした。 IntelliJ の中で Git Bash を開くには {Git のインストールパス}/git-bash.exe ではなくて {Git のインストールパス}/bin/bash.exe を選ぶ必要があるので注意。 裏で何をしているのか知らないが、 Git Bash からなら Windows 上で UNIX コマンドが使えるので便利。

日記 2021/04/12 (月)

また今日から 5 日間仕事。 リモートだし、そもそも体力は使わない仕事なので身体的な疲労はあまりないが、気持ちがもつかどうか。

今日からディビジョン (「課」的な?) 配属になったので、 まずはディビジョンの決まりだったり開発環境の準備だったりで時間が過ぎる。 Scala の開発なので IDE として IntelliJ を使うのだが、 JDK の設定回りで手間取ったのでメモ。

MacScala を使うには brew install sbt するのが楽。 生の scala コマンドなどは入らないが、基本的には sbt でビルドするのと、 簡単なテストなら sbt console を使えばいいので。 で、Homebrew は勝手に OpenJDK を入れてくれるのだが、 keg-only になっていてシンボリックリンクを手動で作る必要がある。 具体的には

sudo ln -s /usr/local/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

とする。 これをしないと /usr/libexec/java_home が出てこないし、 IntelliJJDK がありませんと怒られるので注意。 普通の sbt コマンドは問題なく動くのでどこかで JDK を読み込んでくれているのだろうが、 IntelliJ はまた別なのかな。

なお、デフォルトでは新しい JDK (15 とか 16?) が入るので、 古いのを入れたければ手動で brew install openjdk@11 などとすれば OK。 上のコマンドもすこし変わる。 そもそも Java にいろいろ種類があってよくわからないが、 また調べるか質問するかしてみよう。

夜は私用の WSL にも同等の環境を作ろうと思って、IntelliJ を入れたり。 IDE は重くて困る。

日記 2021/04/11 (日)

今日も朝は起きられなかった。 昨日に続いて Mac のインターネットリカバリを試したが、どうもうまくいかない。 まず 2000 番台のエラーはネットワークまわりらしく、 これはテザリングなり適切なルーターを使うなりで解決した。 が、そのあと -1008F というエラーが出る。 ネットの情報によるとおそらくセキュリティ関係のエラーで、 「Mac を探す」が生きているとこうなるらしい。 とりあえず過去使っていた Apple ID にログインして Mac の情報を消したが、 ネットの記事と若干挙動が異なるのと、 これで本当に反映されているかが心配。 タイムラグがあるらしいのでまた明日試してみることにするか...

夕方はピアノの練習と Scala の勉強。 勉強といっても基本的な文法を眺めている段階で、あまり進んでいない。 というか、文法はやっていけばわかるので、 言語というより大規模プロジェクトの開発に慣れているかどうかという問題な気はするが... この部分は明日以降の実務で頑張ろうと思う。

夜は久しぶりに ABC に出てみたのでその感想。 A は算数、n - 1 を出力すれば OK。 B は一瞬戸惑ったが、10 桁やそこらなので好きな数だけ前に 0 を足して回文になっているかどうかを確かめればよい。

C はハマった。目的地までの距離を歩幅で割って切り上げればよいのだが、1 歩より短いときのコーナーケースに気付かなかった。誤差の問題だと勘違いして無駄なペナルティを出す。

D はやるべきことは見えているが実装が大変。全探索が間に合うので next_permutation で順列を生成してひとつずつ当てはめていくが... 数値が 10 桁になりうるので stoi ではだめで stoll を使う。ここで RuntimeError が出ていたのを、他の部分のただの Warning と勘違いしペナ、さらに問題文を勘違いしペナ...

E は久しぶりに DFS をちゃんと書けたのはよかった。が、使った色を検索するというのにとらわれて set を使おうとしてしまったのが敗因。入れたり出したりするので vector で個数を管理するべき。それから変数をグローバルに書くのが嫌なので DFS にすべて渡しているが、値渡しは遅いので書き換えない変数であっても参照渡しにすること。終了後だがこれで 1 ペナ。

F は難しそうなので見ていません。