hpprc/jawiki-books huggingface dataset:
ガリア戦記/用例集/不定法を伴う対格

例えば、次のような文がある。
この文を不定法句に変えることによって、cēnseō 「私は~と思う」「私は~と述べる」 という動詞の目的語とすることができる。
これを Accusativus cum infinitivo (不定法を伴う対格)という。
この不定法句において、動詞は不定法となるが、主語も述語も対格をとる。
《 》は訳者が説明のために補った。
(1巻3節7項)
(1巻7節1項)
(1巻7節4項)






(1巻3節6項)
経済学/経済とは何か/家計の消費

削除依頼中
当ページ「経済学/経済とは何か/家計の消費」の削除依頼が提出されています。今後当ページに加えられた編集は無駄となる可能性がありますのでご注意頂くとともに、削除の方針に基づき削除の可否に関する議論への参加をお願いします。なお、依頼の理由等については削除依頼の該当する節やこのページのトークページなどをご覧ください。
2014 年 4 月に消費税率が 5% から 8% に引き上げられたとき、缶ビールや車、家電、住宅などの駆け込み購入が生じて 3 月の消費は大きく増加し、その反動で 4 月になって消費は大きく減少した。
このように家計はいろいろなモノ(=財やサービス)を消費して、経済的な満足度を高める消費活動を行います。
ある時点の消費量が増加すれば、その時点での効用水準(消費から得られる満足度)も増加する。 しかし、消費が増えるにつれ、効用が増える程度はだんだんと小さくなる。 その財の消費量の増加分とその財の消費から得られる効用の増加分との比率を限界効用(すなわち「効用の微分」)という。 すでに出た限界メリットと似た概念であるが、限界メリットは効用をお金で評価したものであり、限界効用は効用を主観的に評価したものである。
この式は、モノ 1 単位分だけ消費が増加したとき、そのモノからどの程度効用が追加的に増加するかを示している。
たとえばブランドバックを 1 個買って(消費の増加分)、その日の気分がウキウキだった(効用の増加分)。 その満足感の増加分が、限界効用である。
限界効用には、次のような特徴がある。
1限界効用はプラスである 2限界効用は提言する(=だんだんと減る)
財を消費すると必ず満足が得られる。最初に少しだけ消費したときは、その財が新鮮に感じられるから、満足の増加も大きいだろう。 つまり限界効用が大きい状態である。
しかし、同じ財をたくさん消費したあとでは、その財の追加的な消費はあまり新鮮には感じられなくなる。 その財の消費にかなり飽きがきた状態では、追加的な消費から得られる効用の増加分も、最初ほど大きくはない。
つまり限界効用はプラスであり、その財の消費とともに次第に減少していくといえるのである。 これを経済学では、限界効用逓減の法則という。「逓減」というのは普段まず使わない言葉であるが、要は「だんだんと減る」ということである。
この法則は、皆さんもきっと日常生活でよく感じるのではないだろうか。
例えば、仕事帰りの居酒屋で、まずはよく冷えたビールで乾杯。きっと信じられないくらいとてもおいしく感じるだろう。 しかし、2 杯目、3 杯目とお代わりをしていくと、最初の 1 杯目ほどのおいしさは感じなくなってくるだろう。 それで、だんだんチューハイを頼んだり、ハイボールを頼んだりするはず(なかには乾杯からお開きまでビール一筋という無類のビール党の方もいるが......)。
なお、限界効用が低下しても、その財を消費することが得られる満足度の全体量は増加している。つまり、消費量の増加とともに効用水準自体は増大する。 限界効用は、効用が増えるスピードについての概念で、限界効用が小さくなると効用が拡大するテンポは小さくなるが、必ずしも効用全体の量が低下することを意味しない。
それでは家計の効用最大化行動を、ある予算制約の範囲内でリンゴとミカンという二つの財をどう購入するかという配分問題で考えてみよう。 おさらいになるが、家計にとって効用が最大になるのは、限界メリットと限界デメリットの均衡点であった。 つまり消費の主体的な均衡点は、選択対象となっているものを追加的に拡大したときの追加的なメリットと追加的なデメリットが一致する点に求められる。
リンゴの消費量が増加すれば、効用水準も増加する。そして、効用の増加のスピード(=限界効用・効用の微分)はプラスになるが、消費量が大きいほどそのスピードは小さくなる。 リンゴの消費から得られる効用曲線は右上がりですが、その傾き(=限界効用=効用の微分)はだんだんと小さくなる。 つまり限界効用は逓減する(限界効用逓減の法則)。
リンゴの消費を 1 単位拡大することの追加的なメリットは、リンゴの消費から得られる限界効用である。 限界効用は逓減しますから、追加的なメリットもリンゴの消費とともに減少する。 限界メリット曲線は右下がりの曲線となる。
一方でリンゴの消費の限界的なデメリットは、リンゴの消費を拡大することで他の財・サービスの購入に回す資金量が減少することである。 リンゴの価格が 1 個 100 円とすれば、もう 1 個追加にリンゴを購入すれば、他の財・サービスに回せる資金が 100 円少なくなる。 だから、限界デメリットはリンゴの価格と同じになる。限界デメリット曲線はリンゴの市場価格で与えられ、水平となる。
主体的な均衡点(最適な消費を決める点)は、限界メリット曲線と限界デメリット曲線との交点である。 交点より左側では、リンゴを追加的に購入するメリットの方がデメリットよりも大きいから、リンゴの購入を拡大することが望ましい。 逆に交点の右側では、リンゴの購入の追加的拡大のデメリットのほうがメリットよりも大きいため、リンゴの購入を減らす方が望ましいことになる。
古典ラテン語/不定法を伴う対格

例えば、次のような文がある。
この文を不定法句に変えることによって、cēnseō 「私は~と思う」「私は~と述べる」 という動詞の目的語とすることができる。
この不定法句において、動詞は不定法となるが、主語も述語も対格をとる。
ガリア戦記/用例集/指示代名詞・形容詞/ille

指示代名詞・形容詞 ille, illa, illud は、遠称および三人称的な指示詞であり、かなり頻出する重要な基本単語のひとつである。
Perfacile factū esse illīs probat cōnāta perficere
(1巻3節6項)
sē suīs cōpiīs suōque exercitū illīs rēgna conciliātūrum cōnfīrmat.
(1巻3節7項)
ガリア戦記/用例集/指示代名詞・形容詞/ipse

強意(指示)代名詞(Intensive pronoun) ipse, ipsa, ipsum は、遠称指示詞 ille, illa, illud の語幹 ill- を ips- に替えればおおむね良いが、例外は中性・単数の主格/対格 illud を ipsud ではなく ipsum とする。
主語または述語として用いられる名詞や形容詞を強調するために用いられ、「~自身」などと訳される。これも頻出する重要な基本単語のひとつである。

(1巻3節6項)
ガリア戦記/用例集/動詞/目的分詞

目的分詞 (supine)
辞書の見出しに載っている目的分詞だが、『ガリア戦記』では数えるほどわずかしか出て来ない。
対格形は目的分詞幹に -um を、奪格形は -ū を付す。
対格形は、目的分詞幹fact に -um を、奪格形は -ū を付す。
(1巻3節6項)
経済学/経済とは何か/所得効果

給料が増えて所得が増加し、消費全体に回せる資金量が増加したとする。 消費全体の資金量=所得が増加すれば、消費量も拡大する。 所得効果は消費を刺激する。 通常の消費財は所得効果がプラスで、こうした財を正常財あるいは上級財と呼ぶ。
リンゴの消費量がもとのまま、所得が拡大したとする。 これは、リンゴ以外の財・サービスの消費量が増加することを意味する。 つまり、ミカンの消費量が拡大する。 これはリンゴの限界効用にも影響を与える。 今までよりもミカンの消費量が多くなれば、リンゴがより新鮮に感じられ、ミカンの消費量が拡大する前よりは、同じリンゴの消費から得られる限界効用は増加する。 その結果、リンゴの限界メリット曲線は上方にシフトするのである。 つまり所得の増加で他の財の消費を増加させることができれば、当該財の消費も増やしたくなる。 毎日ご飯と味噌汁ばかりでは飽きるが、時々パン食もあれば、ご飯がよりおいしく感じるだろう。 このような所得の変化による限界メリット曲線のシフトが、所得効果である。
財・サービスによっては所得が増えると消費が減り、限界メリット曲線が下にシフトする可能性もある。 そのような財は、劣等財あるいは下級財という。
例えば主食としての米は正常財であるが、麦(やジャガイモ)などは劣等財である。 所得の低いときはジャガイモや麦飯を食べるが、所得が増えると麦飯ではなく白米を食べるようになる。 所得が増えると消費が減るため、主食としての麦は劣等財ということになるのである。
SVG/はじめに

SVG形式は、画像を作成するための形式です。文字を表示するための形式ではないのです。(web画面に文字を表示するだけなら、HTMLだけで可能です。)
SVGの実際の利用では、たとえば下記のようにして、図形を表示するような用途が想定されています。なお、これは水色の背景の上に、黒い円を表示するプログラムです。
コーディングはHTMLと同様、Windows「メモ帳」などのテキストエディタでSVGのコードも書けます。
webブラウザで閲覧する場合、このコードを、拡張子.htmlで保存します。上記コードの場合、.svgでは動作しないです。なおLinuxなどにおいてSVG画像を表示する場合のファイル拡張子は.svgです(古いバージョンのWindowsでは、ブラウザ以外でのSVG画像表示は未対応です)。
上記コードは、Internet Explorer では動作しません。そのためFirefox または Google Chrome または Microsoft Edge をお使いください。
SVGファイルは上記のように、HTMLのようなタグを記述して作成していきますが、規格上は厳密にはHTMLではなくXMLの一種です。
SVGでは、<svg>タグおよび</svg>タグの内側に、図形などの情報を記述していきます。
もしお使いのwebブラウザのレンダリングエンジンがSVGに対応していれば、ウェブブラウザ上でSVG画像を閲覧することができます。FirefoxとGoogle Chrome は2020年の時点で、SVG画像の表示に対応しており、実際にブラウザ上でSVGファイルをもとにベクター画像を表示できます。 一方、WindowsのInternet ExplprerはSVG未対応です。
なお、対応していない場合でも、外部のビューワプラグインを導入して見ることができるようになる場合があります。
また、SVGファイルを作成する方法は簡単で、テキストエディタを使って自分でSVGファイルを書くこともできます(HTMLファイルの作成方法と同様です)。この他、SVG画像を作成する専用のソフトウェアとして、フリーソフトのInkscapeなどがあり、Inkscapeでは標準の画像形式としてSVG画像が採用されています。
また、標準の画像形式としては採用していませんが、Microsoft OfficeやLibreOfficeなどのオフィスソフトでも、バージョンの新しいものであればSVG画像を作成できます。
なお閲覧ソフトについては、かつてAdobe社が SVG Viewer という閲覧ソフトを開発していましたが、2009年にはサポート終了されています。

SVGのコードを記述したHTMLファイルをwebブラウザで開く場合は、拡張子を.htmlにしてください。もし拡張子を.svg にしてしまうと、ブラウザでは図形描画をできなくなります(コードそのものの文字列がブラウザ画面に表示されてしまいます)。
一方、ドローソフトの Inkscape で開く場合には、ファイルの拡張子を .svg にしてください。本書で紹介するsvgコードのほとんどは、拡張子を .svg に変えれば、Inkscapeで編集できます。
なお、W3C系の規格にもとづくSVGファイルをInkscapeで読み込むことはできますが、しかしInkscapeで編集したファイルには、W3C規格外のタグもあります。InkscapeのSVGの仕様は、Inkscape SVG という名の独自仕様です。このため、Inkscapeで編集した図形を、そのままブラウザで読み込むのは、できたとしても、あまり好ましくないでしょう。
どうしてもInkscapeでブラウザ用の画像を作成する場合、形式を「名前をつけて保存」などの際にプレーンSVGという形式(W3Cの素のSVG規格に比較的に近い形式)に変換できますので、プレーンSVGに変換しておいてからHTMLで読み込みをするのが安全です。
Inkscapeコミュニティの目的は、けっしてW3Cの想定するようなブラウザ開発ではなく、ドローイングソフトの開発がInkscapeコミュニティの目的なので、ドローイングソフトとして必要な多くのタグが、Inkscapeで作成したファイルのソースには作成されます。(『メモ帳』などのテキストエディタで、Inkscapeで作成したSVGファイルのソースコードを簡単に閲覧できます。)
余談ですが、InkscapeはSVG形式への変換の他、HTML5のcanvasタグの形式のHTMLファイルへも変換できます。
HTMLの仕様とは別に、XML(拡張マークアップ言語)というタグを使って情報を記述していく記法があります。SVGはこのXMLを利用しているため、XHTMLやMathMLなどの他の標準と組み合わせて使用することができます。DOMによるメソッドを使ってJavaScript (ECMAScript) から操作することも可能です。XPathはSVG画像の特定の要素を指し示すことができます。 XML自体はSVGだけでなく、データ形式を記述するのにも利用されています。
たとえばJavaScriptをHTMLファイルとは別の外部ファイル(拡張子 .js)として読み込む場合、コーディングは比較的に簡単に記述できるようになっています。
しかしSVGでは、まだブラウザの対応が進んでおらず、けっしてJavaScriptのようには、そう簡単には外部ファイルを読み込みできません。
2020年の時点では、名前空間として xmlns="http://www.w3.org/2000/svg" などの情報をSVG画像のソースコードに指定する手間などがあります。
このため、現状では、簡単な図形などは、HTMLファイル側に直接にSVGタグを書き込む「インラインSVG」の手法でコーディングするのが簡単です。

SVGは規格上は動画フォーマットとしても対応するように制定されていますが、実際は主に静止画像として多くのSVG対応アプリケーションに採用されています。
また、SVGで想定している動画とは、たとえば図形の平行移動や回転移動や拡大縮小といった動きの動画です。
けっして、YouTubeなどのような動画サイトの動画形式などに対応しているわけではないので、誤解のないように。
SVG/動画

SVGの動画を実行または閲覧するには、webブラウザで実行・閲覧を行ってください。Firefox, Google Chrome, Microsoft Edge はSVG動画にも対応しています。
一方、Inkscapeでは動画は無効化され、静止画しか表示されません。
次のコードは、水色の背景の上に、四角を水平方向に移動させます。
まず、移動させたい対象物に対応する開始タグと終了タグの間に、<animate>タグを入れます。
上記の場合、四角形を移動させたいので、<rect>タグおよび</rect>の間に、<animate>タグを入れることになります。
また、前提として動画SVG図形の場合、開始タグと終了タグを両方とも用意しないといけません。(一方、動画でない静止画を書くだけなら、タグは終了タグ1個でなければならない。)
自分でコードを書いた際、もし静止してしまって動かない場合には、よくあるミスですが、開始タグのつもりが末尾に/などがついて終了タグになっていないか、点検してください。(静止SVG図形用のコードをコピーしたときに、よくやるミスです。)
動画のスピードは入力せず、入力するのは初期値と最終値および、1回の描画あたりの時間(単位は秒数)を入力すると、SVGが代わりに適切なスピードを選択して、動画の描画を実行します。
回転の方向の正負(プラスマイナス)は、時計回り(右回り)が正・プラスです。
なお、durを3秒以下にすると、人間の目では、見るのが疲れます。なので閲覧者の安全のため4秒以上にすると良いでしょう。
SVGでいう回転は、数学でいう線形変換の回転行列に近いですが( 高等学校数学C/行列 )、しかし方向が数学とは違い、SVGでは時計回り(右回り)がプラスの方向になっている事に気をつけてください。
前の節の方法では、上下方向または水平方向にしか、移動できないです。
斜めに移動するには、animateTransformタグ および 属性 attributeName="transform" およびtype="translate"を使います。
animateTransform は平行移動の他にも回転も扱います。type属性によって、平行移動か回転かの区別をします。
図形の移動の軌跡の指定方法は、value属性による相対座標で表します。上記コードの場合の
は、rectタグの座標を起点とした相対座標です。
上記コードの場合、
というふうに3点の間をこの順番で移動していきます。
起点の絶対座標が(10,40)ですので、絶対座標に換算すると、
というふうに3点の間をこの順番で移動していきます。
このようにvalue属性で指定する点は3点以上でも構いません。
他の属性については、ブラウザによっては
を省略できます。
しかし、
は移動の種類を決定するので、絶対に必要です。(実際、ここを削ると、ブラウザでは動画として動作しなくなります。)
も、今のところ、どのブラウザでも絶対に必要です。(おそらく実装の都合もあるのでしょう。)
SVG動画で回転をさせたい場合animateTransformタグ および 属性 attributeName="transform"を使うことに加えて、
を指定します。type属性は transalateではなくrotate です。"translate" とは数学の用語で「平行移動」という意味ですので、もし回転させたい場合には translate は不適切です。
"Transform"(変形、変身)と "translate"(平行移動、並進) は意味が違うので、混同しないように注意してください。
SVGでは行列計算によって、図形を縦長にしたり横長にしたりなどの変形を行えますが、回転も行列計算で行っているためか、SVGでは回転は"Transform"(変形、変身)に分類されます。

from 属性で、開始時の角度と座標位置を指定します。
rotateの場合のfromの書式は from="角度 x座標,y座標" です。
同様に、 to 属性で、終了時の角度と座標位置を指定します。
rotateの場合のtoの書式は to="角度 x座標,y座標" です。
from や to のx座標とy座標は省略できますが、その場合、原点 (0,0) が回転の中心になります。
from や to を使わずにvalue で回転の方法を指定する事もできますが、回転の場合にfromとtoを使わないと集団作業でのメンテナンスがしづらくなる可能性があるので、なるべく from や to で記述しましょう。
SVGでいう回転は、数学でいう線形変換の回転行列に近いですが( 高等学校数学C/行列 )、しかし方向が数学とは違い、SVGでは時計回り(右回り)がプラスの方向になっている事に気をつけてください。
SVGのrotateは回転行列の一種なので、回転の際には一般に、自転とともに公転をしてしまいます。
もし、「公転だけをさせたい」という場合には、anmateMotionを使うことで、パスにそった平行移動が可能なので、それを流用して公転を命令できます。
たとえば次のようなコードで、公転だけをさせることができます。
path属性で、下記の「M」(m)や「A」(a)のようなパスコマンドで、移動のコマンドを入力できます。
コマンド「M」および「m」は始点のセットです。「M」とはペンの移動 Move の M だと思われます。大文字「M」だと絶対座標で始点の位置を指定します。小文字「m」だと相対座標で始点の位置を指定します。
の書式です。
相対座標の場合の基準は、前の命令の終わった時点が基準です。
以下、別のコマンドでも位置を扱うコマンドなら同様に、大文字なら絶対座標での位置指定であり、小文字なら相対座標で位置指定をしています。
コマンド「A」および「a」は、楕円にそった移動の命令です。「A」とは円弧 Arc の A だと思われます。
正円(小学校で習うような普通の円)の専用のアニメーション命令は用意されていないので、楕円のa命令を正円でも流用します。(後述の半径xと半径yを同じ値にすれば、正円として流用できます。)
大文字「A」だと絶対座標です。小文字「m」だと相対座標です。
aの書式は、
です。
回転向きフラグは、0なら反時計周りです。1なら時計周りです。
large-arc-sweep-flag とは、楕円の円弧は始点と終点の2点を定めても一通りには定まらず、長弧と短弧の2通りの弧があるので、そのうちどちらかを指定するためのものだという仕様です。仕様上では、large-arc-sweep-flag が0なら短弧で、1なら長弧という仕様です。
ですが、実際のブラウザ実装では、なぜか短い弧しか選択されない場合があるので、とりあえず180度以上の弧に沿って動かす場合には、180度以下の2つの弧の組み合わせとしてコードを記述するのがラクでしょう。
経済学/経済とは何か/価格変化と代替効果

削除依頼中
当ページ「経済学/経済とは何か/価格変化と代替効果」の削除依頼が提出されています。今後当ページに加えられた編集は無駄となる可能性がありますのでご注意頂くとともに、削除の方針に基づき削除の可否に関する議論への参加をお願いします。なお、依頼の理由等については削除依頼の該当する節やこのページのトークページなどをご覧ください。
リンゴの価格が変化したときの、リンゴの消費量に与える効果を考えてみよう。 リンゴの価格が低下すればミカンよりもリンゴを購入することが相対的に有利になるから、リンゴの消費が増加する。 これを代替効果と呼ぶ。
リンゴの価格が低下すると、リンゴの限界デメリット曲線は下方にシフトし、リンゴの購入量は増加する。
同時にリンゴの価格が低下すれば、リンゴの購入量を元のままに維持したとき、他の財に回せる資金は増加する。 相対的に可処分所得が増えるから、リンゴの価格の低下は所得の拡大と同じ効果を持つ。 そのため限界メリット曲線は上方にシフトする。
正常財の価格が低下すると、限界デメリット曲線は下方のシフトし、限界メリット曲線は上方のシフトする。 それにつれて均衡点は右方に移動する。つまりリンゴの消費量は増加することになる。
均衡点の移動を二つの動きに分解してみよう。 限界デメリット曲線の下方シフトによる効果が代替効果、 限界メリット曲線の上方シフトによる効果が所得効果になる。
このように価格変化は代替効果と所得効果に分解できる。 代替効果は実質的な所得が変化しないときの価格変化の動きであり、プラスになる。 所得効果は正常財であればプラスであるが、劣等財の場合にはマイナスになる。
正常財であれば、その財の価格が低下すると、必ずその財の購入量は増加する。 しかし、所得効果がマイナスの劣等財の場合は、価格が低下したとき、代替効果を所得効果が相殺する方向に働くので、 総合すると効果がどうなるかを確定できない。
所得効果がマイナスの劣等財では、その財の価格の下落により、その財の需要が減少することもあり得る。 こうした財はギッフェン財と呼ばれている。
その財の価格が低下すると実質的な所得が増加するため、劣等財であれば、所得効果からはその財の需要が減少する。 これに対して、代替効果からは、価格の低下によってその財に対する需要は増加する。 このとき、代替効果よりも所得効果の方が大きければ、価格の低下によって需要は減少する。
1845 年のアイルランドでは、飢饉でジャガイモの価格が上昇した。 このとき、経済的余裕のない家計は他の財(パンや肉)に対する支出を減らしてジャガイモの支出を増やしたので、 他の財の価格が下がったのである。価格の低下と需要の減少が同時に起こったわけである。
リンゴの需要は、所得やリンゴの価格だけではなく、他の財、特に果物の価格によっても変わる。 例えばミカンの値段が上昇すると、リンゴの需要は刺激される。 これはリンゴのミカンに対する相対的な価格が下落し、ミカンと比べて相対的にリンゴが安くなるからである。
このような、他財の価格の変動による需要の変化をクロスの代替効果という。 ミカンの価格の上昇はミカンからリンゴへの需要の代替を引き起こすため、このような関係の財は代替財と呼ばれる。
一方、例えば紅茶とレモン、パンとバター、野球用具のボールとバットなどでセットで需要される財は、そのうちのひとつの財の価格が上昇すると、両方の財の需要が減少する。 例えばバターが値上がりすると、バターの需要が減少するだけでなくパンの需要も減少する。 このような関係にある二つの財は補完財と呼ばれる。
皇室典範第3条

本条は、第2条に定める皇位継承順位の変更について定めている。皇位継承順位はあらかじめ明確に定めるべきであり、一度決められた順位は安易に変更されるべきではない。一方、皇位継承順位を絶対に変更できないとすることも不適当と考えられるため、条件を限定し、かつ、手続を明確にした上で、順位の変更ができることとされている。
本条では、順位を変えることができる場合を、皇嗣(皇位継承順位第1位の皇族)に、(1)精神若しくは身体の不治の重患があり、または、(2)重大な事故があるとき、と定めている。また、皇室会議が発議し、決定することにより、順位が変更される。
WinSock/MSDNのソケットコードの保管場所

MSDNにあるwinsockの完成形コードを、予備としてwikibooksにも保管しておく。 (過去にマイクロソフト社は、MSDNにあるWin32API日本語訳の解説書などを(コスト削減などのためか)削除したという前科をやらかした日本人を舐めたフザけた企業なので、万が一にもwinsockコードが削除される可能性にそなえて、wikibooksに保管することにする。)
2020年の現在でも、下記のプログラムで動作します(確認ずみ)。
※ クライアント側のコードが古くなっており、2020年現在では、下記の2018年のコードのままでは動作しないです。(更新の箇所は、この節の末尾で後述しています。)
Winsock Client Source Code

2018年づけでMSDNが紹介しているままのクライアント側の上記のコードだと、2020年7月の時点では動作しないです。
原因はおそらく、プログラム仮引数の仕様がいつの間にか変更されているようです。
下記のように、
のブロックをコメントアウトして(/* */ でコメントアウトできる)無効化すれば、このプログラムは動作するようになります。

これとは別件で、実行ファイルをダブルクリックして起動した場合など、起動方法によっては、実行の最後に return が返された瞬間にウィンドウが閉じてしまい、表示を確認できない場合がありますので、キー入力があるまで一時停止させるために、コード末尾の return の直前に system("pause"); を下記のように加えてください。
なお、 system("pause"); の使用にはヘッダとして #include <stdlib.h>のインクルードが必要ですが、このソケット通信のプログラムではたまたま既に同じヘッダが冒頭でインクルード済みなので、再度の記述は不要です。
Winsock Server Source Code
WinSock/MSDNソケットコードの解説

MSDNにWinsockの完全形(complete)と称するプログラムがあるが、アレはナニをやるプログラムかを大まかに説明する。
もし、リンク先が内容変更したり消失したりした場合は、下記の場所に控えを保管してある。
これらのプログラムは、総合的には、 あなたの手元のパソコンにローカルなサーバー(とりあえず「ローカルサーバー」と言おう)を立てて、 そのローカルサーバーとデータを送受信するクライアントアプリを作っている。
なので、クライアント側アプリを作る前に、先にサーバー側プログラムを作っておかないと、クライアント側を実行しても(相手先のサーバーが無いので)通信エラー扱いで終了になる。
とはいえ、サーバー側はあなたの手元の今見てるローカルPCで、MSDNにある当のサーバー用プログラムを実行するだけで、ローカルサーバーが立つ。
一般に、ウィンドウズにかぎらずLinux(リナックス)などでも、
一般に何かサーバーを立てるときに、手元のパソコン内にローカルなサーバープログラムを立てる機能がある。そして、その手元のパソコン内のローカルなサーバーには、その手元のパソコンでのOS内の別プログラムからアクセス可能である。
俗(ぞく)に、こうして立てられた手元のサーバーのことを「ローカルホスト」(localhost)という。
なので、まず、そのローカルホストのサーバーを立てる必要があり、そのためにローカルホスト(ローカルサーバー)のプログラムを実行する必要がある。
さて、とにかく、MSDNをコピーペーストしてコンパイルして、
クライアント側アプリの実行ファイルを作成し、
また、別途、
サーバー側アプリの実行ファイルも作成する。

両方と作成したとしたら、次の作業に取り掛かるだけでいい。

上記のような実行結果が、サーバー側プログラムから起動したコマンド端末画面(DOSプロンプト)に表示される。

まず、Visual Studio を立ち上げる(Visual Studioでないとコンパイルが困難または不可能なので)。
そして、これからサーバ用のプロジェクトと、クライアントのプロジェクトをそれそれ作る。(Visual Studioによるコード作成の際に勝手にプロジェクト名をダイアログ形式で聞いてくるので、質問に答えてプロジェクト名を入力していけばいい。
プロジェクトは、サーバ用とクライアントを別個に作るほうが、あとの管理がラクである。
先にサーバ用のプロジェクトを作るほうがラクである。
画面上部のツールバーにある「Debug」「X86」みたいな欄の「Debug」を、となりの下向き▼ボタンを押して変更して「Releasr」に変更する。
Debugで生成される実行ファイルというのは、デバッグ用にVisual Studio から起動したりするぶんには操作が早いのだが、それ以外の環境で実行する場合に、やや問題がある。
なので、一般の実行ファイルとして、Release に変更したほうが安全である。
そして、まず上記の2個のコードを、それぞれのプロジェクトのソースコードに記述してから、それぞれReleaseに設定してから、メニュー欄のビルド系のコマンドで別個に実行ファイルを作る。
ただし、クライアント側のコードがMSDNの2018年の内容は古くなって動作しないので、更新として、節の末尾で示した方法で更新のこと。
プロジェクト内のフォルダに、それぞれ実行ファイルが作成される。
なお、
似たようなメニューコマンドがあるが、リビルドのほうが正確にコンパイルしてくれる。 リの付いていない単なるビルドは、Visual Studio の場合、差分的なビルドであり、変更点だけを検出してビルドすることでビルド時間などを短縮したりの機能があるようだが、しかしときどき不正確な検出をしているようであり、正しくビルドが行われない場合がある。(「リビルド」だとコンパイルできるコードが、「ビルド」だろときどきコンパイルがエラーになったり、あるいは実行結果が不正確だったりする場合がある。)
上述の程度の長さのコードだったら、リビルドをなるべく普段から使うようにしたほうが安全である。
ここまで住んだら、あとはサーバ側の実行ファイルを先にダブルクリックすれば、あとはもうVisual Studio が無くてもダブルクリックだけ(ローカルの)サーバが立ち上がる。
このあと、クライアント側の実行ファイルを立ち上げて、通信が行われているのを確認すればいい。

ユーザー名やプロジェクト名(下記では sockTestClient )などの部分は、個々人の設定によって表示結果が変わるが、おおむね下記のように
とか表示されれば成功である。
WinSock/外部通信の方法

MSDNのコード(WinSock/MSDNのソケットコードの保管場所)だと、まだローカルホストにしかアクセスできない。
外部アクセスするには、どうすればいいだろうか
getaddrinfo の第一引数にホスト名(www.なんとか)を入力すればいい。
その他、 TCP/IP で通信する場合なら、 sockaddr_in 構造体というのが既にWindowsに用意されており、これの構造体変数に必要な値を代入する方法もある。
sockaddr_in 構造体とはunixソケットプログラミングに由来する用語だが、
winsockにも同名の構造体が存在する。"SOCKADDR_IN structure"

上述のsockaddr_in 構造体などの方法でとりあえず、ネット上に公開されている、どのサーバーとも原理的には通信できる。
では、これによって、どうやって、ネットのホームページなどを受け取るのかというと、
実は仕組みは、
特殊なメッセージとして、「HTTPヘッダ」(分野によって多少、名称が違う)などの名前で呼ばれる種類のメッセージを送受信している。(HTTPヘッダの送受信のコマンドは通常のソケットプログラミングのコマンドと同様、send()やrecieve()などで送受信する仕組みである。)
HTTPやTCPなどの規格により、"GET 〇〇"というメッセージを受け取ったらああしろとか、"Host: 〇〇"といううメッセージを受け取ったらああしろ、など の仕様が色々と規格的に決まっている。
たとえば、もしドキュメントルートに「index.html」というファイルがあって、これの読み取りをHTTPサーバーに行わせたければ、おおむね
というメッセージをクライアント側からサーバーに送信( send()関数 )する事になる。
そして、規格にある命令を受け取ったサーバーは、その命令に応じて、サーバー側が管理下のファイルなどを読み取って、読み取った結果をクライアント側に受け渡す、という仕組みである。
この節の内容はWindowsに限らず、LinuxやBSDなどでも同様の仕組みである(というか、unixなどのソケット通信の仕組みをWindowsも真似た)。
Host の部分は、このGETメッセージを送る際のヘッダです(MINEヘッダと言うものです)。
クライアント側は、けっして直接には、htmlファイルそのもには接続していない。あくまでサーバー側が、メッセージで要求されたhtmlファイルを探してきて、それを読み取って、内容をクライアントに送り返すという仕組みである。
事前のテストなどで、webブラウザでサーバーにアップロードした index.html を見ると
のような英字がブラウザのアドレス欄に表示されるので、あたかもクライアント側が「loacalhost」にある「index.html」というファイルに(勘違いだが)直接に接続しているかのように錯覚しがちであるが、しかし実態ではクライアント側は localhostサーバーの送受信の窓口以外には何も接続していない。
この場合にクライアント側が接続しているのは、localhostの送受信窓口だけである。

なお、ブラウザが画面に文字や画像を表示できたりするのは、送られてきたテキスト本文(HTMLコード)や画像などのバイナリデータといった文字列を、ブラウザ側で解釈して、 文章や画像などに変換しているからである。これはソケットプログラムの範囲を超えるので、説明しない。また、それらの変換をするソフトウェアも、ソケット通信ではなく、アプリであるブラウザ側でそういった画像や文章などへの変換を行っている。
なお、そのようなHTMLを読み取るソフトウェアのことはHTMLパーサ(HTML解釈機)という。一般的なwebブラウザには、アプリ内部にHTMLパーサが入っている。
おおまかには、もしwebブラウザをイチから作るとしたら、HTTPヘッダの送受信の機能の自作と、HTMLパーサを自作すれば、とりあえずはwebブラウザのようなモノを作れるだろう。(実際には規格としては明文化されてないような、細かい仕様もあるだろうから、ブラウザ自作はオススメできないが。)
HTTP通信で具体的にApache(アパッチ)などのHTTPサーバと接続するソケット通信コードの具体例およびコードサンプルについては 単元『WinSock/HTTP通信』 で説明およびコード掲載してある。
WinSock/初心者むけの全体像

ウィンドウズのVisual C++などマイクロソフト製プログラミング言語を使ってネットワーク通信プログラミングをするには、Winsockをインクルードしなければならない。
なお、Winsockを使うにも、原則として Visual Studio が必要である。
まず、2020年の時点で、下記のような仕様である(実機で確認)(※ ネットにあるサイトの情報が古いので(2001年くらいのとか平気である)、2020年代の現代では実機で確認の必要がある。)。
2020年代でも、 Visual Studio でWinSockプログラミングを開発できる。
まず、Visual Studio で立ち上げるコード種類を選ぶ際には、Visual Studio の普通のC言語用のコンソールアプリケーションでよい。つまり、よく学校教育とかのC言語の授業の Hello World とかの入門で使う、普通のアレでいい。
ネット上にはMinGWでWinSockコードをコンパイルした事例なども紹介されているが、たとえば
などのコマンドが各所のサイトに紹介されているが、しかし2020年現在、IPv6 関連の関数の一種である inet_pton() や inet_ntopなど新しい関数がMinGWは対応しておらず、そのため、それらの関数を用いているコードの場合、Visual Studio コンパイルできたコードがMingWではコンパイルできない。
ちなみに、上記のg++コマンドではリンクオプションの-lを用いており、 「-lwsock32」とは「ライブラリ libwsock32 をリンクせよ」という意味。
また、コマンドラインでの -lws2_32 の位置には意味があり、コマンドラインの末尾のリンクするライブラリの指定
ソケット通信は、Windowsに限らずUnixなどでも一般に、通信の工程が下記のように分類されます。
WSAなんとかという用語は Winsock だけの用語ですが、それ以外のbindやsendなどの用語は、Unixソケット通信でも共通です。



Winsockプログラムでの典型的な基本骨格は、下記のようになります。
これだけだと、単にWinsockを起動するだけなので、何も通信しないし表示しません。
このコードをもとに、これからコードをどんどん追加していって、必要なコードを加えていくことになります。
さて、Winsockでは、API関数がいくつか提供されている。
たとえば、WSAStartup は、WinSockの初期化のための関数であり、この関数の使い方も既に決まっている。⇒ WSAStartup function (winsock.h)
なお、WSAStartup関数で必要な設定を初期化するために、事前にWSADATA 型 の変数のセットアップが必要である。
WSAStartup の1番目の変数の内容は、使用するWinsockのバージョンの指定です。とりあえず「2」を入れておけば、問題ありません(実機で確認ずみ)。
WSAStartup の2番目の変数の内容は、この処理内容を入れるためのWSADATA型変数の指定です。
なのでイメージ的には、まず
のように宣言をすることになる。
関数 WSACleanupは、WinSockを終了させるAPI関数です。

さて、Winsockのコードは、どのコードでも、まず、
のようにコードの冒頭で winsock2.h をインクルードする記述が必要になる。もう何年も前からwinsockのバージョンが 2.x なので、2020年代でも引き続き、インクルードするのは winsock2.h で良い。なお、2020年の現時点では、Winsockは普通はバージョン2.2である(実機で確認ずみ)。
また、ライブラリ 「ws2_32.lib」も必要なので、下記のように pragma 演算子でライブラリ導入する必要がある。このライブラリを導入しないと(つまり下記のpragma文が無いと)、コンパイルしようとしてビルドボタンを押してもエラーになる。
結局、
のように冒頭で宣言することになる(ひとまず、コレだけでも動作が可能である)。
たとえば外部リンクのウィズダムソフトのコード例も、この冒頭の宣言を加えるだけで2020年代でも動作する(実機で確認ずみ)。
なお、2020年の現時点でも、Winsockはバージョン2.2であるので、インクルードするのは <winsock2.h> で良い。
なお、最終的にサーバ側のプログラムでも、クライアント側のプログラムでも、それぞれ <winsock2.h> をインクルードすることになる。
経済学/経済とは何か/企業の目的

企業は、労働者を雇用して機械などの資本設備を用い生産活動を行う経済主体である。
市場では数多くの企業が競争しているが、その最大の目的はいうまでもなく利潤の追求、つまり儲けをより大きくすることである。
こういい切ると、「いや、企業の目的は従業員にいっぱい給料を払って幸せにすることじゃないか」とか「企業の目的は株主の利益確保だ」という意見が出る。 また「企業は社会的責任を果たすからこそ存在意義がある」という人もいるだろう。 確かにこれらの意見も間違いではない。これらもすべて企業の目的ということができる。
しかし結局は、企業の目的は長期的な利潤の追求といって間違いはないだろう。 なぜなら、利潤が獲得できるからこそ従業員の経済的な要求に対応でき、社会的な貢献も可能になり、株主の配当にも応えていくことができるからである。
企業の社会的貢献も、採算を度外視して行われるわけではない。社会的な貢献をすることでその企業に対する消費者のイメージがよくなれば、有利な立場で製品を販売できるし、また労働雇用においても優秀な人材を確保しやすくなる。 従って企業の社会的な貢献は長期的な利潤の追求と矛盾しないのである。
こう考えていくと、その他の目的、たとえば長期的なシェアの拡大なども、長期的な利潤追求の一つの手段であると解釈できる。 そこで、ここから先は単純にして明快な目的である「利潤の追求」という基準で企業の行動原理を説明してゆく。
経済学/経済とは何か/生産関数

まず、企業の生産活動について考えよう。
企業の生産活動を理論的に式に置き換えようとするときに重要な概念となるのが、生産関数である。 生産関数とは、生産需要(労働力や資本など)と生産物との技術的な関係を表したものである。
例えばある企業について、一定の効率的な企業経営が行われていて、生産要素と生産水準との間に安定的な技術的関係(=生産工程)が導出されているとする。 このときの生産要素と生産量との関係を表しているのが生産関数のグラフである。 生産関数のグラフは労働(変数 x)というひとつの生産要素を投入してある生産物を作るときの生産量(変数 y)の変化を示している。
生産関数のグラフは、x の増加とともに y も増加するが、その増加の大きさである曲線の傾きが次第に小さくなっていくのがわかる。
ある生産要素の投入量 x が増大すると生産量 y も増加するが、ある一つの生産要素のみを投入し続けていくと限界生産(生産要素を増やしたときに追加的に増える生産量=生産量の微分)はだんだんと減っていく。 これを限界生産逓減の法則という。
労働投入 x = 1 のとき生産 y = 10 であったとして、労働を追加的に 1 単位増加させて x = 2 とすると生産 y = 15 となったとしよう。 この場合労働の限界生産は 15 - 10 = 5 となる。さらに x = 2 から労働のんみ追加的に 1 単位増加させたとき、生産 y = 18 に拡大したとする。 このときの労働の限界生産は 18 - 15 = 3 である。このように労働のみを増やしていくだけでは、生産の拡大は場は次第に小さくなっていくだろう。
経済学/経済とは何か/費用曲線

次に費用について考えてみよう。
利潤(儲け)は、収入から費用を差し引いた金額で定義される。 だから、企業が利潤を最大化するためには、費用を最小化しなければならない。 企業は利潤を最大化する前提として、生産にかかる費用を最小にして、より効率的に生産をする必要がある。
どこまで生産量を拡大するかは利潤最大化行動の結果として決まるが、 どの水準の生産量であっても、それを生産するのにかかる費用をできるだけ小さくすることは常に企業の利益に合致する。
企業が各生産水準で費用を最小化する行動を取ることを前提とすると、生産量と最小化された費用との間には、ある一定の関係があることがわかる。 この関係を示しているのが、(総)費用曲線である。
生産量が増加すると、それを生産するために要する(最小化された)総費用も増加する。 だから、総費用曲線は右上がりになる。しかも、その傾きは次第に急になる。 つまり、生産量が小さいうちは追加的な生産に必要な費用はそれほど大きくないが、 生産量が拡大するにつれて追加的な生産に要する費用も大きくなるからである。
そして、総費用曲線の傾きが限界費用になる。限界生産が逓減すると、限界費用曲線は右上がりになる。 例えば労働者の働く時間が長時間になると、生産の増加スピードは下がります。 しかし、賃金は時間当たりで一定額を支払うことが普通だから、仕事時間が増える分だけ総支払額が増加して、 企業にとっては費用がより増大する結果となるからである。
経済学/経済とは何か/利潤の最大化

削除依頼中
当ページ「経済学/経済とは何か/利潤の最大化」の削除依頼が提出されています。今後当ページに加えられた編集は無駄となる可能性がありますのでご注意頂くとともに、削除の方針に基づき削除の可否に関する議論への参加をお願いします。なお、依頼の理由等については削除依頼の該当する節やこのページのトークページなどをご覧ください。
ここまで企業の生産活動と費用の関係を見てきた。
これらの話を前提にして、完全競争市場において企業がどのように利潤最大化行動をとるのか、考えてみよう。 利潤は、売り上げから生産費を差し引いた残りであった。 これがどうすれば最大になるかを考える。
例えばある財を y、その市場価値を p とする。 このとき売上額(=販売収入)は生産量×市場価格つまり py になる。
話をわかりやすくするために、ここでは市場の規模はとても小さく、市場価格 p のもとでいくらでも生産物を販売できると想定される。 つまり作った分だけ市場で売れるとする。 そうすると、売上額 py は、生産量 y に単純に比例して増加する。
売上額 py と総費用曲線 c(y) を同一グラフに描くと、限界費用は逓増(だんだん増える)ので総費用曲線の傾きは次第に大きくなっていく。 この総費用曲線と売上額の線の垂直距離の差が利潤 π {\displaystyle \pi } に相当する。
利潤 π {\displaystyle \pi } は生産量 y とともに変化し、y が小さいときに増加するが、 y が大きくなると減少に転じる。利潤が最大になる生産量を y ε {\displaystyle y_{\epsilon }} とすると、 y ε {\displaystyle y_{\epsilon }} が企業の最適点になる。 だから企業は π {\displaystyle \pi } がもっとも大きくなる生産量 y = y ε {\displaystyle y=y_{\epsilon }} を選択することになる。
要は限界収入と限界費用が一致する点では、これ以上生産を増やすことも減らすことも企業の利益にならない。 ここが企業の主体的な均衡点(=利潤最大点)となる。これが企業の利潤最大条件である。
経済学/経済とは何か/完全競争

削除依頼中
当ページ「経済学/経済とは何か/完全競争」の削除依頼が提出されています。今後当ページに加えられた編集は無駄となる可能性がありますのでご注意頂くとともに、削除の方針に基づき削除の可否に関する議論への参加をお願いします。なお、依頼の理由等については削除依頼の該当する節やこのページのトークページなどをご覧ください。
ここまで、家計、企業について説明してきた。 よって次は市場について考えてみよう。
Unixソケットプログラミング/通信の全体像


このコードは、ソケットを作成し、エラーハンドリングを行いながらその結果を表示する簡単なCプログラムです。
以下はコードの詳細な解説です:
このプログラムは、ソケットの作成に成功したかどうかを確認し、エラーが発生した場合にエラーメッセージを表示するシンプルな例です。ソケットの作成後、適切にクローズすることにより、リソースリークを防ぎます。
このCプログラムは、ソケットを使用してリモートサーバーに接続し、データを受信する基本的なクライアントプログラムです。
以下はプログラムの主要な要点についての解説です:
このプログラムは、クライアントがサーバーに接続し、データを受信する基本的なソケット通信の例を提供しています。エラーハンドリングが含まれており、エラー時には適切なエラーメッセージが表示されます。
このCプログラムは、ソケットを使用して簡単なサーバーアプリケーションを実装しています。以下はコードの詳細な解説です:
WinSock/HTTP通信/文字コード関係

まず、実際にUTF-8でXAMPP上にアップロードされた日本語ファイルを、コマンドラインで表示をできるコードを示す。 ただし、アップロードされるテキストファイルの文字数によって、冒頭のヘッダ文の内容が少々変わるので、若干、テキストファイル本文の開始位置がズレる。
下記コードの newArray[i] = buf[252+i]; の252の部分をプラス2したりプラス4したりすると、おおむね、位置があう。つまり newArray[i] = buf[254+i]; に変えると、うまくいく場合がある。(詳しくは配列の中身を解析のこと。)
252の数字の部分は、環境によって違う可能性があるので、正確には、HTTPヘッダ文字列を解析して値を決定すること。

また、アップロードするテキストファイルには、
とだけ書いてあるとしよう。


表示結果が長いが、ちゃんと
というふうに、アップロードした「成功」という文字列が表示されている。

まず、XAMPPのアップロードの際に、UTF-8でアップロードしようが、最初に送られてくるHTTPヘッダの文字列
のメッセージが、XAMPPの設定にもよるが、普通はUTF-8でなく、ANSIなど別の文字コードで送られてしまうので、このヘッダ部分を、なんらかの方法で上手く除去しないといけない。
なぜなら、もしそのまま、 Windows.hにある文字コード変換の関数
を使っても、冒頭のANSI的な別コードの文字列の影響のせいで、(コンパイルはできるが)エラーになってしまい、文字列がうまく表示されないからである。
そこで、ヘッダの文字列の最後の、
の文字列をなんらかの方法で探し出し、
その行の次の文字列から、新規のchar型の配列を作れば、その新規配列にはUTF-8文字列しかないので、変換の際の ANSI と UTF-8 との混在を防げる。
あとは、とにかく、UTF-8だけのコードさえ抜粋できてしまえば(そして、その抜粋した内容を新規の配列にまとめれば)、Windows.hにある文字コード変換の関数
を使えば、UTF-8コード(マルチバイト)を、古いWindowsでも表示できるワイド文字列に変換できるので、この MultiByteToWideChar() 関数で変換すればいいだけである。

まず、printf()関数のフォーマット指定子(%dとか%sとかのヤツ)を「%x」とすると、その変数にあるビットパターンが16進数で見れる。
recv()関数で受信した配列の中身を表示する事により、何を受信したかが明確にビットパターンで表示できる。
さて、
とあるが、これは
を意味している。
さて、
とあるが、
これはBOM(バイトオーダーマーク、略称BOMは「ボム」と発音)という、制御用の文字コードの一種であり、UTF-8の場合には「ef bb bf」というビットパターンがつくことがある。(詳しくはw:バイトオーダーマーク)
BOMがあるか無いかは、OSによって異なるが、Windowsはかつては基本的にBOMがあったが、UTF-8にはそもそもバイトオーダーは1つなので意味がなくShellBang!との親和性もなく、Windows 10 19H1以降はBOMなしが既定となった。
2024年2月時点では『メモ帳』で保存しても、BOMはつかない。
また、フリーソフトのTeraPad も、文字コード指定して保存する際に「UTF-8」を選択したとき、BOMがつく。もしTeraPadでBOMなしを選びたいなら、「UTF-8N」で保存しないといけない。
他のテキストエディタだと、「UTF-8」でもBOMなしの場合もあるので、テキストエディタの説明書などを確認のこと。
さて、BSD(マックもBSD派生)などのUnixでは、BOMをつけないのが主流である。そして、サーバ業界ではUnixが主流である。
なので、将来的にソケット関係のプログラマーはUnixの方式に合わせることになる可能性が高い。
なお、BOMなしで保存した場合でも、改行+復帰の2回ぶんの「dada」の部分は残る。
なので、もしブラウザなどを作りたい場合、手順はおおむね、
のような手順になるだろう。
BOMのある場合、基本的にこのBOMの直後からテキスト本文が始まるハズなので、文字列の変換する場合には、BOM以降のビットパターンから変換していく必要がある。
誤って、BOMごと変換しようとしても、(コンパイルできても)エラーになったりして、うまく変換できない。
ウェブユニバーサルデザイン

ウェブユニバーサルデザインへようこそ。このページでは、誰もがウェブを最大限活用するために有用なウェブユニバーサルデザインについて解説します。
この書籍はウェブページを作成している、もしくはしようとしている方を対象にしています。これにはこのウィキブックスをはじめとした「ウィキメディア・プロジェクト」の編集者も含まれます。
また、この書籍ではこのページで解説しているウェブユニバーサルデザインを実際に活用し、読み上げを行うソフトや機能への対応ならびに色弱の方への配慮を行ったメディアの使用を行っています。この過程で、誤読の発生しやすい表現や一部の方に見分けがつきにくいメディアの使用をできるだけ回避しています。少しわかりづらい表現が見られることがあるかもしれませんが、ご理解ください。