2026年4月14日火曜日

🛠️pythonが使えるカシオ電卓はmicropython仕様

 

OSがlinuxなんだろうか

使えるらしい! 買ってみよう

MicroPythonと普通のPython(通常はCPythonと呼ばれる)の主な違いは、使用されるプラットフォームとリソースの制約にあります。以下に主な違いをまとめます。

  1. プラットフォーム:

    • MicroPython: マイクロコントローラや小さな組込みシステム向けに設計されています。これは低メモリ(数KBから数MB)デバイスで動作するよう最適化されています。

    • CPython: デスクトップコンピューターやサーバーなど、よりリソース(CPU、メモリ)が豊富な環境で使用されるPythonの標準実装です。

  2. リソースの使用:

    • MicroPython: メモリ使用量が少ないため、完全なPython標準ライブラリのサポートが限定されています。組み込み機能や特定のハードウェア操作に特化したライブラリが追加されています。

    • CPython: 全ての標準ライブラリを含み、外部ライブラリのサポートも広範に渡ります。より多くのメモリと処理能力を活用できます。

  3. パフォーマンス:

    • MicroPython: 組み込みシステムでの実行に最適化されており、起動時間が非常に速く、リアルタイムでのパフォーマンスが求められる環境に適しています。

    • CPython: 一般的な用途において高速であり、多様な最適化技術が利用可能ですが、起動や実行速度はMicroPythonより遅い場合があります。

  4. 開発とデバッグ:

    • MicroPython: マイクロコントローラで直接コードを実行し、テストすることが多く、シリアルコンソールや簡易なIDEを使うことが一般的です。

    • CPython: 広範な開発ツールやIDEのサポートがあり、詳細なデバッグやプロファイリングが可能です。

これらの違いから、プロジェクトのニーズに合わせてPythonのバージョンを選択することが大切です。MicroPythonはハードウェアに近いプログラミングが求められる場合やリソースが限られている環境での使用に適しているのに対して、CPythonは一般的なアプリケーション開発に向いています。

MicroPythonは言語のコア部分でPythonの標準にかなり忠実を保っていますが、完全なPython言語仕様の全てをサポートしているわけではありません。いくつかの制約があり、これは主にメモリの限界や実行環境によるものです。以下にMicroPythonの言語仕様上の主な制約を挙げます:

  1. 標準ライブラリの制限: MicroPythonはPythonの標準ライブラリのサブセットのみをサポートしています。重いライブラリや特定の用途に特化した機能が削除されていることがあります。

  2. 浮動小数点数の扱い: 一部のMicroPython実装では、浮動小数点数を32ビットの単精度で扱います。これは、標準のPythonが通常64ビットの倍精度浮動小数点数を使用するのと対照的です。

  3. 例外の詳細: 例外メッセージやエラー情報が簡略化されていることがあります。これは、メモリ節約のために詳細なテキストを省略することによるものです。

  4. 非同期プログラミングの違い: MicroPythonは`uasyncio`モジュールを提供しており、これはPythonの`asyncio`モジュールの軽量版です。`asyncio`の全機能をサポートしているわけではありません。

  5. メモリ管理: MicroPythonは小さなメモリプールを効率的に使用するために、ガベージコレクションの挙動が異なる場合があります。これは特にメモリが限られた環境で顕著です。

これらの制約は、特に組み込みシステムやリソースが限られたデバイスでプログラミングする際に意識する必要があります。しかし、基本的なPythonの構文や多くの言語機能はMicroPythonでも使用できるため、Pythonの知識をそのまま活かすことができます。

2026年4月13日月曜日

Jintは、.NET Standard 2.0および.NET 4.6.2ターゲット(およびそれ以降)をサポートしているため、あらゆる最新の.NETプラットフォーム上で実行できる.NET用のJavaScriptインタープリターです。

 .NETアプリケーション内で、安全なサンドボックス環境でJavaScriptを実行

ネイティブ.NETオブジェクトと関数をJavaScriptコードに公開(データベースクエリ結果をJSONとして取得、.NETメソッドの呼び出しなど.
NETアプリケーションのスクリプトをサポートし、ユーザーがJavaScriptを使用してアプリケーションをカスタマイズ可能(Unityゲームのような
Jintのユーザーには、RavenDB、EventStore、OrchardCore、ELSA Workflows、docfx、JavaScript Engine Switcherなどがあります。

  • Jintは.NETバイトコードを生成せず、DLRも使用しないため、比較的小さなスクリプトを非常に高速に実行できます

  • 同じスクリプトを繰り返し実行する場合は、Esprimaによって生成されたスクリプト・またはモジュール・インスタンスをキャッシュし、コンテンツ文字列の代わりにJintに供給する必要があります

  • 実行エンジンは厳格モードで実行することを推奨します。これによりパフォーマンスが向上します

各エンジンの比較結果を確認できますが、すべての使用事例が異なるため、ベンチマークが実際の使用状況を反映していない可能性があることを念頭に置いてください。

TRPG基本的ルール、d20システムは、ダンジョンズ&ドラゴンズ(D&D)などのゲームで採用されているルールセットの一つです。

 TRPG(テーブルトークRPG)でよく使われるd20システムは、ダンジョンズ&ドラゴンズ(D&D)などのゲームで採用されているルールセットの一つです。基本的なルールや概念について説明しますね。

d20システムの基本

  • d20: 「d」は「ダイス」を意味し、「20」は20面ダイスのこと。d20システムでは、ほとんどの行動の成功や失敗を決定するために20面ダイスを使用します。

  • 能力値: キャラクターの基本的な属性や能力を数値で表したもの。通常、力(Strength)、敏捷性(Dexterity)、体力(Constitution)、知性(Intelligence)、判断力(Wisdom)、魅力(Charisma)の6つがあります。

  • スキル: キャラクターが特定の活動を行う際の専門性や訓練度。例えば、隠密行動、交渉、知識などがあります。

  • セーヴィングスロー: 危険や魔法、罠などから身を守るための反応チェック。能力値と関連しています。

  • アタックロール: 攻撃を行う際に、命中するかどうかを決定するためのロール(投げ)。対象のAC(Armor Class:防御クラス)を超える必要があります。

  • AC(Armor Class): キャラクターやモンスターの防御力を数値で表したもの。高いほど攻撃を避けやすくなります。

ゲームの流れ

  1. キャラクター作成: プレイヤーは自分のキャラクターシートを作成し、能力値、スキル、装備などを決定します。

  2. 冒険の開始: ゲームマスター(GM)がシナリオの背景や現在の状況を説明します。

  3. 行動の宣言: プレイヤーはキャラクターが何をするかを宣言し、必要に応じてダイスを振ります。

  4. 結果の決定: GMが行動の成果を決定し、ストーリーを進めます。

  5. 経験値と成長: キャラクターは冒険を通じて経験値を獲得し、レベルアップして新しい能力やスキルを獲得します。

d20システムは多くのTRPGで採用されているため、この基本を理解しておくとさまざまなゲームに応用できます。ただし、具体的なルールはプレイするゲームによって異なるため、手に入れたルールブックやガイドをよく読むことが大切です。

D20はパテントがありますか?

はい、d20システムには特許(パテント)ではなく、著作権と商標、そして「オープンゲームライセンス」(OGL)に基づく使用許諾があります。ウィザーズ・オブ・ザ・コースト(Wizards of the Coast)がダンジョンズ&ドラゴンズ(D&D)の第3版をリリースした際、d20システムという名前でこのルールセットを公開しました。このとき、他の出版社がd20システムを使用して自社のゲームやサプリメントを作成できるように、「オープンゲームライセンス」を導入しました。
OGLは、特定のルールやシステムを利用して新しい作品を作ることを許可するライセンスです。これにより、多くの出版社がd20システムをベースにした自身のゲームを発表することができ、TRPG業界における標準的なシステムの一つとなりました。ただし、d20ロゴの使用やダンジョンズ&ドラゴンズの特定の設定やキャラクターに関する著作権は、ウィザーズ・オブ・ザ・コーストが保持しており、これらの要素の使用には別途許可が必要です。
要するに、d20システム自体はオープンゲームライセンスにより広く利用できるようになっていますが、その使用にはルールがあり、ダンジョンズ&ドラゴンズの固有の設定やキャラクターなどの著作権に触れる要素には注意が必要です。

オープンゲームライセンス(Open Game License、略称:OGL)は、ウィザーズ・オブ・ザ・コースト(Wizards of the Coast)が2000年に導入したライセンス形式で、特にダンジョンズ&ドラゴンズ(D&D)の第3版をリリースする際に、そのルールシステムの一部を公開し、他の出版社や個人がそれを使用して自身のゲームやサプリメントを作ることを可能にしました。この動きは、ロールプレイングゲーム(RPG)業界に大きな影響を与え、多くの新しいゲームや拡張が生み出されるきっかけとなりました。

OGLの特徴と目的

  • 共有と拡張: OGLの目的は、ゲームのルールやメカニズムを共有し、他のクリエイターや出版社がこれらを利用して新しい作品を作り出せるようにすることです。これにより、ゲーム業界全体の成長と革新が促されます。

  • 再利用可能なコンテンツ: OGLの下で公開されたコンテンツは「オープンゲームコンテンツ」と呼ばれ、ライセンス条件に従う限り、誰でも自由に使用、改変、再配布することができます。

  • プロダクトアイデンティティの保護: 特定のキャラクター名、場所、ストーリーなどは「プロダクトアイデンティティ」として保護されており、これらはOGLの範囲外です。つまり、ウィザーズ・オブ・ザ・コーストが所有するD&Dの固有の設定やキャラクターは、許可なく使用することはできません。

OGLの使用方法

  1. オープンゲームコンテンツの識別: 自分の作品に含まれるオープンゲームコンテンツとオリジナルコンテンツ(プロダクトアイデンティティ)を明確に区別します。

  2. ライセンスの記載: 作品にOGLのテキストを含め、どの部分がオープンゲームコンテンツであるかを指定します。

  3. ルールの遵守: OGLの条件に従い、他のクリエイターが自分の作品を同じように使用できるようにします。

OGLは、特定のゲームシステムやメカニズムを広く共有することで、新しいアイデアや作品の創出を促し、TRPGコミュニティの拡大に貢献しています。このライセンスを通じて、多くの独立したゲームデザイナーや小規模出版社が、大手のゲームと競合することなく、創造性豊かな作品を市場に出すことが可能になりました。

オープン・ゲーム・ライセンス(OGL)はウィザーズ・オブ・ザ・コースト社による公的な著作権ライセンスであり、卓上ロールプレイング・ゲームの開発者が、彼らのゲームのためにデザインされたコンテンツの一部、特にゲーム・メカニクスの修正、コピー、再配布を許可するために使用することができる。ただし、類似のコピーや二次的著作物を共有しなければならない。

https://en.wikipedia.org/wiki/Open_Game_License

OGLは、「本ライセンスの使用に同意した対価として、貢献者は、オープンゲームコンテンツを使用するために、本ライセンスの正確な条項で、永続的、世界的、ロイヤリティフリー、非独占的ライセンスをあなたに付与する」と述べている[1]:

オープン・ゲーム・コンテンツ(OGC)
オープン・ゲーム・コンテンツ(OGC)......ゲーム・メカニックであり、方法、手順、プロセス、およびルーチンを含み、そのようなコンテンツがProduct Identityを具現化せず、先行技術を凌駕する拡張である限りにおいて、貢献者によってオープン・ゲーム・コンテンツとして明確に識別された追加的なコンテンツであり、著作権法に基づく翻訳および派生物を含む、本許諾書の対象となるあらゆる作品を意味するが、Product Identityは特に除外される......。
プロダクトアイデンティティ (PI)
... 製品および製品ラインの名称、ロゴ、トレードドレスを含む識別マーク、アーティファクト、クリーチャーのキャラクター、ストーリー、ストーリーライン、プロット、テーマ要素、ダイアログ、事件、言語、アートワーク、シンボル、デザイン、描写、肖像、形式、ポーズ、コンセプト、テーマ、およびグラフィック、写真、その他の視覚的または音声的表現; キャラクター、呪文、魔法、個性、チーム、ペルソナ、肖像、特殊能力の名称および説明、場所、環境、クリーチャー、装備品、魔法または超自然的な能力または効果、ロゴ、シンボル、グラフィックデザイン、その他の商標または登録商標。 ..
他社のプロダクト・アイデンティティの使用は、ライセンス契約違反とみなされます。

  1. 定義:

    • 提供者: オープンゲームコンテンツの著作権や商標の所有者。

    • 二次的著作物: 修正や改良、要約などを含む派生作品。

    • 頒布: 販売やライセンス付与などの配布行為。

    • オープンゲームコンテンツ: ゲームメカニック等、製品IDを除くあらゆる著作物。

    • 製品アイデンティティ: 名称やロゴ、アートワークなど製品を識別する要素。

    • 商標: コントリビューターが使用する識別マーク。

    • 使用: オープンゲームコンテンツの活用や配布。

    • お客様: この契約のライセンシー。

  2. 使用許諾: オープンゲームコンテンツは、このライセンスの条件の下でのみ使用可能。条件変更不可。

  3. 申し出と承諾: このライセンスの条件に同意したものとみなされる。

  4. 許諾と対価: 非独占的で永続的な使用許可が与えられる。

  5. 寄稿権限の表明: 寄稿者はオリジナル作品の権利を有していることを表明する。

  6. ライセンス著作権の通知: 正確な著作権表示を含める必要がある。

  7. プロダクトIDの使用: 特定の条件下でのみ使用可能。

  8. 身分証明書: 頒布物のどの部分がオープンゲームコンテンツであるかを明示。

  9. ライセンスの更新: ウィザーズ社は更新版を発行できる。

  10. 本ライセンスのコピー: 頒布するオープンゲームコンテンツ全てにライセンスのコピーを添付。

  11. ライセンス適用の同意: インストール前に同意が必要。

  12. 準拠不可能性: 法令等により準拠不可能な場合は使用禁止。

  13. 終了: 条項違反で是正されない場合は自動的に終了。

  14. 変更: 法的強制力がない条項は必要範囲で修正。

  15. 著作権情報: ウィザーズ・オブ・ザ・コースト社および原作者による著作権表示。

このライセンスは、オープンゲームコンテンツの使用、配布、修正を可能にする一方で、製品アイデンティティや商標の使用には厳しい制限を設けています。また、ライセンス違反があった場合の自動終了条項や、法令による準拠不可能性に対する規定が含まれています。


2026年4月12日日曜日

さいころを作ってみる。理由はあまりない。

 

画像1

1~6の数字が入ったdiceという配列を作って結果はrockという変数に返すようにする。rollという関数をdiceにひっつけて乱数を配列の上限までの範囲で出すようにしてさいころの結果として戻り値とする。roll関数はsetupで一回と、毎フレーム呼び出されるdrawの中でマウスが押されている状態を検出したときに呼び出すようにする。最新の結果はrockに入っていて、textでrockの内容を画面の左上のほう(x:10 y:30)に毎フレーム表示している。

多くのさいころは点(DOT)で数を表している。1は赤い点一つで、6は黒い点が6つならんでいる。同じように描画したいが、最初からさいころの描画をすると心が折れてしまうので、任意の場所に丸を描くだけを次のゴールとした。

Draw関数の中にDraw関数の中でしか呼び出されない関数を定義して呼び出した数字に応じて任意の個所に丸を書く。願わくば他の処理系他の言語系でも永久にさいころが描けるようにここからコードを正規化していく。ここまででお湯に塩を入れているようなもので、ここから中華料理にするのかイタリア料理にするのか、はたまた精進料理になるのかは書いている人の情熱次第ということになる。

キャプチャ