はてなキーワード: STRとは
「DNA検査は必ずしも正確ではない」って言うと、え?って驚かれることが多い。
特に推理小説やドラマでは、DNA一致が決定的証拠として扱われていることがほとんどだよね。
犯人の髪の毛や血液が現場に残されていて、それがDNA鑑定で一致したらもう逃げ場なし!って感じ。正直、その描写を見るたびに「いや、ちょっと待てよ」ってツッコミたくなる。
確かにDNA検査は、親子関係を調べたり、犯罪捜査で使われたりと便利で強力なツールだけど、だからと言って100%の正確さを保証するものではないんだよ。
たとえば、科学的には「ミトコンドリアDNA」という母方から受け継がれる特定のDNA部分を解析することがあるんだけど、これは母系の祖先を辿るには有効なんだけど、全く同じDNAを持っている人が他にもいる可能性があるんだよ。そうすると、特定の個人を完璧に区別するのは難しくなることがあるの。
それから、DNAの検体が完全に清潔な状態で採取されているかどうかも大事。現場で回収されたDNAサンプルが汚染されていたり、混ざってしまったりすると、鑑定の結果も狂ってしまうことがあるんだ。たとえば、犯行現場にあったコップを通じて犯人のDNAが見つかったとしても、そのコップが他の人の手に渡っていたり、触られていたりした場合、別の人のDNAが混ざる可能性もある。
これに加えて、「一致率」っていう言葉もよく出てくるけど、これも注意が必要。
DNA検査で「一致した」と言っても、それは必ずしも100%完全一致という意味ではないんだ。
例えば、何百万人に一人の確率で一致する、というレベルでの一致を「確定的」とされることが多いけど、それでも「何百万人に一人」は存在するんだよね。つまり、稀なケースだけど、全く無関係な人が偶然DNAが一致してしまうこともあるってこと。
さらに、実際のDNA検査って、さまざまな種類の手法があるんだ。たとえば、法科学でよく使われる「STR(Short Tandem Repeat)」という手法があるんだけど、これも100%ではない。STRは特定のDNAの繰り返し部分を分析して、個人特定に役立てるんだけど、この繰り返し部分の数がたまに似ている人もいて、誤った結果に繋がるリスクがあるんだ。人間のDNAはとてつもなく長くて、解析するのはほんの一部に過ぎないから、どうしても「完全に一致する」とは限らないんだよね。
それに、DNA鑑定が使われるのは犯罪捜査だけじゃなくて、最近は家系図作成やルーツ探索、さらには「健康リスクの判定」にも使われるようになってる。でもこれも、必ずしも正確とは言えない。たとえば、あるDNA検査では「あなたは将来的に心臓病になるリスクが高いですよ」と言われるかもしれないけど、それが本当にその人の運命かというと、そうでもない場合がある。だって、環境やライフスタイルも健康には大きな影響を与えるから、DNAだけじゃ全てを決められないんだよね。
結局のところ、DNA検査って便利で強力だけど、万能ではない。
ドラマや映画みたいに「これが決定的証拠だ!」と簡単に断言できるものではないし、現実の世界ではもっと複雑で曖昧な部分もあるんだ。
マックス・テグマークの数学的宇宙仮説は、物理的実在が数学的構造そのものであると主張する。これを厳密かつ抽象的な数学の枠組みで表現する。
1. 存在論的同一性:Ob(Str) ≅ Ob(Phys) すなわち、数学的構造の対象と物理的実在の対象が一対一に対応する。
2. 構造保存性:∀ S₁, S₂ ∈ Str, Mor_{Str}(S₁, S₂) ≅ Mor_{Phys}(F(S₁), F(S₂)) すなわち、数学的構造間の射は物理的実在間の射と対応する。
以上の抽象数学的枠組みを用いて、テグマークの数学的宇宙仮説を次のように定式化できる。
この定式化では、集合論、カテゴリ論、トポス理論、モデル理論などの抽象数学を用いて、数学的宇宙仮説を表現した。
特に、数学的構造と物理的実在の間の圏同値やトポス同値を強調することで、両者が数学的に同一視できることを示している。
import os
# ファイルが存在するか確認し、存在しない場合は初期値を設定
if not os.path.exists(file_path):
with open(file_path, 'w') as file:
# 現在の年数を読み込み
with open(file_path, 'r') as file:
year_count = int(file.read())
# メッセージを表示
print(f"{year_count}年間で最も暑い夏")
with open(file_path, 'w') as file:
file.write(str(year_count + 1))
インデントつけれね
イギリスとノルウェーのすべてをレビューすることはできませんが、ロンドン(Lūndonjon / Lūndyn / Lunden)をレビューすることができます。
西暦873年にそこに立っていたであろうものの多くは欠けています。ユービーアイソフトの歴史家は、ウィキペディアからこの地図を参考にしたようだ。
https://en.wikipedia.org/wiki/File:Map_Londinium_400_AD-en.svg
しかし、その地図には、当時のロンドンの少量の建物が含まれています。このレベルの歴史研究では、ウィキペディアのような一般的な知識サイトは不十分です。
一般:
または、フォーラムの南にあるCandelwic Strætのロンドンストーン(Millarium / Praetoriumゲート)から放射する道路のパターン:
Trajectus Way:Douegæt(川までダウンゲート)からLondon Stone(Candelwic StrætのPraetoriumゲート)まで
Wæcelinga Stræt(Praetorian Way):南東からニューゲートまで
Earninga Straete (Ermyn/Ermine street a.k.a.オールドノースロード)は、Wæcelinga Stræt southwarkに同行し、南西からDouegætに入り、Cripplegateまで北上しました
ヴィシナルウェイ(フェンチャーチ通り)TrajectusからAeldgate(旧門)を通ります
フォーラムの東:
フォーラムの西:
クリップルゲート:
ルンデンウィッチ:
ゲームには一般的な「Lundenwic Abbey」が1つあります。9世紀には、ルンデンウィッチには5つまたはおそらく7つの修道院があっただろう。
他のいくつかの観察:
さて、ゴールデンウィークですね。
皆さんは新しい環境に馴染めているでしょうか。はたまたあぶれてしまったでしょうか。
安心してください。人生は何度でもやり直し可能なローグライクの繰り返しです。
まず、一人の人間がオギャーとこの世に生み出されたとする
その時点で、というよりも受精した時点である程度の初期能力が決まる
STR 9
INT 10
DEX 8
CON 12
WIS 9
LUC 10
こんなもんでしょうか。
これらの数値は、モノと質によるがある程度は鍛錬によって底上げが可能。
例えば
INTは読書、会話。
CONは走る。
WISはパワハラを受ける。
LUCはゴミを拾う。身だしなみを整える。
ただ、ここの数値以外の、BAD TRAITSを持って生まれることもある。
身体欠損とか、五感の一部がないとか、昭和以前は…ここまでにしておこう。
最近では怒りっぽいとか、飽きっぽいとか、気に病みやすいとか、
そして現代、戦後から平成に至るまで人権、というものが非常に重視されてきた。
あからさまなBAD TRAITを持つもの、あまりにステータスが低い人間は
成人する前に原因不明のまま亡くなった。
種族全体、集落全体を考えれば致し方ない部分もあったかもしれない。
翻って現代、この日本語を理解できる人間として産まれてきたのなら
先人たちのお陰で、衣食住には困っていないはず。
もちろん、困っている人が一定数いることは理解していますがここでは取り扱いません。
どんなBAD TRAITSを持とうと、どれだけ低いSTRで産まれようと
成人まで生きていける社会。
否、生かされてしまう。という風に受け取る方もいるかもしれない。
自殺者が増えている、という切り口で、日本が悪い国だという方がいる。
さも、日本社会が、戦前・戦後と比べて不幸せな国になったかのように。
それも当然そのはず。
社会についていけないだろう、あるいはついていけなかった人間は、
けれど、あまねく救ったのなら、彼らが幸せな生活を送れるようにすること、
これはセットでなくてはならない。
もちろん、日本人として生きるのなら勤労、教育、納税、これらを行ったうえで、が大前提だ。
その中、ごく一部の、理由なく働きたくないでござる、という人間は放っておいていい。
ここまでが、大前提。
生まれ持った能力と特性。変えられようが無いこと。神様どうか。
わたしの目が悪いのも、ADHDでどうしても忘れ物をしてしまうのも変えようがない。
変えようがないけれども、眼鏡を掛けて、リマインダーを駆使して
それは全て先人たちの努力と試行錯誤のお陰だ。大いなる巨人の肩だ。
そしてそれらのハンディキャップは、現在進行形で見えなくなりつつある。
さてそうした時に、だ。
配られたカードが、それほど変わり映えしなくなった後、
一体なにが大事になるのだろう。
実家の太さか?生まれた国か、地域か?運か?学歴か?親か?国か?
いずれも違う。
自分の周囲にいる人間をどういう構成で固めるか、これに尽きる。
これはもう詰みかもしれない。
これはどうだろうか。それほど悪くないんじゃないか。
1人の人間が、社会的接触を保持している関係の人の数のことらしい。
150人くらいが、社会的交流が保たれる限界の数ということが有名な部分だろうが、
3~5人が最も親密な友人関係を築ける人数だというものもある。
あなたの年収は、自分の近しい周囲の5人の年収の平均値になる。
というものがある。
これが友人なのか、職場の友人なのかしれないが、
5人の平均値になるのだとして。
といったようにするか。
果敢にも、孫正義、イーロンマスク、ジャックマー、ウォーレンバフェット
とするのか。
おれは、幼少のころからインターネットの世界にのめりこんできた。
周囲に馴染む同年代がいなかったマセガキだからだ。要するにいじめられっ子だ。
一人っ子だった自分のデッキには、両親以外には1人親友がいるかいないかで、
親を周囲の四枚に加える必要は無かった。
月一回程度は気に掛けてくれたから。
高校でも大学でも、大体の場合は10以上年の離れた人間を入れていた。
年上の人間は優れているかは別にして、必ず別の視点を提供してくれるからだ。
一つ変わったのは今までいなかった年下が入り込んでいることくらいか。
ローグライクでいう選択肢、何か挑戦するものがあるかといえば、
仕事や子育てなど、人生のターニングポイント的なところになる。
攻略できる算段はないが、失敗したとしても納得がいく構成なのか。
子育てもそう。
どういう人となら、子育てという20年を超える一大事業を完遂できるのか。
お互いの両親の支援はどうか。
"こうしたら上手くいくかな"といって何かのツールでアシストするのか。
そこでベートーベンやヘレンケラーの伝記を読んで自分を奮い立たせられるのか。
そして上記で挙げたLUC、つまり運は何かと言えば、コネ・人脈の源泉だ。
自分にできる最大限の努力をしている姿を見れば、誰だってあなたを助ける。
決して腐らず、善い人であり続けろ。神様・仏様は見てくれる。俺も見る。
どの部活に入るのか。
どのサークルに入るのか。
どの会社に入るのか。
逆に何かを辞めてみるのか。逃げてみるのか。
もちろん、あなたも人"間"です。
あなたが人々に影響を与えることもできるのです。
グループを、目の前のマンモスをやっつけるよう鼓舞することもできるのです。
自信がない?
あなたのステータス、トレイツに応じた貢献の仕方がきっとあります。
さあ、春です。
巨人たちの肩に乗り、素晴らしい仲間たちと、どんなマンモスを倒していこうか。
わくわくしますね。皆さんの新しい門出に幸あれ。
import json import urllib.request # True にするとユーザー名を隠す hide_user = False # 以下を書き換える。sys.argv 使ってもいいんだけど url1 = "https://www.cygames.co.jp/news/id-23172/" url2 = "https://mtg60.com/archives/palworlddoujinsi.html" def get_bookmarks(url: str): req = urllib.request.Request(f"https://b.hatena.ne.jp/entry/json/{url}") with urllib.request.urlopen(req) as res: dict = json.loads(res.read()) user_comments = {} for bookmark in dict["bookmarks"]: if bookmark["comment"]: user_comments[bookmark["user"]] = bookmark["comment"] return user_comments b1 = get_bookmarks(url1) b2 = get_bookmarks(url2) common = set(b1.keys()).intersection(b2.keys()) print(f"[1] {url1}") print(f"[2] {url2}") print() for user in sorted(common): if hide_user: print(user[0] + "*" * (len(user) - 1)) else: print(user) print(f"[1] {b1[user]}") print(f"[2] {b2[user]}") print()
def get_game_number(remaining_teams, games):
if remaining_teams < 2:
return games
remaining_teams = remaining_teams / 2
if int(remaining_teams) < remaining_teams:
games = games + 1
remaining_teams = int(remaining_teams)
games = games + remaining_teams
return get_game_number(remaining_teams, games)
print('Required number of games is ' + str(get_game_number(32, 0)))
ワイ:
GPT:
了解しました。以下は指定された条件に基づいて動作するPythonのGUIアプリのコードです。このアプリはtkinterを使用しており、毎秒カウントが増加し、その数値に基づいて画像が切り替わるようになっています。
import tkinter as tk from tkinter import Label, PhotoImage def update_count(): global count count += 1 count_label.config(text=str(count)) if count % 3 == 0 or count % 5 == 0: face_label.config(image=goofy_face) else: face_label.config(image=serious_face) root.after(1000, update_count) def on_close(): root.quit() root.destroy() root = tk.Tk() root.title("Face Display App with Counter") # ふざけた顔と真面目な顔の画像をロードします # 以下の部分は、DALL-Eで生成された画像のパスに置き換える必要があります goofy_face = PhotoImage(file="path_to_goofy_face_image.png") serious_face = PhotoImage(file="path_to_serious_face_image.png") count = 0 count_label = Label(root, text=str(count), font=("Arial", 24)) count_label.pack(pady=20) face_label = Label(root, image=serious_face) face_label.pack(pady=20) update_count() root.protocol("WM_DELETE_WINDOW", on_close) root.mainloop()このコードでも、PhotoImageオブジェクトを使用して2つの画像(ふざけた顔と真面目な顔)をロードしています。path_to_goofy_face_image.pngとpath_to_serious_face_image.pngは、DALL-Eで生成された画像の実際のパスに置き換える必要があります。
このアプリは、毎秒カウントを増加させ、そのカウント値に基づいて画像を切り替えます。カウントの数値も表示されます。エスケープキーまたはウィンドウを閉じることでアプリを終了できます。
ワイ:
GPT:
こっちの方がいいな。
本当にあった話だけど、JavaScriptでstrっていう変数にテキストが入っていて
その変数に'apple'とか'banana'とかが入ってるかどうかを判別するっていうロジックを作るときに
const re = new RegExp("apple") if(re.test(str)) console.log("match")
const re_apple = new RegExp("apple") const re_banana = new RegExp("banana") if ( re_apple.test(str) || re_banana.test(str) ) console.log("match")
っていうコードを書く人がおるんよ
別にプログラミング初めて3ヶ月の初心者じゃ無くて20年以上やってるようなベテランだったり
なんならチーフプログラマーとして若手指導してるような人でもこういうレベルの人って割といるわけ
これに対して
「正規表現でORを書くべき」
「includeで十分」
綺麗にコードを書くっていうのは
「これってappleとかbanana以外に増えたりしないの?」
「fruitsかどうかを判別するならその変数を作った方が良くない?」
っていうのを考えて実装するのが綺麗にコードを書くっていうことで
ちなみに
「正規表現でORを書きましょう」
「動いてるからいいじゃない」
「綺麗に書いても性能上意味ない」
「言ってることが良く分からない。何が違うのか」
とか言ってくるし
自分は上段に座しているつもりで偉そうな上から目線の半分的外れな説教だの、はたまたその体すら為していない放言だのを安全な位置から投げつけたいだけのカスしかここにはいない。
このタイトルを見て、意識高い系文系イキリ勘違い野郎に何事か物申してやろうと考えたそこの画面の前でニチャニチャしているパソカタオタク(パソコンカタカタキモオタク: 声は小さいがタイプ音はでかい)のことである。
あるいは増田のことかもしれない。増田は日頃増田に生息している訳ではないが。
お分かりの通り、これは釣り記事である。そもそも意識高い系文系イキリ勘違い野郎が増田に記事を書くわけがない。が、一応タイトルに嘘はない。
ので意識高い系文系イキリ勘違い野郎を志す意識高い系文系イキリ勘違い野郎予備軍のことを思って以下を書く。
ちなみに、この記事のタイトルは増田が一番嫌いなタイプのそれである。自分で設定したのに今、額に青筋が浮かんでいる。
本項ではWebエンジニアになるにあたって増田がやったことを列挙する。
1. プログラミングを独学する
2. スクールに入る
3. アルバイトをする
なるほど、至極単純である。では順に詳細を見ていく。
ここに関しては特に言うこともない。
ネットの記事を見ながらCだのDだのC++だのを実際に吐くまで勉強した。
その経験を踏まえて意識高い系文系イキリ勘違い野郎予備軍にアドバイスするならば、独学の上で最も身になるのは"C++を用いて簡単なスクリプト言語のインタプリタを実装する"ことである。
インタプリタの実装という作業はプログラミング言語そのものに対する解像度を飛躍的に向上させる。
不可思議なお約束の塊であった文法や意味論が因数分解されるように頭の中で整理され、ブラックボックスであった標準ライブラリの内部について想像が及ぶようになる。
道具たるプログラミング言語に対する理解は、当然その使途であるプログラミングそのものを助ける。
ところでパソカタオタク諸兄姉は「なぜ今C++などという時代遅れのクソ言語を」と思ったかもしれない。
確かにC++はもはや洗練から程遠い聳えるバベルの塔である。しかし、こと言語実装の習得においてはこれほど適している言語もない。
C++はGC付きの他言語と比較して抽象度が低く、全てを自身で管理しなければならないが故に"便利な魔法"にあまり頼れないのである。
また、C++で導入された様々な思想、イディオムは他の言語にも大きく引き継がれている。
例えば洗練という意味でC++の対極に位置するRustという言語は、もはや本質的にはC++そのものである。
Rustの代名詞である所有権、ライフタイムはそれぞれC++の反省から生まれた言語要素であるし、move semanticsはC++11におけるmove semanticsと同様のものである。
GC付き言語の利用者にとってしばしば混乱の原因となりそうな`str`と`String`も`std::string_view`と`std::string`を知ってさえいれば迷いの発生する余地はない。
他のより抽象化された言語についても、C++との対応を考えることでその言語や標準ライブラリそのものの実装について十分に理解を深めることができる。
なぜならば過去の多くのスクリプト言語やコンパイラはC/C++によって実装されていることが多いからである。
そんなわけで、増田は"C++を用いて簡単なスクリプト言語のインタプリタを実装する"ことを勧めている。
増田が入ったスクールは、多くのそれが半年あたり70万程度の授業料を取る(らしい)のに対して同期間で28万程度と非常にリーズナブルであった。
ただし、卒業までは最低4年と長期間を要するし、増田は卒業後も2年さらに通った。
おいそこの意識高い系文系イキリ勘違い野郎予備軍、カスみたいなプログラミングスクールに入るな。
ところでそろそろ察せられるだろうが、増田の前職とは学生を指している。
大学は情報工学を教えてくれるが、別段それを学んだからといってプログラミングができるようになるわけではない。あくまでそれらは相補的なものである。
一方で、独学では分野に偏りが出がちだし、なにより独学にも金が要るので学生の身分にとってプログラマのバイトは良い選択肢である。
アルバイトはITエンジニアの経験に含めなくて良いのか怪しいが、増田のバイトの業務内容はWebエンジニアと言いきってよいか悩ましい類だったので嘘は吐いていない。
ちなみに増田は増田に書き込むような人間であるからして社会性というものが欠落している。
ちなみに月収は大学院2回生の収入0時代からの差分で算出して+50万なのでつまるところそれが現在の月収である。
増田にとって低くはないが、決してITエンジニアとして高い方であると主張することはできない程度の額である。
釣りのためにタイトルに含めた以上最低限の説明のはしたが、増田は金の話をすると脳の血管がブチギレそうになるのでこれ以上その話はしない。
ここまで読んだならわかると思うが、増田は意識高い系文系イキリ勘違い野郎(タイプ音がでかい)ではなく、パソカタオタク(パソコンカタカタキモオタク: 声は小さいがタイプ音はでかい)である。
そして、意識高い系文系イキリ勘違い野郎予備軍に言うべきことがあるとすれば、そもそもこの記事をここまで読んでいる時点でITエンジニアには向いていないので止めといたほうがよい。
また、ひょっとすると思い違いをしているかもしれないが、ITエンジニアというのは大抵 (増田は社会経験がほぼないので一般論を言うことは出来ないが) 意識高い系イキリキラキラ野郎サイドではなくパソカタオタクばかりである。
というよりTwitterにいる意識高い系イキリキラキラ野郎は多くの場合意識高い系文系イキリ勘違い野郎予備軍を養分にする人でなしである。騙されてはならない。
また、一つ理解しなければならないのは意識高い系文系イキリ勘違い野郎予備軍諸兄姉が張り合わなければならないのは、プログラミングスクールの同期でも、「#駆け出しエンジニアと繋がりたい」している有象無象でもなく、幼少から寝食や友人や遊びを自ら捨ててパソカタにのめり込んでいた、そして現在進行系でのめり込んでいる歴10年や20年をゆうに超えるSSRパソカタオタクであるということである (そしてそれはNRパソカタ増田も同様である)。
彼らが「スクールで半年学びました」で並び立てるような人間でないのは単純な算数でわかるほど明らかである。悪いこと言わんからキラキラWebエンジニアを目指すのはやめとけ。
あるいはそれでも目指すのであれば自分が何を捧げられるのかを考えた方がいい。
【うるてぃましっくす いつわりのよげんしゃ】
開発元 インフィニティー
定価 9800円(税別)
プレイ人数 1人
判定 なし
世界3大RPG『ウルティマ』シリーズ第6作のスーパーファミコン移植版。
プレイヤーは「アバタールの聖者」と呼ばれる君自身。謎の敵『ガーゴイル』との戦いの勃発により、再びブリタニアに召還される事となる。
特徴
自由度が非常に高い。
逆に言えば、どこから進めるべきか具体的なヒントが極端に少なく、何をすればいいのか分からなくなることがとても多い。
同じ世界3大RPGの『Might and Magic』同様、クリアを目指すのではなく冒険そのものを楽しむためのゲームである。あちらに比べれば随分と親切設計なので敷居は低い。
ただクリアを目指すためだけにプレイすると、クリアに関係ないイベントでガッカリしたり、謎解きで心が折れてしまったりするかもしれない。数日でクリアしようなどと考えず、コツコツと冒険を楽しむという心構えで挑むべきだろう。
人との会話は「なまえ」「しごと」などキーワードを質問することで情報を聞き出す選択制。洋ゲーはこういう形式が多い。
衛兵などを除いて全ての一般人に名前がある。普通のRPGのように一言しか発しないモブキャラが大量に歩いているという不自然さがない。
一度会話した事のある人物は最初の挨拶が変わるのですぐにわかる。
使ってもなくならない重要アイテムで、主人公の周囲のいずれかのマスにおいて使うと、マスによって決まった位置にワープできる。
ただし、主人公の真下などの簡単な位置におくだけで『ガーゴイル』の巣くうある重要な場所にワープできてしまう為、いきなり訳の分からない場所に放り出されて強力なガーゴイルに襲われて面食らうのもまたお約束。ちなみにそれらの場所はゲーム後半でかならず行く必要が出てくる場所なのだが、ゲーム開始直後からいきなりいけてしまうのはどうなのか。
従来のようなムーンゲートシステムも健在。ただし位置固定ではなく、ムーンストーンを埋めた場所に現れるようになった。固定電話から携帯電話に進化したような感じ。
「ゲート・トラベル」という魔法を使えば、そのムーンストーンを埋めた場所にワープができる。ただしLV7魔法なので主人公をだいぶ育てないと使えない。
ダンジョンは3Dではなくなり、「ドラクエ1」のように、主人公の周囲以外が全て真っ暗になる。
「たいまつ」や魔法「ライト」を用いて周囲を明るくして進むのが定石となる。なお、奥深くもぐっていくほど、BGMがだんだんと暗くなり、音量が小さくなっていくという特徴がある。
ちなみにこのゲームの「たいまつ」は、片手に持つアイテムなので、たいまつを持つキャラは、たいまつが消えるまで両手装備武器を装備できない事になる。また、一度持つと消えるまで外せない。
街にいる兵士に戦いを挑める。
ただし、カルマシステム(後述)の関係で、こちらに危害を加えてこないものを攻撃するのは得策ではない。
過去作と違い、ロードブリティッシュ(この世界の統治者)と一戦交えることは出来ない。
この世界の住民すべてが1分単位(!)で生活しており、夜になると宿屋すら閉まってしまう。
かわりに「キャンプ」システムで、時間経過+回復が可能。ただし、各々のキャラが食料を持ってないと回復できないので注意。
魔法は店で呪文の書かれた紙を購入して、呪文の書というアイテムに書き込む事で使用できる。
本作では主人公以外のキャラはMPが非常に低いので、魔法キャラは必然的に主人公のみとなる。本作は魔法にレベルが定められており、レベルが高い魔法は、キャラのレベルがそれに届かないと使えない*1。
呪文の書は片手装備扱いであり、装備していないと呪文を使えない。よって本作では主人公に両手武器を装備させるのは得策ではない。強力な武器はデュプレなどに任せるのが吉である。
戦闘はMAP上でそのまま行われるタクティカルバトルとなっている。
敵は基本的に強くなく、難易度は比較的優しい部類。だが、例外としてガーゴイルやデーモン、ドラゴンなどの強モンスターは一変して本当に手強い。
消費アイテムの「火炎瓶」が、範囲攻撃+安価+なかなかの威力なので、これを投げつけていればいつのまにか敵が死んでいる。人に投げつけてはいけません
因みに経験値は敵を倒したキャラのみが得るシステムの為、育てたいキャラがいる場合は火炎瓶を投げまくる事も多い。
一部の魔法以外は、その攻撃範囲内に味方がいると味方までダメージを喰らうこともある。
ごく一部の重要なアイテム以外は、キャラクターによって装備できるアイテムに違いはない。没個性ととるか自由度が高いととるかはプレイヤー次第。
弓矢などの飛び道具は、力ではなく素早さが重要になる。力の高いキャラは剣などの武器で直接攻撃を、素早さの高いキャラは弓矢で援護をするという役割になる。
弓には「普通の弓」と「クロスボウ」の違いがあり、使用する矢が違う。
『カルマ』と呼ばれるシステムがある。最高値は100で、最低値は0。
「人のお願いを適えてあげる」「物をめぐんであげる」「神殿でレベルアップする」など、良い事をすると上がり、「物を盗む」「兵士や無害な動物に攻撃を仕掛ける」「嘘をつく」など、悪いことをするとカルマ(業)が下がってしまう。
敵に攻撃を仕掛けられた場合は、反撃で倒してしまっても正当防衛ということでカルマは低下しない。環境の悪い場所では猫やウサギなども襲いかかってくることがある。
カルマが下がると、店の価格が高くなるほか、死亡からの復活時に総合EXPが減るという仕様がある*2。経験値を稼ぎにくい本作において、これは非常に辛い。
さらに、終盤のイベント時に『カルマ』が80以下の状態である選択肢を選ぶと、ゲーム進行ができなくなる*3。該当の選択肢を選ぶ際には、カルマが80以上あるかどうか必ず確認する事。
救済措置として、シェイムのダンジョンにいるイバラというNPCに食料をあげるたびにカルマが1上昇するようになっているので、どうしても行き詰まったらここで調整する事が出来る。だが、このダンジョン自体がかなり入り組んでおりイバラのところにたどり着くのも苦労するので、悪人プレイをするには相応のデメリットがあると暗に伝えてくれている要素ともとれる。
LVアップは『神殿』と呼ばれる場所で行う。この『神殿』は、最初はガーゴイルに占拠されており、解放の為に『ルーン』なるアイテムを探す必要がある。また、既存のRPGと違い、そのキャラの総合EXPが一定値を超えているとレベルアップができるシステムとなっている*4。
本作での最高レベルは8。一見低いように見えるが、本作で敵から得られるEXPは多くても60前後がいいところ。そしてLV8に必要な総合EXPは6400と、実際にプレイすると分かるがかなりの敵を倒さなくては到達できない数値である。
神殿を解放すると『ムーンストーン』というアイテムが手に入る。これはゲームクリアに必要なので、必然的に、8つある神殿全てを解放しなければならない。
また神殿によって、LVアップボーナスが違う。能力値に差が出るので、LVアップの際に方針を決めておこう。
STR+3の「勇敢さ」、INT+3の「誠実さ」、AGI+3の「優しさ」、全パラメータ+1の「清らかさ」のいずれかでLVアップするのが望ましい。他の神殿はLVアップボーナスが少ないため、損してしまう。
ただしどの神殿でも、最初の1回目のレベルアップ時のみカルマが+10されるため、無駄ではない。補欠となる仲間にレベルアップさせてカルマを回復するのにも使える。
シリーズキャラ「ねずみのシェリー」は、本作ではなんとアイテムとして持ち歩く事になる。
その小さいサイズから、主人公達が入れない場所のアイテム回収に用いる。実は重要アイテムの回収の為にシェリーが必要な場面もある。
ポーランドではブルマーを何と呼んでいたか。調査が難航したため、僕は気分転換のためハンガリーについて調べた。そこで、思いがけない事実を見つけた。どうやらハンガリーではブルマーでは少数派で、レオタードが中心であったらしい。しかも、学校によっては今でも使われている形跡があるのだ。以下、ハンガリーのレオタード事情について概説する。
Így tornázott a nagyi meg a dédi: az iskolai testnevelés története képekben - Dívány
ハンガリーでは、体育の授業は内務相や文化相を務めたKuno von Klebelsbergの時代に導入された。ウィキペディアによれば、彼は地方に小学校を作り、大学を近代化し、ハンガリーの文化を海外に紹介する機関を創設した。その一方で、彼はハンガリー至上主義者であり、かつてのハプスブルク帝国内の少数民族に対してその優位性を主張していた。また、トリアノン条約によるやブルジョア・共産主義革命などの原因として、ユダヤ人を非難していた。
さて、当時の体操着を見てみよう。男子の制服は、写真を見ると白いシャツに短パン、それからおそらく革の靴であった。女子は、次のページを見る限り1930年代では、膝の上まであるワンピースタイプの運動着であった。初期のレオタードである。
それ以降の写真を見ていると、女子は短パンになっていくように見える。
だが、次のサイトを見ると、30年間から40年前はレオタードが使用されていた、と書かれている。2018年の記事だから、1979年から1989年に該当する。
Ilyen volt a tornaóra régen! | nlc
男子はポーランドのようにノースリーブに短パンなのに対し、女子は靴下にナイロン製のレオタードだった。また、お尻にゴムの跡がついて苦痛だった、男子がうらやましかった、とも書いてある。
この下の記事によれば色は青か黒、赤はめったになかった。また、素材のせいか汗をかくとべたついて嫌だったそうだ。
Ebben tornáztunk 30 éve! | nlc
学校のものかどうかはわからないが、60年代のレオタードをこちらで見つけることができた。
Május elseje régen – IV. | elekfoto
Tornaóra – 1976. – Szegvár Online
ところで、次のページを見ていただきたい。
szeged.hu - Lányok, asszonyok a Tisza-parton és konflisban
こちらでは、レオタード姿の女子が外でジョギングしている写真がある。1981年のことである。レオタードが室内着だと思っていた自分は面食らった。よく、ブルマーで校外を走らされるマラソン大会が苦痛だった、という女性の声をしばしば聞く。ましてや、より体型の出るレオタードというのは、率直なところ驚いてしまった。
Jobb nő - lesz - Faluság(短パンの写真もあるが、おそらく例外的なものだろう)
身体を伸ばすバレエならともかく、高校の体育で伸縮性のあるレオタードは不要ではないか。しかも、それで市街地を走らなければならないとは。ブログの主はそう口にしつつ、じろじろ見られることを苦痛の理由として挙げている。まったく、その通りだ。どうしてこんなことがまかり通っていたのかという疑問が浮かぶが、ブルマーが30年も通用していた国の人間が言えた義理ではない。繰り返すが、露出度の多い衣装の強制には反対する。
しかし、だ。現在グーグルで「iskola testnevelés」(学校 体育)と検索すると、レオタード姿の女子が少しだけヒットするのである(2010年代前半の記事が多い)。これが私立なのか公立なのかはわからない。おそらく例外だとは思う。上記のレオタードとは色も違う。ほとんどが日本と同じようなシャツに短パンだ。だが、ハンガリーのジェンダー意識は、日本よりも保守的である可能性がある。
気が向いたら、他の国の事情について調べる。
また、映画の中でブルマやレオタードがどう表現されてきたか、についても調べたい。しかし、先日「フランス映画 ブルマー」と検索したら、なぜかフランス書院のページしか引っかからず、ずっこけた。
また、それとは別に、20世紀の体育の授業を見ると、まるで軍事教練のように男子が上半身裸の例が多い。このあたりの規範についても時間があればまとめたい。
それと、ウィキぺディアの制服のページを見ると、日本統治下の台湾で、提灯ブルマーかモンペが採用されているのが見えた。もしこれが提灯ブルマーならば、なぜ台湾や韓国ではショーツ型ブルマーにならなかったのか。最初から短パンだったのならともかく、疑問である。
服飾史、まったく沼が深くて驚いている。
最初にブルマーについて調査した記事で、ポーランドのブルマーの映っている動画を紹介した(3:55頃から)。そのことから、自分はポーランドにおけるブルマーの存在を証明したと満足し、それ以上の調査をやめた。しかし、先日のドイツのブルマーにまつわる記事で、ドイツ語のブルマーの名称を知ったことから、そもそもポーランドでブルマーを何と呼んでいるかを調べた。
結果として、今回は具体的な名称を見つけることはできなかったが、ポーランドにおけるブルマーの年代をもう少し細かく絞り込むことができた。
ポーランドの体育の歴史は1805年にさかのぼる。医師であり化学者でもあるJędrzej Śniadeckiが、身体の訓練がなおざりにされ、精神だけの訓練が行われていることを嘆き、体育を創始した。彼の目指した水準は高く、「レスリング、さまざまな武器の使用、ダンス、ジャンプ、高い木に登る、溝をジャンプする、水泳、乗馬、走りながら馬に乗る」などが教科に含まれていた。また、どうやらそこの学校では、ポーランド語も教えられていたようである。ポーランドが分割されていた時代のことと考えれば、驚きである。
ソコルはチェコのブルマーについて記載した記事でも書いた通り、チェコの民族的体育運動協会である。ポーランドのソコウはそこから派生した団体である。1863年蜂起の失敗後、同年2月に設立された。同時期のスカウト運動とは逆に、右翼的傾向があった。それに危機を覚えた当局による迫害が続いた。プロイセン占領下のポーランドでもそうであったし、独立後、再びナチスに占領されても迫害を受けた。
にもかかわらず、ソコウはポーランドの独立運動の一翼を担ったのである。
しかし、共産主義政権が成立するとソコウは違法化され、これにまつわる情報はすべて検閲された。1989年に合法化され、1990年にソコルポーランド体育協会連盟(とでも訳せるか)
へ名称を変更、現在は80のグループに8000人を擁し、若者に愛国心や市民の義務を教える団体となっている。
なお、余談だがサッカーを庶民のスポーツとして嫌ったため、20世紀に何人かのメンバーが離脱、独自のサッカークラブができるが、これがポーランド最初のサッカーチームの起源である。
(英語版では1935年の提灯ブルマーが確認できる。ポーランド語版では1937年、提灯ブルマーでのマスゲームが確認できる)
上記の「ファクト」というサイトによれば、当時はズボンとゆったりとしたシャツを着て、女の子はドレスを着て運動した、と書かれている。またソコウ(自動翻訳では「ファルコン」と出てくる)では軍服のようなものを身に着けた、とある。ブルマーに関する記載がないことに、僕は困惑した。証拠となる映像も画像もそろっているのに、文章が見つからないのである。
ポーランド語は一言もわからないので、以下の語を翻訳し、組み合わせて検索してみた。「体操着」「紺色」「ブルマ」「短パン」「共産主義」「1960年」「歴史」「恥ずかしい」など。ここで思いがけなかったのが、中東欧の多くの言語で「体操着」で画像検索すると、女性用のレオタードばかりヒットすることだった。
Wikipediaのポーランド語版Mundurek szkolny(学校の制服)で検索したが、それらしいものはヒットしなかった。イギリスの制服に関する項で、
とあり、これは
を意味するので、検索のヒントになるかと思ったが、結局見つからなかった。
pamietam obowiazkowy stroj na wf szorty granatowe bialy podkoszulek.
これを日本語にするとこうなる。
これが数少ない、ポーランドのブルマーにまつわる証言である。名も知らない誰かのコメントで、ポーランドのブルマーはあったのだと、映像だけでなく、言語でも納得できた。
こちらは過去のポーランドを撮影した写真のアーカイブだ。検索ワードをgimnastykaに変えても同じような写真が出てくる。
幸いなことに、写真の下には年代が記載されている。1930年代、1948年と書かれた写真は提灯ブルマーだが、1960年代を映している写真は、間違いなくショーツ型ブルマーだ。
また、こちらでは、少しダボダボしているが1950年代のブルマーを確認できる。
他にもブルマーで運動する女性の写真は何枚か見つけたが結論は同じであり、リンクをいたずらに増やしても意味がないので、割愛する。
陸上のブルマーやバレーボールのブルマーについてもある程度調べようと思った。一つには、日本のブルマーがバレーボールに影響されたという説があるからであり、もう一つにはブルマーのポーランド語での名称を探すヒントになるかと思ったからだ。
こちらでは1972年の陸上ブルマーの普及の様子を確認できる。
また、こちらでは陸上ブルマーの是非について論じているが、タイトルが「Majtki dla biegaczek」、和訳すると「陸上のパンティー」である。これがブルマーの正式名称かと思ったが、どうやら違うようである。
これ以上探しても見つからないので、調査は一段落とした。元々は体育のブルマーの調査だ。プロスポーツのブルマーとは少し違う。日本でも競技用ブルマーの浸透した年代と、学校制服のブルマーの普及した年代には、かなりのずれがある。名称の調査はともかく、この画像検索ではずれが出てくる。いずれ、競技用ブルマーの普及した年代を調査することがあれば、そのときに改めてまとめなおす。
もしかしたら、グーグルもDeepLも、単語レベルでの正確なニュアンスに関してはまだ改良の余地があるのかもしれない。また、日本語からか英語からかでも、訳語がぶれた。
それと、今回は自分の落ち度だが、系統的に単語を調べず、頭に浮かんだまま検索したので、何度も同じ単語で検索してしまった。また、サイトによっても訳語のブレがあった。気晴らしの調査であるとはいえ、ドキュメントファイルかなにかで記録を取りながら調査すべきであった。
もしかしたら、画像検索ではなく、文章で検索すべきかもしれない。たとえば、「体操着 共産主義」ではこちらの質問サイトが見つかり、ブルマーが黒っぽかったことを示唆する内容もある。
Wątek "Strój gimnastyczny " - wielkiezarcie.com
できることなら、なんとかポーランドのブルマーの名称を確認したい。
また、ブルマーの普及状況について、国ごとに調査を継続したい。
ちなみに、今回自分は並行してハンガリーのブルマー事情について調べていたのだが、思いがけないことが明らかになった。それに関してはできたら一週間以内に記事をアップロードし、共有したい。
遅れたら失礼。
何かソースを出せという人が多かったから出す。あと本旨があまり理解されてないっぽいのでそれも再確認する。
前の文の下に繋げようとしたらできなかった(長すぎたのかな?)ので、トラバの方にぶら下げることにする。
フィンランドの鉄道については、元増田が引用したソースの下の方で
"Most stations are accessible." (ほとんどの駅はアクセシブルです)と書いてある通り。
accessibleとは直訳すれば"アクセスできる"という意味で、バリアフリーの文脈では障害等に関わらず利用可能な状態であることを指す。
ノルウェーの鉄道の場合、ありがたいことにノルウェー国鉄の全駅の情報が見れる。→https://www.banenor.no/en/startpage1/Search-for-stations/
ここにリストアップされている全336駅中、"Wheelchair access to platform"が無いのは34駅(有っても不完全な駅も含む。完全に無い駅に限ると23駅)。
Vakås駅のページにはアクセスできなかったので、23~34/335=約7~10%の駅が車椅子利用者にとって"not accessible"と言える。
これはド田舎まで含めたノルウェー全土の数値なので、ほとんどの駅でアクセシブルと言ってもいいだろう。「90%程度では"ほとんど"なんて言えない」と言う人は、まあ私と感覚が合わなかったということで一つ。
スウェーデンのほぼ全ての駅に関する情報はhttps://www.dinstation.comで提供されている。
掲載されている124駅のうち、アクセシビリティの情報が書いてあるのは97駅、そのうち車椅子でアクセスできないエントランスがあるのは12駅。
約12%の駅(情報なしは除外して12/97)が車椅子ユーザーにとって"not accessible"である。ただし仮に情報が無い駅を全部"not accessible"とカウントした場合、それは約31%(="accessible"な駅は69%だけ)になるため"ほとんどの駅でaccessible"という私の見解が揺らぐことを、公平のために記しておく。
地下鉄はエレベーター完備。列車の乗降口はプラットフォームと無段差。追加の支援が必要な場合は列車やプラットフォームにある呼び出しボタンが使える。→https://dinoffentligetransport.dk/en/customer-service/rules-and-guidelines/disability-access-conditions/
Lokaltog(地方鉄道の総括,123駅)についてはhttps://www.lokaltog.dk/kunde/handicaphjaelp/に書いてある。これは追記前にも言及済み。
曰く"Du kan som kørestolsbruger, spontant rejse med toget på alle Lokaltogs strækninger uden at aftale nærmere med Lokaltog på forhånd. På de stationer, hvor tog og perron ikke er i niveau, vil togets lokomotivfører lægge en rampe ud./車椅子利用者は、すべてのLokaltogで自由に事前連絡なしで旅行出来ます。もしプラットフォームと電車の乗降口に段差がある場合、車掌がスロープを設置します。"
ただし、Østbanen(デンマークの地方鉄道)のLille Syd線ではGadstrup、Havdrup、Lille Skensved、Ølbyの4駅についてはlevel-freeではないため、ここを利用したいなら事前(利用12時間前)にハンディキャップサービスに連絡が必要。そうした場合、最寄りのlevel-freeな駅まで送ってもらえる。
DSB(デンマーク国鉄)の駅に関する情報はhttps://www.dsb.dk/kundeservice/stationer/でみられる。
ここではアクセシビリティとして階段とエレベーターの有無が見られる。
リストされている317駅で"階段はあるがエレベーターが無い"駅は30である。またどちらもある駅が129、どちらもない駅(=平屋建て)が156。
ノルウェーと同様、9割以上の駅が"accessible"である。
「どちらもない駅がバリアフリーとは限らないじゃないか。階段がないだけで段差だらけかもしれないだろう」という意見もあるかもしれない。
このリストにはLokaltogの利用駅も含まれており、それらがlevel-freeと見做されている以上、他の駅もそうだろうと考えるのが自然と私は考えた。
ただGadstrup、Havdrup、Lille Skensvedの3駅はLokaltogのサイトで言ってる通り階段ありエレベーター無しだが、Ølbyは両方あることになってる。同名の別駅か、最近改修されたのか、情報が間違っているのか。
氏の紹介した例は要予約のサービスであり、別に予約しなくとも駅は使える。
車椅子ユーザーにとって"not accessible"でありかつその支援サービスが提供されている駅でのみ発生する事態なのだが、"not accessible"な駅自体が少ないことはこの追記で述べた通り。
なお駅が"not accessible"で支援サービスもない場合は諦めよう。駅員さんが賃金外労働で助けてくれたりはしないぞ。
これには特にソースを出さずに言ったため、疑問に思った人が多かったようだ。なので追記で根拠とソースを出した。私としてはこれで十分と思うが如何に。
(1)と若干被ってるか。事前連絡が必要なケースは北欧の方が日本より少ないのは確かだが、無いわけじゃない。(あと必須じゃないがした方が得なので自発的に連絡する人は多い。)
なので"伊是名女史のケースは北欧でも事前連絡が必要なケースに該当するかもしれない。"と書いた通り、「北欧なら伊是名女史は連絡なしで乗れたのに!日本は遅れてる!」という意見があるとすればあまり正しくない。
仮に伊是名女史がノルウェーのVieren駅(https://www.banenor.no/en/Railway/Search-for-stations/-V-/Vieren/)に行っても列車に乗るのは不可能だっただろう。この駅なら事前連絡しても無理だろうけど。
北欧ではどうやってエレベーターとかきっちりつけてんの?金もつん?という疑問が見受けられた。その疑問に一部答えよう。
バリアフリー化が法律で義務付けられてて、駅や列車の新築/新造や改修時に基準に沿ってないと許可が下りない。
福祉国家故か高い税金分ジャブジャブ注ぎ込む。スウェーデンなんかは何年か前に250億くらい突っ込んでた気がする。
あと平屋建てが多い。エレベーターとかなくともちょっとスロープ付けるだけでなんとかなる。
ぶっちゃけるとド田舎ではプラットフォームが線路の脇を舗装/草刈りしただけとかもままあるため、特になんもしなくても車椅子で行けたり、手作りや既製品のスロープがポンと置いてあるだけなんてことも多い。
一方でそういう駅ではプラットホームと列車の間の段差はそのままだったりする。
ゲイカップルぽい人を見た時とか、人が吃音ぽいことに気がついた時とか、車椅子の人にあった時とか、ハーフ(ミックス?)の人に会ったときとか
「俺はぜってえこのトピックに触れないぞ、あなたをまったく"普通"の人として受け入れますし、何も言いません」みたいな雰囲気を出してしまっている気がする
ぎこちなくなってたら、多分わかるだろうな
車椅子の介助とかはかなり自信ない(STRとDEXが低いので、ファンブルしかねない)からちょっと怖いが、まあそのくらい
普通のこととして受け入れてやる!みたいなことだって、なんと言ったらいいのかわからないが、本心では思ってないはず
そんな構えた感じじゃなく、素でどうでもいいはずなんだ
なのに、なんか、実際会うと、「寛容なオレ!」的な雰囲気を出してしまっている気がしてならん
寛容もクソもねえのに
とにかく、ずっと謎の恩着せがましさを感じさせている気がしてならん
7と8。
技術的なところが気になる人はこれだけ読んでくれたらいい
最後に技術的な観点からエアレペルソナが純国産ではないということを指摘する。
RocketChatという海外で開発されたOSSチャットアプリをフォーク、改変したもののよう。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://rocket.chat
フォーク元はバリバリ多国籍、外資である。(RocketChat自体は問題のないアプリであり、このエアレペルソナとはフォーク関係を超える関係はないと思われる)
冒頭のこの部分に関してである。
ttps://play.google.com/store/apps/details?id=chat.airlex.reactnative
Google Playで公開されているエアレペルソナのAndroidアプリをリバースエンジニアリングして調べてみた。
ちなみに、エアレペルソナには利用規約のようなものは見当たらず、リバースエンジニアリング禁止条項も無いようだった。
ttps://apps.evozi.com/apk-downloader/
ttps://github.com/pxb1988/dex2jar
この辺を使ってapkをダウンロードし、apkを解凍し、chat.airlex.reactnative/classes.dexをjar fileに変換した。
classes.dexから変換されたjarファイルを展開するとchat/airlex/reactnativeというフォルダ、パッケージが見つかる。
このパッケージ内のファイル(.class、クラス)がエアレペルソナの処理を行うもののようである。
このクラスをJadを使い、デコンパイルしてみた。その結果が以下である。
ちなみにここからapkをアップロードするとdex2jarをしなくてもJavaのソースコードにまでデコンパイルしてくれた。便利。
package chat.airlex.reactnative; import android.content.Context; import com.ammarahmed.mmkv.SecureKeystore; import com.facebook.react.bridge.ReactApplicationContext; import com.tencent.mmkv.MMKV; public class Ejson { private String TOKEN_KEY = "reactnativemeteor_usertoken-"; String cardId; String host; String messageId; String messageType; /* access modifiers changed from: private */ public MMKV mmkv; String msg; String notificationType; String rid; Sender sender; String senderName; String type; public Ejson() { ReactApplicationContext reactApplicationContext = CustomPushNotification.reactApplicationContext; if (reactApplicationContext != null) { MMKV.initialize((Context) reactApplicationContext); new SecureKeystore(reactApplicationContext).getSecureKey(C0617Utils.toHex("com.MMKV.default"), new RNCallback() { public void invoke(Object... objArr) { if (objArr[0] == null) { MMKV unused = Ejson.this.mmkv = MMKV.mmkvWithID("default", 1, objArr[1]); } } }); } } public String getAvatarUri() { if (this.type == null) { return null; } return serverURL() + "/avatar/" + this.sender._id + "?rc_token=" + token() + "&amp;rc_uid=" + userId(); } public String token() { String userId = userId(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || userId == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(userId)); } public String userId() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; return (mmkv2 == null || serverURL == null) ? "" : mmkv2.decodeString(this.TOKEN_KEY.concat(serverURL)); } public String privateKey() { String serverURL = serverURL(); MMKV mmkv2 = this.mmkv; if (mmkv2 == null || serverURL == null) { return null; } return mmkv2.decodeString(serverURL.concat("-RC_E2E_PRIVATE_KEY")); } public String serverURL() { String str = this.host; return (str == null || !str.endsWith("/")) ? str : str.substring(0, str.length() - 1); } public class Sender { String _id; String username; public Sender() { } } }
フィールド名を見てみると、cardId, host, messageId, messageType, mmkv, msg, notificationType, rid, sender, senderName, typeが存在する。
メソッドには、getAvaterUri、token、userId、privateKey、severURLが存在する。
ところで、RocketChatというOSSのチャットアプリが存在する。
ttps://rocket.chat
そのRoketChatのAndroid実装の中に同名のEjsonというクラスが存在する。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/android/app/src/play/java/chat/rocket/reactnative/Ejson.java
見比べてみると、フィールドにcardIdが追加されている以外はフィールドやメソッド名、そしてその処理の内容まで一致している。
他にもReplyBroadcastなど、同様のクラスがエアレペルソナに見つかる。
以上のことからエアレペルソナはRocketChatをフォークして、パッケージ名を変えて作られたチャットアプリであり、開発の大部分はRocketChat社の努力と多数のOSSコントリビュータによってなされたものであると思われる。
そもそもこのOSS時代に純だの何だの言っている時点で怪しい。
さて、エアレペルソナがRocketChatをフォークして作られたものであるとすると、気になるのはライセンスである。
RocketChatのOSSライセンスはMITライセンスである。
ttps://github.com/RocketChat/Rocket.Chat.ReactNative/blob/develop/LICENSE
MITライセンスは非常に緩いライセンスであるため、エアレペルソナの様にフォークして別のアプリケーションとして公開することにはおそらく問題がないということは強調しておく。
現状エアレペルソナにログインできておらず(2要素認証のコードが送信されないといった問題が起きている模様)、使用している各OSSのライセンス表示が適切に行われているかまでは調べられていない。