Magnolia Tech

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

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

この辺で手を打ってもらえないかって話になるよね

ドキュメントはステークホルダーとのコミュニケーションツールなのに、そのコミュニケーション設計が無いまま「こうあるべき」という議論をしても「オレオレ絶対正しい理論」が誕生するだけだよね。誰が読んでも分かる表現なんて無いわけで。

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

JDKのメンテナンス状況、バイナリの提供状況に関する覚え書き。

OpenJDKの開発サイクル

OpenJDKプロジェクトは、半年に一回JDKのメジャーバージョンをリリースしている。2021年11月時点での最新版としてJDK 17がリリースされている。LinuxWindowsmacOS用のバイナリは、Oracleのサイトから入手可能。

JDK 17.0.1 GA Release

OracleはOpenJDKのバイナリを最新のメジャーバージョンのみ提供する。つまり、JDK 17がリリースされた以降はJDK 16以前のバイナリをOracleは提供しない。アーカイブとして過去のリリースへのリンクは貼られているが、アップデートされていない旨の記載が有る。

JDK 16 Releases

一方で過去のJDKはそれぞれ別のリポジトリにコピーされ、それぞれソースコードのメンテナンスが続けられている。

Main - Main - OpenJDK Wiki

OpenJDK: JDK Updates Project

JDK8, 11, 13, 14, 15, 16のリポジトリはメンテナンスが続いていて、最新のJDKに反映された修正のバックポートされて取り込まれている。

例えば、JDK15のリポジトリのコミットログを見ると随時アップデートされていることが分かる。

JDK 15u - JDK 15u - OpenJDK Wiki

GitHub - openjdk/jdk15u: https://wiki.openjdk.java.net/display/JDKUpdates/JDK+15u

また、その成果が一定間隔でソースコード一式をGeneral-Availability Releasesとして提供している。

Tags · openjdk/jdk15u · GitHub

しかし、あくまでソースコードのみのリリースであるため、バイナリは提供されておらず、使いたい場合は自分でビルドする必要がある。

Oracle以外のベンダはOracleJDKのサポートポリシーに合わせてOpenJDK8, 11, 17のみを長期サポート(LTS)対象としているが、ベンダがその気になればこれらのソースコードを元に、他のJDKの長期サポートを提供することも可能????

HomebrewでインストールされるOpenJDKは独自ビルド

macOSのパッケージ管理ツールであるHomebrewでopenJDKをインストールすると、最新のJDKソースコードから独自にビルドされてインストールされる。2021年11月現在は最新バージョンのJDK 17がインストールされるが、JDKがメジャーバージョンアップすると差し替えられる。

homebrew-core/openjdk.rb at master · Homebrew/homebrew-core · GitHub

macOSのHomebrewには最新のJDK 17以外にもOpenJDK 11をインストールするFormulaが用意されているが、それらもJDK Update Releasesで提供されるソースコードを元にインストール時に独自にビルドされている(OpenJDK 8だけなぜかリンク先がGitHubではなく、Open Source Community Infrastructureになっている)。

homebrew-core/openjdk@11.rb at master · Homebrew/homebrew-core · GitHub

当然だが、独自にビルドされたバイナリなので、サポートなどは提供されない。自分でビルドして、分からなければ知っている人に聞くか、自分で調べるしかない。

なお、JDKをビルドするためには他のバージョンのJDKがインストールされている必要があるためフリーで入手可能なバイナリがダウンロードされるようになっているのが興味深い。

この記事を読むと、以前はOracleが提供するOpenJDKバイナリへのリンクが貼られていた模様。

OpenJDK 11 を Homebrew で macOS にインストールする - Qiita

バイナリの入手方法について

次回に続く...

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

業務要件における情報って、大きな括りで見ていくと必ず階層的な構造になっていて、下位の情報が上位の情報の意味や位置付けを変えることも有るし、上位の情報が下位の情報に影響することもある。

また、一定期間を過ぎると、上位の情報の概念しか使われなくなることもあるし、情報システムの変化により過去の下位の情報がまた意味を持ち始めることもある。

モデリングという行為が、ボトムアップスタートだったにしろ、トップダウンスタートだったにしろ、上位の情報の価値と、下位の情報の価値に優劣は無く、常にその業務の取り扱いたいスコープによって大きく変わるけど、案外その影響が色々なところに漏れ出てしまう、というところを考えていかないといけないよね。

ってここまで書いてみて具体例が無いとわかりづらいと思った。

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

いろいろな事に違和感を感じて先回りして問題を未然に防ぐ人が、いる。

でもそこには実際には魔法はなくて、幅広く自分が直接担当しないことも含めて理解する視野の広さだったり、「余計なことを言わない方がいい」と思わせる環境があってこそだったりする。

なので、色んなところをちゃんとみて、比較して、おかしなところが無いか見る習慣を付ける大切さと、その方が褒められる環境を作る大切さの両方があるなって思った。

言い出しっぺの法則」みたいなことが言われるような環境だと、それは出ていこないよね。

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

Magic Trackpad 3を買った

ここ数年スペースグレーのMagic Trackpad 2を使っていたのだけど、すっかりhaptic feedbackが効かなくなってしまった(一度復活してまた反応しなくなった)。

これはよくある症状のようでたまに自然に治るようだけど、根本的にはただの故障でしかない。

すでにMacの魅力といえばTrackpadの使いやすさくらいしか残っていないんじゃないかと思えるくらい最後の砦の割に、意外と改善していないらしい。でもMacBook内蔵のTrackpadで同じ事象に遭遇している人は見かけないので、謎だ。

というわけでラインナップも変わり、ホワイトしかなくなってしまったMagic Trackpad3を買った。付属のLightningケーブルがちょっと高級感あるものに変わった以外は特に変わったところはないですね。

単体売りでも、カラーバリエーションで売ればいいのに。

というわけで、Trackpadが有るこそ今だにMacを使い続けていると言っても過言ではないので、haptic feedbackが効かなくなる事象が改善されていることを祈っています!