タグ 貳佰伍拾陸夜日記
人気順 10 users 50 users 100 users 500 users 1000 users拡張可能レコードのライブラリrecord4sについてScalaMatsuri 2024で発表しました - 貳佰伍拾陸夜日記
ScalaMasturi 2024で, 拙作の拡張可能レコードのライブラリrecord4sについて発表してきました. 発表で触れられなかった点も補足しながら, 内容を文章にしておこうと思います. とくにrecord4s以外のレコード実装との比較についてはこの記事での完全書き下ろしです. モチベーション Scala 3の標準機能による解決 理想 reco... 続きを読む
株式会社一休に入社しました - 貳佰伍拾陸夜日記
転職のお知らせ、あるいは個人の日記です。 6月から以下のように所属変更となっています。 From 株式会社はてな To 株式会社一休 マネージャではなく、とくに役職のないソフトウェアエンジニアとして働きます。いわゆるIC (individual contributor)というやつです。 きっかけ はてなには新卒として入社して以来11年も勤... 続きを読む
Scala 3のマクロTips 100連発 - 貳佰伍拾陸夜日記
この記事はScala Advent Calendar 2023の12日目だ! Scala 3のマクロを書く上で役に立つ, メタれたTipsたちを紹介するぜ! 勢いに任せて書いていくからサンプルコードがちゃんと動かなかったらごめんな. 一応, Scala 3.3.1を想定しているぞ. マクロ 1. メソッドをマクロとして定義する 2. マクロの本体を実装する 3. マク... 続きを読む
あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記
この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. た... 続きを読む
部分型における変性と極性 - なぜScalaの変性は+や-で指定するのか - 貳佰伍拾陸夜日記
この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 発端 こういう話題がありました. Scala は共変が + で... 続きを読む
テックリードを再生産可能にする - テックリード養成講座をやっている話 - 貳佰伍拾陸夜日記
この記事はEngineering Management Advent Calendar 2022の7日目の記事です. 今はエンジニアリングマネージャ(EM)としてエンジニアリングマネジメントの4領域(プロダクト・プロジェクト・テクノロジ・ピープル)すべてを見ていますが, それ以前は長い間テックリードをやっていました. その経験を活かして, 最近は後進を育... 続きを読む
方法不確実性を下げるための松竹梅メソッド - 貳佰伍拾陸夜日記
若手メンバーのスキルアップのための相談に乗っていると, うまい設計ができるようになる, 仕様の整理やメリット・デメリットの判断がうまくなる, あるいは技術の引き出しを増やすにはどうしたらよいか, という話がよく挙がる. この手の話題にいつも同じようなアドバイスをしていると気づいたので, 説明を楽にするために... 続きを読む
関数の再帰的な定義に名前付けは必要か - 貳佰伍拾陸夜日記
結論から言うと, 名前を付けることなく再帰的な関数を定義することは可能. 特定のプログラミング言語でどうかというよりは抽象概念としての関数の再帰を名前なしに実現可能かどうかという話(名前なしに実現できるプログラミング言語は存在するかという話). 発端 id:naoyaさんがこういうツイートをしていた. 再帰を書くと... 続きを読む
スクラムでベロシティを安定化するにはどうしたらよいか - 貳佰伍拾陸夜日記
このブログではあまりこういう話は書いてこなかったけど, 以前少しだけ触れたように, 僕はここ最近エンジニアリングマネージャをやっていて, こういう話題を考える機会はけっこう多い. 具体的には, エンジニアリングマネージャとして複数チームのテクノロジ/プロセス/プロダクト/ピープルのマネジメントを日々やっていて... 続きを読む
コンパイル時計算でラムダ計算の構文解析器・評価器・型推論器を実現 (Scala 3編) - 貳佰伍拾陸夜日記
またか. またなのか. 何回目だ. ということで, ラムダ計算のインタプリタの実装としては4回目くらい*1, コンパイル時計算でやるものとしても3回目くらいになってしまうけど, ラムダ計算の処理系をまた書いてしまった. 今回の目的は, Scala 3にはmatch typesという機能があり, これだけでチューリング完全なのではないか,... 続きを読む
再帰的な構造のデータの同値性判定はどうしたらいいか - 貳佰伍拾陸夜日記
数日前にTwitterで, JavaScriptのオブジェクトに対する===の挙動が初心者には難しいみたいな話を見かけた. 発端や周辺の議論をちゃんと追いかけてないからとくに出典は貼らない. たぶん元々の話は「へぇ, こういう挙動なんだ, 簡単ではないね」くらいの話だったのかもしれない. 自分のタイムラインの観測範囲では「そう... 続きを読む
テックリードの抱えるプレッシャとキャリアパス - 貳佰伍拾陸夜日記
テックリードを過去に3年くらい, まだ「テックリード」という名称が社内で正式に制度化されていない頃も含めると6年くらいやっていて, 今はテックリードを若者に譲っていわゆるエンジニアリングマネージャ(社内での名称はいまのところ「グループチーフエンジニア」)をやっている. 現役テックリードの悩みを経験者として... 続きを読む
個人/組織のOSS貢献を可視化する - 貳佰伍拾陸夜日記
社内でOSSへの貢献をもっと奨励していきたいねと話していて, そもそも普段どれくらい貢献できているか知りたくなった. 以前, 自分のポートフォリオに貢献しているOSSのリストを出すのをやっていて, ちょっと改造したら組織内のメンバー全員のものもすぐに出せそうだったのでやってみた. (というのをずっと前にやっていた... 続きを読む
Docker Quizを力技で解く - 貳佰伍拾陸夜日記
こういうのがあった: 二時間目コンテナの講義ではDocker Quizが出題。君は、すべて解くことができるか? $ docker run --rm -i hatena/intern-2020-docker-quiz #hatenaintern2020— hatenatech@はてなの技術情報アカウント (@hatenatech) 2020年9月7日 自社のインターンの課題だけど, 僕は今年のインターンには全く関わ... 続きを読む
なぜ型ファーストで考えるのか - 貳佰伍拾陸夜日記
How do you imagine a building? You consciously create each aspect, puzzling over it in stages. Inception 型なし言語に馴染みはあるものの型付言語をいざ使ってみたらどういう気持ちで書いたらいいのかわからなかったと同僚から相談があり, それをきっかけにして社内の勉強会で以下の話をしました. よく型なし vs.... 続きを読む
LSP時代のScala開発環境: Metals, Bloop (on Emacs / lsp-mode) - 貳佰伍拾陸夜日記
これまでScalaでの開発にはENSIMEを使ってきたけど, もうそろそろ頃合いだとおもうのでMetalsに乗り換えた. エディタ側でLSPのサポートが充実してきているのでこれはだいぶ簡単で, さっくり乗り換えることができた. Metalsはビルド部分は裏側でBloopを使っているので, テストの実行なんかもこれに乗っかるとだいぶ楽にな... 続きを読む
プログラムで解く数学パズル: 囚人とスイッチの部屋の問題 - 解答の自動チェックのしくみ - 貳佰伍拾陸夜日記
この記事ははてなエンジニア Advent Calendar 2018の18日目の記事です. 昨日はid:WindymeltのSmart::Argsのパーサを書いたでした. 明日の担当はid:hokkai7goです. 他の担当者の記事は割と業務っぽいものが多いですが, 今回は趣味っぽいゆるゆるのネタです. 社内でとある数学パズルを紹介したところAdvent Calendarに書い... 続きを読む
Caskはもう古い、これからはEl-Get - いまどきのEmacsパッケージ管理 - 貳佰伍拾陸夜日記
emacs秘伝のタレとなったEmacsの設定をgitで管理するなどして, 複数の環境で同じ設定を使うようにするのはかなり一般的になってきました. ただ, 使っている非標準パッケージも含めてきちんと管理しようと思うとけっこう大変です. とくに, 以下のような点はぜひとも実現したいところですが, (これまでは)なかなか難しい部分もありました. 使っているパッケージのインストールを自動化したい いろいろ... 続きを読む
ノートPCでLinuxの仮想化 - 貳佰伍拾陸夜日記
debianいままではノートPCではWindowsを使ってきた. なんだかんだで使い慣れて*1いたり, あるいはハードウェア機能をフルに活かすためには他に選択肢が無かったりした. でも最近はペンタブ搭載機でもLinuxがふつうに動いたりするし, Windowsを使っていてもどうせ仮想OSとしてLinuxを動かしていて, Windows上のLinuxをべんりに使うためのバッドノウハウが溜まってしまい... 続きを読む
Rubyで関数型プログラミング - 貳佰伍拾陸夜日記
lambda, rubyRubyでの快適関数型プログラミングライフを追求するあまり, 使えるのか使えないのかよくわからないものを作ってしまったという話. Rubyに不慣れな人や関数型プログラミングに不慣れな人に対して酷なのはまだわかるとしても, C++(というかboostでの関数型プログラミング)に不慣れな人も全力で置いてきぼりにする誰得記事になってしまった...... 経緯そもそもRubyはだい... 続きを読む
ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記
ラムダ計算は, 多くのプログラミング言語, とくに関数型言語の原形になっています. ラムダ計算について理解しておくことは, 多くのプログラミング言語の習得に役立つでしょう.ラムダ計算はチューリング完全で, 計算能力としては普通のプログラミング言語と同じです. ラムダ計算で計算を書く訓練をしておくことは, 任意の計算を関数のみを使って(他の制御構文を用いずに)書くときに役立ちます. ふつうに書いたら... 続きを読む