Magnolia Tech

いつもコードのことばかり考えている人のために。

printデバッグに絵文字を使うと捗る話

雑にprintデバッグしたい時、を使うと、赤くて目立ちますあと、目線が有るんで、「あ、ここを見るのね」ってわかって便利です(なにが?)— magnoliak (@magnolia_k_) 2022年3月21日 というツイートをしたら意外と反応が多かったので、ブログのエントリとし…

『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』は書名に偽りのない、全部入りの1冊

プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書作者:きしだ なおき,山本 裕介,杉山 貴章技術評論社Amazon 予約していたので、早速届きました。 Javaを使ってプログラミングを学ぼうとする人は、とりあえずこれ買っておけば…

文法を学んだ次に知りたいのは、ゼロから巨大なコードを書き上げる方法ではなく、"既存のコードの改修を適切にやれる方法"なんじゃないか

プログラミングの入門書、「ゼロからコードを書いていく」ことは教えてくれるけど、「今あるコードをどうやって壊さず機能を追加してくれるか?」というのは教えてくれないんだよなゼロからコードを書いている時間より、既存のコードを読んで影響を確認し、…

見通しの悪いコードができあがってしまう、その理由

クソコードができあがるのは「影響の及ぼすコンポーネント量を最小にする」という個別最適の価値観が支配的になった時、です影響の及ぶ範囲を小さくするために、巨大で複雑なコードの塊を一箇所に追加し始めたりするのですそうした方が関心の範囲が限定でき…

『良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方 』と、『プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書』を注文した

良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方作者:仙塲 大也技術評論社Amazon プロになるJava―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書作者:きしだ なおき,山本 裕介,杉山 貴章技術評論社Amazon …

vimのコメント文字の挿入方法をカスタマイズする

vimではコメントを1行書いて改行すると自動的にコメント文字をインサートしてくれる機能が有る。1行コメント、ブロックコメントのどちらにもサポートがあり、けっこうカスタマイズの自由度が広い。 vim-jp.org Vim-Scalaの設定が微妙に好きではないので、~/.…

YAPC::Japan::Online 2022へ参加した

yapcjapan.org 3/4,5と開催されたYAPC::Japan::Online 2022に参加しました。 YAPCに参加すると、「帰ってきた感」がある#yapcjapan— magnoliak (@magnolia_k_) 2022年3月5日 大人になって友人ができた、これなーほんとコミュニティに感謝しかない#yapcjapan—…

書かれて、レビューされて、合意されたものが”決まったこと”

これ超大事単にペラペラ喋っても、それはレビューできないんだよ喋ってることってまとまっていないからディスカッションはいいんだけどねただ言っただけのことを「決め事」にするのはとても危険 https://t.co/DzASlZNqqs— magnoliak (@magnolia_k_) 2022年3…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その13

blog.magnolia.tech パーサーコンビネータ scala-parser-combinators Scalaのパーサコンビネータライブラリと言えば、元々は標準ライブラリだったscala-parser-combinatorsが有ります。今では分離され、Scalaの標準のディストリビューションとは別に開発が進…

AnkerのPowerLineって色んな種類が有って、いつもよく分からなくなる

AnkerのPowerLineって色んな種類が有って、いつもよく分からなくなるけど、基本的に折り曲げの耐性が違うらしい。 種類 折り曲げの耐性 Anker PowerLine+ III 35,000回 Anker PowerLine III 25,000回 Anker PowerLine+ II 30,000回 Anker PowerLine II 12,00…

プレイングマネージャーについて

プレイングマネージャーの問題点は、プレイヤーとしての役割を期待する人と、マネージャーとしての役割を期待する人は別の人だったり、同じ人でも場面に応じて使い分けるので、結果的にピーク調整ができなくなってしまうことなんだよね本人の認識以上に要求…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その12

blog.magnolia.tech 引き続き第8章「プロパティベースのテスト」の演習問題を解いていきます。 この章の後半、割と急に難易度が上がりますが、一つ一つ解いていきましょう。 プロパティベースのテスト 本書では全般的に「まずどんなインタフェースとするか?…

理解の解像度をコントロールする

集中すると、理解の解像度が上がりすぎて、その時は複雑なコードも書けちゃうし、理解できちゃうんですよねでもそんなに集中できるタイミングは後には来ないから、自分で見返しても理解できないし、他人が読んだらもっと理解できないでも書けちゃうんですよ…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その11

blog.magnolia.tech 第8章の「プロパティベースのテスト」に入ります。 この章は一度作ったAPI設計を、その後の検討で作り直す流れになっていて、演習問題の答えが都度変化していきます。そのため、正解を参照しようとしても用意されている正解は先回りして…

抽象のための語彙を獲得するためにどんなことをすればよいのか、そして獲得した後にどんなことをすればよいのか

ビジネスロジックに抽象性を持ち込む場合、本来のビジネス要求に存在しなかった抽象を示す語彙を新たに定義する必要が有り、「見知らぬ言葉」に最初は戸惑うのだけど、それが本当に本質を捉えた抽象であれば便利なのでビジネス側の人も使うようになる、とか…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その10

blog.magnolia.tech 今回は「純粋関数型の並列処理」の後半、Nonblockingな実装を取り扱います。 ちなみに本書では、Nonblockingの実装は飛ばしても良い、と書かれていますが、後半の章でBlocking実装のPar[A]ではなく、Nonblocking実装のNonblocking.Par.[A…

『Learning the VI and Vim Editors: Power and Agility Beyond Just Text Editing』

Learning the vi and Vim Editors (English Edition)作者:Robbins, Arnold,Hannah, ElbertO'Reilly MediaAmazon オライリーのvi本、なんと13年ぶりに改版されました。しかも、頑なにタイトルは「vi & Vim Editors」となっていて、あくまでviを主張しています…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その9

blog.magnolia.tech 今回はFP in Scalaの2nd edition用のリポジトリを見ていて気づいたScala3の構文の使い方について、調べたことのまとめです。 extensionについて Scala3のextensionは、既存のクラスに後からメソッドが追加できる構文です。 Extension Met…

よそはよそ、うちはうち

システム開発の方法論、単純に表層だけをなぞって取り入れてはいけない、という話はようやく最近語られてきたところですが(クリーンアーキテクチャの図とか)、ここに関して言えることは、行き過ぎな話になった時は一回落ち着いて「よそはよそ、うちはうち…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その8

blog.magnolia.tech 今回は「純粋関数型の並列処理」の前半を扱います。ここから「Part II 関数型デザインとコンビネータライブラリ」に突入します。 個人的にはこのPart IIから演習問題の難易度が格段に上がった印象でした。また、ここでの演習問題で実装し…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その7

blog.magnolia.tech まだまだ続きます。 演習問題を解く上で、そもそも既存のメソッドの挙動がよく分からない、みたいな時はこのサイトが参考になります。 superruzafa.github.io 純粋関数型の状態 テストコード この章で扱うState[S, +A]や、Rand[A]の関数…

「抽象」は分からないことなのか、分かることなのか

そういえば、モデルと抽象と本質が同じ意味っていうの、英語話者とエンジニアだけの感覚ですよね。普通のひと感覚が逆で、モデルは絵に描いた理想にすぎなかったり、抽象はあいまいで意味なく見えるものだったり、原則は例外ありデフォルトって意味だったり—…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その6

blog.magnolia.tech 引き続き気になったこと、調べたこと、忘れないようにメモしたことをまとめていきます。 正格と遅延 標準ライブラリにおける非正格クラス 元々、Scalaの標準コレクションには、Streamという非正格のコレクションクラスが有りましたが、Sc…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その5

blog.magnolia.tech タイトルで言うほどScala3関係無いですね。単に読書メモだと思ってください。 例外を使わないエラー処理 ソフトウェアの複雑度を示すメトリクスに「循環的複雑度」というのがあります。 循環的複雑度 - Wikipedia 簡単に言うと条件分岐や…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その4

blog.magnolia.tech 関数型プログラミングのデータ構造 ……続き foldLeft, foldRight, foldについて この先読み進めていくと延々とfoldRightと、foldRightと、foldが出てきます。’畳み込む’という操作を抜き出し、一つのパターンとして定義しているのは関数型…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その4

blog.magnolia.tech 関数型プログラミングのデータ構造 ……続き foldLeft, foldRight, foldについて この先読み進めていくと延々とfoldRightと、foldRightと、foldが出てきます。’畳み込む’という操作を抜き出し、一つのパターンとして定義しているのは関数型…

『Googleのソフトウェアエンジニアリング』を読んでソフトウェアエンジニアリングとは何かを考える

Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセスオライリージャパンAmazon なかなかのボリュームが有って、年末に買ったものの、ちょっとずつ拾い読みしながら進めています。 実は「1章 ソフトウェアエンジニ…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その3

blog.magnolia.tech 前回のエントリの続き。第3章の演習問題を解きます。 関数型プログラミングのデータ構造 第3章は、代表的なデータ構造であるimmutableなListの実装を通じて、概念と操作を理解していく章になっています。 この章をいきなり始めてもよいの…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その2

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)作者:Paul Chiusano,Rúnar BjarnasonインプレスAmazon blog.magnolia.tech 前回のエントリの続き。 演習問題を解いていきます。 第1章はざっと読み…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その1

昨年末から時間さえ有れば『Scala関数型デザイン&プログラミング』の演習問題の解き直し、というのを久しぶりに(3年ぶり?)をやっていました。 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド作者:Paul Chiusano,Rúnar …