質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

562閲覧

JSライブラリを開発し、導入者に新しいバージョンを使ってほしい場合

clean

総合スコア50

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/04/16 00:39

編集2021/04/16 02:30

JSライブラリを開発しています。

導入者側として、使っているライブラリの仕様が勝手にアップデートされたら困りますよね。
今までなかったボタンが出てきたり。

ですが開発者側として "ボタンありのバージョンを使ってほしい" というケースがあると思います。
その場合/* ベータ版なので、予告なく変更の恐れがあります */ と書いておけば、勝手にアップデート(コード改変)してもいいと思いますか?

つまり
「ボタンなしの v1.0.0 のコード」を
「ボタンありの v1.0.0 のコード」のように勝手に改変するという意味です。

それともベータ版であっても
「ボタンなしの v1.0.0 のコード」と
「ボタンありの v1.0.1 のコード」のように提供すべきでしょうか?

でもどうにかして "ボタンありのバージョンを使ってほしい" ので、ボタンなしのバージョンは廃止したいのですが…
こういうケースでは、どうしたらいいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/04/16 00:43

それは「勝手にアップデートできる仕組みができてる前提」の話ではないかと思いますが、できてるんですか?
clean

2021/04/16 01:07

勝手にアップデートできる仕組み?どういうことでしょうか? 勝手にコードを変えるだけのつもりで考えていたのですが、仕組みと仰いますと…?
m.ts10806

2021/04/16 01:18

では、どのように提供するつもりですか?
m.ts10806

2021/04/16 01:19

ライブラリの仕様次第なところもあるので一概に言えないのでは。 ダウンロードして使うなら手を出せないところもあるでしょうし
m.ts10806

2021/04/16 01:21

>勝手にアップデートされたら困りますよね。 そもそも上記で「どうやって勝手にアップデートさせるか分かっていたのか」というところです。他者の印象としては「そういう仕組みができてるんだね」というのを感じました。
clean

2021/04/16 01:53

提供の場所は普通にgithubです。処理の流れのことでしたら次のように考えています。 サイトを開く→サイトは導入したライブラリの機能によって私のサーバーにアクセスする→私のサーバーはサイトに対し「ボタンを表示せよ」と指示する→サイトにボタンが表示される 以上の流れです。これならCDNでもダウンロードでも対応できると思っています。しかし当方JavaScript経験3か月の初心者につき、見落としなどございましたらご指摘いただけますと幸いです。
m.ts10806

2021/04/16 02:04

ダウンロードだとどうやっても「サイトを開く」にはならないかと。 CDNにしてURLでバージョン番号含ませるのが吉かと。 結局は任意です。 CDNもアップデートするならバージョン番号を変更すべきですしね。 いずれにしても作ろうとしているライブラリの仕様、全容が不明なことには他者に言えることはあまりないです。
clean

2021/04/16 02:12

>ダウンロードだとどうやっても「サイトを開く」にはならないかと。 わかりにくい表現で申し訳ございません。「サイトを開く」というのは、「ライブラリ導入サイトを、普通の閲覧者が開く」という意味です。 つまり「はてブのライブラリを導入しているteratailを、あなたが開く」ということです。 そして「はてブのライブラリを入れているteratailが、はてブのサーバーにアクセスし、はてブのボタンを表示する」と同じような流れで考えています。 >CDNもアップデートするならバージョン番号を変更すべき バージョンは同じまま、そのコードをボタンありに勝手に改変したら問題だ。ということですよね?導入者からしてみれば「勝手にボタンが表示されえたぞ」と怪訝に思いますよねやはり… しかし質問は、それでもボタンありを使ってほしいときはどうしたらいいか?という内容になりますので、もしお考えあればぜひご回答いただけましたら幸いです。
m.ts10806

2021/04/16 02:19

>はてブのライブラリを それだとライブラリではなくAPIになるのではないかと。先の回答にある「ウィジェット」と同じ。 利用するアプリケーションがどこにあるかにもよるという意味ですね。 そうでないならダウンロードでもCDNでもバージョンを上げる=新バージョンでの仕様に同意した  となるので、「勝手に表示された」なんてのは説明書読んでないだけで過失は利用者にしかありません。 どんな変更であってもバージョン番号を上げるような仕様にしておくだけです。というか、バージョン番号あげずにコード変更はありえません。
clean

2021/04/16 02:26

>それだとライブラリではなくAPIになるのではないかと なるほどAPIというのですね。同じように<script>タグを加えるだけのものでしょうか? >バージョン番号あげずにコード変更はありえません。 やはりそうですよね…。どうしたらボタンありにできるでしょうね…。
m.ts10806

2021/04/16 02:41

>同じように<script>タグを加えるだけのものでしょうか? ものによります。「API」について調べてください。 >どうしたら ダウンロード時にメールアドレス必須→アップデート時に通知メール送信 もしくは バージョンチェックを通信でさせて新バージョンがある→通知でダウンロードさせる(「いいえ」選んだら二度と通知を出さない配慮は必要) いずれにしてもユーザーの意思によって行われるものですね。最新バージョンが利用者の要件に合うかどうかは利用者が判断するものです。合わなければ使わない。
clean

2021/04/16 03:34

たしかにユーザーの意思ですよね。 なるほど。アイディアありがとうございます! 大変勉強になりました。
guest

回答3

0

ベストアンサー

あなたが管理するサーバでホストしているスクリプトを読み込むように推奨しているのであれば、そのコードを変えることについて、十分なアナウンスと互換性の検証があれば、やってもよいとは思います。

たとえば、はてなブックマークボタンは過去に変更をしています。
はてなブックマークボタンが2017年2月から新しくなります - はてなブックマーク開発ブログ

ただし、以下の理由により、あまり良いことではないかも、と思います。


最近はintegrity属性を利用することが増えています。

サブリソース完全性は、ウェブアプリケーションやウェブ文書が (CDN など任意の場所から) 取得したファイルについて、第三者によってファイルの中に別のものが挿入されていないか、そして、それらのファイルに対してその他の改ざんが行われていないかを検証することにより、先程のような攻撃のリスクを軽減します。

サブリソース完全性 - Web セキュリティ | MDN

何の通知もしない場合、または通知を見逃した利用者がいた場合、integrity属性を利用していると全く動作しなくなります

また、integrity属性を使用していなくても、ある日突然配信されているコードが変わっていたら**「もしかして乗っ取られた?」という不安**を利用者に与えることになるでしょう。


以下は蛇足ですが。
jQuery の CDN に、以前はlatestがあったのはご存知ですか?

CDN へのリクエスト統計を見ると、jquery-latest.js が最もリクエストされているファイルだと言うことがわかるし、jquery-latest.js / jquery-latest.min.js の両ファイルは、手軽に最新版の jQuery を取得できるから便利なのはわかるけど、本番環境でこれを使っている開発者は、jQuery のバージョンアップの度に Web サイトが動作しなくなる危険をユーザーに与えてるんだよってこと

jQuery 公式 Blog 「jquery-latest.js を使用するのをやめろ」 | WWW WATCH

ちなみに、このjquery-latest.jsは今も動いています。互換性のため動かさざるを得ない、ということですね。
https://code.jquery.com/jquery-latest.js

投稿2021/04/16 04:49

編集2021/04/16 04:51
Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

clean

2021/04/16 09:09

はてブの例ありがとうございます。ボタンくらいならギリギリOKな感じですね。 たしかにlatestの考え方もありますね。バージョンなしでlatestだけリリースすればできそう。 と思ったら、integrityとは、知りませんでした。やはりできなそうですね…。 色々ありがとうございます!一番情報が多く参考になりましたためベストアンサーとさせて頂きます。
guest

0

今時semverやライブラリ管理(jsならnpm)を知らないライブラリ開発者なんていないと思うけど。
https://semver.org/lang/ja/

scriptで読み込む使い方しか想定してないとしてもURLにバージョンを含めればいいだけ。

<script src="https://example.com/v1.0.0/example.js"></script>

ダウンロードして使うなら自動で更新はできない。

<script src="/example.js"></script>

JSでウィジェット的なものなら勝手に変わることは多い。

投稿2021/04/16 01:28

編集2021/04/16 01:30
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

clean

2021/04/16 02:14 編集

>今時semverやライブラリ管理(jsならnpm)を知らないライブラリ開発者なんていないと思うけど まったく知りませんでした。教えていただきありがとうございます。チェックしておきます。 >URLにバージョンを含めればいいだけ すると導入者はずっと「ボタンなしのv1.0.0」を使いますよね。しかし後に開発者が「ボタンありにしたい」と思ったケースでは開発者はどうすべきか?という質問です。勝手にv1.0.0のコードを変えてボタンありにしてもいいものでしょうか?導入者からしたら「勝手にボタンが表示されたぞ?」と怪訝に思うのではないかと思いまして。 >ダウンロードして使うなら自動で更新はできない その場合はv1.0.0を「ライブリが私のサーバーにアクセスして、ボタンの有無をチェックし、なければ表示させる」としようと思っていますが、これでも難しいでしょうか? >JSでウィジェット的なものなら勝手に変わることは多い すみませんこちらも勉強不足で…。ウィジェット的なもの、といいますと、具体的にどんなものですか?
guest

0

option:{button:true}
のような拡張をすれば済む話では?
(所定のoptionがなければbuttonなし=いままでのまま)

投稿2021/04/16 00:43

yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

clean

2021/04/16 01:56 編集

ありがとうございます。 勝手にコードを変更しても問題ない、というお考えでしょうか?つまり、 v1.0.0 は オプションなし でリリースして、 v1.0.1 は option:{button:true} でリリースする。 という意味(ただのバージョンの変更)ではなく、 v1.0.0 は オプションなし でリリースして、 v1.0.0 を option:{button:true} へ変更する。 という意味(同じバージョンのコードを勝手に変更)ですよね。 総合2位レベルの方に後者で問題ないと仰って頂けるのであれば安心です。 なんとなく「導入者目線で、勝手にボタンが出現したらウザイよなぁ」と考えていました…
yambejp

2021/04/16 01:34 編集

ちょっと認識が違うような気がします オプションを指定するのはあくまでもユーザー側です ユーザーがoptionを明記しない限り リビジョンレベルのバージョンアップでは デフォルトを変更するのは危険です。 メジャーバージョンアップの際に仕様変更して、 ドキュメントにデフォルト変更の記載をするとかなら ありかもしれません。
clean

2021/04/16 02:19

やはりユーザー(ライブラリ導入サイトの運営者)が「ボタンなし」を使っているのに、勝手に私(ライブラリの開発者)が「ボタンあり」にするのは問題ですよね…。ありがとうございます。
yambejp

2021/04/16 03:36

ちなみに、発注者が仕様書を書き直したなら、 勝手に変えても自分のせいではないので問題ないですよ ただしそれにともなうトラブルが発生したときの対処に 別途費用が発生する旨、きちんと契約に入れ込んでおく必要があります
clean

2021/04/16 03:39

なるほど。現実的な面でのアドバイスありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問