javascript-trap.html - en to ja translation catalogue (44 entries)

note: type: Content of: <title>
en: The JavaScript Trap - GNU Project - Free Software Foundation
ja: JavaScriptの罠 - GNUプロジェクト - フリーソフトウェアファウンデーション

note: type: Content of: <div><h2>
en: The JavaScript Trap
ja: JavaScriptの罠

note: type: Content of: <div><address>
en: by <a href="https://www.stallman.org/">Richard Stallman</a>
ja: <a href="https://www.stallman.org/">リチャード・ストールマン</a>著

note: type: Content of: <div><p>
en: <strong>You may be running nonfree programs on your computer every day without realizing it&mdash;through your web browser.</strong>
ja: <strong>あなたは、そうとは知らずに、不自由なプログラムをあなたのコンピュータで毎日実行しているかもしれません &mdash; ウェブ・ブラウザを通じて。</strong>

note: type: Content of: <div><div><p>
en: Webmasters: there are <a href="/software/librejs/free-your-javascript.html">several ways</a> to indicate the license of JavaScript programs in a web site.
ja: ウェブマスタのみなさん: ウェブサイトにおいて、JavaScriptプログラムのライセンスを提示する<a href="/software/librejs/free-your-javascript.html">いくつかの方法</a>があります。

note: type: Content of: <div><p>
en: In the free software community, the idea that <a href="/philosophy/free-software-even-more-important.html"> any nonfree program mistreats its users</a> is familiar.  Some of us defend our freedom by rejecting all proprietary software on our computers.  Many others recognize nonfreeness as a strike against the program.
ja: 自由ソフトウェアコミュニティでは、<a href="/philosophy/free-software-even-more-important.html">どんな不自由なプログラムもそのユーザを虐待する</a>、という考えがよく知られています。わたしたちの中には、プロプライエタリなソフトウェアをまったく拒否することで自由を守る人もいます。多くの人は不自由はプログラムへの打撃だと認識します。

note: type: Content of: <div><p>
en: Many users are aware that this issue applies to the plug-ins that browsers offer to install, since they can be free or nonfree.  But browsers run other nonfree programs which they don't ask you about, or even tell you about&mdash;programs that web pages contain or link to.  These programs are most often written in JavaScript, though other languages are also used.
ja: 多くのユーザは、この問題がブラウザがインストールするようにと提供するプラグインにも関係すると知っています。プラグインには自由か不自由かの違いがありうるからです。しかし、ブラウザは、ほかの不自由なプログラムを実行します。そのプログラムについて、ブラウザは、あなたに尋ねることも告げることもないのです。そのプログラムはウェブページに含まれていたり、リンクされてたりします。これらのプログラムはほとんどの場合、JavaScriptで書かれています。ほかの言語も、また、使われていますが。

note: type: Content of: <div><p>
en: JavaScript (officially called ECMAScript, but few use that name)  was once used for minor frills in web pages, such as cute but inessential navigation and display features.  It was acceptable to consider these as mere extensions of HTML markup, rather than as true software, and disregard the issue.
ja: JavaScript(公式にはECMAScriptと呼ばれますが、この名前はほとんど使われません)は、きれいだが本質的ではないナビゲーションや表示の機能のような、ウェブページのちょっとした装飾のために、かつては使われました。本当のソフトウェアとしてではなく、HTMLのマークアップの単なる拡張として考え、この問題を無視することは容認されました。

note: type: Content of: <div><p>
en: Some sites still use JavaScript that way, but many use it for major programs that do large jobs.  For instance, Google Docs tries to install into your browser a JavaScript program which measures half a megabyte, in a compacted form that we could call Obfuscript.  This compacted form is made from the source code, by deleting the extra spaces that make the code readable and the explanatory remarks that make it comprehensible, and replacing each meaningful name in the code with an arbitrary short name so we can't tell what it is supposed to mean.
ja: いくつかのサイトは、まだそのような方法でJavaScriptを使っていますが、多くのサイトでは大きな処理をする、大きなプログラムのために使っています。たとえば、Google Docsはあなたのマシンに0.5メガバイトにも及ぶJavaScriptのプログラムをダウンロードしようとします。それは、暗黒スクリプト(Obfuscript)と呼び得る、圧縮された形式です。この圧縮された形式はソースコードから作られます。コードを読みやすくする余分な空白を削除し、理解を助ける説明のコメントを削除し、意味を持った名前を適当な短いものに置き換え、何を意味しているのか分からなくします。

note: type: Content of: <div><p>
en: Part of the <a href="/philosophy/free-sw.html">meaning of free software</a> is that users have access to the program's source code (its plan).  The source code of a program means the preferred form for programmers to modify&mdash;including helpful spacing, explanatory remarks, and meaningful names.  Compacted code is a bogus, useless substitute for source code; the real source code of these programs is not available to the users, so users cannot understand it; therefore the programs are nonfree.
ja: <a href="/philosophy/free-sw.html">自由ソフトウェアの意味</a>の一部に、ユーザがそのプログラムのソースコード(プログラムの設計)にアクセスできることがあります。プログラムのソースコードとは、プログラマが修正するために好ましい形態を意味し、役立つ空白、説明の注釈、そして意味のある名前を含みます。コンパクト化されたコードは偽者であり、ソースコードの役に立たない代替です。そのプログラムの本当のソースコードをユーザが利用できないのであれば、ユーザはプログラムを理解できません。ですからそのプログラムは不自由です。

note: type: Content of: <div><p>
en: In addition to being nonfree, many of these programs are <em>malware</em> because they <a href="https://github.com/w3c/fingerprinting-guidance/issues/8">snoop on the user</a>.  Even nastier, some sites use services which record <a href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">all the user's actions while looking at the page</a>.  The services supposedly &ldquo;redact&rdquo; the recordings to exclude some sensitive data that the web site shouldn't get.  But even if that works reliably, the whole purpose of these services is to give the web site other personal data that it shouldn't get.
ja: 不自由であることに加えて、多くのこのようなプログラムは<em>マルウェア</em>です。なぜなら<a href="https://github.com/w3c/fingerprinting-guidance/issues/8">ユーザを詮索するからです</a>。もっと嫌なことに、いくつかのサイトは<a href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">そのページを見ているすべてのユーザの行動</a>を記録するサービスを使います。そのサービスはおそらくその記録を「墨消し」し、ウェブサイトが取得すべきでない敏感なデータを除外するでしょう。しかし、たとえそれが信頼性をもって処理されるとしても、このようなサービスの全体の目的はウェブサイトに取得すべきでない個人情報を提供することなのです。

note: type: Content of: <div><p>
en: Browsers don't normally tell you when they load JavaScript programs.  Some browsers have a way to turn off JavaScript entirely, but even if you're aware of this issue, it would take you considerable trouble to identify the nontrivial nonfree programs and block them.  However, even in the free software community most users are not aware of this issue; the browsers' silence tends to conceal it.
ja: JavaScriptのプログラムをロードしたときに、ブラウザは通常何も言いません。いくつかのブラウザは、JavaScriptを完全に停止する方法を有してますが、たとえ、この問題を知っていたとしても、こういった瑣末ではない不自由なプログラムを同定し、ブロックするのには大変な労力が必要となるでしょう。しかし、自由ソフトウェアのコミュニティでさえ、ほとんどのユーザはこの問題を知りません。ブラウザの沈黙がこの問題を隠す傾向にあるのです。

note: type: Content of: <div><p>
en: To be clear, the language JavaScript is not inherently better or worse for users' freedom than any other language.  It is possible to release a JavaScript program as free software, by distributing the source code under a free software license.  If the program is self-contained&mdash;if its functioning and purpose are independent of the page it came in&mdash;that is fine; you can copy it to a file on your machine, modify it, and visit that file with a browser to run it.  It's even possible to package it for installation just like other free programs and invocation with a shell command.  These programs present no special moral issue different from those of C programs.
ja: 明確にすると、JavaScript言語がユーザの自由にとってほかの言語と比べて本質的に良い/悪いということはありません。JavaScriptプログラムを自由ソフトウェアライセンスでソースコードを配布し、自由ソフトウェアとしてリリースすることは可能です。もしそのプログラムがそれ自身で意味があるものなら(一緒に来るページと機能と目的が独立であれば)、問題ありません。あなたのマシンにファイルとしてコピーでき、変更し、ブラウザでそのファイルを見て実行できます。ほかの自由なプログラムと同様にインストールのためにパッケージすることさえできますし、シェルコマンドで実行もできます。こういったプログラムは、Cのプログラムと特段異なる道徳上の問題があるわけではありません。

note: type: Content of: <div><p>
en: The issue of the JavaScript trap applies when the JavaScript program comes along with a web page that users visit.  Those JavaScript programs are written to work with a particular page or site, and the page or site depends on them to function.
ja: JavaScriptの罠の問題は、JavaScriptのプログラムがユーザが訪れるウェブページとともにもたらされる時に生じます。こういった JavaScript のプログラムは、特定のページやサイトで動くように書かれ、そのページやサイトは機能するためにそのプログラムに依存します。

note: type: Content of: <div><p>
en: Suppose you copy and modify the page's JavaScript code.  Then another problem arises: even if the program's source is available, browsers do not offer a way to run your modified version instead of the original when visiting that page or site.  The effect is comparable to tivoization, although in principle not quite so hard to overcome.
ja: そのページのJavaScriptのコードをあなたがコピーして変更したとしましょう。ここで、別の問題が生じます: たとえプログラムのソースが利用可能でも、ブラウザは、そのページやサイトを訪れた際、あなたの変更したバージョンをオリジナルの代わりに実行する方法を提供しないのです。この効果はTivoizationと似たようなものです。克服するのに困難を極める、というほどではありませんが。

note: type: Content of: <div><p>
en: JavaScript is not the only language web sites use for programs sent to the user.  Flash supported programming through an extended variant of JavaScript, but that is a thing of the past.  Microsoft Silverlight seems likely to create a problem similar to Flash, except worse, since Microsoft uses it as a platform for nonfree codecs.  A free replacement for Silverlight does not do the job adequately for the free world unless it normally comes with free replacement codecs.
ja: JavaScriptはウェブサイトでユーザに送られるプログラムに使われる唯一の言語ではありません。FlashはJavaScriptの拡張された一種を通じてプログラミングをサポートしましたが、これは過去のものです。マイクロソフトのSilverlightはFlashと同様な問題を作り出すと思われます。それがより悪いのは、マイクロソフトがそれを不自由なコーデックのプラットフォームとして使うからです。それが通常、自由な代替コーデックとともに来るのでなければ、Silverlightの自由な代替は自由な社会のために、その仕事を適切になし得ないでしょう。

note: type: Content of: <div><p>
en: Java applets also run in the browser, and raise similar issues.  In general, any sort of applet system poses this sort of problem.  Having a free execution environment for an applet only brings us far enough to encounter the problem.
ja: Javaアプレットもブラウザで実行され、同様な問題を引き起こします。一般に、どのような種類のアプレットシステムもこの種の問題を有しています。アプレットの自由な実行環境を有するということは、この問題に出くわすのに十分なところに、わたしたちを連れていってくれる、というだけです。

note: type: Content of: <div><p>
en: It is theoretically possible to program in HTML and CSS, but in practice this capability is limited and inconvenient; merely to make it do something is an impressive hack.  Such programs ought to be free, but CSS is not a serious problem for users' freedom as of 2019.
ja: 理論的にはHTMLとCSSでプログラムすることが可能ですが、実際にはその機能は限られ不便です。(HTMLとCSSだけで)何かをすることは、すばらしいハックでしょう。そのようなプログラムは自由であるべきですが、CSSは2019年の時点において、ユーザの自由に対する深刻な問題ではありません。

note: type: Content of: <div><p>
en: A strong movement has developed that calls for web sites to communicate only through formats and protocols that are free (some say &ldquo;open&rdquo;); that is to say, whose documentation is published and which anyone is free to implement.  However, the presence of JavaScript programs in web pages makes that criterion insufficient.  The JavaScript language itself, as a format, is free, and use of JavaScript in a web site is not necessarily bad.  However, as we've seen above, it can be bad&mdash;if the JavaScript program is nonfree.  When the site transmits a program to the user, it is not enough for the program to be written in a documented and unencumbered language; that program must be free, too.  &ldquo;Transmits only free programs to the user&rdquo; must become part of the criterion for an ethical web site.
ja: ウェブサイトに対して、自由な(ある人は「オープン」と言います)、すなわち、その文書が公表されていて誰もが自由に実装できる、そういったフォーマットとプロトコルだけを通じて通信することを要求する、力強い運動が発達してきました。しかし、ウェブページの中のJavaScriptプログラムの存在がこの基準を不十分とします。JavaScriptそれ自身は、フォーマットとして自由で、ウェブサイトでJavaScriptを使うことは必ずしも悪くありません。しかし、上で述べたように、JavaScriptプログラムが不自由な場合、悪いものになりえます。サイトがプログラムをユーザに送信するとき、文書があり障害がない言語でかかれているプログラムだというだけでは十分ではないのです。つまり、そのプログラムも自由でなければなりません。「ユーザには自由なプログラムだけが送信される」ことが倫理的なウェブサイトの基準の一部となるべきです。

note: type: Content of: <div><p>
en: Silently loading and running nonfree programs is one among several issues raised by &ldquo;web applications.&rdquo; The term &ldquo;web application&rdquo; was designed to disregard the fundamental distinction between software delivered to users and software running on a server.  It can refer to a specialized client program running in a browser; it can refer to specialized server software; it can refer to a specialized client program that works hand in hand with specialized server software.  The client and server sides raise different ethical issues, even if they are so closely integrated that they arguably form parts of a single program.  This article addresses only the issue of the client-side software.  We are addressing the server issue separately.
ja: 黙ったまま不自由なプログラムをロードして実行することは、「ウェブ・アプリケーション」によって引き起こされるいくつかの問題の一つです。「ウェブ・アプリケーション」という用語はユーザに送られるソフトウェアとサーバで実行されるソフトウェアの基本的な区別を無視するよう設計されています。それはブラウザで実行される特別なクライアントプログラムを指すこともありえますし、特別なサーバソフトウェアを指すこともありえます。また、特別なサーバソフトウェアと一緒に動く特別なクライアントプログラムを指すこともありえます。たとえそれらが密接に統合され単一のプログラムの部分のように構成されていたとしても、クライアント側とサーバ側では異なる倫理上の問題を引き起こします。この論説では、クライアント側のソフトウェアの問題だけを扱います。サーバの問題は別に扱っています。

note: type: Content of: <div><p>
en: In practical terms, how can we deal with the problem of nontrivial nonfree JavaScript programs in web sites? The first step is to avoid running it.
ja: 実際面で、ウェブサイトの瑣末でない不自由なJavaScriptプログラムの問題をわたしたちはどのように扱えるでしょうか? 第一の段階は、それを実行することを避けることです。

note: type: Content of: <div><p>
en: What do we mean by &ldquo;nontrivial&rdquo;? It is a matter of degree, so this is a matter of designing a simple criterion that gives good results, rather than finding the one correct answer.
ja: 「瑣末ではない」とは何を意味するでしょう? これは程度の問題ですから、一つの正解を探すよりも、良い結果を与える単純な基準を設計する問題です。

note: type: Content of: <div><p>
en: Our current criterion is to consider a JavaScript program nontrivial if any of these conditions is met:
ja: わたしたちの現在の基準では、以下の条件のいずれかを満たすJavaScriptプログラムを瑣末ではないとします:

note: type: Content of: <div><ul><li>
en: it is referred to as an external script (from another page).
ja: 外部スクリプトとして参照される(他のページから)。

note: type: Content of: <div><ul><li>
en: it declares an array more than 50 elements long.
ja: 50要素以上の配列を宣言する。

note: type: Content of: <div><ul><li>
en: it defines a named entity (function or method) that calls anything other than a primitive.
ja: 名前の付いたエンティティ(関数あるいはメソッド)を定義し、プリミティブ以上の何かを呼び出す。

note: type: Content of: <div><ul><li>
en: it defines a named entity with more than three conditional constructs and loop construction.
ja: 三つ以上の条件構造とループ構造を含む名前付のエンティティを定義する。

note: type: Content of: <div><ul><li>
en: code outside of named definitions calls anything but primitives and functions defined further up in the page.
ja: 名前付定義の外のコードでプリミティブと該当ページで定義される関数以外を呼び出す。

note: type: Content of: <div><ul><li>
en: code outside of named definitions contains more than three conditional constructs and loop construction, total.
ja: 名前付定義の外のコードであわせて三つ以上の条件構造とループ構造を含む。

note: type: Content of: <div><ul><li>
en: it calls <b>eval</b>.
ja: <b>eval</b>を呼び出す。

note: type: Content of: <div><ul><li>
en: it does Ajax calls.
ja: Ajax呼び出しを行う。

note: type: Content of: <div><ul><li>
en: it uses bracket notation for dynamic object property access, which looks like <b><em>object</em>[<em>property</em>]</b>.
ja: <b><em>object</em>[<em>property</em>]</b>のようにカギ括弧の記述で動的オブジェクトのプロパティのアクセスを使う。

note: type: Content of: <div><ul><li>
en: it alters the DOM.
ja: DOMを変更する。

note: type: Content of: <div><ul><li>
en: it uses dynamic JavaScript constructs that are difficult to analyze without interpreting the program, or is loaded along with scripts that use such constructs.  Specifically, using any other construct than a string literal with certain methods (<b>Obj.write</b>, <b>Obj.createElement</b>, and others).
ja: プログラムを解釈せずには解析することが難しい動的なJavaScriptの構成物を使用する、あるいは、そのような構成物を使うスクリプトと一緒にロードされる。具体的には、文字列リテラル以外の構成物を特定のメソッド(<b>Obj.write</b>、<b>Obj.createElement</b>、など)で使うことです。

note: type: Content of: <div><p>
en: How do we tell whether the JavaScript code is free? In a <a href="/licenses/javascript-labels.html">separate article</a>, we propose a method by which a nontrivial JavaScript program in a web page can state the URL where its source code is located, and can state its license too, using stylized comments.
ja: JavaScriptのコードが自由かどうかをどのように伝えたらよいでしょうか? わたしたちは、<a href="/licenses/javascript-labels.html">別の小論</a>で、ウェブページの瑣末ではないJavaScriptのプログラムが、そのソースコードのありかを示すURLとそのライセンスを、定式化したコメントを使って提示する慣習を提案します。

note: type: Content of: <div><p>
en: Finally, we need to change free browsers to detect and block nontrivial nonfree JavaScript in web pages.  The program <a href="/software/librejs/">LibreJS</a> detects nonfree, nontrivial JavaScript in pages you visit, and blocks it.  LibreJS is included in IceCat, and available as an add-on for Firefox.
ja: 最後に、自由なブラウザがウェブページで瑣末ではない不自由なJavaScriptを検出しブロックする変更を、わたしたちは必要とします。<a href="/software/librejs/">LibreJS</a>は、あなたが訪れるページの、不自由な瑣末ではないJavaScriptを検出し、ブロックします。LibreJSはIceCatに含まれており、Firefoxのアドオンとしても利用可能です。

note: type: Content of: <div><p>
en: Browser users also need a convenient facility to specify JavaScript code to use <em>instead</em> of the JavaScript in a certain page.  (The specified code might be total replacement, or a modified version of the free JavaScript program in that page.)  Greasemonkey comes close to being able to do this, but not quite, since it doesn't guarantee to modify the JavaScript code in a page before that program starts to execute.  Using a local proxy works, but is too inconvenient now to be a real solution.  We need to construct a solution that is reliable and convenient, as well as sites for sharing changes.  The GNU Project would like to recommend sites which are dedicated to free changes only.
ja: ブラウザのユーザには、あるページのJavaScriptの<em>代わりに</em>(別の)JavaScriptコードを指定する便利な機能も必要です。(指定されたコードは全体の置き換えかもしれないし、そのページの改変された自由なJavaScriptプログラムかもしれません。)Greasemonkeyがこれを行うことができるのに近いところですが、まだ足りません。なぜなら、それはプログラムが実行を開始する前に、そのページのJavaScriptのコードを改変することを保証してないからです。ローカルなプロキシを使えば動きますが、現実の解としては今、とても不便なものです。わたしたちは、信頼できる便利な解を構築する必要と、また、変更を共有するサイトを必要とします。GNUプロジェクトは、自由な変更だけに専念するサイトを推奨したいと思います。

note: type: Content of: <div><p>
en: These features will make it possible for a JavaScript program included in a web page to be free in a real and practical sense.  JavaScript will no longer be a particular obstacle to our freedom&mdash;no more than C and Java are now.  We will be able to reject and even replace the nonfree nontrivial JavaScript programs, just as we reject and replace nonfree packages that are offered for installation in the usual way.  Our campaign for web sites to free their JavaScript can then begin.
ja: これらの機能で、ウェブページに含まれるJavaScriptプログラムを、本当の意味で、現実的に自由とすることがなされるでしょう。そうすれば、JavaScriptはCやJavaがもはやそうではないように、わたしたちの自由の特定の障害ではなくなるでしょう。わたしたちは、不自由な瑣末ではないJavaScriptのプログラムを拒否したり、置き換えたりできるようになるでしょう。ちょうどわたしたちが通常の方法でインストールするように提供された不自由なパッケージを拒否したり、置き換えたりするように。その時、ウェブサイトに対し、そのJavaScriptを解放させる、わたしたちの運動は開始できるのです。

note: type: Content of: <div><p>
en: In the mean time, there's one case where it is acceptable to run a nonfree JavaScript program: to send a complaint to the website operators saying they should free or remove the JavaScript code in the site.  Please don't hesitate to enable JavaScript temporarily to do that&mdash;but remember to disable it again afterwards.
ja: それまでの間、不自由なJavaScriptプログラムを実行する一つの容認できるケースがあります: ウェブサイトのオペレータに、そのサイトで自由なJavaScriptのコードとするか、削除することについて文句を言うためにです。そうするのに一時的にJavaScriptを有効とすることをためらってはなりません。しかし、その後には再度無効とするのを忘れずに。

note: type: Content of: <div><p>
en: <strong>Acknowledgements:</strong> I thank <a href="/people/people.html#mattlee">Matt Lee</a> and <a href="https://johnresig.com/">John Resig</a> for their help in defining our proposed criterion, and David Parunakian for bringing the problem to my attention.
ja: <strong>謝辞</strong>: <a href="/people/people.html#mattlee">マット・リー</a>と<a href="https://johnresig.com/">ジョン・レジッグ</a>に、提案された基準の定義への助力に関して感謝します。また、デビッド・パルナキアンに、この問題にわたくしの関心を向けさせてくれたことを感謝します。

note: type: Content of: <div><div><p>
en: Please send general FSF &amp; GNU inquiries to <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  There are also <a href="/contact/">other ways to contact</a> the FSF.  Broken links and other corrections or suggestions can be sent to <a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.
ja: FSFおよびGNUに関する問い合わせは<a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>までお願いします(英語)。FSFへの連絡は<a href="/contact/">他の方法</a>もあります。リンク切れや他の修正、提案は<a href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>までお送りください。

note: TRANSLATORS: Ignore the original text in this paragraph, replace it with the translation of these two: We work hard and do our best to provide accurate, good quality translations.  However, we are not exempt from imperfection. Please send your comments and general suggestions in this regard to <a hr
en: Please see the <a href="/server/standards/README.translations.html">Translations README</a> for information on coordinating and contributing translations of this article.
ja: 正確で良い品質の翻訳を提供するよう努力していますが、不完全な場合もあるかと思います。翻訳に関するコメントと提案は、<a href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>におねがいします。</p><p>わたしたちのウェブページの翻訳の調整と貢献については、<a href="/server/standards/README.translations.html">翻訳 README</a>をご覧ください。

note: type: Content of: <div><p>
en: This page is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons Attribution-NoDerivatives 4.0 International License</a>.
ja: このページは<a rel="license" href="http://creativecommons.org/licenses/by-nd/4.0/deed.ja">Creative Commons Attribution-NoDerivatives 4.0 International License</a>の条件で許諾されます。

note: timestamp start type: Content of: <div><p>
en: Updated:
ja: 最終更新:
