Magnolia Tech

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

2021-01-01から1年間の記事一覧

ドメイン知識を隠すコード、隠さないコード

2021/12/20追記 指摘されて気づいてしまいましたが、間違ってますね... 以前スライドを書いた時に全然気づいていませんでした 反省のために消さずに、取り消して残しておきます 「年齢計算ニ関スル法律」という法律がある。 明治三十五年法律第五十号(年齢…

コードをどう読むか?という手法の定義も必要ではないか?

コードは書かれるための時間より、読まれるための時間が圧倒的に長いけど、ざっと構造を掴むために読む、特定の処理に特化して読む、データベースなどの変更の影響を確認するために使ってるところだけ読む、と言ったさまざまな読み方があり、その種類は全部…

Anker PowerExpand 6-in-1

Anker PowerExpand 6-in-1 USB-C PD イーサネット ハブ PD 65W USB-Cポート 4K HDMIポート 1Gbpsイーサネットポート USB3.0ポート搭載 MacBook Pro, MacBook Air, iPad Pro用AnkerAmazon セールで1000円くらい安くなってて、前からちょっと欲しいなぁと思っ…

データモデルをimmutableに設計したいが...

データ構造をimmutableにしたい、イベントは起きたことをそのまま記録したい、更には監査の観点から修正させたくない、という人類の夢と希望に対して、「だってそれじゃあ現場は回らないんだよ」という例外運用のバランスをどこで取っていくか?というのは昨…

『Learning Go』

Learning Go: An Idiomatic Approach to Real-World Go Programming作者:Bodner, JonO'Reilly MediaAmazon 今まで簡単なコードリーディングくらいはしてきたけど、自分でちゃんとGoのコードを書いてこなかったなーと思って、とりあえず『Learning Go』を買っ…

『Programming Scala』と『Scala Cookbook』がScala3に対応して改版されました

Programming Scala: Scalability = Functional Programming + Objects (English Edition)作者:Wampler, DeanO'Reilly MediaAmazon Scala Cookbook: Recipes for Object-Oriented and Functional Programming作者:Alexander, AlvinO'Reilly MediaAmazon O’Rei…

なぜデータモデルをきちんと考えないといけないのか

データモデルを作るっていうのは、別にデータベース設計をするだけじゃなくて、アプリケーションコードの中でどんな処理フローになるかを考えて、それに適したモデルと、その引き回しの指針を決めることなんだよねそうしないと知らないオブジェクトがどんど…

ディストリビューションごとのJavaのバージョン表記

色んなJavaのディストリビューションのバージョン表記を集めてみました 1行目はjdkのバージョンを示している ベンダがLTSを表明しているディストリビューションは「LTS」の表記がつく JREやJVMのバージョンはベンダごとに独自のバージョンが付けられる JREや…

Javaのバージョン番号の形式を理解する

要約 JDK 8のバージョン番号の読み方 インストーラの表記 インストーラを入手する時は、「jdk8u312-b07」というような表記のうち、uの後ろの数字が一番大きなものが最新版 -bの後ろの数字はjdk自体のビルド番号であり、jdk自体の開発者向け情報...利用者側は…

ドキュメントを書いて維持するのが何故こんなに大変なのか

ドキュメント書くのが面倒だっていう問題、コードを書く前に書かれるドキュメントがその目的がコードを適切に書かせるためだとすると、その後の維持メンテで必要かつ最小限の範囲からすると必ず過剰になっちゃうんだよねコードできあがると「コード読めばい…

OpenJDKのメンテナンス状況について

JDKのメンテナンス状況、バイナリの提供状況に関する覚え書き。 OpenJDKの開発サイクル OpenJDKプロジェクトは、半年に一回JDKのメジャーバージョンをリリースしている。2021年11月時点での最新版としてJDK 17がリリースされている。Linux、Windows、macOS用…

業務の語彙と、システムの語彙をどこでバランスさせるか、ということを考えた

業務的に、例えば伝票一枚でも一つの業務の単位だし、伝票を束ねた一つの塊が経理担当の仕事の管理単位になるし、月一回全体で締めた束の束みたいな概念も有るし、決算で処理済みの過去分みたいなのも有って、同じ情報でも取り扱い単位はどんどん変遷してい…

Scalaのコードの中でJavaのバージョンを判定するとき

www.scala-lang.org Java 11以降で実行されているかは、以下のコードで判定できる。 scala.util.Properties.isJavaAtLeast("11") scriptedテストの中で判定する方法が無いなーって思ったら、こんな感じでさらっと解決されていた、なるほどー。 github.com

気づきを得るためにやっておくこと

違和感を感じるスキルって有って、何かおかしいなって思うところから始まることって多いよね設計もそうだし、仕事の進め方もそうだし— magnoliak (@magnolia_k_) 2021年10月17日 でもそこに魔法は無くて、結局幅広く知識を広げておくことで無意識に比較して…

コードの価値と関係性は変動する話

CRUD型と呼ばれるアプリケーションでも複雑性は色々な形で内包されていて、そのうち最も厄介なのは時間軸に対して一貫性を欠いた改修の歴史と、業務要件の発露と不一致なアプリケーション構造なのです— magnoliak (@magnolia_k_) 2021年10月2日 コード間の関…

Magic Trackpad 3を買った

Apple Magic TrackpadApple(アップル)Amazon ここ数年スペースグレーのMagic Trackpad 2を使っていたのだけど、すっかりhaptic feedbackが効かなくなってしまった(一度復活してまた反応しなくなった)。 これはよくある症状のようでたまに自然に治るようだけ…

どうやって仕事の仕方を学ぶか?

ちょうど同じ話をしてましたトラブルシュートのときの言動とかに注目しようって言ってました https://t.co/XWQbZflvDW— magnoliak🍧 (@magnolia_k_) 2021年9月22日 ちょうどこんな話をしていました。 人間イザという時に素がが出るとか言いますが、少しネガテ…

Anker Thunderbolt 4ケーブル

Anker USB-C & USB-C Thunderbolt 4 100W ケーブル 0.7m ブラック 100W出力 8K対応 40 Gbps 高速データ転送 MacBook Air Pro iPad Pro 他対応AnkerAmazon いつの間にかAnkerからもThunderbolt 4ケーブルがリリースされていたので、ブックマーク代わりのエン…

初手を速くすることで、全体を速くしていく

仕事ができる人、初手が速いっていう特徴が有ると思ってて、それは本人の資質も有るけど、「初手が速くできる準備とか環境を作る」のが上手いっていう印象 https://t.co/g0ArF8e7Mx— magnoliak (@magnolia_k_) 2021年9月19日 「仕事ができる」の定量評価はと…

問題が起きた時は、問題が起きた構造に注目する

大きな問題が起きて、その事象だけを深掘りしていくとすごく些細なミスだったりして「なんでこんな簡単なことができない!○○すればいいだけじゃないか!」って言い出す人が出てくるんだけど、その「○○するだけ」ができなかった環境はなぜ生まれたのかって所…

『初めてのSQL 第3版』でSQLを学習しなおしました

初めてのSQL 第3版作者:Alan BeaulieuオライリージャパンAmazon SQLほど、変化も少なく、かつ長く現役で使える技術もそうそう無いのでは?と思えるくらいずっと生き残っている。ただ、普段から書いてないと確実に忘れる。全体を忘れる、というより色々なこと…

定期的に知識をリフレッシュする

IT系に身を置いていると、つい新しい知識ばかりを追いかけがちになるけど、CS的な基礎知識や、Linuxのコマンドとかの(もちろんソラでコマンド10個のオプションを言える必要は、無い)も当然大事なわけです。というか、土台となる知識が無いと、新しい知識が…

ソフトウェアの再利用性について

下手すると「再利用できるか?」という調査をするコストよりも、ゼロから作るコストの方が安い場合もあるし、確実性が無かったりするし、多少のアンマッチは無視されてしまうこともあるし、ソフトウェアの再利用は難しいけど、詳しくない人は「もうあるから…

モデルを作っていく、ということについて考えた

例えば人事管理のモデルを作るときに、社員、管理職、役員みたいなのを、抽象社員クラスからの継承で別々に用意したものの、結局ロジックは全て外側に有って、そのロジックは属性による判断しかしないから、単純な社員クラスでよくね?みたいな思考の過程が…

Software Design 2021年9月号

Software Design (ソフトウェアデザイン) 2021年9月号 [雑誌]技術評論社Amazon Rustを題材にしたメモリ管理の特集、でもそもそもメモリ管理とは?他の言語での実装は?など、基礎的なところから入って行ってRustにおけるメモリ管理の考え方と、実際のミドル…

ISUCON11に参加した

isucon.net 開催日に、初めて参加できた緊張感とか焦りとかが凄い!でもきちんと練習しておくと一定の点数までは取れることが分かった(足りない練習観点がよく分かった)初手でPerl実装に切り替えて心を落ち着かせるところから始まった「ここはホーム、ここ…

『入門 老眼』の出版が待たれる

「入門 老眼」が出版されるのを待ってます老眼鏡の選び方から、最適なディスプレイの解像度設定など、きっと必要な知見はたくさんあるに違いない— magnoliak (@magnolia_k_) 2021年8月19日 とりあえずこれ読み直そうhttps://t.co/m57AydGo8w— magnoliak (@ma…

計画の解像度を上げていく

2021/8/15: 最初の言説のところ、微妙に何が何だかって記述だったので少し見直しました。 昔初めてPMBOKで「段階的詳細化」って用語を知った時、随分と当たり前のことにわざわざ名前がついてるんだなぁと思ったことが有るけど、案外ちゃんと名前をつけてあげ…

Scala3学習メモ: Scala3におけるType Lambda

Scala2におけるType Lambdaについては、下記のブログエントリが詳しい。 underscore.io 最初に、型パラメータの数を一つとして定義していると、型パラメータを二つ取る物を渡せない。 scala> trait Functor[F[_]] trait Functor scala> type F1 = Functor[Op…

夏休みのお供に『アンダースタンディング コンピュテーション』

技術書なんて必要なところを拾い読みするか、読書会でいろんな人の考え方や経験を知るきっかけに使うもの...慣れてくるとそんな感覚になってきますが、せっかくの夏休みなので初心に帰って、全部頭から再度まで読み切って、かつコードの写経もやってみて…と…