投稿記事

無料プランの記事 (64)

いらにか 2023/06/09 00:12

【拡張機能】続:DLsiteフラッシュ攻撃(仮称)の対策【dlsite-dark2】

2023/06/09追記

Chromeストアの審査パスして公開されました。

https://chrome.google.com/webstore/detail/dlsite-dark2/fibkjpbpokdgbjlcdgenlbceeojnmdgh?hl=ja&authuser=0

追加後は拡張機能のとこ押すと設定画面が開きます。


本題

【拡張機能】DLsiteの明るさを抑える拡張機能になりました【dlsite-dark】

以前書いた記事↑の続き。
※初見の人に簡単に説明すると、DLsiteにダークモードがないので代わりに全体の明るさを抑えるブラウザの拡張機能を前回作った。


dlsite-darkは仕組みが簡素な代償として、明るさの調整が簡単にできない仕様でした。

で、一年近く放置してたんですがその間にブラウザの拡張機能界隈も色々あって、FirefoxがManifest V3に対応したりと、混沌期からようやく抜け出して多少の平穏が訪れてきているみたいです(要出典)
※Browser EXtensionはChromeでもFirefoxでも動くというのが魅力だったんですが、混沌期はChromeストアがManifest V3じゃないと公開できず、一方のFirefoxのストアはManifest V2のみという厄介な状態でした。

で、僕が使っているQuasarFrameworkはブラウザ拡張機能も開発スコープに入っていて、久しぶりに調べてみたらManifest V3もサポートして平穏が訪れていました。






というわけで、突貫ですが新しくdlsite-darkを作り直しました。
名前はdlsite-dark2です(なんのひねりもありません)

こいつはオプションページから明るさの調整ができます。
地味に即時反映です。そしてちゃんと設定は記憶されます。


Chromeストアのほうで公開申請中なので審査をパスしたらストアから入手できるようになります。

暗闇でインターネットしてる民で、DLsiteフラッシュ攻撃(仮称)に悩んでいる人はぜひ使ってみてください。
(ちなみに、ci-en.netは対象外なのでDLsiteフラッシュ攻撃を喰らいます)
(要望があれば追加しますが、要らない権限は与えたくないので何もなければそのままです)


余談

https://twitter.com/happy_packet/status/1666802131209449472?s=20

まぁ本当に実装するべきか考えるとビミョーなので、実現しないと思います。はい。
こういう、公式実装は微妙だけどコミュニティ実装ならまぁ……みたいなのを許容してくれて、コミュニティツールが増えるみたいな環境できたら面白そうだなぁとか思ったり思わなかったり。
(まぁコストとリスクに見合うかと言われたら悩ましいけど)



続:余談


https://twitter.com/happy_packet/status/1666680907913388034?s=20

もちろん冗談で言ったんですが、ちょっと気になったので大株主になる方法を調べてみます。


エイシスはviviONの100%子会社で、viviONはゲオホールディングスの100%子会社です。なので、ゲオホールディングスの5%くらい取得すればいいかなと勝手に決めつつ、株価を調べてみます。

6月7日の終値が1,596円。
発行株数が39,505,152株。その5%は1,975,257.6株です。

1,975,257.6(株)×1,596(円)≒3,152,511,129(円) ※少数点以下は切り捨て

わかりやすく書くと、31億5251万1129円です。
なので32億あれば買えそうです。


……。


株主優待で全作品100%OFFクーポン貰わないと割に合わなそうだと思いました。



おしまい。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

いらにか 2023/06/07 20:12

【学びの咀嚼】共同著作物のいろいろ【著作権】

※注意書き
「学びの咀嚼」シリーズは道徳的な観点抜きで純粋に学びを咀嚼するので、非道徳な文章で執筆する可能性があります。
ご了承の上でお読みください。

フォロワー以上限定無料

ほんぶーん

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

いらにか 2023/06/02 21:33

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

いらにか 2023/05/29 00:22

【学びの咀嚼】イラスト生成AI系の展開について少し考える

どうも、いらにかです。

「学びの咀嚼」シリーズは道徳的な観点抜きで純粋に学びを咀嚼するので、非道徳な文章で執筆する可能性があります。
ご了承の上でお読みください。

フォロワー以上限定無料

無料プランに入るとモチベーションを支援できます

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

いらにか 2023/04/02 11:00

【Mes】ADVで使えそうな分岐管理を試験的に組み込んでみた【試験実装】

どうもいらにかです。

Mesもβテスト準備のためにバグ洗い出しなど色々進めています。


そんな最中でした。

https://twitter.com/alumiloid/status/1642074031330557952?s=20

すごく面白いアイデアです。
いずれは、ティラノスクリプトへの変換など構想はありましたが、Mesで分岐管理がいい感じにできたら面白そうです。



元ネタのアイデアではMermaidという作図記述言語をMesの派生として生み出すみたいな発想ですが、すごく着眼点がいいです。
というのもMesの思想として、記述言語が目的にそぐわない場合は「内部のデータ構造だけ再利用して、記述言語を再設計する」ことを初めから意識しています。
(Unix哲学的に言うと、捨てる準備をしておけみたいな)



ただ、色々と考えていくうちに「Mesの構造をぶっ壊さずにいい感じに実装できるんじゃないか?」という気がしてきました。
Mesの設計思想として、「脚本(書きやすさ)と台本(読みやすさ)の分離」があるため、脚本記述には複雑性を持ち込ませずに台本側でビジュアライズ(要は図の生成)できたら理想形だと思います。



Mesには非推奨ですが「拡張フィールド」というデコレーターが存在しています。
このデコレーターは「好きなデータを突っ込んでいい」という無秩序があるため、すごく便利なんですが同時にバグの危険性と仕様の複雑化が懸念される諸刃の剣です。
まぁ、今回はこいつを使えば既存の仕様を破壊せずに分岐管理を実装できるかも知れません。


知れませんでは確証が持てないので、とりあえず実装してみます。


セクションという持て余していた機能


分岐管理において必要なのは、「AからBへいく」という情報です。

例えばAというシーンにおいて、分岐からBとCに行くとき、
A-->B
A-->C
のような情報があれば表現できます。



ただ、これだともう少しリッチな表現ができるよう「どういう場合にAからBへいく」みたいな情報も持たせたいですよね。
Mermaidの場合はこんな感じの記述になります。

A-->|Bを選ぶ|B
A-->|Cを選ぶ|C


一般的なゲームエンジンやスクリプトでは、ラベル(場所)とgoto(jump)で記述されます。
ラベルも拡張フィールドで定義してもいいかもしれませんが、Mesにはセクション(==)というシーンの区切りみたいな機能があります。
今回はセクション名をラベルの代わり使うことにします。
(要は上記のABCの代わりにセクション名で関係を定義します)

セクションを明記するとこんな感じ。

== Aルート

ここはAルートです

== Bルート

ここはBルートです。

== Cルート

ここはCルートです。


これに、選択肢の内容とジャンプ先の情報があれば作れるはずです。
ちなみに、選択肢が無く、矯正ジャンプの場合もあるので選択肢の内容は記述しない場合もあり得ますね。

というわけで、30分くらい考えてみました。
?の中に設定値としてchoose:<value>,jump:<セクション名>,を設定する感じにしました。
(試験的な実装なので、カンマは末尾でも必ず必須にしています)


とりあえず、サンプルテキストも書いてみました。

== 共通ルート

ここは共通ルートだぜ。

どこにジャンプする?
? choose:Aを選ぶ, jump:ルートA,
? choose:Bを選ぶ, jump:ルートB,
? choose:Cを選ぶ, jump:ルートC,


== ルートA

ここはルートAです
?jump:共通エンド,

== ルートB

ここはルートBです。
ルートBはCとAルートの選択があります。
? choose:Aを選ぶ, jump:ルートA,
? choose:Cを選ぶ, jump:ルートC,

== ルートC

ここはルートCです。
? jump:共通エンド,


== 共通エンド

ここは共通エンドです。

で、これをMermaidで分岐を作図するとこんな感じになるはずです。

graph TD;
共通ルート-->|Aを選ぶ|ルートA;
共通ルート-->|Bを選ぶ|ルートB;
共通ルート-->|Cを選ぶ|ルートC;
ルートA-->共通エンド;
ルートB-->|Aを選ぶ|ルートA;
ルートB-->|Cを選ぶ|ルートC;
ルートC-->共通エンド;

※共通ルートルートAのように語順の統一がされてないのはMermaidで使える文字をテストするためなのであまり気にしないでください。

Mesで解析
→拡張フィールドを解析してグラフ用のデータ構造に変換
→それをMermaid形式に書き起こす(PlantUMLとか他の記述言語でもいい)

こんな感じの処理を実装すれば実現できそうです。

試験実装をsmweに公開

というわけで、MesのテキストからMermaidテキストに変換する機能を実装してsmweに試験実装しておきました。

https://smwe.iranika.info/

一番下のサンプルテキストから「分岐図のサンプル」を選ぶと上記のサンプルテキストに切り替わり、詳細>デバッグ情報>分岐グラフ用のMermaid からMermaidに変換されたテストが見れます。


あとはMermaidの作図ライブラリとか入れれば、smweのアプリ内でもビジュアライズ(可視化)できますね。
ただ重くなりそうなので、グラフ表示の実装はスキップします(いつかやるかも)。

ちなみに、生成されたMermaidテキストをmmdcコマンドでpngに出力したのがこれです。


Mesでの記述仕様や実装したコードはまだまだ改良の余地があるので、これから検証と検討を重ねて合理化を詰めていきます。
とりあえず、Mesを使う人に「こういうことも出来そうだよ」と提示できたのは良かったなと思います。

Mesのポテンシャルはまだまだあるので、これからも伸ばしていきたいですね。

余談:Mermaidは使えない文字がある

MermaidはGithubのMarkdownに組み込まれたりして活用場面が広くなりましたが、個人的にはPlantUMLで事足りているので、話題になった時に少し触ったくらいの知識でした。

ただ、今回の実装にあたって一番ハマったのが直接使えない文字があることです。
【Markdown】Mermaid.jsで使えない?文字

これらの文字は文字参照するしかないみたいで、結構手間がかかります。
文字参照

今回の実装では、なにも手を加えていないので使えない文字はそのまま出力されます。
(それをMermaidにくわせてもエラーになるだけ)

PlantUMLはダブルクオートで囲ってしまえばどうにかなるので、このあたりの文化の違いに一番時間を溶かしました。


余談:ソースコード

ここにあります。
https://github.com/tokakuya/Mes/blob/main/Mes.Extension/GameBookExtention.cs

勢いで書いたので汚いですが、今回書いたソースコードです。
命名が微妙だったり、一部は汚いです。
どうせ後からリファクタするのでいいんですが。

Mesテキストをパースすると、Mes.core.Mesという構造化されたデータになります。
そのMes.core.Mesの拡張メソッドとして、Mermaidへの変換処理が実装されています。

なのでmes.ExportMermaid()のように呼び出せて便利です。
別の記述言語へのExport実装も簡単にできると思います。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

2 3 4 5 6 7 8

月別アーカイブ

記事を検索