Replies: 35 comments 1 reply
-
拡張機能のメタ情報について拡張機能は下記のメタ情報を持つ必要があります:
メタ情報はアセンブリにクラスとして埋め込みます。また、メタ情報を保持するクラスは、アセンブリに属性を適用する事で指定します。 セキュリティ対策セキュリティ保護の観点から、アセンブリからメタ情報を読み取りメタ情報ファイル(XML、JSONなど)として出力しておき、そのメタ情報ファイルを用いてアセンブリを検証できる様にします。アセンブリファイルとメタ情報ファイルに保存されているメタ情報が異なる場合は読み込みを拒否します。 |
Beta Was this translation helpful? Give feedback.
-
#232 の様な機能も拡張機能として実装できれば良いですね。 |
Beta Was this translation helpful? Give feedback.
-
iOSアプリはApp Store Review Guidelineによってプラグイン的なものが厳しく制限されています。 |
Beta Was this translation helpful? Give feedback.
-
まだ不完全ですがサンプル実装を作成しました。
ひとまずは Android 限定で実装するのも有りですね。 |
Beta Was this translation helpful? Give feedback.
-
正直拡張機能を要望するユーザーというのが全く想像出来ないのですが……
この理屈は少々厳しいかと。COCOA はあくまで厚生労働省の名義の元に配布されます。
認定は誰が行いますか?アプリ内で公開してしまうとそれは厚生労働省のお墨付きを与えることになりませんか? 拡張機能で出来る事はなんですか? 見た目が変わって問題になることは無いですか?
これは現状不可能です。技術的な面では無く Google/Apple 共に複数アプリを通さない判断をしています(EN API の利用をしていなくとも) 個人的にはどの程度のニーズが見込まれるのか、また認定と公開場所の運営負担は誰がするのだろうと言うあたりで難しいなと感じます。 さし当たりですが、気になる点を列挙しましたので @Takym さんの見解をお伺いしたく。 |
Beta Was this translation helpful? Give feedback.
-
1点だけ。このリポジトリでPRを作ったとしても取り込まれるかは分からないし、EN API を使う物は私達にはビルド出来ません。 |
Beta Was this translation helpful? Give feedback.
-
ご存知かもしれませんが、Android に関しては |
Beta Was this translation helpful? Give feedback.
-
@b-wind さん
第三者である事を明記し、第三者が作成したプログラムをインストールする事に同意した利用者のみインストールする様にすれば、COCOA本体の原因だと見做す人は少ないと思います。
アプリ内での公開の認定は「厚生労働省のお墨付きを与える」という意味で書きました。 「もしくは、認定されない拡張機能のインストールは拒否し、公開場所は固定します。」というのは、拡張機能のインストールがOSにより制限(#215 (comment))される可能性があるためです。 拡張機能の認定につきましては自分の中でも考えがまとまっていません。
僕の想像としては以下の様なものがあります:
既存のページの変更は一切許可しません。 これはあくまでも拡張機能に関する一案でしかありません。 |
Beta Was this translation helpful? Give feedback.
-
拡張機能の仕組みはありませんが、現在でも開発者のみが利用できる機能(デバッグページなど)は作る事ができていますね。 |
Beta Was this translation helpful? Give feedback.
-
Google の規約的にほぼ無理じゃ無いですか? |
Beta Was this translation helpful? Give feedback.
-
その権限は誰にあるんでしょうか……?
こちらの返答もお願いします。 |
Beta Was this translation helpful? Give feedback.
-
提案ありがとうございます。Descriptionの冒頭に「勇気を持って提案します」と書いてあるように、かなり勇気が必要だったのだろうなと思います。提案してくださったこと本当に感謝します。 現時点では拡張機能については、COCOAの計画に含める予定はありません。このことについては後ほど @heykuro 氏からもコメントがあると思います。 @b-wind |
Beta Was this translation helpful? Give feedback.
-
アプリ内での公開の認定とコミュニティでの認定は違う意味で使っていました。
認定や運営負担については、#215 (comment) で既に答えた通りです。
|
Beta Was this translation helpful? Give feedback.
-
これは見落としていました。ありがとうございます。 細かい所をどのように考えてらっしゃるのかは掘り下げてうかがえましたし、私からは特に言う事はありません。 |
Beta Was this translation helpful? Give feedback.
-
攻撃的に過ぎたのは自覚がありますが、「言葉の信頼性を低下させる」というのは意味が分かりません。 |
Beta Was this translation helpful? Give feedback.
-
@heykuro さん。返答ありがとうございます。 こう言う機会も少ないのでどうしても指摘ばかりしてしまいますが、出来れば前向きな検討を行い各種やり取りをスムーズに行いたいと言う思いは持っております。 |
Beta Was this translation helpful? Give feedback.
-
多くの人が使うため「拡張できる様にする」か「単純にして分かり易くする」かという考え方があり、僕と逆の発想で興味深いです。 |
Beta Was this translation helpful? Give feedback.
-
拡張機能について将来また議論できる場所を残しておく為にこの Issue は開いたままにしておいて欲しいのですが、可能でしょうか? |
Beta Was this translation helpful? Give feedback.
-
たしかにそうですね笑。そういう意味でもここで皆さんと一緒にアプリを作っていく意味があるんだろうなと思っています。
わかりました。ただ、将来というのがいつになるかちょっと今時点だと何とも言えないため、そこだけご容赦ください。皆さまで議論を続けていただくこと自体は問題ありません。 @keiji 運用上、すぐに対応されないものであれば一旦closeしておきたいというのはあるでしょうか? |
Beta Was this translation helpful? Give feedback.
-
目を通すべき場所が増えるので導入は慎重にした方が良いと思いますが、Issue も増えてきましたし議論を目的とする物・当面の実現性の低い物などはGitHub Discussionsを有効にしてそちらに移すという手はありますね。 |
Beta Was this translation helpful? Give feedback.
-
分かりました。話は逸れますが、@b-wind さんもおっしゃっている様に Discussions を有効化して頂ければ助かります。他にも質問を行いたい時等に適切な場所があれば助かります。 |
Beta Was this translation helpful? Give feedback.
-
ありがとうございます。GitHub Discussionsの利用検討しますね(以前内部でも議論があったのですが、実際にどうするかというところで止まっていたので再度検討進めます)。 |
Beta Was this translation helpful? Give feedback.
-
もともとが複雑な話ですし、目的は明確です。
GitHub Discussionsについては、ぼくは以前は推進派として内部議論に参加していたのですが、現在は慎重な立場になっています。 理由としては単純にモデレートのコストが大きくなり、通常のIssueやPull Requestの管理が追いつかなくなる可能性が高いこと。さらに参加者間のやりとりが増える分、個人間での衝突が起こる可能性を危惧しています。 まず、今回のIssueについても早急にコメントを出せるように対応をしていました。しかし、それでも「早めにコメントをしてくれれば」と言う意見が出ているのを見てしまうと、その状態でDiscussionsを始めても、モデレートのリソースは確保できないと考えます。 次に、GitHub Discussionsは確かに便利な機能ですが、参加する側にもある程度の成熟が求められると考えています。今回、攻撃的な内容とも取れる言葉が向けられたと言う出来事は、GitHub Discussionsがあれば防げたというものではありませんし、Discussionsでは参加者間のやりとりが増える分、エスカレートしていた可能性があるとも思っています。 以上の理由から、ぼくはGitHub Discussionsの導入には慎重な立場です。 |
Beta Was this translation helpful? Give feedback.
-
こちらについて同感です。 |
Beta Was this translation helpful? Give feedback.
-
望まれない会話を防ぎたければ、(Issue での)会話をロックすると言う方法も有るようですね。 回答にはどうしても時間がかかるようですから、こう言った物を利用するのも手かも知れません。 |
Beta Was this translation helpful? Give feedback.
-
私はともかくとして、他の参加者の方も基本信用しないスタンスなんでしょうか。興味深いですね。 |
Beta Was this translation helpful? Give feedback.
-
今は拡張機能の仕組みを作らないとしても、将来実装する時の役立つ筈ですので意見を書いていきます。 拡張機能は、上級者モード(「拡張機能の有効化」という名前でも良いです)を用意して設定から変更できる様にしておき、上級者モードを有効にしてからインストールできる様にすれば良いと思いました。 解決策の一つとして、拡張機能とは異なりますが追加機能として機能を追加できる様にします。 |
Beta Was this translation helpful? Give feedback.
-
拡張機能の話ではありませんが、昨日ご提案いただいたGitHub Discussionsについてです。 一方で、モデレートのリソースが限られていることや直近の優先度という観点で、まずは技術的なテーマに絞って議論していくこととできればと思います。また、運用に際しては私たちも模索しながらになると思いますので、ぜひ皆さんと一緒に議論しながら建設的に進めていければと思います。 取り急ぎ、昨日の議論について検討結果のお知らせまで。開始時にはまたお知らせしますね。 |
Beta Was this translation helpful? Give feedback.
-
追加機能について(上記の説明では分り難いと思いますので書き直します。) |
Beta Was this translation helpful? Give feedback.
-
この Issue も Discussion へ移行して頂けませんでしょうか。 |
Beta Was this translation helpful? Give feedback.
-
かなり大きな変更を勇気を持って提案します。
その機能リクエストは何らかの問題に関連しますか
COCOAは多くの様々な人々に毎日利用されます。そのため目的も多種多様になるはずです。ある利用者によっては今のままでは機能が足りないのかもしれませんし、充分なのかもしれません。COCOAはカスタマイズして利用する様なアプリでは無いとは思いますが、しかし、現時点では接触確認アプリは一国一アプリとなっており、利用者はどうしても欲しい機能があればCOCOAへ要求するしかありません。そして、拡張機能を実装すれば新規機能は利用者の手で開発する事ができる様になると思います。現在でもオープンソース開発をしており新機能の要求はできますが、実装されるまでに時間が掛かる、ある利用者には不必要な機能が実装されストレージ容量が消費される、等の問題があります。
作られる拡張機能は下記の様なものがあると予想しています:
解決策についてお書きください
方法1)マークアップ言語で作成できる様にする
拡張機能はCOCOAにより規定されたマークアップ言語(またはXML、JSON等)で記述し、HTTPサーバーで公開します。拡張機能のデータはサーバー上に保存されるのでストレージ容量が殆ど使用されないという利点があります。アプリはインストールした拡張機能のURLと権限と設定を保存するだけで済みます。複雑なパーサーを必要とする点がこの方法の欠点です。他にもマークアップ言語ではなくWebアプリとして作成し、COCOAから起動した時にのみアプリの機能に接続する方法も考えられます。
方法2)C# で作成できる様にする
普通に C# で拡張機能を作成できる様にします。複雑なパーサーは持つ必要はありませんが、ストレージ容量は消費します。スマートフォンのOSの制約によりこの方法は不可能な気もしましたが、アセンブリファイルをユーザーデータディレクトリに保存して読み込めば可能な気もします。
この方法についてもう少し具体的に説明します。新規にプロジェクト「
Covid19Radar.Extensibility
」(以下、拡張ライブラリ)を作成します。拡張機能からは拡張ライブラリのみを参照して貰います。拡張ライブラリは必要最低限の抽象化されたアプリ機能を公開し、拡張機能はメタ情報と自由な処理を提供します。UIは拡張機能の情報を読み取りアプリ側で生成します。また、拡張ライブラリはアプリ本体やその他のライブラリに一切依存しない造りにします。拡張機能の公開
拡張機能は一定条件(例えば、透明性を保つ為にオープンソースで開発し無料で公開する等)の基で認定されたもののみアプリ内で一般公開します。認定されないものはアプリ内では公開せず、利用者が自己責任でインストールする事にします。
もしくは、認定されない拡張機能のインストールは拒否し、公開場所は固定します。そして、一定条件に満たしているか、公開しても良いかは、例えばこのリポジトリの Issue でも判断できる様にします。このリポジトリではなく別のリポジトリを新設する事も考えられ、この場合、そのリポジトリで拡張機能を公開する事もできます。
方法2の場合は技術的な制約で後者になりそうです。(ダウンロード元は固定した方がコードを簡潔に書く事ができる等都合が良さそうです。)
セキュリティ・個人情報の保護について
Google Chrome 等の様に拡張機能のインストール時に権限の確認を行い、許可されない処理の実行を防げる様にすべきだと思います。方法1では簡単そうですが、方法2では少し難しそうですね。
方法2において、UIをアプリ側で生成し、拡張ライブラリがアプリ本体に依存しない造りにするのはセキュリティ保護の為です。加えてアプリ本体の公開クラス(
public
)の一部を内部クラス(internal
)に変更する、若しくはアプリ本体を参照している拡張機能の読み込みを拒否する必要もありそうです。あなたが考える代替案についてご説明ください
一国一アプリではなく複数のアプリを共存できる様にします。ただし、これはかなり大変ですので上記の拡張機能案の方が良いと思います。
その他
discussion
ラベルを付与して頂ければ幸いです。Internal IDs:
Beta Was this translation helpful? Give feedback.
All reactions