システムクラフトとかいう会社が出鱈目な情報を流している件

システムクラフトという会社の杉原利彦という人が X などで出鱈目な情報流しているようだ。

時期的には少々古いのだが、下図上部のようなポストがあった。

2018 の時点で OsiriX MD は既にオープンソースではなくなっており、プルリクエストなどを送りたくても送れないし、あちらにはあちらで立派な日本語リソースがある。

私が提供した先は、オープンソース版の方で、これはリポジトリ上にも痕跡が残されている。

どういう内容だったかは、このページなぞ参照。

大した内容ではないのでアピールしてないが、このプルリクのおかげで contributors の一人には数えられているようだ。

OsiriX は医療分野におけるオープンソースソフトの代名詞のように考えられていたようだが、実際、ある程度まとまった内容のソースコードを提供したのは pixmeo 関係者以外では、上図でわかるように世界で 9 人くらいしかおらず、これでは(商用版を)オープンソース開発方式を継続していく意義は薄いだろう。

ところで OsiriX MD がオープンソース開発方式を捨てて、ソースコードをクローズドに移行した際に、落胆の声が上がったようだが、これは若干筋違いの批判のように思えなくもない。

オープンソース開発方式を望むなら、現在のオープンソース版にプルリク送るなどして、クオリティを上げていけばいいだけの話だからだ。

 

(追記)OpenDolphin という名称使用に関しても完全に間違った解釈してますね。

いまさら? Windows 11 と Ubuntu ダブルブート

WSL 環境が整備されてきたせいか win機で Ubuntu を使いたい場合、WSL(2) をインストするのが主流になってきていると思いますが、通信に関してはまだ不安定なところがあるように思います。

さらに Ubuntu のデスクトップ環境を使いたいといった場合(WSL ではデスクトップ環境は使えない)、今でもデュアルブートは考慮される選択肢でしょう。

以前に SSD を換装した Surface があったので、デュアルブートを試みました。

作業に入る前に

UEFI が強化されているらしく、意外に手間かかります。

途中で何かあってもいいように、最低

・回復ディスクは作成しておく

・BitLocker は切っておく

ことを強くオススメします。

これさえやっておけば、何があっても最悪、システム自体は復旧できます。

手順

作業の手順は検索かけて物色しましたが、けっこう不自然な手順が紹介しているサイトを見かけました。

おそらく最も自然なのは

windows10 と Ubuntu のデュアルブート環境の構築

で紹介されている方法です。

windows 機に Ubuntu を間借りさせるわけだから

・windows のユーティリティを使って空き領域を作る

・その空いた領域に Live USB を使って Ubuntu 本体をインストールする

という手順です。

ただし、win10 時代には SSD 自体を暗号化する BitLocker がなかったようで、この点に関する配慮が抜けています。

私も作業に入る前はわかってなかったのですが、BitLocker はパーティション毎にオンオフできるものではなく物理的なディスク全体を暗号化するもののようです。
だから、windows OS の領域を空けたところで暗号化自体は有効なので、そこに Ubuntu をインストールしてしまうと Ubuntu はその領域を読み込めない(=起動できない)、という結構ヤバめの状態になります。

使い心地 -どういう人に向いているのか-

私の場合、 Surface のエントリーモデルを SSD 換装して使うことが多いので、仮想化して Ubuntu を使うのは辛いものがあります。

このような場合、デュアルブートは快適です。

現在(2024 春)なら、Surface Laptop GO 3 なんかは、いい対象になると思います。→ UEFI の設定のせいなのかデュアルブートはできないようです。結構な人が試しているが、未だ成功例はないようです。こことか参照。

実用的な速度で使いたければ WSL。少々遅くてもデスクトップ環境欲しければ VM Player 使うしかないですかねー。

 

 

イマドキの JavaScript

JavaScript といえば、html などと組み合わされクライアント(ブラウザ)上でページを動的に動かすための言語、とされていた。

かつては。

node が開発され、そういった状況は一変したわけだが、いまだに「node はサーバサイド JavaScript の一種」というイマイチな説明がなされているサイトも多いようだ。

node は JavaScript 実行環境

node.js は JavaScript 実行環境といった方がいい。

試しに

console.log("hello, node");

という簡単なスクリプト?をコマンドラインから実行してみよう。

 としっかり Mac マシン上で動く。

私の場合、node はいつの間にか入っていたが、Mac に導入したい人はこちらあたり参照。
(入っているかわからなければ node -v を実行。バージョンが返ってくれば入っている)

npm は Node Package Manager ではないらしい

node といえば npm だが、npm は Node Package Manager の略ではないらしい。この記事参照。
が、こういう言葉遊びに拘泥するのが面倒くさいと感じる人はスルーで。

文法も進化している

ES2015(ES6) あたりで、文法も大きく変わったようだ。
ES2015(ES6)入門

(続く)

 

Metal Shading Language

MacOS, iOS などの新しいグラフィック API といえば Metal だが、Mtal のシェーダーを記述する言語は、Metal Shading Language (MSL)という。

現在のバージョンは 3.0 で仕様も公開されている。

C++14 ベースというのは聞いていたので、クラスやメソッドなどを C/C++ や Objective-C あたりで書いておけば、シェーダー(具体的には .metal ファイル)から特別な手続きなしに呼び出せるのだろうと安直に思っていたのだが、どうやら違うようだ。

これはなかなか困った事態だ。

というのは、ある種の機能はシェーダーからも普通のコードからも使いたい、ということがよくある。

大抵は、こういった共通に使うような機能は C/C++ などで書いておけば、それほど困った事態にはならないのだが、これが必ずしも成立しないということを意味している。

StackOverFlow にもこの手のお困り質問が見られるようになった。

(追記)公式にも .metal で複雑な操作(例えば複数の .metal を使いたいような場合)をするときには、一旦、シンボルファイルを作って… という記事が上がっていた。
いや、しかし、これ本当にさせるつもりあるの???

C++ に似ているが C++ 標準ライブラリは使えない

仕様書の最初の方にも

Do not use the C++ standard library in Metal code

と早々と警告を発している。

標準ライブラリの他にもラムダ式も使えない。

 

参考:
これ
海外でもやはり。。。

(続く)

1台の Mac でマルチアカウントで homebrew を使う

為替の関係なのか apple 製品値上げしそう。

というわけで現在主流である arm 系の Mac をホイホイ買うことが難しくなった。

そうなると当然1台の Mac を複数人で「仲良く」共有ということになる。
本当にできるかどうかは別にしてw

ちょっと引っかかったのは Mac の定番パッケージマネージャー homebrew を複数アカウントで使うとパーミッションの関係で色々と不具合が出るという問題。

ググってみたが、「個々のアカウントのホームにそれぞれ homebrew をインストールする」というのが一番シンプルな解決法のようだ。

なので、ホームに homebrew フォルダをつくり、そこに homebrew を展開して使ってもらうことにした。

$ cd ~
$ mkdir homebrew
$ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

これに合わせて、.zprofile に以下の一行を追加。

PATH=~/homebrew/bin:$PATH

本来の brew コマンドより「優先して」自分の brew コマンドが動くようにする、という理屈ですね。

 

トミーと言ったら、玩具?

Tomcat に JavaEE(JakartaEE) の仕様を追加実装した TomEE というサーブレットコンテナ(と言っていいものなのか?)があるらしい。

なんでも EJB や CDI はおろか JPA も使えるとのことだ。

若い人たちが、あれこれ試していたんだが、JPA のところで突っかかったらしい。

元コードみたけど、「そのやり方は、データベースをローカルで繋ぐときのやり方でしょ? 多分、EE っぽいアプローチは・・・」とやっていったら、まあなんとか動いた。

彼らは、Movie というエンティティを hibernate を介してデータベースに永続化したかったらしいのだが、案の定というべきか Movie2 だの Movie3 だのが大量発生していたw

袋小路に入ったら、「何か根本から考え違いをしている場合が多い」って考えた方がいい。

今回はデータソースの設定を見直すくらいでなんとかなりました。

 

 

PNG連番画像からGIFパラパラアニメをつくる

PNG連番画像からGIFパラパラアニメをつくるのはたまにやるのだが、Mac だと ffmpeg を使うのが便利。
だが、引数の指定方法はけっこう忘れてしまい、その度にググったりするので、忘備録的にメモ。

まず、ffmpeg だが、作業する Mac マシンにインストールされてない場合は、例えば homebrew を使って

brew install ffmpeg

でインストール。

000.png, 001.png, 002png ・・・・ と連番が3桁の場合には、

ffmpeg -i %3d.png -vf palettegen palette.png

として、まず palette.png を生成させる。
連番が4桁のときは、%4d で指定。ここらへんの引数の渡し方は C 系っぽい(単なる感想)。

次に

ffmpeg -f image2 -r 20 -i %3d.png -i palette.png -filter_complex paletteuse robo-umamusume.gif

として、GIFパラパラアニメを作る。

また -r は FPS(Frames Per Second) を指定しているので、例えば、r = 1 とすると1秒毎に画像が切り替わるGIFアニメが得られる。上の場合は 20fps になる。

 

air-h-128k-il

保健医療科学院 小林慎治が国家公務員法違反疑いで厳重注意を受けた件について

こういうのをタナボタというのだろうか、かねてから小林慎治(当時、京都大所属)という人から 「OpenOcean は GPL に違反している」という根も葉もない批難を受けていたのだが、別系統でこの件に関して彼の現所属組織(保健医療科学院)から謝罪のメールをいただいた。

単なる彼の事実誤認だと思っていたのとネット上での彼に関するあまり良くない噂(ただし、これ患者さんが一方的にー京都大学ではなくー愛媛大第一内科の小林慎治という名の医師を罵っているだけなので、この情報を頭から信用している訳ではないです)から個人的に関わりたくないと思い放置していたのだが、OpenOcean とは別件のオープンソースのプロジェクトで何かトラブルを起こしたらしく、当方にも現所属先の保健医療科学院の幹部の方から事実確認などの照会を受けた。

なるべく主観的な感情などを入れず、事実と明らかに異なる点に関していくつか返答させてもらった。

そのうちのいくつかを書いておくと

・彼は www.moss.gr.jp というサイトで
「OpenOcean は dolphin-dev の Fork の Fork の Fork」
と紹介していたのだが、これは完全に誤り。
dolphin-dev/opendolphin → Hiroaki-Inomata/OpenDolphin-2.7mOpenOcean
の順で Fork しているので明らかに一つ多い。正確には Fork の Fork。

・「(皆川和史という人の)著作権表示を隠蔽しているから GPL 違反」という主張をしているのだが、おそらくこれはスプラッシュ画面で (C) air-h-128k-il という表示をしたことに起因していると思う。が、これに関しては当時の LSC に確認を取ったところ「配布元がわかりにくくなるので、むしろスプラッシュ画面の(C) 表示は変えてくれ」という返答をもらっていた。その旨の回答をさせてもらった。
また、ついでで言っておくと LSC からは「皆川は現在では会社にも出勤しておらず、OpenDolphin の担当ではないから、気にしなくてもいい」という回答ももらっている。
さらにいうと、現在では、後期 LSC やメドレーからは「皆川が OpenDolphin の著作権者であるという主張はかつてはなされていたが、現在では確かめる術もない。いわゆる原始著作権者ではなく、著作権表示を契約上保持していただけのようだ」との回答をもらっている。
(要するに皆川は本来の意味での著作権者ではないという示唆です。あれだけのコード量ですから、全部が全部皆川さんが書いたとは私も思ってませんが、当初考えていたよりコードを著作権ごと買い取っていた部分が多かったようです。もちろん、こういった部分の著作権は今後は-契約にもよるのですが-メドレーが保持することになります)

・上に関することでもあるが、GitHub 上で「一般公開」していたソースコード上では、author 表示の類は一切変えていない。

・GitHub 上で OpenOcean のメンテナをしていた際、小林慎治がプルリクエストを送ってきたのだが、一方的に「マージせよ」と言い張るのみで迷惑したこと。(一般的にオープンソースのプロジェクトでは、メンテナがレビューしたのち、メンテナの責任においてマージする)

と言ったところだろうか。
他にも細かい点も指摘したのだが、主な点はそんなところだろうか。

保健医療科学院の担当の方はかなり丁寧に調べてくれたようで、他のプロジェクトの関係者にも調査をしてくれたようだ。
もちろん、他のプロジェクトの調査内容の詳細は私はわからないのだが、なかには、法律違反を煽る内容もあったとか。
何が決定打になったかわからないが、結果としては「国家公務員法違反(守秘義務違反、信用失墜行為の禁止、政治的行為の制限に関する違反)の疑いがあるので厳重注意をした」という処分になったということだ。

なお、担当者からのメールには「不快な思いをさせて申し訳ありません」という謝罪の言葉も添えられていた。
この言葉には、いくらか救われた。有り難かったですね。

 

air-h-128k-il

(参考1)これは特に誰というわけではないですが、けっこう SNS のアイコンなどに無頓着な人がいるようなので、一般的なお願いということで挙げておきます。

著作権法違反が疑われるコメントの掲載はできかねます

(参考2)ちょっとマニアックですが GitHub も SNS 的要素はあります。プルリクエストを送る場合やイシューを立てる場合、内容もさることながら、アイコンなどにもやはり気を使いましょう。

オープンソースの世界 〜残酷な自由さ〜

(参考3)小林慎治の twitter チェックしたら、事実誤認が多すぎたので、所属先に連絡したら、結局、鍵垢になったようだ(2023/6 〜)。
検証もしない思いこみだけで書いた内容が多かったので、これは妥当なチョイスでしょう。

(補足)若干、マニアックな内容なのでわかりにくいかもしれません。
プログラムで表記される (C) マークについて(すごく大雑把にいうと)、これは通常は「財産権としての著作権を管理している組織若しくは個人」を表示していると理解されていると思います。LSC やメドレーの担当者が「配布元がわかりにくくなるので、むしろスプラッシュ画面の(C) 表示は変えてくれ」と言っていたのはこの考えが背後にあるためでしょう。
もうちょっとわかりやすい例でいうと適当なPCでコマンドラインを操作しているときに

(C) Microsoft
(C) FSF

といった表示が出てくることがあります。
これは「このシステムや個々のコマンドの著作権を管理しているのは、以下の組織です」と言った程度の意味です。
ライセンス上表記しなければならない人(著作者人格権を持っている法人や個人)がいたとしても、このような表記になっています。
なお、プログラムの著作権法上の取り扱いのかなり基本的なことですが、日本の著作権法の場合、ソースコードの著作者は法人であってもかまいません(ここが小説や歌謡曲などの文芸作品と違う点です)。必ずしも著作者=著作権者になるわけではないです。

もちろん、(C) マークとは別に、著作者人格権に基づく(and/or GPL などに基づく)クレジットをしなければならない場合も多いです。
ですが、これは、それが従うべき各国の法やライセンスに従って publish すればよい話で、著作権の、特に (C) マークの表記に関連づけて議論するような話ではありません。
特に上記の件では、説明したように当事者間で「それでよい」という合意ができている以上、第三者が口を挟むような案件ではありません。

 

MacOS に elmo + やねうら王 + 将棋ぶらうざQ を「clang」で導入

ひさしぶりの将棋ネタ。
Mac を触る時間が長くなってきたので、将棋 AI も刷新したくなったから(過去に「技巧」を入れてます)。

導入方法の基本的な流れ自体は、
Mac にコンピュータ将棋ソフト「elmo」を導入した
MacOS に elmo + やねうら王 + 将棋ぶらうざQ をインストールする
あたりをご参考に。

ただ、やねさんの Makefile を見たら、

# clangでコンパイルしたほうがgccより数%速いっぽい。
#COMPILER = g++
COMPILER = clang++

 

とデフォルト設定で clang になっている。
何もわざわざ gcc に変えなくても良いのでは?
(ただし、llvm は諸々の事情で ver10 を使ってますが、デフォの llvm でも実行ファイルはできてました。gcc とか llvm とかよくわからんという人はこちらなども参照ください)

あとは、標準ライブラリを stdlibc++ ではなく libc++ に変えただけ。

こんだけで、一応、ビルドできましたが。

 

なお、アイキャッチは、藤井(聡太)-渡辺(明)棋聖戦第二局で藤井七段(当時)が△三1銀打と金取りを受けたところ。

 

解析させると AI 的にもここから流れが変わったのがわかりますね。

 

 

air-h-128k-il

 

北極圏コード貯蔵庫コントリビューター -Arctic Code Vault Contributor-

GitHub が北極圏にデータセンターみたいなのをつくって、そこに GitHub 上にあるほぼ全てのリボジトリのスナップショットを収蔵したらしい。
【参考】『Arctic Code Vault が実施段階へ突入』(GitHub ブログ)

MS すげーな。

また、このとき収められたリポジトリのオーナーやそれらプロジェクトにソースコードを(正式な形で)提供した者には、

Arctic Code Vault Contributor

の肩書きが与えられたようだ。「北極圏コード貯蔵庫コントリビューター」とでも訳せばいいだろうか。

私も OsiriX や Horos にはソースコードを提供したことがあるので、認定されたようだ。
大したものではないが、ちょっとは誇らしい気持ちになれる。

最近(2021 上半期)だと専用ロゴ?もついた。

air-h-128k-il