2024/10/24(木) [n年前の日記]
#1 [crystal][prog] Crystalを試用
今頃になって知ったのだけど、2024/10/01〜03頃に、Twitter上で、Rubyと静的型付けの話題で色々揉めていたらしい。Rubyの神様が激怒(?)していたようで…。さておき、関連情報をググってたら「Crystal使えばええやん」という話があった。何だソレ?
どうやら、Rubyと似た感じでソースを書ける、Crystalという言語があるらしい。
_The Crystal Programming Language
_The Crystal Programming Language (ja)
_crystal-lang/crystal: The Crystal Programming Language
_Windows (Preview) - The Crystal Programming Language
_トップページ | Introducing Crystal Programming Language - Your awesome subtitle
気になったので、Windows10 x64 22H2上で試用してみた。
どうやら、Rubyと似た感じでソースを書ける、Crystalという言語があるらしい。
_The Crystal Programming Language
_The Crystal Programming Language (ja)
_crystal-lang/crystal: The Crystal Programming Language
_Windows (Preview) - The Crystal Programming Language
_トップページ | Introducing Crystal Programming Language - Your awesome subtitle
- インタプリタではなくコンパイラ。実行形式(.exe)を生成できる。
- 静的型付け言語。「Rubyに静的型付けがあれば」と言い出す輩はコレでも使っとけ、と言われがち?
- Linux と Mac を念頭にして作られている雰囲気。そこらへんもちょっと Ruby っぽい…。
- Windows版は鋭意開発中ではあるけれど、一応プレビュー版が存在していて使えないこともないらしい。
- Windows上での利用時は、Visual C++ (Visual Studio、cl.exe) が必要。MinGW (gcc.exe) はサポートしてない。
気になったので、Windows10 x64 22H2上で試用してみた。
◎ インストール :
一般的には Scoop なるツールを利用してインストーする事例が多く紹介されてるようだけど、以下からバイナリを入手することもできる。
_Releases - crystal-lang/crystal
インストーラ版とポータブル版があるけれど、ポータブル版を使ってみることにした。crystal-1.14.0-windows-x86_64-msvc-unsupported.zip を入手して解凍。今回は D:\Dev\Crystal\ に置いた。
Crystalのインストール場所を、環境変数PATHに追加する。今回、cr_use.bat というBATファイルを書いて、使いたくなった時に該当BATファイルを呼び出して使うようにする。
動作には、Visual C++ (cl.exe) が必要。自分の環境は Visual Studio Community 2022 をインストールしてあるので、その点は問題無し。
_Releases - crystal-lang/crystal
インストーラ版とポータブル版があるけれど、ポータブル版を使ってみることにした。crystal-1.14.0-windows-x86_64-msvc-unsupported.zip を入手して解凍。今回は D:\Dev\Crystal\ に置いた。
Crystalのインストール場所を、環境変数PATHに追加する。今回、cr_use.bat というBATファイルを書いて、使いたくなった時に該当BATファイルを呼び出して使うようにする。
@echo off set CRPATH=D:\Dev\Crystal set PATH=%CRPATH%;%PATH% echo Install Path : %CRPATH% echo Crystal enable.
動作には、Visual C++ (cl.exe) が必要。自分の環境は Visual Studio Community 2022 をインストールしてあるので、その点は問題無し。
◎ 使い方 :
以下で Crystalコンパイラの使い方が紹介されてる。
_コンパイラの使い方 - Crystal
Visual C++ (cl.exe) が利用できる状態じゃないと使えないので…。スタートメニューから、「x64 Native Tools Command Prompt for VS 2022」を選んで起動。DOS窓が開く。これで cl.exe が利用できる状態になる。
先ほど作成した cr_use.bat を実行。これで、crystal.exe にPATHが通ったはず。
バージョンを確認。
任意のフォルダで、hello.cr を作成。内容は以下。文字列を出力するだけ。
実行してみる。crystal run hoge.cr でお試し実行ができる。
ビルドして実行形式を作ってみる。crystal build hoge.cr でビルドできる。
以下のファイルが作成された。
hello.exe を実行してみる。
実行できた。
これで、Windows上でも Crystal を動かして実行ファイルを作成することができそうだと分かった。
_コンパイラの使い方 - Crystal
Visual C++ (cl.exe) が利用できる状態じゃないと使えないので…。スタートメニューから、「x64 Native Tools Command Prompt for VS 2022」を選んで起動。DOS窓が開く。これで cl.exe が利用できる状態になる。
先ほど作成した cr_use.bat を実行。これで、crystal.exe にPATHが通ったはず。
バージョンを確認。
> crystal -v Crystal 1.14.0 [dacd97b] (2024-10-09) LLVM: 18.1.1 Default target: x86_64-pc-windows-msvcCrystal 1.14.0 を呼び出せている。
任意のフォルダで、hello.cr を作成。内容は以下。文字列を出力するだけ。
puts "Hello world ! Hello Crystal !"
実行してみる。crystal run hoge.cr でお試し実行ができる。
> crystal run hello.cr Hello world ! Hello Crystal !
ビルドして実行形式を作ってみる。crystal build hoge.cr でビルドできる。
crystal build hello.cr
以下のファイルが作成された。
gc.dll hello.cr hello.exe hello.pdb iconv-2.dll
hello.exe を実行してみる。
> hello.exe Hello world ! Hello Crystal !
実行できた。
これで、Windows上でも Crystal を動かして実行ファイルを作成することができそうだと分かった。
◎ shardsを使おうとしてハマった :
Crystal には shards というパッケージマネージャが同梱されている。これを使うと、プロジェクトの管理が楽になるらしい。shard.yml というファイルに記述された内容に基づいてアレコレしてくれるらしいが…。
_shards コマンド - Crystal
例えば、crystal init app hoge と打ち込めば、プロジェクトの雛形を作成してくれるのだけど。
この状態で shards を使えばビルドができるのかな、と思いきや…。
「Symlinks を使うから開発者モードにするか権限を上げろ」と言ってきた…。
以下を眺めると、非開発者モードで利用できるようにするのは難しい、と言っているように見えた。
_Windows: A required privilege is not held by the client - Issue #556 - crystal-lang/shards
仕方ないので、一時的に Windows10 x64 22H2 の開発者モードを有効にして試してみた。スタートメニュー → 設定 → 更新とセキュリティ → 開発者向け → 開発者モード、をONに。
_Windows 10で開発者モードにする - Windows 10 Tips | iPentec
shards が動くようになってくれた。
shards build と打ったら、bin/ ができて、中に実行ファイルが生成された。bin/ の中は以下。
でもまあ、入門時は使わなくても良さそうだし…。開発者モードはOFFに戻しておいた。
_shards コマンド - Crystal
例えば、crystal init app hoge と打ち込めば、プロジェクトの雛形を作成してくれるのだけど。
> crystal init app hello-cr create D:\home\prg\crystal\helloworld\hello-cr\.gitignore create D:\home\prg\crystal\helloworld\hello-cr\.editorconfig create D:\home\prg\crystal\helloworld\hello-cr\LICENSE create D:\home\prg\crystal\helloworld\hello-cr\README.md create D:\home\prg\crystal\helloworld\hello-cr\shard.yml create D:\home\prg\crystal\helloworld\hello-cr\src/hello-cr.cr create D:\home\prg\crystal\helloworld\hello-cr\spec/spec_helper.cr create D:\home\prg\crystal\helloworld\hello-cr\spec/hello-cr_spec.cr Initialized empty Git repository in D:/home/prg/crystal/helloworld/hello-cr/.git/
この状態で shards を使えばビルドができるのかな、と思いきや…。
> cd hello-cr > shards Shards needs symlinks to work. Please enable Developer Mode, or run Shards with elevated rights: https://learn.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development
「Symlinks を使うから開発者モードにするか権限を上げろ」と言ってきた…。
以下を眺めると、非開発者モードで利用できるようにするのは難しい、と言っているように見えた。
_Windows: A required privilege is not held by the client - Issue #556 - crystal-lang/shards
仕方ないので、一時的に Windows10 x64 22H2 の開発者モードを有効にして試してみた。スタートメニュー → 設定 → 更新とセキュリティ → 開発者向け → 開発者モード、をONに。
_Windows 10で開発者モードにする - Windows 10 Tips | iPentec
> shards Resolving dependencies Writing shard.lock > shards check Dependencies are satisfied > shards version 0.1.0 > shards build Dependencies are satisfied Building: hello-cr
shards が動くようになってくれた。
shards build と打ったら、bin/ ができて、中に実行ファイルが生成された。bin/ の中は以下。
gc.dll hello-cr.exe hello-cr.pdb iconv-2.dll
でもまあ、入門時は使わなくても良さそうだし…。開発者モードはOFFに戻しておいた。
◎ 余談。開発者モードの罠 :
開発者モードにしたら、普段使ってる BATファイルが実行できなくなってしまった。「\Microsoft の使い方が間違っています。」と表示されてしまう。
BATファイル内のラベルが小文字で書かれていたのがよくなかったらしい。大文字に修正したら動いてくれた。そういうものなの…?
ちなみに、自分でBATファイルを書くときは、昔ながらの流儀でラベルは大文字にしているのだけど、他の方が書いたソレをそのまま持ってきて使っていたものだから…。とりあえず、非開発者モードでは、ラベルが小文字でも動いてしまうようだなと…。
BATファイル内のラベルが小文字で書かれていたのがよくなかったらしい。大文字に修正したら動いてくれた。そういうものなの…?
ちなみに、自分でBATファイルを書くときは、昔ながらの流儀でラベルは大文字にしているのだけど、他の方が書いたソレをそのまま持ってきて使っていたものだから…。とりあえず、非開発者モードでは、ラベルが小文字でも動いてしまうようだなと…。
[ ツッコむ ]
#2 [tv] 「NHKスペシャル ジャニー喜多川 アイドル帝国の実像」を視聴
思考メモというか感想メモ。
NHK総合で放送されてた番組を録画していたので視聴。本放送時も一応見ていたけれど、ウトウトしながら見てたので…。
なんともモヤモヤしてくる内容だった。
元フォーリーブスの方が発言してたけど、「少年達を見る目がフツーじゃない人だからアイドルを売り込むためのアレコレも実行できた」という見方には、なんだか納得してしまった。
フツーのおじさんの感覚では、そのへんを歩いてる少年達を見て「美味しそう」なんて露ほども思わないわけで、つまりは少年達に価値なんか見出すことは無いし、価値が見出せないのだから売り込むためのアレコレだって本気で取り組めないはずで。対して、少年達を常に邪な目で見ているガチな人種だからこそ、そこに価値を見出せるし、価値を見出せているからどうやって魅力的な商品にしていくのかも本気で取り組める、という面はあったのだろうなと…。このあたり、女性アイドルに対するソレで置き換えてみれば分かりやすいのかもしれない。おじさん達が若い女の子を見る時に邪な目で見ていないと言えるだろうか。むしろ邪な目で見ているからこそ価値を見出せて、アイドルと言う商品を磨いていくモチベにも繋がるのではないか…? いや、知らんけど。
日本が男性社会というのも関係していたのだろうか…。少年達の商品価値を見出せるのは女性のほうが多いだろうと思うのだけど、もし、女性達がジャニー氏のようなポジションで活躍できる状況があったら、ジャニーズだってここまで大きくは…。いや、姉のメリー氏が実権を握ってたわけだから、男性社会云々はあまり関係ないか。
マスコミが業界一丸となって事件を隠蔽してきた、という面も、たしかにあるよなと…。例えば Wikipedia のまとめを眺めると、ますますそう思える…。何度も何度も、問題を明らかにするチャンスはあったのに、何度も何度も無視してる。
_ジャニー喜多川による性加害問題 - Wikipedia
所謂暴露本も出ていたし、告発していたマスコミも一部には居るのだけど、業界全体では完全無視していたあたり、これは隠蔽としか思えない。
さておき。番組内で提示されていたデータが ―― 他局がジャニーズを使わせてもらえなくなっている状況を横目に、NHKが積極的に起用を増やしていってジャニーズの権力を増強していったというデータも興味深かった。当時のお偉いさん(かつ、ジャニーズ後継事務所の偉い人)に取材を試みたら「仲間じゃないか」「なんで俺だけ」と言い出したあたりもなかなか…。当人は、上から「若年層を取り込め」と命令されたからやっただけ、みたいな感覚なんだろうけど。
それにしても、加害者と、隠蔽を画策した権力者が、どちらも故人と言うのが…。言い方はアレだけど、やり逃げだよな…。もやもやする…。
NHK総合で放送されてた番組を録画していたので視聴。本放送時も一応見ていたけれど、ウトウトしながら見てたので…。
なんともモヤモヤしてくる内容だった。
元フォーリーブスの方が発言してたけど、「少年達を見る目がフツーじゃない人だからアイドルを売り込むためのアレコレも実行できた」という見方には、なんだか納得してしまった。
フツーのおじさんの感覚では、そのへんを歩いてる少年達を見て「美味しそう」なんて露ほども思わないわけで、つまりは少年達に価値なんか見出すことは無いし、価値が見出せないのだから売り込むためのアレコレだって本気で取り組めないはずで。対して、少年達を常に邪な目で見ているガチな人種だからこそ、そこに価値を見出せるし、価値を見出せているからどうやって魅力的な商品にしていくのかも本気で取り組める、という面はあったのだろうなと…。このあたり、女性アイドルに対するソレで置き換えてみれば分かりやすいのかもしれない。おじさん達が若い女の子を見る時に邪な目で見ていないと言えるだろうか。むしろ邪な目で見ているからこそ価値を見出せて、アイドルと言う商品を磨いていくモチベにも繋がるのではないか…? いや、知らんけど。
日本が男性社会というのも関係していたのだろうか…。少年達の商品価値を見出せるのは女性のほうが多いだろうと思うのだけど、もし、女性達がジャニー氏のようなポジションで活躍できる状況があったら、ジャニーズだってここまで大きくは…。いや、姉のメリー氏が実権を握ってたわけだから、男性社会云々はあまり関係ないか。
マスコミが業界一丸となって事件を隠蔽してきた、という面も、たしかにあるよなと…。例えば Wikipedia のまとめを眺めると、ますますそう思える…。何度も何度も、問題を明らかにするチャンスはあったのに、何度も何度も無視してる。
_ジャニー喜多川による性加害問題 - Wikipedia
所謂暴露本も出ていたし、告発していたマスコミも一部には居るのだけど、業界全体では完全無視していたあたり、これは隠蔽としか思えない。
さておき。番組内で提示されていたデータが ―― 他局がジャニーズを使わせてもらえなくなっている状況を横目に、NHKが積極的に起用を増やしていってジャニーズの権力を増強していったというデータも興味深かった。当時のお偉いさん(かつ、ジャニーズ後継事務所の偉い人)に取材を試みたら「仲間じゃないか」「なんで俺だけ」と言い出したあたりもなかなか…。当人は、上から「若年層を取り込め」と命令されたからやっただけ、みたいな感覚なんだろうけど。
それにしても、加害者と、隠蔽を画策した権力者が、どちらも故人と言うのが…。言い方はアレだけど、やり逃げだよな…。もやもやする…。
[ ツッコむ ]
以上、1 日分です。