Wikibooks
jawikibooks
https://ja.wikibooks.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8
MediaWiki 1.39.0-wmf.22
first-letter
メディア
特別
トーク
利用者
利用者・トーク
Wikibooks
Wikibooks・トーク
ファイル
ファイル・トーク
MediaWiki
MediaWiki・トーク
テンプレート
テンプレート・トーク
ヘルプ
ヘルプ・トーク
カテゴリ
カテゴリ・トーク
Transwiki
Transwiki‐ノート
TimedText
TimedText talk
モジュール
モジュール・トーク
Gadget
Gadget talk
Gadget definition
Gadget definition talk
Wikibooks:談話室
4
30
205954
205895
2022-07-28T15:20:06Z
MediaWiki message delivery
14540
/* Movement Strategy and Governance News – Issue 7 */ 新しい節
wikitext
text/x-wiki
{{談話室}}
ある程度時間のたった議論は[[/過去ログ]]に移動されます。最新の過去ログは [{{fullurl:{{NAMESPACE}}:{{BASEPAGENAME}}|oldid=176963}} 2021年4月15日 (木) 14:30の版] です(確認日: 2021年4月15日)。過去ログ化の方法については[[Wikibooks:過去ログ化のガイドライン]]を参照ください。
{{/告知}}
== Moving Wikimania 2021 to a Virtual Event ==
<div class="mw-content-ltr" lang="en" dir="ltr">
[[File:Wikimania_logo_with_text_2.svg|right|alt=Wikimania's logo.|75px]]
''{{int:Hello}}. Apologies if you are not reading this message in your native language. {{Int:Please-translate}}. {{Int:Feedback-thanks-title}}''
[[:m:Wikimania 2021|Wikimania will be a virtual event this year]], and hosted by a wide group of community members. Whenever the next in-person large gathering is possible again, [[:m:ESEAP Hub|the ESEAP Core Organizing Team]] will be in charge of it. Stay tuned for more information about how ''you'' can get involved in the planning
process and other aspects of the event. [https://lists.wikimedia.org/pipermail/wikimedia-l/2021-January/096141.html Please read the longer version of this announcement on wikimedia-l].
''ESEAP Core Organizing Team, Wikimania Steering Committee, Wikimedia Foundation Events Team'', 2021年1月27日 (水) 15:15 (UTC)
</div>
<!-- User:Elitre (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:Elitre_(WMF)/Wikimania21&oldid=21014617 のリストを使用して送信したメッセージ -->
== ビデオゲームの攻略本について ==
攻略本を解説書として執筆することは許可されているのでしょうか?
さっき英語版WIKIBOOKSに「ビデオゲームの執筆の許可」という趣旨のページを見つけました。日本語版ではどうなっているのでしょうか。
== Project Grant Open Call ==
This is the announcement for the [[m:Grants:Project|Project Grants program]] open call that started on January 11, with the submission deadline of February 10, 2021.<br> This first open call will be focussed on Community Organizing proposals. A second open call focused on research and software proposals is scheduled from February 15 with a submission deadline of March 16, 2021.<br>
For the Round 1 open call, we invite you to propose grant applications that fall under community development and organizing (offline and online) categories. Project Grant funds are available to support individuals, groups, and organizations to implement new experiments and proven ideas, from organizing a better process on your wiki, coordinating a campaign or editathon series to providing other support for community building. We offer the following resources to help you plan your project and complete a grant proposal:<br>
* Weekly proposals clinics via Zoom during the Open Call. Join us for [[m:Grants:Project|#Upcoming_Proposal_Clinics|real-time discussions]] with Program Officers and select thematic experts and get live feedback about your Project Grants proposal. We’ll answer questions and help you make your proposal better. We also offer these support pages to help you build your proposal:
* [[m:Grants:Project/Tutorial|Video tutorials]] for writing a strong application<br>
* General [[m:Grants:Project/Plan|planning page]] for Project Grants <br>
* [[m:Grants:Project/Learn|Program guidelines and criteria]]<br>
Program officers are also available to offer individualized proposal support upon request. Contact us if you would like feedback or more information.<br>
We are excited to see your grant ideas that will support our community and make an impact on the future of Wikimedia projects. Put your idea into motion, and [[m:Grants:Project/Apply|submit your proposal]] by February 10, 2021!<br>
Please feel free to get in touch with questions about getting started with your grant application, or about serving on the Project Grants Committee. Contact us at projectgrants{{at}}wikimedia.org. Please help us translate this message to your local language. [[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年1月28日 (木) 08:00 (UTC)
<!-- User:RSharma (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=20808431 のリストを使用して送信したメッセージ -->
== Wiki Loves Folklore 2021 is back! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{{int:please-translate}}
[[File:Wiki Loves Folklore Logo.svg|right|150px|frameless]]
You are humbly invited to participate in the '''[[:c:Commons:Wiki Loves Folklore 2021|Wiki Loves Folklore 2021]]''' an international photography contest organized on Wikimedia Commons to document folklore and intangible cultural heritage from different regions, including, folk creative activities and many more. It is held every year from the 1st till the 28th of February.
You can help in enriching the folklore documentation on Commons from your region by taking photos, audios, videos, and [https://commons.wikimedia.org/w/index.php?title=Special:UploadWizard&campaign=wlf_2021 submitting] them in this commons contest.
Please support us in translating the [[:c:Commons: Wiki Loves Folklore 2021|project page]] and a [https://meta.wikimedia.org/wiki/Special:Translate?group=Centralnotice-tgroup-wikiloveslove2020&language=en&filter=%21translated&action=translate|one-line banner message] to help us spread the word in your native language.
'''Kind regards,'''
'''Wiki loves Folklore International Team'''
[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年2月6日 (土) 13:25 (UTC)
</div>
<!-- User:Tiven2240@metawiki が https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wll&oldid=21073884 のリストを使用して送信したメッセージ -->
== Proposal: Set two-letter project shortcuts as alias to project namespace globally ==
<div lang="en" dir="ltr">
{{int:please-translate}}
Hello everyone,
I apologize for posting in English. I would like to inform everyone that I created a new global request for comment (GRFC) at Meta Wiki, which may affect your project: [[:m:Requests for comment/Set short project namespace aliases by default globally]].
In this GRFC, I propose that two-project shortcuts for project names will become a default alias for the project namespace. For instance, on all Wikipedias, WP will be an alias to the Wikipedia: namespace (and similar for other projects). Full list is available in the GRFC.
This is already the case for Wikivoyages, and many individual projects asked for this alias to be implemented. I believe this makes it easier to access the materials in the project namespace, as well as creating shortcuts like <tt>WP:NPOV</tt>, as well as helps new projects to use this feature, without having to figure out how to request site configuration changes first.
As far as I can see, {{SITENAME}} currently does not have such an alias set. This means that such an alias will be set for you, if the GRFC is accepted by the global community.
I would like to ask all community members to participate in the request for comment at Meta-Wiki, see [[:m:Requests for comment/Set short project namespace aliases by default globally]].
Please feel free to [[:m:User talk:Martin Urbanec|ask me]] if you have any questions about this proposal.
Best regards,<br />
--[[:m:User:Martin Urbanec|Martin Urbanec]] ([[:m:User talk:Martin Urbanec|talk]]) 2021年2月18日 (木) 14:12 (UTC)
</div>
<!-- User:Martin Urbanec@metawiki が https://meta.wikimedia.org/w/index.php?title=User:Martin_Urbanec/MassMessage&oldid=21125035 のリストを使用して送信したメッセージ -->
== Wikifunctions logo contest ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
{{Int:Hello}}. 新規開設のウィキファンクションというウィキについて、ロゴのデザイン構想をまとめようとしています。ぜひ選考過程にご協力いただけませんか。投票は本日から受付を開始、投票期間は2週間です。皆さん、どうか Meta-Wiki にて'''[[m:Special:MyLanguage/Abstract Wikipedia/Wikifunctions logo concept/Vote|このまま詳細と投票方法をご確認の上]]'''、ふるってご参加ください。 {{Int:Feedback-thanks-title}} --[[m:User:Quiddity (WMF)|Quiddity (WMF)]]</div> 2021年3月2日 (火) 01:45 (UTC)
<!-- User:Quiddity (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=21087740 のリストを使用して送信したメッセージ -->
== 一斉配信されるメッセージを別のページに分離したい ==
談話室に一斉配信されるメッセージには興味がなく鬱陶しく感じます。見通しも悪くなりますし別ページに配信するようにしてほしいと感じます。 --[[利用者:Naggy Nagumo|Naggy Nagumo]] ([[利用者・トーク:Naggy Nagumo|トーク]]) 2021年3月25日 (木) 04:39 (UTC)
== MITライセンスのコンテンツを持ち込むことの是非 ==
[[WinSock/MSDNのソケットコードの保管場所]]というページでは、外部のコンテンツを丸ごと転載している様子です。著作権侵害ではないかと懸念し、調べたところ、転載元は https://github.com/MicrosoftDocs/win32 内にあることを突き止めました([https://github.com/MicrosoftDocs/win32/blob/0e611cdff84ff9f897c59e4e1d2b2d134bc4e133/desktop-src/WinSock/complete-client-code.md]と[https://github.com/MicrosoftDocs/win32/blob/0e611cdff84ff9f897c59e4e1d2b2d134bc4e133/desktop-src/WinSock/complete-server-code.md])。そこにあるファイル、LICENSEおよびLICENSE-CODEの内容はそれぞれCC-BY 4.0とMIT Licenseでした。基本的にはCC-BY 4.0であり、ただしプログラムのソースコード部分はMIT Licenseだということだと思います。
そこで、掲題のとおりMITライセンスのコンテンツをWikibooksに持ち込むことは問題ないか?という疑問に至りました。主な選択肢は以下のようになると思うのですが、どのように考えるべきでしょうか?皆さんの意見をうかがいたいです。
* MITライセンスの持ち込みは不可であり、削除依頼を出すべき。
* MITライセンスの持ち込みは可であり、削除する対象にはならない。
* MITライセンスの持ち込みは可であるものの、当該コンテンツにはCC-BY 4.0が適用される可能性を否定しきれない。WikibooksのページはCC-BY-SA 3.0のため持ち込めない(バージョンが低くなるので互換性がない)ので、削除依頼を出すべき。
著作権侵害にかかわる問題のため、広く意見を募るべきと思い、当該ページのノートではなく、こちらに話題を起こすことにしました。ご容赦ください。--[[利用者:Wdpp|Wdpp]] ([[利用者・トーク:Wdpp|トーク]]) 2021年4月3日 (土) 18:35 (UTC)
:私は著作権やライセンスに関する知識はあまりないのですが、とはいえ Web活動では特定のライセンスを利用したり公言することはあるのですが、しかしそれは何となく有用だと思えるから何となく採用しているだけで、詳しくちゃんと理解しているわけではないんですよ。それにここのページの下部には、<blockquote>テキストはクリエイティブ・コモンズ 表示-継承ライセンス (CC BY-SA 3.0) の下で利用可能です。追加の条件が適用される場合があります。詳細は利用規約[https://foundation.wikimedia.org/wiki/Terms_of_Use/ja]を参照してください。</blockquote>と書いてありますけど、この利用規約[https://foundation.wikimedia.org/wiki/Terms_of_Use/ja]を詳読すればかなりの見解を持つことができると思いますが、このことに関して多くの時間や精力を費やす気はないのであくまでも談話室での無責任なおしゃべりとして書かせてもらいます。
:まずここでウィキメディア以外からの転載が許されるのは、
:#著作権者が許可した
:#パブリックドメイン
:#著作権法上保護されないと見なされるもの
:だと思うんですが、特定のライセンスを持っているものは、転載しないほうがいい、非推奨ってことになりますよね…。ただ何らかの理由で、過去書かれたものがあったとしたら、それはその掲載元のライセンスで上書きされていると見なすといいかもしれませんね…。ですからそのライセンスの指定にしたがって転載されていたらOK、そうでなかったらアウトってことなんですが…。
:いやー単なる思い付きを書いただけで、大したことは言えないんですが…。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年4月5日 (月) 20:42 (UTC)
:{{コメント2|コメント}} MITライセンスは条件が緩いライセンスであって、MIT→CC-BY-SA 3.0 への互換性は問題ないように思います。したがって受け入れ可だと思いますが、細かい条件があるかもしれないので、結局は個別に確認するしかなさそうです。ウィキブックスのコンテンツを外部利用するケースを考えると、ライセンス条件が異なる部分がある場合は本文中に表示した方がよいかもしれません。問題のページに関しては、転載元が明確でないならばライセンス違反だと思います。 --[[利用者:Naggy Nagumo|Naggy Nagumo]] ([[利用者・トーク:Naggy Nagumo|トーク]]) 2021年4月9日 (金) 11:18 (UTC)
::(コメント∧返信)互換性という言葉が出ていますが、そもそも掲載元のライセンスを乗り換え、変更することは元のライセンスに指定がない以上は不可能ではないですかね…。ですから対処としては、ここに他のライセンスの文章を持ち込むなよな、って口で言う以外特にやること思いつかなくて…。ですからそういうページがあって、問題があると考えられる場合は、誰かが妥当な記述に書き換えるか、あるいは削除依頼を提出するかですよね…。著作権の問題は即時削除にならないと明記されていますし…。罪と罰なんて言葉がありますが、罪があると見なされたとしても、では誰がそれを指摘して非難して、罰を与えて物事を正すか? 私自身は今後もすじにく氏の文章を再編集して上書きする気はありますが、それはあくまで内容が良くなくて不適切だと思うからで、著作権の問題で深くかかわる気はないんです…。それに彼自身がここで著作権や転載引用の問題を教科書として執筆しているわけですから、あまりにもわかりやすい明確な逸脱をすることはないようにも思えますし…。ここでこのことを話し合うことで何らかの合意は得られるかもしれませんが、しかし合意以前に一般通念としてどう考えればいいのか?ウィキメディア財団としての見解はないのか?なんか非常に扱いづらい話ですねー。あとコモンズではどうなっているんですか?一番そういう事が問題になっている場にも見えますが…--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年4月9日 (金) 22:35 (UTC)
:::見解とも違いますが、[[Wikibooks:著作権]]には「外部からの引用については原則として行わないでください。」とあります。引用ですらそうなら、転載はなおのこと推奨されない行為ではないかと思います。この点も、削除依頼すべきなのかなと考えさせられる要因の1つです。--[[利用者:Wdpp|Wdpp]] ([[利用者・トーク:Wdpp|トーク]]) 2021年4月12日 (月) 15:44 (UTC)
::::ああーそういう記述もありますね…。いずれにせよこの辺の話は込み入ってるから、場合場合でよくわからないことが多いんですよね<s>(^^;)</s>。それにしても世の中の人は著作権を後生大事に、目の覚めるほど重要なものだと思ってるようですが、もちろん私自身も著作権法やその理念は大事にしますし、ウィキメディア財団やプロジェクトに打撃を与えたいとは思っていませんが、しかし実際の運用ではそんな大したこと起こっていない、基本的には人数と金が絡んでいる連中が、がーがー理屈言って、自分たちの利益を死守しているだけで、世の創作物なんて、多くは普遍的にはネガティブな性質と価値しかないのにやたら金を生むものが幅を利かせて、その金と満たされた欲望に多数派のサルが群がってるだけだよね?……と、言ってしまうのはさすがに無茶苦茶な言い分ですが…。^^;
::::それはともかくこの事に関する私の主張は以下ですね。
::::#まず他ライセンスのコンテンツ持ち込みは引用と同様推奨されない。
::::#仮にそういうページがあったら、ウィキメディアのクリエイティブコモンズ云々の記述があるにもかかわらず、掲載元のライセンスの記述だと見なすしかない。
::::#もしそのページに問題があると感じるなら、自分自身の判断と責任で再編集するか削除依頼を提出する。-- [[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年4月13日 (火) 11:34 (UTC)
::::: ”無責任なおしゃべり”ということで、私の解釈を書きます。結論から言えば、受け入れることはできるでしょう。ここで、受け入れられるライセンスというのは編集画面の「変更内容を保存すると、あなたは利用規約に同意するとともに、<u>自分の投稿内容を CC BY-SA 3.0 ライセンスおよび GFDL のもとで公開することに同意したことになります。</u>〔後略〕」や、フッターの「テキストはクリエイティブ・コモンズ 表示-継承ライセンスのもとで利用できます。追加の条件が適用される場合があります。」に表示されている通り、CC BY-SA 3.0ということにほかなりません。前置きが長くなりましたが本題。MITライセンスは、原著作者の表示およびライセンスそれ自身の表示を義務付けます。CC BY-SAも、原著作者の表示を義務付けます。我々は原著作者の表示はURLで十分と同意 (※編集画面の注釈) しているため、我々は要約欄に派生元URLを貼付したりします。さて、ここで問題です。我々はどのようにMITライセンスの要求を満たせば良いでしょうか?答えの一つは原著作者と、MITライセンスの全文が乗ったURLを添付することです。もう一つ問題です。MITライセンスはCC BY-SA 3.0とGFDLに組み込めるでしょうか?肯。https://licenses.opensource.jp/MIT/MIT.html によれば、「〔前略〕本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。〔後略〕」とあるため、従って'''異なるライセンスのコンポーネントにMITライセンスのコンポーネントを組み込んでも法的問題は生じない'''ものと考えられます。しかしながら、一般論として、引き写しは単なるコピー本にしかならないため、自身の文章で執筆したほうがこのようなやっかいごとなども生じずに済むでしょう。--[[利用者:Semi-Brace|Semi-Brace]] ([[利用者・トーク:Semi-Brace|トーク]]) 2021年4月13日 (火) 12:14 (UTC)
== ユニバーサルな行動規範 第2フェーズ ==
[[:wmf:Special:MyLanguage/Universal Code of Conduct|'''ユニバーサルな行動規範 (UCoC)''']] はウィキメディア運動とそのプロジェクト群全般に適用し、ユニバーサル (普遍的) な容認できる行動の基本線を提示します。現在、このプロジェクトは第2フェーズに入り、明確な施行経路の概要を示しています。プロジェクト全体の詳細は[[:m:Special:MyLanguage/Universal Code of Conduct|'''プロジェクトのページ''']]をご参照ください。
=== 草稿委員会:立候補の受付中 ===
ウィキメディア財団ではボランティアとして規範の施行方法の草稿をまとめる委員会への参加者を募集中です。ボランティアの委員は4月後半から7月に、また10月から11月にかけて週に2から6時間、時間をとっていただきます。委員会は多様性と包括性を重んじ、初学者から経験者まで、嫌がらせの被害者や対策をした人、間違えて加害者扱いされた人などさまざまな経歴の委員を揃えるよう目指しています。
選考過程と応募の詳細は、[[:m:Special:MyLanguage/Universal Code of Conduct/Drafting committee|Universal Code of Conduct/Drafting committee]] (ユニバーサルな行動規範/草稿委員会) をご参照ください。
=== 2021年コミュニティとの協議:お知らせとボランティア / 翻訳者の募集 ===
2021年4月5日 – 同5月5日にわたり、多数のウィキメディアのプロジェクトで UCoC 施行の方法についてコミュニティと協議します。ボランティアとして、主要な題材の翻訳者と合わせてそれぞれの言語版もしくはプロジェクトで指定の[[:m:Special:MyLanguage/Universal Code of Conduct/2021 consultations/Discussion|主要な設問]]について協議進行の補佐役を募集します。これらのボランティアのいずれかに関心がある皆さんは、ぜひいつもお使いの言語で[[:m:Talk:Universal Code of Conduct/2021 consultations|ご連絡ください]]。
この過程とその他の会話の詳細は、[[:m:Special:MyLanguage/Universal Code of Conduct/2021 consultations|Universal Code of Conduct/2021 consultations]] (ユニバーサルな行動規範/2021年コミュニティとの協議) をご参照ください。
-- [[User:Xeno (WMF)|Xeno (WMF)]] ([[User talk:Xeno (WMF)|トークページ]]) 2021年4月5日 (月) 21:19 (UTC)
<!-- User:SOyeyele (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SOyeyele_(WMF)/Announcements/Japanese&oldid=21301359 のリストを使用して送信したメッセージ -->
== Line numbering coming soon to all wikis ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
[[File:Technical_Wishes_–_Line_numbering_-_2010_wikitext_editor.png|thumb|使用例]]
4月15日より特定の種類のウィキ文エディタでは行番号が表示できるようになります -今のところ、テンプレート名前空間で、まもなくより多くの名前空間になります。これは改行を見つけやすくしたり、協議で特定の行を示す時に役立ちます。行番号を表示するには、構文強調機能([[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror 拡張機能]])を有効にする必要があり、ウィキ文エディタの[[mw:Special:MyLanguage/Extension:WikiEditor|2010年版]]と[[mw:Special:MyLanguage/2017 wikitext editor|2017年版]]が対応しています。
詳細情報は[[m:WMDE Technical Wishes/Line Numbering|こちらのプロジェクトページ]]をご参照ください。皆さんも機能のテストにぜひ参加して、[[m:talk:WMDE Technical Wishes/Line Numbering|このトークページ]]でフィードバックを投稿してみませんか。
</div> -- [[m:User:Johanna Strodt (WMDE)|Johanna Strodt (WMDE)]] 2021年4月12日 (月) 15:08 (UTC)
<!-- User:Johanna Strodt (WMDE)@metawiki が https://meta.wikimedia.org/w/index.php?title=WMDE_Technical_Wishes/Technical_Wishes_News_list_all_village_pumps&oldid=21329014 のリストを使用して送信したメッセージ -->
== Suggested Values ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
4月29日より、テンプレートのパラメータの推奨値を提案できるようになりました。[[mw:Special:MyLanguage/Help:TemplateData|テンプレートデータ]]に登録された推奨値は[[mw:Special:MyLanguage/Help:VisualEditor/User guide|ビジュアルエディター]]でドロップダウンの一覧として表示されます。すると編集者は適切な値を素早く選択できるようになります。これによりエラーを未然に防ぎ、またテンプレートに値を入力する労力を軽減できます。なお、引き続き入力欄に直接、推奨値以外の値を記すことも可能です。
対応しているパラメータの種別や推奨値の作成方法など、詳細は[[mw:Help:TemplateData#suggestedvalues|[1]]] [[m:WMDE_Technical_Wishes/Suggested_values_for_template_parameters|[2]]]でご確認いただけます。皆さんもこの機能をぜひ試してみて、[[m:Talk:WMDE Technical Wishes/Suggested values for template parameters|トークページ]]にフィードバックをお寄せください。
</div> [[m:User:Timur Vorkul (WMDE)|Timur Vorkul (WMDE)]] 2021年4月22日 (木) 14:08 (UTC)
<!-- User:Timur Vorkul (WMDE)@metawiki が https://meta.wikimedia.org/w/index.php?title=WMDE_Technical_Wishes/Technical_Wishes_News_list_all_village_pumps&oldid=21361904 のリストを使用して送信したメッセージ -->
== Universal Code of Conduct News – Issue 1 ==
<section begin="ucoc-newsletter"/>
<div style = "line-height: 1.2">
<span style="font-size:200%;">'''ユニバーサルな行動規範ニュース'''</span><br>
<span style="font-size:120%; color:#404040;">'''第1号 - 2021年6月'''</span><span style="font-size:120%; float:right;">[[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1|'''ニュースレター全文はこちら''']]</span>
----
[[m:Special:MyLanguage/Universal Code of Conduct|ユニバーサルな行動規範]]ニュースの創刊号にようこそ! このニュースレターは ウィキメディアンの皆さんに新しいコードの開発に関与し続ける手助けとなり、UCoC 関連のニュースや調査、今後のイベントを配信します。
この号はUCoC ニュースレターの創刊号であり、購読者ならびにプロジェクト群に配信しイニシアティブを発表するものです。将来の号を受信するには、利用者のトークページや井戸端あるいは適切と判断されるいずれのページにするか[[m:Special:MyLanguage/Global message delivery/Targets/UCoC Newsletter Subscription|こちらで購読手続き]]をお願いします。
ニュースを皆さんがお使いの言語で広め、新しい行動規範の意識を創出できるように、私たちが大切にするコミュニティが誰にどっても安全安心であるように、ニュースレターの各号について翻訳をお願いできないでしょうか。草稿がまとまったお知らせを受信し発行前に翻訳に取り掛かるには[[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/Participate|こちらに署名]]してください。皆さんのご参加を期待しご協力に感謝します。
</div><div style="margin-top:3px; padding:10px 10px 10px 20px; background:#fffff; border:2px solid #808080; border-radius:4px; font-size:100%;">
* '''提携団体の聞き取り調査''' – 規模の大小や種別を超え、提携団体には2021年3、4月にわたり UCoC 提携団体聞き取り調査に参加を呼びかけました。 ([[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1#sec1|続きはこちら]])
* '''2021年主要課題の聞き取り調査''' – ウィキメディア財団は2021年4、5月に実施の主要な課題の聞き取り調査を行い、ウィキメディアのコミュニティからより広く UCoC 実施に関するインプットをお願いしています。 ([[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1#sec2|続きはこちら]])
* '''円卓会議''' – UCoC 聞き取り調査チームでは90分単位の公開円卓会議を2回、2021年5月に開き、UCoC 実施 に関する重要な質問について話し合いました。会話の今後の日程をご参照ください。([[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1#sec3|続きはこちら]])
* '''第2フェーズ草案委員会''' – UCoC の第2フェーズに対応する草案委員会は2021年5月12日に作業を始めています。詳細をご参照ください。([[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1#sec4|続きはこちら]])
* '''<span lang="en" dir="ltr" class="mw-content-ltr">Diff blogs</span>''' – ブログには UCoC 調整役から投稿があり、2021年第1四半期に実施したローカルのプロジェクト聞き取り調査から、それぞれのコミュニティで出会った出来事や洞察を記しています。 ([[m:Special:MyLanguage/Universal Code of Conduct/Newsletter/1#sec5|続きはこちら]])</div><section end="ucoc-newsletter"/>
</div>
--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年6月11日 (金) 22:41 (UTC)
<!-- User:SOyeyele (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SOyeyele_(WMF)/Announcements/Japanese&oldid=21301359 のリストを使用して送信したメッセージ -->
== 日本語版独自ロゴへの変更提案 ==
現行のウィキブックス日本語版のロゴは、英語版のものからスローガン(?)を抜いた[[:File:Wikibooks-logo-en-noslogan.svg]]を使用しているようですが、例えば中国語版では[[:File:Wikibooks-logo-zh.svg]]、朝鮮語版では[[:File:Wikibooks-logo-ko-new.svg]]などと、多くの他言語版では各言語毎に独自のロゴ(文字の部分を変更したもの)が使用されています。日本語版でもウィキペディアやウィキニュース、ウィキバーシティでは独自ロゴが使用されています。このウィキブックス日本語版でも、ロゴを変更してみてはどうでしょうか。是非ご意見をお願いします。--[[利用者:TKsdik8900|TKsdik8900]] ([[利用者・トーク:TKsdik8900|トーク]]) 2021年6月12日 (土) 10:08 (UTC)
:いやー別に変更するならするでいいのですが,ハングルについてはよくわからないのですが,中国語版の後半は音の訳ではなく意訳ですよね。教科書って書いていますから,books,ブックスではなく,つまり,nerveを神経と訳したようなもので…。WIKIBOOKS→ウィキブックスの変更があまり意味のあるものだとは思えなくて…。と,いうかむしろ,WIKIBOOKSのほうが望ましいようにも見えるんですよね…。でも変更する,作るなら作るでもいいですよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年6月18日 (金) 11:38 (UTC)
*{{コメント2|反対}} Honoooさんがおっしゃるように、あまり意味があるようなものではないと思います。Wikibooksの広義の意味を維持するためにも、現状のままがいいと思います。--[[利用者:Mario1257|Mario1257]] ([[利用者・トーク:Mario1257|トーク]]) 2021年6月21日 (月) 16:48 (UTC)
== Wikimania 2021: Individual Program Submissions ==
[[File:Wikimania logo with text 2.svg|right|200px]]
Dear all,
Wikimania 2021 will be [[:wikimania:2021:Save the date and the Core Organizing Team|hosted virtually]] for the first time in the event's 15-year history. Since there is no in-person host, the event is being organized by a diverse group of Wikimedia volunteers that form the [[:wikimania:2021:Organizers|Core Organizing Team]] (COT) for Wikimania 2021.
'''Event Program''' - Individuals or a group of individuals can submit their session proposals to be a part of the program. There will be translation support for sessions provided in a number of languages. See more information [[:wikimania:2021:Submissions/Guidelines#Language Accessibility|here]].
Below are some links to guide you through;
* [[:wikimania:2021:Submissions|Program Submissions]]
* [[:wikimania:2021:Submissions/Guidelines|Session Submission Guidelines]]
* [[:wikimania:2021:FAQ|FAQ]]
Please note that the deadline for submission is 18th June 2021.
'''Announcements'''- To keep up to date with the developments around Wikimania, the COT sends out weekly updates. You can view them in the Announcement section [[:wikimania:2021:Announcements|here]].
'''Office Hour''' - If you are left with questions, the COT will be hosting some office hours (in multiple languages), in multiple time-zones, to answer any programming questions that you might have. Details can be found [[:wikimania:2021:Organizers#Office hours schedule|here.]]
Best regards,
[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年6月16日 (水) 04:18 (UTC)
On behalf of Wikimania 2021 Core Organizing Team
<!-- User:Bodhisattwa@metawiki が https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/VisualEditor/Newsletter/Wikis_with_VE&oldid=21597568 のリストを使用して送信したメッセージ -->
== Editing news 2021 #2 ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
<em>[[m:Special:MyLanguage/VisualEditor/Newsletter/2021/June|他の言語で読む]] • [[m:VisualEditor/Newsletter|多言語ニュースレター配信に登録する]]</em>
[[File:Reply Tool A-B test comment completion.png|alt=導入されている全ウィキペディアにおける編集初心者のコメント完了率|thumb|296x296px|初心者が返信ツールを使用してトークページに投稿しようとした際、コメント投稿に成功した割合。([https://wikimedia-research.github.io/Reply-tools-analysis-2021/ 出典])]]
今年の年初め、編集チームは[[mw:Talk pages project/Replying|返信ツール]]の大規模研究を行いました。 主な目的としては、返信ツールが[[mw:Talk pages project/Glossary|編集初心者]]のウィキにおけるコミュニケーションに役立っているかどうかを調べることが挙げられます。2つ目の目的は、新人編集者がこのツールを使って投稿したコメントが既存のwikitextエディタによるコメントよりも不適切なものが多いか調べることでした。
主な結果 :
* <span lang="en" dir="ltr" class="mw-content-ltr">Newer editors who had automatic ("default on") access to the Reply tool were [https://wikimedia-research.github.io/Reply-tools-analysis-2021/ more likely] to post a comment on a talk page.</span>
* また、編集初心者が返信ツールで行ったコメントは、ページ編集でのコメントよりも取り消し・巻き戻しされる可能性が[https://wikimedia-research.github.io/Reply-tools-analysis-2021/ 低い]という結果が出ました。
この結果により、Editingチームはこのツールが役立っていると確信しました。
<strong>今後の予定</strong>
チームは今後数ヶ月で、返信ツールをオプトアウトで全員が利用できるように計画しています。この機能はアラビア語・チェコ語・ハンガリー語版ウィキペディアで先行的に実装されています。
<span lang="en" dir="ltr" class="mw-content-ltr">The next step is to [[phab:T280599|resolve a technical challenge]]. Then, they will deploy the Reply tool first to the [[phab:T267379|Wikipedias that participated in the study]]. After that, they will deploy it, in stages, to the other Wikipedias and all WMF-hosted wikis.</span>
現在、ベータ機能として「{{int:discussiontools-preference-label}}」を有効にできます。返信ツールを導入した後は、[[Special:Preferences#mw-prefsection-editing-discussion]]でいつでも設定を変更することができます。
–[[User:Whatamidoing (WMF)|Whatamidoing (WMF)]] ([[User talk:Whatamidoing (WMF)|トーク]])
</div> 2021年6月24日 (木) 14:14 (UTC)
<!-- User:Elitre (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/VisualEditor/Newsletter/Wikis_with_VE&oldid=21624491 のリストを使用して送信したメッセージ -->
== Server switch ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr"><div class="plainlinks">
[[:m:Special:MyLanguage/Tech/Server switch 2020|他の言語で読む]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch+2020&language=&action=page&filter= {{int:please-translate}}]
[[foundation:|ウィキメディア財団]]ではメインと予備のデータセンターの切り替えテストを行います。 災害が起こった場合でも、ウィキペディアとその他のウィキメディア・ウィキが確実にオンラインとなるようにするための措置です。 ウィキメディアの技術部門では計画的にテストを行って、すべてが正常に動作することを確認する必要があります。今回のテストでは、あるデータセンターから他のデータセンターへ確実に切り替えられるかどうかを確かめます。そのため、多くのチームでテストや想定外の問題に対処できるよう準備を行う必要があります。 <!--
'''2020年10月27日(火)'''にすべての通信をメインのデータセンターへ戻します。 -->
残念ながら [[mw:Manual:What is MediaWiki?|MediaWiki]] の技術的制約により、切り替え作業中はすべての編集を停止する必要があります。 ご不便をおかけすることをお詫びします。なお、将来的には制限を最小限にとどめられるよう取り組んでいます。
'''閲覧は可能ですが、すべてのウィキにおいて短時間、編集ができない状態になります。'''
*2021年6月29日(火)には、最大1時間ほど編集できない時間が発生します。 テストは以下の時刻に開始します:[https://zonestamp.toolforge.org/1624975200 14:00 UTC](つまり日本時間23:00、インド時間19:30、中央ヨーロッパ時間16:00、西ヨーロッパ時間15:00、米東部時間10:00、米太平洋時間07:00。ニュージーランドでは6月30日(水)のニュージーランド時間02:00。)
*この時間帯に編集や保存を行おうとした場合、エラーメッセージが表示されます。 その間に行われた編集が失われないようには努めますが、保証することはできません。 エラーメッセージが表示された場合、通常状態に復帰するまでお待ちください。 その後、編集の保存が可能となっているはずです。 しかし念のため、保存ボタンを押す前に、編集内容のコピーをとっておくことをお勧めします。
''その他の影響'':
*バックグラウンドジョブが遅くなり、場合によっては失われることもあります。 赤リンクの更新が通常時よりも遅くなる場合があります。 特に他のページからリンクされているページを作成した場合、そのページは通常よりも「赤リンク」状態が長くなる場合があります。 実行に長時間を要するスクリプトは、停止しなければなりません。
*6月28日の週は、コード変更を凍結する予定です。 必須ではないコードの展開は行われません。
必要に応じてこの計画は延期されることがあります。 [[wikitech:Switch_Datacenter#Schedule_for_2021_switch|wikitech.wikimedia.org で工程表を見る]]ことができます。 変更はすべて工程表で発表しますので、ご参照ください。 この件に関しては今後、更にお知らせの内容を追加するかもしれません。 作業開始の30分前から、すべてのウィキで画面にバナーを表示する予定です。 '''この情報を皆さんのコミュニティで共有してください。'''</div></div> [[user:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] 2021年6月27日 (日) 01:19 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=21463754 のリストを使用して送信したメッセージ -->
== 利用者:A3aaaaa33333の紹介ページについて ==
こんにちは。 --A3aaaaa33333です。利用者:A3aaaaa33333の紹介ページを公開しようとすると
"エラー: 行なった操作は、有害であると自動的に判断されたため実行できませんでした。 確かに建設的な操作であると考える場合は、行なおうとしていた操作について管理者にお知らせください。 操作に対して発動した違反規則の概略は以下の通りです: LTA from JAWP"
と表示され公開できないのですが、どうすればいいでしょうか。ご意見よろしくお願いします。 --[[利用者:A3aaaaa33333|A3aaaaa33333]] ([[利用者・トーク:A3aaaaa33333|トーク]]) 2021年7月28日 (水) 00:35 (UTC)
:私は管理者でもないしこのwikiシステムについてもそれほど知らないので大したことは書けませんが、おそらくウィキペディアで,Long-term abuse(LTA:長期にわたる不適切行為)を行う人物に対処するため制限がかけられているIPアドレスからアクセスしているからではないですかね…。あなた自身がそのLTAerとどういう関係、あるいはまったく関係ないかは私には結局判断はできないのですが…。あるいはもうちょっと簡単に、何らかのユーザー側の操作間違いがあるのかもしれません。どちらにしろここでこのことを表明した以上、管理者の方から何らかのアクセスがある、あるいはもうすでにあったかもしれませんが、いやあるいはアクセスがないかもしれませんが、その場合も私は何故そうなるかはよくわからないんですよ…。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年7月28日 (水) 13:24 (UTC)
[[利用者:Honooo|Honooo]]さん、ありがとうございます。
--[[利用者:A3aaaaa33333|A3aaaaa33333]]
== Install Extension:Quiz ==
:{{コメント2|対処}} '''[[phab:T289383]] [[利用者:4nn1l2|4nn1l2]] ([[利用者・トーク:4nn1l2|トーク]]) 2021年8月26日 (木) 19:01 (UTC)'''
Hello. Sorry for writing in English. Please help translating this message.
In order to install [[mw:Extension:Quiz]] on the Japanese Wikibooks, I need to build a consensus here. This extension is already installed on many language editions of Wikibooks including English, French, German, Spanish, Italian, Russian and many others. You can check [[:en:Special:Version]] (Ctrl+F: quiz) or see phabricator tickets such as [[phab:T157513]]. There are some nice examples at [[:en:Help:Quizzes]]. [[User:Roozitaa]] wants to make her Persian tutorials on the Japanese Wikibooks (such as [[ペルシア語]]) more illustrative using this extension. You can see [[:en:Dutch/Lesson_1#Quiz]] as an example. [[利用者:4nn1l2|4nn1l2]] ([[利用者・トーク:4nn1l2|トーク]]) 2021年7月28日 (水) 02:01 (UTC)
* {{コメント2|賛成}}、提案者として [[利用者:4nn1l2|4nn1l2]] ([[利用者・トーク:4nn1l2|トーク]]) 2021年7月28日 (水) 02:01 (UTC)
* {{コメント2|賛成}} --[[利用者:Roozitaa|Roozitaa]] ([[利用者・トーク:Roozitaa|トーク]]) 2021年7月29日 (木) 23:06 (UTC)
:{{コメント2|賛成}} この機能を活用すれば従来の紙の教科書よりも学習効率の高い教材を作成できると思います。--[[利用者:Nermer314|Nermer314]] ([[利用者・トーク:Nermer314|トーク]]) 2021年8月7日 (土) 14:39 (UTC)
== ネコはヤギが好き ==
あのー談話室なんだから、多少の雑談は許されると思うのですが、今日ふときづいたのですが、ここの検索のページの文字列に、"ネコはヤギが好き"って書かれてる…、これウィキペディア以外のプロジェクトには大抵この文字列なんですが、何かの含蓄があるんですかね^^?。知っている人がいたら教えてほしい(^^)/--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年8月9日 (月) 16:43 (UTC)
== Wikimedia Foundation Election 2021 is now stated ==
Voting for the [[m:Special:MyLanguage/Wikimedia Foundation elections/2021/Voting|2021 Board of Trustees election]] is now open. Candidates from the community were asked to submit their candidacy. After a three week long Call for Candidates, there are [[m:Special:MyLanguage/Wikimedia Foundation elections/2021/Candidates#Candidate%20Table|19 candidates for the 2021 election]].
The [[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees|Wikimedia Foundation Board of Trustees]] oversees the Wikimedia Foundation's operations. The Board wants to improve their competences and diversity as a team. They have shared the [[m:Special:MyLanguage/Wikimedia Foundation elections/2021/Candidates#Skills|areas of expertise]] that they are hoping to cover with new trustees.
The Wikimedia movement has the opportunity to select candidates who have the qualities to best serve the needs of the movement for the next several years. The Board is expected to select the four most voted candidates to serve as trustees. This term starts in September and lasts for three years. [[Commons:File:Wikimedia_Foundation_Board_of_Trustees.webm|Learn more about the Board of Trustees in this short video]].
Vote now until August 31.
Below is some useful information about the election process.
;Learn more about the candidates
[[m:Special:MyLanguage/Wikimedia Foundation elections/2021#Candidate%20Table|Candidates from across the movement have submitted their candidatures]]. Learn about each candidate to inform your vote. The community submitted questions for the candidates to answer during the campaign. [[m:Special:MyLanguage/Wikimedia Foundation elections/2021/Candidates/CandidateQ&A|Candidates answered the list of community questions]] collated by the [[m:Special:MyLanguage/Wikimedia Foundation elections committee|Elections Committee]] on Meta.
;Vote
Voting for the 2021 Board of Trustees election opened on 18 August 2021 and closes on 31 August 2021. The Elections Committee chose [[m:Special:MyLanguage/Wikimedia_Foundation_elections/Single_Transferable_Vote|Single Transferable Vote]] for the voting system. The benefit of this is voters can rank their choices in order of preference. Learn more about [[m:Special:MyLanguage/Wikimedia Foundation elections/2021/Voting#Voting_eligibility|voting requirements]], [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2021/Voting|how to vote]], and [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2021/Voting#Voting_FAQ|frequently asked questions about voting]].
Please help in the selection of those people who best fit the needs of the movement at this time. Vote and spread the word so more people can vote for candidates. Those selected will help guide the Wikimedia Foundation and support the needs of the movement over the next few years.
Best,
The Elections Committee
-- [[User:YKo (WMF)]] via [[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年8月18日 (水) 04:21 (UTC)
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/javp&oldid=21897428 のリストを使用して送信したメッセージ -->
== 2021年理事会選挙 ==
↑上の英文でおそらく書かれているのでしょうが、投票権のある皆様は、投票されたでしょうか?
私は以前英語でメールもらったときは、無理無理、そもそも英語のメールなんて最後まで読まんよ><、などと思ったのですが、先日日本語でメールもらいまして、じゃあせっかくだから投票しようと思って、今ログインして投票してきました。
基本的に私の人間を見る目の一つとして、「笑ってる奴は信用できん!!(^^;;)」というのがあるので、結局、パレスチナのFarahさんに投票しましたよ(^^)/。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2021年8月27日 (金) 16:14 (UTC)
== The 2022 Community Wishlist Survey will happen in January ==
<div class="plainlinks mw-content-ltr" lang="en" dir="ltr">
Hello everyone,
We hope all of you are as well and safe as possible during these trying times! We wanted to share some news about a change to the Community Wishlist Survey 2022. We would like to hear your opinions as well.
Summary:
<div style="font-style:italic;">
We will be running the [[m:Special:MyLanguage/Community Wishlist Survey|Community Wishlist Survey]] 2022 in January 2022. We need more time to work on the 2021 wishes. We also need time to prepare some changes to the Wishlist 2022. In the meantime, you can use a [[m:Special:MyLanguage/Community Wishlist Survey/Sandbox|dedicated sandbox to leave early ideas for the 2022 wishes]].
</div>
=== Proposing and wish-fulfillment will happen during the same year ===
In the past, the [[m:Special:MyLanguage/Community Tech|Community Tech]] team has run the Community Wishlist Survey for the following year in November of the prior year. For example, we ran the [[m:Special:MyLanguage/Community Wishlist Survey 2021|Wishlist for 2021]] in November 2020. That worked well a few years ago. At that time, we used to start working on the Wishlist soon after the results of the voting were published.
However, in 2021, there was a delay between the voting and the time when we could start working on the new wishes. Until July 2021, we were working on wishes from the [[m:Special:MyLanguage/Community Wishlist Survey 2020|Wishlist for 2020]].
We hope having the Wishlist 2022 in January 2022 will be more intuitive. This will also give us time to fulfill more wishes from the 2021 Wishlist.
=== Encouraging wider participation from historically excluded communities ===
We are thinking how to make the Wishlist easier to participate in. We want to support more translations, and encourage under-resourced communities to be more active. We would like to have some time to make these changes.
=== A new space to talk to us about priorities and wishes not granted yet ===
We will have gone 365 days without a Wishlist. We encourage you to approach us. We hope to hear from you in the [[m:Special:MyLanguage/Talk:Community Wishlist Survey|talk page]], but we also hope to see you at our bi-monthly Talk to Us meetings! These will be hosted at two different times friendly to time zones around the globe.
We will begin our first meeting '''September 15th at 23:00 UTC'''. More details about the agenda and format coming soon!
=== Brainstorm and draft proposals before the proposal phase ===
If you have early ideas for wishes, you can use the [[m:Special:MyLanguage/Community Wishlist Survey/Sandbox|new Community Wishlist Survey sandbox]]. This way, you will not forget about these before January 2022. You will be able to come back and refine your ideas. Remember, edits in the sandbox don't count as wishes!
=== Feedback ===
* What should we do to improve the Wishlist pages?
* How would you like to use our new [[m:Special:MyLanguage/Community Wishlist Survey/Sandbox|sandbox?]]
* What, if any, risks do you foresee in our decision to change the date of the Wishlist 2022?
* What will help more people participate in the Wishlist 2022?
Answer on the [[m:Special:MyLanguage/Talk:Community Wishlist Survey|talk page]] (in any language you prefer) or at our Talk to Us meetings.
</div>
[[user:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[user talk:SGrabarczuk (WMF)|talk]]) 2021年9月7日 (火) 00:23 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=21980442 のリストを使用して送信したメッセージ -->
== Participate in the Universal Code of Conduct Roundtable ==
The Movement Strategy and Governance facilitation team is hosting '''[[m:Special:MyLanguage/Universal Code of Conduct/2021_consultations/Roundtable_discussions|Roundtable discussions]] on 18 September 2021 at 03:00 UTC and 15:00 UTC''' for Wikimedians to talk together about how to enforce the [[m:Special:MyLanguage/Universal Code of Conduct|Universal Code of Conduct]] . These calls are part of the Universal Code of Conduct project Phase 2 [[m:Special:MyLanguage/Universal_Code_of_Conduct/Enforcement_draft_guidelines_review|Enforcement draft guidelines review (EDGR)]].
Each session will last for 90 to 120 minutes and translation support for various languages will be provided. Also, sessions in specific languages may also be held depending on demand. Community members are encouraged to sign up in advance and add the topic to discuss during roundtable session.
If you are not able to make the roundtable session, you can provide the comments are at [[m:Talk:Universal Code of Conduct/Enforcement draft guidelines review|the draft review talk page]] in any language, [[m:Special:PrefixIndex/Talk:Universal Code of Conduct/Enforcement draft guidelines review|talk pages of translations]], and [[m:Special:MyLanguage/Universal Code of Conduct/Discussions|local discussions]].
For more information, please visit [[m:Special:MyLanguage/Universal Code of Conduct/2021_consultations/Roundtable_discussions|roundtable discussion information page at Meta-wiki]].
--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年9月10日 (金) 04:30 (UTC)
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/javp&oldid=21897428 のリストを使用して送信したメッセージ -->
== Server switch ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr"><div class="plainlinks">
[[:m:Special:MyLanguage/Tech/Server switch|他の言語で読む]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Tech%2FServer+switch&language=&action=page&filter= {{int:please-translate}}]
[[foundation:|ウィキメディア財団]]ではメインと予備のデータセンターの切り替えテストを行います。 災害が起こった場合でも、ウィキペディアとその他のウィキメディア・ウィキが確実にオンラインとなるようにするための措置です。 ウィキメディアの技術部門では計画的にテストを行って、すべてが正常に動作することを確認する必要があります。今回のテストでは、あるデータセンターから他のデータセンターへ確実に切り替えられるかどうかを確かめます。そのため、多くのチームでテストや想定外の問題に対処できるよう準備を行う必要があります。
'''2021年9月14日(火)'''にすべての通信をメインのデータセンターへ戻します。
残念ながら [[mw:Manual:What is MediaWiki?|MediaWiki]] の技術的制約により、切り替え作業中はすべての編集を停止する必要があります。 ご不便をおかけすることをお詫びするとともに、将来的にはそれが最小限にとどめられるよう努めます。
'''閲覧は可能ですが、すべてのウィキにおいて編集ができないタイミングが短時間あります。'''
*2021年9月14日(火)には、最大1時間ほど編集できない時間が発生します。 テストは以下の時刻に開始します:[https://zonestamp.toolforge.org/1631628049 14:00 UTC](つまり日本時間23:00、インド時間19:30、中央・東ヨーロッパ時間16:00、西ヨーロッパ・英国時間15:00、米東部時間10:00、米太平洋時間07:00。ニュージーランドでは6月15日(水)のニュージーランド時間02:00。)
*この間に編集や保存を行おうとした場合、エラーメッセージが表示されます。 その間に行われた編集が失われないようには努めますが、保証することはできません。 エラーメッセージが表示された場合、通常状態に復帰するまでお待ちください。 その後、編集の保存が可能となっているはずです。 しかし念のため、保存ボタンを押す前に、行った変更のコピーをとっておくことをお勧めします。
''その他の影響'':
*バックグラウンドジョブが遅くなり、場合によっては失われることもあります。 赤リンクの更新が通常時よりも遅くなる場合があります。 特に他のページからリンクされているページを作成した場合、そのページは通常よりも「赤リンク」状態が長くなる場合があります。 長時間にわたって実行されるスクリプトは、停止しなければなりません。
* コードの実装は通常の週と同様に行う見込みです。 しかしながら、作業上の必要性に合わせ、ケースバイケースでいずれかのコードフリーズが計画時間に発生することもあります。
必要に応じてこの計画は延期されることがあります。 [[wikitech:Switch_Datacenter|wikitech.wikimedia.org で工程表を見る]]ことができます。 変更はすべて工程表で発表しますので、ご参照ください。 この件に関しては今後、さらにお知らせを掲示するかもしれません。 作業開始の30分前から、すべてのウィキで画面にバナーを表示する予定です。 '''この情報を皆さんのコミュニティで共有してください。'''</div></div> [[user:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[user talk:SGrabarczuk (WMF)|<span class="signature-talk">{{int:Talkpagelinktext}}</span>]]) 2021年9月11日 (土) 00:45 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=21980442 のリストを使用して送信したメッセージ -->
== Talk to the Community Tech ==
[[File:Magic Wand Icon 229981 Color Flipped.svg|{{dir|{{pagelang}}|left|right}}|frameless|50px]]
[[:m:Special:MyLanguage/Community Wishlist Survey/Updates/2021-09 Talk to Us|Read this message in another language]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-Community_Wishlist_Survey/Updates/2021-09_Talk_to_Us&language=&action=page&filter= {{int:please-translate}}]
Hello!
As we have [[m:Special:MyLanguage/Community Wishlist Survey/Updates|recently announced]], we, the team working on the [[m:Special:MyLanguage/Community Wishlist Survey|Community Wishlist Survey]], would like to invite you to an online meeting with us. It will take place on [https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210915T2300 '''September 15th, 23:00 UTC'''] on Zoom, and will last an hour. [https://wikimedia.zoom.us/j/89828615390 '''Click here to join'''].
'''Agenda'''
* [[m:Special:MyLanguage/Community Wishlist Survey 2021/Status report 1#Prioritization Process|How we prioritize the wishes to be granted]]
* [[m:Special:MyLanguage/Community Wishlist Survey/Updates|Why we decided to change the date]] from November 2021 to January 2022
* Update on the [[m:Special:MyLanguage/Community Wishlist Survey 2021/Warn when linking to disambiguation pages|disambiguation]] and the [[m:Special:MyLanguage/Community Wishlist Survey 2021/Real Time Preview for Wikitext|real-time preview]] wishes
* Questions and answers
'''Format'''
The meeting will not be recorded or streamed. Notes without attribution will be taken and published on Meta-Wiki. The presentation (first three points in the agenda) will be given in English.
We can answer questions asked in English, French, Polish, and Spanish. If you would like to ask questions in advance, add them [[m:Talk:Community Wishlist Survey|on the Community Wishlist Survey talk page]] or send to sgrabarczuk@wikimedia.org.
[[m:Special:MyLanguage/User:NRodriguez (WMF)|Natalia Rodriguez]] (the [[m:Special:MyLanguage/Community Tech|Community Tech]] manager) will be hosting this meeting.
'''Invitation link'''
* [https://wikimedia.zoom.us/j/89828615390 Join online]
* Meeting ID: 898 2861 5390
* One tap mobile
** +16465588656,,89828615390# US (New York)
** +16699006833,,89828615390# US (San Jose)
* [https://wikimedia.zoom.us/u/kctR45AI8o Dial by your location]
See you! [[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|<span class="signature-talk">{{int:Talkpagelinktext}}</span>]]) 2021年9月11日 (土) 03:03 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=21980442 のリストを使用して送信したメッセージ -->
== 指導要領の改訂にともなうWikibooks ==
高等学校(や中学校)のWikibooksの教科書の大半は旧課程(2003年度実施)をもとに構成されていますが、現行課程(2013年度実施)や、新課程(来年度の2022年度から実施)に対応した教科書の作成は進んでいません。内容の移行はありますが、教える事自体はあまり変わらないので、旧課程のWikibooksの教科書を再利用して作成することが現実的かと思いますが、その場合、移行作業は具体的にどのように行うのでしょうか。--[[利用者:Nermer314|Nermer314]] ([[利用者・トーク:Nermer314|トーク]]) 2021年9月17日 (金) 15:56 (UTC)
:現行課程や新課程の枠組みに変更がないならば、特に断ることなく、そのまま上書きしてもらって良いかと思います。編集合戦等が生じた場合は、基本的に新たな課程の記載が優先されることとなるでしょう。しかしながら、既存の記事については参考として残してもいいかもしれません(大部になる場合はサブページ化するなど)。改定で削った内容について、改定後の考え方などを応用し出題することはよくあることなので。--[[利用者:Tomzo|Tomzo]] ([[利用者・トーク:Tomzo|トーク]]) 2021年9月17日 (金) 18:15 (UTC)
:この件は私も以前から興味があるというか、問題意識を持っていまして、何度か議論提起をさせていただいています。が、あまりリプライがつかず議論が盛り上がらなかったり、反応をいただけた際も私の根気のなさもあり結局話をまとめられずにグダグダで終わってしまったりで、そのままここまで来てしまっています。力不足で申し訳ありません。直近で提起した議論は [[トーク:高等学校の学習/旧課程#旧課程教科書の今後の在り方について]] でして、ここでも結局私がほったらかしてしまったのですが、その中でこれまでの経緯のまとめと先行議論へのリンクをつけてありますので、ご参考にしていただければ幸いです。簡単に申し上げると、私個人としてはどんどん新課程に衣替えして加筆していくのが望ましいと考えるのですが、旧課程教科書の保存や加筆(個人的にはかなり疑問符なのですが)がなされるべきであるとされる方は案外いらっしゃるので、そのあたりきちんと調整しながら進める必要があるようです。私はそこまでの根気がなく、投げ出してしまっています。--[[利用者:K.ito|K.ito]] ([[利用者・トーク:K.ito|トーク]]) 2021年9月18日 (土) 06:22 (UTC)
:旧課程と新課程で内容が移行される場合、例えば、旧課程の数学IIの「いろいろな関数」は現行課程と新課程では「三角関数」と「指数関数・対数関数」に分かれていますが、この場合は、 高等学校数学II/ のサブページにそれぞれ作成するのが適切でしょうか?また元の「いろいろな関数」のページはどうするのが適切でしょうか?元のページを消してしまうと履歴の継承が行われなくなってしまうと思います。またベクトルは内容には変化はなく、現行課程では数学Bで、新課程では数学Cで教えられますが、この場合は、(現行課程の学生が卒業する2023年度までは)どちらのサブページに設置するのが適切ですか? [[利用者:Nermer314|Nermer314]] ([[利用者・トーク:Nermer314|トーク]]) 2021年9月20日 (月) 14:23 (UTC)
== Movement Charter Drafting Committee - Community Elections to take place October 11 - 24 ==
<section begin="announcementcontent"/>Dear fellow Wikimedians,
This is an update from the Movement Charter process. We have closed the call for candidates on September 14 for the Drafting Committee and now have a pool of candidates with diverse backgrounds to choose from.
The 15 member committee will be selected with a [[m:Special:MyLanguage/Movement Charter/Drafting Committee/Set Up Process|3-step process]]:
* Election process for project communities to elect 7 members of the committee.
* Selection process for affiliates to select 6 members of the committee.
* Wikimedia Foundation process to appoint 2 members of the committee.
;Communities elect 7 members: This announcement is related to the community elections, which will take place in a time period of 2 weeks from October 11 to October 24. We look forward to a wide participation across the communities to create the committee to curate the writing of the Movement Charter. The Election Results will be published on November 1.
;Affiliates select 6 members: Parallel to the election process, all affiliates asked to contribute as well: All affiliates were divided into eight geographic and one ‘thematic’ region (check the list), and each region chooses one person who will act as a selector for that region. These 9 selectors will come together to select 6 of the committee (from the same pool of candidates). The selection results will be published on November 1.
; Wikimedia Foundation appoints 2 members: Finally, the Wikimedia Foundation will appoint two members to the committee by November 1.
All three processes will be concluded by November 1, 2021, so that the Movement Charter Drafting Committee can start working by then.
For the full context of the Movement Charter, its role, as well the process for its creation, please [[:m:Special:MyLanguage/Movement Charter|have a look at Meta]]. You can also contact us at any time on Telegram or via email (wikimedia2030@wikimedia.org).
Best regards,<section end=announcementcontent/>--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年9月22日 (水) 02:31 (UTC)
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/javp&oldid=21897428 のリストを使用して送信したメッセージ -->
== デスクトップ版の改善について協議 ==
[[File:Annotated Wikipedia Vector interface (logged-out).png|thumb]]
こんにちは!
実はウィキによって[[mw:Special:MyLanguage/Reading/Web/Desktop Improvements|デスクトップ版のインターフェースが異なる]]と気づいていましたか? 次にどう変わるか、関心は? 設計や技術面で、もしかして質問したいことや提案がありませんか?
デスクトップの改良に取り組むチームと、オンラインのミーティングの参加者を募集中です。開催日時は[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211012T1600 10月12日16:00 UTC]、Zoomで実施します。1時間の予定です。'''[https://wikimedia.zoom.us/j/82936701376 参加登録はこちら]'''。
'''議題'''
* 直近の開発について報告
* [[mw:Special:MyLanguage/Reading/Web/Desktop Improvements/Features/Sticky Header|常駐ヘッダー]] - デモ版の発表
* 質疑応答、協議
'''方式'''
ミーティングは録画や生配信をしません。議事録は[https://docs.google.com/document/d/1G4tfss-JBVxyZMxGlOj5MCBhOO-0sLekquFoa2XiQb8/edit# Google ドキュメント ファイル]で記す予定です。発表の部分 (議題の1と2) は英語で行います。
質疑応答は英語、フランス語、ポーランド語、スペイン語で質問を受け付けます。 事前に質問を伝えるには、[[mw:Talk:Reading/Web/Desktop Improvements|トークページに投稿]]またはメールでsgrabarczuk@wikimedia.org まで送信してください。
ミーティングの主催者は[[user:OVasileva (WMF)|Olga Vasileva]] (オルガ・バシレバ、チーム管理者) です。
'''参加募集のリンク'''
* [https://wikimedia.zoom.us/j/82936701376 オンラインで参加]
* 会議 ID: <span dir=ltr>829 3670 1376</span>
* [https://wikimedia.zoom.us/u/kB5WUc7yZ 所在地別のフリーダイヤル番号]
では当日、お待ちしています! [[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|talk]]) 2021年10月5日 (火) 02:12 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SGrabarczuk_(WMF)/sandbox/MM/Varia&oldid=22122242 のリストを使用して送信したメッセージ -->
== Universal Code of Conduct Draft Enforcement Guidelines review still needs your ideas and opinions ==
Hello, this is just a reminder that the [[:m:Special:MyLanguage/Universal Code of Conduct/Enforcement draft guidelines review|Universal Code of Conduct Draft Enforcement Guidelines]] are open for review and comment. The Drafting Committee will start working on revisions and improvement in '''less than two weeks (October 17)''', so it is important that you give them your ideas and opinions soon!
There is now [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement draft guidelines review/Abstract|a short, simple version of the Draft Guidelines]] here to make your review easier. If possible, also help translate the short version into more languages!
We will also hold [[m:Special:MyLanguage/Universal_Code_of_Conduct/2021_consultations/Roundtable_discussions|one last conversation hour]] on October 15, 2021 03:00 and 14:00 UTC.
On behalf of the [[m:Universal_Code_of_Conduct/Drafting_committee#Phase_2|Drafting Committee]], much thanks to everyone who has given ideas so far. We hope to hear from more of you - the Guidelines will be much stronger if more opinions are included.
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/javp&oldid=21897428 のリストを使用して送信したメッセージ -->
== The Community election of Movement Charter Drafting committee is now open! ==
Voting for the election for the members for the Movement Charter drafting committee is now open. In total, 70 Wikimedians from around the world are running for 7 seats in these elections.
'''Voting is open from October 12 to October 24, 2021.'''
The committee will consist of 15 members in total: The online communities vote for 7 members, 6 members will be selected by the Wikimedia affiliates through a parallel process, and 2 members will be appointed by the Wikimedia Foundation. The plan is to assemble the committee by November 1, 2021.
Learn about each candidate to inform your vote in the language that you prefer: <https://meta.wikimedia.org/wiki/Special:MyLanguage/Movement_Charter/Drafting_Committee/Candidates>
Learn about the Drafting Committee: <https://meta.wikimedia.org/wiki/Special:MyLanguage/Movement_Charter/Drafting_Committee>
We are piloting a voting advice application for this election. Click yourself through the tool and you will see which candidate is closest to you! Check at <https://mcdc-election-compass.toolforge.org/>
Read the full announcement: <https://meta.wikimedia.org/wiki/Special:MyLanguage/Movement_Charter/Drafting_Committee/Elections>
'''Go vote at SecurePoll on:''' <https://meta.wikimedia.org/wiki/Special:MyLanguage/Movement_Charter/Drafting_Committee/Elections>
Best,
--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年10月13日 (水) 06:54 (UTC)
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/jazh&oldid=22182674 のリストを使用して送信したメッセージ -->
== 運動戦略実施助成金が運動戦略計画をどのように支援するかを学ぶ ==
<section begin="announcement-content"/>運動戦略実施助成金は現在、運動戦略計画を実行に移すために2,000ドル以上を提供しています。詳細は[[:m:Special:MyLanguage/Grants:MSIG/About|運動戦略実施助成金の条件および応募方法]]についてを参照してください。<section end="annoumcent-content"/>
[[利用者:MNadzikiewicz (WMF)|MNadzikiewicz (WMF)]] ([[利用者・トーク:MNadzikiewicz (WMF)|トーク]]) 2021年10月24日 (日) 09:09 (UTC)
== Meet the new Movement Charter Drafting Committee members ==
:''<div class="plainlinks">[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Elections/Results/Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Movement Charter/Drafting Committee/Elections/Results/Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
The Movement Charter Drafting Committee election and selection processes are complete.
* The [[m:Special:MyLanguage/Movement Charter/Drafting Committee/Elections/Results|election results have been published]]. 1018 participants voted to elect seven members to the committee: '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Richard_Knipel_(Pharos)|Richard Knipel (Pharos)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Anne_Clin_(Risker)|Anne Clin (Risker)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Alice_Wiegand_(lyzzy)|Alice Wiegand (Lyzzy)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Micha%C5%82_Buczy%C5%84ski_(Aegis_Maelstrom)|Michał Buczyński (Aegis Maelstrom)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Richard_(Nosebagbear)|Richard (Nosebagbear)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Ravan_J_Al-Taie_(Ravan)|Ravan J Al-Taie (Ravan)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Ciell_(Ciell)|Ciell (Ciell)]]'''.
* The [[m:Special:MyLanguage/Movement_Charter/Drafting_Committee/Candidates#Affiliate-chosen_members|affiliate process]] has selected six members: '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Anass_Sedrati_(Anass_Sedrati)|Anass Sedrati (Anass Sedrati)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#%C3%89rica_Azzellini_(EricaAzzellini)|Érica Azzellini (EricaAzzellini)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Jamie_Li-Yun_Lin_(Li-Yun_Lin)|Jamie Li-Yun Lin (Li-Yun Lin)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Georges_Fodouop_(Geugeor)|Georges Fodouop (Geugeor)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Manavpreet_Kaur_(Manavpreet_Kaur)|Manavpreet Kaur (Manavpreet Kaur)]]''', '''[[m:Special:MyLanguage/Movement Charter/Drafting Committee/Candidates#Pepe_Flores_(Padaguan)|Pepe Flores (Padaguan)]]'''.
* The Wikimedia Foundation has [[m:Special:MyLanguage/Movement_Charter/Drafting_Committee/Candidates#Wikimedia_Foundation-chosen_members|appointed]] two members: '''[[m:Special:MyLanguage/Movement_Charter/Drafting_Committee/Candidates#Runa_Bhattacharjee_(Runab_WMF)|Runa Bhattacharjee (Runab WMF)]]''', '''[[m:Special:MyLanguage/Movement_Charter/Drafting_Committee/Candidates#Jorge_Vargas_(JVargas_(WMF))|Jorge Vargas (JVargas (WMF))]]'''.
The committee will convene soon to start its work. The committee can appoint up to three more members to bridge diversity and expertise gaps.
If you are interested in engaging with [[m:Special:MyLanguage/Movement Charter|Movement Charter]] drafting process, follow the updates [[m:Special:MyLanguage/Movement Charter/Drafting Committee|on Meta]] and join the [https://t.me/joinchat/U-4hhWtndBjhzmSf Telegram group].
With thanks from the Movement Strategy and Governance team--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2021年11月2日 (火) 04:42 (UTC)
<!-- User:YKo (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:YKo_(WMF)/javp&oldid=21897428 のリストを使用して送信したメッセージ -->
== コミュニティ技術との対話を ==
[[File:Magic Wand Icon 229981 Color Flipped.svg|100px|right]]
{{int:Hello}}
[[m:Special:MyLanguage/Community Wishlist Survey|コミュニティ要望アンケート]]の担当チーム一同より、皆さんをオンライン会議にお誘いします。期日は[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211130T1700 '''{{#time:j xg|2021-11-30}} ({{#time:l|2021-11-30}})、{{#time:H:i e|17:00|ja|1}}''']、Zoom, を使用し1時間にわたる予定です。[https://wikimedia.zoom.us/j/82035401393 '''参加申し込みはこちら''']。
'''議題'''
* コミュニティ要望アンケート2022が変わります。決定にご助力をお願いします。
* コミュニティ要望アンケート (CWS) の大使になりませんか。皆さんのコミュニティで、CWS に関する情報発信をしてください。
* 質疑応答
'''方式'''
ミーティングは録画せず、ストリーム配信もしません。発言者名をつけない記録は取り、メタウィキにて公表の予定です。プレゼンテーション (質疑応答を除く議題の全内容) は英語で行います。
ご質問は英語、フランス語、ポーランド語、スペイン語、ドイツ語、イタリア語でお答えできます。事前に質問をお寄せいただくには、[[m:Talk:Community Wishlist Survey|コミュニティ要望アンケート のトークページ]]に投稿、もしくはメールにて sgrabarczuk@wikimedia.org宛にお送り願います。
ミーティングの主催は[[m:Special:MyLanguage/User:NRodriguez (WMF)|Natalia Rodriguez]] ([[m:Special:MyLanguage/Community Tech|コミュニティ技術]]部長) の予定です。
'''参加募集のリンク'''
* [https://wikimedia.zoom.us/j/82035401393 オンラインで参加]
* 会議 ID: <span dir=ltr>82035401393</span>
* [https://wikimedia.zoom.us/u/keu6UeRT0T 所在地別のフリーダイヤル番号]
では当日、お待ちしています! [[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|会話]]) 2021年11月27日 (土) 00:41 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SGrabarczuk_(WMF)/sandbox/MM/Other_TOP20/ja&oldid=22381336 のリストを使用して送信したメッセージ -->
== ウィキメディア財団理事会/ご意見募集:2022年理事会選挙/理事会選挙に関するご意見募集のご案内 ==
理事会選挙に関するご意見募集の予告
<section begin="announcement-content />
:''このメッセージはMeta-wikiで他の言語に翻訳されています。''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback:2022 Board of Trustees election/Upcoming Call for Feedback about the Board of Trustees elections|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Board of Trustees/Call for feedback:2022 Board of Trustees election/Upcoming Call for Feedback about the Board of Trustees elections}}&language=&action=page&filter= {{int:please-translate}}]</div>''
理事会は、2022年1月7日から2月10日まで行われる理事会選挙について、ご意見を募る準備をしています。
詳細は募集の前週に決定されますが、今回の募集では少なくとも2つの質問が確定していますので、ご意見をお願いします。
* 新興コミュニティから公平に理事会に代表を送るには、どのような方法がありますか?
* 候補者は、選挙期間にどのように(コミュニティと)かかわるべきでしょうか?
質問は追加される可能性がありますが、運動戦略・ガバナンス(組織統治)チームでは募集の開始前に確定した設問をお伝えすることで、コミュニティや提携団体の皆さんに事前に読んでアイデアを準備していただく時間を設けたいと考えました。現時点で設問の一覧が完全でないことをお詫びいたします。今後、増えるのは1問または2問だけの見込みです。コミュニティの皆さんにご負担にならないよう、意義のある設問を事前にお知らせしておき、ぜひご意見をいただけないかと考えます。
'''この募集の期間中、地域での対話のまとめ役を引き受けていただける方はおられませんか?'''
Meta (メタ)、[https://t.me/wmboardgovernancechat Telegram] (テレグラムのチャット)、またはメール(msg[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org)で[[m:Special:MyLanguage/Movement Strategy and Governance|運動戦略とガバナンス(組織統治)チーム]]にご連絡ください。
ご質問やご不明な点がございましたら、お気軽にお問い合わせください。運動戦略とガバナンス(組織統治)チームは、1月3日まで最小限の人員で運営されます。この期間中は、対応が遅れますことをご了承ください。また、コミュニティや提携団体の皆さんには、12月の連休中はオフラインにしておられることも承知しています。せっかくの休暇中に私たちがメッセージをお送りしてしまった節には、たいへん失礼しました。
草々
運動戦略とガバナンス(組織統治)チーム一同<section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2021年12月28日 (火) 10:19 (UTC)
== Webで起きていること ==
あのー私はこういうことについてはほとんど知らないし,情報も持っていないのですが,でもツイッターなんかの発言では時々見るんだけど,なんか,Web上ではあらゆるところで,特定の政治立場や経済利益を手に入れるために,お金をもらって,その勢力に都合いい記述を書きまくっている人物がいるようですね。私自身は完全に趣味で,遊びで,もちろんこういうサイトですからそれなりに公益や学問的な確かさを考慮して書きますが,そうじゃない,馬鹿ばかしい邪念と金のために書いている奴がかなりいるらしいって聞いたことがあるけど…。その辺どうでしょうかね?皆さんはどう思います?--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年1月7日 (金) 17:30 (UTC)
== Wiki Loves Folklore is back! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{{int:please-translate}}
[[File:Wiki Loves Folklore Logo.svg|right|150px|frameless]]
You are humbly invited to participate in the '''[[:c:Commons:Wiki Loves Folklore 2022|Wiki Loves Folklore 2022]]''' an international photography contest organized on Wikimedia Commons to document folklore and intangible cultural heritage from different regions, including, folk creative activities and many more. It is held every year from the '''1st till the 28th''' of February.
You can help in enriching the folklore documentation on Commons from your region by taking photos, audios, videos, and [https://commons.wikimedia.org/w/index.php?title=Special:UploadWizard&campaign=wlf_2022 submitting] them in this commons contest.
You can also [[:c:Commons:Wiki Loves Folklore 2022/Organize|organize a local contest]] in your country and support us in translating the [[:c:Commons:Wiki Loves Folklore 2022/Translations|project pages]] to help us spread the word in your native language.
Feel free to contact us on our [[:c:Commons talk:Wiki Loves Folklore 2022|project Talk page]] if you need any assistance.
'''Kind regards,'''
'''Wiki loves Folklore International Team'''
--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2022年1月9日 (日) 13:15 (UTC)
</div>
<!-- User:Tiven2240@metawiki が https://meta.wikimedia.org/w/index.php?title=User:Tiven2240/wlf&oldid=22560402 のリストを使用して送信したメッセージ -->
== 2022年コミュニティ要望アンケート ==
[[File:Community Wishlist Survey Lamp.svg|right|200px]]
'''[[m:Special:MyLanguage/Community Wishlist Survey 2022|2022年コミュニティ要望アンケート]]'''が始まりました!'''
この調査はコミュニティによって[[m:Special:MyLanguage/Community Tech|コミュニティ技術]]チームが来年度に取り組む課題を決めるプロセスです。〆切の'''1月23日'''までに提案を行うか、他の提案内容について改善のためのコメントを行ってください。
提案に対する投票期間は1月28日から2月11日までです。
コミュニティ技術チームは経験を積んだウィキメディア編集者向けツールの開発に専念します。 提案は何語で書いても問題ありません。こちらで皆さんに代わって翻訳します。投稿をお待ちしていますので、どうぞよろしくお願いします! [[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|talk]]) 2022年1月10日 (月) 19:05 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SGrabarczuk_(WMF)/sandbox/MM/Other_TOP20/ja&oldid=22381336 のリストを使用して送信したメッセージ -->
== 理事会選挙に関するご意見募集が始まりました ==
<section begin="announcement-content" />:''[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback about the Board of Trustees elections is now open/Short|Meta-wikiで他の言語にも翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback about the Board of Trustees elections is now open/Short|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback about the Board of Trustees elections is now open/Short}}&language=&action=page&filter= {{int:please-translate}}]</div>''
ご意見募集: 理事会選挙2022年2月7日まで募集をしています。
このご意見募集で、運動戦略と組織統治チームは、これまでと異なる手法を取ることにしました。2021年の経緯について、コミュニティから学ぶのです。こちらから提案をするのではありません。理事会から提示された2点の質問を軸にしています。2021年に理事会選挙が行われました。皆さんの意見をもとに、次の選挙を進めていく予定です。
[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections|対話に参加する]]
敬具
運動戦略と組織統治<section end="announcement-content/>
<languages/>
== 運動戦略と組織統治ニュース – 記事 5 ==
<section begin="ucoc-newsletter"/>
<div style = "line-height: 1.2">
<span style="font-size:200%;">'''運動戦略と組織統治ニュース'''</span><br>
<span style="font-size:120%; color:#404040;">'''記事 5 - 2022年1月'''</span><span style="font-size:120%; float:right;">[[m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5|'''ニュースレター全文はこちら''']]</span>
----
運動戦略と組織統治ニュース(旧称:ユニバーサル行動規範ニュース)第5号へようこそ! この刷新されたニュースレターでは、運動憲章、ユニバーサル行動規範、運動戦略実施のための助成金、理事会選挙、その他MSGに関連するニュースやイベントをお知らせしています。
このニュースレターは四半期ごとに配信されますが、より頻度の高いアップデートは、毎週または隔週で配信される予定です。配信を希望される方は、[[:m:Special:MyLanguage/Global message delivery/Targets/MSG Newsletter Subscription|こちら]]を忘れずにご登録ください。
</div><div style="margin-top:3px; padding:10px 10px 10px 20px; background:#fffff; border:2px solid #808080; border-radius:4px; font-size:100%;">
*'''理事選挙に関するご意見募集''' - 次回のウィキメディア財団WMF理事選挙に関するご意見を募集しています。このご意見募集は2022年1月10日に公開され、2022年2月7日に締め切られる予定です。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5#Call for Feedback about the Board elections|続きを読む]])
*'''ユニバーサル行動規範の批准''' - 2021年、WMFはユニバーサル行動規範の方針文の施行方法についてコミュニティに質問しました。執行ガイドラインの改訂草案は、3月コミュニティの投票に間に合うはずです。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5#Universal Code of Conduct Ratification|続きを読む]])
*'''運動戦略実施のための助成金'''-興味深い提案の審査を続ける中で、運動戦略の提言から特定のイニシアチブをターゲットにした提案やアイデアをより奨励し、歓迎します。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5#Movement Strategy Implementation Grants|続きを読む]])
*'''ニュースレターの新しい方向性''' - UCoCニュースレターがMSGニュースレターに移行するにあたり、ファシリテーションチームと共に、このニュースレターの新しい方向性を思い描き、決めていきます。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5#The New Direction for the Newsletter|続きを読む]])
*'''Diff Blogs'' - MSGに関する最新の出版物をウィキメディア・ディフでチェックしましょう。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/5#Diff Blogs|続きを読む]])</div><section end="ucoc-newsletter"/>
== Subscribe to the This Month in Education newsletter - learn from others and share your stories ==
<div lang="en" dir="ltr" class="mw-content-ltr">
Dear community members,
Greetings from the EWOC Newsletter team and the education team at Wikimedia Foundation. We are very excited to share that we on tenth years of Education Newsletter ([[m:Education/News|This Month in Education]]) invite you to join us by [[m:Global message delivery/Targets/This Month in Education|subscribing to the newsletter on your talk page]] or by [[m:Education/News/Newsroom|sharing your activities in the upcoming newsletters]]. The Wikimedia Education newsletter is a monthly newsletter that collects articles written by community members using Wikimedia projects in education around the world, and it is published by the EWOC Newsletter team in collaboration with the Education team. These stories can bring you new ideas to try, valuable insights about the success and challenges of our community members in running education programs in their context.
If your affiliate/language project is developing its own education initiatives, please remember to take advantage of this newsletter to publish your stories with the wider movement that shares your passion for education. You can submit newsletter articles in your own language or submit bilingual articles for the education newsletter. For the month of January the deadline to submit articles is on the 20th January. We look forward to reading your stories.
Older versions of this newsletter can be found in the [[outreach:Education/Newsletter/Archives|complete archive]].
More information about the newsletter can be found at [[m:Education/News/Publication Guidelines|Education/Newsletter/About]].
For more information, please contact spatnaik{{@}}wikimedia.org.
------
<div style="text-align: center;"><div style="margin-top:10px; font-size:90%; padding-left:5px; font-family:Georgia, Palatino, Palatino Linotype, Times, Times New Roman, serif;">[[m:Education/Newsletter/About|About ''This Month in Education'']] · [[m:Global message delivery/Targets/This Month in Education|Subscribe/Unsubscribe]] · [[m:MassMessage|Global message delivery]] · For the team: [[User:ZI Jony|<span style="color:#8B0000">'''ZI Jony'''</span>]] [[User talk:ZI Jony|<sup><span style="color:Green"><i>(Talk)</i></span></sup>]], {{<includeonly>subst:</includeonly>#time:l G:i, d F Y|}} (UTC)</div></div>
</div>
<!-- User:ZI Jony@metawiki が https://meta.wikimedia.org/w/index.php?title=User:ZI_Jony/MassMessage/Awareness_of_Education_Newsletter/List_of_Village_Pumps&oldid=21244129 のリストを使用して送信したメッセージ -->
== 理事会選挙ボランティア募集のお知らせ ==
今年の理事会選挙でボランティアをしませんか?
:することは、以下の3つのうちの一つでも結構です。
# 夏に行われる理事会選挙を日本語コミュニティの中ですすめる
# 理事会選挙についての対話を実行する
# 理事会選挙についての翻訳
:興味のある方は[https://ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85%E2%80%90%E4%BC%9A%E8%A9%B1:YShibata_(WMF)#c-RottenApple777-2022-01-17T17%3A57%3A00.000Z-%E8%B2%A1%E5%9B%A3%E3%81%AE%E9%83%A8%E9%96%80%E3%81%AE%E4%B8%80%E8%A6%A7%E3%80%81%E2%80%932019%E5%B9%B4%EF%BC%88%E6%83%85%E5%A0%B1%EF%BC%89]か、yshibata-ctr@wikimedia.orgにご連絡ください!
他の地域での参加もできます。
[https://meta.wikimedia.org/wiki/Wikimedia_Foundation_elections/2022/Meetings/New_Year_Conversation_with_Election_Volunteers ]--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年1月18日 (火) 15:48 (UTC)
== 提携団体の役割についてのご意見募集: 理事会選挙 ==
<section begin="announcement-content" />:''[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Question_about_the_Affiliates%27_role_for_the_Call_for_Feedback:_Board_of_Trustees_elections|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Question_about_the_Affiliates%27_role_for_the_Call_for_Feedback:_Board_of_Trustees_elections|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Question_about_the_Affiliates%27_role_for_the_Call_for_Feedback:_Board_of_Trustees_elections}}&language=&action=page&filter= {{int:please-translate}}]</div>''
みなさん、こんにちは。
ご意見募集にご参加いただいた皆様、ありがとうございます。理事会選挙にご参加いただいた皆様、ありがとうございます。運動戦略と組織統治チームは、もう一つの質問がまだ検討中であるとお伝えしていました。本日付で、その重要な質問を発表します。
提携団体はどのように選挙に参加すべきでしょうか?
提携団体は、ウィキメディアの運動の重要な構成要素です。今年補充される理事会の2議席は、2019年に提携団体枠として選出された議席です。 [https://foundation.wikimedia.org/w/index.php?title=Bylaws&type=revision&diff=123603&oldid=123339 細則の変更により、コミュニティと提携団体の枠の区別がなくなりました]。したがって重要な疑問が生じます。新しい議席の選定に提携団体はどのように関与すべきでしょうか?
この質問は、寄せられるご意見がこの2議席についてだけでなく、任期中であるコミュニティや提携団体としての枠で選ばれた議席についても及ぶであろうという前提です。理事会は、提携団体の関与を高め、実際的な権限を与えるとともに、最高のスキル、経験、多様性、幅広いコミュニティの支持を有する人物を選ぶという意味で、最大の成果を見出したいと考えています。
理事会は、この質問について、特に提携団体からのご意見を必要としています。が、他の方々のご意見も必要です。どなたでもご意見を共有し、ご意見募集というチャンネルでの対話に参加することができます。オンラインでのご意見募集に加え、運動戦略と組織統治チームは、提携団体メンバーとのオンラインミーティングを数回企画し、ご意見を募集する予定です。これは様々な時間帯に行われ、理事会メンバーも参加します。
この3つ目の追加質問が予定より遅れたため、募集期間を2月16日まで延長します。
[[m:Special:MyLanguage/Wikimedia_Foundation_Board_of_Trustees/Call_for_feedback:_Board_of_Trustees_elections/Discuss_Key_Questions|対話に参加]]
敬具
運動戦略と組織統治
== 編集者 Honooo へのクレーム ==
トークページで彼からこう言われました。「なんか色々記述を移動させてるねー。以前もあんたその手使ったよね。まあ工学はあんたの専門分野だからね,最後の砦としては妥当だろう。俺も別にあんたを殺すのが目的でここにいる訳じゃあないんだけど,どうしてもついつい目にするとものすごく不快で具合悪くてね,どうしてもかかわらざるを得なくなっちゃうんだよ。今後どうなるかねー。俺がここを去るという道もあるけど,ウィキメディアの仕様自体が,それを難しくしてるんだよ。Honooo (トーク) 2022年1月24日 (月) 14:35 (UTC)」
何か私の編集移動がwiki規約に違反してるとかなら文句をつけられるのは仕方無いと思いますが、しかし工学専攻の私が専門知識に基づいて工学の記事を編集するのを、専門外の彼に文句を言われるのは意味不明です。
そもそも、移動前の「ゲームプログラミング」にあった工学的内容は、もともと工業高校の機械設計あたりの教科書に書いてあった設計図の内容をベースにしている内容ですので、それを私は工学のページに「設計の理論」という新規ページに移動しただけです。設計図書など、工業高校の機械設計用に考えていた内容ですし、もともと市販の工学書などに在った話題です。
彼は形式的にはトークページで対話をしていますが、しかし建設的な提案をしませんので、彼へのトークではなく談話室でクレームを述べさせてもらいます。
あと、「俺がここを去るという道もあるけど,ウィキメディアの仕様自体が,それを難しくしてるんだよ。」とか言われても、私からは「知らんがな」としか言えません。そもそも彼ってウィキペディアの管理人か何かなんですか。彼の今までのトークなどの発言内容が到底、ウィキメディア管理職とは思えません。--[[利用者:すじにくシチュー|すじにくシチュー]] ([[利用者・トーク:すじにくシチュー|トーク]]) 2022年1月24日 (月) 14:49 (UTC)
:俺は管理職じゃあないよ。単なる一参加者。工学とか理学とか,専門分野とかいう前に,人間としてあんたの態度,考え方がおかしいと思うから文句言ってるの。一番建設的な話題だよ。「知らんがな」と言うのなら,俺はお前の存在自体が「知らんがな」だね。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年1月24日 (月) 14:56 (UTC)
:別に設計の理論で純粋に工学的な話題を展開するなら,何も文句ないし,むしろ俺も読みたいくらいだよ。だけどあんた今までそうじゃあなかったよね。なんだかんだで,人間と社会に関するありえない暴論をぶっこんで来たよね?この辺考え方の違いとか言われると俺も返答難しいんだけど,しかし俺から見ると地獄の100丁目でね,ありえなく不快だからついつい口出ししたくなっちゃうんだよ。だからそうなりたくないから,トークページで釘さしておいただけだよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年1月24日 (月) 15:16 (UTC)
== デスクトップビュー改善の情報更新と事務局時間へのご招待 ==
{{int:Hello}}. [[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements|デスクトップビュー改善]]プロジェクト(Desktop Improvements)の更新について、ウィキメディア財団ウェブチームより情報共有をしたいと考えます。
当プロジェクトでは閲覧者も経験を積んだ利用者も、誰でも今よりもっとインターフェースを便利に使えるように目指します。 プロジェクトは一連の機能の改善で構成され、閲覧と編集をしやすくしたり、ページ内の移動、他言語への切り替え、記事のタブや利用者メニューの使用その他を対象にします。
これらの改良点は、すでに24件のウィキで閲覧者と編集者に既定で表示しており、ウィキペディアの [[:fr:|フランス語版]]、[[:pt:|ポルトガル語版]]、[[:fa:|ペルシャ語版]]も対象です。
これらの変更点を反映するのは[{{fullurl:{{FULLPAGENAMEE}}|useskin=vector}} ベクター]外装限定です。[{{fullurl:{{FULLPAGENAMEE}}|useskin=monobook}} モノブック]と [{{fullurl:{{FULLPAGENAMEE}}|useskin=timeless}} Timeless] の利用者に影響はありません。
=== 前回の更新以降、展開した機能類 ===
* 目標としては、ユーザーリンクの構造と目的を強調して見せるなど、ナビゲーションを直観的に操作できるようにします。
* [[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements/Features/Sticky Header|常駐ヘッダー]](Sticky header)- ページ最上部まで画面をロールしなくても、利用者が重要な機能(ログインとログアウト、変更履歴、トークページなど)を利用できるようにします。
当プロジェクトが対象とする機能の一覧は、当チームの[[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements|プロジェクトページ]]をご参照ください。[[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements/Updates|更新情報のページ]]もご案内します。.
[[File:Table_of_contents_shown_on_English_Wikipedia_02.webm|thumb|600px|center]]
<br clear=all>
=== 改良点を反映するには ===
[[File:Desktop Improvements - how to enable globally.png|thumb|[[Special:GlobalPreferences#mw-prefsection-rendering|{{int:globalpreferences}}]]]]
* ウィキ単位で有効にするには、それぞれの[[Special:Preferences#mw-prefsection-rendering|個人設定ページを開き〈表示〉タブ]]の「{{int:prefs-vector-enable-vector-1-label}}」のボックスのチェックを外してください。(白色にします。) さらに[[Special:GlobalPreferences#mw-prefsection-rendering|グローバルな個人設定]]を指定すると、すべてのウィキで選択が一意に有効になります。
* 本ウィキにおいてこれが閲覧者や編集者全員にふさわしく、既定にしてよいとお考えの場合は、ぜひコミュニティとの合意形成に取り掛かったり私へのご連絡をご検討ください。
* ウィキによっては変更点を既定で全員に開示しており、その場合もログイン利用者は選択肢をいつでも旧来のベクター(Legacy Vector)に戻すことができます。 新しいベクター外装のサイドバーには、見つけやすいリンクを置いてあります。
=== 情報交換とイベントの告知 ===
本プロジェクトの進捗を今後も知りたいとお考えなら、[[mw:Special:Newsletter/28/subscribe|ニュースレターを購読]]してください。
[[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements|プロジェクトのページ]](複数)を閲覧、[[mw:Special:MyLanguage/Reading/Web/Desktop_Improvements/Frequently_asked_questions|専用のよくある質問]]をチェック、[[mw:Talk:Reading/Web/Desktop_Improvements|プロジェクトのトークページ]]に投稿、さらにオンラインのミーティングに参加([https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220127T1500 '''{{#time:xgj日|2022-01-27}} ({{#time:l|2022-01-27}}){{#time:H:i e|15:00|ja|1}}'''])など皆さんをお待ちしています。
オンライン会議に参加するには
* [https://wikimedia.zoom.us/j/89205402895 オンラインで参加]
* 会議 ID: <span dir=ltr>89205402895</span>
* [https://wikimedia.zoom.us/u/kdPQ6k2Bcm 所在地別のフリーダイヤル番号]
{{int:Feedback-thanks-title}}
ウィキメディア財団ウェブチーム一同になりかわり、[[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|会話]]) 2022年1月25日 (火) 06:25 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SGrabarczuk_(WMF)/sandbox/MM/Other_TOP20/ja&oldid=22381336 のリストを使用して送信したメッセージ -->
== ユニバーサル行動規範Universal Code of Conduct(UCoC)/施行ガイドライン査読の更新 ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/2022-02-02 Announcement/Short|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/2022-02-02 Announcement/Short|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Enforcement guidelines/2022-02-02 Announcement/Short}}&language=&action=page&filter= {{int:please-translate}}]</div>''
皆さん、こんにちは。
'''[[m:Universal Code of Conduct/Enforcement guidelines|ユニバーサル行動規範Universal Code of Conduct (UCoC) 施行ガイドライン]]''' が2022年1月24日に公開されました。これまでの話し合いに沿い、[[m:Universal Code of Conduct|ユニバーサル行動規範Universal Code of Conduct]] を運動全てに適用させるためです。ガイドラインについてのコメントは [[m:Talk:Universal Code of Conduct/Enforcement guidelines|the Meta-wiki talk page]]こちらにご記入ください。
Zoomでの質疑応答が、2022年2月4日15:00 UTC(日本時間深夜0:00)、2022年2月25日12:00 UTC(日本時間21:00)、2022年3月4日15:00 UTC(日本時間深夜0:00)に行われます。 '''[[m:Special:MyLanguage/Universal Code of Conduct/Conversations|ガイドラインや投票手続きについて、UCoCプロジェクトチームや起草委員会メンバーと話し合う]]。'''
[[m:Universal Code of Conduct/Project#Timeline|日程表はMeta-wikiでご覧ください]]。投票期間は3月7日から21日です。'''[[m:Universal Code of Conduct/Enforcement guidelines/Voting|詳細はこちらをご覧ください]]。'''
ご参加いただきありがとうございます。
厚意と心をこめて、
運動戦略と組織統治Movement Strategy and Governance<br/>
ウィキメディア財団Wikimedia Foundation<section end="announcement-content" />
== 編集合戦が起きたので報告 ==
記事『[[病理学/炎症]]』で編集合戦が起きたので、報告します。なお、この井戸端に投稿した編集者「すじにくシチュー」は、編集合戦の当事者の片方です。ログインユ-ザーによる第三者の意見をお待ちしております。なお、この意見招来の要望はwikipedia日本語版の慣習にしたがったものです。wikipedia日本語版でも議論のあるページなどでは、井戸端などに議論のあることを報告し、意見を招来するものと考えます。なお現在、記事の状態は、編集合戦の起きる前に長らく放置されていた状態の版をベースに、議論のある事だけを追記した状態にしてあります。--[[利用者:すじにくシチュー|すじにくシチュー]] ([[利用者・トーク:すじにくシチュー|トーク]]) 2022年2月6日 (日) 09:04 (UTC)
:すじにくさん,私は最近は貴方に本当に愛想が尽きたので,基本的には今回の議論は,ほぼ静観,傍観です。はっきり言って,IPv6さんがあなたを上手に料理して,貴方をWikibooks から葬り去ってくれることを期待しているよ。
:貴方もそろそろ自分自身の愚かさに気づいて,自覚,反省したほうがいいよ。俺に言わせりゃあ,人類史上本当に賢い人間なんて一人もいないよ。
:今回の病理学,炎症に関しては確かに私も興味あるけど,貴方の文章は,あなたの性格の悪さ,歪みが如実に表れてるので,まあ読みたくないね。Wikipediaにも,それ以外のWebにも,有益な文章はいっぱいあるよ。お金出して書籍購入してもいいしね。
:はっきり言うけど貴方の文章は,お金もらっても読みたくない部類だね。ここで私がゲームや学習法を上書きしてるのは,このサイトの参加者である以上やらざるを得ないからやってるんであって,貴方に対してはマイナスの評価しかない。
:さて,今後どうなるかね…。しかしあなたもほんと変わり者だね。俺も相当変人の自覚あるけど,貴方はそれをはるかに超えてるよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年2月6日 (日) 10:43 (UTC)
::申し訳ありませんが、私「もう疲れたよパトラッシュ……_(:3」∠)_」状態です。すじにく大先生のお言葉の蟲毒に耐えられません(白目)。到底、大先生を葬り去るなんてできません。いや、普通の人は、あそこまで書けば少なくとも自省するんですけどね……。
::すじにく大先生の最大の業績は「良いものは金を出して買え。無料にロクなものはない」というのを各ページでアピールしていることではないかと思います。--[[特別:投稿記録/2404:7A86:8800:1C00:597A:C4F6:CDF:B28C|2404:7A86:8800:1C00:597A:C4F6:CDF:B28C]] 2022年2月6日 (日) 12:25 (UTC)
:::そうですか…。実は私も最近はパトラッシュと語ることが多くて^^;;;。悪いけどすじ肉先輩には業績なんてないと思う。確かに無料のものは怪しいもの多いけど,お金出したのに酷い内容や酷い事する人は本当に多いよ。まあそれはともかく,今日は私はもう寝ます(^^)/。ではではZzzzzzzz…--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年2月6日 (日) 12:39 (UTC)
::::Wikipediaみたいに、管理者も多くの執筆者も活動が活発なら葬れるんですけどねぇ……(白目)。すじにく大先生の業績? ないですね(きっばり)。さっきのはご存じかと思いますが、嫌味です(苦笑)。確かに、金返せと言いたくなるものもありますしね。私も、自分のことがありますのでこれにてm(__)m。--[[特別:投稿記録/2404:7A86:8800:1C00:597A:C4F6:CDF:B28C|2404:7A86:8800:1C00:597A:C4F6:CDF:B28C]] 2022年2月6日 (日) 12:47 (UTC)
== <section begin="announcement-header" />リーダーシップ開発タスクフォース: ぜひ、ご意見をお聞かせください!<section end="annoncement-header" /> ==
<section begin="announcement-content" />:''[[m:Special:MyLanguage/Leadership Development Task Force/Call for Feedback Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Leadership Development Task Force/Call for Feedback Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Leadership Development Task Force/Call for Feedback Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
ウィキメディア財団のコミュニティ開発チームは、グローバルな、コミュニティ主導のリーダーシップ開発タスクフォースの策定を支援しています。タスクフォースの目的はリーダーシップ開発作業についてのアドバイスです。
チームは、リーダーシップ開発タスクフォースについてのご意見を募集しています。このMETAページでは、[[m:Special:MyLanguage/Leadership Development Task Force|リーダーシップ開発タスクフォース]]のための提案と、どのようにして[[m:Special:MyLanguage/Leadership Development Task Force/Participate|支援するか]]について共有します。ご意見の募集期間は2022年2月7日から25日までです。<section end="announcement-content" />
== <section begin="announcement-header" />UCoCについての対話にご参加ください。批准のための投票もお願いいたします。<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Universal Code of Conduct/Enforcement guidelines/Voting/Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting/Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Enforcement guidelines/Voting/Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
皆さん、こんにちは。
ユニバーサル行動規範Universal Code of Conduct(UCoC)施行ガイドラインの批准プロセスの一環として、[[m:Special:MyLanguage/Universal_Code_of_Conduct/Enforcement_guidelines/Voting|'''2022年3月7日から21日までSecurePollで投票''']]があります。投票資格のある方は、是非、投票をお願い致します。反対の場合はコメントもご記入ください。[[EG2|投票者情報・参加資格の詳細]]。ガイドラインとは、世界共通の規範を各地域でどのように実地するのか、という案です。
[[EG3|ユニバーサル行動規範Universal Code of Conduct]](UCoC)は、最低限の規範です。2022年1月24日、この規範を実施する方法の案として[[m:Special:MyLanguage/Universal_Code_of_Conduct/Enforcement_guidelines|改訂版施行ガイドライン]]が発表されました。 [[m:Special:MyLanguage/Wikimedia_Foundation_Board_noticeboard/January_2022_-_Board_of_Trustees_on_Community_ratification_of_enforcement_guidelines_of_UCoC|ウィキメディア財団理事会声明]]では、投票でUCoC施行ガイドラインの採用について支持、または反対する機会[[m:Special:MyLanguage/Universal_Code_of_Conduct/Enforcement_guidelines/Voting|承認プロセス]]を必要としています。ウィキメディアンは[[m:Special:MyLanguage/Universal_Code_of_Conduct/Enforcement_guidelines/Voter_information/Volunteer|重要な情報の翻訳と共有]]に是非、ご参加ください。UCoCについての詳細は、Meta-wikiの[[m:Special:MyLanguage/Universal Code of Conduct/Project|プロジェクトページ]]と[[m:Special:MyLanguage/Universal Code of Conduct/FAQ|よくある質問]]をご覧ください。
話し合うためのイベントもあります。
* 2022年2月18日15:00 UTCに開催される[[m:Special:MyLanguage/Universal_Code_of_Conduct/Conversations/Panel_Q&A|コミュニティパネル]]では、小規模コミュニティの視点が特に必要です。
* [[m:Movement Strategy and Governance|運動戦略と組織統治Movement Strategy and Governance]](MSG)チームは、2022年2月25日 12:00 UTC と 2022年3月4日 15:00 UTC に話し合いの時間を開催します。ぜひ[[m:Special:MyLanguage/Universal_Code_of_Conduct/Conversations|'''参加''']]して、プロジェクトチームや起草委員会と、更新される施行ガイドラインや批准プロセスについて話し合ってください。2022年2月4日の終了回については[[m:Special:MyLanguage/Universal_Code_of_Conduct/2022_conversation_hour_summaries|話し合いの時間概略]]をご覧ください。
メタウィキのトークページには、どの言語でもコメントすることができます。また、電子メールで連絡することができます。msgemail または ucocproject[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org です。
今後ともよろしくお願い申し上げます。
運動戦略とガバナンス(組織統治)チーム一同 <br />
ウィキメディア財団 <br /><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年2月17日 (木) 08:45 (UTC)
== ビデオゲームの攻略本について ==
攻略本を解説書として執筆することは許可されているのでしょうか?
さっき英語版WIKIBOOKSに「ビデオゲームの執筆の許可」という趣旨のページを見つけました。日本語版ではどうなっているのでしょうか。
-{{Unsigned2|Funa-enpitu|2022年2月20日(日)03:03(UTC)|[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]])}}
:Funaさん,トーク系のページでは,末尾に署名してください。( <nowiki>--~~~~</nowiki> と書く)。個人的にはゲームの攻略本はここのコンテンツとしては認めたくありませんね。ただ英語版でどういう議論があるのかは気になるので,良ければ,対象ページへのリンクか,ページタイトルを示していただければありがたいのですが…--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年2月20日 (日) 04:59 (UTC)
:[[:en:Wikibooks:Reading_room/Proposals#Start_allowing_game_strategies|ウィキブックス:読書室/提案 - ウィキブック、オープンワールドのためのオープンブック (wikibooks.org)]]--[[利用者:Funa-enpitu|Funa-enpitu]] ([[利用者・トーク:Funa-enpitu|トーク]]) 2022年2月20日 (日) 07:41 (UTC)
:[[:en:Wikibooks:Reading_room/Proposals#Start_allowing_game_strategies|このリンクです]]
--[[利用者:Funa-enpitu|Funa-enpitu]] ([[利用者・トーク:Funa-enpitu|トーク]]) 2022年2月20日 (日) 07:39 (UTC)
:上部に「ウィキブックスコミュニティは、このウィキのビデオゲーム戦略ガイドを受け入れました!新しく作成された戦略ゲームのポリシーについては、ウィキブック:ストラテジーガイドを参照してください。皆様のご寄付をお待ちしております。」とあります。--[[利用者:Funa-enpitu|Funa-enpitu]] ([[利用者・トーク:Funa-enpitu|トーク]]) 2022年2月20日 (日) 07:42 (UTC)
::日本語版では今のところゲーム攻略本は不可です。日本語版の「[[{{ns:project}}:ウィキブックスは何でないか]]」には「テレビゲームの攻略本ではありません。ウィキブックスの求めるものは教本であり、攻略本ではありません。」と書かれていますので、今のところウィキブックス日本語版にゲーム攻略本を作ることは明確に禁じられています。単なる攻略本ではなく eスポーツ選手養成のための本格的な教材を編纂しようという話なら、受け入れられる可能性はあり得るかと思いますが。 --[[利用者:Kanjy|Kanjy]] ([[利用者・トーク:Kanjy|トーク]]) 2022年2月20日 (日) 09:32 (UTC)
::Funaさん,ある程度明文化された規定がすでにあるようですね。しかしそれはともかくリンクの提示ありがとうございます。[[b:en:Wikibooks:Reading room/Proposals]],[[b:en:Wikibooks:Strategy guides]]あたりですねー。Strategy guides が攻略本って事かな?まあどっちにしろ英語は凄く苦手でね,大したことは分からないんですが^^;;;…。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年2月20日 (日) 10:00 (UTC)
== Wiki Loves Folklore is extended till 15th March ==
<div lang="en" dir="ltr" class="mw-content-ltr">{{int:please-translate}}
[[File:Wiki Loves Folklore Logo.svg|right|frameless|180px]]
Greetings from Wiki Loves Folklore International Team,
We are pleased to inform you that [[:c:Commons:Wiki Loves Folklore|Wiki Loves Folklore]] an international photographic contest on Wikimedia Commons has been extended till the '''15th of March 2022'''. The scope of the contest is focused on folk culture of different regions on categories, such as, but not limited to, folk festivals, folk dances, folk music, folk activities, etc.
We would like to have your immense participation in the photographic contest to document your local Folk culture on Wikipedia. You can also help with the [[:c:Commons:Wiki Loves Folklore 2022/Translations|translation]] of project pages and share a word in your local language.
Best wishes,
'''International Team'''<br />
'''Wiki Loves Folklore'''
[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2022年2月22日 (火) 04:50 (UTC)
</div>
<!-- User:Rockpeterson@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=22754428 のリストを使用して送信したメッセージ -->
== 記事削除依頼 ==
本人からの申し出と、記事内容に虚偽が含まれている事から、下記記事の削除を依頼いたします。
https://ja.wikipedia.org/wiki/%E6%A6%8E%E5%B6%8B%E5%A4%A7%E8%B2%B4{{Unsigned|YuyaAkasaka|2022-02-24T13:57:21|[[利用者:Tomzo|Tomzo]] ([[利用者・トーク:Tomzo|トーク]])}}
:ウィキペディア記事に対して、こちらでは、何らの対応も致しかねます。--[[利用者:Tomzo|Tomzo]] ([[利用者・トーク:Tomzo|トーク]]) 2022年2月24日 (木) 09:03 (UTC)
== 新しい規範が世界的に実行される前にご意見をお聞かせください。 ==
おはようございます!こんにちは!こんばんは!
ウィキメディア財団、運動戦略と組織統治チームの柴田由美子[[https://meta.wikimedia.org/wiki/Movement_Strategy_and_Governance/Team/ja]]と申します。
新しい規範[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/ja]]が導入されたのですが、これまでの様々な「決まりごとや道徳」と決定的に違うのは'''実行'''させようとしていること[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/ja]]です。
新しい規範自体は、「相手を尊重しましょう」など、基礎的なものです。
2022年3月7日~21日、'''この実行方法'''について、'''投票'''[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/Voter_information/ja]]があります。
投票'''前に'''、ご意見をこちらにご記入いただければありがたいです。(投票のときにも意見を記入することができます。が、全ての利用者、というわけではありません)
*日本語[[https://meta.wikimedia.org/wiki/Talk:Universal_Code_of_Conduct/Enforcement_guidelines/ja#%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E8%A1%8C%E5%8B%95%E8%A6%8F%E7%AF%84Universal_Code_of_Conduct%28UCoC%29%2F%E6%96%BD%E8%A1%8C%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%80%8C%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%81%94%E6%84%8F%E8%A6%8B%E3%80%81%E8%B3%AA%E5%95%8F%E3%81%AA%E3%81%A9%E3%80%8D%E3%82%92%E3%81%94%E8%A8%98%E5%85%A5%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99]]
*英語[[https://meta.wikimedia.org/wiki/Talk:Universal_Code_of_Conduct/Enforcement_guidelines]]
「実行させようとする」方法の、第一段階は管理者の方々です。管理者、といっても、普通のボランティアの方々です。負担増加が懸念されるので、オンラインミーティングを行いました。日本語ウィキペディアが成立しているのは、管理者の方々がボランティアとして'''見えない'''仕事をしてくださっているからです。
井戸端ではこの点について話し合いがもたれています。暫定まとめ[[https://ja.wikipedia.org/wiki/Wikipedia:%E4%BA%95%E6%88%B8%E7%AB%AF/subj/%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E8%A1%8C%E5%8B%95%E8%A6%8F%E7%AF%84%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88%E3%81%AF%E8%A1%B0%E9%80%80%E3%81%95%E3%81%9B%E3%82%89%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%8B%EF%BC%9F/%E6%9A%AB%E5%AE%9A%E3%81%BE%E3%81%A8%E3%82%8120220223]]
日本語ウィキペディアの存続にかかわることになりかねないのでご一読いただければありがたいです。
ゆとりのないお知らせで申し訳ございません。お忙しいところご迷惑をおかけいたします。
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年2月26日 (土) 05:56 (UTC)
== Coming soon ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
=== もうすぐ導入:テンプレート数件の改善 ===
こんにちは、3月9日より皆さんのウィキでテンプレート数件に改善を導入の予定です。
* [[Mw:Special:MyLanguage/Help:VisualEditor/User guide#Editing templates|ビジュアルエディタのテンプレートダイアログ]]を根本的に改善 (VisualEditor [[m:WMDE Technical Wishes/VisualEditor template dialog improvements|1]]、[[special:MyLanguage/m:WMDE Technical Wishes/Removing a template from a page using the VisualEditor|2]])、
* ページにテンプレートを導入しやすくする改善 ([[m:WMDE Technical Wishes/Finding and inserting templates|3]]) (対象は[[Mw:Special:MyLanguage/Help:VisualEditor/User guide#Editing templates|VisualEditor]] (ビジュアルエディタ)、[[Mw:Special:MyLanguage/Extension:WikiEditor#/media/File:VectorEditorBasic-en.png|2010 Wikitext]] (2010年版ウィキテキスト)、[[Mw:Special:MyLanguage/2017 wikitext editor|New Wikitext Mode]] (新ウィキテキストモード) におけるテンプレートダイアログ)、
* さらに構文ハイライト拡張機能 [[Mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] (コードミラー) ([[m:WMDE Technical Wishes/Improved Color Scheme of Syntax Highlighting|4]]、[[m:WMDE Technical Wishes/Bracket Matching|5]]) (対応のウィキは右書きつまり横書きの時に左から右方向に書くタイプ。)
これらの変更はすべて[[m:WMDE Technical Wishes|ウィキメディア・ドイツ協会技術要望]](WMDE Technical Wishes)の行う「[[m:WMDE Technical Wishes/Templates|テンプレート]]」プロジェクトの配下にあります。皆さんの作業でこれらがお役に立つよう願っており、またこれらのプロジェクトそれぞれのトークページでぜひ皆さんの意見感想をお聞きしたく、お待ちしています。 </div> - [[m:User:Johanna Strodt (WMDE)|Johanna Strodt (WMDE)]] 2022年2月28日 (月) 12:38 (UTC)
<!-- User:Johanna Strodt (WMDE)@metawiki が https://meta.wikimedia.org/w/index.php?title=WMDE_Technical_Wishes/Technical_Wishes_News_list_all_village_pumps&oldid=22907463 のリストを使用して送信したメッセージ -->
== 荒らし報告 ==
(すじにくシチューによるコメント)編集者 Honooo による荒らし行為を報告します。[https://ja.wikibooks.org/w/index.php?title=%E3%83%88%E3%83%BC%E3%82%AF:%E4%B8%AD%E5%AD%A6%E6%A0%A1%E5%9B%BD%E8%AA%9E_%E5%8F%A4%E6%96%87/%E6%9E%95%E8%8D%89%E5%AD%90&oldid=194980 『トーク:中学校国語 古文/枕草子』2022年3月2日 (水) 13:38時点による版]
<pre>
== すじ肉先輩へ ==
あのさー,これ書くとまた削除されるかもしれないけど,あんた結局最近の更新で嫌がらせしてない?俺みたいな馬鹿は,Wikibooksの方針文読んでるのがつきづきしって言われてる気がするんだけど?--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年3月2日 (水) 13:38 (UTC)
</pre>
Honoooの上記の投稿は中学国語と、何の関係もない意見表明です。
他のページでも編集者 Honooo は類似の行為を行っています。削除されましたが、『トーク:高等学校国語総合/土佐日記』で彼は荒らしを行いました。
そのため、該当のトークページを開くと、下記のように表示されます。
<pre>
警告: 以前削除されたページを再作成しようとしています。
このページの編集を続行するのが適切かどうかご確認ください。 参考までに、このページの削除と移動の記録を以下に示します:
2022年2月28日 (月) 18:31 Tomzo トーク 投稿記録 がページ「トーク:高等学校国語総合/土佐日記」を削除しました (WB:SD 荒らし・落書き・ブロック中ユーザーによる編集: 投稿者:Honooo 内容: 「== もがも == もがなって,タモリさんのハナモゲラに共通するとこない? 無いか^^;;;--Honooo (トーク) 2022年2月28日 (月) 13:24 (UTC)」) (感謝)
</pre>
以上、報告。--[[利用者:すじにくシチュー|すじにくシチュー]] ([[利用者・トーク:すじにくシチュー|トーク]]) 2022年3月2日 (水) 13:51 (UTC)
:ほんとに汚いやつだなー。あらしあらしって,俺はあんたの道義的な不正行為,とみられるものを非難しているだけだよ。そもそも俺のあてずっぽうは当たってるの?違うの?それぐらいは真面目に返答しろよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年3月2日 (水) 13:55 (UTC)
:まあまだ色々腑に落ちないことはあるんだけど,それはともかく,すじにく氏は以前,俺が談話室を捏造していると書いていたよね。これどういう意味かなーってずっと考えていたんだけど,ようするにIPv6氏とFUNA氏が俺で,自作自演を疑ってるわけだ?これは断言するけど,両氏は俺ではない。現実世界での知り合いでもない。インターネット上ではやり取りあったかもしれないけど,この世界は自己同一性がめちゃくちゃだからね^^;;;詳しいことは分からないよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年3月2日 (水) 14:33 (UTC)
== <section begin="announcement-header" />理事会選挙に関するご意見募集が終了しました <section end="announcement-header" /> ==
<section begin="announcement-content" />:''[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback is now closed|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback is now closed|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Call for Feedback is now closed}}&language=&action=page&filter= {{int:please-translate}}]</div>''
[[m:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections|ご意見募集: 理事会選挙]]は終了しました。この募集は1月10日から実施され、2022年2月16日に締め切られました。この呼びかけは[[m:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Discuss Key Questions#Questions|3つの重要な質問]]に焦点を当て、[[m:Talk:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Discuss Key Questions|メタウィキ]]や提携団体との話し合い、様々なコミュニティの会話の中で幅広い議論を得ました。コミュニティも提携団体も、多くの提案を提供してくれました。[[m:Wikimedia Foundation Board of Trustees/Call for feedback: Board of Trustees elections/Reports|報告書]]はMeta-wikiに掲載されています。
いただいたご意見は、理事会および選挙管理委員会と共有され、次回の理事会選挙に向けて検討されます。その後、理事会で審議された後、発表されます。
理事会選挙プロセス改善のための「ご意見の募集」にご参加いただいた皆様、ありがとうございました。
敬具
運動戦略と組織統治<br /><section end="announcement-content" />
[[Category:CfF Board of Trustees elections]]--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月3日 (木) 06:21 (UTC)
== Wikibooks日本語版ってピラミッドだね ==
しかしすじ肉の別人格(まあこれも定かな指摘ではないけどね、あてずっぽうだよ)たちが、いくら自らの邪な心をセーブして、偏執的に記事を積み上げていっても、すじ肉みたいな汚い発想でWikiの質を充実させたいという方法の主導(現実には絶対うまくいかないけどね)があるこの場って、本当に価値があるかね?まあ価値があろうとなかろうと、もう少し俺はここに居座って、やろうと思ったことをやっていく予定だよ。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年3月4日 (金) 14:38 (UTC)
でもよく考えたら,うまくいかないって書いたけど,商業の世界ではそんなのばっかだね^^;;;。そして実際そのやり方で大儲けしている^^;;;。まあそれは仕方ないとして,せめてウィキメディアでは,別の論理でコンテンツが出来ていってほしいな。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年3月4日 (金) 14:46 (UTC)
== <section begin="announcement-header" />ユニバーサル行動規範Universal Code of Conduct 施行ガイドライン 批准投票 (終了しました)2022年3月7日から21日<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Vote|このメッセージはMeta-wikiで他の言語に翻訳されています。]]
:''<div class="plainlinks">[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Vote|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Enforcement guidelines/Vote}}&language=&action=page&filter= {{int:please-translate}}]</div>''
皆さん、こんにちは。
[[m:Special:MyLanguage/Universal Code of Conduct|ユニバーサル行動規範Universal Code of Conduct]] (UCoC) の [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines|査読後の施行ガイドライン]] 批准投票が始まりました! '''[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting| SecurePollで投票]]'''します。 2022年3月7日 に始まり、2022年3月21日に終了します。 [[m:Universal Code of Conduct/Enforcement guidelines/Voter information|投票についての詳細と有権者かどうかを確かめるページをご覧ください]]。
ユニバーサル行動規範(UCoC)は、運動全体にとって許容される行動の最低値を示します。この方針を実行させる案として、2022年1月24日に施行ガイドラインの改訂版を発表しました。UCoCプロジェクトについては[[m:Special:MyLanguage/Universal Code of Conduct/Project| UCoC プロジェクトについて]]をご覧ください。
また、Meta-wikiのトークページには、どの言語でもコメントすることができます。メールでの連絡も可能です。ucocproject[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org
今後ともよろしくお願い申し上げます。
運動戦略とガバナンス(組織統治)チーム一同
ウィキメディア財団<section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月7日 (月) 06:15 (UTC)
== <section begin="announcement-header" />ハブのイベントへにご参加ください: グローバルカンバセーション(終了しました) 2022年3月12日 UTC13:00 日本時間 22:00<section end="announcement-header" /> ==
:''[[m:Special:MyLanguage/Hubs/Global Conversations March 12, 2022/Invitation|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Hubs/Global Conversations March 12, 2022/Invitation|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Hubs/Global Conversations March 12, 2022/Invitation}}&language=&action=page&filter= {{int:please-translate}}]</div>''
<section begin="announcement-content" />こんにちは!
ウィキメディア財団の運動戦略ガバナンスチームが主催する「地域・テーマ別ハブ」イベントに是非、ご参加ください。ウィキメディア運動は、地域・テーマ別ハブのあるべき姿を模索しています。11月のワークショップは良いスタートでした([[m:Special:MyLanguage/Hubs/Documentation/27 November Workshop|レポートを読む]])が、まだ終わってはいません。
この数週間、私たちはそれぞれの状況下でハブの設立に取り組んでいるグループに対して約16回のインタビューを行いました([[m:Special:MyLanguage/Hubs/Dialogue|ハブダイアログ]]をご覧ください)。インタビューは、3月12日に行われるディスカッションの土台となる報告書に反映されました。この報告書は、3月9日に発行される予定です。
3月12日13:00~16:00(UTC)にZoomで開催されます。通訳は、フランス語、スペイン語、アラビア語、ロシア語、ポルトガル語で行われます。参加登録は3月10日までです。ご興味のある方は、ぜひご参加ください。'''[[m:Special:MyLanguage/Hubs/Global Conversations March 12, 2022|メタウィキのイベント情報]]'''
よろしくお願いします。
[[m:User:KVaidla (WMF)|Kaarel Vaidla]]<br />運動戦略
<section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月8日 (火) 11:33 (UTC)
== オンラインミーティング日本語のみ3月18日(終了しました) ==
おはようございます!こんにちは!こんばんは!
ウィキメディア財団、運動戦略と組織統治チームの柴田由美子[[https://meta.wikimedia.org/wiki/Movement_Strategy_and_Governance/Team/ja]]と申します。約三か月前から所属しております。
3月18日 金曜 22:00 - 23:00 ミーティングを行います!
カメラオフ、ミュートで構いません。録音・録画はしません。議題はありません。しいていえば、「自分の他の利用者さんってどんな人?」と思う方、ご参加ください。顔は分からなくても、声は聞こえなくても、チャットの機能で「他の利用者さん」に話しかけてみてください!
参加してくださる方はお手数をおかけしますが署名をお願いします。
:署名のページ[[https://ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85:YShibata_(WMF)/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%83%86%E3%82%A3%E3%83%9F%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/20220318]]
:後日ウィキメールでオンラインミーティングのIDを送信します。(したがってメールの受信を許可している場合に限られます)
Zoomで行いますので、お名前は署名と同じお名前をZoomの名前としてくださるようお願いします。
本来、「どなたでも」が理想ですが、「荒らし」と言われている状態になったことがあります。他の方々に迷惑をかけてしまいました。残念でならないのですが、事前に確認、という手順を取らざるをえなくなってしまいました。99.99%の利用者様にはお詫び申し上げます。
「googleからログアウトしておけば好きな名前でmeet参加できる」と教えて頂いたのですが、気がついたのがIDをとった後だったので、教えてくださった方、もうしわけありません!
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月10日 (木) 13:23 (UTC)
== ウィキメディア財団や理事会にモノ申す機会です。21日までです(終了しました) ==
新しい規範[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/ja]]の施行方法[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/ja]]について、反対/賛成の投票が行われています。
: 投票用紙は日本語です。[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/Voting/ja]]日本語で意見を記入できます。
: 投票の秘密は守られるシステムで、たとえ財団職員でも、誰が賛成/反対なのか、どんな意見を書いたのか、知ることができません。もちろん財団職員やコントラクターが翻訳するわけでは無いので、安心して、日ごろの不満など、ご記入ください。
: 編集回数などの投票資格は[[https://meta.toolforge.org/accounteligibility/62]]に利用者名を入力すると瞬時にわかります。
この施行方法について、あまりにも不完全なので問題が多々生じています。
: 井戸端[[https://ja.wikipedia.org/wiki/Wikipedia:%E4%BA%95%E6%88%B8%E7%AB%AF/subj/%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E8%A1%8C%E5%8B%95%E8%A6%8F%E7%AF%84%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88%E3%81%AF%E8%A1%B0%E9%80%80%E3%81%95%E3%81%9B%E3%82%89%E3%82%8C%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%8B%EF%BC%9F/%E6%9A%AB%E5%AE%9A%E3%81%BE%E3%81%A8%E3%82%8120220223]]
: 施行方法(日本語)のトークページ[[https://meta.wikimedia.org/wiki/Talk:Universal_Code_of_Conduct/Enforcement_guidelines/ja#%E3%83%A6%E3%83%8B%E3%83%90%E3%83%BC%E3%82%B5%E3%83%AB%E8%A1%8C%E5%8B%95%E8%A6%8F%E7%AF%84Universal_Code_of_Conduct%28UCoC%29%2F%E6%96%BD%E8%A1%8C%E3%82%AC%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3%E3%80%8C%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8B%E3%81%94%E6%84%8F%E8%A6%8B%E3%80%81%E8%B3%AA%E5%95%8F%E3%81%AA%E3%81%A9%E3%80%8D%E3%82%92%E3%81%94%E8%A8%98%E5%85%A5%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99]]
上記「井戸端」の
: アイディアの中「ウィキペディア日本語版を分かっている人を誰か送り込む。例えば、財団職員になるなど」について財団の求人情報[[https://wikimediafoundation.org/about/jobs/#section-1]]を是非ウォッチしてください。
:: スタッフは正社員のような立場です。
:: コントラクターは時給で働いています。柴田は週20時間ですが、30時間の人、40時間の人などがいます。学生さんも多いです。
: その他の中「基本的に従うしかないのでは」
:: 様々なことの決定は、職員ではなく、世界各地の利用者があらゆる機会に手をあげて、グループを作り、彼らが行います。新しい規範も、施行方法も、これから作る上位決定機関もです。どなたか決める側に参加しませんか。--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月14日 (月) 10:15 (UTC)
== <section begin="announcement-header" />リーダーシップ開発ワーキンググループ: 応募しませんか! (応募期間2022年3月14日から4月10日)<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Leadership Development Working Group/Participate/Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Leadership Development Working Group/Participate/Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Leadership Development Working Group/Participate/Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
皆さん、こんにちは。
[[m:Special:MyLanguage/Leadership Development Working Group|リーダーシップ開発ワーキンググループ]]は何をするべきかについてフィードバックを送ってくださった皆様、ありがとうございました。メタウィキに[[m:Special:MyLanguage/Leadership Development Working Group/Participate#5. Summary of Call for Feedback|フィードバックのまとめ]]が掲載されています。このフィードバックはワーキンググループで共有され、作業に反映されます。ワーキンググループへの参加は現在募集中で、2022年4月10日に締め切られます。ぜひ[[m:Special:MyLanguage/Leadership_Development_Working_Group/Purpose_and_Structure#3._How_is_the_working_group_formed_and_structured?|ワーキンググループの情報を見て]]、興味を持ちそうなコミュニティメンバーをご存知でしたら、''[[m:Special:MyLanguage/Leadership_Development_Working_Group/Participate#1._How_to_participate|興味があれば応募する]]''ように伝えてください。
よろしくお願いします。
コミュニティ開発チーム<br /><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月14日 (月) 13:22 (UTC)
== Wiki Loves Folklore 2022 ends tomorrow ==
[[File:Wiki Loves Folklore Logo.svg|right|frameless|180px]]
International photographic contest [[:c:Commons:Wiki Loves Folklore 2022| Wiki Loves Folklore 2022]] ends on 15th March 2022 23:59:59 UTC. This is the last chance of the year to upload images about local folk culture, festival, cuisine, costume, folklore etc on Wikimedia Commons. Watch out our social media handles for regular updates and declaration of Winners.
([https://www.facebook.com/WikiLovesFolklore/ Facebook] , [https://twitter.com/WikiFolklore Twitter ] , [https://www.instagram.com/wikilovesfolklore/ Instagram])
The writing competition Feminism and Folklore will run till 31st of March 2022 23:59:59 UTC. Write about your local folk tradition, women, folk festivals, folk dances, folk music, folk activities, folk games, folk cuisine, folk wear, folklore, and tradition, including ballads, folktales, fairy tales, legends, traditional song and dance, folk plays, games, seasonal events, calendar customs, folk arts, folk religion, mythology etc. on your local Wikipedia. Check if your [[:m:Feminism and Folklore 2022/Project Page|local Wikipedia is participating]]
A special competition called '''Wiki Loves Falles''' is organised in Spain and the world during 15th March 2022 till 15th April 2022 to document local folk culture and [[:en:Falles|Falles]] in Valencia, Spain. Learn more about it on [[:ca:Viquiprojecte:Falles 2022|Catalan Wikipedia project page]].
We look forward for your immense co-operation.
Thanks
Wiki Loves Folklore international Team
[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2022年3月14日 (月) 14:40 (UTC)
<!-- User:Rockpeterson@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery&oldid=22754428 のリストを使用して送信したメッセージ -->
== <section begin="announcement-header" /> コミュニティ レジリエンスとサスティナビリティ チーム主催の対話に是非ご参加ください。マギー・デニスが質問に答えます。 <section end="annoncement-header" /> ==
:''[[m:Special:MyLanguage/Leadership Development Working Group/Participate/Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/IRC office hours/Office hours 2022-03-24/Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:IRC office hours/Office hours 2022-03-24/Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
ウィキメディア財団の [[m:Community Resilience and Sustainability|コミュニティ レジリエンスとサスティナビリティ]] チームは、チームのバイス プレジデントである [[m:User:Mdennis (WMF)|マギー・デニス]]との対話の時間を行います。
話し合いの内容は、運動戦略、理事会のガバナンス、信頼と安全、ユニバーサル行動規範、コミュニティ開発、人権です。ご質問やご意見を、是非お聞かせください。事前に質問をお送りいただくことも可能です。
2022年3月24日 15:00 UTC ([https://zonestamp.toolforge.org/1648134035 日本時間 日付が24日から25日に替わる深夜0:00]).
[[m:IRC office hours/Office hours 2022-03-24|Meta-wikiで詳細]].--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月20日 (日) 09:47 (UTC)
== ウィキメディア財団や理事会にモノ申す機会、日本時間22日朝8:59までです (終了しました)==
新しい規範[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/ja]]の施行方法[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/ja]]について、反対/賛成の投票が行われています。
: 投票用紙は日本語です。[[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/Voting/ja]]日本語で意見を記入できます。
: 投票の秘密は守られるシステムで、たとえ財団職員でも、誰が賛成/反対なのか、どんな意見を書いたのか、知ることができません。もちろん財団職員やコントラクターが翻訳するわけでは無いので、'''安心して、日ごろの不満など'''、ご記入ください。
理事会メンバー(ウィキメディア財団の上部組織の構成員)が全て読みます。
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月22日 (火) 10:06 (UTC)
== <section begin="announcement-header" />ユニバーサル行動規範Universal Code of Conduct 施行ガイドライン 批准投票は締め切りとなりました。<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voter information/Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Vote/Closing message|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Enforcement guidelines/Vote/Closing message}}&language=&action=page&filter= {{int:please-translate}}]</div>''
ご挨拶申し上げます
[[m:Special:MyLanguage/Universal Code of Conduct|ユニバーサル行動規範]](UCoC)の[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines|査読後施行ガイドライン]]の批准投票は、協定世界時2022年3月21日に締め切りとなりました。{{#expr:2300}}人を超えるウィキメディアンが世界中で投票しました。運動の一環であるこのプロセスに参加した皆さん、ありがとうございました。 現在、精査グループが投票を検証しています。作業が終わるまで最大2週間ほどかかります。
投票による最終結果は、関連統計やコメントのまとめとともに、発表され次第、[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting/Results|こちら]]に掲載されます。次のステップについては [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voter information|投票インフォメーションページ]] をご覧ください。プロジェクトのトークページ [[m:Talk:Universal Code of Conduct/Enforcement guidelines|on Meta-wiki]] には、どの言語でもコメントを書くことができます。また、UCoCプロジェクトチームへの電子メールによる連絡も可能です。ucocproject[[File:At sign.svg|16x16px|link=|(_AT_)]]wikimedia.org
よろしくお願いいたします。
運動戦略と組織統治<br /><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月22日 (火) 08:23 (UTC)
== 財団がこれから行おうとしていることについて日本語Zoomミーティング4月1日金曜22:00~23:00 ==
おはようございます!こんにちは!こんばんは!
ウィキメディア財団、運動戦略と組織統治チームの柴田由美子[https://meta.wikimedia.org/wiki/Movement_Strategy_and_Governance/Team/ja]と申します。
表題のお題は以下の通りです。
1. 新しい規範の施行についての投票の報告[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Enforcement_guidelines/Voting/Results/ja]
:1) 日本語コミュニティ有権者数 = 3375 (英語、ドイツ語、フランス語についで第三位。第四位以下、ロシア語、スペイン語)
:2) 日本語コミュニティ投票者数 = 81 (世界中で2352人が投票。日本語コミュニティはこのうち3.444% 中国語も全く同じ%で、両言語7番目)
:3) 言語別投票者数降順:英語、ドイツ語、フランス語、ロシア語、ポーランド語、スペイン語、中国語と日本語が同数、イタリア語
:4) 投票した人/有権者 = 2.400% (言語別で世界最小。日本語コミュニティの次に低いのがウクライナ語)(上記リンクが存在しなかったとき、柴田は% of electorateをEligible who votedと勘違いしていました。18日ミーティングなどで5%と表してしまいました。もうしわけありません)
システム上、投票者名・賛成/反対・コメントの三つは切り離されて集計されています。
2. 今後の予定[https://meta.wikimedia.org/wiki/Movement_Strategy/Initiatives/ja]
:1) 投票結果発表(3月31日まで精査)[https://meta.wikimedia.org/wiki/Universal_Code_of_Conduct/Project/ja]
:2) 理事会(財団の上位組織)選挙 (今年の夏に投票 詳細は来月末?に理事会が発表)
:3) 運動憲章 Movement Charter[https://meta.wikimedia.org/wiki/Movement_Charter/ja](上記の「新しい規範」は安全と包括性を確保するため、「運動憲章」は意思決定に公平さを確保するため )
:4) ハブ Hubs [https://meta.wikimedia.org/wiki/Hubs/ja] (意思決定に公平さを確保するため )
:5) リーダーシップ開発ワーキンググループ[https://meta.wikimedia.org/wiki/Leadership_Development_Working_Group/ja#3._Timeline]
:6) ウィキマニア 8月11日 -14日 「primarily virtual, with support for local gatherings and events where possible」
3. 助成金 Grants[https://meta.wikimedia.org/wiki/Grants:Start/ja]
カメラオフ、ミュートで構いません。録音・録画はしません。
参加してくださる方はお手数をおかけしますが署名をお願いいたします。
:署名のページ[[https://ja.wikipedia.org/wiki/%E5%88%A9%E7%94%A8%E8%80%85:YShibata_(WMF)/UCoC%E3%83%9F%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0/20220401]]
:後日ウィキメールでオンラインミーティングのIDを送信します。(したがってメールの受信を許可している場合に限られます)
Zoomで行いますので、お名前は署名と同じお名前をZoomの名前としてくださるようお願いいたします。
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月23日 (水) 07:42 (UTC)
===上記「今後の予定」が決まった過程===
[[metawiki:Strategy/Wikimedia_movement/2018-20/Reports/Movement_Strategy_Playbook/ja|利用者さんたちの話し合いの過程はこちら]]--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月25日 (金) 12:36 (UTC)
===新年度の計画===
ウィキメディア財団の会計年度は7月に始まり、6月に終わります。
現在、新年度の計画を立てています。以下は次期計画の基礎です。
* [[foundationsite:about/financial-reports/#a1-2021-2022|ファイナンシャル報告]](2005年~2021年)
* [[metawiki:Wikimedia_Foundation_Medium-term_plan_2019/Annual_Plan_2021-2022/ja|年次計画2021-2022]]
* [[c:File:Wikimedia_Foundation's_2021-2022_Annual_Plan_Overview.pdf|英語pdf]]
* [[metawiki:Wikimedia_Foundation_Medium-term_plan_2019/ja|2019年中期事業計画]]
おまけ
* [https://www.submarinecablemap.com/landing-point/marseille-france 世界中の海底ケーブル地図](テックチームが上層部への説明に使用したそうです)
* [[foundationsite:about/jobs/|求人情報]]「急募3年間オーストラリアに住む人renewable contract with a good salary and other incentives」
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月26日 (土) 08:23 (UTC)
== <section begin="announcement-header" />リーダーシップ開発ワーキンググループ: 応募期間中です。2022年4月10日まで。日本語コミュニティから複数人数応募であれば日本語だけのグループになることもできます。<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Leadership Development Working Group/Participate/Announcement/Reminder|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Leadership Development Working Group/Participate/Announcement/Reminder|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Leadership Development Working Group/Participate/Announcement/Reminder}}&language=&action=page&filter= {{int:please-translate}}]</div>''
皆さん、こんにちは。
ウィキメディア財団コミュニティ開発チームは、コミュニティ主導の[[m:Special:MyLanguage/Leadership Development Working Group|リーダーシップ開発ワーキンググループ]]の設立を支援しています。このワーキンググループの目的は、各コミュニティを活発にすることです。2022年2月にフィードバックが集められ、[[m:Special:MyLanguage/Leadership Development Working Group/Participate#5. Summary of Call for Feedback|フィードバックのまとめ]]がMeta-wikiに掲載されています。ワーキンググループへの参加募集は、2022年4月10日に締め切られます。ぜひ[[m:Special:MyLanguage/Leadership Development Working Group/Purpose and Structure#3. How is the working group formed and structured?|ワーキンググループの情報を確認]]して、興味を持ちそうなコミュニティメンバーに伝えてください。もちろん、[[m:Special:MyLanguage/Leadership Development Working Group/Participate#1. How to participate|興味のある方は応募]]してください。各言語ごとに活動を行うという計画になりました。編集を教えていらっしゃる方々、新しいことを考えていらっしゃる方々、是非、ご応募ください。
よろしくお願いします。
コミュニティ開発チームより<br/><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年3月30日 (水) 06:17 (UTC)
== <section begin="announcement-header />ユニバーサル行動規範Universal Code of Conduct(UCoC)施行ガイドライン批准投票結果<section end="announcement-header" /> ==
<section begin="announcement-content" />
: ''[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/UCoC Phase 2 Ratification Results Announcement|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
: ''<div class="plainlinks">[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/UCoC Phase 2 Ratification Results Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Universal Code of Conduct/Enforcement guidelines/UCoC Phase 2 Ratification Results Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
こんにちは、
先日行われた [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines|Enforcement Guidelines for the Universal Code of Conduct (UCoC)]] のコミュニティ投票に参加した2,300人以上のウィキメディアンに感謝いたします。 ボランティアである精査グループが投票の正確性について検証を終えました。[[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting/Results|''最終結果はMeta-wikiで入手できます'']]。簡単な要約は以下の通りです。
* 58.6% Yes, 41.4% No
* 貢献者の方々は、128 home wikis から投票しました
* 30を超える言語で行われました
この結果が意味していること、それは理事会がこの文書を見直す可能性に十分な支持があるということです。施行ガイドラインが自動的に完成したというわけではないということです。
したがってプロジェクトチームは、投票プロセスで提供されたコメントを照合・要約し、メタウィキ上で公開します。施行ガイドラインは、理事会に提出され、その審議に付されます。理事会は、投票時に寄せられた意見を検討し、ガイドラインにさらなる改良が必要な点を検討します。これらのコメントと、メタウィキや他のコミュニティとの対話を通じて提供された意見はガイドラインを改訂するための出発点となります。
理事会が批准に踏み切った場合、UCoCプロジェクトチームは、ガイドラインの具体的な提案の支援を開始する予定です。その中には、コミュニティメンバーと共にU4C構築委員会を立ち上げること、研修に関する協議を開始すること、報告システムの改善に関する話し合いをサポートすることなどが含まれます。まだまだやるべきことはたくさんありますが、次のフェーズに進むことができそうです。
この方針と施行ガイドラインがコミュニティのためにどのように機能するかを考えるために、多くの人々が参加しました。この一年間さまざまな形でプロジェクトに関わったウィキメディアンが提示した、ガイドラインに概説された強力な提案の詳細について、引き続き共同作業を行います。
改めて、本施行ガイドラインの投票にご参加いただいた皆様に感謝申し上げます。
詳細は [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting/Results|the Results page]]をご覧ください。
これからもよろしくお願いいたします、
[[User:SNg (WMF)]]
UCoC プロジェクトチームを代表してStella Ng
Senior Manager, Trust and Safety Policy<br/><section end="announcement content" />
翻訳と投稿--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月6日 (水) 07:11 (UTC)
== [[User:LINE VITMAX]]という方について ==
あのー,つい最近,この方がブロックされて,ブックスで2本,バーシティで一本この方の不適切投稿を目にしたのですが,まあバーシティのほうはともかく,こっちの方では何故一本しか管理者の方は差し戻ししないのでしょうか^^;;;?。私はこの投稿を最初に見た時,ゲームの方ね,もう面倒だし面白いから,このままにしておこうかなんて思ったんですが^^;;;,でも管理者の方は立場が違いますよね?まあその意図も分からないではないけど^^;;;。でも私も生活がいろいろあって,そんなにこのサイトにがっぷり関わってはいられないので,しばらくはここ,差し戻しとか更新しませんよ。だから対策考えるとしたら,次に本文直してアップする時になりますね。ではでは,以上業務連絡でした。(^^)/--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年4月6日 (水) 16:54 (UTC)
あっそうだ,よく考えたら,つい最近すじにく氏の動向に変化有ったので,ゲームはしばらく休んで経済行こうかなーとも思っていたんですよ。どっちにしろ,継続して2分野にしかかかわらない,2ページですね,メインとしてはですが…。だから方針変えて,ゲームの方は差し戻ししておきます。ではでは。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年4月6日 (水) 17:01 (UTC)
== <section begin="announcement-header" />運動戦略と組織統治ニュース – 記事 6<section end="announcement-header"/> ==
<section begin="ucoc-newsletter"/>
<div style = "line-height: 1.2">
<span style="font-size:200%;">'''運動戦略と組織統治ニュース'''</span><br>
<span style="font-size:120%; color:#404040;">'''2022年4月 記事6'''</span><span style="font-size:120%; float:right;">[[m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6|'''ニュースレター全文はこちら''']]</span>
----
運動戦略と組織統治ニュース第6号へようこそ。この刷新されたニュースレターでは、運動憲章、輸入、運動戦略を実施するための助成金、理事会選挙、その他MSGに関連するニュースやイベントを配信しています。
このニュースレターは四半期ごとに配信され、より頻度の高いアップデートも毎週配信される予定です。本ニュースレターの配信を希望される方は、[[m:Special:MyLanguage/Global message delivery/Targets/MSG Newsletter Subscription|こちら]]にご登録下さい。
</div><div style="margin-top:3px; padding:10px 10px 10px 20px; background:#fffff; border:2px solid #808080; border-radius:4px; font-size:100%;">
*'''リーダーシップ開発 -''' ワーキンググループが結成されます! 2022年4月10日に募集を締め切った「リーダーシップ開発ワーキンググループ」に、最大12名のコミュニティメンバーが参加することが決定しました。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A1|続きを読む]])
*'''ユニバーサル行動規範の批准結果発表 -''' 3月7日から21日にかけて、SecurePollによるUCoCの施行に関するグローバルな意思決定プロセスが行われました。少なくとも128のホームプロジェクトから2,300人以上の有権者が意見・コメントを寄せました。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A2|続きを読む]])
*'''ハブをめぐる運動論議-''' 3月12日(土)、地域・テーマ別ハブに関するグローバル対話イベントが開催され、運動全体から84名の多様なウィキメディアンが参加しました。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A3|続きを読む]])
*'''運動戦略のための助成金、引き続き募集中! -''''' 今年に入ってから、6件、総額約8万ドルの提案が承認されています。運動戦略プロジェクトのアイデアはありませんか?声をかけてください。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A4|続きを読む]])
*運動憲章起草委員会が発足しました。-''' 2021年10月に選出された15名の委員からなる委員会は、その活動に不可欠な価値観や方法について合意し、運動憲章草案の概要作成に着手しています。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A5|続きを読む]])
*'''週刊運動戦略のご紹介 -'''。投稿と購読をお願いします - MSGチームは、メタウィキ上の様々な運動戦略ページに接続された更新ポータルを立ち上げたところです。購読していただくと、現在進行中の様々なプロジェクトに関する最新のニュースを入手することができます。([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A6|続きを読む]])
*'''Diff Blogs -'''Wikimedia DiffでUCoCに関する最新の出版物をチェックしてください。 ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/6#A7|続きを読む]])
</div><section end="ucoc-newsletter"/>読んでくださってありがとうございます--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月13日 (水) 06:44 (UTC)
== <section begin="announcement-header" />ウィキメディア財団の年次計画をめぐり、マリアナ・イスカンダーと話しませんか<section end="announcement-header" /> ==
<section begin="announcement-content" />
:[[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2022-2023/Conversations/Announcement|''このメッセージはメタウィキ(Meta-wiki)で他の言語に翻訳されています。'']]
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2022-2023/Conversations/Announcement|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Annual Plan/2022-2023/Conversations/Announcement}}&language=&action=page&filter= {{int:please-translate}}]</div>''
こんにちは
[[m:Special:MyLanguage/Movement Communications|運動意思疎通]]チーム<sup>※1</sup>と[[m:Special:MyLanguage/Movement Strategy and Governance|運動戦略・組織統治]]チーム<sup>※2</sup>では、'''[[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2022-2023/draft|2022-23年ウィキメディア財団年次計画]]'''すなわちウィキメディア財団のPOR<sup>※3</sup>(訳注:利害関係者の同意が必要な活動計画)をめぐり、皆さんと協議したいと考えます。(※:1=Movement Communications。2=Movement Strategy and Governance。3=plan of record。)
これらの対話は、[[m:User:MIskander-WMF|マリアナ・イスカンダー]](Maryana Iskander)が進めてきた[[m:Special:MyLanguage/Wikimedia Foundation Chief Executive Officer/Maryana’s Listening Tour|ウィキメディア財団最高経営責任者の聴き取りツアー]]の延長線上にあります。
対話では次の質問を取り上げます。
* [[m:Special:MyLanguage/Wikimedia 2030|2030年ウィキメディア運動戦略]]では、方向性として「サービスとしての知識」ならびに「知識の公平さ」を提唱しています。財団はこれら2つのゴールに従って計画を立てようとしています。財団がその業務において、これらをどのように適合させるべきでしょうか?
* 財団は地域レベルでの働きかけにもっと優れた方法がないか探し続けています。たとえば助成金、新しい機能、コミュニティとの対話などの領域で地域単位に注目ポイントを増やしてきました。うまくいっているのはどれでしょう? 改善できるとしたら、何かですか?
* ウィキメディアの運動戦略過程にはどなたでも貢献ができます。皆さんの活動や発想、要望、実地に体験から学んだことを出し合いませんか。運動戦略の活動を進めているボランティアや提携団体の皆さんを、どうやったらウィキメデア財団はもっとうまくサポートできそうでしょうか?
日時は [[m:Special:MyLanguage/Wikimedia Foundation Annual Plan/2022-2023/draft/Your Input|'''Meta-wiki''']]でご覧ください。
情報は複数言語で提供します。どの会議もどなたでも参加できます。中には逐次通訳を用意する会議もあります。
どうぞよろしくお願いいたします。<br /><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月15日 (金) 08:44 (UTC)
==財団の新年度計画についてトップと話しませんか。4月24日日曜16:00(プロの同時通訳が付く予定です)==
直前の節をご覧いただければありがたいです。日本語コミュニティのために力をおかしください。
[[metawiki:Wikimedia_Foundation_Annual_Plan/2022-2023/draft/Goals/ja|「多言語にわたる740以上のウィキメディア・プロジェクトが増え続ける中、財団の現在の支援にどのように優先順位をつけるべきか」]]<blockquote>上記リンクの中には「 偽情報とどう戦うか」「世界のさまざまな地域の~中略~耳を傾けることから1年をスタートさせます」「優先順位の議論」「財団全体での翻訳・通訳サービス」「今後数ヶ月の間に」と書かれています。</blockquote>
[[metawiki:Wikimedia_Foundation_Chief_Executive_Officer/Maryana’s_Listening_Tour/ja|トップ]]は約六カ月前に就任しました。「[[metawiki:Wikimedia_Foundation_Chief_Executive_Officer/Maryana’s_Listening_Tour/External_Trends/ja|人々が検索するものが変わってきています。利用者は、検索クエリに対する答えをリッチコンテンツ(画像、ビデオ、オーディオ形式など)に求めるようになってきています。]]」<blockquote>上記リンクの中で、以下の内容などについて'''ご意見を記入'''できます。
「従来のテキスト検索によるトラフィックのほとんどに依存しているプラットフォームとして、検索行動のこれらのシフトは、私たちの現在および将来にとって何を意味するのでしょうか?」
「自分の言語には無いコンテンツを検索するユーザーは、機械翻訳されたウェブサイトコンテンツ(ウィキペディアを含む)を目にする機会が増えています」
「ウィキメディアのプロジェクトは、どのようにすれば関連するローカル言語の知識のギャップを確実に埋めることができるでしょうか。 他のプラットフォームとは異なる、私たちのコミュニティ主導のコンテンツ作成モデルについて、どのように認識を高め続けることができるでしょうか」
「偽情報と誤報が増加」
「Google と Facebook は、ウィキペディアのホバーカードを使用して、誤解を招く可能性のある情報に対してより多くのコンテキストを提供」
「誤報や偽情報がウィキメディア・プロジェクトや他のプラットフォーム上の情報の質を脅かしている中、より広い知識のエコシステムにおける偽情報への対処において、ウィキメディア運動が果たすべき役割があるとすれば、それは何でしょうか」</blockquote>
年次計画についてのご意見はこちらにお願いいたします[https://meta.wikimedia.org/wiki/Talk:Wikimedia_Foundation_Annual_Plan/2022-2023/draft]
'''参加方法''' 24日については、事前の登録は不要です。下にある全日程のリンクをクリックし、●右をクリックするとズームにつながります。--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月18日 (月) 08:39 (UTC)
[[metawiki:Wikimedia_Foundation_Annual_Plan/2022-2023/draft/Your_Input/ja|4月24日を含む全日程]]<blockquote>
21日の理事との話し合いについて、日本語コミュニティの一人から通訳の依頼が担当者にあったそうです。その担当者から、「YShibata ではないですね」という確認がありました。私は内部でいろいろな機会をとらえては日本語のチャンスを頼んできましたが、他の多くの言語でも同様です。そのため、利用者の方々からの働きかけが最も効果的です。私ではないと分かったので通訳派遣会社に依頼をするそうです。
日本語コミュニティ利用者の方々の働きかけの大きさが発揮されたのがユニバーサル行動規範の施行ガイドライン投票です。どなたが何を書いたのかは誰にもわかりませんが、日本語コミュニティから81人が投票しました。全体として賛成が反対を上回った(わずか)にもかかわらず、文言修正(コメントを参照しながら)になりました。
</blockquote>[[metawiki:Wikimedia_Foundation_Chief_Executive_Officer/Maryana’s_Listening_Tour/Overview/ja|すべてのメッセージをMaryanaに伝えます(必要に応じて翻訳もします)]]。(お手数をおかけしますがスクロールダウンをして真ん中あたりです)
[[metawiki:Wikimedia_Foundation_Chief_Executive_Officer/Maryana’s_Listening_Tour/Overview/ja|もし、トップのMaryanaをイベントに招待したい場合]]は、movementcomms@wikimedia.orgでご連絡ください。なお、Maryanaはできるだけ多くの人に会うようにしていますが、すべてのイベントに参加できない可能性があります。
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月15日 (金) 08:45 (UTC)
== <section begin="announcement-header" />次のステップ: ユニバーサル行動規範(Universal Code of Conduct略UCoC)およびUCoC施行ガイドライン<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation Board noticeboard/April 2022 - Board of Trustees on Next steps: Universal Code of Conduct (UCoC) and UCoC Enforcement Guidelines|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation Board noticeboard/April 2022 - Board of Trustees on Next steps: Universal Code of Conduct (UCoC) and UCoC Enforcement Guidelines}}&language=&action=page&filter= {{int:please-translate}}]</div>''
ウィキメディア財団理事会のコミュニティアフェアーズ委員会は、先日行われた「ユニバーサル行動規範(UCoC)」の施行ガイドラインについてコミュニティの投票に参加された皆様に感謝いたします。
ボランティア精査班が投票の正確性の検証を終えました。総投票数は2,283票でした。2,283票のうち、1,338人(58.6%)が施行ガイドラインに賛成、945人(41.4%)が反対です。また、658名の方からコメントをいただき、そのうち77%が英語でのコメントでした。
敵対的で有害な行為を止めさせるため、また、そのような行為の標的となった人々を支援し、ウィキメディアのプロジェクトにおいて善意の人々が生産的になるよう、安全で歓迎すべき文化を創造するためにコミュニティメンバーが示した情熱と献身に感謝いたします。
寄せられたコメントには、ガイドラインが未完成な段階であるとも述べられています。理事会が検討するのに必要な支持率に達しましたが、コミュニティの懸念に対応するため、さらなる編集を開始することが望ましいと思われる場合には、賛否にかかわらず、修正が必要だと思われる要素とその理由についてご意見を提供するよう、有権者に呼び掛けていました。
その結果、コミュニティアフェアーズ委員会として、財団に草案作成委員会を再開し、先日の投票で寄せられたコミュニティの意見をもとに、施行ガイドラインを改良するため、再度コミュニティ参加を行うよう要請することを決定しました。
ご意見は4つのセクションに分類しています。
# 研修の種類、目的、適用範囲を明確にすること。
# 専門家でない人が翻訳や理解をしやすいように、言葉を単純化すること。
# affirmation(訳注:日本語コミュニティでも多くのご意見が出ました)という概念について、その是非を含めて探求すること。
# プライバシー/被害者保護と聞く権利の相反する役割を見直すこと。
対話の中で、また特に施行ガイドラインの草案が進化する中で、他の問題が浮上するかもしれませんが、これらを有権者が懸念する主要な分野と見なし、これらの問題の検討を促進するよう、委員会はスタッフに求めています。さらなる関与の後、財団は、改訂された施行を評価するためにコミュニティ投票を再度行い、新しい文書が公式に批准する準備ができているかどうかを確認する必要があります。
さらに、ユニバーサル行動規範方針(Policy)の注釈(note)3.1に対する懸念も認識しています。年末に予定されている方針全体の見直しを待たずに、方針が安全で包括的なコミュニティを支援するという目的を満たすよう、文言の見直しを促進するよう委員会は財団に指示しています。
参加された皆様には、このような重要かつ困難な課題について考えていただき、運動全体でより良い協力関係を築くために貢献していただいたことに、改めて感謝いたします。<br /><section end="announcement-content" />
これからもよろしくお願いいたします
Rosie
Rosie Stephenson-Goodknight (she/her) コミュニティ事案委員会長代理 ウィキメディア財団 理事会
(当初、上記署名が翻訳フォーマットに無かったため混乱させてしまったことをお詫び申し上げます。)訳・掲載[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月18日 (月) 23:54 (UTC)
== <section begin="announcement-header" />2022年理事会選挙候補者の募集<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Call for Candidates/Short|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Call for Candidates/Short|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2022/Announcement/Call for Candidates/Short}}&language=&action=page&filter= {{int:please-translate}}]</div>''
理事会は2022年理事選挙の候補者を募集しています。[[m:Special:MyLanguage/Wikimedia_Foundation_elections/2022/Announcement/Call_for_Candidates|'''続きはメタウィキをご参照ください''']]。
[[m:Special:MyLanguage/Wikimedia Foundation elections/2022|2022年理事会選挙]]はこちら! 理事への立候補をご検討ください。
ウィキメディア財団理事会は、ウィキメディア財団の運営を監督します。コミュニティおよび提携団体から選ばれた理事と、理事会が任命した理事が理事会を構成します。各理事の任期は3年です。ウィキメディアコミュニティには、投票によりコミュニティ兼提携団体出身の理事を選ぶ機会があります。
ウィキメディアコミュニティは、2022年に理事会の2つの議席を埋めるために投票を行います。チームとしての理事会の代表性、多様性、専門性を向上させるチャンスです。
どのような人が候補になるのでしょうか? ご自身はいかがでしょうか? 詳しくは[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Apply to be a Candidate|立候補のページ]]でご確認ください。
ご協力ありがとうございます。
選挙管理委員会と理事会に代わり、運動戦略と組織統治チーム一同<br /><section end="announcement-content" />
[[Category:Wikimedia Foundation Board of Trustees]]
[[Category:Wikimedia Foundation elections 2022]]
--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年4月26日 (火) 14:30 (UTC)
== Coming soon: Improvements for templates ==
<div class="plainlinks mw-content-ltr" lang="ja" dir="ltr">
<!--T:11-->
[[File:Overview of changes in the VisualEditor template dialog by WMDE Technical Wishes.webm|thumb|テンプレートのダイアログに根本的な変更を施します。]]
こんにちは、まもなく皆さんのウィキに以下のテンプレート系の変更を展開する予定ですのでお知らせします。
[[mw:Special:MyLanguage/Help:VisualEditor/User guide#Editing templates|ビジュアルエディターには'''テンプレートのダイアログ ''']](VisualEditor)を、[[mw:Special:MyLanguage/2017 wikitext editor|2017年ウィキ文エディター]](ベータ版)には'''根本からの改善を'''それぞれご用意しています。
これはテンプレートに書き込むべきこと、テンプレートの各部の読み方やそれぞれの変数の追加方法<!-- how to navigate the template, and how to add parameters. -->について、利用者の皆さんの理解を助けるものです。
* それぞれのリンクは[[metawiki:WMDE Technical Wishes/VisualEditor template dialog improvements|プロジェクトページ]]、[[metawiki:Talk:WMDE Technical Wishes/VisualEditor template dialog improvements|トークページ]]をご参照ください。
'''構文強調表示'''機能([[mw:Special:MyLanguage/Extension:CodeMirror|CodeMirror]] 拡張機能) では、利用者設定にて'''色覚にやさしい'''配色を選べるようになりました。
* リンクはそれぞれ[[metawiki:WMDE Technical Wishes/Improved Color Scheme of Syntax Highlighting#Color-blind_mode|プロジェクトページ]]、[[metawiki:Talk:WMDE Technical Wishes/Improved Color Scheme of Syntax Highlighting|トークページ]]をご参照ください。
展開は5月10日を予定しています。これは[[m:WMDE Technical Wishes|WMDE 技術要望]](ウィキメディア・ドイツ協会)発信では「[[m:WMDE Technical Wishes/Templates|テンプレート]]」系改善の一連の最後になります。
ぜひ皆さんからのフィードバックをトークページにてお聞かせください。
</div> -- [[m:User:Johanna Strodt (WMDE)|Johanna Strodt (WMDE)]] 2022年4月29日 (金) 11:13 (UTC)
<!-- User:Johanna Strodt (WMDE)@metawiki が https://meta.wikimedia.org/w/index.php?title=WMDE_Technical_Wishes/Technical_Wishes_News_list_all_village_pumps&oldid=23222263 のリストを使用して送信したメッセージ -->
== 編集機能ニュース 2022年第1号 ==
<section begin="message"/><i>[[metawiki:VisualEditor/Newsletter/2022/April|他の言語で読む]] • [[m:VisualEditor/Newsletter|この多言語版ニュースレターの購読者名簿]]</i>
[[File:Junior Contributor New Topic Tool Completion Rate.png|thumb|編集初学者はこの新しいツールを使ったほうが編集の失敗が減りました。]]
[[mw:Special:MyLanguage/Help:DiscussionTools#New discussion tool|新しい主題ツール]]<!-- New topic tool -->を使うと、編集者が議論のページに新しい <nowiki>==節(見出し)==</nowiki> を作りやすくなります。 この新しいツールを使うと、編集初学者の編集が保持されやすくなります。 <span class="mw-translate-fuzzy">状況報告は[[mw:Talk pages project/New topic#21 April 2022|こちら]]にあります。</span> 間もなく編集チームはこの試験に参加する20個のウィキペディアの編集者全員にこのことを要請します。 無効にするには[[Special:Preferences#mw-prefsection-editing-discussion|個人設定]]で指定してください。<section end="message"/>
[[User:Whatamidoing (WMF)|Whatamidoing (WMF)]] 2022年5月2日 (月) 18:55 (UTC)
<!-- User:Quiddity (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Global_message_delivery/Targets/VisualEditor/Newsletter/Wikis_with_VE&oldid=22019984 のリストを使用して送信したメッセージ -->
== <section begin="announcement-header" />ウィキメディア財団理事会2022年選挙 - ボランティア募集<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Movement Strategy and Governance/Election Volunteers/2022/Call for Election Volunteers|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Movement Strategy and Governance/Election Volunteers/2022/Call for Election Volunteers|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Movement Strategy and Governance/Election Volunteers/2022/Call for Election Volunteers}}&language=&action=page&filter= {{int:please-translate}}]</div>''
運動戦略と組織統治チームでは、理事会選挙の選挙ボランティアとしてローカルで活動していただける方々を募集しています。
選挙ボランティアのアイデアは、2021年ウィキメディア理事会選挙で出てきました。効果がありました。選挙ボランティアのおかげで2017年と比較し、投票者は1,753人増加しました。 全体の投票率は1.1ポイント増の10.13%でした。214のウィキが選挙に反映されました。
2017年に参加しなかった合計74のウィキから、2021年の選挙では投票者があらわれました。今年も投票者を増やすために力を貸していただけませんか?
選挙ボランティアは、以下のような分野で活躍します。
* 短いメッセージを翻訳し、ご自身のコミュニティで進行中の選挙プロセスを告知。
* 任意。ご自身のコミュニティでのコメントや質問のモニター
ボランティアは、
* 対話やイベントの際に、フレンドリーな空間ポリシーを維持させます。
* ガイドラインや投票情報を中立的な立場でコミュニティーに提示します。
選挙ボランティアになり、ご自身のコミュニティが投票で反映されるようにしませんか?[[m:Special:MyLanguage/Movement Strategy and Governance/Election Volunteers/About|こちら]] に登録して最新情報を受け取りましょう。翻訳に関する質問は、[[m:Special:MyLanguage/Talk:Movement Strategy and Governance/Election Volunteers/About|トークページ]]をご利用ください。<br /><section end="announcement-content" />--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年5月6日 (金) 10:48 (UTC)
== ウィキブックスの整理 ==
もう実行されているものもあるかもしれませんが
# <code><nowiki>{{UserAN}}</nowiki></code>テンプレートの作成
# CU、OS、その他管理者の下位権限(巻き戻し者,削除者、インターフェース管理者など)の方針の明記
# 依頼関連の整備
# [[Wikibooks:コメント依頼]]の作成
最後に,これが1番の難題ですが
: 5. 利用者の増加
1については、ブロックを実行しやすくするためです。[[w:WP:AN/I]]で採用されているものは,「ブロック」リンクがついています。
2は、ソックパペットの確認、機密情報の秘匿化などを実施するためです。Wikipediaに準じたものでいいと思います。下位権限などは必要であればといったところでしょうか。
3は投稿ブロック依頼,削除依頼などですね。依頼ごとに個別のサブページを作り,合意が形成されればその通りに対処を行う。削除依頼などには合意形成がなされているのに未対処という案件も少々あります。また、サブページを作れば依頼の可読性がアップします。投稿ブロック依頼などにはサブページを作ったり作らなかったりとまちまちです。
4はコメント依頼の必要性です。特に利用者の行為については,会話ページ,ノートページなどで議論するわけにも行きません。ですが先述の通り,コメント依頼は赤リンクです。合意形成,またトラブルの円滑な処理、[[w:Wikipedia:論争の解決]]の観点から見てもコメント依頼は必要であると感じます。
5番は難しいですが,まあ今いる我々がプロジェクトをでかくしていけば自然に参加する人も増えてくると思います。--[[利用者:スタリオン箕浦|スタリオン箕浦]] <small>([[利用者・トーク:スタリオン箕浦|会話]]/[[特別:投稿記録/スタリオン箕浦|投稿記録]]/[[特別:Log/スタリオン箕浦|ログ]]/[[特別:メール送信/スタリオン箕浦|メール]])</small> 2022年5月8日 (日) 04:26 (UTC)
:こんばんはー。私はルール関係の整備にはあまり興味なくて,むしろあいまいなほうが書きやすいなーなどとも思っています。参加人員はどうですかね。むかしはここ,もう少し盛況だったんですが,様々な理由で活動休止された方が多くなってしまいましたね…。ところでサイト形式の整備はいいんですが,例えば私と先輩のブロック依頼なんて,構造が複雑になってしまって,あまり良くない状態ですよ…。そうですね,目指している版削除が仮になされれば,少しすっきり纏められるでしょうけどね…。まあ仕方ないですね,どっちにしろブロック依頼もコメント依頼もあまりこの先進展有るようにも見えませんしね…--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年5月8日 (日) 09:36 (UTC)
::(返信) 利用者が少ないゆえに綿密な対応ができないのが1番の課題ですね。--[[利用者:スタリオン箕浦|スタリオン箕浦]] <small>([[利用者・トーク:スタリオン箕浦|会話]]/[[特別:投稿記録/スタリオン箕浦|投稿記録]]/[[特別:Log/スタリオン箕浦|ログ]]/[[特別:メール送信/スタリオン箕浦|メール]])</small> 2022年5月8日 (日) 10:13 (UTC)
:::綿密な対応ってそんな重要?--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年5月8日 (日) 10:18 (UTC)
::::(返信)利用者が多ければその分視点が広がるので,緻密な対応が可能でしょう。対応がきめ細かければ,トラブルも円滑に処理できるのではないでしょうか。--[[利用者:スタリオン箕浦|スタリオン箕浦]] <small>([[利用者・トーク:スタリオン箕浦|会話]]/[[特別:投稿記録/スタリオン箕浦|投稿記録]]/[[特別:Log/スタリオン箕浦|ログ]]/[[特別:メール送信/スタリオン箕浦|メール]])</small> 2022年5月8日 (日) 13:22 (UTC)
:::::うーん,そう,かも,知れないですね…。ただ私の感覚では人数が多かろうが少なかろうが,駄目なものは駄目,通るものは通る。トラブルから完全に逃れて生きる事も出来ないしね…。--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年5月8日 (日) 16:15 (UTC)
:一応,コメント依頼は私がWikipediaを参考に作ります。1週間待って異論が出なければ実行に移ります。--[[利用者:スタリオン箕浦|スタリオン箕浦]] <span style="font-family:Times"><small>([[利用者・トーク:スタリオン箕浦|会話]]/[[特別:投稿記録/スタリオン箕浦|投稿記録]]/[[特別:Log/スタリオン箕浦|ログ]]/[[特別:メール送信/スタリオン箕浦|メール]])</small></span> 2022年5月9日 (月) 23:33 (UTC)
::WikibooksよりはWikipediaの方が盛況ですしね、、、、--[[利用者:ドラみそブックス|ドラみそブックス]] ([[利用者・トーク:ドラみそブックス|トーク]]) 2022年5月10日 (火) 01:26 (UTC)
::{{コメント2|コメント}} 同じ提案は過去にもなされたことがありますが、結局合意には至っておりません。スタリオン箕浦さんも「1週間待って」ではなく過去の議論も参考にし、まさに「合意形成」がされてから実行に移った方がよいと思います。--[[利用者:Shokupan|Shokupan]] ([[利用者・トーク:Shokupan|トーク]]) 2022年5月15日 (日) 10:19 (UTC)
:::{{コメント2|返信}} [[User:Shokupan|Shokupan]]様、過去の提案がいくら探しても見つかりません。--[[利用者:スタリオン箕浦|スタリオン箕浦]] <span style="font-family:Times"><small>([[利用者・トーク:スタリオン箕浦|会話]]/[[特別:投稿記録/スタリオン箕浦|投稿記録]]/[[特別:Log/スタリオン箕浦|ログ]]/[[特別:利用者権限/スタリオン箕浦|権限]]/[[特別:メール送信/スタリオン箕浦|メール]])</small></span> 2022年7月18日 (月) 02:59 (UTC)
::::{{コメント2|返信}} 談話室での2019年3月3日 (日) 14:40 (UTC)付けの提案です。また、そこに書かれている意見についてもスタリオン箕浦さんにはよくお読みいただきたいと思います。--[[利用者:Shokupan|Shokupan]] ([[利用者・トーク:Shokupan|トーク]]) 2022年7月24日 (日) 05:50 (UTC)
== 資金の分配を決める委員を募集中(日本語コミュニティを含むアジア太平洋地域を担当) ==
エディタソンなどを行う際の交通費などへの助成等、決定権限は、[[metawiki:Grants:Committees/ja|それぞれの地域の地域委員会]]に属します。日本語コミュニティからの申請を[[metawiki:Grants:Regions/ESEAP/ja|審査する委員(利用者)一覧]] は現在、5人ですが新たな方を募集中です。
交通費などの他、日本語コミュニティからの委員がいれば重要な書類・ミーティングでの通訳について翻訳会社・通訳会社へとの契約を確実にすることができます。
担当者が「ウィキメディア運動の意義を理解する方、文化的・言語的・性的多様性の観点から募集しています 」とのことで、多様性の点で、日本語コミュニティの参加が無いことを心配しています。費用の請求フォーマット、公式ウェブサイト、年度計画、収支報告書など、重要な文書に日本語版がありません。柴田は財団内部で大勢の人に掛け合っていますが、お金の使い方など、重要なことは利用者による委員会が決めます。財団内部の人間ではありません。
興味を持ってくださる方は、ESEAP シニア プログラム オフィサーのジャクリーン・チェン(上記担当者、二番目のリンクに写真が載っています); jchen@wikimedia.orgにご連絡ください。
締め切りは 31 May 2022年5月31日です。--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年5月10日 (火) 15:29 (UTC)
== 移動依頼 ==
どなたか記事[[エスニックジョーク]]を[[ジョーク集/エスニックジョーク]]へ移動お願いします。--[[特別:投稿記録/240F:7A:EA2E:1:7865:36BF:53E8:693E|240F:7A:EA2E:1:7865:36BF:53E8:693E]] 2022年5月15日 (日) 10:36 (UTC)
:基本的には、合意の必要のない整備は、気づいた人が自分でやるのが基本です。各種ヘルプを参照すれば、たいていの人は大抵のことが出来る。それでもできないのであれば仕方ないですが…--[[利用者:Honooo|Honooo]] ([[利用者・トーク:Honooo|トーク]]) 2022年5月19日 (木) 15:13 (UTC)
:私が作った記事なので、移動したいですが、--[[利用者:ドラみそ|ドラみそ]] ([[利用者・トーク:ドラみそ|トーク]]) 2022年6月24日 (金) 10:13 (UTC)
* {{cmt|報告}} - <del>依頼者は自動承認されていないので<code>move</code>権限がありません。</del>初版立項者のアカウントから「移動したい」との意思表示が<ins>あり、なおかつ他に編集された方がいなかった</ins>ため代わりに移動しておきました。--[[利用者:春春眠眠|春春眠眠]] ([[利用者・トーク:春春眠眠|トーク]]) 2022年6月24日 (金) 10:44 (UTC)<small>一部修正--[[利用者:春春眠眠|春春眠眠]] ([[利用者・トーク:春春眠眠|トーク]]) 2022年6月24日 (金) 10:49 (UTC)</small><small>1部撤回</small>
* 移動の残骸ですが、即時削除するか残すかは[[利用者:ドラみそ|ドラみそ]]さんにお任せします。即時削除するにせよ、こちらに関しては私はドラみそさんの意向を支持します。--[[利用者:春春眠眠|春春眠眠]] ([[利用者・トーク:春春眠眠|トーク]]) 2022年6月24日 (金) 11:26 (UTC)
* よくよく確認したところ[[利用者:ドラみそ|ドラみそ]]さんは自動承認されているようでした。今回依頼したのはやり方が分からなかったからだと考えます。ですので、[[:w:ja:Help:ページの移動]]をご覧下さいとのご案内を致します。--[[利用者:春春眠眠|春春眠眠]] ([[利用者・トーク:春春眠眠|トーク]]) 2022年6月24日 (金) 12:25 (UTC)
*:わかりました。--[[利用者:ドラみそ|ドラみそ]] ([[利用者・トーク:ドラみそ|トーク]]) 2022年6月27日 (月) 01:37 (UTC)
== ユニバーサル行動規範Universal Code of Conduct(UCoC)施行ガイドライン批准投票でのコメントについて報告します ==
こんにちは、
ユニバーサル行動規範(UCoC)プロジェクトチームは、批准投票に伴うコメントの分析を完了しました。
2022年にUCoC施行ガイドライン草案が完成した後、ガイドラインについてウィキメディアン・コミュニティが投票しました。投票者は137のコミュニティにわたり、上位9つのコミュニティは英語、ドイツ語、フランス語、ロシア語、ポーランド語、スペイン語、中国語、日本語、イタリア語のウィキペディア、メタウィキです。
投票の際、草案の内容に対してコメントを提供する機会がありました。658名の参加者がコメントを残しました。コメントの77%は英語でした。投票者は24の言語でコメントを書き、最も多かったのは英語(508人)、ついでドイツ語(34人)、日本語(28人)、フランス語(25人)、ロシア語(12人)でした。
この報告書は改訂起草委員会に送られ、委員会は最近行われた投票から得られたコミュニティのご意見をもとに、施行ガイドラインを改良します。報告書の公開版は [[m:Special:MyLanguage/Universal Code of Conduct/Enforcement guidelines/Voting/Results#Summary|'''このMeta-wiki で公開''']] です。 この報告書はメタウィキで翻訳版が公開されています。 {{int:please-translate}}
投票や議論に参加された方々に改めて感謝申し上げます。是非、今後のコミュニティとの話し合いにご参加ください。ユニバーサル行動規範と施行ガイドラインの詳細については [[m:Special:MyLanguage/Universal Code of Conduct/Project|on Meta-wiki]] をご覧ください。
ユニバーサル行動規範プロジェクトチームを代表して<br /> (翻訳と投稿)--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年5月20日 (金) 07:18 (UTC)
== イベントなどの費用の請求の仕方 ==
ウィキ'''ペ'''ディアに限らず、ウィキに関するエディタソンや講義、大学や学校での活動、ウィキペディアタウン、その他、費用請求の仕方についてご一読ください。
2022年4月15日に、請求の仕方が大幅に変わりました。以下は2022年5月31日の情報です。文書は英語が多く申し訳ないのですが、記入は日本語でかまいません。
=== 助成金 ===
個人でも、団体でも申請できます。
: 1. [https://meta.wikimedia.org/wiki/Grants:Programs/Wikimedia_Community_Fund/ja ウィキメディアコミュニティ基金]
:: エディタソンやコンテスト、写真ウォーク、促進キャンペーンの運営に必要な一般的な経費として、作業場・集会室賃料、サービス経費、賞品、普及活動、オンラインのイベントへのアクセスを支える通信費用、主催者の旅費滞在費と参加費、グラフィックデザイン、トレーニング、託児サービス、翻訳、プロジェクト管理、ウィキメディアン・イン・レジデンスなど、ボランティア活動に取って代わるものではない役割に対する報酬など。
:: '''[https://wmf.fluxx.io/user_sessions/new 申請する]'''日本語記入でかまいません。
::: ⋆随時助成金 = 短期、低予算(平均支給額 500 - 5,000 USD)
::: ⋆カンファレンスとイベント基金 = ウィキメディアンが集い経験の共有や技能開発、ネットワーク作りをする場を提供するもの(平均支給額 10,000 - 90,000 USD)
::: ⋆一般支援基金 = より規模の大きなプロジェクトもしくはプログラム、戦略計画を開発しそれぞれの目的達成のために増額した投資を長期に必要とするもの。複数年助成金支給も考慮(平均支給額10,000 - 300,000 USD)
: 2. [https://meta.wikimedia.org/wiki/Grants:Programs/Wikimedia_Alliances_Fund/ja ウィキメディアアライアンス基金]
:: 知識を入手することが困難な地域に住む人のためのプロジェクト
: 3. [https://meta.wikimedia.org/wiki/Grants:Programs/Wikimedia_Research_%26_Technology_Fund/ja ウィキメディア研究技術基金]
:: ⋆Research Fund終了
:: ⋆Technology Fund2022年中に開始
: 4. [https://meta.wikimedia.org/wiki/Grants:MSIG/About/ja 運動戦略を施行するための助成金]
:: [https://meta.wikimedia.org/wiki/Movement_Strategy/Initiatives/ja 45のイニシアチブ]のいずれか一つを推進するため。(申請額は25,000USDまでを条件として募集します。これを超える金額の申請には、手続きを開始する前に運動戦略チームにご連絡をお願いします)
:: '''[https://meta.wikimedia.org/wiki/Grants:MSIG/Apply/ja 申請する]'''
: 5. [https://wikimania.wikimedia.org/wiki/Scholarships 奨学金(2022年8月から)]
: 6. [https://meta.wikimedia.org/wiki/Knowledge_Equity_Fund 知識の公平性のための基金]
::: 「racial equity」のための基金です。
: 7. ウィキメディア・ハッカソン 助成金(終了)
: 8. [https://outreach.wikimedia.org/wiki/Education/Tools_%26_Resources ウィキペディア教育のための助成金]
上記1から8までをまとめたページは[https://meta.wikimedia.org/wiki/Grants:Start/ja こちら]です。
=== より多くの方々に支給されるであろう「1.ウィキメディアコミュニティ基金」の[[metawiki:Grants:FAQ/ja|助成金の審査の過程]] は次の通りです ===
:* 第1:応募
:* 第2:適格性の審査
:* 第3:プログラム管理者(複数)による審査
:* 第4:地域委員会による熟慮
:* 第5:地域委員会が審査結果を発表
:* 第6:助成金の支給
: 決定権限は、[[metawiki:Grants:Committees/ja|それぞれの地域の地域委員会]]に属します。地域委員会は各国語の利用者から構成されます。日本語コミュニティが属するEast, Southeast Asia, and Pacific (ESEAP)には現在5名の委員(利用者)がいます。
: 手続きとしては、「4. 運動戦略を施行するための助成金」の方が簡単です。
: 助成金の申請は、必要とする「一人の個人」または「グループ(代表者)」がしなければなりません。「グループ」は数人のグループでかまいません。
: 財団から口座に直接、お金が振り込まれます。「運動戦略の」助成金の場合(上記4)、申請から受け取りまで、法律上の氏名住所を伝える必要はありません。口座の名義人を公開しません。名義は任意団体でもかまいません。送金のためファイナンスのチームにのみ、個人データを開示する必要があります。--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年6月1日 (水) 00:53 (UTC)
== <section begin="announcement-header" /> 2022年理事選挙候補者の募集<section end="announcement-header" /> ==
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/2022 Candidates for the Board of Trustees|このメッセージはMeta-wikiで他の言語に翻訳されています。]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/2022 Candidates for the Board of Trustees|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2022/Announcement/2022 Candidates for the Board of Trustees}}&language=&action=page&filter= {{int:please-translate}}]</div>''
[[m:Special:MyLanguage/Wikimedia Foundation elections/2022|2022 理事会選挙]]候補者の募集は締め切りました。この募集により、コミュニティーから12名の候補者が応募しました。[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Candidates|2022 理事会選挙 候補者]]をご覧ください。
監査委員会は、今後、理事会から提供された技能などに関する基準により、候補者の申請書を検討します。理事会は、理事会の能力を向上させるために、一定の技能と能力を求めています。監査委員会が検討を終えた後、各候補者のランクが公表される予定です。これらのランクは、情報提供のみを目的としています。
2022年の理事会選挙について、タイムライン、投票情報、参加方法など [[m:Special:MyLanguage/Wikimedia Foundation elections/2022|Meta-wiki]] をご覧ください。
ご協力ありがとうございます。
選挙管理委員会と理事会に代わり、運動戦略と組織統治チーム一同 <br /><section end="announcement-content" />(翻訳と投稿)--[[利用者:YShibata (WMF)|YShibata (WMF)]] ([[利用者・トーク:YShibata (WMF)|トーク]]) 2022年6月2日 (木) 01:58 (UTC)
== Results of Wiki Loves Folklore 2022 is out! ==
<div lang="en" dir="ltr" class="mw-content-ltr">
{{int:please-translate}}
[[File:Wiki Loves Folklore Logo.svg|right|150px|frameless]]
Hi, Greetings
The winners for '''[[c:Commons:Wiki Loves Folklore 2022|Wiki Loves Folklore 2022]]''' is announced!
We are happy to share with you winning images for this year's edition. This year saw over 8,584 images represented on commons in over 92 countries. Kindly see images '''[[:c:Commons:Wiki Loves Folklore 2022/Winners|here]]'''
Our profound gratitude to all the people who participated and organized local contests and photo walks for this project.
We hope to have you contribute to the campaign next year.
'''Thank you,'''
'''Wiki Loves Folklore International Team'''
--[[利用者:MediaWiki message delivery|MediaWiki message delivery]] ([[利用者・トーク:MediaWiki message delivery|トーク]]) 2022年7月4日 (月) 16:12 (UTC)
</div>
<!-- User:Tiven2240@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Non-Technical_Village_Pumps_distribution_list&oldid=23454230 のリストを使用して送信したメッセージ -->
== <span lang="en" dir="ltr" class="mw-content-ltr"> Upcoming activities for the 2022 Board of Trustees election</span> ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Upcoming Activities| You can find this message translated into additional languages on Meta-wiki.]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Upcoming Activities|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2022/Announcement/Upcoming Activities}}&language=&action=page&filter= {{int:please-translate}}]</div>''
Hi all,
This message covers two upcoming activities for the 2022 Board of Trustees election.
The Board of Trustees election will have an Election Compass to support voters in their decision-making process. Eligible voters can propose statements in July and vote on which statements are used in the Election Compass in late July. Please visit the [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Community Voting/Election Compass|Election Compass page]] for more information.
Join conversations with the 2022 Board of Trustees candidates July 27 to August 7. Each candidate will have a one hour conversation with the community. Each conversation will be recorded and made available for future viewing. Live interpretation will be available. Languages available will be announced when the dates are set. These conversations will be scheduled with the candidates once the results of the Affiliate Selection are available. That information will be shared on the [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Events|2022 Board of Trustees election campaign events]] page.
Best,
Movement Strategy and Governance on behalf of the Board Selection Task Force and the Elections Committee<br /><section end="announcement-content" />
</div>
[[User:RamzyM (WMF)|RamzyM (WMF)]] 2022年7月11日 (月) 01:23 (UTC)
<!-- User:RamzyM (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery/ja&oldid=22374876 のリストを使用して送信したメッセージ -->
== Announcing the six candidates for the 2022 Board of Trustees election ==
<section begin="announcement-content"/>
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Announcing the six candidates for the 2022 Board of Trustees election| You can find this message translated into additional languages on Meta-wiki.]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Announcing the six candidates for the 2022 Board of Trustees election|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2022/Announcement/Announcing the six candidates for the 2022 Board of Trustees election}}&language=&action=page&filter= {{int:please-translate}}]</div>''
Hi everyone,
I'm Vivien from the Movement Strategy and Governance team. My apologies for posting this in English; If any of you would be so kind to help translate the message to Japanese, we would really appreciate it! If you have any questions or concerns, please do not hesitate to reach out to us.
I'm writing to inform you the Affiliate voting process has concluded. Representatives from each Affiliate organization learned about the candidates by reading candidates’ statements, reviewing candidates’ answers to questions, and considering the candidates’ ratings provided by the Analysis Committee. The selected 2022 Board of Trustees candidates are:
* Tobechukwu Precious Friday ([[m:User:Tochiprecious|Tochiprecious]])
* Farah Jack Mustaklem ([[m:User:Fjmustak|Fjmustak]])
* Shani Evenstein Sigalov ([[m:User:Esh77|Esh77]])
* Kunal Mehta ([[User:Legoktm|Legoktm]])
* Michał Buczyński ([[m:User:Aegis Maelstrom|Aegis Maelstrom]])
* Mike Peel ([[m:User:Mike Peel|Mike Peel]])
You may see more information about the [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Results|Results]] and [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Stats|Statistics]] of this Board election.
'''The next part of the Board election process is the community voting period.''' [[m:Special:MyLanguage/Wikimedia Foundation elections/2022#Timeline|You may view the Board election timeline here]]. To prepare for the community voting period, there are several things community members can engage with in the following ways:
* [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Candidates|Read candidates’ statements]] and [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2022/Affiliate_Organization_Participation/Candidate_Questions|read the candidates’ answers to the questions posed by the Affiliate Representatives]].
* [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2022/Community_Voting/Questions_for_Candidates|Propose and select the 6 questions for candidates to answer during their video Q&A]].
* See the [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Candidates|Analysis Committee’s ratings of candidates on each candidate’s statement]].
* [[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Community Voting/Election Compass|Propose statements for the Election Compass]] voters can use to find which candidates best fit their principles.
* Encourage others in your community to take part in the election.
Thank you,
Movement Strategy and Governance
''This message was sent on behalf of the Board Selection Task Force and the Elections Committee''
</div><section end="announcement-content"/>--[[利用者:VChang (WMF)|VChang (WMF)]] ([[利用者・トーク:VChang (WMF)|トーク]]) 2022年7月20日 (水) 12:43 (UTC)
== デスクトップ版改善をめぐる協議 ==
[[File:Vector 2022 showing language menu with a blue menu trigger and blue menu items 01.jpg|thumb]]
デスクトップ改善の開発担当チームとオンラインのミーティングを開いていますので、ぜひご参加ください。 Zoom(ズーム)を使い、開催日時は '''2022年7月26日 at [https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220726T1200 12:00 UTC] and [https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220726T1900 19:00 UTC]''' の予定です。 '''[https://wikimedia.zoom.us/j/5304280674 参加登録はこちらをクリック]'''。 会議 ID: 5304280674 [https://wikimedia.zoom.us/u/kc2hamfYz9 所在地別のフリーダイヤル番号]。
[[mw:Reading/Web/Desktop Improvements/Updates/Talk to Web/ja|詳細はこちら]]。では当日、お待ちしています![[User:SGrabarczuk (WMF)|SGrabarczuk (WMF)]] ([[User talk:SGrabarczuk (WMF)|会話]]) 2022年7月25日 (月) 16:56 (UTC)
<!-- User:SGrabarczuk (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=User:SGrabarczuk_(WMF)/sandbox/MM/Other_TOP20/ja&oldid=22381336 のリストを使用して送信したメッセージ -->
== Vote for Election Compass Statements ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="announcement-content" />
:''[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Vote for Election Compass Statements| You can find this message translated into additional languages on Meta-wiki.]]''
:''<div class="plainlinks">[[m:Special:MyLanguage/Wikimedia Foundation elections/2022/Announcement/Vote for Election Compass Statements|{{int:interlanguage-link-mul}}]] • [https://meta.wikimedia.org/w/index.php?title=Special:Translate&group=page-{{urlencode:Wikimedia Foundation elections/2022/Announcement/Vote for Election Compass Statements}}&language=&action=page&filter= {{int:please-translate}}]</div>''
Hi all,
Volunteers in the [[m:Special:MyLanguage/Wikimedia Foundation elections/2022|2022 Board of Trustees election]] are invited to [[m:Special:MyLanguage/Wikimedia_Foundation_elections/2022/Community_Voting/Election_Compass/Statements|vote for statements to use in the Election Compass]]. You can vote for the statements you would like to see included in the Election Compass on Meta-wiki.
An Election Compass is a tool to help voters select the candidates that best align with their beliefs and views. The community members will propose statements for the candidates to answer using a Lickert scale (agree/neutral/disagree). The candidates’ answers to the statements will be loaded into the Election Compass tool. Voters will use the tool by entering in their answer to the statements (agree/disagree/neutral). The results will show the candidates that best align with the voter’s beliefs and views.
Here is the timeline for the Election Compass:
*<s>July 8 - 20: Volunteers propose statements for the Election Compass</s>
*<s>July 21 - 22: Elections Committee reviews statements for clarity and removes off-topic statements</s>
*July 23 - August 1: Volunteers vote on the statements
*August 2 - 4: Elections Committee selects the top 15 statements
*August 5 - 12: candidates align themselves with the statements
*August 15: The Election Compass opens for voters to use to help guide their voting decision
The Elections Committee will select the top 15 statements at the beginning of August
Best,
Movement Strategy and Governance
''This message was sent on behalf of the Board Selection Task Force and the Elections Committee''
<section end="announcement-content" />
</div>
[[User:VChang (WMF)|VChang (WMF)]] 2022年7月26日 (火) 17:57 (UTC)
<!-- User:VChang (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery/ja&oldid=22374876 のリストを使用して送信したメッセージ -->
== Movement Strategy and Governance News – Issue 7 ==
<div lang="en" dir="ltr" class="mw-content-ltr">
<section begin="msg-newsletter"/>
<div style = "line-height: 1.2">
<span style="font-size:200%;">'''Movement Strategy and Governance News'''</span><br>
<span style="font-size:120%; color:#404040;">'''Issue 7, July-September 2022'''</span><span style="font-size:120%; float:right;">[[m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7|'''Read the full newsletter''']]</span>
----
Welcome to the 7th issue of Movement Strategy and Governance News! The newsletter distributes relevant news and events about the implementation of Wikimedia's [[:m:Special:MyLanguage/Movement Strategy/Initiatives|Movement Strategy recommendations]], other relevant topics regarding Movement governance, as well as different projects and activities supported by the Movement Strategy and Governance (MSG) team of the Wikimedia Foundation.
The MSG Newsletter is delivered quarterly, while the more frequent [[:m:Special:MyLanguage/Movement Strategy/Updates|Movement Strategy Weekly]] will be delivered weekly. Please remember to subscribe [[m:Special:MyLanguage/Global message delivery/Targets/MSG Newsletter Subscription|here]] if you would like to receive future issues of this newsletter.
</div><div style="margin-top:3px; padding:10px 10px 10px 20px; background:#fffff; border:2px solid #808080; border-radius:4px; font-size:100%;">
* '''Movement sustainability''': Wikimedia Foundation's annual sustainability report has been published. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A1|continue reading]])
* '''Improving user experience''': recent improvements on the desktop interface for Wikimedia projects. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A2|continue reading]])
* '''Safety and inclusion''': updates on the revision process of the Universal Code of Conduct Enforcement Guidelines. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A3|continue reading]])
* '''Equity in decisionmaking''': reports from Hubs pilots conversations, recent progress from the Movement Charter Drafting Committee, and a new white paper for futures of participation in the Wikimedia movement. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A4|continue reading]])
* '''Stakeholders coordination''': launch of a helpdesk for Affiliates and volunteer communities working on content partnership. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A5|continue reading]])
* '''Leadership development''': updates on leadership projects by Wikimedia movement organizers in Brazil and Cape Verde. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A6|continue reading]])
* '''Internal knowledge management''': launch of a new portal for technical documentation and community resources. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A7|continue reading]])
* '''Innovate in free knowledge''': high-quality audiovisual resources for scientific experiments and a new toolkit to record oral transcripts. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A8|continue reading]])
* '''Evaluate, iterate, and adapt''': results from the Equity Landscape project pilot ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A9|continue reading]])
* '''Other news and updates''': a new forum to discuss Movement Strategy implementation, upcoming Wikimedia Foundation Board of Trustees election, a new podcast to discuss Movement Strategy, and change of personnel for the Foundation's Movement Strategy and Governance team. ([[:m:Special:MyLanguage/Movement Strategy and Governance/Newsletter/7#A10|continue reading]])
</div><section end="msg-newsletter"/>
</div>
Best regards,
Movement Strategy and Governance [[User:VChang (WMF)|VChang (WMF)]] 2022年7月28日 (木) 15:20 (UTC)
<!-- User:VChang (WMF)@metawiki が https://meta.wikimedia.org/w/index.php?title=Distribution_list/Global_message_delivery/ja&oldid=22374876 のリストを使用して送信したメッセージ -->
k5h3toopf5ftm2r3t51g0ojqy3gm42i
高等学校数学I/2次関数
0
605
205965
204062
2022-07-29T02:58:11Z
2001:268:9B42:78B2:AC79:2D9F:F6FD:1654
/* f(x) */内容追加
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校数学|高等学校数学I|pagename=2次関数|frame=1|small=1}}
== 関数 ==
=== f(x) ===
一般に、<math>y</math>が<math>x </math>の関数である場合に、 <math>f</math> などの文字を用いて、
:<math> y=f(x) </math>
と書き表すことができる。
また、x の関数 y=f(x) のことを単に f(x) と省略して言う場合もよくある。
関数 y=f(x) において、変数xの値をaにした場合の関数の値を f(a) で表す。
つまり、関数f(x) の x=a の場合でのyの値が f(a) である。ちなみに関数のfとは
英語で関数を意味するfuncsionの頭文字
からとった
=== 象限 ===
[[ファイル:Quadrant_japanese.svg|サムネイル|326x326ピクセル]]
xy座標で第1象限(しょうげん)から第4象限までの位置を、図のように定義する。
位置と象限の番号の対応の覚え方は、x軸の正方向を基準に、反時計周り(左回り)に番号が大きくなっていくと覚えればいい。
[[ファイル:Quadrant_and_xy.svg|左|サムネイル|326x326ピクセル]]
それぞれの象限と、X、Yの値との関係は、左図のとおり。 {{-}}
== 2次関数 ==
=== 定義 ===
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''2次関数の定義'''
|-
|style="padding:5px"|
定数 <math>a\neq 0</math> と、定数 <math>b</math>, <math>c</math>を用いて
: <math>y=ax^2+bx+c</math>
と <math>x</math> の二次式で表す事ができる関数を変数 <math>x</math> の'''2次関数'''という。
|}
==== 具体例 ====
以下の関数はいずれも2次関数である。
* <math>y=3x^2+4x+1</math> (<math>a=3</math>、<math>b=4</math>、<math>c=1</math>の場合に相当)<!--オーソドックスな例-->
* <math>y=x^2-4x</math> (<math>a=1</math>、<math>b=-4</math>、<math>c=0</math>の場合に相当) <!--係数が1である為明示されてない例(二次の項)と負の係数の例(一時の項)と係数が0の場合の例(0次の項)-->
* <math>y=-x^2</math> (<math>a=-1</math>、<math>b=0</math>、<math>c=0</math>の場合に相当)<!--1次と0次が両方0の例-->
一方以下の関数は2次関数では'''ない'''
* <math>y=4x+1</math>
読者はこれを当然と思うかもしれないが、上の式は
: <math>y=0x^2+4x+1</math>
と表記することもできる。しかし、これは <math>x</math> 二次式ではないので2次関数ではない。
そのために、2次関数の定義において'''<math>a\neq 0</math>でなければならない'''というルールを設けたのである。
{{-}}
== 2次関数のグラフ ==
=== y=ax² のグラフ ===
まず、もっとも簡単な<math>y=ax^2</math>のグラフは<math>a>0</math> のとき図1のようになる。(図では<math>a=1</math>の場合を表記)。また、<math>a<0</math> のときは図1 のグラフを上下さかさまにしたものになる。
:[[Image:Qfunction.png|thumb|250px|図1 (y=x<sup>2</sup>のグラフ)]]
<math>a>0</math> のとき2次関数 <math>y</math> は '''下に凸''' (したにとつ)といい、<math>a<0</math> のとき '''上に凸''' (うえにとつ)という。また、2次関数のグラフを'''放物線'''という。
{{-}}
=== y=ax² + q のグラフ ===
[[File:Y=2x^2+4.svg|thumb|400px]]
2つの2次関数
:y = 2''x''<sup>2</sup> (1)
:y = 2''x''<sup>2</sup>+4 (2)
のグラフを書くために値を求めると、下記の表のようになる。
{| class="wikitable" style="text-align:center;"
! ''x''
| … || -3 || -2 || -1 || 0 || 1 || 2 || 3 || …
|----
! 2''x<sup>2</sup>''
|…|| 18 || 8 || 2 || 0 || 2 || 8 || 18 ||…
|----
! 2''x<sup>2</sup>''+4
|…|| 22 || 12 || 6 || 4 || 6 || 12 || 22 ||…
|}
表を見ると、(2) 2''x<sup>2</sup>''+4 の値は、つねに (1) 2x''<sup>2</sup>'' の値よりも4だけ大きい。
したがって(2) 2''x<sup>2</sup>''+4 のグラフは、 (1) 2x''<sup>2</sup>'' のグラフをy軸方向に4だけ平行移動した放物線であり、
:軸がy軸
:頂点が 点(0, 4)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=ax<sup>2</sup>+q のグラフは、
:y=ax<sup>2</sup> のグラフをy軸方向に q だけ平行移動した放物線であり、
::'''軸はy軸'''、 '''頂点は 点 (0, q)''' である。
|}
{{-}}
=== y=a(x-p)² のグラフ ===
[[File:Y=2(x-3)^2.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup> のグラフは、 2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であり、
:軸は 直線 x=3
:頂点は 点(3, 0)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup> のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p だけ平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, 0) '''
である。
|}
{{-}}
=== y=a(x-p)² +q のグラフ ===
[[File:Y=2(x-3)^2+4.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup>+4 のグラフは、 y=2(''x''-3)<sup>2</sup> のグラフをy軸方向に4だけ平行移動した放物線である。
そして、y=2(''x''-3)<sup>2</sup> のグラフは y=2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であったので、つまり
y=2(''x''-3)<sup>2</sup>+4 のグラフは、y=2x''<sup>2</sup>'' のグラフを x軸方向に3, y軸方向に4, 平行移動した放物線である。
よって、
:軸は直線 x=3
:頂点は 点(3, 4)
である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup>+p のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p, y軸方向にq , 平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, q) '''
である。
|}
{{-}}
=== y=ax² + bx +c のグラフ ===
==== 一般形と標準形 ====
本節では2次関数の一般形と標準形について学ぶ。この知識は後で2次関数をグラフで表す際に役立つ。
先ほど現れた
: <math>y=ax^2+bx+c</math>
という形の式 (<math>a\neq 0</math>) を'''2次関数の一般形'''といい、
: <math>y=a(x-p)^2+q</math>
という式を'''2次関数の標準形'''という。
(上で、<math>a\neq 0</math>、<math>b</math>、<math>c</math>、<math>p</math>、<math>q</math>は定数で、<math>x</math>は変数であるものとする。)
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''一般形と標準形の関係'''
|-
|style="padding:5px"|
;定理
:2次関数の一般形は必ず2次関数の標準形に変形することができ、逆に2次関数の標準形は必ず2次関数の一般形に変形することができる。
|}
一般形で表記されている2次関数を標準形で表記する事を'''平方完成'''という。
後述するように、標準形は2次関数をグラフで表す際に用いる。
==== 証明 ====
標準形
: <math>y=a(x-p)^2+q</math>
で表記されている2次関数の右辺を展開すると、
: <math>y= ax^2 -2apx + (ap^2+q)</math>
となるので、
: <math>b=-2ap, \quad c=ap^2+q</math>
とすれば一般形になる。
逆に一般形
: <math>y=ax^2+bx+c</math>
で表記されている2次関数は以下の手順で標準形に変換できる(この変形手法を'''平方完成'''という)。
:<math>y=ax^2+bx+c</math>
:<math>=a\left(x^2+\frac{b}{a}x\right)+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2-\left(\frac{b}{2a}\right)^2\right\}+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2\right\}-\frac{b^2}{4a}+c</math>
:<math>=a\left(x+\frac{b}{2a}\right)^2-\frac{b^2-4ac}{4a}</math>
ここで、
:<math>
p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}
</math>
とおくと、
:<math>
y=a(x-p)^2+q
</math>
となり標準形で表されたことになる。
==== 例題 ====
;例題
:次の2次関数が一般形ならば標準形に、標準形ならば一般形にせよ。
:#<math>y=2(x+4)^2+4</math>
:#<math>y=4x^2+12x+9</math>
:#<math>y=x^2+5x</math>
;解
:#<math>y=2x^2+16x+36</math>
:#<math>y=4\left(x+\frac{3}{2}\right)^2</math>
:#<math>y=\left(x+\frac{5}{2}\right)^2-\frac{25}{4}</math>
=== 一般の2次関数のグラフ ===
一般の2次関数をグラフで表現してみよう。 前述のように2次関数は平方完成の手順を踏む事により必ず標準形で表記可能なので、2次関数<math>y=ax^2+bx+c</math>を標準形
:<math>
y=a(x-p)^2+q
</math>
に変換する。ここで、
:<math>
p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}
</math>
この標準形のグラフは<math>y=ax^2</math> のグラフを <math>x</math> 軸方向に <math>p</math>, <math>y</math> 軸方向に <math>q</math> 平行移動させたものと考えることができる。よって以下の事実が結論付けられる。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフ'''
|-
|style="padding:5px"|
;定理
:2次関数 <math>y=ax^2+bx+c</math> のグラフは軸が<math>x=-\frac{b}{2a}</math> , 頂点が <math>\left(-\frac{b}{2a},-\frac{b^2-4ac}{4a}\right)</math> であるような放物線である。
|}
==== ※ 参考 ====
{{コラム|グラフの平行移動|
2次関数にかぎらず、一般に関数 y=f(x) のグラフをy軸の正の方向に q だけ平行移動したグラフは、
:関数 '''y = f(x) +q'''
のグラフになる。
また、関数 y=f(x) のグラフをx軸の正の方向に p だけ平行移動したグラフは、
:関数 '''y = f(x-p)'''
のグラフになる。
よって、関数 y=f(x) のグラフをx軸の正の方向に p 、y軸の正の方向にq だけ平行移動したグラフは、
:関数 '''y = f(x-p) +q'''
のグラフになる。
}}
{{コラム|グラフの対称移動|
2次関数にかぎらず、一般に関数 y=f(x) のグラフをx軸に関して対称に移動したグラフは、
:関数 '''y = -f(x)'''
のグラフになる。
また、関数 y=f(x) のグラフをy軸に関して対称に移動したグラフは、
:関数 '''y = f(-x)'''
のグラフになる。
よって、関数 y=f(x) のグラフを原点に関して対称に移動したグラフは、
:関数 '''y = - f(-x)'''
のグラフになる。
}}
==== 例題 ====
;例題
:2次関数 <math>y=\frac{1}{2}x^2+3x+\frac{1}{2}</math> のグラフをかけ。
;解
::<math>\begin{matrix}
y& =& \cfrac{1}{2}x^2+3x+\cfrac{1}{2} \\[10pt]
{} & =& \cfrac{1}{2}(x+3)^2-4
\end{matrix}</math>[[画像:二次関数-例題1.png]]
:ゆえに、求めるグラフは軸 <math>x=-3</math>、頂点 <math>(-3,-4)</math> の下に凸な放物線である。
;例題
:2次関数 <math>y=4x^2+20x+4</math> のグラフは <math>y=4x^2</math> のグラフをどのように平行移動させたものか。
;解
::<math>\begin{matrix}
y&=&4x^2+20x+4\\
{}&=&4\left(x+\frac{5}{2}\right)^2-21
\end{matrix}</math>
:であるので、<math>y=4x^2</math> のグラフを <math>x</math> 軸方向に <math>-\frac{5}{2}</math>、<math>y</math> 軸方向に -21 移動させたものである。
=== 2次関数のグラフと二次方程式 ===
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸に共有点があるとき、その共有点の<math>y</math>座標は0であるから、共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解である。
<br>
* 問題例
** 問題
次の2次関数のグラフと<math>x</math>軸の共有点の座標を求めよ。<br>
(i)
:<math>y=x^2-2x-1</math>
(ii)
:<math>y=-4x^2-4x-1</math>
** 解答
(i) 2次方程式<math>x^2-2x-1=0</math>を解くと
:<math>x = \frac {-(-2) \pm \sqrt{(-2)^2 - 4 \times 1 \times (-1)}}{2 \times 1} = \frac {2 \pm \sqrt{8}}{2} = \frac {2 \pm 2 \sqrt{2}}{2} = 1 \pm \sqrt{2}</math>
よって、共有点の座標は
:<math>
\left(1+ \sqrt{2}\ ,\ 0 \right)\ ,\ \left(1- \sqrt{2}\ ,\ 0 \right)
</math>
(ii) 2次方程式<math>-4x^2-4x-1=0</math>を解くと
:<math>4x^2+4x+1=0</math>
:<math>(2x+1)^2=0</math>
:<math>x=- \frac {1}{2}</math>
よって、共有点の座標は
:<math>
\left(- \frac {1}{2}\ ,\ 0 \right)
</math>
(ii)のグラフはただ1点<math>\left(- \frac {1}{2}\ ,\ 0 \right)</math>で共有し、共有点の<math>x</math>座標は二次方程式<math>-4x^2-4x-1=0</math>の重解である。このようなとき、2次関数のグラフは<math>x</math>軸に'''接する'''といい、その共有点を'''接点'''という。
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸との共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解で、実数解の個数は<math>D=b^2-4ac</math>の符号によって決まる。
<math>b^2-4ac</math> のことを 2次方程式 <math>ax^2+bx+c=0</math>の '''判別式''' (はんべつしき)という。
:※ 「D」とは「判別式」を意味する discriminant の頭文字である。
{| class="wikitable"
|+
! Dの符号 !! D>0 !! D=0 !! D<0
|-
! a > 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a)0.svg|center|150px]]
|-
! a < 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a(0.svg|center|150px]]
|-
! 共有点の個数
| <center>2個</center> || <center>1個</center> || <center>0個</center>
|-
|}
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフと<math>x</math>軸の位置関係'''
|-
|style="padding:5px"|
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac</math>とするとき
:::<math>D>0 \quad \Longleftrightarrow \quad </math> 異なる2点で交わる
:::<math>D=0 \quad \Longleftrightarrow \quad </math> 1点で接する
:::<math>D<0 \quad \Longleftrightarrow \quad </math> 共有点をもたない
|}
==== 例題 ====
** 問題
次の2次関数のグラフと<math>x</math>軸との共有点の個数を求めよ。
(I)
:<math>
y=3x^2-x+3
</math>
(II)
:<math>
y=-2x^2-3x+5
</math>
(III)
:<math>
y=x^2-2 \sqrt{3} x+3
</math>
** 解答
(I)
:<math>
D=(-1)^2-4 \times 3 \times 3 =-35<0
</math>
だから、<math>x</math>軸との共有点はなし。<br>
(II)
:<math>
D=(-3)^2-4 \times (-2) \times 5 =49>0
</math>
だから、<math>x</math>軸との共有点は2個。<br>
(III)
:<math>
D=(2 \sqrt{3})^2-4 \times 1 \times 3 =0
</math>
だから、<math>x</math>軸との共有点は1個。
== 定義域と値域 ==
=== 定義域と値域 ===
2次間数にかぎらず、一般に関数 y = f(x)において、
変数x のとりうる値の範囲のことを'''定義域'''(ていぎいき、domain)という。
また、xの値に対応して y の値のとりうる範囲のことを'''値域'''(ちいき、range)という。
多くの場合、値域は定義域の影響を受けて変化する。
;例
:たとえば、関数 y=x は、定義域をもし x ≧ 1 とした場合、
:関数 y=x の値域は y ≧ 1 となる。
また、この例のように、定義域や値域を表す場合に、不等式で表す手法も多い。
;例2
:たとえば、関数 y=2x は、定義域をもし 1 ≦ x ≦ 3 とした場合、
:関数 y=2x の値域は 2 ≦ y ≦ 6 となる。
略式の記法として、定義域を表す場合に、
: y=2x ( 1 ≦ x ≦ 3 )
のようにカッコ内の不等式で表すことも、よくある。この記法(「 y=2x ( 1 ≦ x ≦ 3 ) 」)の場合、定義域は 1 ≦ x ≦ 3 であると主張している。
つまり、定義域を数式ではっきりと示す必要がある場合には
:<math> y=f(x) \qquad ( a\leqq x \leqq b ) </math>
のように示すことがよくある。この関数の場合、定義域は<math>a\leqq x \leqq b</math>である。
特に定義域の指定されてない場合は、可能なかぎり定義域を広くとるのが普通である。
:たとえば、特に定義域が指定されていない場合、 関数 <math> y=x</math> の定義域は、実数全体である。
:関数 <math> y=\frac{1}{x} </math> の定義域には、 x=0 を含めることはできない。そのため、特に定義域が指定されていない場合、 関数 <math> y=\frac{1}{x} </math> の定義域は、0をのぞく実数全体である。
;その他の例
:たとえば、関数 y=-x+5 は、定義域をもし 1 ≦ x ≦ 8 とした場合、
:値域は -3 ≦ y ≦ 4 となる。
=== 最大値と最小値 ===
たとえば、さきほどの関数 y=2x の問題の例 、
:例 (再掲)
:たとえば、関数 y=2x は、定義域をもし 1 ≦ x ≦ 3 とした場合、
:関数 y=2x の値域は 1 ≦ y ≦ 6 となる。
では、与えられた定義域で、この関数の値のとりうる最大の値は 6 である。
このように、ある関数が、与えられた条件下でもつ最大の値のことを、その関数の'''最大値'''(さいだいち, maximum)という。
または、さきほど習った「値域」という言葉をつかうなら、「最大値」とは、値域の最大の値のことである。
:
つまり、関数 y=2x ( 1 ≦ x ≦ 3 ) の最大値は 6 である。
もし、定義域を指定しなければ、関数 y=2x に最大値は無い(定義域の指定がなければ、xが どこまでも大きくなるし、それに比例してyも大きくなるので)。
同様に、ある関数が、与えられた条件下でもつ最小の値のことを、その関数の'''最小値'''(さいしょうち, minimum)という。
関数 y=2x ( 1 ≦ x ≦ 3 ) の最小値は 2 である。
;例1
:関数 y=-x+5 ( 1 ≦ x ≦ 8 )では、
:値域は -3 ≦ y ≦ 4 なので、
:最大値は 4 , 最小値は -3 である。
;例2
: y=2x ( 1 < x ≦ 3 )では、(※ 不等号が「≦」ではなく「<」になっているのに注意!)
:値域は 2 < y ≦ 6 であるが、
:最小値は無い。xを1に近づけていくことで、yは2に近づいていくが、しかしxが1になることがないので、よってyが2になることもないので、この問題ではyに最小値は無い。
:この問題でのyの最大値は6である。
== 2次関数の値の変化 ==
=== 2次関数の最大値・最小値 ===
[[Image:Qfunction.png|thumb|right|250px|図1 (y=x<sup>2</sup>のグラフ)]]
定義域が実数全体である2次関数<math>y=ax^2+bx+c</math> では、右図のように、aの正負によって最小値(a>0 の場合)、または最大値がある(a<0の場合)。
;例1 関数 <math>y=x^2</math> の場合
:関数 <math>y=x^2</math> では、すべての実数 <math>x</math> に対して、<math>x^2\geqq 0</math> であるので( 等号成立は<math>x=0</math>のときのみ)、
:よって、関数 <math>y=x^2</math> は<math>x=0</math>のとき最小値0をとる。 関数 <math>y=x^2</math> に最大値は存在しない。
;例2 関数 y=2(''x''-3)<sup>2</sup>+4 の場合
:たとえば、実数の範囲で考えた場合、関数 y=2(''x''-3)<sup>2</sup>+4 の最小値は4である。
:関数 y=2(''x''-3)<sup>2</sup>+4 に最大値は無い。
;例3 関数 y=-x<sup>2</sup> の場合
:x<sup>2</sup> の係数がマイナスなので、最大値をもつ。最小値はもたない。
:実数の範囲で考えた場合、関数 y=x<sup>2</sup> の最大値は 0 である。
:関数 y=-x<sup>2</sup> に最小値は無い。
==== 例題 ====
;例題
:2次関数<math>y=x^2+5x+5</math>の<math>-3\leq x \leq 0</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数y=x^2(plus)5x(plus)5.png|right|frame|図2]]
:<math>y=\left(x+\frac{5}{2}\right)^2-\frac{5}{4}</math>
と標準形にし、グラフを書くと右図のようになる。
したがってグラフより答えは最大値は<math>x=0</math> のとき<math>5</math>, 最小値は<math>x=-\frac{5}{2}</math> のとき<math>-\frac{5}{4}</math>。
;例題
:2次関数<math>y=-\frac{1}{2}x^2+x+\frac{3}{2}</math> の<math>0\leq x < 3</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数の最大最小例題2.png|frame|right|図3]]
上の例題と同様の問題のように思えるが、定義域が<math>0\leq x \leq 3</math> ではなく、<math>0\leq x < 3</math> となっている。とりあえずグラフをかいてみることにする。
:<math>y=-\frac{1}{2}(x-1)^2+2</math>.
グラフから、最大値は<math>x=1</math> のとき<math>2</math>, 最小値は存在しない。
=== 二次不等式 ===
二次不等式とは、<math>x</math> の二次式と不等号で表される式のことをいい、
:<math>ax^2+bx+c>0</math>, <math>ax^2+bx+c\geq 0</math>
のような形をしている。グラフを利用して二次不等式の解を考えてみよう。
;例題
[[画像:高等学校数学I_二次不等式の例題1.png|frame|right|図4]]
:二次不等式 <math>x^2+4x>0</math> を解け。
2次関数 <math>y=x^2+4x=x(x+4)</math> のグラフは右図のようになる。
<math>x^2+4x>0</math> となる<math>x</math> の値の範囲は右のグラフの<math>x</math> 軸より上側にある部分に対する<math>x</math> の値の範囲であるから、
:<math>x<-4 , 0<x</math>.
この問題をより一般化してみよう。
2次不等式<math>ax^2+bx+c>0</math> を解くには<math>y=ax^2+bx+c</math> のグラフをかけば一目瞭然である。しかし、グラフをかいた場合にも我々が注目するのは<math>x</math> 軸より上か下かということと、<math>x</math> 軸との共有点である。<math>x</math> 軸との共有点は二次方程式<math>ax^2+bx+c=0</math> の解であるが、二次方程式の解の公式を思い出してほしい。それは次のようなものであった。
:二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、その解<math>x</math> は、
::<math>x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>
これを用いると、二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、
:<math>ax^2+bx+c=a\left(x-\frac{-b+\sqrt{b^2-4ac}}{2a}\right)\left(x-\frac{-b-\sqrt{b^2-4ac}}{2a}\right)</math>
と因数分解形で表すことができる。(右辺を展開して左辺と一致することを確かめてみよ。)
ここで、
:<math>\alpha=\frac{-b-\sqrt{b^2-4ac}}{2a}, \beta=\frac{-b+\sqrt{b^2-4ac}}{2a}</math>
とおくと、
:<math>ax^2+bx+c>0\Longleftrightarrow a(x-\alpha)(x-\beta)>0</math>
となる。<math>a>0</math> のとき<math>y=ax^2+bx+c</math> のグラフは下に凸であるからこの不等式の解は、
:<math>x<\alpha,\beta<x</math>
となる。<math>a<0</math> のときは両辺を<math>-1</math> で割ってから考えると、
:<math>\alpha<x<\beta</math>
となる。
==== 2次関数のグラフがx軸と異なる2点で交わる場合 ====
*'''例題'''
** 問題
次の二次不等式を解け。<br>
(i)
:<math>12x^2+17x-7<0</math>
(ii)
:<math>2x^2+6x+1 \ge 0</math>
** 解答
(i) 二次方程式<math>12x^2+17x-7=0</math>を解くと
:<math>(4x+7)(3x-1)=0</math>
:<math>x=- \frac {7}{4}\ ,\ \frac {1}{3}</math>
よって、この二次不等式の解は
:<math>- \frac {7}{4} <x< \frac {1}{3}</math>
(ii) 二次方程式<math>2x^2+6x+1=0</math>を解くと
:<math>x = \frac {-6 \pm \sqrt{6^2 - 4 \times 2 \times 1}}{2 \times 2} = \frac {-6 \pm \sqrt{28}}{4} = \frac {-6 \pm 2 \sqrt{7}}{4} = \frac {-3 \pm \sqrt{7}}{2}</math>
よって、この二次不等式の解は
:<math>\frac {-3- \sqrt{7}}{2} \le x\ ,\ x \le \frac {-3+ \sqrt{7}}{2}</math>
==== 2次関数のグラフがx軸と接する場合 ====
<math>y=x^2-6x+9</math>の値の符号について考えよう。<br>
平方完成をすると
:<math>y=(x-3)^2</math>
この関数のグラフは、<math>x</math>軸と点<math>(3\ ,\ 0)</math>で接する。<br>
<math>y=x^2-6x+9</math>の値の符号について、下の表のようになる。
<table border="1" cellpadding="2">
<tr><th><math>x</math></th><th><math>x<3</math></th><th><math>3</math></th><th><math>3<x</math></th></tr>
<tr><th><math>y=x^2-6x+9</math></th><td><center><math>+</math></center></td><td><math>0</math></td><th><center><math>+</math></center></th></tr>
</table>
よって
:<math>x^2-6x+9>0</math>の解は 3以外のすべての実数
:<math>x^2-6x+9<0</math>の解は ない
:<math>x^2-6x+9 \ge 0</math>の解は すべての実数
:<math>x^2-6x+9 \le 0</math>の解は <math>x=3</math>
==== 例題 ====
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+1>0</math>
(ii)
:<math>9x^2+12x+4 \le 0</math>
(iii)
:<math>4x^2-4x+1<0</math>
(iv)
:<math>x^2-10x+25 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+1>0</math>
:<math>(x+1)^2>0</math>
よって、-1以外のすべての実数<br>
(ii)
:<math>9x^2+12x+4 \le 0</math>
:<math>(3x+2)^2 \le 0</math>
よって、<math>x=- \frac {2}{3}</math><br>
(iii)
:<math>4x^2-4x+1<0</math>
:<math>(2x-1)^2<0</math>
よって、解はない<br>
(iv)
:<math>x^2-10x+25 \ge 0</math>
:<math>(x-5)^2 \ge 0</math>
よって、すべての実数
==== 2次関数のグラフがx軸と共有点をもたない場合 ====
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac<0</math>のとき、<math>x</math>軸と共有点をもたなかった。<br>
さらに<math>a>0</math>という条件を加えると、<math>y=ax^2+bx+c</math>のグラフは<math>x</math>軸より上側にある。
<math>a>0\ ,\ D=b^2-4ac<0</math>のとき
:<math>ax^2+bx+c>0</math>の解は すべての実数
:<math>ax^2+bx+c<0</math>の解は ない
==== 例題 ====
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+3<0</math>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
(iii)
:<math>-x^2+x-1 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+3<0</math>
:<math>D=2^2-4 \times 1 \times 3 =-8<0</math>
よって、解はない<br>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
:<math>D=(-6)^2-4 \times 2 \times 5 =-4<0</math>
よって、すべての実数<br>
(iii)
:<math>-x^2+x-1 \ge 0</math>
:<math>x^2-x+1 \le 0</math>
:<math>D=(-1)^2-4 \times 1 \times 1 =-3<0</math>
よって、解はない
=== (発展)放物線と直線 ===
放物線と直線の共有点について考えよう。
* 問題例
** 問題
放物線 <math>y=x^2-4x+5</math> と次の直線の共有点の座標を求めよ。<br>
(i)
:<math>y=x+1</math>
(ii)
:<math>y=2x-4</math>
** 解答
(i) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=x+1
\end{cases}</math>
の実数の解である。<math>y=x+1</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=x+1</math>
すなわち
:<math>x^2-5x+4=0</math>
これを解いて
:<math>
x=1 \ ,\ 4
</math>
<math>x=1</math> のとき <math>y=2</math><br>
<math>x=4</math> のとき <math>y=5</math><br>
よって、共有点の座標は
:<math>
\left(1\ ,\ 2 \right)\ ,\ \left(4\ ,\ 5 \right)
</math>
である。<br>
(ii) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=2x-4
\end{cases}</math>
の実数の解である。<math>y=2x-4</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=2x-4</math>
すなわち
:<math>x^2-6x+9=0</math>
これを解いて
:<math>
x=3
</math>
このとき <math>y=2</math><br>
よって、共有点の座標は
:<math>
\left(3\ ,\ 2 \right)
</math>
である。
例題の(ii)のように、放物線とその軸に平行でない直線がただ1点を共有するとき、放物線は直線に'''接する'''といい、共有点を'''接点'''という。
== 演習問題 ==
* [[高等学校数学I 二次関数 演習A|演習問題A]]
* [[高等学校数学I 二次関数 演習B|演習問題B]]
{{DEFAULTSORT:こうとうかつこうすうかくI にしかんすう}}
[[Category:高等学校数学I|にしかんすう]]
ryhybrtshf1yun63an26zia4c5kyn9f
205966
205965
2022-07-29T03:00:20Z
2001:268:9B42:78B2:AC79:2D9F:F6FD:1654
/* f(x) */誤字修正
wikitext
text/x-wiki
{{pathnav|高等学校の学習|高等学校数学|高等学校数学I|pagename=2次関数|frame=1|small=1}}
== 関数 ==
=== f(x) ===
一般に、<math>y</math>が<math>x </math>の関数である場合に、 <math>f</math> などの文字を用いて、
:<math> y=f(x) </math>
と書き表すことができる。
また、x の関数 y=f(x) のことを単に f(x) と省略して言う場合もよくある。
関数 y=f(x) において、変数xの値をaにした場合の関数の値を f(a) で表す。
つまり、関数f(x) の x=a の場合でのyの値が f(a) である。ちなみに関数のfとは
英語で関数を意味するfunctionの頭文字
からとった
=== 象限 ===
[[ファイル:Quadrant_japanese.svg|サムネイル|326x326ピクセル]]
xy座標で第1象限(しょうげん)から第4象限までの位置を、図のように定義する。
位置と象限の番号の対応の覚え方は、x軸の正方向を基準に、反時計周り(左回り)に番号が大きくなっていくと覚えればいい。
[[ファイル:Quadrant_and_xy.svg|左|サムネイル|326x326ピクセル]]
それぞれの象限と、X、Yの値との関係は、左図のとおり。 {{-}}
== 2次関数 ==
=== 定義 ===
{| style="border:2px solid aqua;width:80%" cellspacing=0
|style="background:aqua"|'''2次関数の定義'''
|-
|style="padding:5px"|
定数 <math>a\neq 0</math> と、定数 <math>b</math>, <math>c</math>を用いて
: <math>y=ax^2+bx+c</math>
と <math>x</math> の二次式で表す事ができる関数を変数 <math>x</math> の'''2次関数'''という。
|}
==== 具体例 ====
以下の関数はいずれも2次関数である。
* <math>y=3x^2+4x+1</math> (<math>a=3</math>、<math>b=4</math>、<math>c=1</math>の場合に相当)<!--オーソドックスな例-->
* <math>y=x^2-4x</math> (<math>a=1</math>、<math>b=-4</math>、<math>c=0</math>の場合に相当) <!--係数が1である為明示されてない例(二次の項)と負の係数の例(一時の項)と係数が0の場合の例(0次の項)-->
* <math>y=-x^2</math> (<math>a=-1</math>、<math>b=0</math>、<math>c=0</math>の場合に相当)<!--1次と0次が両方0の例-->
一方以下の関数は2次関数では'''ない'''
* <math>y=4x+1</math>
読者はこれを当然と思うかもしれないが、上の式は
: <math>y=0x^2+4x+1</math>
と表記することもできる。しかし、これは <math>x</math> 二次式ではないので2次関数ではない。
そのために、2次関数の定義において'''<math>a\neq 0</math>でなければならない'''というルールを設けたのである。
{{-}}
== 2次関数のグラフ ==
=== y=ax² のグラフ ===
まず、もっとも簡単な<math>y=ax^2</math>のグラフは<math>a>0</math> のとき図1のようになる。(図では<math>a=1</math>の場合を表記)。また、<math>a<0</math> のときは図1 のグラフを上下さかさまにしたものになる。
:[[Image:Qfunction.png|thumb|250px|図1 (y=x<sup>2</sup>のグラフ)]]
<math>a>0</math> のとき2次関数 <math>y</math> は '''下に凸''' (したにとつ)といい、<math>a<0</math> のとき '''上に凸''' (うえにとつ)という。また、2次関数のグラフを'''放物線'''という。
{{-}}
=== y=ax² + q のグラフ ===
[[File:Y=2x^2+4.svg|thumb|400px]]
2つの2次関数
:y = 2''x''<sup>2</sup> (1)
:y = 2''x''<sup>2</sup>+4 (2)
のグラフを書くために値を求めると、下記の表のようになる。
{| class="wikitable" style="text-align:center;"
! ''x''
| … || -3 || -2 || -1 || 0 || 1 || 2 || 3 || …
|----
! 2''x<sup>2</sup>''
|…|| 18 || 8 || 2 || 0 || 2 || 8 || 18 ||…
|----
! 2''x<sup>2</sup>''+4
|…|| 22 || 12 || 6 || 4 || 6 || 12 || 22 ||…
|}
表を見ると、(2) 2''x<sup>2</sup>''+4 の値は、つねに (1) 2x''<sup>2</sup>'' の値よりも4だけ大きい。
したがって(2) 2''x<sup>2</sup>''+4 のグラフは、 (1) 2x''<sup>2</sup>'' のグラフをy軸方向に4だけ平行移動した放物線であり、
:軸がy軸
:頂点が 点(0, 4)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=ax<sup>2</sup>+q のグラフは、
:y=ax<sup>2</sup> のグラフをy軸方向に q だけ平行移動した放物線であり、
::'''軸はy軸'''、 '''頂点は 点 (0, q)''' である。
|}
{{-}}
=== y=a(x-p)² のグラフ ===
[[File:Y=2(x-3)^2.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup> のグラフは、 2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であり、
:軸は 直線 x=3
:頂点は 点(3, 0)
の放物線である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup> のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p だけ平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, 0) '''
である。
|}
{{-}}
=== y=a(x-p)² +q のグラフ ===
[[File:Y=2(x-3)^2+4.svg|thumb|400px]]
y=2(''x''-3)<sup>2</sup>+4 のグラフは、 y=2(''x''-3)<sup>2</sup> のグラフをy軸方向に4だけ平行移動した放物線である。
そして、y=2(''x''-3)<sup>2</sup> のグラフは y=2x''<sup>2</sup>'' のグラフをx軸方向に3だけ平行移動した放物線であったので、つまり
y=2(''x''-3)<sup>2</sup>+4 のグラフは、y=2x''<sup>2</sup>'' のグラフを x軸方向に3, y軸方向に4, 平行移動した放物線である。
よって、
:軸は直線 x=3
:頂点は 点(3, 4)
である。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|
|-
|style="padding:5px"|
: 一般に y=a(x-p)<sup>2</sup>+p のグラフは、
:y=ax<sup>2</sup> のグラフをx軸方向に p, y軸方向にq , 平行移動した放物線であり、
::'''軸は 直線 x=p''' 、 ''' 頂点は 点 (p, q) '''
である。
|}
{{-}}
=== y=ax² + bx +c のグラフ ===
==== 一般形と標準形 ====
本節では2次関数の一般形と標準形について学ぶ。この知識は後で2次関数をグラフで表す際に役立つ。
先ほど現れた
: <math>y=ax^2+bx+c</math>
という形の式 (<math>a\neq 0</math>) を'''2次関数の一般形'''といい、
: <math>y=a(x-p)^2+q</math>
という式を'''2次関数の標準形'''という。
(上で、<math>a\neq 0</math>、<math>b</math>、<math>c</math>、<math>p</math>、<math>q</math>は定数で、<math>x</math>は変数であるものとする。)
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''一般形と標準形の関係'''
|-
|style="padding:5px"|
;定理
:2次関数の一般形は必ず2次関数の標準形に変形することができ、逆に2次関数の標準形は必ず2次関数の一般形に変形することができる。
|}
一般形で表記されている2次関数を標準形で表記する事を'''平方完成'''という。
後述するように、標準形は2次関数をグラフで表す際に用いる。
==== 証明 ====
標準形
: <math>y=a(x-p)^2+q</math>
で表記されている2次関数の右辺を展開すると、
: <math>y= ax^2 -2apx + (ap^2+q)</math>
となるので、
: <math>b=-2ap, \quad c=ap^2+q</math>
とすれば一般形になる。
逆に一般形
: <math>y=ax^2+bx+c</math>
で表記されている2次関数は以下の手順で標準形に変換できる(この変形手法を'''平方完成'''という)。
:<math>y=ax^2+bx+c</math>
:<math>=a\left(x^2+\frac{b}{a}x\right)+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2-\left(\frac{b}{2a}\right)^2\right\}+c</math>
:<math>=a\left\{x^2+\frac{b}{a}x+\left(\frac{b}{2a}\right)^2\right\}-\frac{b^2}{4a}+c</math>
:<math>=a\left(x+\frac{b}{2a}\right)^2-\frac{b^2-4ac}{4a}</math>
ここで、
:<math>
p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}
</math>
とおくと、
:<math>
y=a(x-p)^2+q
</math>
となり標準形で表されたことになる。
==== 例題 ====
;例題
:次の2次関数が一般形ならば標準形に、標準形ならば一般形にせよ。
:#<math>y=2(x+4)^2+4</math>
:#<math>y=4x^2+12x+9</math>
:#<math>y=x^2+5x</math>
;解
:#<math>y=2x^2+16x+36</math>
:#<math>y=4\left(x+\frac{3}{2}\right)^2</math>
:#<math>y=\left(x+\frac{5}{2}\right)^2-\frac{25}{4}</math>
=== 一般の2次関数のグラフ ===
一般の2次関数をグラフで表現してみよう。 前述のように2次関数は平方完成の手順を踏む事により必ず標準形で表記可能なので、2次関数<math>y=ax^2+bx+c</math>を標準形
:<math>
y=a(x-p)^2+q
</math>
に変換する。ここで、
:<math>
p=-\frac{b}{2a},\quad q=-\frac{b^2-4ac}{4a}
</math>
この標準形のグラフは<math>y=ax^2</math> のグラフを <math>x</math> 軸方向に <math>p</math>, <math>y</math> 軸方向に <math>q</math> 平行移動させたものと考えることができる。よって以下の事実が結論付けられる。
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフ'''
|-
|style="padding:5px"|
;定理
:2次関数 <math>y=ax^2+bx+c</math> のグラフは軸が<math>x=-\frac{b}{2a}</math> , 頂点が <math>\left(-\frac{b}{2a},-\frac{b^2-4ac}{4a}\right)</math> であるような放物線である。
|}
==== ※ 参考 ====
{{コラム|グラフの平行移動|
2次関数にかぎらず、一般に関数 y=f(x) のグラフをy軸の正の方向に q だけ平行移動したグラフは、
:関数 '''y = f(x) +q'''
のグラフになる。
また、関数 y=f(x) のグラフをx軸の正の方向に p だけ平行移動したグラフは、
:関数 '''y = f(x-p)'''
のグラフになる。
よって、関数 y=f(x) のグラフをx軸の正の方向に p 、y軸の正の方向にq だけ平行移動したグラフは、
:関数 '''y = f(x-p) +q'''
のグラフになる。
}}
{{コラム|グラフの対称移動|
2次関数にかぎらず、一般に関数 y=f(x) のグラフをx軸に関して対称に移動したグラフは、
:関数 '''y = -f(x)'''
のグラフになる。
また、関数 y=f(x) のグラフをy軸に関して対称に移動したグラフは、
:関数 '''y = f(-x)'''
のグラフになる。
よって、関数 y=f(x) のグラフを原点に関して対称に移動したグラフは、
:関数 '''y = - f(-x)'''
のグラフになる。
}}
==== 例題 ====
;例題
:2次関数 <math>y=\frac{1}{2}x^2+3x+\frac{1}{2}</math> のグラフをかけ。
;解
::<math>\begin{matrix}
y& =& \cfrac{1}{2}x^2+3x+\cfrac{1}{2} \\[10pt]
{} & =& \cfrac{1}{2}(x+3)^2-4
\end{matrix}</math>[[画像:二次関数-例題1.png]]
:ゆえに、求めるグラフは軸 <math>x=-3</math>、頂点 <math>(-3,-4)</math> の下に凸な放物線である。
;例題
:2次関数 <math>y=4x^2+20x+4</math> のグラフは <math>y=4x^2</math> のグラフをどのように平行移動させたものか。
;解
::<math>\begin{matrix}
y&=&4x^2+20x+4\\
{}&=&4\left(x+\frac{5}{2}\right)^2-21
\end{matrix}</math>
:であるので、<math>y=4x^2</math> のグラフを <math>x</math> 軸方向に <math>-\frac{5}{2}</math>、<math>y</math> 軸方向に -21 移動させたものである。
=== 2次関数のグラフと二次方程式 ===
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸に共有点があるとき、その共有点の<math>y</math>座標は0であるから、共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解である。
<br>
* 問題例
** 問題
次の2次関数のグラフと<math>x</math>軸の共有点の座標を求めよ。<br>
(i)
:<math>y=x^2-2x-1</math>
(ii)
:<math>y=-4x^2-4x-1</math>
** 解答
(i) 2次方程式<math>x^2-2x-1=0</math>を解くと
:<math>x = \frac {-(-2) \pm \sqrt{(-2)^2 - 4 \times 1 \times (-1)}}{2 \times 1} = \frac {2 \pm \sqrt{8}}{2} = \frac {2 \pm 2 \sqrt{2}}{2} = 1 \pm \sqrt{2}</math>
よって、共有点の座標は
:<math>
\left(1+ \sqrt{2}\ ,\ 0 \right)\ ,\ \left(1- \sqrt{2}\ ,\ 0 \right)
</math>
(ii) 2次方程式<math>-4x^2-4x-1=0</math>を解くと
:<math>4x^2+4x+1=0</math>
:<math>(2x+1)^2=0</math>
:<math>x=- \frac {1}{2}</math>
よって、共有点の座標は
:<math>
\left(- \frac {1}{2}\ ,\ 0 \right)
</math>
(ii)のグラフはただ1点<math>\left(- \frac {1}{2}\ ,\ 0 \right)</math>で共有し、共有点の<math>x</math>座標は二次方程式<math>-4x^2-4x-1=0</math>の重解である。このようなとき、2次関数のグラフは<math>x</math>軸に'''接する'''といい、その共有点を'''接点'''という。
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸との共有点の<math>x</math>座標は、二次方程式<math>ax^2+bx+c=0</math>の実数解で、実数解の個数は<math>D=b^2-4ac</math>の符号によって決まる。
<math>b^2-4ac</math> のことを 2次方程式 <math>ax^2+bx+c=0</math>の '''判別式''' (はんべつしき)という。
:※ 「D」とは「判別式」を意味する discriminant の頭文字である。
{| class="wikitable"
|+
! Dの符号 !! D>0 !! D=0 !! D<0
|-
! a > 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a)0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a)0.svg|center|150px]]
|-
! a < 0 のとき
| [[File:Number of real solutions of quadratic equation D)0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D=0 a(0.svg|center|150px]] || [[File:Number of real solutions of quadratic equation D(0 a(0.svg|center|150px]]
|-
! 共有点の個数
| <center>2個</center> || <center>1個</center> || <center>0個</center>
|-
|}
{| style="border:2px solid pink;width:80%" cellspacing=0
|style="background:pink"|'''2次関数のグラフと<math>x</math>軸の位置関係'''
|-
|style="padding:5px"|
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac</math>とするとき
:::<math>D>0 \quad \Longleftrightarrow \quad </math> 異なる2点で交わる
:::<math>D=0 \quad \Longleftrightarrow \quad </math> 1点で接する
:::<math>D<0 \quad \Longleftrightarrow \quad </math> 共有点をもたない
|}
==== 例題 ====
** 問題
次の2次関数のグラフと<math>x</math>軸との共有点の個数を求めよ。
(I)
:<math>
y=3x^2-x+3
</math>
(II)
:<math>
y=-2x^2-3x+5
</math>
(III)
:<math>
y=x^2-2 \sqrt{3} x+3
</math>
** 解答
(I)
:<math>
D=(-1)^2-4 \times 3 \times 3 =-35<0
</math>
だから、<math>x</math>軸との共有点はなし。<br>
(II)
:<math>
D=(-3)^2-4 \times (-2) \times 5 =49>0
</math>
だから、<math>x</math>軸との共有点は2個。<br>
(III)
:<math>
D=(2 \sqrt{3})^2-4 \times 1 \times 3 =0
</math>
だから、<math>x</math>軸との共有点は1個。
== 定義域と値域 ==
=== 定義域と値域 ===
2次間数にかぎらず、一般に関数 y = f(x)において、
変数x のとりうる値の範囲のことを'''定義域'''(ていぎいき、domain)という。
また、xの値に対応して y の値のとりうる範囲のことを'''値域'''(ちいき、range)という。
多くの場合、値域は定義域の影響を受けて変化する。
;例
:たとえば、関数 y=x は、定義域をもし x ≧ 1 とした場合、
:関数 y=x の値域は y ≧ 1 となる。
また、この例のように、定義域や値域を表す場合に、不等式で表す手法も多い。
;例2
:たとえば、関数 y=2x は、定義域をもし 1 ≦ x ≦ 3 とした場合、
:関数 y=2x の値域は 2 ≦ y ≦ 6 となる。
略式の記法として、定義域を表す場合に、
: y=2x ( 1 ≦ x ≦ 3 )
のようにカッコ内の不等式で表すことも、よくある。この記法(「 y=2x ( 1 ≦ x ≦ 3 ) 」)の場合、定義域は 1 ≦ x ≦ 3 であると主張している。
つまり、定義域を数式ではっきりと示す必要がある場合には
:<math> y=f(x) \qquad ( a\leqq x \leqq b ) </math>
のように示すことがよくある。この関数の場合、定義域は<math>a\leqq x \leqq b</math>である。
特に定義域の指定されてない場合は、可能なかぎり定義域を広くとるのが普通である。
:たとえば、特に定義域が指定されていない場合、 関数 <math> y=x</math> の定義域は、実数全体である。
:関数 <math> y=\frac{1}{x} </math> の定義域には、 x=0 を含めることはできない。そのため、特に定義域が指定されていない場合、 関数 <math> y=\frac{1}{x} </math> の定義域は、0をのぞく実数全体である。
;その他の例
:たとえば、関数 y=-x+5 は、定義域をもし 1 ≦ x ≦ 8 とした場合、
:値域は -3 ≦ y ≦ 4 となる。
=== 最大値と最小値 ===
たとえば、さきほどの関数 y=2x の問題の例 、
:例 (再掲)
:たとえば、関数 y=2x は、定義域をもし 1 ≦ x ≦ 3 とした場合、
:関数 y=2x の値域は 1 ≦ y ≦ 6 となる。
では、与えられた定義域で、この関数の値のとりうる最大の値は 6 である。
このように、ある関数が、与えられた条件下でもつ最大の値のことを、その関数の'''最大値'''(さいだいち, maximum)という。
または、さきほど習った「値域」という言葉をつかうなら、「最大値」とは、値域の最大の値のことである。
:
つまり、関数 y=2x ( 1 ≦ x ≦ 3 ) の最大値は 6 である。
もし、定義域を指定しなければ、関数 y=2x に最大値は無い(定義域の指定がなければ、xが どこまでも大きくなるし、それに比例してyも大きくなるので)。
同様に、ある関数が、与えられた条件下でもつ最小の値のことを、その関数の'''最小値'''(さいしょうち, minimum)という。
関数 y=2x ( 1 ≦ x ≦ 3 ) の最小値は 2 である。
;例1
:関数 y=-x+5 ( 1 ≦ x ≦ 8 )では、
:値域は -3 ≦ y ≦ 4 なので、
:最大値は 4 , 最小値は -3 である。
;例2
: y=2x ( 1 < x ≦ 3 )では、(※ 不等号が「≦」ではなく「<」になっているのに注意!)
:値域は 2 < y ≦ 6 であるが、
:最小値は無い。xを1に近づけていくことで、yは2に近づいていくが、しかしxが1になることがないので、よってyが2になることもないので、この問題ではyに最小値は無い。
:この問題でのyの最大値は6である。
== 2次関数の値の変化 ==
=== 2次関数の最大値・最小値 ===
[[Image:Qfunction.png|thumb|right|250px|図1 (y=x<sup>2</sup>のグラフ)]]
定義域が実数全体である2次関数<math>y=ax^2+bx+c</math> では、右図のように、aの正負によって最小値(a>0 の場合)、または最大値がある(a<0の場合)。
;例1 関数 <math>y=x^2</math> の場合
:関数 <math>y=x^2</math> では、すべての実数 <math>x</math> に対して、<math>x^2\geqq 0</math> であるので( 等号成立は<math>x=0</math>のときのみ)、
:よって、関数 <math>y=x^2</math> は<math>x=0</math>のとき最小値0をとる。 関数 <math>y=x^2</math> に最大値は存在しない。
;例2 関数 y=2(''x''-3)<sup>2</sup>+4 の場合
:たとえば、実数の範囲で考えた場合、関数 y=2(''x''-3)<sup>2</sup>+4 の最小値は4である。
:関数 y=2(''x''-3)<sup>2</sup>+4 に最大値は無い。
;例3 関数 y=-x<sup>2</sup> の場合
:x<sup>2</sup> の係数がマイナスなので、最大値をもつ。最小値はもたない。
:実数の範囲で考えた場合、関数 y=x<sup>2</sup> の最大値は 0 である。
:関数 y=-x<sup>2</sup> に最小値は無い。
==== 例題 ====
;例題
:2次関数<math>y=x^2+5x+5</math>の<math>-3\leq x \leq 0</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数y=x^2(plus)5x(plus)5.png|right|frame|図2]]
:<math>y=\left(x+\frac{5}{2}\right)^2-\frac{5}{4}</math>
と標準形にし、グラフを書くと右図のようになる。
したがってグラフより答えは最大値は<math>x=0</math> のとき<math>5</math>, 最小値は<math>x=-\frac{5}{2}</math> のとき<math>-\frac{5}{4}</math>。
;例題
:2次関数<math>y=-\frac{1}{2}x^2+x+\frac{3}{2}</math> の<math>0\leq x < 3</math> の範囲での最大値・最小値を求めよ。
;解
[[画像:高等学校数学I 二次関数の最大最小例題2.png|frame|right|図3]]
上の例題と同様の問題のように思えるが、定義域が<math>0\leq x \leq 3</math> ではなく、<math>0\leq x < 3</math> となっている。とりあえずグラフをかいてみることにする。
:<math>y=-\frac{1}{2}(x-1)^2+2</math>.
グラフから、最大値は<math>x=1</math> のとき<math>2</math>, 最小値は存在しない。
=== 二次不等式 ===
二次不等式とは、<math>x</math> の二次式と不等号で表される式のことをいい、
:<math>ax^2+bx+c>0</math>, <math>ax^2+bx+c\geq 0</math>
のような形をしている。グラフを利用して二次不等式の解を考えてみよう。
;例題
[[画像:高等学校数学I_二次不等式の例題1.png|frame|right|図4]]
:二次不等式 <math>x^2+4x>0</math> を解け。
2次関数 <math>y=x^2+4x=x(x+4)</math> のグラフは右図のようになる。
<math>x^2+4x>0</math> となる<math>x</math> の値の範囲は右のグラフの<math>x</math> 軸より上側にある部分に対する<math>x</math> の値の範囲であるから、
:<math>x<-4 , 0<x</math>.
この問題をより一般化してみよう。
2次不等式<math>ax^2+bx+c>0</math> を解くには<math>y=ax^2+bx+c</math> のグラフをかけば一目瞭然である。しかし、グラフをかいた場合にも我々が注目するのは<math>x</math> 軸より上か下かということと、<math>x</math> 軸との共有点である。<math>x</math> 軸との共有点は二次方程式<math>ax^2+bx+c=0</math> の解であるが、二次方程式の解の公式を思い出してほしい。それは次のようなものであった。
:二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、その解<math>x</math> は、
::<math>x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}</math>
これを用いると、二次方程式<math>ax^2+bx+c=0</math>が解を持つとき、
:<math>ax^2+bx+c=a\left(x-\frac{-b+\sqrt{b^2-4ac}}{2a}\right)\left(x-\frac{-b-\sqrt{b^2-4ac}}{2a}\right)</math>
と因数分解形で表すことができる。(右辺を展開して左辺と一致することを確かめてみよ。)
ここで、
:<math>\alpha=\frac{-b-\sqrt{b^2-4ac}}{2a}, \beta=\frac{-b+\sqrt{b^2-4ac}}{2a}</math>
とおくと、
:<math>ax^2+bx+c>0\Longleftrightarrow a(x-\alpha)(x-\beta)>0</math>
となる。<math>a>0</math> のとき<math>y=ax^2+bx+c</math> のグラフは下に凸であるからこの不等式の解は、
:<math>x<\alpha,\beta<x</math>
となる。<math>a<0</math> のときは両辺を<math>-1</math> で割ってから考えると、
:<math>\alpha<x<\beta</math>
となる。
==== 2次関数のグラフがx軸と異なる2点で交わる場合 ====
*'''例題'''
** 問題
次の二次不等式を解け。<br>
(i)
:<math>12x^2+17x-7<0</math>
(ii)
:<math>2x^2+6x+1 \ge 0</math>
** 解答
(i) 二次方程式<math>12x^2+17x-7=0</math>を解くと
:<math>(4x+7)(3x-1)=0</math>
:<math>x=- \frac {7}{4}\ ,\ \frac {1}{3}</math>
よって、この二次不等式の解は
:<math>- \frac {7}{4} <x< \frac {1}{3}</math>
(ii) 二次方程式<math>2x^2+6x+1=0</math>を解くと
:<math>x = \frac {-6 \pm \sqrt{6^2 - 4 \times 2 \times 1}}{2 \times 2} = \frac {-6 \pm \sqrt{28}}{4} = \frac {-6 \pm 2 \sqrt{7}}{4} = \frac {-3 \pm \sqrt{7}}{2}</math>
よって、この二次不等式の解は
:<math>\frac {-3- \sqrt{7}}{2} \le x\ ,\ x \le \frac {-3+ \sqrt{7}}{2}</math>
==== 2次関数のグラフがx軸と接する場合 ====
<math>y=x^2-6x+9</math>の値の符号について考えよう。<br>
平方完成をすると
:<math>y=(x-3)^2</math>
この関数のグラフは、<math>x</math>軸と点<math>(3\ ,\ 0)</math>で接する。<br>
<math>y=x^2-6x+9</math>の値の符号について、下の表のようになる。
<table border="1" cellpadding="2">
<tr><th><math>x</math></th><th><math>x<3</math></th><th><math>3</math></th><th><math>3<x</math></th></tr>
<tr><th><math>y=x^2-6x+9</math></th><td><center><math>+</math></center></td><td><math>0</math></td><th><center><math>+</math></center></th></tr>
</table>
よって
:<math>x^2-6x+9>0</math>の解は 3以外のすべての実数
:<math>x^2-6x+9<0</math>の解は ない
:<math>x^2-6x+9 \ge 0</math>の解は すべての実数
:<math>x^2-6x+9 \le 0</math>の解は <math>x=3</math>
==== 例題 ====
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+1>0</math>
(ii)
:<math>9x^2+12x+4 \le 0</math>
(iii)
:<math>4x^2-4x+1<0</math>
(iv)
:<math>x^2-10x+25 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+1>0</math>
:<math>(x+1)^2>0</math>
よって、-1以外のすべての実数<br>
(ii)
:<math>9x^2+12x+4 \le 0</math>
:<math>(3x+2)^2 \le 0</math>
よって、<math>x=- \frac {2}{3}</math><br>
(iii)
:<math>4x^2-4x+1<0</math>
:<math>(2x-1)^2<0</math>
よって、解はない<br>
(iv)
:<math>x^2-10x+25 \ge 0</math>
:<math>(x-5)^2 \ge 0</math>
よって、すべての実数
==== 2次関数のグラフがx軸と共有点をもたない場合 ====
2次関数<math>y=ax^2+bx+c</math>のグラフと<math>x</math>軸の位置関係について、<math>D=b^2-4ac<0</math>のとき、<math>x</math>軸と共有点をもたなかった。<br>
さらに<math>a>0</math>という条件を加えると、<math>y=ax^2+bx+c</math>のグラフは<math>x</math>軸より上側にある。
<math>a>0\ ,\ D=b^2-4ac<0</math>のとき
:<math>ax^2+bx+c>0</math>の解は すべての実数
:<math>ax^2+bx+c<0</math>の解は ない
==== 例題 ====
** 問題
次の二次不等式を解け。<br>
(i)
:<math>x^2+2x+3<0</math>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
(iii)
:<math>-x^2+x-1 \ge 0</math>
** 解答
(i)
:<math>x^2+2x+3<0</math>
:<math>D=2^2-4 \times 1 \times 3 =-8<0</math>
よって、解はない<br>
(ii)
:<math>2x^2-6x+5 \ge 0</math>
:<math>D=(-6)^2-4 \times 2 \times 5 =-4<0</math>
よって、すべての実数<br>
(iii)
:<math>-x^2+x-1 \ge 0</math>
:<math>x^2-x+1 \le 0</math>
:<math>D=(-1)^2-4 \times 1 \times 1 =-3<0</math>
よって、解はない
=== (発展)放物線と直線 ===
放物線と直線の共有点について考えよう。
* 問題例
** 問題
放物線 <math>y=x^2-4x+5</math> と次の直線の共有点の座標を求めよ。<br>
(i)
:<math>y=x+1</math>
(ii)
:<math>y=2x-4</math>
** 解答
(i) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=x+1
\end{cases}</math>
の実数の解である。<math>y=x+1</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=x+1</math>
すなわち
:<math>x^2-5x+4=0</math>
これを解いて
:<math>
x=1 \ ,\ 4
</math>
<math>x=1</math> のとき <math>y=2</math><br>
<math>x=4</math> のとき <math>y=5</math><br>
よって、共有点の座標は
:<math>
\left(1\ ,\ 2 \right)\ ,\ \left(4\ ,\ 5 \right)
</math>
である。<br>
(ii) 求める共有点の座標は、連立方程式
:<math>\begin{cases}
y=x^2-4x+5\\
y=2x-4
\end{cases}</math>
の実数の解である。<math>y=2x-4</math> を <math>y=x^2-4x+5</math> に代入すると
:<math>x^2-4x+5=2x-4</math>
すなわち
:<math>x^2-6x+9=0</math>
これを解いて
:<math>
x=3
</math>
このとき <math>y=2</math><br>
よって、共有点の座標は
:<math>
\left(3\ ,\ 2 \right)
</math>
である。
例題の(ii)のように、放物線とその軸に平行でない直線がただ1点を共有するとき、放物線は直線に'''接する'''といい、共有点を'''接点'''という。
== 演習問題 ==
* [[高等学校数学I 二次関数 演習A|演習問題A]]
* [[高等学校数学I 二次関数 演習B|演習問題B]]
{{DEFAULTSORT:こうとうかつこうすうかくI にしかんすう}}
[[Category:高等学校数学I|にしかんすう]]
hhvegsemw9m0y01ii69arrv29t5ka3a
CGI
0
1609
205959
205805
2022-07-28T22:44:15Z
Ef3
694
s/シュバング行/[[shebang]]/
wikitext
text/x-wiki
<small>{{Pathnav|メインページ|工学|情報技術|プログラミング}}</small>
{{Wikipedia|Common Gateway Interface}}
{{Otheruses|CGIの仕組み|[[Perl]]におけるCGIプログラミング|Perl/CGI}}
'''CGI'''(シージーアイ、'''''C'''ommon '''G'''ateway '''I'''nterface'')とは、[[w:Webサーバ|ウェブサーバ]]が独立した外部プロセス(CGIプログラム)で[[w:ウェブページ|ウェブページ]]を生成できるようにする仕組みです。CGIプログラムの記述には[[Perl]]などの[[w:スクリプト言語|スクリプト言語]]がよく用いられますが、基本的に[[w:標準ストリーム|標準入出力]]を備えている[[w:プログラミング言語|プログラミング言語]]であれば(たとえば[[C言語]]や[[シェルとシェルスクリプト|シェルスクリプト]]でも)CGIプログラムを記述することは可能です。
== 概要 ==
ウェブサーバのApacheは、(世間一般でサーバ向けプログラム言語と言われている)PHPやPerlのコードだけでなく、C言語をコンパイルしたバイナリファイルも実行できます(ただし、バイナリなので、ホストアーキテクチャごとにコンパイルしなおす必要があるので、取り回しが悪いので、用途は例外的に処理速度が極端に必要な場合以外には、めったにC言語バイナリの読み取りは用いられない)。
広い意味での『CGI』の「プログラミング言語の内容を実行する」との意味は、具体的にはウェブページでユーザからの入力に応答したり、動的な出力を行ったりするための機構などもCGIです。CGIの規格はhttp://hoohoo.ncsa.uiuc.edu/cgi/interface.html(インターネットアーカイブ: https://web.archive.org/web/20070809114039/hoohoo.ncsa.uiuc.edu/cgi/interface.html )で定められています。ここで'''動的'''とはたとえば、ブラウザからリクエストを受け付けた日時をページとして表示させるものも動的なページの一つです。[[w:ウィキ|ウィキ]]や[[w:ブログ|ブログ]]なども動的なページに含まれます。これに対して'''静的'''とはあらかじめ用意してある[[HTML]]等で記述されたドキュメントをリクエストへの応答時に変更を行わずに配信することを指しています。
PerlやPHPなど用いている言語が何かかは別として、現在インターネット上で大規模、あるいは著名なウェブサイトのほとんどは何らかの動的な仕組みを有していると考えられます。CGIの仕組みを理解することは大規模なデータをインターネット上で出版する技術的な背景を学ぶのと強い関係があると言えます。
CGIが行う動的な作用は主に以下の4要素によって成り立っています。
* [[w:標準ストリーム|標準入力・標準出力]] ・ [[w:コマンド (コンピュータ)| コマンドライン]] [[w:引数|引数]] (コマンドライン引数)
* [[w:環境変数|環境変数]]
* [[w:Hypertext Transfer Protocol|HTTP]] エラーが来る場合があります。 [[w:HTTPステータスコード|HTTPステータスコード]]
* HTMLの[[w:フォーム (ウェブ)| FORM]] [[w:HTML要素|要素]]
ウェブサーバで動的にコンテンツを生成する仕組みには他に、ウェブサーバのモジュール(mod_perlなど)やFastCGIがあります。
これらのCGIと大きな違いは、CGIの「リクエストごとに新しくプリオセスを生成する」という負荷の大きな処理を、ウェブサーバプロセス内で実行したり、常駐するプロセスとウェブサーバの間での通信を行うことでサケている点です。
== C言語でCGI ==
ApacheはCGIを実行するためには {{code|htttpd.conf}} の書換えの必要があります。
XAMPPであれば、場所は、\xampp\apache\conf の中に設定ファイル
:「http.conf」
があるので、探して httpd.conf のファイルの中身の下記のような部分を、下記のようになるように書換えます。
多くのGNU/Linuxのディストリビューションでは、 /etc/httpd/conf に httpd.conf があります。
/etc/httpd.conf の所有者は root もしくは www なので、{{code|sudo vi /etc/httpd.conf}} などとし書込み保護した状態を維持してください。
<div style="border:red 3px double">過去の編集で、'''httpd.conf の所有者をログイン可能ユーザに変更することを指図する記述'''がありましたが、重大なセキュリティホールとなるので、もしその記載の通りに設定してしまった方がいたら、/etc/httpd.conf の所有者を root に戻し、所有者以外に書込みパーミッションを与えていないか確認ください。</div>
=== CGI使用設定の方法 ===
設定の方法は2種類あります。
==== <code> <Directory /> </code> タグの内容を書き換える方法 ====
'''書き換え前'''
<SyntaxHighlight lang="apache">
<Directory />
AllowOverride none
Require all denied
</Directory>
</SyntaxHighlight>
'''書き換え後'''
* AllowOverride のあとを none から ALL に書き換える。
* Optionsのあとを「ExecCGI」に書き換える。
<SyntaxHighlight lang="apache">
<Directory "C:/xampp/cgi-bin">
AllowOverride All
Options ExecCGI
Require all granted
</Directory>
</SyntaxHighlight>
==== ScriptAlias を書き換える方法 ====
ScriptAlias という行を、下記のようになるように、書き換えます。
<SyntaxHighlight lang="apache">
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</SyntaxHighlight>
どちらの方法で編集するにしても、もしApacheをすでに立ち上げていたら、いったんApacheを終了してから、再度、立ち上げ癒し手下さい。
Apacheの起動時に設定ファイルを読み込む方式のようなので、立ち上げ直さないと、設定が反映されない場合があります。
Apacheを終了させるには、コマンド
<SyntaxHighlight lang="bash">
sudo service httpd stop
</SyntaxHighlight>
でApacheが終了します。
右上のXボタンを押してコマンドラインなどのウィンドウを閉じるだけでは、Apacheが終了しない場合が普通なので、終了させるためにはコマンド入力で確実に、いったんApacheを終了させてください。
Apacheを立ち上げるには、コマンド
<SyntaxHighlight lang="bash">
sudo service httpd start
</SyntaxHighlight>
で立ち上がります。
=== 次の作業 ===
今後の作業の暗黙の前提として、Apacheサーバーを立ち上げるのを忘れないように(よく忘れてエラーになる)。さっさと先にApacheサーバを立ち上げよう。
さて、たとえば、下記のようなC言語ファイルをテキストファイル(『メモ帳』で良い)に書いて、コンパイル(gccでも良い)して、実行ファイル(windowsならexeファイル)にしよう。
'''コード例'''
<syntaxhighlight lang="C">
#include <stdio.h>
int main(void) {
printf("Content-Type: text/html\r\n\r\n");
int a = 3, b = 4;
int c = a + b;
printf("sum %d\n", c);
return 0;
}
</syntaxhighlight>
<code>Content-Type: text/html</code>
というのは、Apache側が解釈のために必要な情報であり、これから送られてくるprintf文の内容が、テキストファイルまたはHTMLファイルであることを宣言しているテキスト文です。「HTMLヘッダー」などと言われる、webでの情報のやりとりをする際の、送受信メッセージ文の一種です。
さて、Windows版ApacheであるXAMPPの場合、上記コード例をコンパイルして出来上がった実行ファイル(ファイル名を指定しなければWindows版gccなら「 a.exe 」という名前になる)を、
フォルダ
\xampp\cgi-bin
に入れればいい。
GNU/Linux版の素のApacheの場合、フォルダ cgi-bin の場所は
/var/www
ですので、そこにa.outなどの実行ファイルをいれればすみます。ですが、初期設定では、root所有になってますので、chownコマンドで所有者を変えてください。
sudo chown ログインユーザ名 /var/www/cgi-bin
とにかく、cgi-bin フォルダにバイナリファイルを入れたら、のあと単にウェブ・ブラウザーで
http://localhost/cgi-bin/a.exe
にアクセスすればいい。
または実行ファイル名がa.exe以外の別のファイル名なら、
http://localhost/cgi-bin/実行ファイル名
にアクセスすればいい。
すると、
上記コードの場合
sum 7
というふうに、webページでprintf文の内容が表示される。(GNU/Linux版Apacheでも同様の結果です。Fedora 32 で2020年7月14日に確認。)
C言語バイナリだろうが、Apache側がHTMLファイルを解釈してくれるので、なので、下記のようにprintf文中にHTMLタグを書いてバイナリ化しておけば、自動的にApacheがうまく変換して、ブラウザにHTMLタグの指示通りに表示できるようにしてくれる。
'''コード例'''
<syntaxhighlight lang="C">
#include <stdio.h>
int main(void) {
printf("Content-Type: Text/html\r\n\r\n");
int a = 3, b = 4;
int c = a + b;
printf("<h1>sum %d</h1>\n", c);
return 0;
}
</syntaxhighlight>
上記コードをコンパイルしたバイナリファイルをフォルダ cgi-bin に入れたあと、ウェブ・ブラウザーでアクセスすると、大きな文字で、
<big>sum 7</big>
と表示される。
(GNU/Linuxでも同様の結果です。Fedora 32 で2020年7月14日に確認。)
== CGIそのものの実装方法 ==
もし、興味あるのがCGIを使ったサーバ公開ではなく、CGIそのものの機能を作りたい場合、そのためのCGIの原理の知識は色々と考えられますが、OSのコマンドラインに搭載されている
:標準出力のリダイレクト機能を使う方法
が、原理的と思われる方法です。(なお、理解のために方法を紹介しているだけであり、通常のサーバ構築ではCGI機能自体の新規の実装は不要な作業です。すでにApacheなどの既存のサーバソフトにCGI機能が搭載されているからです。)
また、コマンドプロンプトに実行させたいコマンド列をテキストファイルに記述して繰り返し使うことが出来ます。
Windowsならバッチファイル、UnixたUnixに類したOSならばシェルスクリプトと呼ばれます。
本科目では、リダイレクトについて説明します。バッチファイルの解説は別の科目にゆだねます。
=== Windowsの場合 ===
リダイレクトについては、Windowsの場合、DOSプロンプトで
<pre>
実行ファイル名 1> リダイレクト先のファイル名
</pre>
と入力すれば、標準出力に出される文字列がそのまま、リダイレクト先のファイルに書き込まれて保存されます。
たとえば実行ファイル名「hello.exe」で、リダイレクト先ファイル名「ridtest.txt」なら
<pre>
hello.exe 1> ridtest.txt
</pre>
というコマンドになります。
間の演算子の機能は、
:<code> 1> </code> だと実行ファイル成功時のリダイレクト、
:<code> 2> </code> だと実行ファイル失敗時のエラーメッセージのリダイレクト、
になります。
Apacheなどのウェブサーバは、指定されたCGI用のフォルダ内にある実行ファイルについては、すべてリダイレクトして実行すれば、それの出力文字列がテキストファイル(内容はHTMLファイルのこと)になりますので、あとは他のHTMLファイルと同様にリダイレクト先テキストファイルを読み取って表示すればいいだけです。
GNU/Linuxなど別OSでも、記法は違いますが、同様のリダイレクト機能があるので、それを使えばCGI機能が簡単に実装できるでしょう。
=== GNU/Linux の場合 ===
実行ファイルがカレント・ディレクトリにある場合、
ストリームを指定したリダイレクトのためのコマンドの書式は、
<pre>
./実行ファイル名 1> リダイレクト先のファイル名
</pre>
です。これで、リダイレクト先ファイルに、書き込まれます。
この書式は、sh ksh bash zsh に共通ですが csh とは異なります。
たとえば実行ファイル名 <code>hello</code> で、リダイレクト先ファイル名が <code>text.txt</code> なら
./hello 2> text.txt
/pre>
というコマンドになります。
なお、ストリーム番号の意味は
:<code> 1> </code> とすると標準出力のリダイレクト(ディフォルト)
:<code> 2> </code> とすると標準エラー出力のリダイレクト
になります。
== 開発の参考 ==
[[Perl/CGI]] のページも見てください。
[[Perl/ライブラリ・モジュールとオブジェクト指向]] のページもご覧ください。
[[w:テキストエディタ|テキストエディタ]] [[w:TeraPad|TeraPad]](テラパッド)等の[[w:テキストファイル|テキスト]](拡張子 <nowiki>*</nowiki>.txt)を <nowiki>*</nowiki>.cgi に変えた物です。書かれている内容はtextなのでコード指定はテキストエディタのファイルオープンでUTF-8に変えてから日本語が使えます。変えないと文字化けします。
* パソコンで初期の拡張子の表示を「表示する」にしないと、<nowiki>*</nowiki>.cgi.txt になってしまいます。名前付けは英字と数字しか使えません。Windowsの場合、コントロールパネルの検索で「拡張子」で設定してください。
動作が確認され ミスがないのが確認されたら、契約サーバーに[[w:アップロード|アップロード]]を[[w:FFFTP|FFFTP]]等でおこない、皆さんに楽しんでもらいましょう。属性(パーミッション)の変更もお忘れなく。
[[Perl/制御構造]]・[[Perl/リファレンス]]・[[Perl/はじめに]] もご覧ください。
[[w:とほほのWWW入門]]は、良い情報源になるかもしれません。
本書では[[w:Apache HTTP Server|Apache HTTP Server]]を用いた例を示しますが、ほかにも多くの[[w:Webサーバ|ウェブサーバ]]でCGIが利用可能です。
== Apache HTTP Server 2.2の組込み ==
* ファイル名は、以下指定なき物は「mihon.cgi」[[w:ディレクトリ|ディレクトリ]](フォルダー)はサーバーの場合なんでもよいですが「test-cgi」が無難かも知れません。
* [[w:ローカルサーバー|ローカルサーバー]]の場合、アパッチの指定されたフォルダーの中htdocsやcgi-binに「test-cgi」が無難かも知れません。「test-cgi」はウインドーズの場合、プロパティの書き換えなどの指定か互換性の変更が確か必要だったと思います。
* [[w:ローカルサーバー|ローカルサーバー]]の呼び出し実行は「<nowiki>http://127.0.0.1/test-cgi/mihon.cgi</nowiki>」とか「<nowiki>http://127.0.0.1/cgi-bin/test-cgi/mihon.cgi</nowiki>」をアドレスとして呼び出してください。
* 127.0.0.1はIPv4において[[w:localhost|localhost]]ローカルホストに当たるアドレスです。
* 契約サーバーは場所指定があったり、説明書きを読まないと分りません。『public_html 「test-cgi/mihon.cgi」』 など。
* アップしたら属性(パーミッション)を実行可能な700または755またはサーバー指定の値に変更します。
* ローカルの場合32bitと64bitのバージョンがあるので注意してください。また、アパッチの場合、conf の httpd.conf を書き換え、追加など必要だったと思います。これはインストールされたスタート内のプログラムからも出来ると思います。
** <strike>補足<br>これについてのホームページを見つけました。アドレス http://d.hatena.ne.jp/foussin/20110424/1303589811 分室の分室 443行目以下は、説明が分かってからの追加変更だと思います。最初に動かす時は触らない方がよいと思います。</strike>(リンク切れ)
** Statを押しても黒い箱が出てくる:ちょっと待ってください。Rrestatを押して再起動は出来ませんか?動いたをStopさせた後はRrestatで起動です。
*** Windowsでは通知領域「USB 抜差し等の▲の中」に入っています。
* Perl http://www.activestate.com/ の中の アクティブパル http://www.activestate.com/activeperl/downloads 自分のパソコンを選んでね。トップページは見てください。
* パールはPerl64の場合64を取ってPerlとして覚えて置いてください。パール → アパッチ の順でインストールしてください。
* 過去にウイルス対策ソフト「ノートン」において動作させられませんでしたが、現在は改善されているものと思われます。
* Perlリファレンスなど公開されているリファレンス(レファレンス(reference)とも言う) を組み合わせて一つのプログラムとして組み上げます。
* 不勉強の為、ウインドウズしか持って居ないのでそれしか分りません。詳しくは加筆お願いします。
PHPやPerlとは関係なく、一般に Apache の起動の方法は、GNU/Linux(Fedora32)の場合、ターミナル画面で、コマンド
sudo systemctl start httpd
です。(CentOS 7 以降はこうのようです。)
httpd とはlinuxの場合、Apache のことです。
なお、昔は
sudo service httpd start
というコマンドのようでした。
Apache が正常に動いているか確かめるには、ブラウザを開き、アドレスバーに
http://localhost
と入力します。
[[File:Apache Server 2.jpg|thumb|Apache ロゴマークの羽]]
バージョンにもよりますが、Apacheのロゴマークの羽の絵のあるwebページが表示されていれば、たぶんインストール成功しているでしょう。
Apache を終了するには、GNU/Linuxならターミナル端末で
systemctl stop httpd
で終了します。
昔は
service httpd stop
で終了でした。
終了後に先程の localhost のリンク先に移動しても、何も読み込みできないハズです。(Apacheを終了したので、読み込みできないのが成功。)
そもそもアパッチをどうインストールすればいいかについては、たとえば『[[PHP/確実に動作させるまで]]』などに解説がある。(2020年4月21日の時点では、まだ Apache 専用のページはWikibooks日本語版には無い。)
GNU/Linux の CentOS系の場合、フォルダ階層 <code> var/www/html </code> に、目的のhtmlファイルを入れる。(なお、このようなフォルダ(そこにhtmlなどを入れるとサーバーが公開してくれる場所)のことをドキュメントルート DocumentRoot という。)
あらかじめ、目的のhtmlファイルを作っておく。
たとえば、serverTest.html というファイルが作ってあり、このhtmlファイルを公開したい場合、
まず、
sudo cp serverTest.html /var/www/html
というコマンドになる。
SE Linux がオンだと設定が面倒なので、
sudo setenforce 0
でSE Linuxをオフできる。
ウェブ・ブラウザーで <code> http://localhost/serverTest.html </code> にアクセスして、作成したhtmlどおりの内容が表示されれば、ここまでは成功。(外部公開するには、まだ作業が続く。)
ファイル名の部分(例では末尾の serverTest.html )は、作成したhtmlファイルのファイル名にする。
ウェブ・ブラウザーで確認し終わったら
sudo setenforce 1
でSElinuxの設定をオンに戻す。
== Perl/CGIプログラムの例 ==
PerlでCGIプログラムをする場合、
perlだけでなく perl-CGI もインストールする必要があります。
GNU/Linux の Fedoraの場合、
sudo dnf install perl perl-CGI
で両方とも入ります。sudo dnf install perl だけでは、perl-CGI がインストールされません。
Fedoraにインストールする場合、dnf コマンドでの perl-CGIの末尾3文字の「CGI」は大文字でなければなりません。(でないとダウンローダが認識しないです。)
=== コード例 ===
下記のコードは、Perlによる単純なCGIプログラムの例です。CGIプログラムは、後述の設定をしたあとにウェブ・ブラウザーで閲覧して確認できます。(コマンド端末では確認できないか、著しく確認が困難。)
;コード例
<syntaxhighlight lang="Perl">
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "Hello World!\n";
</syntaxhighlight>
::(2020年6月2日に Fedora 32 でブラウザ上(Firefox 76)での動作を確認ずみ。ただし後述の追加設定が必要。)
text/htmlのあとのエスケープシーケンスは必ず2つ \n\n としてください。もし1つだけだと、ブラウザで見てもエラーになり、「Hello World!」が表示されません。(もし \n が 1つだけだと「500 Internal Server Error」になります。)
;解説
* [[shebang]]
#!/usr/bin/perl
というのは何かというと、これは[[shebang]]というOSの機能で、インタプリタに何を使うかを指定します。
書式はコメント文と同様に「#」から始まり形式的にはコメントですが、コメントではないので消さないでください。消すと動作しなくなります(例えば、bash のプロンプトから実行すると bash スクリプトとして perl スクリプトを実行してしまいます。おそらく bash の構文ではないのでエラーになります)。
PerlだけでなくUnix系のシェルスクリプトなど他のプログラム言語でも同様に[[shebang]]を記述する事があります。
{{See also|shebang}}
* shebang は、必ずファイルの1行目になければいけません
* HTTPレスポンス・ヘッダー
Content-Type: text/html
は、HTTPレスポンス・ヘッダーの一部で、ウェブ・ブラウザーなどユーザー・エージェントは、HTML本体とは別に、受信しようとする情報の種類などの打合わせのために HTTPヘッダーを送受信しあってます(Perlの場合は「CGIヘッダー」ともいい「HTTPレスポンス・ヘッダー」と区別していますが、Webサーバがヘッダー要素を追加する可能性がある為です)。
そのHTTPレスポンス・ヘッダーで送受信しあう情報のひとつに「Content-Type: 」ヘッダーがあります。「Content-Type: text/html」というヘッダーによって「これからテキストの1つであるHTMLを送る」と相手先に伝えています。
;コード例2
HTMLのソースコードを送りたい場合は、下記のように書きます。
<syntaxhighlight lang="Perl">
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<!DOCTYPE html>\n";
print "<html>\n";
print "<head>\n";
print "<title>Example Web Page</title>\n";
print "</head>\n";
print "<body>\n";
print "<p>Hello, world!</p>\n";
print "</body>\n";
print "</html>\n";
</syntaxhighlight>
しかし実用的には、下記のようにプログラムを書いたほうがラクでしょう。
;コード例3
<syntaxhighlight lang="Perl">
#!/usr/bin/perl
use strict;
use warnings;
print <<"EOT";
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<html>
<head>
<title>Example Web Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
EOT
</syntaxhighlight>
;解説
use warnings; とは何かというと、これはプログラム中にエラーがあったら警告を出すという意味です。Perlはプログラム言語ですので、エラーも起こりえます。そのエラーの際に警告を出すという意味です。
ですが、これはコマンド端末で実行している場合のハナシです。
ウェブ・ブラウザーで見ている場合、そのような気のきいた警告はしてくれないです。
また、use warnings; は警告をするだけですので、そのままプログラムを実行します。けっして、気をきかしてプログラム停止したりはしません。
use strict; は、プログラムの停止なども含めて、より厳格に判定および処置をします。
なので、上記プログラムから use warnings; および use strict; を除去しても、ウェブ・ブラウザー上で表示する事は可能です。
=== 必要な追加設定 ===
このファイルは、拡張子をかならず「.cgi」にしてください。(拡張子「.cgi」または「.pl」にしないと、今後の設定が面倒になります。)
このファイルを、フォルダ階層
/var/www/cgi-bin
の中に配置します。
もし cgi-bin フォルダがまだ作れていない場合、perl-CGIがまだインストールされてないと思われるので、まずperl-CGIをインストールしてください。
所有者がrootになってるなどで、配置できないなら
sudo chown ユーザー名 /var/www/cgi-bin
で所有者を変更できます。
冒頭の
#!/usr/bin/perl
の部分は、環境によっては
#!/usr/local/bin/perl
の場合もあります。
この部分 #!/usr/local/bin/perl は、perlのインタプリタを呼出してスクリプトを渡すための指示です。
これらperlインタプリタのバイナリの存在場所をさがすには、コマンド
which perl
で探せます。
;コマンド実行例
$ which perl
/usr/bin/perl
そして、制作したサンプルファイルは、アクセス権の設定で「プログラムとして実行可能」にチェックボックスを入れてください。右クリックで現れるダイアログから設定できると思います。
インタープリターへのパスがわからない場合は、あるいは色々な環境で動かすことが想定される場合(本書もそのケースです)
#!/usr/bin/env perl
の様に POSIX でパスが決まっている env(1) を呼出し、(絶対パスでなく)コマンド名でインタープリターを指定します。
こうすると、env は環境変数PATHの中から順に インタープリター を探し、見つかったインタープリターにスクリプトを渡し起動します。
----
しかし、サーバがApacheの場合、まだ、これだけでは動きません。
Apacheは初期設定では、cgiスクリプトを動かさない設定になっています。なので、まず、この初期設定を書き換える必要があります。
cgiスクリプトを動かせるように設定を変更するために、設定ファイルの httpd.conf というファイルを書き換えて、
AddHandler cgi-script .cgi
という文章を追加する必要があります。
なお、通常のapacheでは、すでにコメントアウトされた状態で
#AddHandler cgi-script .cgi
とあるので、単に冒頭のコメントアウト記号#をはずせばいいだけです。
この書き換えにより、拡張子 .cgi のあるファイルを、cgiスクリプトとして処理できるようになります。
なお、perlなどで使われる拡張子 「.pl」のファイルもCGIスクリプトとして実行したいなら、上記の AddHandler に
#AddHandler cgi-script .cgi .pl
と「.pl」を追加するだけで済みます。
ただし、管理者が通常では root になっているので、そのままでは、書き換えできません。なのでGNU/Linuxの場合、コマンドで
sudo chown ログインユーザ名 /etc/httpd/conf/httpd.conf
で、管理者を変えてから、管理者設定を書き換えることになります。
書き換えが終わったら、apache を立ち上げ直します。
そして、ウェブ・ブラウザーで
http://localhost/cgi-bin/ファイル名.cgi
にアクセスしてください。
;実行結果
ブラウザ画面上に
Hello, world!
と表示されている。また、そのページのタイトルとして、タブ欄などに「Example Web Page」と書いてある。
=== HTMLとの連動の例 ===
では、より実用的なプログラムを見ていきましょう。
下記のプログラムは、入力した文字列を、htmlのフォーム機能を使って別ファイル(例では catchtest.cgi ) に送るプログラムです。
;コード例:<syntaxhighlight lang="Perl">
#!/usr/bin/env perl
print <<"EOT";
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
<form action="catchTest.cgi" method="post">
ユーザー名を登録: <input type="text" name="username">
<input type="submit" value="登録">
</form>
EOT
</syntaxhighlight>
※ 『[[PHP/HTMLフォームからのデータ受け取り]]』と動作内容は同じです。
このように、パターンとして
<syntaxhighlight lang="Perl">
#!/usr/bin/env perl
print <<"EOT";
Content-Type: text/html; charset=UTF-8
<!DOCTYPE html>
# ここに書きたいHTMLのソースコードを書く
# 中略
EOT
</syntaxhighlight>
というような書式で、単に <nowiki><!DOCTYPE html></nowiki> と <nowiki> EOT </nowiki> のあいだに、お決まりのパターンのコードを書くだけで、入出力機能のあるファームも簡単に作れます。
----
上記のコードの遷移先のページは、下記のようにつくります
;コード例
<syntaxhighlight lang="Perl">
#!/usr/bin/env perl
print "Content-type: text/html\n\n";
$msg = ""
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $msg, $ENV{'CONTENT_LENGTH'});
}
else {
$msg = $ENV{'QUERY_STRING'};
}
print " $msg と入力されました。";
</syntaxhighlight>
;実行結果
たとえば ggggggg とブラウザに表示された入力ボックスにしてボタン「登録」を押すと、
username=ggggggg と入力されました。
と表示される。
:(以上、実行結果)
;解説
まず、遷移先のページにも、[[shebang]]やHTTPレスポンス・ヘッダーを忘れないようにしましょう(無いとエラーになります(Internal Server Error など) )。
上記コードの if文 と else文 は、決まり文句です。 $msg以外はすべて、Perlでの決まり文句です。STDINは標準入力のことです。
Perlでは、formタグからのPOSTの受け取りは、標準入力 STDIN を通して受け取りが行われる仕様です。
環境変数として REQUEST_METHOD や CONTENT_LENGTH や QUERY_STRING という環境変数があらかじめ用意されています。なので上記コードでは、この変数はこのまま使う必要があります(勝手に名前を変えてはイケナイ)。
なお、環境変数を英語で environmental variable と言います。
if ($ENV{'REQUEST_METHOD'} eq "POST")
というのは、おおむね「もし環境変数 REQUEST_METHOD が POST なら」 のような意味です。
環境変数 REQUEST_METHOD には、フォームを呼び出した時のリクエストの結果がPOSTまたはGETのどちらかとして入っています。
{| class="wikitable" style="float: right;"
|+ 等価演算子
|-
! style="text-align: center;" | 数値として評価
! style="text-align:center" | 文字として評価
! 意味
|-
| ==
| style="text-align:center"| eq
|等しい場合に真
|-
| !=
| style="text-align:center"| ne
|等しくない場合に真
|-
|}
eq 演算子は、「eqの左右の両辺をもし文字列とした場合に、両辺が等しいか?」を調べる演算子です。
いっぽう、<nowiki>==</nowiki> 演算子は、両辺を数値とした場合に等しいかを調べる演算子です。(C言語と違って、Perlでは変数の宣言時に型指定が無いので、条件分岐if文では、こういった演算子の区別が必要になる。)
なので、けっして eq演算子の部分を <nowiki>==</nowiki> 演算子に変えてはダメです。
なお、両辺が等しくない場合については、文字として評価する場合には ne 演算子、数値として評価する場合には != 演算子 です。
さて、表示結果の username というのは単に、勝手につけたオブジェクト名であり、呼び出し元のファイルのHTMLタグで勝手に命名したオブジェクト名ですので、もしそのオブジェクト名が変われば、表示結果の左辺のこの部分は名前になります。
結局
オブジェクト名 = 受け取った内容
のように、オブジェクト名と一緒に、Perlでは POST で受け取った内容を管理する仕組みです。
=== 高度な例 ===
より高度なCGIプログラムは次のようになります。
<syntaxhighlight lang="Perl">
#!/usr/local/bin/perl
use strict;
use warnings;
use CGI;
my $q = CGI->new;
print $q->header( -charset => "UTF-8" );
print $q->start_html( -title => "Example Web Page" );
print $q->p("Hello, world!");
print $q->end_html;
</syntaxhighlight>
上記の書き方は「信じられない植物 ダウンロード」で検索して、参考に見てください。CGIのゲームです。
ちょっと古い見なれた構文 オリジナルです。printは一般的に使われています。
<syntaxhighlight lang="Perl">
#!C:/Perl/bin/perl
#上は必ず一行目に書いてローカルホスト C:\Perl\bin\perl.exeを使うと言う定義です。コメントも書けません。
print "Content-type:text/html\n\n"; #\n改行がふたつ必要ですクッキーは上に書きます。
print <<EOF ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>てすと</title>
</head>
<BODY BGCOLOR="#ffffff">
<h1>test</h1>
EOF
print "動くかな。<br>\n"; #print に続く物がプログラムです。ヘッダーとフッタに分割してサブルーチンとする事もできます。
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
__END__
</syntaxhighlight>
*編集者の経験により意見が入るかも知れません。自論を押し付ける気はありません。
* cgi-lib.pl(著作権ありと言うものがありデコードさせたり、ヘッダーやフッタを書き出すには便利ですが、融通が利かないという難点があります。
*最近、CSSを使う事が多くなりましたが、対応状況が判りません。
*JavaScriptもあったり、ヘッダーの可視性が不十分です。
* [https://ja.wikipedia.org/wiki/Jcode.pl jcode.pl](著作権あり)もよく見かけますが書いた言語と同じ言語が通常戻ってきます。メール用[https://ja.wikipedia.org/wiki/Sendmail Sendmail]の[https://ja.wikipedia.org/wiki/JIS%E6%BC%A2%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89 JISコード]に変換させるには非常に便利ですがcgiからメールを送信しない場合は内部で言語変換させないのならば、あまり必要と思いません。
*では、デコードをどの様に組むか書いていきます。cgi-lib.pl(著作権あり)を使うと$in{'送られてきたデータ'}と返されますので$In{'送られてきたデータ'}と書き換えます。
<syntaxhighlight lang="Perl">
#!C:/Perl/bin/perl
#上記はサーバーで動かす時はサーバーの仕様書を見て変えてください。
#!/usr/local/bin/perl
# このcgiの名前
$this_cgi = "mihon.cgi";
# GETでの取り込みを禁止する。1 または 0
$getin = 0;
# ファイルのサイズ指定
$max_size = 100;
&decode;
&header;
&main;
&footer;
exit;
####### メイン処理 ######
sub main{
print 'あなたは ';
print "$In{'kakikomi'}";
print ' と書き込みしましたね。<br><br>'; # 全角空白は文字化けの為 ''を使って囲む。
print << "EOF" ;
<br>
<form action="$this_cgi" method="POST">
<input type="text" name="kakikomi" size="40" maxlength="30">
<input type="submit" value="送信する">
</form>
EOF
}
#######ヘッダー出力
sub header {
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>見本1</title>
</head>
<BODY BGCOLOR="#ffffff">
EOF
}
#デコード処理
sub decode {
my ($query,$pair);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
if ($query ne "" && $getin == 1){&err("GET");}
}
my ($saizu)=length $query;
if ($saizu > $max_size){&err("エラー・サイズオーバー");}
foreach $pair (split(/&/, $query)) {
my ($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value =~ s/\0/0/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n/<br>/g; #追加
$value =~ s/\r|\n/<br>/g;
$value =~ tr/+/ /;
$In{$key} = $value;
}
}
### フッタ #########
sub footer{
print "<br><br><table border='1'>";
print "<tr><th>フォーム要素名</th><th>データ</th></tr>";
foreach $key (keys %In) {
print "<tr><th>$key</th><td>$In{$key}</td></tr>\n";
}
print "</table><br>";
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
}
###### エラー ########
sub err{
&header;
print 'エラー'."<br>\n";
print "$_[0]<br>\n";
&footer;
exit;
}
</syntaxhighlight>
== Perl/CGIプログラムの例2 ==
* 少し難しくなってきました。HTMLの知識、スタイルシートの組み込み、ジャバスクリプトの書き込みが追加になっています。
* ロックファイル、フォルダの好ましくない点を上げると、あっちもこっちもロックに来てロックがフル稼働になってしまうことです。
* つまり、ロックの分散化が必要になります。ファイルハンドルで別名を使うファイルによって付けてやれば、ファイルハンドルの衝突も起きないしファイルの衝突、待ち時間の軽減になると思います。
* これを踏まえた上で組んで見ました。
* ランダムもシードを与えなければタイムが自動的になります。
* ご要望があればもっと詳しく書きますが、とりあえずこんな物かと書き加えて試してみるのを目的に組みました。
<syntaxhighlight lang="Perl">
#!d:/Perl/bin/perl
#上記はサーバーで動かす時はサーバーの仕様書を見て変えてください。
# このcgiの名前
$this_cgi = "mihon.cgi";
# GETでの取り込みを禁止する。1 または 0
$getin = 0;
# ファイルのサイズ指定
$max_size = 100;
# カウンタファイル
$cntfile = './count.cgi';
# 無い時に自動的に作成する
unless(-e "$cntfile"){
open (FOUT, "> $cntfile") or &err("エラー・ファイルが作れません。");
close (FOUT);
chmod 0600,$cntfile;
}
#
# カウンタの桁数
$mini_fig = 6;
# 記録ファイルの名前
$datafile = './kiroku.cgi';
# 無い時に自動的に作成する
unless(-e "$datafile"){
open (FOUT, "> $datafile") or &err("エラー・ファイルが作れません。");
close (FOUT);
chmod 0600,$cntfile;
}
#
####--------------------------------------------------------
&decode;
&header;
&main;
&footer;
exit;
######### カウンタ処理
sub counter {
local($count,$cntup);
# カウントファイルを読みこみ
open(CUNT,"< $cntfile") || &err("Open Error: cntfile","in");
eval{flock(CUNT, 1);};
$count = <CUNT>;
close(CUNT);
local($local_time);
local($cnt,$kiroku_day,$keika_day,$today,$yestaday) = split(/<>/, $count);
$local_time = time + (9*60*60);#GMT+9:00補正
if (!$kiroku_day){
$kiroku_day = $local_time - ($local_time % (24*60*60));
}
if ($local_time - $kiroku_day > 24*60*60){
$keika_day += int(($local_time - $kiroku_day)/(24*60*60));
if ($local_time - $kiroku_day > 2*24*60*60){
$yestaday = 0;
}else{$yestaday = $today;}
$kiroku_day = $local_time - ($local_time % (24*60*60));
$today = 0;
}
$today++;
if (!$keika_day){$keika_day = 0; }
if (!$yestaday){$yestaday = 0; }
$cnt++;
open(CUNT,"> $cntfile") || &err("Write Error: cntfile","in");
eval{flock(CUNT, 2);};
print CUNT "$cnt<>$kiroku_day<>$keika_day<>$today<>$yestaday<>\n";
close(CUNT);
# 桁数調整
while(length($cnt) < $mini_fig) { $cnt = '0' . $cnt; }
#時間の整形
$date_sec = time;
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($date_sec);
# local($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($date_sec); # 日時を使えるように開放
local @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
local $m_week = $week[$wday];
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year+1900,$mon+1,$mday,$week[$wday],$hour,$min,$sec);
print "<table border=\"0\">\n";
print "<tr><td rowspan=\"3\">\n";
print "<font size=\"6\"class=\"kazu\">$cnt</font><br>\n";
print "</td><td><font size=\"2\">経過</font></td><td><font size=\"2\">$keika_day</font></td></tr>\n";
print "<tr><td><font size=\"2\">今日</font></td><td><font size=\"2\">$today</font></td></tr>\n";
print "<tr><td><font size=\"2\">昨日</font></td><td><font size=\"2\">$yestaday</font></td></tr>\n";
print "<tr><td colspan=\"3\"><font size=\"2\"><form name=\"Watch0\"><input type=\"text\" name=\"watch01\" size=\"25\"></form></font></td></tr>\n";
print "</table><br>\n";
}
##### 記録遊び
sub asobkiroku {
$detskazu = int(rand(10))+1;
if(6 <= $detskazu){$asobimese = 'あなたの勝ち';}else{$asobimese = 'あなたの負け';}
open(DATS,"< $datafile") || &err("Open Error: datafile","in");
eval{flock(DATS, 1);};
@datas = <DATS>;
close(DATS);
unshift @datas,"$detskazu<>$asobimese<>$In{'kakikomi'}<>$date<>\n";
if(@datas > 10){$#datas = 9;}
open(DATS,"> $datafile") || &err("Write Error: datafile","in");
eval{flock(DATS, 2);};
print DATS @datas;
close(DATS);
foreach (@datas){
($b_detskazu,$b_asobimese,$b_kakikomi,$b_date) = split(/<>/);
if($b_detskazu >=6){
print "<font class=\"kachi\">$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date</font><br>\n";
}else{
print "$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date<br>\n";
}
}
}
####### メイン処理 ######
sub main{
&counter;
print 'あなたは ';
print "$In{'kakikomi'}";
print ' と書き込みしましたね。<br><br>'; # 全角空白は文字化けの為 ''を使って囲む。
&asobkiroku;
print << "EOF" ;
<br>
<form action="$this_cgi" method="POST">
<input type="text" name="kakikomi" size="40" maxlength="30">
<input type="submit" value="送信する">
</form>
EOF
}
#######ヘッダー出力
sub header {
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta tttp-equiv="Content-Script-Type" content="taxt/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>見本2</title>
<script language="JavaScript">
<!--
function DayWatch() {
var day = new Date();
if ( day.getYear() >= 2000 ){ var year = day.getYear() }
else { var year = day.getYear() +1900 }
var month = day.getMonth()+1;
var date = day.getDate();
if (month < 10) { //月.日が一桁の時頭に0を付ける処理
month = "0" + month;
}
if (date < 10) {
date = "0" + date;
}
var time = new Date();
var hour = time.getHours();
var min = time.getMinutes();
var sec = time.getSeconds();
if (hour < 10) { //時・分・秒が1桁の時頭に0を付ける処理
hour = "0" + hour;
}
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
document.Watch0.watch01.value = year +"/"+month+"/"+date+" "+hour+':'+min+':'+sec;
setTimeout("DayWatch()", 1000);
}
//-->
</script>
<style type="text/css">
<!--
.kazu{
color: #ff0000;
}
.kachi{
color: #0000ff;
}
-->
</style>
</head>
<BODY BGCOLOR="#ffffff" onLoad="DayWatch()">
EOF
}
#デコード処理
sub decode {
my ($query,$pair);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
if ($query ne "" && $getin == 1){&err("GET");}
}
my ($saizu)=length $query;
if ($saizu > $max_size){&err("エラー・サイズオーバー");}
foreach $pair (split(/&/, $query)) {
my ($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value =~ s/\0/0/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n/<br>/g; #追加
$value =~ s/\r|\n/<br>/g;
$value =~ tr/+/ /;
$In{$key} = $value;
}
}
### フッタ #########
sub footer{
print "<br><br><table border='1'>";
print "<tr><th>フォーム要素名</th><th>データ</th></tr>";
foreach $key (keys %In) {
print "<tr><th>$key</th><td>$In{$key}</td></tr>\n";
}
print "</table><br>";
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
}
###### エラー ########
sub err{
if($_[1] ne "in"){
&header;
}
print 'エラー'."<br>\n";
print "$_[0]<br>\n";
&footer;
exit;
}
</syntaxhighlight>
* 下記のプログラムは一般的では無いかも知れませんがprint文で一気に書き出すのが楽ですし分りやすいです。 なので、モジュールは使用したくないのです。Perlでは、モジュール化して組み込む事も出来ます。
* 下記のプログラムは動的に動かすにはクッキーとソート「配列の中の第一変数を参照して」並べ替えを行っています。
* 分らない単語はここではプログラミングについての記述になるのでここでは触れません。リファレンスや事典を参照してください。
<syntaxhighlight lang="Perl">
#!d:/Perl/bin/perl
#上記はサーバーで動かす時はサーバーの仕様書を見て変えてください。
# このcgiの名前
$this_cgi = "mihon.cgi";
# GETでの取り込みを禁止する。1 または 0
$getin = 0;
# ファイルのサイズ指定
$max_size = 100;
# カウンタファイル
$cntfile = './count.cgi';
# 無い時に自動的に作成する
unless(-e "$cntfile"){
open (FOUT, "> $cntfile") or &err("エラー・ファイルが作れません。");
close (FOUT);
chmod 0600,$cntfile;
}
#
# カウンタの桁数
$mini_fig = 6;
# 記録ファイルの名前
$datafile = './kiroku.cgi';
# 無い時に自動的に作成する
unless(-e "$datafile"){
open (FOUT, "> $datafile") or &err("エラー・ファイルが作れません。");
close (FOUT);
chmod 0600,$cntfile;
}
#
# 登録するクッキーの名前
$COOKIE_NAME = 'mihon';
# クッキーの有効期間
$COOKIE_LIFE = 7;
#取り込みファイルの下準備通常は別ファイルとして作ります。
$require_txt = "errgo.cgi";
# 無い時に自動的に作成する
unless(-e "$require_txt"){
open (FOUT, "> $require_txt") or &err("エラー・ファイルが作れません。");
print FOUT "sub err_go { &err(\"エラークエストがありました。\");}\n1;\n"; #ファイルの終わりには「1;」が必要。出来たファイルを見てください。
close (FOUT);
chmod 0600,$require_txt;
}
####--------------------------------------------------------
require './errgo.cgi';
#sub err_go { &err("エラークエストがありました。");}
&decode;
&cookie_in;
if($In{'kakikomi'} eq "エラーゴー"){&err_go;} #エラーゴーと書かれた時エラーに行く。
&decode;
&cookie_in;
&header;
&main;
&footer;
exit;
######### カウンタ処理
sub counter {
local($count,$cntup);
# カウントファイルを読みこみ
open(CUNT,"< $cntfile") || &err("Open Error: cntfile","in");
eval{flock(CUNT, 1);};
$count = <CUNT>;
close(CUNT);
local($local_time);
local($cnt,$kiroku_day,$keika_day,$today,$yestaday) = split(/<>/, $count);
$local_time = time + (9*60*60);#GMT+9:00補正
if (!$kiroku_day){
$kiroku_day = $local_time - ($local_time % (24*60*60));
}
if ($local_time - $kiroku_day > 24*60*60){
$keika_day += int(($local_time - $kiroku_day)/(24*60*60));
if ($local_time - $kiroku_day > 2*24*60*60){
$yestaday = 0;
}else{$yestaday = $today;}
$kiroku_day = $local_time - ($local_time % (24*60*60));
$today = 0;
}
$today++;
if (!$keika_day){$keika_day = 0; }
if (!$yestaday){$yestaday = 0; }
$cnt++;
open(CUNT,"> $cntfile") || &err("Write Error: cntfile","in");
eval{flock(CUNT, 2);};
print CUNT "$cnt<>$kiroku_day<>$keika_day<>$today<>$yestaday<>\n";
close(CUNT);
# 桁数調整
while(length($cnt) < $mini_fig) { $cnt = '0' . $cnt; }
&dates;
print qq|<table border="0">\n|;
print qq|<tr><td rowspan="3">\n|;
print qq|<font size="6"class="kazu">$cnt</font><br>\n|;
print qq|</td><td><font size="2">経過</font></td><td><font size="2">$keika_day</font></td></tr>\n|;
print qq|<tr><td><font size="2">今日</font></td><td><font size="2">$today</font></td></tr>\n|;
print qq|<tr><td><font size="2">昨日</font></td><td><font size="2">$yestaday</font></td></tr>\n|;
print qq|<tr><td colspan="3"><font size="2"><form name="Watch0"><input type="text" name="watch01" size="25"></form></font></td></tr>\n|;
print qq|</table><br>\n|;
}
###### 日付と時間
sub dates {
#時間の整形
$date_sec = time;
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($date_sec);
# local($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($date_sec); # 日時を使えるように開放
local @week = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
local $m_week = $week[$wday];
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year+1900,$mon+1,$mday,$week[$wday],$hour,$min,$sec);
}
##### 記録遊び
sub asobkiroku {
$detskazu = int(rand(10))+1;
if(6 <= $detskazu){$asobimese = 'あなたの勝ち';}else{$asobimese = 'あなたの負け';}
open(DATS,"< $datafile") || &err("Open Error: datafile","in");
eval{flock(DATS, 1);};
@datas = <DATS>;
close(DATS);
unshift @datas,"$detskazu<>$asobimese<>$In{'kakikomi'}<>$date<>\n";
if(@datas > 10){$#datas = 9;}
open(DATS,"> $datafile") || &err("Write Error: datafile","in");
eval{flock(DATS, 2);};
print DATS @datas;
close(DATS);
foreach (@datas){
($b_detskazu,$b_asobimese,$b_kakikomi,$b_date) = split(/<>/);
if($b_detskazu >=6){
print "<font class=\"kachi\">$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date</font><br>\n";
}else{
print "$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date<br>\n";
}
}
# 先頭の要素による並べ替え
@keys1 = map {(split /<>/)[0]} @datas;
@new_datas = @datas[sort {$keys1[$b] <=> $keys1[$a]} 0 .. $#keys1];
print "<br><br>\n";
foreach (@new_datas){
($b_detskazu,$b_asobimese,$b_kakikomi,$b_date) = split(/<>/);
if($b_detskazu >=6){
print "<font class=\"kachi\">$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date</font><br>\n";
}else{
print "$b_detskazu $b_asobimese コメント:$b_kakikomi $b_date<br>\n";
}
}
print "<br><br>クッキーは $COOKIE{'kakikomi'} と $COOKIE{'date'} が表\示されます。<br><br>\n"; # 表は文字化けを起こすので\を入れます。
}
####### メイン処理 ######
sub main{
&counter;
print 'あなたは ';
print "$In{'kakikomi'}";
print ' と書き込みしましたね。<br><br>'."\n"; # 全角空白は文字化けの為 ''を使って囲む。
&asobkiroku;
print << "EOF" ;
<br>
<form action="$this_cgi" method="POST">
<input type="text" name="kakikomi" size="40" maxlength="30">
<input type="submit" value="送信する">
</form>
EOF
}
### クッキーに値をセット ####
sub set_cookie{
if ($In{'kakikomi'}){ #書込の時限定。
# if (!$In{'coodel'}){
&dates; # 日付と時間のサブルーチン
$COOKIE{'kakikomi'} = $In{'kakikomi'};
$COOKIE{'date'} = $date;
# }
}
}
### クッキー読み出し ######
sub cookie_in{
my ($pair, $cpair);
foreach $pair (split(/;\s*/, $ENV{'HTTP_COOKIE'})) {
my ($name, $value) = split(/=/, $pair);
# 単一のクッキー値から%COOKIEにデコード
if($name eq $COOKIE_NAME) {
foreach $cpair (split(/&/, $value)) {
my ($cname, $cvalue) = split(/#/, $cpair);
$cvalue =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$COOKIE{$cname} = $cvalue;
}
last;
}
}
}
### クッキー発行 ####
sub cooki_hakkou{
&set_cookie; # クッキーのセット
my (@cpairs, $cname, $cvalue, $value);
if ($In{'coodel'}){$COOKIE_LIFE = -1;} # クッキー消去
# %COOKIEを単一のクッキー値にエンコード
foreach $cname (keys %COOKIE) {
$cvalue = $COOKIE{$cname};
$cvalue =~ s/(\W)/sprintf("%%%02X", ord $1)/eg;
push @cpairs, "$cname#$cvalue";
}
$value = join('&', @cpairs);
# グリニッジ標準時の文字列
my @mon_str = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @wdy_str = qw(Sun Mon Tue Wed Thu Fri Sat);
my $life = $COOKIE_LIFE * 24 * 60 * 60;
my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time + $life);
my $date = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$wdy_str[$wday], $mday, $mon_str[$mon], $year + 1900, $hour, $min, $sec);
return ("Set-Cookie: $COOKIE_NAME=$value; expires=$date\n");
}
#######ヘッダー出力
sub header {
($my_cookie) = &cooki_hakkou;
print "$my_cookie";
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta tttp-equiv="Content-Script-Type" content="taxt/javascript">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>見本2</title>
<script language="JavaScript">
<!--
function DayWatch() {
var day = new Date();
if ( day.getYear() >= 2000 ){ var year = day.getYear() }
else { var year = day.getYear() +1900 }
var month = day.getMonth()+1;
var date = day.getDate();
if (month < 10) { //月.日が一桁の時頭に0を付ける処理
month = "0" + month;
}
if (date < 10) {
date = "0" + date;
}
var time = new Date();
var hour = time.getHours();
var min = time.getMinutes();
var sec = time.getSeconds();
if (hour < 10) { //時・分・秒が1桁の時頭に0を付ける処理
hour = "0" + hour;
}
if (min < 10) {
min = "0" + min;
}
if (sec < 10) {
sec = "0" + sec;
}
document.Watch0.watch01.value = year +"/"+month+"/"+date+" "+hour+':'+min+':'+sec;
setTimeout("DayWatch()", 1000);
}
//-->
</script>
<style type="text/css">
<!--
.kazu{
color: #ff0000;
}
.kachi{
color: #0000ff;
}
-->
</style>
</head>
<BODY BGCOLOR="#ffffff" onLoad="DayWatch()">
EOF
}
#デコード処理
sub decode {
my ($query,$pair);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
if ($query ne "" && $getin == 1){&err("GET");}
}
my ($saizu)=length $query;
if ($saizu > $max_size){&err("エラー・サイズオーバー");}
foreach $pair (split(/&/, $query)) {
my ($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value =~ s/\0/0/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n/<br>/g; #追加
$value =~ s/\r|\n/<br>/g;
$value =~ tr/+/ /;
$In{$key} = $value;
}
}
### フッタ #########
sub footer{
print "<br><br><table border='1'>";
print "<tr><th>フォーム要素名</th><th>データ</th></tr>";
foreach $key (keys %In) {
print "<tr><th>$key</th><td>$In{$key}</td></tr>\n";
}
print "</table><br>";
#------- クッキー要素名 ---------
my ($name, $value);
print "<table border='1'>";
print "<tr><th>クッキー要素名</th><th>データ</th></tr>";
while (($name, $value) = each(%COOKIE)) {
print "<tr><td>$name</td><td>$value</td></tr>\n";#\\n
}
print "</table><br>";
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
}
###### エラー ########
sub err{
if($_[1] ne "in"){
&header;
}
print 'エラー'."<br>\n";
print "$_[0]<br>\n";
&footer;
exit;
}
</syntaxhighlight>
==サーバー攻撃の防御==
*アクセスポイントの環境変数を用いてプログラムを守るものです。
*設置は出来るだけ上の方に書いた方が良いと思います。
<syntaxhighlight lang="Perl">
#!D:/Perl/bin/perl
#!/usr/local/bin/perl
#このプログラム名
# in_atakka.cgi
#作成されるファイル atakka.cgi
&in_atakka;
sub in_atakka {
local($c_tim,@tem_atakku,$i,$ma_aru,@tem_atakku_new,$ma_addr,$ma_host,$ma_tim,$ma_kaisu,@new_atakku_new,$count11);
my $get_host = $ENV{'REMOTE_HOST'};
my $get_addr = $ENV{'REMOTE_ADDR'};
if ($get_host eq "" || $get_host eq $get_addr) {
$get_host = gethostbyaddr(pack("C4", split(/\./, $get_addr)), 2) || $get_addr;
}
$c_tim = time;
if(!(-e "atakka.cgi")){
open(AT,"> atakka.cgi") || &disp;
close(AT);
}
open(AT,"< atakka.cgi") || &disp;
eval{ flock (AT, 1); };
@tem_atakku = <AT>;
close(AT);
$i=0;
$ma_aru =0;
@tem_atakku_new = (@tem_atakku);
foreach (@tem_atakku){
($ma_addr,$ma_host,$ma_tim,$ma_kaisu) = split(/<>/);
if($ma_addr eq $get_addr && $get_host eq $ma_host && $ma_kaisu > 5){
if($ma_tim + 600 < $c_tim){$ma_kaisu = 0;}else{&disp;}
}
if(!($ma_addr eq $get_addr && $get_host eq $ma_host) && $ma_kaisu > 5){ #5
$i++;
next;
}
if($get_addr eq $ma_addr && $get_host eq $ma_host && $c_tim < $ma_tim + 2){
$ma_kaisu++;
$tem_atakku_new[$i] = "$get_addr<>$get_host<>$c_tim<>$ma_kaisu<>\n";
$ma_aru =1;
last;
}else{
$ma_aru =0;
$ma_kaisu = 0;
unless($#tem_atakku_new < 0 && $ma_kaisu > 5){splice(@tem_atakku_new,$i,1);}
last;
}
$i++;
}
foreach (@tem_atakku_new){
($ma_addr,$ma_host,$ma_tim,$ma_kaisu) = split(/<>/);
if($c_tim > $ma_tim + 600){next;} #経過済みのタイムアウト者を消す。10分
if(@tem_atakku_new > 3 && $c_tim > $ma_tim + 3 && $ma_kaisu <= 2){ #30以上の参加者で3秒以上経過して2回以下なら消すtest 3
next;
}
push @new_atakku_new,"$_";
}
@tem_atakku_new = (@new_atakku_new);
if(!$ma_aru){
if(@tem_atakku_new > 5){&disp("アクセスが多いのでお待ちください。");} #50以上の参加者の時は新規に入るのを待ってもらう。test 5
push @tem_atakku_new,"$get_addr<>$get_host<>$c_tim<>1<>\n";
}
if(@tem_atakku_new == 0){&disp("exit");}
open(AT,"> atakka.cgi") || &disp("Fail");
eval{ flock (AT, 2); };
$count11 = 0;
foreach (@tem_atakku_new){
if(m/$get_host+/){$count11 = 1;}
}
if(!$count11){close(AT);&disp("exit2");}
print AT @tem_atakku_new;
close(AT);
if(-z "atakka.cgi"){&disp("Fail=0");}
}
sub disp{
print "Content-type:text/html; charset=UTF-8\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>エラー</TITLE>
</HEAD>
<BODY>
<h1>過負荷によるエラーが起こりました。</h1>
$_[0]<br>
<h2>10分ほど経ったらもう一度試してみてください。</h2>
<Script Language="JavaScript">
<!--
alert("10分ほど経ったらもう一度試してみてください。");
// End -->
</Script>
<br><br>
</BODY>
</html>
EOF
exit;
}
####本文
local(@tem_atakku_new,$prit_out,$ma_addr,$ma_host,$ma_tim,$ma_kaisu);
open(AT,"< atakka.cgi") || &disp;
eval{ flock (AT, 1); };
@tem_atakku_new = <AT>;
close(AT);
foreach (@tem_atakku_new){
($ma_addr,$ma_host,$ma_tim,$ma_kaisu) = split(/<>/);
$prit_out .= "($ma_addr,$ma_host,$ma_tim,$ma_kaisu)<br>\n";
}
print "Content-type:text/html; charset=UTF-8\n\n";
print <<"EOF";
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
<HEAD>
<TITLE>アタックチェック</TITLE>
</HEAD>
<BODY>
<h1>ファイル内容確認</h1>
$prit_out
<br><br><br><br><br><br><br><br><br><br><br><br>
</BODY>
</html>
EOF
exit;
</syntaxhighlight>
==IPで管理者識別==
*自分の今のIPを登録識別する事で不正アクセスをしにくくする。
*ディレクトリと2つのプログラムによる共有データを使う。
<syntaxhighlight lang="Perl">
main.cgi 実行ファイル
フォルダー host3 を作ってください。
host.cgi 実行ファイル
in_host.cgi 空ファイル
host_koushin_ari.txt 空ファイル
##################### main.cgi #####################
#!D:/Perl/bin/perl
# サーバーに合わせて下さい
#!/usr/local/bin/perl
#!C:/Perl/bin/perl
# このファイルの名前
$this_cgi = "main.cgi";
# データー量
$max_size = 500;
# get禁止 1
$getin =1;
# 入口で強化するか
$host_kyuka = 'yes';
# 許可管理者名
$ohna_name = 'ウィキブックス';
# オーナーパスの設定(変更してください)
$ohna_pas = '0000';
# 管理者IPの簡易登録の合言葉
$aikotoba = 'wikibooks';
# ホスト管理用専用cgi
$host_cgi = "./host3/host.cgi";
# ホストのファイル
$in_host = "./host3/in_host.cgi";
# ホスト変更・追加などの報告
$koshin_fail = './host3/host_koushin_ari.txt';
# 記録しておくIPの数 1個多くなります。0の時1個
$ip_kazu = 5;
##########################
&decode;
if($In{'mode'} eq 'nyuryoku'){&nyuryoku;}
if($In{'mode'} eq 'admin'){&admin;}
&syoki;
exit;
######
sub syoki {
&acsesu;
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>メイン</title>
</head>
<BODY BGCOLOR="#ffffff">
<br>
<form action="$this_cgi" method="POST">
<input type="hidden" name="mode" value="nyuryoku">
<input type="submit" value="管理室入り口へ"><br>
</form>
<form action="$host_cgi" method="POST">
<input type="submit" value="ホスト管理明細"><br>
</form>
<br><br>
$host_mes
<br><br>
EOF
if ($ohna_name eq $In{'kanrisya_name'} && $ohna_pas && $ohna_pas eq $In{'kanrisya_pas'}){ #管理者のみ表示
if(-e "$koshin_fail"){
open (FIN, "$koshin_fail") or &err("エラー・ファイルが開けません..koshin_fail");
eval{ flock (FIN, 1); };
$tem_atakku = <FIN>;
close(FIN);
($henkou_time,$mese1,$mese2) = split(/ /, $tem_atakku);
$now_time = time;
if($now_time > $henkou_time + 2*24*60*60){$mese1 = "";$mese2 = "";}else{print "$mese1 $mese2<br>\n";}
}
}else{
print "管理者不一致<br>\n";
}
print "<br><br><table border='1'>";
print "<tr><th>フォーム要素名</th><th>データ</th></tr>";
foreach $key (keys %In) {
print "<tr><th>$key</th><td>$In{$key}</td></tr>\n";
}
print "</table><br>";
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
}
### アクセス管理 ##############
sub acsesu {
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
(@in_addr) = split(/\s/, $addr);
$addr = $in_addr[0];
$addr_in = $addr;
if ($host eq "" || $host eq $addr) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
if ($host eq "") {$host = $addr;}
$host_in = $host;
if ($host_kyuka eq 'yes' && (-e "$in_host")){
if(!(-z "$in_host")){
open(IN,"< $in_host") || &err2("Open Error : in_host");
eval{ flock (IN, 1); };
$kanri_ip = <IN>;
close(IN);
chomp $kanri_ip;
(@m_ip) = split(/<>/,$kanri_ip);
$ok = 0;
foreach (@m_ip){
if($_ eq "$host_in $addr_in"){$ok = 1;last;}
}
if($_[0]){return ($ok);}
if(!$ok){
$ohna_pas = "";
$host_mes = "ホスト一致がありません。";
}else{
$host_mes = "ホスト一致があります。";
}
}
}
}
#デコード処理
sub decode {
my ($query,$pair);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
if ($query ne "" && $getin == 1){&err("GET");}
}
my ($saizu)=length $query;
if ($saizu > $max_size){&err("エラー・サイズオーバー");}
foreach $pair (split(/&/, $query)) {
my ($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value =~ s/\0/0/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\r\n/<br>/g; #追加
$value =~ s/\r|\n/<br>/g;
$value =~ tr/+/ /;
$In{$key} = $value;
}
}
sub nyuryoku{
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>管理室入り口</title>
</head>
<BODY BGCOLOR="#ffff00">
<br>
<form action="$this_cgi" method="POST">
<input type="hidden" name="mode" value="admin">
<input type="text" name="kanrisya_name" value="" maxlength="30">名前<br>
<input type="text" name="kanrisya_pas" value="" maxlength="30">パスワード<br>
<input type="text" name="aikotoba" value="" maxlength="30">IP合言葉ホストが変更なしの場合書かなくてよい<br>
<input type="submit" value="送信">
</form>
</BODY>
</html>
EOF
exit;
}
#####
sub admin{
($okok) = &acsesu(1);
if(!($ohna_name eq $In{'kanrisya_name'} && $ohna_pas eq $In{'kanrisya_pas'})){return;}
if($aikotoba eq $In{'aikotoba'} && !$okok){
$host = $ENV{'REMOTE_HOST'};
($addr) = split(/ /, $ENV{'REMOTE_ADDR'});
if ($host eq "" || $host eq $addr) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
if ($host eq "") { $host = $addr; }
open (IN, "< $in_host") or &err("エラー・ファイルが開けません in_host");
eval{ flock (IN, 1); };
$f_host = <IN>;
@host_kiroku = <IN>;
close (IN);
chomp $f_host;
(@f_in_host) = split(/<>/, $f_host);
$purasu = 0;
foreach $deta(@f_in_host){
if("$host $addr" eq $deta){$purasu = 1;}
push @new_f_in_host,$deta;
}
if(!$purasu){unshift @new_f_in_host,"$host $addr";}
if($#new_f_in_host > $ip_kazu){$#new_f_in_host = $ip_kazu;}
$new_f_host = join ("<>",@new_f_in_host);
$new_f_host .= "<>\n";
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time) ; #一括取り入れ
$year += 1900; # $year = $year + 1900 と同じ
++$mon ;
@youbi=('日','月','火','水','木','金','土');
$mond = sprintf("%02d",$mon);
$mdayd = sprintf("%02d",$mday);
$hourd = sprintf("%02d",$hour);
$mind = sprintf("%02d",$min);
$secd = sprintf("%02d",$sec);
$jikan = "$year年$mond月$mdayd日$youbi[$wday]曜日$hourd時$mind分$secd秒";
if($#host_kiroku >= 24){$#host_kiroku = 24;}
unshift @host_kiroku,"$host $addr<>$jikan<>$host<>$ENV{'REMOTE_HOST'}<>$addr<>$ENV{'REMOTE_ADDR'}<>\n";
open (OUT, "> $in_host") or &err("エラー・ファイルが開けません in_host");
eval{ flock (OUT, 2); };
print OUT $new_f_host;
print OUT @host_kiroku ;
close (OUT);
$ima_time = time;
open (FOUT, "> $koshin_fail") or &err("エラー・ファイルが開けません koshin_fail");
eval{ flock (FOUT, 2); };
print FOUT "$ima_time $host 許可ホストの変更がありました。";
close (FOUT);
}elsif(!$okok){return;}
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>管理室</title>
</head>
<BODY BGCOLOR="#00ffff">
<br>
<form action="$this_cgi" method="POST">
<input type="text" name="kanrisya_name" value="$In{'kanrisya_name'}" maxlength="30"><br>
<input type="text" name="kanrisya_pas" value="$In{'kanrisya_pas'}" maxlength="30"><br>
<input type="submit" value="トップページに値を持って帰る">
</form><br>
管理者の処理を行う場所です。
EOF
exit;
}
###### エラー ########
sub err{
if($_[1] ne "in"){
print "Content-type:text/html\n\n";
print <<"EOF" ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>エラー</title>
</head>
<BODY BGCOLOR="#ffffff">
EOF
}
print 'エラー'."<br>\n";
print "$_[0]<br>\n";
print <<"EOF" ;
</BODY>
</html>
EOF
exit;
}
####################### host3/host.cgi #########################
#!D:/Perl/bin/perl
# サーバーに合わせて下さい
#!/usr/local/bin/perl
#!C:/Perl64/bin/perl
##### 開発記録など ############
# ver1.01
#
# host.cgi 700(パーミッション)
##### 設定 ####################
# このcgiのファイルの名前
$this_cgi = 'host.cgi';
# オーナーパスの設定(変更してください)
$ona_pas = 'wiki';
# 許可管理者名
$kanre_name = 'ウィキブックス';
$ona_id = 'うぃきぺでぃあ';
$hozon_fail = 'in_host.cgi';
unless(-e $hozon_fail){
open (FIN, "> $hozon_fail") or &err2("エラー・ファイルが開けません.0");
close (FIN);
}
# 更新案内ファイル名
$koshin_fail = 'host_koushin_ari.txt';
# 記録しておくIPの数 1個多くなります。0の時1個
$ip_kazu = 5;
# get = 1 GET受け入れ禁止
$get_no = 1;
#=====================
&loadformdata; #フォーム入力
&getoin;
sub getoin{
print "Content-type:text/html;\n\n";
print <<EOF ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>許可ホスト変更</title>
</head>
<body>
EOF
$host = $ENV{'REMOTE_HOST'};
($addr) = split(/ /, $ENV{'REMOTE_ADDR'});
if ($host eq "" || $host eq $addr) {
$host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr;
}
if ($host eq "") { $host = $addr; }
$disp_ok = 0;
if($FORM{'name'} eq $kanre_name && $FORM{'id'} eq $ona_id && $FORM{'pas'} eq $ona_pas && $FORM{'kanri'} eq $FORM{'kensa'}){
open (IN, "< $hozon_fail") or die;
eval{ flock (IN, 1); };
$f_host = <IN>;
@host_kiroku = <IN>;
close (IN);
chomp $f_host;
(@f_in_host) = split(/<>/, $f_host);
$purasu = 0;
foreach $deta(@f_in_host){
$i = 0;$loop = 0;
foreach (0..$#f_in_host){
$d_no = "d_no$i";
if($FORM{$d_no} eq $deta){$loop = 1;}
$i++;
}
if(!$loop){
if("$FORM{'host_in'}" eq $deta){$purasu = 1;}
push @new_f_in_host,$deta;
}
}
if(!$purasu){unshift @new_f_in_host,"$FORM{'host_in'}";}
if($#new_f_in_host > $ip_kazu){$#new_f_in_host = $ip_kazu;}
$new_f_host = join ("<>",@new_f_in_host);
$new_f_host .= "<>\n";
&get_time;
if($#host_kiroku >= 24){$#host_kiroku = 24;}
unshift @host_kiroku,"$FORM{'host_in'}<>$jikan<>$host<>$ENV{'REMOTE_HOST'}<>$addr<>$ENV{'REMOTE_ADDR'}<>\n";
$host_in = $FORM{'host_in'};
open (OUT, "> $hozon_fail") or die;
eval{ flock (OUT, 2); };
print OUT $new_f_host;
print OUT @host_kiroku ;
close (OUT);
$ima_time = time;
open (FOUT, "> $koshin_fail") or die;
eval{ flock (FOUT, 2); };
print FOUT "$ima_time $host 許可ホストの変更がありました。";
close (FOUT);
$disp_ok = 1;
}
$kensa = sprintf("%04d",int(rand(10000)));
print <<EOF ;
<h2 align="center">許可ホスト変更</h2><br>
<div align="center">
host = $host<br>
addr = $ENV{'REMOTE_ADDR'}<br><br>
<form action="$this_cgi" method="post">
名前:<input type="text" name="name"><br>
ID:<input type="text" name="id"><br>
パスワード:<input type="password" name="pas"><br>
確認:<input type=text name="kensa"> <font color=#ff0000>$kensa</font>を左に入れてください
<input type=hidden name=kanri value=$kensa><br>
現在のホスト $host $addr<br>
設定ホスト:<input type=text name="host_in" value="$host $addr" size="50"><br>
<input type=submit value=" 送 信 "><br>
EOF
if($disp_ok == 1){
$i = 0;
foreach (@new_f_in_host){
print "<input type=\"checkbox\" name=\"d_no$i\" value=\"$_\">$_<br>\n";
$i++;
}
}
print <<EOF ;
</form>
EOF
foreach (@host_kiroku){
($host_disp0,$time_disp,$raitu_host,$addr_disp,$host_disp,$addr0_disp) = split(/<>/);
chomp $addr0_disp;
print "$host_disp0 , $time_disp : $raitu_host , $addr_disp , $host_disp , $addr0_disp<br>\n";
}
print "</div></body></html>\n";
exit;
}
### フォーム受信 ##########
sub loadformdata {
$max_size = 200;
my ($query,$pair);
if($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
$query = $ENV{'QUERY_STRING'};
if ($get_no ==1 && $query ne ""){&err2("エラー・GET 禁止");}
}
my ($saizu)=length $query;
if ($saizu > $max_size){&err2("エラー・サイズオーバー");}
foreach $pair (split(/&/, $query)) {
my ($key, $value) = split(/=/, $pair);
# 文字のデコード
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value =~ s/\0/0/g;
$value =~ s/&/&/g;
if($value =~ m/</ ){&err2("禁止コード < があります。");}
if($value =~ m/>/ ){&err2("禁止コード > があります。");}
$value =~ s/"/"/g;
$value =~ s/\x0D\x0A/<br>/g;
$value =~ s/\r|\n/<br>/g; #追加
$value =~ tr/\t//;
$FORM{$key} = $value;
}
(@kennsa) = split(/ /, $FORM{'host_in'});
if($kennsa[2]){&err2("コードの書き込み違反");}
}
### 現在の時間出し ###############
sub get_time{
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time) ; #一括取り入れ
$year += 1900; # $year = $year + 1900 と同じ
++$mon ;
@youbi=('日','月','火','水','木','金','土');
$mond = sprintf("%02d",$mon);
$mdayd = sprintf("%02d",$mday);
$hourd = sprintf("%02d",$hour);
$mind = sprintf("%02d",$min);
$secd = sprintf("%02d",$sec);
$jikan = "$year年$mond月$mdayd日$youbi[$wday]曜日$hourd時$mind分$secd秒";
}
sub err2{
print "Content-type:text/html;\n\n";
print <<EOF ;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>エラー</title>
</head>
<body>
<h2 align="center">$_[0]</h2><br>
</body></html>
EOF
exit;
}
</syntaxhighlight>
== 関連書籍 ==
* [[Perl]]
* [[PHP]]
* [[HTML]]
* [[CSS]]
* [[JavaScript]]
** [[JavaScript/XMLHttpRequest#Ajax|Ajax]]
[[Category:World Wide Web]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
bdbxrsepk0fuzpkuggfbqgnqt5rip7b
CSS
0
2136
205974
204499
2022-07-29T06:56:44Z
Ef3
694
/* 各ブラウザーでの機能の対応状況の調べ方 */ 具体的に、特定の機能のブラウザーごとの実装状況を調べることができます。 例えば flexbox の実装状況が知りたかったとると、「flexbox」を https://caniuse.com/ で検索します。 すると、 https://caniuse.com/?search=flexbox が帰ってきます。 これを観ると、いまは亡きIEは、最終版まで flexbox をサポートできず、他のモダンブラウザーはすべて対応していることがわかります。 検索対象はCSSにとどまらず、HTML, JavaScript など多岐にわたり [https://caniuse.com/?search=fetch fetch] などのWeb APIも検索対象になります。
wikitext
text/x-wiki
<small>{{Pathnav|メインページ|工学|情報技術|プログラミング}}</small>
<!-- __NOTOC__ -->
== 目次 ==
{{進捗状況}}
{{蔵書一覧}}
<div style="border: #99f 1px solid; padding: 1ex; margin: 0 230px 0 0; background: #eef;">
* [[#はじめに|はじめに]]
* [[/記述|記述]]{{進捗|25%|2008-06-29}}:CSSの記述方法
* [[HTML/フレーム]] flexbox や CSS grid について解説あり
* [[/フォント|フォント]]{{進捗|25%|2006-12-18}}
* [[/背景|背景]]{{進捗|25%|2005-09-03}}:背景色・背景画像等の指定方法
* [[/カーソル|カーソル]]{{進捗|25%|2009-11-08}}:カーソルの指定方法
* [[/ブラウザ|ブラウザ]]{{進捗|00%|2005-07-12}}:特定のブラウザでのみ有効な指定
* [[/継承|継承]]:表示効果の継承と既定値
* [[/ボックス|ボックス]]:ボックスの概念と指定方法
* [[/テキスト|テキスト]]
* [[/配置|配置]]
* [[/リスト|リスト]]
* [[/テーブル|テーブル]]
* [[/プリント|プリント]]
* [[/音声|音声]]
</div>
== はじめに ==
{{Wikipedia|Cascading Style Sheets}}
'''CSS''' (Cascading Style Sheets) は[[HTML]]文書や[[XML]]文書に対して、文書のレイアウトや文字色などの多様なスタイルを指定するために生み出されました。
従来、HTMLのみでも文書に対して文字色の変更や背景画像を添えるなどの限定的な装飾指定は可能でしたが、HTML文書のみで完結した装飾指定は文書構造を複雑にし、また作成者によっては装飾目的で文書に誤った意味を付加することもあり、閲覧者にとってはアクセス容易性を、作成者にとってはメンテナンス性を低下させる原因となりました。
CSSを利用することによって構造と装飾を分離することが出来るため、HTML文書やXML文書の文書構造をシンプルに保つことができ、また従来のHTML文書のみで完結した装飾指定と比べても格段に豊富な装飾が可能になります。
=== 各ブラウザーによる解釈の違い ===
2022年6月現在広く利用されている[[w:ウェブブラウザ|ウェブブラウザー]]には、[[W:Google Chrome|Google Chrome]]、[[W:Microsoft Edge|Microsoft Edge]]や[[w:Mozilla Firefox|Mozilla Firefox]] 、[[w:Safari|Safari]](macOSのウェブブラウザー)などがあります。
それぞれのウェブブラウザーでは、まだ国際規格化されていない独自のCSS拡張や草案段階の機能を先行実装しています。
さらに国際規格化されている機能でも各ブラウザーごとに解釈に揺れがあったり、間違った解釈がされていたり、あるいはサポートされていないといったものもあります。
このため、あるブラウザーで良く見えていたものが他のブラウザーでは閲覧出来ない事があります。
このことから、ウェブページを作成する場合には、独自拡張や先行実装を極力使用しないように注意する必要があります。
=== 各ブラウザーでの機能の対応状況の調べ方 ===
具体的に、特定の機能のブラウザーごとの実装状況を調べることができます。
例えば flexbox の実装状況が知りたかったとると、「flexbox」を https://caniuse.com/ で検索します。
すると、 https://caniuse.com/?search=flexbox が帰ってきます。
これを観ると、いまは亡きIEは、最終版まで flexbox をサポートできず、他のモダンブラウザーはすべて対応していることがわかります。
検索対象はCSSにとどまらず、HTML, JavaScript など多岐にわたり [https://caniuse.com/?search=fetch fetch] などのWeb APIも検索対象になります。
== CSS以外のレイアウト ==
CSS3はレイアウトを操作する機能を提供します。ところが現実のインターネットにはHTMLのTABLE要素を用いてレイアウトするなどCSSによらず本来の文章構造とは一致しないマークアップをレイアウトの為に行ったコンテンツがいまだに散見されます(2021年6月現在)。
この様なマークアップを行うと、例えば視覚障害者の方が使う読み上げブラウザが文章構造を把握できず適切な読み上げができなくなってしまいます。
また、TABLE要素でレイアウトするとレスポンシブデザインには出来ないのでモバイルディバイスでは「巨大な表の一部を虫眼鏡で覗く」様なユーザ体験となります。
HTML4では、色やサイズのHTML要素により指定する機能(FONT要素が象徴的)は、非推奨ながら[[w:W3C|W3C]]の規定するHTML標準の一部でした(非推奨であるがゆえ標準化の度合いが相対的に低く、それが[[w:HTMLレンダリングエンジン|HTMLレンダリングエンジン]]ごとの差異をさらに大きくする悪循環に陥っていました)。
しかし、HTML5では規格制定主体がW3Cから[[w:WHATWG|WHATWG]]となり、大幅な仕様改訂が行われFONT要素など物理修飾を行う要素は廃止(一部は物理修飾を離れた意味に再定義)となりました。
このことによってFONT要素はもはやHTML5の要素ですらありません<ref>https://html.spec.whatwg.org/multipage/#toc-semantics には FONT Element はなく Obsolate との言及すらない。</ref>)。
また、FRAMESET要素も廃止されました。
[[w:DOCTYPE|DOCTYPE]]から[[w:DTD|DTD]]がなくなり、[[w:SGML|SGML]]に基づいたマークアップ言語ですらなくなりました。
⇒ [[w:ウェブ標準|ウェブ標準]]
== ※ 未分類 ==
:※ どこのサブページに入れたらいいか不明な内容を、ここに記述する。
:ある程度、記述が確立したら、サブページ化してください。
たとえばCSSを使って、ページを左右2段組にしたい場合、下記コードのようにすればいい。
典型的な例である。
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによるページ左右分割のコード例</title>
<style type="text/css">
.left {
width: 60%;
float: left;
background-color: #ccccff
}
.right {
width: 30%;
float: right;
background-color: #ffaaaa;
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
.kaigyo2 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
aaa aaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
</div>
<div class="right">
<div class="kaigyo2">
bbbbbbb bbbbbbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbb
</div>
</div>
</body>
</html>
</syntaxhighlight>
;解説
floatの指定がないと、片方のブロックの下の行から、もう片方のブロックの描画を開始してしまう。なので、もし floatが無いと、左右のブロックが斜め気味に配置されてしまい、目的の配置にならない。
とにかく、左右に段組をしたい配置の場合、まず float を検討するのが良いだろう(なお、他にも方法はある)。
CSS 指定の中の
word-break: break-all;
overflow-wrap: anywhere;
は、改行を指定するのに、実用上は、普通は必要になる。
コレが無いと、長い文章などが突き出てしまう。(特に日本語の場合、突き出やすい。)
なお、<code> word-break: break-all; </code> も <code> overflow-wrap: anywhere; </code> も効果はほぼ同じだが、ブラウザ種類ごとの互換性のため、上記コードでは両方とも記載してある。
width 幅とは横幅のこと。なお 縦幅なら height (ハイト)である。
width や height を指定する際、この場合は % (パーセント)単位でも指定が出来る。(CSS や html で入り組んだ複雑なレイアウトをしたりすると、場合によっては % 指定を受け付けないブラウザもあるが、しかしこのコード例の程度のレイアウトなら、どのブラウザでも(2020年5月4日に Firefox75 および Google Chrome84 で確認)、%表示できる。)
他にもピクセル単位(px)でwidthなどの幅を指定する方法もある。
余談だが、一般にCSSのコードは head タグの中に入れるのが普通である(入れなくても動作する)。
なお、この左右2段組のレイアウトのことを「2カラム」と言います。「カラム」とは柱のことです。
いっぽう、もし 左・中央・右 で3段構成になっていれば「3カラム」と言います。
通常のなんの左右分割もしてない状態なら、「シングルカラム」と言います。
あなたが今読んでいる「なお、この左右2段組のレイアウトのことを「2カラム」と言います。」という文章から「通常のなんの左右分割もしてない状態なら、「シングルカラム」と言います。」の文章までは、パソコン画面では、シングルカラムで表示されているだろうと思います。
== CSS関数 ==
マイナーな機能だが、CSS では実は数値計算が可能である。
ただし calc()関数を呼び出すなどして、そのカッコ内で数値計算をする必要がある。
calc()関数では、加減乗除をできる。
CSSのプロパティ指定の中で
width: calc(20% + 40%);
のように、calcの中で指定する。(なお、上記の場合、60%になる)
CSS関数による数値計算の際、演算子 + や - の前後には半角スペースの空白を入れる必要がある。(そうしないと、ブラウザが演算子として認識せず、エラーになる。)
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSS関数のテスト</title>
<style type="text/css">
.left {
width: calc(20% + 40%);
float: left;
background-color: #ccccff
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
5555555555555555555555555555555555555555555555555555555555555555555555555555555
5555555555555555555555555555555555555555555555555555555555555555
</div>
</div>
</body>
</html>
</syntaxhighlight>
;結果
::ページの左端から、60%の幅までに「5555・・・」の記述が続く。
;その他のCSS関数
CSS関数はいくつもあるが、比較的によく紹介されるものとして、
:回数などをカウントできる counter()
:minmax
:attr()
:色において透過度を含めた色指定 rgba()
:変数を参照できる var()
などがある。
counter()については、別の節でCSSカウンターと一緒に説明する。
なお、CSS関数の知名度はマイナーであり、一般の書籍では、CSS関数を紹介していない書籍も多い。
そもそも、本来、関数などの動的処理の構築は JavaScript の担当なので、あまりCSS関数で複雑な機能の実装を行うのは好ましくないだろう。
また、マイナーな機能は、将来的に仕様変更などもされやすく、もしかしたら機能が削減などをする可能性も高い。
こういった事情があるので、CSS関数を使うなら、なるべく最低限だけ、レイアウトや簡単な画像の表示といった映像的なことがらに関係ありそうな処理にだけ、CSS関数を使うべきだろう。
画像とあまり関係なさそうな処理や、複雑な処理は JavaScript 側で行うべきだろう。
;無い機能
いわゆる if文(条件分岐) や while文(繰り返し) などといった制御構造の機能は、CSSには無い。
そういった制御構造のプログラミングをしたいなら、JavaScirptを使うべきである。(webページでの動的な制御は、JavaScriptの担当である。CSSは静的なレイアウト管理の担当である。制御構造は、CSSとは管轄が違う。)
== CSS変数 ==
2015年ごろから主要なブラウザに追加されてきた新機能で、CSS変数というのがある。正確には「カスタム プロパティ」という。
2015年以降の普通のwebブラウザでも、ほぼそのまま使える(バージョンによる若干の違いの可能性はあり)。特殊なアドオンなどのインストールは不要である。
;書式
<pre>
:root {
--変数名: 値 ;
}
</pre>
といった書式で、グローバル変数を定義できる。
CSS変数により、プロパティの値を変数として定義できる。(一方、プロパティ名自体は、CSS変数では定義できない。)
コロン「:」をrootの前につけることを忘れないように。
また、変数名の前には<code>--</code>をつける。ハイフン2個である。
CSS変数を呼び出すには、CSS関数のvar()を使って、
var(--変数名)
の書式で呼び出せる。
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSS変数のサンプル</title>
<style type="text/css">
:root {
--hensuu: 20%;
}
.left {
width: var(--hensuu);
float: left;
background-color: #ccccff
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
</div>
</div>
</body>
</html>
</syntaxhighlight>
;結果
::左端から幅 20% まで「ffff・・・」(以下略)を表示。
* 経緯
正式名称がカスタムプロパティなのに、なぜ『CSS変数』(英語でも"CSS Variables" という)のように『変数』と呼ばれるかというと、これには歴史的な経緯があり、もともと国債規格団体のW3Cでは仕様名が"CSS Variables (『CSS変数』)として提唱されており<ref> [https://www.w3.org/TR/2012/WD-css-variables-20120410/ "CSS Variables Module Level 1"] 2020年5月15日に確認。</ref>、
2012年当時の規格では
::(※ 廃止された古い仕様)
:root {
var-変数名: 値 ;
}
のように変数(Variable)として宣言する場合には接頭辞に var- をつけないといけなかったという経緯があったのである。
ブラウザの実装でも、早い段階でCSS変数のサポートを導入した過去のFeirefox29 (時期は2013年の後半ごろ)でも、同様の旧仕様でサポートしていた。
その後、他社のブラウザでも同様の機能が導入されることになり、その際にW3C側での仕様の更新で、現在のカスタムプロパティの仕様に変更されたという経緯があり、その際に名称も変更した。
よってカスタムプロパティの実態は、変数である。 CSSの プロパティ値 を 変数を使って カスタムする という機能である。
== コメントアウトの方法 ==
CSSでコメントアウトを使うには<code>/* */</code>を使う。(一方、C言語などにある <code>//</code>だとエラーになり実行されない。)
コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i; /* コメントのテスト */
}
h3::before {
counter-increment: i;
content: counter(i);
}
</style>
</head>
<body>
<h3>はじめにg</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
上記コードでは styleタグのbody の counter-reset でコメントアウトをしている。
== CSSカウンター ==
=== 基本 ===
CSSで、呼び出し回数をカウントをする機能がある。
節のタイトルに連番などをつけたい場合に、用いることができる。
書式は
'''CSS'''
<syntaxhighlight lang="css">
body {
counter-reset: 変数名; /* カウンター変数をリセット */
}
連番させたい要素のセレクタ::before {
counter-increment: 変数名; /* 変数名のあとに数字を指定すると、増分の間隔を指定できる。何も数値指定しない場合は1ずつ増分 */
content: counter(変数名); /* カウントする変数とその書式 */
}
</syntaxhighlight>
である。
プロパティ content の値に、CSS関数の couter() を用いる。
'''コード例'''
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: counter(i);
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
1はじめに
2文字表示のしかた
3算術演算
書式のとおりだと、番号「1」と「はじめに」のあいだに隙間が無く、やや読みづらい。
=== 番後の前後に文字をつけたす ===
そこで、 contentプロパティのところを
<syntaxhighlight lang="css">
content: "第" counter(i) "章 ";
</syntaxhighlight>
のようにすると、番号の前後に文字を入れることができる。空白を追加したいなら、単に引用符の内部に空白スペースをいれればいい。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: "第" counter(i) "章 ";
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
第1章 はじめに
第2章 文字表示のしかた
第3章 算術演算
=== 増分の間隔を変更 ===
プロパティ
<syntaxhighlight lang="css">
counter-increment: i 2;
</syntaxhighlight>
というように counter-increment プロパティの変数(i)のあとに数値指定すると、2→4→6 というふうに数える。つまり
第2章 はじめに
第4章 文字表示のしかた
第6章 算術演算
と表示が変わる。
つまり、
<syntaxhighlight lang="css">
counter-increment: i;
</syntaxhighlight>
と変数のあとに何も数値を書かない場合は、
<syntaxhighlight lang="css">
counter-increment: i 1;
</syntaxhighlight>
と同じ意味になる。
なお上述のiの直後の増分間隔の数値には、0 や -1 など指定できる。(Fedora32 環境での Firefox75で動作確認ずみ。)
=== カウントの初期値を変更 ===
CSSの body のほうで、
<syntaxhighlight lang="css">
counter-reset: i 10;
</syntaxhighlight>
のように変数のあとに数値を書くことで0以外の数値から数えることができる。
何も指定しない場合、CSSでは0番から数えている。いくつか前の節で「第1章 はじめに」のように表示されるのは、最初の1回目のカウントのときに、+1したからである。
<syntaxhighlight lang="css">
counter-increment: i -1;
</syntaxhighlight>
のようにマイナスの数を増分間隔(インクリメント値)に指定すれば、9→8→7というふうにカウントダウン方式で数えることもできる。
'''コード例'''
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i 10;
}
h3::before {
counter-increment: i -1;
content: "のこり" counter(i) "秒 ";
}
</style>
</head>
<body>
<h3></h3>
<h3></h3>
<h3></h3>
</body>
</html>
</syntaxhighlight>
'''表示結果'''
のこり 9秒
のこり 8秒
のこり 7秒
このように、最初のカウントの際、すでに増減された状態で表示されている。(なので「のこり 10秒」でなく「のこり 9秒」から表示している。)
なお、説明の簡単化のため、秒数カウントダウンのような文字表示をしたが、ブラウザで表示を放置していても、べつにカウントダウンが進行したりはしないので、誤解のないように。
=== カウントのスタイルを変更 ===
{{code|counter()}}CSS関数の第2引数でスタイルを変更することが出来る。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: "第" counter(i, cjk-ideographic) "章 ";
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
第一章 はじめに
第二章 文字表示のしかた
第三章 算術演算
== 図形の描画 ==
CSSでは、円や長方形などの基本図形の描画もできる。ただし、あまり使い勝手が良くないので、HTML5で実装されたcanvasタグや、あるいはSVG機能を使って図形描画するのが良い。(SVG描画については wikibooks『[[SVG]]』を参照せよ。HTML5のcanvasタグの使い方についてはwikibooks『[[HTML/HTML5#canvas要素]]』を参照せよ。)
CSSはもともと、ページ構成などのレイアウトを決めるためのものなので、そもそもCSSは図形描画を目的としたものではない。HTML5以降の現在、SVGやcanvasなど図形描画を目的とした専用の機能があるので、なるべく、それらの専用の機能を用いたほうが将来的なメンテナンスなども安全であろう。
=== divによる方法 ===
コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによる図形</title>
<style type="text/css">
.maru { /* maru の部分は自由に英語で命名できる */
width: 200px;
height: 100px;
background-color: blue;
border-radius: 50%; /* 50%なら円。0%に近づけると四角に近づく */
}
</style>
</head>
<body>
文字 <div class="maru"></div> ああああ
</body>
</html>
</syntaxhighlight>
表示結果としては、
文字
※ここに楕円
ああああ
というレイアウトで、楕円(横軸の長さ200px、縦軸の長さ100pxの楕円)が表示される。divによって、改行が強制的に行われるので、このようなレイアウトになります。
なお、プロパティ中に <code>background-color</code> とありますが、このプロパティで指定した色によって円の内部が塗りつぶされます。
=== spanによる方法 ===
span タグと<code>display: inline-block;</code> を使うことで、テキスト中で改行させずに図形表示できます。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによる図形</title>
<style type="text/css">
.maru { /* maru の部分は自由に英語で命名できる */
display: inline-block; /* span ではこれを追加する */
width: 200px;
height: 100px;
background-color: rblue;
border-radius: 10%;
}
</style>
</head>
<body>
文字 <span class="maru"></span> ああああ
</body>
</html>
</syntaxhighlight>
表示結果としては、
文字 (※ここに楕円) ああああ
というレイアウトで、楕円(横軸の長さ200px、縦軸の長さ100pxの楕円)が表示される。divと違い、上記コードでは改行がないので、このような横並びのレイアウトになります。
{{-}}
{{Stub}}
{{NDC|007.64}}
[[Category:CSS|*]]
[[Category:スタイルシート言語]]
[[Category:World_Wide_Web]]
cdx9jj2mt5xpan9q9zbgumkrmpbmzun
205975
205974
2022-07-29T07:04:36Z
Ef3
694
/* ※ 未分類 */ [TODO:次に示している例は、floatを使ったり根拠のないマージン見込みを使った悪いコードで、guridやflexboxを使った良質のコードに置換えるべきです]
wikitext
text/x-wiki
<small>{{Pathnav|メインページ|工学|情報技術|プログラミング}}</small>
<!-- __NOTOC__ -->
== 目次 ==
{{進捗状況}}
{{蔵書一覧}}
<div style="border: #99f 1px solid; padding: 1ex; margin: 0 230px 0 0; background: #eef;">
* [[#はじめに|はじめに]]
* [[/記述|記述]]{{進捗|25%|2008-06-29}}:CSSの記述方法
* [[HTML/フレーム]] flexbox や CSS grid について解説あり
* [[/フォント|フォント]]{{進捗|25%|2006-12-18}}
* [[/背景|背景]]{{進捗|25%|2005-09-03}}:背景色・背景画像等の指定方法
* [[/カーソル|カーソル]]{{進捗|25%|2009-11-08}}:カーソルの指定方法
* [[/ブラウザ|ブラウザ]]{{進捗|00%|2005-07-12}}:特定のブラウザでのみ有効な指定
* [[/継承|継承]]:表示効果の継承と既定値
* [[/ボックス|ボックス]]:ボックスの概念と指定方法
* [[/テキスト|テキスト]]
* [[/配置|配置]]
* [[/リスト|リスト]]
* [[/テーブル|テーブル]]
* [[/プリント|プリント]]
* [[/音声|音声]]
</div>
== はじめに ==
{{Wikipedia|Cascading Style Sheets}}
'''CSS''' (Cascading Style Sheets) は[[HTML]]文書や[[XML]]文書に対して、文書のレイアウトや文字色などの多様なスタイルを指定するために生み出されました。
従来、HTMLのみでも文書に対して文字色の変更や背景画像を添えるなどの限定的な装飾指定は可能でしたが、HTML文書のみで完結した装飾指定は文書構造を複雑にし、また作成者によっては装飾目的で文書に誤った意味を付加することもあり、閲覧者にとってはアクセス容易性を、作成者にとってはメンテナンス性を低下させる原因となりました。
CSSを利用することによって構造と装飾を分離することが出来るため、HTML文書やXML文書の文書構造をシンプルに保つことができ、また従来のHTML文書のみで完結した装飾指定と比べても格段に豊富な装飾が可能になります。
=== 各ブラウザーによる解釈の違い ===
2022年6月現在広く利用されている[[w:ウェブブラウザ|ウェブブラウザー]]には、[[W:Google Chrome|Google Chrome]]、[[W:Microsoft Edge|Microsoft Edge]]や[[w:Mozilla Firefox|Mozilla Firefox]] 、[[w:Safari|Safari]](macOSのウェブブラウザー)などがあります。
それぞれのウェブブラウザーでは、まだ国際規格化されていない独自のCSS拡張や草案段階の機能を先行実装しています。
さらに国際規格化されている機能でも各ブラウザーごとに解釈に揺れがあったり、間違った解釈がされていたり、あるいはサポートされていないといったものもあります。
このため、あるブラウザーで良く見えていたものが他のブラウザーでは閲覧出来ない事があります。
このことから、ウェブページを作成する場合には、独自拡張や先行実装を極力使用しないように注意する必要があります。
=== 各ブラウザーでの機能の対応状況の調べ方 ===
具体的に、特定の機能のブラウザーごとの実装状況を調べることができます。
例えば flexbox の実装状況が知りたかったとると、「flexbox」を https://caniuse.com/ で検索します。
すると、 https://caniuse.com/?search=flexbox が帰ってきます。
これを観ると、いまは亡きIEは、最終版まで flexbox をサポートできず、他のモダンブラウザーはすべて対応していることがわかります。
検索対象はCSSにとどまらず、HTML, JavaScript など多岐にわたり [https://caniuse.com/?search=fetch fetch] などのWeb APIも検索対象になります。
== CSS以外のレイアウト ==
CSS3はレイアウトを操作する機能を提供します。ところが現実のインターネットにはHTMLのTABLE要素を用いてレイアウトするなどCSSによらず本来の文章構造とは一致しないマークアップをレイアウトの為に行ったコンテンツがいまだに散見されます(2021年6月現在)。
この様なマークアップを行うと、例えば視覚障害者の方が使う読み上げブラウザが文章構造を把握できず適切な読み上げができなくなってしまいます。
また、TABLE要素でレイアウトするとレスポンシブデザインには出来ないのでモバイルディバイスでは「巨大な表の一部を虫眼鏡で覗く」様なユーザ体験となります。
HTML4では、色やサイズのHTML要素により指定する機能(FONT要素が象徴的)は、非推奨ながら[[w:W3C|W3C]]の規定するHTML標準の一部でした(非推奨であるがゆえ標準化の度合いが相対的に低く、それが[[w:HTMLレンダリングエンジン|HTMLレンダリングエンジン]]ごとの差異をさらに大きくする悪循環に陥っていました)。
しかし、HTML5では規格制定主体がW3Cから[[w:WHATWG|WHATWG]]となり、大幅な仕様改訂が行われFONT要素など物理修飾を行う要素は廃止(一部は物理修飾を離れた意味に再定義)となりました。
このことによってFONT要素はもはやHTML5の要素ですらありません<ref>https://html.spec.whatwg.org/multipage/#toc-semantics には FONT Element はなく Obsolate との言及すらない。</ref>)。
また、FRAMESET要素も廃止されました。
[[w:DOCTYPE|DOCTYPE]]から[[w:DTD|DTD]]がなくなり、[[w:SGML|SGML]]に基づいたマークアップ言語ですらなくなりました。
⇒ [[w:ウェブ標準|ウェブ標準]]
== ※ 未分類 ==
:※ どこのサブページに入れたらいいか不明な内容を、ここに記述する。
:ある程度、記述が確立したら、サブページ化してください。
[TODO:次に示している例は、floatを使ったり根拠のないマージン見込みを使った悪いコードで、guridやflexboxを使った良質のコードに置換えるべきです]
たとえばCSSを使って、ページを左右2段組にしたい場合、下記コードのようにすればいい。
典型的な例である。
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによるページ左右分割のコード例</title>
<style type="text/css">
.left {
width: 60%;
float: left;
background-color: #ccccff
}
.right {
width: 30%;
float: right;
background-color: #ffaaaa;
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
.kaigyo2 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
aaa aaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</div>
</div>
<div class="right">
<div class="kaigyo2">
bbbbbbb bbbbbbbbbbbbbb bbbbbbbbbbbbbbbbb bbbbbbbbbbbb
</div>
</div>
</body>
</html>
</syntaxhighlight>
;解説
floatの指定がないと、片方のブロックの下の行から、もう片方のブロックの描画を開始してしまう。なので、もし floatが無いと、左右のブロックが斜め気味に配置されてしまい、目的の配置にならない。
とにかく、左右に段組をしたい配置の場合、まず float を検討するのが良いだろう(なお、他にも方法はある)。
CSS 指定の中の
word-break: break-all;
overflow-wrap: anywhere;
は、改行を指定するのに、実用上は、普通は必要になる。
コレが無いと、長い文章などが突き出てしまう。(特に日本語の場合、突き出やすい。)
なお、<code> word-break: break-all; </code> も <code> overflow-wrap: anywhere; </code> も効果はほぼ同じだが、ブラウザ種類ごとの互換性のため、上記コードでは両方とも記載してある。
width 幅とは横幅のこと。なお 縦幅なら height (ハイト)である。
width や height を指定する際、この場合は % (パーセント)単位でも指定が出来る。(CSS や html で入り組んだ複雑なレイアウトをしたりすると、場合によっては % 指定を受け付けないブラウザもあるが、しかしこのコード例の程度のレイアウトなら、どのブラウザでも(2020年5月4日に Firefox75 および Google Chrome84 で確認)、%表示できる。)
他にもピクセル単位(px)でwidthなどの幅を指定する方法もある。
余談だが、一般にCSSのコードは head タグの中に入れるのが普通である(入れなくても動作する)。
なお、この左右2段組のレイアウトのことを「2カラム」と言います。「カラム」とは柱のことです。
いっぽう、もし 左・中央・右 で3段構成になっていれば「3カラム」と言います。
通常のなんの左右分割もしてない状態なら、「シングルカラム」と言います。
あなたが今読んでいる「なお、この左右2段組のレイアウトのことを「2カラム」と言います。」という文章から「通常のなんの左右分割もしてない状態なら、「シングルカラム」と言います。」の文章までは、パソコン画面では、シングルカラムで表示されているだろうと思います。
== CSS関数 ==
マイナーな機能だが、CSS では実は数値計算が可能である。
ただし calc()関数を呼び出すなどして、そのカッコ内で数値計算をする必要がある。
calc()関数では、加減乗除をできる。
CSSのプロパティ指定の中で
width: calc(20% + 40%);
のように、calcの中で指定する。(なお、上記の場合、60%になる)
CSS関数による数値計算の際、演算子 + や - の前後には半角スペースの空白を入れる必要がある。(そうしないと、ブラウザが演算子として認識せず、エラーになる。)
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSS関数のテスト</title>
<style type="text/css">
.left {
width: calc(20% + 40%);
float: left;
background-color: #ccccff
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
5555555555555555555555555555555555555555555555555555555555555555555555555555555
5555555555555555555555555555555555555555555555555555555555555555
</div>
</div>
</body>
</html>
</syntaxhighlight>
;結果
::ページの左端から、60%の幅までに「5555・・・」の記述が続く。
;その他のCSS関数
CSS関数はいくつもあるが、比較的によく紹介されるものとして、
:回数などをカウントできる counter()
:minmax
:attr()
:色において透過度を含めた色指定 rgba()
:変数を参照できる var()
などがある。
counter()については、別の節でCSSカウンターと一緒に説明する。
なお、CSS関数の知名度はマイナーであり、一般の書籍では、CSS関数を紹介していない書籍も多い。
そもそも、本来、関数などの動的処理の構築は JavaScript の担当なので、あまりCSS関数で複雑な機能の実装を行うのは好ましくないだろう。
また、マイナーな機能は、将来的に仕様変更などもされやすく、もしかしたら機能が削減などをする可能性も高い。
こういった事情があるので、CSS関数を使うなら、なるべく最低限だけ、レイアウトや簡単な画像の表示といった映像的なことがらに関係ありそうな処理にだけ、CSS関数を使うべきだろう。
画像とあまり関係なさそうな処理や、複雑な処理は JavaScript 側で行うべきだろう。
;無い機能
いわゆる if文(条件分岐) や while文(繰り返し) などといった制御構造の機能は、CSSには無い。
そういった制御構造のプログラミングをしたいなら、JavaScirptを使うべきである。(webページでの動的な制御は、JavaScriptの担当である。CSSは静的なレイアウト管理の担当である。制御構造は、CSSとは管轄が違う。)
== CSS変数 ==
2015年ごろから主要なブラウザに追加されてきた新機能で、CSS変数というのがある。正確には「カスタム プロパティ」という。
2015年以降の普通のwebブラウザでも、ほぼそのまま使える(バージョンによる若干の違いの可能性はあり)。特殊なアドオンなどのインストールは不要である。
;書式
<pre>
:root {
--変数名: 値 ;
}
</pre>
といった書式で、グローバル変数を定義できる。
CSS変数により、プロパティの値を変数として定義できる。(一方、プロパティ名自体は、CSS変数では定義できない。)
コロン「:」をrootの前につけることを忘れないように。
また、変数名の前には<code>--</code>をつける。ハイフン2個である。
CSS変数を呼び出すには、CSS関数のvar()を使って、
var(--変数名)
の書式で呼び出せる。
;コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSS変数のサンプル</title>
<style type="text/css">
:root {
--hensuu: 20%;
}
.left {
width: var(--hensuu);
float: left;
background-color: #ccccff
}
.kaigyo1 {
word-break: break-all;
overflow-wrap: anywhere;
}
</style>
</head>
<body>
<div class="left">
<div class="kaigyo1">
fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
</div>
</div>
</body>
</html>
</syntaxhighlight>
;結果
::左端から幅 20% まで「ffff・・・」(以下略)を表示。
* 経緯
正式名称がカスタムプロパティなのに、なぜ『CSS変数』(英語でも"CSS Variables" という)のように『変数』と呼ばれるかというと、これには歴史的な経緯があり、もともと国債規格団体のW3Cでは仕様名が"CSS Variables (『CSS変数』)として提唱されており<ref> [https://www.w3.org/TR/2012/WD-css-variables-20120410/ "CSS Variables Module Level 1"] 2020年5月15日に確認。</ref>、
2012年当時の規格では
::(※ 廃止された古い仕様)
:root {
var-変数名: 値 ;
}
のように変数(Variable)として宣言する場合には接頭辞に var- をつけないといけなかったという経緯があったのである。
ブラウザの実装でも、早い段階でCSS変数のサポートを導入した過去のFeirefox29 (時期は2013年の後半ごろ)でも、同様の旧仕様でサポートしていた。
その後、他社のブラウザでも同様の機能が導入されることになり、その際にW3C側での仕様の更新で、現在のカスタムプロパティの仕様に変更されたという経緯があり、その際に名称も変更した。
よってカスタムプロパティの実態は、変数である。 CSSの プロパティ値 を 変数を使って カスタムする という機能である。
== コメントアウトの方法 ==
CSSでコメントアウトを使うには<code>/* */</code>を使う。(一方、C言語などにある <code>//</code>だとエラーになり実行されない。)
コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i; /* コメントのテスト */
}
h3::before {
counter-increment: i;
content: counter(i);
}
</style>
</head>
<body>
<h3>はじめにg</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
上記コードでは styleタグのbody の counter-reset でコメントアウトをしている。
== CSSカウンター ==
=== 基本 ===
CSSで、呼び出し回数をカウントをする機能がある。
節のタイトルに連番などをつけたい場合に、用いることができる。
書式は
'''CSS'''
<syntaxhighlight lang="css">
body {
counter-reset: 変数名; /* カウンター変数をリセット */
}
連番させたい要素のセレクタ::before {
counter-increment: 変数名; /* 変数名のあとに数字を指定すると、増分の間隔を指定できる。何も数値指定しない場合は1ずつ増分 */
content: counter(変数名); /* カウントする変数とその書式 */
}
</syntaxhighlight>
である。
プロパティ content の値に、CSS関数の couter() を用いる。
'''コード例'''
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: counter(i);
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
1はじめに
2文字表示のしかた
3算術演算
書式のとおりだと、番号「1」と「はじめに」のあいだに隙間が無く、やや読みづらい。
=== 番後の前後に文字をつけたす ===
そこで、 contentプロパティのところを
<syntaxhighlight lang="css">
content: "第" counter(i) "章 ";
</syntaxhighlight>
のようにすると、番号の前後に文字を入れることができる。空白を追加したいなら、単に引用符の内部に空白スペースをいれればいい。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: "第" counter(i) "章 ";
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
第1章 はじめに
第2章 文字表示のしかた
第3章 算術演算
=== 増分の間隔を変更 ===
プロパティ
<syntaxhighlight lang="css">
counter-increment: i 2;
</syntaxhighlight>
というように counter-increment プロパティの変数(i)のあとに数値指定すると、2→4→6 というふうに数える。つまり
第2章 はじめに
第4章 文字表示のしかた
第6章 算術演算
と表示が変わる。
つまり、
<syntaxhighlight lang="css">
counter-increment: i;
</syntaxhighlight>
と変数のあとに何も数値を書かない場合は、
<syntaxhighlight lang="css">
counter-increment: i 1;
</syntaxhighlight>
と同じ意味になる。
なお上述のiの直後の増分間隔の数値には、0 や -1 など指定できる。(Fedora32 環境での Firefox75で動作確認ずみ。)
=== カウントの初期値を変更 ===
CSSの body のほうで、
<syntaxhighlight lang="css">
counter-reset: i 10;
</syntaxhighlight>
のように変数のあとに数値を書くことで0以外の数値から数えることができる。
何も指定しない場合、CSSでは0番から数えている。いくつか前の節で「第1章 はじめに」のように表示されるのは、最初の1回目のカウントのときに、+1したからである。
<syntaxhighlight lang="css">
counter-increment: i -1;
</syntaxhighlight>
のようにマイナスの数を増分間隔(インクリメント値)に指定すれば、9→8→7というふうにカウントダウン方式で数えることもできる。
'''コード例'''
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i 10;
}
h3::before {
counter-increment: i -1;
content: "のこり" counter(i) "秒 ";
}
</style>
</head>
<body>
<h3></h3>
<h3></h3>
<h3></h3>
</body>
</html>
</syntaxhighlight>
'''表示結果'''
のこり 9秒
のこり 8秒
のこり 7秒
このように、最初のカウントの際、すでに増減された状態で表示されている。(なので「のこり 10秒」でなく「のこり 9秒」から表示している。)
なお、説明の簡単化のため、秒数カウントダウンのような文字表示をしたが、ブラウザで表示を放置していても、べつにカウントダウンが進行したりはしないので、誤解のないように。
=== カウントのスタイルを変更 ===
{{code|counter()}}CSS関数の第2引数でスタイルを変更することが出来る。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>CSSカウンターのテスト</title>
<style>
body {
counter-reset: i;
}
h3::before {
counter-increment: i;
content: "第" counter(i, cjk-ideographic) "章 ";
}
</style>
</head>
<body>
<h3>はじめに</h3>
<h3>文字表示のしかた</h3>
<h3>算術演算</h3>
</body>
</html>
</syntaxhighlight>
'''実行結果'''
第一章 はじめに
第二章 文字表示のしかた
第三章 算術演算
== 図形の描画 ==
CSSでは、円や長方形などの基本図形の描画もできる。ただし、あまり使い勝手が良くないので、HTML5で実装されたcanvasタグや、あるいはSVG機能を使って図形描画するのが良い。(SVG描画については wikibooks『[[SVG]]』を参照せよ。HTML5のcanvasタグの使い方についてはwikibooks『[[HTML/HTML5#canvas要素]]』を参照せよ。)
CSSはもともと、ページ構成などのレイアウトを決めるためのものなので、そもそもCSSは図形描画を目的としたものではない。HTML5以降の現在、SVGやcanvasなど図形描画を目的とした専用の機能があるので、なるべく、それらの専用の機能を用いたほうが将来的なメンテナンスなども安全であろう。
=== divによる方法 ===
コード例
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによる図形</title>
<style type="text/css">
.maru { /* maru の部分は自由に英語で命名できる */
width: 200px;
height: 100px;
background-color: blue;
border-radius: 50%; /* 50%なら円。0%に近づけると四角に近づく */
}
</style>
</head>
<body>
文字 <div class="maru"></div> ああああ
</body>
</html>
</syntaxhighlight>
表示結果としては、
文字
※ここに楕円
ああああ
というレイアウトで、楕円(横軸の長さ200px、縦軸の長さ100pxの楕円)が表示される。divによって、改行が強制的に行われるので、このようなレイアウトになります。
なお、プロパティ中に <code>background-color</code> とありますが、このプロパティで指定した色によって円の内部が塗りつぶされます。
=== spanによる方法 ===
span タグと<code>display: inline-block;</code> を使うことで、テキスト中で改行させずに図形表示できます。
<syntaxhighlight lang="html5">
<!DOCTYPE html>
<html lang="ja">
<head>
<title>CSSによる図形</title>
<style type="text/css">
.maru { /* maru の部分は自由に英語で命名できる */
display: inline-block; /* span ではこれを追加する */
width: 200px;
height: 100px;
background-color: rblue;
border-radius: 10%;
}
</style>
</head>
<body>
文字 <span class="maru"></span> ああああ
</body>
</html>
</syntaxhighlight>
表示結果としては、
文字 (※ここに楕円) ああああ
というレイアウトで、楕円(横軸の長さ200px、縦軸の長さ100pxの楕円)が表示される。divと違い、上記コードでは改行がないので、このような横並びのレイアウトになります。
{{-}}
{{Stub}}
{{NDC|007.64}}
[[Category:CSS|*]]
[[Category:スタイルシート言語]]
[[Category:World_Wide_Web]]
6x6umff9fze1qk5h2i4h9esolic5lun
同志社大対策
0
2941
205946
199635
2022-07-28T12:13:14Z
はなまるくん
57536
/* 英語 */
wikitext
text/x-wiki
{{wikipedia|同志社大学}}
*[[日本の大学受験ガイド]] > [[同志社大対策]]
本項は、[[w:同志社大学|同志社大学]]の入学試験対策に関する事項である。
同志社大学は、京都府にある同志社英学校を前身とする私立大学である。試験問題は標準的な内容が中心であることから、合格最低点が非常に高くなっている(特に、理系科目は平易な内容が出題される)。学部にもよるが少なくとも70%~80%程度の得点が必要であるため、基礎をしっかり固め、バランスのとれた総合的な実力を高めることが重要である。大学創立の経緯から、全体的に英語に比重が置かれており、文系学部は、英語200点・国語150点・選択科目150点で、英語の配点が高い。また、選択科目は得点調整が行われる。したがって、'''先ずは英語を優先的に勉強すべきである'''といえる。理系学部は英語、数学(数III・C含む)、理科(地学I・II以外から一科目選択)であるが、学部によって配点が異なっている。
==全学部日程==
同志社大学では、個別学部日程のほかに、全学部日程も行っている。合格難易度は個別学部日程よりも若干高いが、入試問題自体はあまり変わらない。
==個別学部日程==
私大の入試の特徴として、定員以上の人数の受験者に合格が与えられることが挙げられるが、同志社大学もその例に洩れず、どの学部も定員の5倍程度の人数が合格になっている。よって、表面的な倍率(受験者数÷定員数)はどこの学部も15倍近いが、実質倍率(受験者数÷合格者数)は3倍程度なので、表面的な倍率に惑わされずに、必要な素養を備えた受験生には積極的に挑戦してほしい。
===英語===
(100分)大問2つの本文合計語数が約1800〜1965語以上に及ぶ長文読解問題2題と、約500語程度の会話文問題1題から成り立つ。設問には長文読解問題のいずれか1問に英文和訳、会話文問題に和文英訳も含まれるので注意が必要。
基本的な設問構成は大問3つ200点満点で、試験時間は100分。
〔Ⅰ〕・〔Ⅱ〕長文総合問題(大問2つで150点)
・空所補充問題
・同意語句選択問題
・同意文・節選択問題
・整序英作文問題
・内容一致問題
・下線部和訳問題
(過去には
・文法、用法識別問題
・内容説明文完成問題
・主題選択問題
・時系列文内容整序問題
等も主題されていたので頭に入れておきたい)
〔Ⅲ〕会話問題(50点)
・会話空所補充問題
・和文英訳(英作文)問題
極めて分量が多く、質・語彙レベルも高いため、ハイレベルな語彙力・速読力・精読力を備えた総合的な英語力が要求される。しかし、設問自体は平易で素直なものが多く、一定の読解力と語彙力があれば7~8割は得点できる。本文の約8割前後は一般的な単語帳・熟語集に載っている範囲で構成されているので、基本的な単語帳1冊~2冊(高校で配布されているもの)で語彙力は十分。
読解重視であるが、長文内に基本的な文法問題も入るため、基礎的な文法知識は必要である。しかし、例年単独での文法問題の出題は見られない。本文・設問ともに多義語が多く散見され、関関同立では関大に次ぐ出題量となっており、単語を覚える際は意識的にチェックしておきたい。読解問題では内容一致(不一致)問題の数が多いのが特徴で、関関同立でも際立っている。また読解問題では英文和訳が科され、単語・構文は難解なものは少ないものの、通常のストレートな訳では得点が難しく、配点も20点と高いため、同志社英語最大の合否ポイントと言える。前後の文脈をしっかり考慮してなんの技巧もない貧弱な日本語にならないようにしたい。会話文問題は会話文形式をとっているが、会話特有表現などはあまり出題されず、内容一致問題こそ出題されなくなったが、文脈の流れを押さえる読解力が要求されるので、ほぼ読解問題とみなしていいだろう。最後の英作文はそれほど難しくなく、基本例文レベルであるが、そのままの日本語を英訳するのは難しいため、自分で易しい日本語に置き換えた方がいいだろう。空所補充問題では熟語の一部をくりぬいて出題されるので基本的な熟語は暗記しておくとよい。
また、近年では、理科系の内容を扱った論文も出題されているので、入念な読み込み、対策は欠かせない。英語から日本語へ、日本語から英語へと、単語、文法が理解でき、纏めたり、話せたりする力は必須。時間配分等も、掴むために、過去問は、時間の許す限りやっておこう。7.8年分はやっておくと良い。
同じ問題は出ることはないが、単語の定義の問題など、自分では外せない問題等も分かってくるはずだ。また、選択肢や内容が似ている、立教大学の過去問もやってみるのも良いかもしれない。
合格には、比較的難しい英語長文を、普段から良く読み込んでおくのが必須である。日頃から英語を読むのはもちろんのこと、日本語のセンスを養うために、正確な日本語の理解や、その元での英単語の理解を深めるような、背景知識を養うことも余裕があればやっておきたい。必要なのは、英語、日本語共に基礎に通じた磐石な学習である。日本語のセンスも要求されているからだ。また、同志社だからといって、文法がでないとして、学習しないなんて絶対しないように。発音も通した単語学習、分厚い文法書も何度も確認しながら、総合の学習をしていくのが近道になるだろう。
また、国語、選択科目からの難易度(得点調整を踏まえ)、そして、受験生のレベルを考慮すると、事実上英語得点の勝負になる。同志社英学校の歴史から、英語を重視してきた学校からもその潮流は伺えるだろう。法学部、経済学部では、英語の得点が40%を切ると足切りがあるが、このような英語力では、どの学部もまず合格しない。英語力がない場合はまず受からないので、全学部共通英語の大量失点は避けたい。
近年は、難易度が再び上昇し、全盛期の難しさが復活してきている。
しかし、基礎力が出来ていれば、学校側が提示しているように、無理なく対応できるレベルだ。合格者の受験生は、いつの年でも、7割を越える得点を叩き出す。高校生に対しての入試としては難しいが、しかし、難問奇問はまず見られない大学なので、日頃からコツコツ、合理的な学習を続けていこう。
また、2011年以降の年度を優先的に取り組むといい。 ただし、前述のように、この前後は、難しい年もあったが(特に2009年は難解)、確り読む力が問われているのは、明らかである。
本大学で確り学ぼうとするならば、どのようなレベルの問題にも真っ向勝負出来るほどの、本物の実力が当然要求されていることを覚悟しなければならない。
詳しくは、同志社大学がオープンキャンパスで提供してくれる、入試対策雑誌なども参考にすると良いだろう。
=== 国語 ===
(75分)現代文1問と、古文1問から成り立つ。総合的にはやや難のレベル。英語·選択科目が基本~標準レベルであり、英語での平均点は安定して高く、実際にはこれらの科目ではそれほど差はつかない。したがって国語で堅固に得点できれば他の受験生に差をつけられる。
*現代文は「国内でも一、二を争う文章量」と形容されることもある、約5000〜6000語にも及ぶ超長文が出題される。同程度の偏差値の大学の現代文の入試やセンター入試の約1.5倍~2倍の量が課されると思ってよい。まずは長さに圧倒されないようにしたい。典型的な大型評論問題で分量は多く、全体を関連させて読解しなければならない。ある程度の国語の一般常識や教養はあることは大前提。設問は良問ばかりで、内容説明が大半。選択肢の文の長さはやや多めだが、紛らわしいものはあまりない。ただ設問数が少なく一問ごとの配点が高いので、極力落とさないようにしたい。センター試験の問題が練習によい。余裕があれば、問題の作り方が似ている関西大の過去問もやっておこう。
最後の記述問題は基本的に2つのポイントを40字以内に収めなければならないため、かなりの要約力が問われる。下書きを必ず書いて失点を最小限にしたい。解き方は個人個人違うであろうが、先に記述の設問をみて文を読む中で関連するものに線を引きまとめておくとよいだろう。かつて同志社大が公式発表していた内容では、記述問題の配点は30点、また句読点(。)が抜けた場合は30点減点対象となっていたが、これは今でも同様である。
*古文は文法、文の主語、単語の意味、内容一致、30字記述から成り立つ。ただし、ごくまれに記述が出されない場合もある。古典の出典は多岐にわたり時代やジャンルも多様であるが、近年、やや物語が多い。基本的な単語帳、文法書は万全にしておくべきである。記述問題はいかに内容が読み取れているかを問われるもので、やや難解。日頃から古典常識や読解力を十分に養っておくといいだろう。配点はかつての同志社の公式発表では20点完答であったが、現在は配点·部分点有無は発表されていない。なお漢文が出題されることはほぼ無いが、大学側は範囲に指定し続けている為、出題されたときのために返り点の読み方ぐらいは覚えておきたい。
=== 選択教科 ===
(75分)数学は途中式が要求されるが、地歴公民は、論述問題がなく、記号選択問題と、記述問題となっている。
*文系は、地歴公民(日本史B、世界史B、政治経済)、もしくは数学から1つ選択。試験開始後、自由に選択できるが、30分後に使用しない答案用紙は回収される。つまり、試験開始30分後までは選択科目の変更が可能である。
*理系は、理科(化学基礎・化学、物理基礎・物理、生物基礎・生物)から1つ選択。ただし、理工学部の機械システム工学科は「物理基礎・物理」のみ、電気工学科・電子工学科・機械理工学科は「物理基礎・物理、化学基礎・化学」からのみ選択可。
'''日本史'''<br/>
全部で60問前後。記述式の割合が高い構成となっている。良問が多く、大半が教科書レベルからの出題。しっかりと基礎を押さえ、市販の用語集程度の用語まで学習しておけば7割ほどは得点できるだろう。ただ、解答の単語自体は標準的であるが、設問が難しく、特に2009年からは政治史はもちろん、文化史や史料問題をはじめ難問が目立ち始め、8割を超える得点を目指す場合はかなり丁寧な学習が必要である。記述式が多いので難しい漢字の用語もしっかり書けるようにしておくことが肝要。大学の創立者、功労者に関することを問われることがあるので押さえておきたい。
'''世界史'''<br/>
大問3題の150点満点。地域も時代も幅広く出題される為、知識に抜けを作らず、堅実な努力が報われる問題といえる。
難易度は概ね平易〜標準程度ではあるが、近年難化する日程や年度もあり注意が必要である。問題の殆どが山川出版社の世界史Bの教科書から出題される。記号問題7割、記述問題3割で構成されている。
同志社の特徴として、「同志社式正誤問題」と呼ばれる特徴的な正誤問題が毎年出題されることが多いため、過去問で慣れておく必要がある。あと、文化史が比較的頻出で大問1つが文化史のみから出題された年度もある為、文化史も疎かにはできない。
傾向が安定しているため、満点の可能性もあるが、得点調整幅が非常に大きく、他の選択科目との兼ね合いで大体素点から大幅に引かれる場合が多い。
'''政治経済'''<br/>
全体的に基本的な問題が多いため確固たる基礎力をしっかり身につければ合格できるだろう。全学部傾向はほぼ同じのため過去問には全学部取り組もう。2008年は日本近代史に関連する問題が出題された。特に法学部政治学科の受験生は入学後、近代外交史が必修となるため学習をおろそかにしてはいけない。なお、2014年度は全学部入試において大きく難化したが、学部個別入試は例年通りだった。
'''数学(文)'''<br/>
比較的易しかったが、近年急速に難化してきており、注意が必要。出題範囲のほとんどが、ベクトル、数列、微積分、図形と方程式、三角関数など「数学II」「数学B」からの出題である。しかし、2次関数や確率などに絡めるような融合問題が出題されるので、「数学I」「数学A」の学習も必須である。総合的な思考力を問う問題が多いので、「黄色チャート(数研出版)」レベルの基礎問題集をやり終えたのち、本学の過去問を何年分も何周もやって慣れる必要がある。
'''数学(理)'''<br/>
理系の入試問題としては平易である。微・積分法が頻出で、「数学C」の内容については行列が頻出。また記述式の問題では、思考力より計算力が要求される。「黄色チャート」レベルの基礎問題集をしっかりやり終えたあと、過去問を対策すれば合格点に届くだろう。
'''化学'''<br/>
例年、大問が3題出題、計算問題や論述・描図問題も出題されている。全体的には、基本から標準程度の知識問題や計算問題中心で、応用問題も出題されているが、問題文の題意が把握できれば解答できるようになっている。
==センター試験利用入試==
センター試験の結果のみによって合否が決まる試験方式である。総定員に対する募集定員の比率は低いが、募集定員の何倍もの合格者を出すため、実質倍率は一般入試と同じか少し高い程度である。センター試験の科目数も学部学科によるが3~5科目のところが多い。合格するためには、学部学科にもよるが、80~85%は必要である。
==外部サイト==
*[http://www.doshisha.ac.jp/admissions_undergrad/entrance_exam.html 同志社大公式サイト]
[[Category:大学入試|とうししや]]
2dkstilrtv7io60itxz2x27y9241vy2
ゲームプログラミング
0
4250
205957
205915
2022-07-28T21:57:29Z
Honooo
14373
/*チュートリアル、製作順序*/ 5/5。
wikitext
text/x-wiki
<div class="pathnavbox">
* {{Pathnav|ゲーム}}
* {{Pathnav|工学|情報技術|プログラミング}}
</div>
== 概観 ==
このWiki参考書では、コンピュータを用いた[[w:ゲーム]]のプログラミングを扱います。つまり、いわゆる「テレビゲーム」や、[[w:コンピュータゲーム|コンピュータゲーム]]に関する記述についてです。
ここでは家庭用のパーソナルコンピュータで扱える範囲の事柄、それらのゲームソフトをつくるためのプログラミングについて議論します。必要に応じて家庭用ゲーム機の話題にも触れますが、あくまで派生的なものです。本書はプログラミングの教材であるので、大多数の読者が最初にプログラミングで触れるであろうパーソナルコンピュータでのプログラミングを、特にことわらないかぎりは想定しています。
用語に関して、コンピューターゲームの世界独自なものもあるでしょうから、適宜『[[ゲームプログラミング/コンピュータゲームの種類]]』などを参照してください。
== 本書の目的 ==
この教科書『ゲームプログラミング』の目的は、題名にもあるとおり、プログラミングによってゲームを作るための技術の参考資料を目的としています。
ゲームクリエイターやゲームデザイナー(絵描きではなくゲームの設計者のこと)のためではなく、プログラマーのための教科書です。
したがって本書では、ゲームとは関係の少ない一般IT企業での仕事のしかたについての記述もあれば、製造業系の組込ソフトなどに関する概要的な記述もあります。
なぜなら本書はゲームクリエイターではなく、たまたま何らかの理由でゲームを作っているプログラマーのための教科書だからです。たとえゲーム会社を退職しても、他の一般IT企業に転職してもプログラマーとして応用できることなども目指して本書は書かれています。
従って、紹介する話題が、かなりIT系、テクノロジー系の話題に片寄っています。本書で紹介するクリエイター論やデザイン論は、派生的なものにすぎません。
;本書を扱う上での注意点
特にことわりのないかぎり、本書ではC言語でのプログラミングによってゲームを作りたい読書を念頭に説明しています。
だから、ゲームの生産効率性を無視してでも、本来ならRPGツクールのような開発ツールを使ったほうが早いシンプルなゲームの場合ですら、本書ではC言語または他のプログラミング言語での開発にこだわった方法を説明している場合もあります。
;その他、本書について
このページとそのサブページだけを見ていると本書は「ゲームクリエイトの教科書かな?」と捉えられるかもしれませんが、
しかしこのページとは別に本wikibooksには「[[プログラミング]]」というページがあり、そこではC言語やJavaなど代表的なプログラム言語のwiki教科書にリンクしています。ゲーム限定の話題ではないですが、プログラミングのコードについても、そちら『[[C言語]]』や『[[Java]]』やなどの教科書のほうが(実際に動作するコードの量が)充実しています。また、Visual C++ での画面出力については『[[Windows API]]』に入門的な説明があります。
本書『ゲームプログラミング』はそういったプログラミング教科書一覧の一部でもあります。C言語やWindows API の教科書では、これをどうやってゲームのプログラミングに応用すればいいか説明できないので(本wiki『[[C言語]]』はけっしてゲーム目的のページではないので)、ゲームの実際としてプログラミングの話題を切り離すために本書『ゲームプログラミング』は存在しています。
なので本書にゲームデザイン論やクリエイター論などの内容の充実は期待できません。
本書『ゲームプログラミング』は現状、プログラマー目的以外には対応できないかもしれません。もしプログラマー目的以外の無料のwiki教科書が欲しい方は、現状では、自分で本wikiに加筆するか、あるいは本書『ゲームプログラミング』とは別に新規Wiki執筆を検討していただきたい。
== ゲームを作りたいな、よし、ゲームを作ろう。でも… ==
===しかし自分の本当の目的ってゲーム作り?===
「ゲームを作りたい」と思ったのなら、まずはあまり細かい難しいことは考えず、実際に作り始めてみるのが一番いいと思います。もちろんプログラミングについてほとんど何も知らないのなら、ある程度の勉強は必要ですが、ある程度の知識があるのなら、プログラミングの技量や知識の充実を気にするよりは、実際にゲームの完成を目指してプログラムを書いてみるのが一番いいようですよ。その過程でプログラミングの学習や経験は積んでいけますしね。JavaScriptやPython、無料でプログラミングに取り組める環境も、今現在では充実しています。
しかし、ゲームをプレイするのが好きだからと言って、ゲームを作る、までが本当に自分が好きかどうか、試しに少し作ってみたら、少し考えてみるといいですね。
例えば読者の中には、「私はRPGがすき」という人も多いでしょう。
RPG が好きという事はおそらく、よくRPGの題材になる西洋ファンタジーのストーリーや世界も好きという場合が多いでしょう。そして一方で現実のコンピューターRPGで魅力的に提供される、イラストや音楽が好きという場合もあります。
実際のゲーム業界の人々も、ゲームを彩るイラストレーションや音楽がいかに重要な要素かを語っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P85</ref>。
さて、ここで問題なのですが、「ゲームを作りたい」と貴方が思っていたとして、あなたが本当に作りたいのはゲームなのか?あるいは本当はイラストが描きたかったり、音楽を作りたいのではないか?
…というのは、ゲームというのは総合的な分野ですから、イラストや音楽はその要素として確実にありますが、それ以外、プログラミングやシナリオなど、様々な創作や創造が必要で、全ての作業量はかなり多いものになるでしょう。
そしてゲーム、コンピューターゲームにはゲーム独自の世界観があって、現実や小説や映画とは違う、独特の法則に支配された世界を作る必要があります。ある意味リアリティを持たない、リアリティから外れた世界です。だから、小説のようなリアリティにこだわるなら、ゲームは不向きかもしれません。
ゲーム作り始めの時点では、これらの判断は明確でなくても勉強目的でも構いませんが、しかその内「自分は本当にゲームを作りたいのか? Yes or no?」という疑問への答えが必要になるときがくるかもしれません。
試しにゲームを作ってみて、もし自分の本当の目的がゲームでないと分かったなら、それ以外の活動に移るのも、取る道の選択肢でしょう。
;給料は安い
職業として、商売としてゲームを作る場合、ゲームプログラマーの給料は洋の東西を問わず、安い事が知られており、書籍などでも言及されています。たとえば『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』(ジョン・ソンメズ 著)という欧米人のプログラマーの書いた本には、アメリカのゲーム業界ですらハードワークの割に賃金が低い事が記載されており、もし給料の高い仕事につきたいならウォールストリート(※米国の金融ウォール街のこと)のための仕事をするべきだと書籍中で指摘しています。
日本でも同様にゲーム業界の報酬が低いことは知られており、多くのゲーム会社の伝記漫画でも、よく語られています。
アニメーション業界と比べたら、ゲーム業界のほうが報酬が高いことは事実かもしれませんが、これは実は恐ろしいことに、アニメーション業界の報酬が異常に低いだけで、アニメーション業界よりはましだけど、結局は…というのが現状でしょう。
=== 同人ゲーム以外の発表の場 ===
2001年ごろの日本はネットを活用した同人ゲーム黎明期、フリーゲーム黎明期で、実験的な時代でもあり、多くのイラスト愛好、創作者や音楽創作者がゲーム制作に手を染めていたようです。この頃、まだイラスト投稿サイトや小説投稿サイトといったものは無かったか、あったとしても小規模でマイナーなものでした。
しかし2010年のあたりから各種の投稿サイトが普及したことにより状況は変わり、むしろ現在では、小説やイラストを発表したい人はそのジャンルの投稿サイトに直接アクセスしたほうが早く、そのためゲームを通して発表するのは人によっては廻り道かもしれません。
それをわかったうえで、それでもゲーム制作に身を投じるかを考えた上で、「よし、自分はゲーム制作をしよう」と思えるなら、ゲーム制作をするのが良いでしょう。
実際、今現在の作曲家やイラストレーターは、ゲームに関わったとしても、専門家として楽曲やイラストを提供するという立場に過ぎない場合もあり、自分自身が主体になってゲーム制作をする人は、プロアマ問わず少数派のように見えます。
同人ゲームの世界でも現在は(2021年頃に記述)、プログラマー系の作者が圧倒的に多い様です。
しかし、専門外の人だからこそ、メディアミックス的な意外な視点で新しいものが作れる可能性もあるかもしれません。コピーライター、作家の糸井重里が、マザー2の企画にたずさわった例もあります。しかし、あくまで「可能性」であり、成功はけっして保証されてはいないので、読者の自己責任でお願いします。
今現在のゲーム専門学校のカリキュラムはプログラミングが主体です。CGの授業は、週に2時間程の様。一方でゲームCG、或いは、一般CGに特化した学科もある様です。
あるWikibooks編集者Aは、もしイラストを描きたいなら、イラストの世界で描くのが安全、と考えています。ゲームプログラミングについては、プログラムを書ける人は絵コンテも描けそうだし、基本的にある程度の作図的なイラストを描ける人は多いだろうから、別にプログラミングに専念しろとは思っていません。
さて、読者がゲーム制作を職業として目指すのかどうかはともかく、とりあえず、ゲーム業界の状況を知っておくのが有用でしょう。
結局商業界の状況が権威をもってその分野を支配しているのがこの社会の基本なので、趣味でも職業でも、業界周辺のことを知っておくのは得ることが多いはずです。
文献『レベルデザイン徹底指南書』では、現実世界で自分が新しいスキルを1つ覚えたら、古いスキル1つはどれか忘れる必要があることを説いています<ref>大久保磨『レベルデザイン徹底指南書』、2016年12月14日 初版 第1刷発行、P81</ref>。著者は、最初はグラフィッカーでしたが、しかしプランナーに転職したので、グラフィック関係の技能は仕事では「忘れて」しまった、という内容を述べています。ただし、比喩的に「忘れる」とは言っていますが、実際には忘却し無くなってしまったわけではなく、仕事では時間の都合により両立できないので、グラフィック関係の技能は例え話で「忘れた」、のであり、現実にはグラフィッカー時代に培った観察眼をプランナー時代の現在でも活用している、と、書籍中では述べられています。
このことは職業、あるいは技能とは一般的にそういうもの、と考えることができるでしょう。
{{コラム|漫画家大塚志郎のアドバイス|
同人ゲーム界では、ゲーム制作と、イラストまたは作曲などを一人で兼ねている作者も、ある程度は居ます。一方ネットの世界には様々な簡単に利用できるフリー素材もあるので、イラスト作画や作曲をしなくてもゲーム制作は可能ですよね。
一人でイラスト作画や作曲をしながらゲーム制作をするのはある意味マルチタレントだとも言えますが、現実にその創作をしている人たちは、かなり年長のこの分野の熟練者が多いようです。若い19歳ぐらいの頃に、それらマルチジャンルを両立するのは、一般にかなり困難なことだと思われます。
漫画家の大塚志郎は、漫画家を漫画創作の手本にするならデビュー時代を手本にするのが良い、と、漫画家向けの技法の教育漫画で語っています。
大塚は、漫画家の人生のうちで、これからデビューを目指している新人に近い境遇にあるのは、ヒット後の漫画家の生活状況ではなく、まだ無名・マイナーな時代の態度・生活だ、と描いています。成功後の熟練した漫画家より、若いデビュー直後の作家をお手本にするのがいいだろう、という主張ですよね。
さて、それでもデビュー時代から複数ジャンルの同人活動を均等に兼業する意思が硬いなら、それはそれでひとつの考え方ですが、上述のリスクを知っておく必要があるでしょう。
}}
===ゲーム業界は産業のエンジン役?===
かつてはゲーム産業が、日本のIT産業やデジタル家電産業の中心的・牽引(けんいん)役であった時代がありました。しかし、2010年以降、この考えは当てはまらなくなっています。
PlayStation2あたりまでの時代は、経済評論誌の未来予想でも、「もしかしたら今後、家庭用の据え置きゲーム機がパソコンの代替品として、家庭のリビング家電の標準品になるかもしれない」という予想があった。ゲーム産業がそのような牽引役として、経済界から期待されていました。ソニーが国産CPUをプレステ2〜3に搭載したり、WindwosのマイクロソフトがXBOXでゲーム機に参入したり、そういう時代です。
しかし2020年代の今は違います。結局、2020年代のゲーム機に使われてる技術や部品は、パソコン用の部品や技術の流用、ゲーム機のCPUも、今やインテルなどのパソコン用CPUをゲーム機でも使っています。
もはや現代は、ゲーム業界は、産業のエンジンではないようです。
ですから今現在、新しい技術に興味ある人は、ゲームにこだわらず、直接的にその技術を勉強し改良したほうが近道です。
たとえば、インターネット技術を使って何か新しい事をしたいなら、ゲームを作るよりもwebアプリやサーバーwebサービスを作るべきだし、目的のネットワーク用ソフトウェアをそのまま制作したほうが早いし確実です。
古い経済知識の先入観にとらわれず、無理にゲーム制作にこだわらないほうが、自分自身の技能やキャリアも開けていくでしょう。
2010年に出版された商学書籍『メイド・イン・ジャパンは終わるのか』には、「しかしながら、ファミリーコンピュータで世界に攻勢をかけ、その後圧倒的な強さを誇っていた日本の家庭用ゲーム産業も、90年代末からはその競争力にかげりがみえはじめた。日本の国内市場は伸び悩み、成長率は鈍化傾向にある(図表7-3)。」とあります<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.263</ref>。
その「図表7-3」の統計値によると、
:ファミコン発売の1993年には2268億円、
:スーファミ発売の1990年には2430億円、
:プレステ1発売の1994年には3882億円、
:1995年には急成長して4769億円、
:1997年には4795億円で、ほぼこの頃がピークであり、
:2000年には3768億円にまで低下(プレステ2の発売年)、
:2005年には3151億円まで低下(XBOXの発売年)、
である。(青島らが『レジャー白書』、『情報メディア白書』、『月刊トイジャーナル』、『CESAゲーム白書』などをもとに作成した図表の統計値です。)
<!-- ところで前編集者Sさん,これって正確には何の数字,金額なの?それを後で書き足しておいてほしいんだけど…。あれかな?一年のこの国のゲーム産業の売上高? -->
また、2010年の時点の商学研究では、1997年を境に、ゲームソフト市場で競争する企業数が増加傾向から減少傾向に転じた<ref name="m289">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.289</ref>、とも言われています。
書籍『メイド・イン・ジャパンは終わるのか』にも、引用文「家庭用ゲームは日本がその本格的立ち上げを主導し」<ref name="m91">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.91 </ref>と書かれているぐらいで、1990年代は日本のインパクトが強かったようです。
なお、携帯電話の分野で、日本は国際的な地位を喪失したのに対し、デジタルカメラとゲームは「現代」(参考文献の著作時2010年ごろ)でも日本が主要な地位にある<ref name="m91" />。
{{コラム|ゲームが産業の牽引役だと語った人物|
1998年頃、アニメ評論家の岡田斗司夫が、未来予想の一貫として、「これからゲーム機が、(パソコンではなく)家電の中枢になるだろう」というような内容の未来予想をしていました。たしか、岡田の著書『東大オタキングゼミ』(自由国民社、1998年)で、このような未来予想が読めます。岡田の東大での講義を加筆修正してまとめた書籍なので、実際の講義はその数年前に行われていたのだろうと思います。
岡田の東大での講義は東大生のその後の進路、官僚や大企業のビジネスマン達に大きな影響を与えただろうし、若手新進評論家として、この国の政治・経済人達も、その言論を参考にしただろう。
実際、2008年(リーマンショックあたり)くらいまでの日本の家電業界の投資は、ソニーがゲーム機のCPUを作ったりと、岡田の予想を参考にしているような面もありました。
ですが実際の2001年以降の家電業界の結果は予想とは少し外れました。まず
:* そもそも、冷蔵庫もエアコンも全然デジタル化(IoT化)されず、家電のほとんどが外部からのコンピュータ制御を必要としない状況。
:* 個々人が持ち歩いているデジタル家電は、携帯ゲーム機ではなくスマホになった。
:* パソコンは多くの家庭にいまだにインターネット用端末などとして残り続けている。
一方岡田は東大オタキングゼミで、98年当時の時点で任天堂が莫大な現金資産(たしか数千億円ほど)を持っていることに注目しています。
一般の大企業は、現金ではなく株券や不動産などの形で資産を蓄えています。しかし任天堂は、銀行口座の現金だけで数千億円という、非常に資金力の高い企業でした。今や日本を代表する世界的なゲーム大企業になっています。
また、日本だけでなくマイクロソフトのXBOXなど、実際に欧米の企業も昔はコンピュータゲームが産業の牽引役だと思って、先をこぞってゲーム機に参入していたわけでもある。岡田の未来予想は、決して根拠の無いものではなかったのです。
}}
{{コラム|読書について|
ゲーム業界と関連のない文献も、この教科書では出典として書かれていますが、これはこの頁の主要執筆者Sが、多量の市販本を読む以外に知的活動の方法を知らないことと、自分自身の文章の権威と信頼性を、著名人の威を借りて確立したいからでしょう。
ゲーム業界を志望するなら、ゲーム業界人の書いた本は少なくとも何冊かは読んでおくといいでしょう。
ネット上では、業界人ではないのにもっともらしく書かれた文章も多いですし、おそらく本Wikiの執筆者にも本格的なゲーム業界関係者は一人もいないでしょう。
業界人達のSNS発言ではなく、現代では書籍があるので、実際に書籍を手に入れて読むのがいいですね。書店で販売される書籍というのは、けっして著者だけの意見でなく、編集者や校正者、周辺の職業人達が査読をして、内容の信憑性を確認しています。
<!-- ニュース解説者の池上彰(いけがみ あきら)が、たしか2011年くらいのテレビ番組で言っていたことだと、編集者Sは言っている。 -->
何十冊も本を読むよりはプログラミングを書く実践のほうが重要でしょう。
『ゲームデザイン プロフェッショナル』著者であるFGOクリエイターも、ゲーム開発の書籍は読んでおくべきだと忠告しています<ref>『ゲームデザイン プロフェッショナル』、P234</ref>。また、ゲームデザイン本で学んだ知識は、ゲーム業界以外でも仕事術として活用できます。たとえば上司への業務報告の報告・連絡・相談(ホウ・レン・ソウ)などの考え方は、ゲーム業界でなくても活用できます<ref>『ゲームデザイン プロフェッショナル』、P332</ref>。
いっぽう、もし最新IT技術を勉強したいなら、読むべきは、ゲーム制作の解説本ではなく、そのIT技術の解説本など、そのものの書籍を読むほうが近道でしょう。
}}
===ゲームプログラミングは面白い。しかし、そんな楽な事ではない。===
ここでいう「プログラミング」とは、C言語などのプログラム言語による開発のことです。RPGツクールなど開発ツールによるゲーム制作の話は原則していません(本書『ゲームプログラミング』はあくまでプログラミングのための教科書です)。
さて、よくネットや、あるいは日常でも(C言語などによる)「ゲームプログラミングは簡単だよ。イラストやシナリオのほうが難しい。」、などという人がいますが、この発言の心は、「俺はプログラミングもイラストもシナリオも出来る凄い男だぜ。しかもプログラミングなんて簡単だし、むしろクリエイティブなイラストやシナリオの方に精力を費やす偉い奴だぜ^^」という、世間に良くいる武勇伝、自慢を語りたがる、インチキ親父が吹かしているだけなので、あまり真面目に取り合わないのが正解だと思います。
まず第一に、不当にプログラミングの価値を貶めている言説ですよね。
Visual C++またはVC# 、あるいは Direct Xなどを使ってプログラミングすることは、そんなに簡単なことではないでしょう。
ゲームプログラミングの入門書などには、初心者でも理解できそうな比較的簡単ないくつかのサンプルコードがありますが、それは初心者でも簡単に書けそうな技術だけを抜粋してるという、あくまで例外です。
RPGならたとえば、ドラクエ3のような戦争画面の行動順を処理するソート機能をつくるだけでも一苦労ですし、ほかにも道具・アイテムなどの自動整理をはじめとする標準機能を作るだけでも一苦労です。
決して上手い人のサンプルコードをコピーアンドペーストをして終わりという訳にはいかず(そもそも現状そのようなサンプルコードがネット上に無いですが)、もし仮にサンプルコードがネットに公開されていても、自作品に組み込む際にさらにそれをデバッグ(決してテストプレイの意味ではなく、実際にコード修正が必要になります)しなければならず、プログラミング言語の理解が必要です。
ゲームのプログラミングは決して楽ではないし、仮にもし楽だとしたら、じゃあゲーム会社のプログラマー職の人の仕事は何なんだ・・・という疑問につながりますよね(デマを言ってる人は、この疑問を脳内に都合よく無視しますが)。
ツクールやエディタのような制作ツールを使えば、C言語的なプログラミングは不要ですが、それはそのツクールなどのツールを開発している人達にプログラミングを肩代わりしてもらっているだけなので、決して「ゲームプログラミングが楽」、ではないでしょう。楽だというなら、じゃあツクール開発元の角川書店およびその発注先ソフトメーカーのプログラミングが楽だとでも言うのか・・・(デマを言ってる人はこの疑問を無視します)。
そもそもコンピューターゲームというのはプログラミングがなければ成立しないのですから、そのプログラミングの価値を貶めて平気な人は、コンピューターゲームにかかわる資格はないでしょう。
== ゲーム制作に関する留意点 ==
=== IT的な留意点 ===
====プログラミングなしでも同人ゲームを作れる====
自分でゲームを作る際、必ずしも、C言語などプログラム言語で記述する必要はありません。
プログラミングをせずに、ほぼマウス操作と会話メッセージなどの文章のキーボード入力だけでゲーム開発をできるようにするソフトウェアが、有料または無料で発表されています。
たとえば、RPGを作りたいなら、日本で発表されているソフトでは、『[[w:RPGツクール]]』や『[[w:WOLF RPGエディター]]』などのように、RPG製作に特化された開発ソフトがあり、大幅に開発の手間を減らせます。なお、『RPGツクール』は有料製品です。『WOLF RPGエディター』は無料ソフトです。
アクションゲームを作りたいなら、『[[w:アクションゲームツクール]]』があります。これらツクール製品は有料製品です。(なお、かつて『[[w: 2D格闘ツクール2nd.]]』というのがありましたが、しかし現在ではサポート切れのため、今現在の市販の十字キーコントローラーが初期設定では動かない、一部のボタンしか使えないなど問題点があります。)
また、ノベルゲームを作りたいなら、フリーソフトの『[[w:吉里吉里Z]]』などがあります。吉里吉里Zはソースコードが公開されており、オープンソースになっています。
:なお、とりあえず「ゲーム開発ツール」と呼びましたが、じつは呼び方は特に決まってはいません。「ゲーム制作ツール」と呼ぶ場合もあります。ゲーム開発ツールのことを「ゲームエンジン」と言う場合もありますが、開発ツール以外のゲーム用ランタイムのことも「ゲームエンジン」という場合があります。
:本Wikibooksでは、とりあえず、ツクールや吉里吉里シリーズやウディタ(WOLF RPGエディター)などのソフトの呼び方は、まとめて「ゲーム開発ツール」または「ゲーム開発ソフト」と呼ぶことにします。
C言語などによるプログラムは、上記のゲーム開発ツールを使わない場合の選択肢になるでしょう。
既存のゲーム開発ツールの仕様に不満を感じる場合に、「じゃあ自分でプログラムして作ろう」となり、プログラミングが必要になるわけです。
なお、上記の開発ツールはほとんどがWindows用のソフトです。MacやLinuxでは動きません。MacやLinuxで動作するゲームを作りたい場合は、別のソフトウエアを使う必要があります。
既存のゲーム開発ソフトを使わずにプログラムを組んでゲームを自作する場合、必ずしも既存のツールのような、ゲーム作品と開発ツールが分離された仕組みを再現する必要はありません。
一般的に初心者が、ゲーム開発ツールを作ることはほぼ不可能です。初心者は開発ツールを作ることは考えずに、まず1本、とりあえずゲーム自体を完成させてみましょう。開発ツールを自作したいのなら、まず先にゲーム1本を完成させたあとに、あとから開発ツールとゲーム作品の分離などに取り掛かるのが推奨です。
==== 商業ゲームの開発言語 ====
基本的に、現代の商業ゲームは、C言語で開発をする。
ただし、ファミコンの古いゲームは、アセンブラで開発されていた。ファミリーコンピューターからスーパーファミコンに至るまで、OSは搭載されていない<ref name="m289" />。
ではいつからC言語がゲーム開発に使われるようになったかというと、商学の学説では、プレイステーション(※ おそらくプレステ1?)の頃からだろう、と考えられている<ref name="m289" />。ただしこの時代でも、処理速度の高速化のためにアセンブラにアクセスする開発チームも少なくなかった<ref name="m289" />。
また、プレイステーションのOSは独自仕様である<ref name="m289" />。
カプコンなど一部の企業は、OSによる開発ではなく、移植性を高めるために自社製の内製フレームワークを用いて開発する。カプコンの場合、2010年頃は「MTフレームワーク」という自社製フレームワークを用いて開発を行っていた<ref name="m289" />。
{{コラム|ゲーム用のメーカー独自プログラミング言語について|
ゲーム開発ソフトには、ゲーム開発用の独自のプログラミング言語を持っている場合があります。このような機能の実現方法は、原理的には、ファイル入出力の関数を使い、テキストファイルの文字列を読み取って、文ごとにプログラム動作を設定・実行している、と、考えられます。インタプリタは、このような方法で作られています。
ゲーム製作ソフトでの独自のプログラミング言語はたいてい、コンパイル作業を必要としないので、おそらくインタプリタ方式でしょう。
基本的にWindowsの場合、実行ファイルに変換するには、Visual Studio というマイクロソフト社の配布している開発環境が必要です。
Visual Studio が開発環境を提供していない独自言語は、たいてい、インタプリタ方式となると思われます。
コンパイラ方式に比べて、インタプリタは処理速度が不利なので、適用できるジャンルや用途が限られます。たとえば3Dアクションゲームには、インタプリタ方式は不向きでしょう。
これらの独自言語を使うにしても、自分自身で独自言語を作りたいと思うとしても、この教本ではまず、既存のプログラミング言語を使ってゲーム制作を開始することを推奨します。
}}
====ゲームのプログラム言語の歴史====
ゲームを書くために利用される言語は多岐にわたっています。歴史的にはゲーム業界でも、[[C言語]]や、特に計算機のスピードが重要になる場面では[[w:アセンブリ言語|アセンブラ]]を利用してプログラミングを行うことが普通に行われていました。<!-- (文献)→-->そのため、ゲームプログラミングは通常のプログラミングと違った技能が必要であるように思われていました。
現在では計算機がある程度速くなったことや、ゲームプログラムの開発を複数人で行うことでテクニカルなプログラミングが避けられるようになったことにより、ゲームプログラミングは他の一般のプログラミングと同じような課題だと見なされています。
しかし、特にアクションゲームなどのリアルタイムでの画面書き換えが必要なゲームで、プログラムのスピードが重視されることは変わっていません。また、コンピュータの性能があがるにつれ、それらの性能を全て引き出すように表現手段が変化してきたため([[w:3次元コンピュータグラフィックス|3D]]、[[w:ポリゴン|ポリゴン]]などを参照)、状況によっては複雑で特殊なプログラミングが必要になることもあります。
===== 初心者が使えるプログラミング言語 =====
ゲーム開発において、一般にゲームショップなどで流通している商業ゲーム作品において、現在よく利用されているプログラミング言語として、[[C言語]]、[[CPlusPlus|C++]]、[[Java]]があげられます。
Windowsの3DエンジンのDirectXは、主にC++を想定しています。なので負荷の高いアクションゲームを作りたい場合、Visual C++での開発が安全でしょう。
しかし、ネット上のフリーゲームでは、C++以外の言語が使われることも、よくあります。
さいきんゲームエンジンとして有名なUnityは、言語としてはC#の文法を採用しています。
[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
市販の書籍では、Pythonによるゲーム開発を紹介した出版物もあります。ただし Python は原理的にインタプリタ方式であるために処理速度がC++に劣り、アクションゲームなど負荷の高いゲームを作る事を目指している場合は、将来的にはPythonからC++への装備変更が必要になるかもしれません。
===== ゲームに適さない(だろう)言語 =====
;Flash関係
例えば、かつて Adobe の Flash が、ブラウザで動かせるゲームを作る際に、よく使われていました。このようなwebブラウザ上で動くゲームのことを一般に、「ブラウザゲーム」と言います。ただし、現在ではFlashは廃止の方向です、すでにほぼ廃止されているといっていいでしょう。また、現状では、ローカルPC環境でのゲームをJavaScriptで作るのは、アマチュア段階では困難です。JavaScriptのアマチュアゲームと言う事例を聞きません。
;JavaScript
なお、JavaScript はクロスプラットフォームですが、しかし、セキュリティ上の理由などから、いくつかの機能(たとえばファイル入出力)がwebブラウザ上では使えないようになっており、そのため、JavaScript だけでゲームを作るのは、初歩的なゲームを除くと、かなり困難です。(おそらく、オンラインゲームでは、サーバー側でPHPやサーバサイドJavaScriptなどの別プログラムが走っていると思われます。)
セーブ機能の必要なゲームを作る場合は、JavaScriptでの開発は選択肢にない(セーブの実装には、JavaScript国際規格にはない非標準仕様を使いこなす必要があり、かなりの技術力を要するでしょう)。
=====ブラウザゲームの初歩的な原理=====
商品として流通するようなゲームや、高度な機能を持つブラウザゲームを作ることはとても難しく、このページでは手に負えません。そこで、このページでは、初心者が練習用につくるゲームを例に記述します。
webブラウザだけで動くのがブラウザゲームです。ブラウザゲームを作るのに使う言語の第一選択肢はJavaScriptです。サーバー側の処理が必要ならPHP,Python,Perl,Javaなどの言語の出番でしょう。
「ネットワークゲーム」は「ブラウザゲーム」とは意味が違います。
「ブラウザゲーム」は、パソコンにwebブラウザさえあれば、ネットワークに接続していなくてもゲームプレイできて、最後、クリアまでプレイできる作品もあります。
しかしネットゲームは、ネットワークに接続しないと、ゲームを開始することさえ不可能です。つまり、サーバの提供するゲームが「ネットワークゲーム」「ネトゲ」です。
もしPHPやPerlなどでゲームを作る場合、普通はネットゲームになる筈なので、作者がサーバを構築して提供する必要がありますし、プレイヤーにはゲーム中にサーバに接続する環境が必要になります。提供者は、サーバを用意したり、保守管理する必要がありますよね。サーバーがダウンしてしまうと、プレイヤーがゲームをできなくなります。
「PHP ゲーム」などの単語でネット検索したり、あるいは書店でプログラム言語の書籍や解説サイトを見ると、ときどきPHP・Perlなどの言語でゲーム開発しているものもありますが、一般的なダウンロード型のゲームとは違う筈なので、気をつけてください。
{{コラム|ソケット通信、ほか|
コンピュータプログラムからインターネットに通信するには、いくつかの方法がある。
C言語の場合はOSの提供するソケット通信といわれる機能を使う方法、
JavaScriptにあるHTTP通信の機能を使う方法、
などがあるだろう。
ただし、JavaScriptでゲームを制作するのは、セキュリティ上の制約などからセーブロードが標準的方法では困難など、とても制作が難しい。
よって本セクションでは、C言語にソケット通信を組み込むことの概要を説明する。
ゲーム制作初心者がソケット通信までする必要はないが、将来的には知る必要があるかもしれない。
本wikiではWindowsの場合については 教科書『[[WinSock]]』、
macやLinux / Unix や BSD の場合は 教科書『[[Unixソケットプログラミング]]』 で説明している。
Windowsとそれ以外のOSとで、ソケット通信の仕様が微妙に異なる。
ソケット通信では文字コードの問題がある。手元のパソコンの文字コード設定は、通信相手方の端末には反映されない。
Windowsの日本語版では、伝統的に Shift-JIS といわれる文字コードが使われてきたが、海外のWindows端末は日本の文字コードにあわせてくれないし、macやLinuxやBSDも同様に日本には合わせてくれない。
簡単な対処法として、ゲーム中では日本語を送受信しない、つまり半角の英数字と記号だけを送受信する、という道はある。
会員登録などのためにどうしても氏名や住所などの日本語を使う必要がある場合、PHP・Pythonなどサーバ言語に対応した「フレームワーク」があり、そのフレームワークが最初から日本語に対応、もしくは設定を少しいじるだけで日本語対応するので、それを利用すれば効率的かもしれない。
ゲームとは別途、サーバー側にフレームワークをインストールして、会員登録時にサーバー側でそれを使うようにすればいいだろう。
しかしゲーム内では日本語の扱いは非常に難しい、限定されるという事になるだろう。
C言語のプログラムにサーバサイドの言語・システムを組み込むのは難しいから、ネットゲームではどこかでソケット通信に頼ることになるだろう。
市販の本を探しても、そもそもソケット通信の書籍自体がめったに見当たらないし(ほんの少しだけ出版されている)、もし見つけても全く文字コードの問題の解決方法は紹介されていない(2021年現在)。
}}
====プラットフォ-ム====
;ライセンス料
一般に、プレイステーションや任天堂のゲームを開発するには、専用の機材が必要であり、そのため、ソニーや任天堂とライセンス契約しなければいけない<ref>『ゲームプランとデザインの教科書』、P.107 </ref>。
その契約に際して、ライセンス費用または料金と呼ばれるものを、ゲーム機開発会社の任天堂、ソニーに支払う必要があります。
現在でもソニーや任天堂のゲーム機用のソフト開発・販売には、ライセンス料が必要です。少なくともPS4やニンテンドースイッチのパッケージソフト開発には、「ライセンス費」が必要<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.120</ref>。
なお、書籍『ゲームプランナーの新しい教科書』によると任天堂やソニーのようにゲーム機を作っている会社のことをハードメーカーと言います。つまり、ゲーム機のハードメーカーにライセンス料を支払うという仕組みになっています<ref>『ゲームプランナーの新しい教科書』、P20</ref>。
また、スマートフォン向けアプリは、プラットフォーム使用料が掛かります。
書籍『ゲームプランとデザインの教科書』によると AppleStore, GooglePlayともに売上げの30%とのこと<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.121</ref>。その他のプラットフォームも、大体同じとのことです(参考文献の著作の時点では)。
Google やAppleのようにプラットフォームを提供している企業のことをプラットフォーマーと言います<ref name="gp244">吉冨賢介『ゲームプランナー入門』、P244</ref>。
昔からゲーム機のライセンス料は有料で高額であり、ソニーや任天堂の収益源のひとつになっている<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.267 </ref>。一方、パソコンゲームにはライセンス料が無いのが普通です<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.283 </ref>。
なお、ハードメーカーでなければプラットフォーマーでもないゲーム会社のうち、製造から販売までを手がける会社のことをパブリッシャーといい、たとえばカプコンやコナミやセガやスクウェア・エニックスやバンダイナムコなどがパブリッシャーです<ref name="gp244" />。
実は、必ずしもパブリッシャーが開発を手がけるとは限らず、スマホ向けアプリなどではディベロッパーといわれる開発専門の会社に委託している場合もあります<ref>吉冨賢介『ゲームプランナー入門』、P245</ref>。
;ポリコレ規制
Apple社のAppStore向けのスマートフォンアプリでは、アップロード後に、公開前にAppleによる審査があり<ref name="g139">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.139</ref>。、審査は欧米基準です。
GooglePlayは、公開前の審査はないが公開開始後に海外基準で審査されるので、それに違反していると配信停止になります<ref name="g139" />。
海外プラットフォームで販売・配布したい場合、「ポリティカル・コレクトネス」(政治的な正しさ)といわれる、海外の公序良俗の基準に配慮する必要があります<ref>『ゲーム作りの発想法と企画書のつくりかた』、P.235</ref>。
欧米の判断基準が、アジア諸国やアフリカの生活習俗に合致しない場合も多いのですが、欧米のIT大企業はその欧米基準での規制が政治的に正しいと考えているでしょう。「日本では、少し考え方が違う」と言っても、通用せず規制される場合も多い。
ゲームだけでなくテレビアニメでも、漫画ワンピースの海外アニメ版では、主人公側の若者がタバコを吸っているシーンをアメ玉に作画を変えられたり、ドラゴンボールに出てくるミスターポポという肌の真っ黒なキャラクターの肌を青く書き換えたり、色々な例があります。
ポリコレとは関係ない事例ですが、TVアニメーションのポケットモンスターで主人公のサトシ達がお握りを食べているシーンで、アメリカ版ではドーナツになっていたことがあります。これは、国による食文化の違いを示していますよね。
===プロトタイプ===
ゲームでは、曲や絵が良くても、ゲームとしては今ひとつ面白くない、という事は起こり得ますよね。
ですからむしろ、商業的なゲーム制作では、イラストは簡略なものを使ったうえで、プログラム中心の試作品(プロトタイプ)をいくつか作り、その中でゲームとしての面白さがあるものを、取捨選択したうえで商品化を考え、その後イラストや楽曲を詰めて完成度を高めていく、と、いう制作過程を取るようです。
書籍『ゲームプランナー入門』(吉冨賢介 著)によると、商業ゲーム界では、企画書に書かれたゲームが本当に面白いかどうか確認するために、「プロトタイプ」が作られます。プロトタイプの段階では、プログラマーと、企画の意図を考慮するためプランナーも関わります。<ref name="gp17">吉冨賢介『ゲームプランナー入門』、P17</ref>
イラストレーターは、プロトタイプの前段階あたりでイメージイラストを提供し、スタッフ間の共有イメージを作ります<ref name="gp18">吉冨賢介『ゲームプランナー入門』、P18</ref>。そしてプロトタイプ進行中は、グラフィック案の提案をしていきます<ref name="gcw56">蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P56</ref>。サウンドも同様、プロトタイプでは、曲調を固めていく段階です<ref name="gcw56" />。
:※時々あるトラブルとして、マイナーな同人ゲームや零細メーカーのゲームで、背景イラストや脇役キャラクターなど目立たない部分で他社のイラストが使われていることがあるようです。おそらく試作用に流用したイラストが、そのまま製品に混入したのでしょう。こういうトラブルがあるので、他社イラストの使用は試作であっても避けるべきです。
;実装検証
プログラマーは、そのゲームでコアになるプログラムやシステムやミドルウェアについて、プロトタイプ段階で実装検証を済ませておく必要があります。プロトタイプより前の原案の段階では、利用するミドルウェアの洗い出しをして、出来る範囲での基礎実験をしておきます<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P54</ref>。
ミドルウェアによっては使用料が発生するので、その点を事前に調べておく<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P55</ref>。
プロトタイプのうち、張りぼての例えば画面だけの物等を、「モックアップ」といいます。一方である程度遊べる状態まで作っているものを、「プレアブル」といいます<ref>STUDIO SHIN『ゲームプランナーの新しい教科書』、翔泳社、2018年3月10日初版第2刷、P251の図</ref>。
ゲームデザイン本ではよく「プロトタイプ」という表現が用いられるので、本ページではこの言葉を使うことにします。
{{コラム|商標権等|
知的財産権には著作権・商標権・意匠権などがありますが、商標権は特に強い権利であり、気を配る必要があります。
意匠権とは、建物や工業製品の外観に関する権利なので、ゲーム制作ではあまり気にする必要はないようです<ref name="gpd135">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.135</ref>。
「特許権・実用新案権」と「商標権」は、事業者によって国に登録されている権利で、かなり強力な権利なので、気をつける必要があります。
特許権や実用新案権とは、大まかに言えば、技術的な発明に関する権利です。商標が登録されているかどうかは、特許庁の『特許情報プラットフォーム』というwebサイト<ref name="gpd134">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.134</ref>で確認できます。
商標をトリッキーな意図で登録する人も多く、自社でビジネス展開をする気がなかったり、他社の商品などでまだ登録されていない物を申請したり、そういうやや不正な登録申請でも認可されてしまう場合も多いです。
また、商標は業種のジャンルごとに分かれているので、たとえば携帯電話のジャンルが新たに追加された時代に、過去のゲームの商標を登録した人がいました。そのため携帯ゲームを出せなかったり、商標を買い戻したり、取り戻すための裁判をするのに時間とお金がかかってしまったり、様々な問題が発生します。<ref name="gpd134" />
著作権は、登録の必要がなく、著作をした時点で発生する権利です。
『ゲームプランとデザインの教科書』によると、こういう事柄にまだ慣れていない人によくあることなのですが、他人の個人サイトやSNSで公開されていた絵や曲などを、許可なく勝手に使う事例があるようです<ref name="gpd135" />。
二次利用を許可されてない著作物は素材として使えません。
そして見落としがちなのが、フォントの著作権です<ref name="gpd135" />。フォントにも著作権があります。
フリー素材と書かれていても、商用販売が禁止されている配布形態のものもありますので、気をつけましょう。
}}
{{コラム|アイデアの権利。アイデアとは盗まれるのか、盗むのか?|
商業ゲーム作家たちの、2022/1時点でのSNS発言によると、業界全体でみられることですが、会社外部の人がアイデアを一方的に投稿してきて、会社で作った作品にそのアイデアと類似点があったら、アイデア使用料を要求してくる、そのような問題に悩まされているようです。
そこでゲーム会社側では原則、
:送られてきたハガキやメールは、まずクリエイター以外の事務系の人間が読む。
:もしハガキなどにアイデアがあった場合、そのハガキを処分。
などの方策を取ると言われています。
また、偶然や何らかの理由でアイデアが一致してしまった場合に備えてのリスク回避として、事前に会社のウェブサイトなどで「弊社にアイデアが送られてきた場合、そのアイデアは弊社のものになります」のような宣言をしている会社も多くあると言われています。<!-- (以上、作家のSNS発言やそれを紹介したサイトの取材などのまとめ.)←出典を消すなってS氏はやたら云うんだけど,そんな重要な事かね?もちろん全くなくて,いい加減な事書いていいと言ってるわけではないけど… -->
ここで前編集者は娯楽産業の世界には厄介な消費者がいると言及しているけど、この前編集者自身がこのWikibooks で異常なまでに厄介な参加者なんだが、そろそろ人のふり見て自分を返り見るべきだと思うな。
法学的には、著作権法はアイデアを保護しません(『アイデア・表現の二分論』と言います)。
そして前編集者はアイデアに関して権利をどうこう言う人間を無知だと書いているけど、自分は至上の賢人だと思ってるようだね。
そしてこの人物は他者を愚弄する時は必ず自分の意見ではなく、権威ある人がそう書いたから、出典だからと宣う。
出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。
まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。
}}
任天堂『ゼルダの伝説 ブレス オブ ザ ワイルド』は、プロトタイプの段階ではイラストや音楽を組み込まずに(イラストは、代わりに大きなドットの塊などで代用する)作られている事がゲーム業界見本市イベント CEDEC 2017 で公開されています<ref>https://game.watch.impress.co.jp/docs/news/1078888.html 2020年11月25日に閲覧して確認</ref>。
プロトタイプの段階では、画像や音楽は発注せず、骨組み的なプログラムだけで、そのゲームのアイデアが「はたして本当に面白いか?」を、実際に社内の関係者にプレイさせてみて確認します。
因みにプロトタイプに関しては『[[高等学校情報/その他の技術的な話題#プロトタイプ開発]]』の記述も参考になる。
ここでいう「プロトタイプ」(試作品)とは、コンピュータプログラムのゲームとして動作するのが前提です。映画製作でいう絵コンテ試写のように、ゲームの試作では、なるべく早期に第三者が試作ゲームを遊べるように作っていく必要があります。
プロトタイプという言葉を使用すること自体が妥当かどうか。まず、書籍『ゲームプランとデザインの教科書』で使われている<ref name="gpd350">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.350</ref>。
ニコニコ動画の経営者、川上量生が使っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日 第1刷発行、P.38</ref>。川上は角川書店も買収したので、おそらくそこ(カドカワ・RPGツクール販売元)でも使っているでしょう。
ゲームのプロトタイプの基本姿勢は、「汚く作って、やりなおす」です<ref name="gpd350" />。もちろん最低限のプログラムの知識、勉強は必要ですが、あまり知識収集や理解充実を気にするより、実際に作ってみることを優先したほうがいいようです。チーム制作をしている場合はプロタイプは赤ん坊であり、そのチームで育てていこう、我々の子供だという意識で接しているようです<ref name="gpd350" />。
勉強に関しては、汚くてもいいからまず工夫して作ってみると、何を勉強すればいいかが見えてきます。
英語では「quick and dirty prototype」という言葉があります<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.349</ref>。
書籍『ゲーム作りの発想法と企画書のつくりかた』によると、シナリオライター志望者が企画書やシナリオ案をメーカーに送りつけても、あまり効果的ではないようです。
それよりゲーム形式でシナリオを書いてしまうのがいいようで、「CHR:ヒロインA(私服)、表示」のような文章を織り交ぜて構成していくのが推奨<ref>『ゲーム作りの発想法と企画書のつくりかた、P.140</ref>。
参考文献のその章では、シナリオライター志望者に向けて語られていますが、プログラマーを目指すならどうすればいいでしょうかね。
プログラマー志望なら、サンプルゲーム、サンプルプログラムを作ってしまうのがいいかもしれません。
1990年代、週刊少年マガジンに不定期掲載していた読みきり漫画『ゲームクリエイター列伝』では、カプコン社のゲーム『バイオハザード』を扱った『バイオハザードを創った男達』の際、制作過程でゲームデザイナーが大幅な作り直しを判断して進行させた、という描写があります。(ただしWikiboooks一編集者の記憶、詳細はあいまい)。
のちの、ゲーム評論家の阿部広樹の評によると、むしろそれは劇的な大きな決断ではなく、ゲームデザイナーの日常の普通の仕事ではないか、と語られています。
どんな肩書の人間だろうと、すでに決まって進行していた方針をひっくり返すのは、かなりのストレスのある判断で指摘になりますが、一般に漫画や映画、あるいはNHKの仕事に関するドキュメンタリーでもそうですが、職業や職業者の物語では、過剰に対象を美化し、劇的な演出によって関係者を称賛し、英雄視する傾向があるように思います。
{{コラム|アイデアはアイデアで価値がある。でも、せっかくなら、それを試作して、形にしてみよう。|
ゲーム業界人広井王子は書籍のインタビューで、自分の社長としての人材評価は「0点」から始まる「加点法」だと語っていたようです。
『ゲームデザイン プロフェッショナル』著者も、文脈は違いますが「加点方式で物事を考える」と述べています<ref>『ゲームデザイン プロフェッショナル』、P224</ref>。
正直インチキなゲーム業界人の点数勘定などには全く興味ないが、そんな話とは全く別に、ゲーム制作の上で、実際に動く簡単なプロトタイプを作ってみることは間違いなく有意義な事でしょう。
アイデアはアイデアとして、思考や思想の展開としてありますが、それを具体的な形にしてみることは非常に楽しくエキサイティングで、意味ある活動ですよね。
}}
仕様書や設定資料を超えて、誰もが遊べる試作品は、意味のある企画行為でしょう。前編集者は、時間軸・動きの制作意図の明確化、という言葉を使っています。もちろん短くまとめること自体もなかなか難しいのですが、工夫を凝らして、ゲームプログラムを完成させることが重要な経験であり、思考の具体化でもあると思います。
===アルファ版===
アルファ版はプロトタイプとは違うもので、その後段階で、ゲームの全体像が分かる一部分を、商品に準じた形で作ることです<ref name="gp17" />。
アルファ版でもそのゲームが本当に面白いかどうか検証がなされます。サウンドやビジュアルは商品に近いほぼ完成化された形で取り込みます。
アルファ版の使用の結果、プロジェクト中止の決定がなされる場合もあります<ref name="gp18" />。
ベータ版とは、会社によって意味が多少違いますが(たとえば『ゲームデザインプロフェッショナル』と『ゲームプランナ-入門』とでも微妙に違う)、おおむね、とりあえずのゲーム、最初からエンディングまでのほぼ完成状態をひととおり遊べる制作物です<ref>『ゲームデザインプロフェッショナル』、P170</ref>。
細かいバグ修正はこれらの段階では後回しにします。
基本的に
:プロトタイプ→アルファ版→ベータ版→調整→デバッグ
の流れですね。
===プロトタイプ制作に必要な予備知識===
====数学は後回し====
ゲーム制作の作り始めにおいて、必要な数学や物理の予備知識は、それほど多くありません。
文献『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』によれば、数学や物理の習熟に拘って、それに多くの時間と精力を費やして勉強するよりは、3Dの勉強などで必要を感じたら、そのつど、その分野の数学や物理を学ぶのが効率的だと述べており、また可能なら実際にプログラミングでその理論を試してみると具体的に理解をしやすいと述べています<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P88</ref>。
====C言語の予備知識は入門書1冊+αで十分====
C言語を使ったゲームは、予備知識はそれほど多くないので、あまり難しいことは考えず、まず実際にプログラムを書いて作ってしまう事優先にするのが正解なようです。
市販のC言語入門書で、配列や関数などの一般的な機能を一通り習得したら、あとはVisual C++ で映像出力とキーボ-ド入力のみを、1~2週間ほど勉強、そしてVisual Studioを起動してゲームを作り始める。
うまくいけば数か月以内に、パソコン用の非ネット通信のゲームを作ることができるでしょう。
ただ、ゲームプログラミングを試みる人は、必ずしもゲーム制作のみが絶対的な唯一の目標ではない可能性もあるので、それぞれの立場に応じて、座学を取り入れてみるのもいいと思います。
== 作業リストを作る ==
===作業リストの制作開始の方法===
さて、ゲームを作る時は、アイデアを頭の中だけに置いておくのではなく、文章に書きだしてみましょう。
そして、壮大な長大なアイデアではなく、1週間~1ヶ月ていどで成果の確認できそうなアイデアだけを書いてみましょう。
次にそのアイデアを、実際に動作するプログラム、ソフトウェア(つまりプロトタイプ)にするために、具体的などんな機能を持ったプログラム(簡単なものでよい)を制作しなければいけないか、自分のやるべきことのリストを、箇条書きで作ります。<ref>https://www.youtube.com/watch?v=J5FCZG7dfEY 2020年3月17日に閲覧</ref>
IT界ではこういうリストを「ToDoリスト」(読み: トゥードゥーリスト)とか「タスクリスト」といいます。このページではむしろ日本語で、「作業リスト」と呼んでみましょう。
さて、このリストを作るときは、作業項目は具体的かつ単純な目標に分割します。ですから例えば RPG の戦闘システムを作るときは、
*「戦闘システムを作る。」
と、あいまいに総体的に書くのではなく、具体的に、
*戦闘画面のメッセージ表示欄および標準メッセージを作る。
*「戦う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは後回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
という風に、作業項目を細かく分割していきます。
こうすることで、作業がひとつずつ比較的に簡単な要素に分解されていくので、楽になります。また、バージョン管理ソフトを使って管理している場合も、上記のような作業リストの分解をしておけば、各バージョンの概要を書く際にも作業リストの項目が転用できるので、一石二鳥です。
予定日は書かないほうがいいように思われます。スケジュールを管理したい場合は、別にファイルを作るといいですね。
そして書き出した項目を優先順位で並べたら、最初の作業リストは完成です。
===作業リストの更新===
プログラミングする前に作業リストを眺めて、そして上の項目から実際に作業を開始しましょう。
そして一つの項目を完成させましょう。
そして作業項目がひとつ終わったら、「【完了!】」等、そういう情報を、項目の前または後ろにつけます。備忘のための記録ですね。
たとえば、
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
こうします。
以前の記述を残したまま、その作業が終了したことを示しておくわけですね。
また、もし追加の作業が必要になったら、たとえばダメージ計算システムを作るために、ランダム計算が必要になって、自分がそのプログラム言語でのランダム計算に詳しくないなら、たとえば
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
::※3行目に追加されています。
と、必要に応じて項目を追加します。
さて、これから行う作業を検索しやすくするため、たとえば
'''やることリスト'''
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
'''完了した作業'''
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
の様に完了した項目を後回しにしたり、或いは
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*(現在→) Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
のように、(現在→)、を追加するのも良いでしょう。
つまり作業の記述をそのままに、どこまで進展しているかが分かる等に書き足していくわけですね。
==プロトタイプ制作における創作面の検討事項==
===ゲーム性===
「ゲーム性」という概念があって、これがあるからこそゲームは面白く、魅力的だと考えられています。
プレイステーション開発元のソニーもこれを重視していますし、一般的に多くのゲーム愛好者、関係者たちもその考えに同意するでしょう。
ではゲーム性とは何か?
ゲームのジャンルにもよりますが、「駆け引き」や「戦術」、これが「ゲーム性」だとよく言われます。
『ゲームプランとデザインの教科書』によると、ゲーム性とは、シューティングやアクションでは「対戦の駆け引き」、RPGでは「戦闘と物語の介入」、シミュレーションゲームなら「戦略性」だそうです<ref>『ゲームプランとデザインの教科書』、P152</ref>。
ただし上述の書籍によると、1990年代は今よりもゲーム性とシステムが重視されていたとの説明があるので、裏を返せば2010年以降の現代では、ゲーム業界ではゲーム性の重視の比率は1990年代よりも減っているかもしれません<ref>『ゲームプランとデザインの教科書』、P302</ref>。
『ゲームプランナー入門』(吉冨賢介 著)では、ゲーム性とは「課題や挑戦の仕組み」であると結論づけています<ref>吉冨賢介『ゲームプランナー入門』、P36</ref>。そして、この達成感こそが「ゲームならではの面白さ」だと述べています。
;アクションパズルゲーム「I.Q」
メディアクリエイターの佐藤 雅彦氏(「だんご3兄弟」や「ピタゴラスイッチ」等を手掛けている)が、初めてかかわるコンピュータゲームで、ソニー・コンピュータ・エンターテインメントとの共同企画で、のちに「I.Q」(1997年にシリーズ第一弾を発売)と呼ばれるシリーズに携わった時、プロトタイプが全くゲーム性のないものになってしまい、それをプレイしたソニーの幹部陣の顔色が非常に曇ってしまったようです<ref name="br67">川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P.67</ref>。
ここでの悪い反応、薄い反応の理由がわからなかった佐藤氏が、階段の踊り場でソニーの新人に尋ねてみると、「それが、あの、ゲーム性がないっていうか・・・」と言われたと出典の対談集に書かれています<ref name="br67" />。
基本的に佐藤氏は、プロトタイプの企画を提案しただけですが、ソニーにはプロトタイプを作るための部署があるらしく、1~2ヶ月かけてそこでプロトタイプが作られたようです。
この問題の責任が誰にあるかは、大した重要な事ではありませんが、商業作品としてプロトタイプを作る以上は、どこかの段階でゲーム性を意識して、プログラムに盛り込む工夫が必要になるでしょう。
===ゲームの見た目とは?===
ふつうゲームのプレイヤーは、まず最初にそのゲームの「見た目」を判断し感受するでしょう。ですからその見た目のインパクト、興味を呼び起こす構成が必要になります。
例えばスーパーファミコンRPG『新桃太郎伝説』では、開発当初はドラゴンクエスト5 のようなマップ画面のトップビューUIでしたが、開発中にクォータービューの他社製RPGが発売されて高い評価を得たので、マップUIを(トップビューではなく)クォータービューに作り直したようです。このことは攻略本『新桃太郎伝説 究極本』に開発裏話として書かれています。
一方現在でもこの方向の試みは重要なようで、書籍『ゲームデザイン プロフェッショナル』の著者は、他企業の製品の画面と、自社の製品を目で見比べる分析方法で、自分たちの製品のUI の問題を見出しています<ref name="gdp199">『ゲームデザイン プロフェッショナル』、P199</ref>。
割と素朴で単純で即物的な見た目、「かっこいい」とか、「ぱっと見派手」等の要素が非常に重要なようです<ref name="gdp199" />。
商業としてゲームを作る以上は、ペイしなければ企業も事業の継続も維持できませんから、考慮せざるを得ない問題ではあります。
== ゲーム開発ツールを使う場合 ==
====開発ツールのライセンス条件====
ゲーム開発ツールのなかには、そのツールで開発したゲームソフトに義務として「この開発ツールで開発したソフトウェアは、ソースコードを必ず公開しなければならない」などの条件をつけている場合があり、このような条件を「開示義務」(かいじ ぎむ)または「ソース開示義務」などといいます。
ソース開示が嫌な場合は、開示義務のあるツールは使わないのが正解ですね。
ゲームに限らず、ソース開示を義務としている開発ツールは多くあるので、ライセンスには気を配る必要があります。
「有料ソフトの販売を禁止」とか「アダルト作品の開発は禁止」などの条件をつけている場合も、ありえます。
ですからゲーム開発において、ツールのライセンス条件の確認は、非常に重要です。
{{コラム|GPLライセンス違反|
GPL(ジーピーエル)というライセンスがあって、Linuxなどのオープンソースで使われています。このGPLを組み込んだプログラムは、ソースを公開しなければいけません。
ですから、ソース公開したくないプログラムには、GPLソフトウェアは組み込めません。
ゲーム業界でも、GPLライセンスのソフトウェアを組み込んでしまったために、呼出し元ソフトウェアでのソースコードの一部を公開することになったゲームがあります。2005年頃、『ToHeart2』という美少女ゲームが、xvidというGPLソフトを取り込んだ疑惑によって、GPL違反の疑いでソース公開になりました。([[w:ToHeart2#GPL違反とソース公開]])
GPLでも、たとえばLinuxサーバ上でソース非公開のアプリを動かすように、GPLのソフトウェアを非公開ソフトとは独立した状態で使う場合は、ソース公開の必要はない、と、考えられています。(これが必要有りとなると、オンラインのプログラムやネットゲームは全てソース公開しなければならなくなり、非合理な結果になる。)
特定のプログラム自体に、GPLソフトウェアのコードを取り込んだ時、ソースコード公開が必要になります。
}}
{{コラム|BSDライセンス他|
オープンソースの中には、どのような利用法であっても、利用者にソース公開を求めないライセンスもあります。BSDライセンスとMITライセンスはソース非公開で利用できます。
ゲーム制作ツールの吉里吉里Zは、修正BSDライセンスで公開されています。
もしライセンスのことがよくわからない、またはライセンスの学習に時間をかけたくないなら、オープンソースのツールを使うなら、BSDライセンスを使うのが安全です。
}}
[[w:DXライブラリ]]は、GPLでもBSDライセンスでもありません(DXライブラリ説明書「DxLib.txt」には、どこにも「GPL」とも「BSD」とも書いていない)。DXライブラリは単にソースコードが公開されていて、著作権者の「山田 巧」氏が著作権を保持しているオープンソースなライブラリです。
このように、ネット上でソース公開されているソフトウェアには、ライセンスの複雑な解釈を嫌ってか、「BSD」や「MIT」などのライセンス条件を名乗らないオープンソースソフトウェアもあります。
{{コラム|自作ソフトでソース開示|
昨今ではオープンソースやフリーソフトウエアの発展などの背景もあり、「自作ゲームのソースコードやソースファイルも開示しよう」と思うゲーム作者もいるかもしれません。
然しソースコードを開示していることが原因で、トラブルに巻き込まれる場合もあるかもしれません。自分の作ったゲームのコードが悪用され、トリッキーないたずらや嫌がらせ、誹謗中傷などを受ける可能性も全くないわけではありません。
そこでライセンスに、利用による損害に対する保証が無いことを明示するのは、ある程度有効でしょう。大抵の著名なフリーソフトウェアライセンスには、この条項があります。他者の悪意を完全に防ぎ失くすることは難しいのですが、ある程度の対策は見出されていますし、自身でも見出していく必要があるでしょう。
}}
====開発ツールを使用しないという事====
下記の理由(機能制限および移植性の悪さ)の問題から、あまり大規模な作品は開発ツールでは作らないでおくのが安全です。
大規模な作品の場合、Visual C++ などでコードを書いて開発することを推奨します。
=====機能制限=====
ゲーム開発ツールを使う場合、そのツールにもよりますが、「○○ができない」、つまり特定の目的を果たすための機能を持っていない場合があります。
Visual Basic や Visual C++ には普通にある関数でも、開発ツールには無い場合も多い。
また、もし、いったんはゲーム開発ツールを使って目的の機能を持ったシステムを作ったとして、さらなる機能をそのシステムに追加しようとするときに、大幅な作り直しが必要になる場合があります(拡張性の悪さ)。
システムがモジュール化されていても、そのモジュール部分では大きく改変する必要がある場合もあるでしょう。
ですからゲーム開発ツールによるゲーム制作では、あまり大作を作ろうとしないほうが安全です。開発ツールで作る作品は、比較的に小規模な作品に、とどめておくことを推奨します。
Windowsの場合、本来なら Visual C++ などを使って、プログラム文法のいろいろな事に留意しながらプログラムを書きますよね。開発ツールを使う場合、 Visual C++ のコードを書かずに、ほぼマウス操作だけでプログラムを作ろうとしているわけですから、何かしらの制限があります。拡張性の悪さは、プログラム文法などの学習の負担を減らすためのトレード・オフのようなものですね。
=====移植性の悪さ=====
また、もうひとつの問題点として、C言語への移植性の悪さがあります。
ソースコードが公開されていない開発ツールの場合、異なる開発環境にゲームのソースファイルを移植するのは、ほぼ不可能です(仮に、開発ツールのランタイムを模倣できたとしても、著作権などの法的な懸念が生じる可能性あり)。
ゲーム開発ツールで作ったソースを、Visual C++のソースに置き換えるのは、簡単にはできないし、ほぼ全面的に新たに書くことになるでしょう。
==イラストレーター、デザイナー==
ゲーム制作、業界において、イラストや音楽を作る部署、人物は、まとめて、"アーティスト"と呼んでいるようです。
ゲーム界の場合デザイナーというのは、プランナーやディレクターのことであり、管理職的な設計者のことで、美術的なクリエイターではない。design という英語には、機械建築の設計という意味もあります。
映像関係、画像系のアーティストはグラフィッカーと呼ばれることもあります。ムービー担当者、特にゲーム界では3D-CGの制作者をアニメーターと呼ぶことが多いようです。アニメーション業界では主に、手描きの原画、動画マンをアニメーターと呼びますが、最近は3D-CGアニメーション映画も多いので、すこし状況が変わっているかもしれません。
ゲーム業界とアニメーション業界、各会社企業、過去と現在で、「原画」「仕上げ」「絵コンテ」等、一般的な作業に関する言葉が、それぞれの状況で微妙に違った意味で使われることも多いですね。
…ところで前編集者はわざわざこの項目を作ったうえで、色々な場所での言葉の意味の違いを、クドクドと自分勝手な分かりづらい説明で長々述べた後、「混同しないように気をつけましょう。」なんて馬鹿馬鹿しい言葉で締めているんだけど、この人物の意図はどこにあるのだろう?
例えばデザイナーというのは一般的に、造形作品、図案、意匠を考案する人のことを言うのだから、ゲーム界の外の人間が多少その業界内での意味を取り違えても、それほど致命的なミスでもないし、罵倒、愚弄されるいわれもなければ、好き放題にその相手を罵倒、愚弄していいわけでもない。間違えて使っている人を見たら、その都度やんわりと教えてあげればいいだけじゃあない? だいたいその世界に現実に身を置いたら、そこでの言葉の意味、使い方なんて自然に覚えるものだし…。
それを得意げにこれが違うあれが間違いといちいち理屈書いて、いい気になって威張っているこの人物は何者なのだろう?
現編集者が思うには、この人物は、学問、知識、知恵、科学とは何かという事を、根源的に取り違えている、のだろう。
==操作性==
操作性について、親指と人差し指<!-- ←ここ,中指って書いてあったけど,こっちだよね? -->だけでボタンプッシュなどの操作ができるように作成するのが基本です。中指、小指、薬指はコントローラのホールドに使うぐらいです。人間工学的に、小指や薬指は力が弱いので、微妙な操作には向かないことが知られています<ref>川上大典ほか『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日 第1版 第1刷、P.48</ref>。
一般的にゲームプログラミングでは、
# プレイヤーからの入力を扱うことができる。
# ゲームが提示する内容を表示することができる。
入力と出力、この2点が機能として必要になります。
プログラミング言語とプレイヤーからの入力については歴史的にも、あまり変化がありません。言語では主に[[C言語]]、[[C++]]が用いられる。[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
パソコンゲームでは、プレイヤーからの入力には通常、キーボードかマウスを利用します。他に[[w:ジョイスティック|ジョイスティック]]や[[w:ゲームパッド|ゲームパッド]]が利用される場合もあります。家庭用ゲーム機では[[w:コントローラ|コントローラ]]が利用されることが多いのですが、[[w:ニンテンドーDS|ニンテンドーDS]]や[[w:Wii U|Wii U]]では[[w:タッチパネル|タッチパネル]]、[[w:Wii|Wii]]では複数の入力機器が提供されることが発表されています。各種入力機器をプログラムから扱う手法自体は、普遍性があり、入力機器ごとに大きく変化しない、と、考えられています。[[w:デバイスドライバ|デバイスドライバ]]、[[高等学校情報B]]には、プログラムから周辺機器を扱う方法について多少の記述があります。
画面表示のうち、3Dの表現は割合難しく、ある程度の数学(高校、あるいは場合によってはそれ以上)の理解が必要でしょう。2Dに関してはプログラムの面では、さほど難しい部分はありません。
==処理速度の問題==
基本的にプログラミングでは、関数を使って、処理をコンパクトにまとめ、定数ではなく変数で柔軟性のある操作をすることが求められますが、ゲームの場合は、この構造のせいで処理速度が低下することがあります。
現在のCPUの性能、速さはかなり高くなってはいますが、プログラム処理は無限に煩雑化できますから、やはり高度な処理を短時間でなすことが求められます。特にゲームは、リアルタイムの反応のタイミングが非常に重要ですからね。数学の指数計算についての雑学で、「新聞紙を42回おりたたむと、月に届く距離になる」というものがあります。(新聞紙の厚さ)*2^42、ですね。もっとも新聞紙の物性から言って、ほぼ不可能な操作ですけど^^;;。コードの内容、組み合わせによっては、このように計算量が指数関数的に膨大になってしまい、処理速度が非常に遅くなってしまう場合があります。
ですが、このセクションで後述するように、関数を用いる場合の解決策(※概要:あとでdefineやinlineに置き換え)があるので、プログラミングの初期のほうは、とりあえずバグを未然防止するために関数を活用するべきでしょう。
1980年代頃のファミコンなど古い時代のゲームでは、ストレージ容量(ハードディスク容量のこと)が、ボトルネックでした。「容量不足でイベントをいくつか削りました」と、当時のRPGなどのゲーム作家が述べるのは、ストレージ容量の不足のことですね。ただ当時のファミコンはROMカセットでハードディスクは無いので、まさにストレージ容量という言葉が適切でしょう。
しかし2010年以降の現代では、ボトルネックになっている要因は、ストレージ容量不足よりも処理速度です。
ゲームプログラミングに要求されるコード特性は、科学計算ソフトウェアや金融プログラミングなどの手法とは異なります。情報工学・情報科学で適切とされる「構造化プログラミング」などの歴史的に発展してきたプログラミング・パラダイムの理念とは反するようなコード開発方針になる場合もあります。しかしゲームプログラミングに限らず、限定されたハードウェアで特定の結果を速く得るためには、様々なトリッキーな手管が必要になるでしょう。
;ツクール等制作ツール
RPGツクールの制作元のカドカワ(アスキー社→エンターブレイン社→カドカワ(かつての「角川書店」) )では、PRGツクールでのアクションゲーム開発は推奨していません。アクションゲームの場合は、同じカドカワの「アクションゲームツクール」で制作するよう、薦めています。
アクションゲームとターン制RPG では要求される特性が大きく異なり、なかには、ほぼ対立しているような性質もあります。
ツクールやウディタでも、万能にあらゆることがスタマイズできるわけではなく、その制作ツールの特性に依存しますし、主に処理速度の低下しない部分についてユーザが創作できるようになっているでしょう。
多くのRPG制作ツールはマップ操作や戦闘画面の基本システムのルーチンそのものは、あまりカスタマイズできません。画像や音楽は挿入できますが、例えば戦闘プログラムなら、「コマンド」の命令文など一部の派生的な部分だけが独自に作れる程度でしょう。
ですから、ツクールでどうしてもアクションRPGを作りたい場合、基本システムの改造はかなり困難だろうし、別途、アクションRPGのような動作をするマップイベントを作成する・・・ぐらいでしょうね。
ツクールやウディタでターン制RPG以外のジャンルを制作するのには、実質的には限界があり、さまざまな制約が生じます。
;具体的な手法
初期段階では関数や変数を活用してプログラミングし、処理速度を高める必要がある箇所にだけdefineマクロ等を用い別の方法に置き換える。C++ならinline関数という前処理命令もあります。
通常の関数で記述していったソースコードを、あとから一括変換などでdefineマクロやinline関数などに置き換えることは比較的に容易です。
また、関数を経由しているので、マクロを使った場合でも比較的にバグが混入しづらくなっているかもしれません。(defineなどの前処理命令マクロは、用いるとバグを発見しづらいので、なるべくマクロの利用を避けるべきなのが、ゲームプログラミングに限らないプログラミングの定石です。)
一方、まったく関数を使ってないコードを、あとからdefineマクロなどに手作業で置き換えるのは、なかなか面倒です。
最終的には一括変換で置き換えることが出来ますから、途中の段階では、処理速度を気にせず関数を使うのがいいでしょう。
なお、defineマクロは、値の置換以外には用いないのが、プログラミングの定石です。このため、たとえば黒色RGB値の<code>10,10,10</code>といった配列にdefineマクロを使うべきかどうか悩みますが、とりあえずなるべく値周辺にだけdefineマクロを適用するようにするようにするのが良いでしょう。いっぽう、一般の命令文をdefineマクロで置き換えるのは、避けるべきでしょう。
たとえば、処理に0.5秒ほどの時間の掛かってもかまわないような場所は、どんどん、関数に置き換えていっても良いかもしれません。
アクション性のないゲームなら、関数をぞんぶんに活用できます。
ターン制RPGやシミュレーションゲーム、アドベンチャーゲームなど、関数を活用しやすいでしょう。
一方、アクションゲームなどでキャラクター操作中のコードのように頻繁に使って、しかもそのゲームの中心的なコードなら、そこは最終的には関数にしないほうが良いかもしれません。
このように、ゲームのジャンルによって処理速度に対する必要な水準が異なりますので、プログラミング時における関数などの利用の方針も異なります。
以上のように、何でも関数にすることは避けるべきです。関数は処理速度の問題がありますので、必要性のある部分だけ関数にするべき。関数を使わなくても、for文やif文などのブロックの構成を適切に組み合わせることで、コード中のmain関数以降の部分でコード共通化できることは色々とあります。
「共通性のあるコードだから」といって、大して長いわけでもないコードを関数に置き換える事は、速度維持には寄与せず、ゲーム制作のプログラミングとしては、悪手となるでしょう。
===2Dの画面出力===
画面出力の場合も入力機器の場合と同じで、これらを操作する方法はOSごとに異なっています。先ほどあげた GTK+, Qt, SDLなどのライブラリはクロスプラットフォームの画面出力を提供しているため、これらを利用することで全てのプラットフォームで動くプログラムを作ることができます。<!--画面出力を扱うためには近年の[[w:ビデオカード|ビデオカード]]の発展についても見る必要があります。しかし、ビデオカードの機能は2次元の描画に関してはあまりあらわには見えないので、この話題は3次元の描画を行うときに再び戻ってきます。-->
*[[ゲームプログラミング/ブロック崩し]]
*[[ゲームプログラミング/画面出力]]
==目次==
=== ジャンル別のプログラミング手法 ===
==== 3Dグラフィック ====
* [[ゲームプログラミング/3Dグラフィック]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
==== RPG ====
* [[ゲームプログラミング/RPG]]
==== アクション ====
※未作成
==== パズル ====
※未作成
==== シミュレーション ====
※未作成
=== ゲームのデバッグ ===
* [[ゲームプログラミング/デバッグ]]
=== 入力 ===
OSの種類によって、キーボード入力やマウス入力の受け付けのさいのプログラムの書き方は違う。
Windows API での具体的な手順は『[[ゲームプログラミング/入力]]』で説明する。
=== ゲームエンジン ※未完成 ===
* [[ゲームプログラミング/Unity]] ※リンク先ページの編集者が現状ではUnityの著作・調査を放棄中なので、調べ物としては役立ちません(2021年12月19日に本文を記述)。
=== 非プログラミングのゲーム製作の関連作業 ===
==== バランス調整 ====
*[[ゲームプログラミング/バランス調整]]
厳密にはプログラミングの話題ではないが、ゲーム製作では必要な知識なので、サブページで説明する。
:※ゲームデザインに関する記述をここに集積し分離したい、という編集者の意図もある。
==== ゲーム用の書類の書き方 ====
説明書や仕様書(しようしょ)の書き方については、『[[ゲームプログラミング/書類]]』で解説する。
== 未分類 ==
===Visual C++プログラムによる文字画像の出力===
Visual Studio付属のフォームデザイナ(VSの用意するGUI自動作成ソフト)によるGUIオブジェクト作成では、RPG用には使いづらい。いや、ひょっとしたら上手に使う方法はあるのかもしれないが、様々な理由で難易度は高い。
そこでまず、Visual C++で、フォームデザイナをなるべく使わずに文字や映像を出力する方法を考える。
選択肢は、幾つかある。
1.フォームデザイナを1つも使わない方式
*Windows APIで入力していく方法。(Wikibooksに『[[Windows API]]』の入門書があります。)
*DirectXで入力していく方法。DirectX自体はWindowsAPIを利用している。
2.1つだけフォームデザイナのパネルを使う方式
*フォームデザイナで「パネル」という画像表示機能のコンポーネントを一つ用意して、そのパネルで表示する画像をゲーム内のストーリーなどに応じて切り替えるだけで、すべての画像表示を行う。
フリーソフトでゲーム用ライブラリの『HSP』はWindows API を呼び出す仕組みになっています(HSP関連のサイトを見ると、Win APIプログラミングの解説をしている場合もある)。
フリーソフトでゲーム用ライブラリの『DXライブラリ』は Direct X を呼び出す仕組みになっています。そして、ゲーム開発ツールのひとつであるウディタのソースコードは、DXライブラリとVisual C++ を使って書かれていると、作者が公表しています(ただしソースコードは非公開)。しかし、ウディタを用いたRPGプログラミングでは DXライブラリによるコーディングはしない。ウディタにはコード入力の機能は無く、マウス操作や、キーボード操作、キャラ名称や会話文などのテキスト文字や数値の入力のみに対応している。
===乱数===
そもそも乱数とは何かという問題があるが、それは高度な数学的な議論になるだろうから、我々はその問題には深入りできない。
ゲームにおける乱数的な処理では、事実上ランダムな値にならず、演出や調整のためにアルゴリズムが介入している場合も多い。例えばゲーム中のくじで「外れ」続くと、当たり確率が変動し、次からは当たりやすくなるアルゴリズムなども良く使われる。<ref>『ゲームプランナー集中講座』、P232</ref>。
ゲームは娯楽であり、実用目的のシミュレータではないし、アルゴリズム介入で、確率的にもいんちきが多いので、あまり厳密なランダム性が問題になることは少ないだろう<ref>『ゲームプランナー集中講座』、P231</ref>。
例えばさいころというのは典型的な乱数器だし、ゲームにもよく使う物だろう。
無印C言語には標準的乱数関数 rand()があるが、これを乱数発生に使うことに批判的な意見もあるし、機能もやや不足していると見れる。
Windows64bit では int rand(void) の出力は 32bit 整数だろう。まず stand関数で初期化してから rand()を呼ぶごとに疑似乱数が帰ってくる。これの複数回の連なりが乱数列だね。帰ってくる値は0 以上 定数RAND_MAX の値以下。
例えばさいころの数値が欲しいなら、rand の返り値を6で割った後、余りに1足せば、とりあえずそれらしいものはできる。
RAND_MAXは rand()の属性として定数が与えられているだけだから(Windowsで0x7FFF)、この値の変更はできない。
まあこれでもそこそこいい加減な乱数として機能するだろうが、最近ではもう少し改良された、質の高い乱数関数もある。
また、改良された乱数関数は、乱数の範囲も指定できるから何かと使い勝手が良いし、バグを防ぐ効果もあるのだろう。
<syntaxhighlight lang="cpp">
Random^ saikoro1=gcnew Random();// Random^ でRandomクラスの変数を作っている。gcnewはインスタンスをつくるための演算子。
int detame; detame=saikoro1->Next(1, 7);// Next メソッドで「〇〇以上△△未満」の乱数を指定できる。「->」はメンバーアクセス演算子。
MessageBox::Show("目"+detame.ToString()+"が出ました。");
</syntaxhighlight>
↑例えば上述のコードは前編集者が示したものだが、これは .NETプログラミングですね。.NET のSystem::Randomクラスを使っている。.NETのクラスは普通、C#かVisual Basic で利用するので、Visual C++で使えるようにするには結構面倒な手管がいるが、その辺は読者諸兄、ヘルプやネット情報を参照して、適宜辿り付いてほしい。
C++ の場合はむしろ、 #include <random> を宣言してそこで使える関数を使用するほうが簡単でしょうね。この場合でも、乱数としての精度も高いし、帰り値の範囲指定もできる。
===画像のちらつき===
画像がひんぱんに変化するアプリでは、画面が、ちらつく事がある。画面のちらつきは、ゲームのように、画像を凝視するアプリでは、かなり利便性を損なう。
キャラクターが1歩移動するだけで、画面全体がちらついたりする場合もあり、かなり、プレイヤーの不満になる。
これは、ダブルバッファ(「裏画面」と、良く言われる)という技術で、解決を図る。
Direct Xの用語では「スワップ チェーン」と呼んでいる。
.NET Framework開発環境の C++や C#でもダブルバッファの機能があると解説されている。いくつかのGUIオブジェクトのプロパティで、ダブルバッファの設定項目がある。
しかし前編集者が実験したところ、この機能を有効に使って確認することはできなかったとの指摘がある。ひょっとしたら何らかのマイクロソフトの解説に間違いがあって、工夫次第では利用できるかもしれないが、少なくとも今現在のこのページでは、その問題に関するリファレンスは提供できない。
そこでやはり、以前の項目と同様、Win32 API または DirextX の利用をこのページでは考えたい。
前編集者は、.NET Framework のフォームデザイナでは、ちらつき自体は解決できそうだが、グローバル変数の共有が困難だったり、アプリ内から終了コマンドが使えない、などの難点があると指摘している。
ただ現編集者はこの2点に関しては、解決策はあると思うが、しかし特に調査はしない。
前編集者は、.NETプログラムでゲームを作る難点をいくつも上げているが、おそらくどれも、.NET の仕様や全貌に精通すれば解決できるように思えるが、そもそもその全貌がかなり広大なので、解決の道のりは長いだろう。
そこで少なくともこのページでのWindowsゲームプログラミングは、Win32 API を利用したものになるだろう。
==セーブ、ロード、データベース==
===セーブ機能とロード機能の作り方===
ゲームでもシリアライズ機能が必要なことは多いだろう。数値(HPなどの各種パラメータ現在値)や文字列(例えば、プレイヤーの作成したキャラクターの名前)や現在地やフラグ状況などなど、セーブの機能は欲しい。一番簡単な方法は、C言語の fopen 関数のテキストファイル書き込み機能で、テキストファイルとしてセーブすることだろう。
Windows API には CreateFile関数 があるが、テキストファイルでの素朴なセーブは一番簡単で単純なセーブ法だろう。そしてテキストファイルを読み込んでプログラムに各種変数を配置して、ロードとする。
書き込みとしては、一番単純なC言語記法では、fprintf ですかね。C++としての書き込みをしてもいいし、読み込むのも、一番基本的な方法で。基本Cだとしたら fscanf で、この関数でテキストの数値も変数として読み込めるはずですよ。場合によっては atoi関数 で文字列→数値の変換をすることもありますかね。
基本的にデータファイルは、OS もアプリケーションも、テキストファイルとバイナリファイルの2分類で考えるでしょう。でもテキストファイルだってバイナリの集まりなんですが、テキストを扱うファイルだけ特別視していると考えていい。
そして多少それらしいデータを作りたいときは、バイナリファイルで作るという事になるでしょう。
バイナリファイルでもデータとしてのファイルと、OS が機械語または何らかの仮想的な機械語として扱う実行ファイルがある。それらのバイナリは種類に応じて多くは冒頭にファイル識別子の情報があるだろうし、OS や アプリケーション側で工夫を凝らして、特定の条件を満たす場合しか動作しないようにしているだろう。そしてバイナリファイルを扱うときは、セキュリティの安全性も考慮するだろう。
基本的にプログラム側は何でもありだが、識別子の判別その他、ある程度様々な考慮をしないと、困った事態が起こり、プログラマーが責任を問われることも起こるかもしれない。
まあその時はいつものように口先だけで謝り、それでも許してくれなかったら、腹をかっ割いて死んでお詫びすれば、世間の人たちは美事な武士道精神と言って、口々に褒め称えてくれるだろう^^。←もちろんこれは冗談^^;;;。
市販のパソコン用ゲームや同人ゲームでは、テキストファイルではなくバイナリでデータ保存するゲームの方が圧倒的に多いだろう。その方がそれらしいしかっこがつく。ゲーム開発ツール側自体も、そうなっている場合が多い。RPGツクールもウディタも、セーブデータの形式はバイナリ。
テキストデータは基本エディタで開けるが、バイナリデータも内容によっては結構ぐちゃぐちゃの状態で開ける。バイナリデータはバイナリエディタで開ける。バイナリエディタのリードオンリーモードやバイナリビューアみたいなものがあれば、データーを壊さないで結構安全にデータ調査できる。
データ内容を秘匿したければ、バイナリ化だけではなく、暗号化も必要になるかもしれない。
===機能の整備===
セーブ&ロード機能の実装時には、まずセーブ機能から作るのがやりやすいという。
しかし最終的には関係関数の整備は、ロード機能が基盤となるだろう。
データや変数を、一定のスタイルでセーブして、一方で正しいスタイルでロードする、この機能が必要なわけですよね。
シリアライズされたデータを、型を決めたうえで配置しなければいけないから、ロードのプログラムの方が複雑に、面倒になる。
結局データのシリアライズは、ロード機能が基盤となり、その機能の作りやすさが、セーブ機能の作りやすさも支配するようだ。
== ゲーム中の特殊イベント ==
*[[ゲームプログラミング/特殊イベント]]
RPGやシミュレーションゲームで、1回しか起きない特殊イベントを作りたい場合もありますね。例えば日本の中世の戦国シミュレーションゲームで、「桶狭間の戦い」が3回も起きたら困りますよね。まあ起きるなら起きてもいいけどね^^。信長君には敦盛を3回舞ってもらいましょう^^。
さて、リンク先ではその話題についての叩き台、「こうプログラミングしたら、いいんじゃない?」、という事を説明しています。
==スケジュール管理==
[[File:Tokai Hairo.jpg|thumb|500px|ガントチャートの例:東海発電所の廃止解体工程]]
個人でゲームを作る時にはあまり考慮しなくていいのですが、シビアな仕事の世界では、スケジュール管理表が良く使われます。
「作業責任分担表」(TRM:Task Responcibility Matrix)といわれるスケジュール表から、それをグラフ的に図示したガントチャートといわれる表を作って、その表を見て作業計画を判断する<ref name="gpd65">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.65</ref>。
{|class="wikitable" style="float:left"
| 仕事
| 担当
| 状態
| 開始
| 終了予定
| 終了日
|-
| 仕事1
| 田中
| 済
| 2021/10/03
| 2021/10/10
| 2021/10/10
|-
| 仕事2
| 田中
| 仕掛
| 2021/10/11
| 2021/10/13
|
|-
| 仕事3
| 鈴木
| 済
| 2021/10/05
| 2021/10/08
| 2021/10/08
|-
| 仕事4
| 山田
| 未着手
| 2021/10/13
| 2021/10/17
|
|-
|}
{{-}}
ガントチャートでは普通、横軸に日程をとります。
商業ゲーム界でもガントチャートの横軸は日程です<ref name="gpd65" />。
ガントチャートとして図示することで、ボトルネック、リスク要素、直感的にスケジュールの詳細や全体像が理解しやすくなります<ref name="gpd65" />。
スケジュール管理のための、現実的、習慣的な工夫ですね。
このTRMとガントチャートは、IT業界だけでなく建築工事でも使われ、これを利用したボトルネックの洗い出しも、建築学の教科書に記述があります。
住宅の新築やリフォームをする時、建築業者がこの表を提示して、見せてくれることもあるでしょう。
業界人ではなくとも、こういう慣習を知っておくと、得るものがありますよね。
==ストーリー制作、そして順序==
ゲーム界、特に商業ゲーム界では、ストーリーもゲームも全体から作っていくようです。アトラス社(ペルソナシリーズ、女神転生シリーズ、などを手掛ける)では、「ゲーム全体に血を回すのが先」、という言葉が良く言われていました<ref>[https://news.denfaminicogamer.jp/projectbook/191030a/2]2020年12月1日に閲覧して確認.</ref>。
プレーヤーが見たいのは、物語の細部ではなく、ゲーム全体のストーリーやテンポ、総合像である、とは限らないのだが、しかし物語を含む創作物では、全体を見て重視し、そこから作っていくのはある意味王道、常套手段ではあります。
ちなみにやや雑談的ですが、日本の週刊漫画は、その週その週での勢いや読者の興味の引き付けも大事なので、全体がないのに、その場その場で場当たり的に作られた事も多かったようです。
現編集者が聞いたことのある話では、週刊少年ジャンプで連載していた本宮ひろ志氏が、不良少年物の漫画で、敵の不良少年グループと1対1000の喧嘩になり、さあいよいよ対決場に着いて勝負だってところで以下次号にし、そして実は本宮氏はその続きを全く考えていなくて、考えてみたけどどう考えてもどう描いていいかわからない^^;;;、そこで仕方ないのでイライラして近所の酒場に飲みに行き、そしてイライラしたままそこの常連達とあり得ない大ゲンカして^^;;、そのままボロボロになって家に帰って、2時間で次の号の漫画を描き終えた、と、本宮氏自身がメディアで語っていたのを聞いたことがあります。
さて、コンピューターゲームである以上、ゲームのストーリーはシステムと連携、調和したものになるでしょう。
そこで、ゲーム作家として、システムを先に決めた後ストーリー、そういう方法論の作者も多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.306</ref>。
とにかく商業ゲーム界では常識的に、全体像から攻めていく。
例えばドラマ脚本では、「ハコ書き」という方法がある。全体像に当たる「大ハコ」を記述してから、「大ハコ」→「中ハコ」→「小ハコ」と記述していく<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.184</ref>。
しかし、本当にすべてのゲーム制作は全体から作る必要があるのか、という疑問はありますが、その方法論に従うとすると、
:*エンディングを大まかに先に作る
:*機能の実験を簡易でいいので事前にしておく(※プロトタイプの項目を参照)
:*使用頻度の高い部分から作る
などの工夫を凝らして、常識的な方法を遂行していくことになるでしょう。
或いは、アルファ版(α版)を中盤から作り始めるとか…<ref>吉冨賢介『ゲームプランナー入門』、P17</ref>。α版の製作目的の一つとして、そのゲームが本当に面白いかの検証がある。面白くないと判断したら、制作中止もある。最初からではなく中盤から作ると、ゲームの全体像が見えるので、検証、判断がしやすい。
つまり全体から攻めて、細部やゲームが作られていくわけですから、必ずしも冒頭部から作り始める必要はないわけです。
;エンディングやラスボス戦闘を早めに作る場合
ゲーム作者にもよりますが、商業ゲームシナリオでは、エンディングを早い時期に作る人も多い<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
システム面についても、先にゲーム全体のクリア条件を決めてから、あとから各ステージの条件を決めていくことが多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.253</ref>。
エンディングの仮の、おおざっぱなシナリオ、そしてキャラクターの性格付けを先に決めておくと、ゲームの方向性と主人公達が目指すもの、ゲームの全世界像が作者やスタッフに明快になっていきます<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
基本的に商業ゲーム界では、全体→部分と細部、の構成を進めていきます。
ゲームは必ず最後にラスボスと戦う訳では無いでしょうが、その戦いはゲーム中で最も高負荷になるでしょうし、全てのシステムが集積する場面でもあるので、エンディングを先に作ると、ゲームの最大負荷の検証ができます<ref name="yth">[https://www.youtube.com/watch?v=kAUkSNhH410] 2020年8月30日</ref>。
3Dゲームでは、RPGなら戦闘シーン、アクションゲームならアクションシーンが、一般的に最も高負荷<ref>ntny著『ローポリスーパーテクニック』、ソフトバンククリエイティブ、2010年2月16日初版第5刷、P28</ref>。
負荷が高くて処理が落ちないかどうかも、この方法で確認できます。
まあ全ての物語は最後の最後が一番の見せ場ですからね。
中盤は重要性が低い…訳では無いが、少し手を抜いておこうという事か^^;;;。
最後は見せ場を盛り込むから、物語を削る必要があるとすれば、それ以外の部分、という事になりますよね<ref name="yth" />。
つまりラスボス戦(必ずゲームってこれで終わるの? ^^;;;)は最重要なので削らない。後の部分は削る可能性あり。だから最後を先に作って作りこんでおけば、制作過程で不測の事態が起こっても、重要部分はできているので、早く、上手にリリースできる。
{{コラム|イラスト制作でも順番を考え直すと打開できる場合あり。|
イラスト雑誌『コミッカーズ』(1995年季刊夏号)(唯 登詩樹 表紙)での藤島康介のインタビュー
藤島(談):よく若い漫画家さんから相談で、「先生みたいに女性の長い髪を書くとき、毛先を書くのが難しいです。根元は書けるのに」との相談を受けるのですが、
僕(藤島)は髪を描くときは毛先から始めて根元に向かって描いてます。
つまりイラスト初心者は、根元から髪の毛を描きたくなるのですが、ここで長い髪の毛を描く場合はむしろ毛先を先に書いて位置決めして、長い毛を描くと割とうまく描ける。
きれいな女性の髪の毛は、毛先の奇麗さが大事ですからね。
ストーリーを作る時に全体を考えたうえで、必ずしも最初から書くことにこだわらない方がいいように、絵を描く時にも同じ発想が有効になる。例えば機械製図でも、正確に奇麗に書くためあるいは実際の製作のため?、位置決めの優先指示の記法がある。
}}
*目標
世の中では目的や目標を明確化せよ、と主張する人は結構多い。現編集者は懐疑的。むしろ他人を自分の都合いいように動かしたいから、その方向を明示したいのだろう。それより、我々の本当の目的と目標は何か、歩みを止めてちょっと考えてみろよ、と、言いたい。
しかし結局世の人たちは目標をはっきり、言語化したがる。ゲームでもそれをすると、プレイヤーがゲームに引き込まれる、と言うが、実際にはそれはゲーム業界のカモになっている、インチキゲーマーだけだろう。
とにかくカモたちは目的を欲しがる。目標や課題がゲーム中で明確になっていないと、疑問だらけになり、ゲームをやめて、業界にお金を落としてくれない。そこで設計の際、各ステージやエリアなどの冒頭で、そのステージの課題や目標などを明示する必要があるという<ref>『ゲームプランナー入門』、P39</ref>。
ファミコンなどの古いアクションゲームではゲーム本編では目標は語られていませんが、しかし説明書などではきちんとそれが語られており、実際にスーパーマリオブラザーズの第1作目の説明書では、目的はクッパを倒してピーチ姫を救出することだと語られています<ref>『ゲームプランナー入門』、P54</ref>。
===チュートリアル、製作順序===
RGBやシミュレーションゲームでは、初めの方は、操作説明のためのチュートリアルイベントになることも多いのですが、ここにも製作順序のポイントは指摘できますね。
基本的にはチュートリアルの細部は後回しにしたい。と、いうのはゲーム本体の仕様変更が、製作過程で頻繁に起こるので、チュートリアルもそれに合わせて後回しにせざるを得ない。
最初の段階でチュートリアルを作りこんでも、仕様変更になれば、その記述自体が不適になる。
当初のチュートリアルイベントがそもそも必要かどうか。説明書、マニュアルに任せてもいいですよね。
基本的にゲーム本体の仕様がかなり変更を含み場当たり的なので、チュートリアルは後回し、ゲーム本編の完成間近の時期になるか、もしくは本編完成後になるでしょう。
== 古典ゲームと技術限界 ==
ゲームを作る際、過去の名作ゲームを参考にしようと思うでしょうが、
しかし過去のゲームの設計は、当時の性能の限界に影響を受けているので、
果たして現代のコンピュータ性能の飛躍的に上昇した時代でも過去の設計をそのまま参考すべきかは、
やや検討の余地があるでしょう。
歌舞伎などの古典技芸の伝承の格言で『師を見るな、 師が見ているものを見よ』という教訓があると言われています。
このセクションでは、主に1980年代のファミコン時代のゲームを例に説明します。
=== スプライト ===
ファミコン時代の昔のゲーム機には、一画面に表示できるキャラチップ数(敵チップも含める)に上限がありました。
一画面中に表示できる限界は、だいたい、マリオが一画面中に数十人ぶんです。(実際の数値については、本ページでは触れない。説明の本質には関係ないので。)
ファミコンでは、このような仕組みを 「スプライト」と呼んでいました。(実はマリオ1体の表示の時点で既に、いくつかのスプライトの小単位を合成したものになっているのですが、説明やややこしくなるので、このページでは触れません。)
ともかく、実は昔のゲームのステージ設計は、スプライトの制限を前提にしたものになっています。
極端なハナシ、もしたとえばシュテイングゲームなどで、動く敵100体をボムで一瞬で倒せるようにしたゲームを設計しようとかファミコン時代に思っても、
ファミコンではすでに敵100体の表示の時点でグラフィック性能的に原理的に無理なのです。
どうしても敵100体を表示したい場合、表示のタイミングを変えます。
たとえば、
:1タイミング目では0~10体目までのAグループを表示、
:2タイミング目では11~20体目までのBグループを表示、
みたいにして、タイミングを変えることで、なんとか表示するのです。
このため、画面上に動くキャラクターが多いと、一瞬、ほかのキャラが消えるのは、裏側でこういうタイミング切り替えの処理が行われているからです。
説明の都合上、本ページではキリのいい「10体目」までと 上記の例では表現しましたが、実はファミコンの制限はもっときびしく、横1列上には8体目までしか表示できないと言われています。(しかもマリオ1体自体が、じつは2体×2体の計4体チップを使っているといわれる。なのでマリオ5体は同一ライン上には表示できない。)
なおシューテイングゲームの場合、敵チップだけでなく、敵味方の双方の弾丸もチップを利用しますので、実際の制限は上記の数値例よりも、もっと厳しいでしょう。
また、プレイヤー視点ではキャラクター1人にしか見えていなくても、背の高いキャラクターなどはキャラクター2体以上に相当するなど、注意しなければならないこともあります。
だからファミコン時代のアクションゲームで、巨大ボスのいるステージでは、ボス以外の敵が出現しないのは、おそらくですが、プレイヤー視点では1体のボスに見えても、内部プログラム的には敵チップを何体ぶんも利用しているのでしょう。
しかも巨大ボスは、ゆっくりとしか動きません。
おそらく、そのゆっくりとした時間内にVRAMを書き換え中だったのでしょう。
日本ではコトワザで「ウドの大木」みたいな言葉があるので、なんとなく巨大ボスがゆっくりと動いても不自然ではないかもしれませんが、よくよく考えたら現実世界の大男はけっこう動きが早いです。(レスラーやヘビー級ボクサーなどを考えれば分かるでしょう。)
=== 書き換え速度と背景グラ ===
ファミコンのマリオでは、書き換えの手間を省くために、一説には、たとえばマリオ1の地上ステージの世界の空の青色は、実はほとんどの場合、マリオが横スクロールしても空の青色の部分は書き換えをしておらず、横スクロールする前の青色をそのまま使いまわしていると言われています。
なぜそれで効率化できるかというと、ステージ中の障害物はほとんどのステージの場合で、画面の比較的に低い位置に障害物があるので、その低地の障害物だけを書き換えすれば済むからです。
だからファミコン時代では、こういう理由から、ステージの背景グラフィックや、障害物配置なども決まっているでしょう。
だから果たして、現代でもそれを過去の名作のステージ構成を踏襲すべきかどうかは、分かりません。もちろん、仕組みを分かった上で真似るのなら、それは特に問題ないでしょう。
=== アナログテレビの にじみ ===
ブラウン管では、細かすぎるドットは表示が、にじみます。ゲームに限らず、テレビアニメや一般の実写番組などでも同様、にじみます。(どのように、にじむかは、専門的なので説明を省略する)
だから、ファミコン時代から、だいたいプレステ1時代のゲームのグラフィッカーは、このことまで意識してドットを描いているはずです。
ともかく、液晶テレビとブラウン管テレビでは、同じ画像データでも表示結果が変わります。
レトロゲームから勉強する際は、ファミコン〜プレステ1時代のレトロゲームでは、データ上の解像度よりも実際のディスプレイ上の映像は細かいことに気をつける必要があります。
たとえば滲み(にじみ)を意図的に利用することでテレビの解像度以上の表現をしていたりしていました。
また、ファミコンのドットは縦横の長さが縦方向と横方向とで長さが違うので、そこまで考慮して、グラフィッカーは絵を描いています。
また、ドットの図形的な細かさだけでなく、色についても、にじみによって、当時のゲーム機の色用のビット数の限界を超えた表示をファミコン時代から行っていました。
つまり、同じドットの黄色の単色でも、そのドットの幅が1ドットか2ドットかで、テレビ上で表示される色が違います。「色が違って見える気がする」ではなく、実際にブラウン管のディスプレイ上では色が違うのです。言い方を変えると、ブラウン管テレビでは元の画像データ通りには色は表示されていません。(さらに縦方向と横方向とで色のにじみ方が違うが、専門的すぎるので、説明は省略する。wiki書くために調べるほうも大変なので。)
なので、もし現代の人がファミコン当時のゲーム作品のグラフィックを参考にする際は、このことに気をつける必要があります。一番、手軽なのは、そもそもグラフィックの細部については参考にしないことです。
これはつまり、もし公式エミュレーターなどでファミコン時代の古いゲームを、現代の液晶ディスプレイ用のゲーム機でプレイしても、エミュレーター側で過去テレビのグラフィック特性の再現のための特別な工夫をしてないかぎりは、実はグラフィックの表示結果が当時のものとは異なるわけです。
一方、パソコン市場では、ノートパソコンの普及し始めた1999年頃には液晶ディスプレイのものが比較的に安価で出て来たので、この頃からパソコンゲーム市場では次第にブラウン管のにじみを考える必要が無くなったでしょう。
なお、アナログテレビはそもそもテレビ自体の解像度が低いので、プレステ2時代あたりからのゲームには合いません。だから、プレステ2時代あたりからは、あまりブラウン管の特性を考える必要はなくなります。
逆に言うと、あまり指摘されないことですが、プレステ2時代の当時の人が当時の最新ゲーム機をプレイするには、もし既存のアナログテレビを使い続けていた家庭は、テレビ受像機そのものを買い換える必要があったという亊です。
一応、家電量販店などでテレビ用のアナログ/デジタル信号の変換機などを購入してテレビに接続するなどして使えば、デジタルテレビ用のゲーム機もプレイ可能ですが。
だからアナログ放送自体は2010年くらいまで続いたとはいっても、あまり当時のゲーム機をアナログ用テレビでプレイしていたとは考えにくくはあります(プレイヤーの好みによる)。
アナログ停波以降の時代である2010年以降の現代では、もうテレビ番組の受像でもブラウン管は一切用いられていないので、もはや現代のコンテンツ制作では特に考える必要はありません。
ブラウン管自体のドットの縦横が違っている。
このため、ブラウン管を前提にしたゲーム機やパソコンはそれに対応するために画像データ側のドットの縦横比が違っている。
ゲーム機やパソコンの種類、さらにはアーケードゲームの基盤といったハードウェアの種類ごとに、コンピュータ側でのドットの縦横比の管理は違っている(らしい)。このため、移植のたびに、ドットは書き直しになったようだ。
古いゲームの制作では「ドット用紙」という方眼紙のような印刷書面がある(らしい)のだが、そのドット用紙の時点で1マスの縦横比が少しだけ違い、1マスが長方形である。1ドットだけでは長方形であるのに気付かないかもしれないが、しかし「ちりも積れば山になる」ように、何十や百ドットも積み重なれば、縦横の長さは大きく違ってくる。
現在のパソコン用のドットエディタ(という画像制作ツールがある)は1ドットが正方形であるが、しかしファミコン時代は1ドットが(ドット用紙の時点で)少しだけ長方形である。(なお、画像制作ツールそのものの作り方については、『[[ゲームプログラミング/画像ファイルの作成プログラム]]』で説明する。ゲーム制作では普通は必要ないが、知識として。)
ファミコンの色数制限は52色から4色×4パレット(1パレットあたり4色)を使えると言われている<ref>[https://mynavi-creator.jp/blog/article/history-of-2dcg-designer
『2DCGデザイナーなら知っておきたい2DCGゲームの歴史』 2017/8/21 マイナビクリエイター編集部 ] 2021年12月30日に確認. </ref>。しかし実際には、4色のうち1色は透明色として利用される色であり、全パレット共通の色である(なので3×4=12色になることのいなる)。スプライトのパレットとは別に背景のパレットがあるので実際には、もっと16色以上の多くの色数が一画面内で使えるが、しかしその他のさまざまな制限があるので、合計で一画面内で25色が使えると言われる(12 × 2+1 = 25)。
しかし実際には、ブラウン管の滲み(にじみ)を利用しているので、当時のプレイヤーには1パレットだけで描かれた1キャラのキャラチップ内でも3色以上の多くの色が見えているだろうし、画面全体でも25色内にない色がプレイヤーの目には映っていることになるし、もしかしたら52色にない色がプレイヤーには見えているかもしれない。なお、スーパーファミコンの色数制限は32,768色から16色8パレットであると言われている。
レトロなゲーム機では、さらにメモリ容量やストレージ容量などの制限もあり、けっして仕様上の最大色数を気軽に利用できたわけではないだろう。こういう制限もあったからか、ネットではファミコンの色数が「4色」やら「8色」、スーパーファミコンの色数が「16色」や「256色」などとも言われることもある。
{{コラム|「ドット絵」とは|
よく世間には、ファミコン時代のゲームの、ゲーム中での絵柄のことを「ドット絵」という人がいます。プレステ1やセガサターンのポリゴンによって、「ドット絵」が無くなったと思っている人もいます。
しかし現実には、プレステ以降でも、顔ウィンドウの顔グラフィクや、キャラチップなどのグラフィックでは、その制作時にドット単位のグラフィック指定は行われています。
たとえば装備品で武器の横に小さい剣の絵などのアイコン画像が書かれている作品などもありますが、こういったアイコン画像もドット単位の指定で描くでしょう。
こう指摘すると、「プレステ1以降のゲームは解像度が高い」とかよくわからない反論をする人がいますが、しかし「ドット」という工学用語のどこにも、「解像度が低い」とかの意味はありません。また、「ドット」というのをブラウン管ディスプレイの映像だと思ってる人もいます。
しかし、液晶ノートパソコンの普及した2001年以降の液晶モニターの時代ですら、
「液晶のドット欠け」などのように「ドット」という用語は使われます。
「ドット」というのは、けっしてゲーム用語ではなく、「液晶のドット欠け」のように電子工学などですでに意味が決まっているので、ゲームオタクの戯言(ざれごと)は「ドット」の意味には無関係です。
さて、プレステ1以降のゲームでもキャラチップなどでは、ドット単位の指定が行われるのでした。
それどころか、携帯ゲームソフトでは、ガラケーの時代から既にドット単位の指定は現役の手法であり、スマホゲーム時代の現代でも現役です。
だから「ドット絵には魅力がある」とかいって、ファミコン時代のゲームばかりあげる人は、こういう現役のドット絵作家の努力が目に入らない人ですので、なるべく信用しないほうが良いと思います。
また、画像編集のフリーソフトまたはシェアウェアで、現代でも「ドット エディタ」と呼ばれる種類の画像制作ソフトがあり、少なくとも2D同人ゲームの制作ではよく使われます。
ツクールやウディタのドット絵を作る場合でも、ドットエディタを使って作るわけです。
ゲームに興味なさそうな人が「ドット絵」をレトロゲームの絵という意味で使うのは仕方ないかもしれませんが、しかしゲーム通みたいな顔して「俺ってけっこうオタクなんだぜ」みたいなフリしてるのに、レトロ的な用法で「ドット」という言葉を使う人はアレです。
おそらく、本当はけっしてドット絵が好きなんじゃなくって、単に自分の子供時代の思い出が好きなだけだと思います。
ニュアンスは違いますが、アニメ評論でもそういう話があります。1990年代後半に岡田斗司夫と誰かの対談で(おそらく書籍『マジメな話』での対談)、
「アニメの黄金期はいつか?」というよくあるアニメオタク談義について、
対談相手が言うには、
よく「70年代だ」「いや80年代だ」とかで議論が始まるが「いや12歳だ」というオチが有名だと。
}}
=== アナログテレビの焼きつきなど ===
あまりゲーム評論では指摘されないのですが、
このほか、ファミコン時代はテレビ受像機がアナログのブラウン管ディスプレイなので、
あまり長時間、同じ色をディスプレイ上の同じ位置に表示し付けていると焼きつきが起きる可能性があるので、
ステージごとにコンセプトになる背景色を変えたり、
あるいはステージの背景色を黒にしたステージを増やしたりとかの工夫も、必要だったかもしれません。
ゲームではないですがパソコンソフトなどの古いソフトは、こういったディスプレイの焼きつきの事を考えており、だからスクリーンセーバー機能の搭載など何らかの対策をしています。
ともかく、あまり、特定の色ばかり続けて使いすぎないようにする工夫が必要だったでしょう。
アナログテレビは西暦2010年のアナログ停波する時代まで使われていたので、焼きつき問題はファミコン以降のプレステ1~2時代のゲームにも関係するでしょう。
ネット上にはデマで「ブラウン管だと焼きつきが起きない」(×)というデマがあるが、しかし西暦2001年くらいの筐体パソコンのモニターはまだブラウン管が多かったし、その時代からすでに焼きつき防止のためにスクリーンセーバーがWindowsに搭載されていた。だからデマ「ブラウン管だと焼きつきが起きない」(×)にダマされないように。
なお、現代のテレビ受像機には、焼きつき防止のためにすでに「ピクセルシフト」という機能があって、
これは画面上の映像の表示位置をタイミングによって微妙にズラす機能です。こういう機能がすでに搭載されているので、わざわざゲームソフト側で実装する必要はない。そもそも液晶モニターは、焼きつきが起きにくい。ただし有機ELはどうだか、まだ新しい技術なので分からない。
== 脚注 ==
<references />
== 関連項目 ==
* [[ゲームプログラミング/コンピュータゲームの種類]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
* [[プログラミング]]
* [[w:ゲームプログミング]]
{{DEFAULTSORT:けえむふろくらみんく}}
[[Category:ゲーム]]
[[Category:情報技術]]
{{NDC|007.64}}
qjlcg4tihxmv343jgrlhcge8lz8ed4a
205981
205957
2022-07-29T11:11:58Z
Honooo
14373
/*昔のコンピューターゲームと技術の発達、変遷*/ 前文のみ修正。1/6。
wikitext
text/x-wiki
<div class="pathnavbox">
* {{Pathnav|ゲーム}}
* {{Pathnav|工学|情報技術|プログラミング}}
</div>
== 概観 ==
このWiki参考書では、コンピュータを用いた[[w:ゲーム]]のプログラミングを扱います。つまり、いわゆる「テレビゲーム」や、[[w:コンピュータゲーム|コンピュータゲーム]]に関する記述についてです。
ここでは家庭用のパーソナルコンピュータで扱える範囲の事柄、それらのゲームソフトをつくるためのプログラミングについて議論します。必要に応じて家庭用ゲーム機の話題にも触れますが、あくまで派生的なものです。本書はプログラミングの教材であるので、大多数の読者が最初にプログラミングで触れるであろうパーソナルコンピュータでのプログラミングを、特にことわらないかぎりは想定しています。
用語に関して、コンピューターゲームの世界独自なものもあるでしょうから、適宜『[[ゲームプログラミング/コンピュータゲームの種類]]』などを参照してください。
== 本書の目的 ==
この教科書『ゲームプログラミング』の目的は、題名にもあるとおり、プログラミングによってゲームを作るための技術の参考資料を目的としています。
ゲームクリエイターやゲームデザイナー(絵描きではなくゲームの設計者のこと)のためではなく、プログラマーのための教科書です。
したがって本書では、ゲームとは関係の少ない一般IT企業での仕事のしかたについての記述もあれば、製造業系の組込ソフトなどに関する概要的な記述もあります。
なぜなら本書はゲームクリエイターではなく、たまたま何らかの理由でゲームを作っているプログラマーのための教科書だからです。たとえゲーム会社を退職しても、他の一般IT企業に転職してもプログラマーとして応用できることなども目指して本書は書かれています。
従って、紹介する話題が、かなりIT系、テクノロジー系の話題に片寄っています。本書で紹介するクリエイター論やデザイン論は、派生的なものにすぎません。
;本書を扱う上での注意点
特にことわりのないかぎり、本書ではC言語でのプログラミングによってゲームを作りたい読書を念頭に説明しています。
だから、ゲームの生産効率性を無視してでも、本来ならRPGツクールのような開発ツールを使ったほうが早いシンプルなゲームの場合ですら、本書ではC言語または他のプログラミング言語での開発にこだわった方法を説明している場合もあります。
;その他、本書について
このページとそのサブページだけを見ていると本書は「ゲームクリエイトの教科書かな?」と捉えられるかもしれませんが、
しかしこのページとは別に本wikibooksには「[[プログラミング]]」というページがあり、そこではC言語やJavaなど代表的なプログラム言語のwiki教科書にリンクしています。ゲーム限定の話題ではないですが、プログラミングのコードについても、そちら『[[C言語]]』や『[[Java]]』やなどの教科書のほうが(実際に動作するコードの量が)充実しています。また、Visual C++ での画面出力については『[[Windows API]]』に入門的な説明があります。
本書『ゲームプログラミング』はそういったプログラミング教科書一覧の一部でもあります。C言語やWindows API の教科書では、これをどうやってゲームのプログラミングに応用すればいいか説明できないので(本wiki『[[C言語]]』はけっしてゲーム目的のページではないので)、ゲームの実際としてプログラミングの話題を切り離すために本書『ゲームプログラミング』は存在しています。
なので本書にゲームデザイン論やクリエイター論などの内容の充実は期待できません。
本書『ゲームプログラミング』は現状、プログラマー目的以外には対応できないかもしれません。もしプログラマー目的以外の無料のwiki教科書が欲しい方は、現状では、自分で本wikiに加筆するか、あるいは本書『ゲームプログラミング』とは別に新規Wiki執筆を検討していただきたい。
== ゲームを作りたいな、よし、ゲームを作ろう。でも… ==
===しかし自分の本当の目的ってゲーム作り?===
「ゲームを作りたい」と思ったのなら、まずはあまり細かい難しいことは考えず、実際に作り始めてみるのが一番いいと思います。もちろんプログラミングについてほとんど何も知らないのなら、ある程度の勉強は必要ですが、ある程度の知識があるのなら、プログラミングの技量や知識の充実を気にするよりは、実際にゲームの完成を目指してプログラムを書いてみるのが一番いいようですよ。その過程でプログラミングの学習や経験は積んでいけますしね。JavaScriptやPython、無料でプログラミングに取り組める環境も、今現在では充実しています。
しかし、ゲームをプレイするのが好きだからと言って、ゲームを作る、までが本当に自分が好きかどうか、試しに少し作ってみたら、少し考えてみるといいですね。
例えば読者の中には、「私はRPGがすき」という人も多いでしょう。
RPG が好きという事はおそらく、よくRPGの題材になる西洋ファンタジーのストーリーや世界も好きという場合が多いでしょう。そして一方で現実のコンピューターRPGで魅力的に提供される、イラストや音楽が好きという場合もあります。
実際のゲーム業界の人々も、ゲームを彩るイラストレーションや音楽がいかに重要な要素かを語っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P85</ref>。
さて、ここで問題なのですが、「ゲームを作りたい」と貴方が思っていたとして、あなたが本当に作りたいのはゲームなのか?あるいは本当はイラストが描きたかったり、音楽を作りたいのではないか?
…というのは、ゲームというのは総合的な分野ですから、イラストや音楽はその要素として確実にありますが、それ以外、プログラミングやシナリオなど、様々な創作や創造が必要で、全ての作業量はかなり多いものになるでしょう。
そしてゲーム、コンピューターゲームにはゲーム独自の世界観があって、現実や小説や映画とは違う、独特の法則に支配された世界を作る必要があります。ある意味リアリティを持たない、リアリティから外れた世界です。だから、小説のようなリアリティにこだわるなら、ゲームは不向きかもしれません。
ゲーム作り始めの時点では、これらの判断は明確でなくても勉強目的でも構いませんが、しかその内「自分は本当にゲームを作りたいのか? Yes or no?」という疑問への答えが必要になるときがくるかもしれません。
試しにゲームを作ってみて、もし自分の本当の目的がゲームでないと分かったなら、それ以外の活動に移るのも、取る道の選択肢でしょう。
;給料は安い
職業として、商売としてゲームを作る場合、ゲームプログラマーの給料は洋の東西を問わず、安い事が知られており、書籍などでも言及されています。たとえば『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』(ジョン・ソンメズ 著)という欧米人のプログラマーの書いた本には、アメリカのゲーム業界ですらハードワークの割に賃金が低い事が記載されており、もし給料の高い仕事につきたいならウォールストリート(※米国の金融ウォール街のこと)のための仕事をするべきだと書籍中で指摘しています。
日本でも同様にゲーム業界の報酬が低いことは知られており、多くのゲーム会社の伝記漫画でも、よく語られています。
アニメーション業界と比べたら、ゲーム業界のほうが報酬が高いことは事実かもしれませんが、これは実は恐ろしいことに、アニメーション業界の報酬が異常に低いだけで、アニメーション業界よりはましだけど、結局は…というのが現状でしょう。
=== 同人ゲーム以外の発表の場 ===
2001年ごろの日本はネットを活用した同人ゲーム黎明期、フリーゲーム黎明期で、実験的な時代でもあり、多くのイラスト愛好、創作者や音楽創作者がゲーム制作に手を染めていたようです。この頃、まだイラスト投稿サイトや小説投稿サイトといったものは無かったか、あったとしても小規模でマイナーなものでした。
しかし2010年のあたりから各種の投稿サイトが普及したことにより状況は変わり、むしろ現在では、小説やイラストを発表したい人はそのジャンルの投稿サイトに直接アクセスしたほうが早く、そのためゲームを通して発表するのは人によっては廻り道かもしれません。
それをわかったうえで、それでもゲーム制作に身を投じるかを考えた上で、「よし、自分はゲーム制作をしよう」と思えるなら、ゲーム制作をするのが良いでしょう。
実際、今現在の作曲家やイラストレーターは、ゲームに関わったとしても、専門家として楽曲やイラストを提供するという立場に過ぎない場合もあり、自分自身が主体になってゲーム制作をする人は、プロアマ問わず少数派のように見えます。
同人ゲームの世界でも現在は(2021年頃に記述)、プログラマー系の作者が圧倒的に多い様です。
しかし、専門外の人だからこそ、メディアミックス的な意外な視点で新しいものが作れる可能性もあるかもしれません。コピーライター、作家の糸井重里が、マザー2の企画にたずさわった例もあります。しかし、あくまで「可能性」であり、成功はけっして保証されてはいないので、読者の自己責任でお願いします。
今現在のゲーム専門学校のカリキュラムはプログラミングが主体です。CGの授業は、週に2時間程の様。一方でゲームCG、或いは、一般CGに特化した学科もある様です。
あるWikibooks編集者Aは、もしイラストを描きたいなら、イラストの世界で描くのが安全、と考えています。ゲームプログラミングについては、プログラムを書ける人は絵コンテも描けそうだし、基本的にある程度の作図的なイラストを描ける人は多いだろうから、別にプログラミングに専念しろとは思っていません。
さて、読者がゲーム制作を職業として目指すのかどうかはともかく、とりあえず、ゲーム業界の状況を知っておくのが有用でしょう。
結局商業界の状況が権威をもってその分野を支配しているのがこの社会の基本なので、趣味でも職業でも、業界周辺のことを知っておくのは得ることが多いはずです。
文献『レベルデザイン徹底指南書』では、現実世界で自分が新しいスキルを1つ覚えたら、古いスキル1つはどれか忘れる必要があることを説いています<ref>大久保磨『レベルデザイン徹底指南書』、2016年12月14日 初版 第1刷発行、P81</ref>。著者は、最初はグラフィッカーでしたが、しかしプランナーに転職したので、グラフィック関係の技能は仕事では「忘れて」しまった、という内容を述べています。ただし、比喩的に「忘れる」とは言っていますが、実際には忘却し無くなってしまったわけではなく、仕事では時間の都合により両立できないので、グラフィック関係の技能は例え話で「忘れた」、のであり、現実にはグラフィッカー時代に培った観察眼をプランナー時代の現在でも活用している、と、書籍中では述べられています。
このことは職業、あるいは技能とは一般的にそういうもの、と考えることができるでしょう。
{{コラム|漫画家大塚志郎のアドバイス|
同人ゲーム界では、ゲーム制作と、イラストまたは作曲などを一人で兼ねている作者も、ある程度は居ます。一方ネットの世界には様々な簡単に利用できるフリー素材もあるので、イラスト作画や作曲をしなくてもゲーム制作は可能ですよね。
一人でイラスト作画や作曲をしながらゲーム制作をするのはある意味マルチタレントだとも言えますが、現実にその創作をしている人たちは、かなり年長のこの分野の熟練者が多いようです。若い19歳ぐらいの頃に、それらマルチジャンルを両立するのは、一般にかなり困難なことだと思われます。
漫画家の大塚志郎は、漫画家を漫画創作の手本にするならデビュー時代を手本にするのが良い、と、漫画家向けの技法の教育漫画で語っています。
大塚は、漫画家の人生のうちで、これからデビューを目指している新人に近い境遇にあるのは、ヒット後の漫画家の生活状況ではなく、まだ無名・マイナーな時代の態度・生活だ、と描いています。成功後の熟練した漫画家より、若いデビュー直後の作家をお手本にするのがいいだろう、という主張ですよね。
さて、それでもデビュー時代から複数ジャンルの同人活動を均等に兼業する意思が硬いなら、それはそれでひとつの考え方ですが、上述のリスクを知っておく必要があるでしょう。
}}
===ゲーム業界は産業のエンジン役?===
かつてはゲーム産業が、日本のIT産業やデジタル家電産業の中心的・牽引(けんいん)役であった時代がありました。しかし、2010年以降、この考えは当てはまらなくなっています。
PlayStation2あたりまでの時代は、経済評論誌の未来予想でも、「もしかしたら今後、家庭用の据え置きゲーム機がパソコンの代替品として、家庭のリビング家電の標準品になるかもしれない」という予想があった。ゲーム産業がそのような牽引役として、経済界から期待されていました。ソニーが国産CPUをプレステ2〜3に搭載したり、WindwosのマイクロソフトがXBOXでゲーム機に参入したり、そういう時代です。
しかし2020年代の今は違います。結局、2020年代のゲーム機に使われてる技術や部品は、パソコン用の部品や技術の流用、ゲーム機のCPUも、今やインテルなどのパソコン用CPUをゲーム機でも使っています。
もはや現代は、ゲーム業界は、産業のエンジンではないようです。
ですから今現在、新しい技術に興味ある人は、ゲームにこだわらず、直接的にその技術を勉強し改良したほうが近道です。
たとえば、インターネット技術を使って何か新しい事をしたいなら、ゲームを作るよりもwebアプリやサーバーwebサービスを作るべきだし、目的のネットワーク用ソフトウェアをそのまま制作したほうが早いし確実です。
古い経済知識の先入観にとらわれず、無理にゲーム制作にこだわらないほうが、自分自身の技能やキャリアも開けていくでしょう。
2010年に出版された商学書籍『メイド・イン・ジャパンは終わるのか』には、「しかしながら、ファミリーコンピュータで世界に攻勢をかけ、その後圧倒的な強さを誇っていた日本の家庭用ゲーム産業も、90年代末からはその競争力にかげりがみえはじめた。日本の国内市場は伸び悩み、成長率は鈍化傾向にある(図表7-3)。」とあります<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.263</ref>。
その「図表7-3」の統計値によると、
:ファミコン発売の1993年には2268億円、
:スーファミ発売の1990年には2430億円、
:プレステ1発売の1994年には3882億円、
:1995年には急成長して4769億円、
:1997年には4795億円で、ほぼこの頃がピークであり、
:2000年には3768億円にまで低下(プレステ2の発売年)、
:2005年には3151億円まで低下(XBOXの発売年)、
である。(青島らが『レジャー白書』、『情報メディア白書』、『月刊トイジャーナル』、『CESAゲーム白書』などをもとに作成した図表の統計値です。)
<!-- ところで前編集者Sさん,これって正確には何の数字,金額なの?それを後で書き足しておいてほしいんだけど…。あれかな?一年のこの国のゲーム産業の売上高? -->
また、2010年の時点の商学研究では、1997年を境に、ゲームソフト市場で競争する企業数が増加傾向から減少傾向に転じた<ref name="m289">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.289</ref>、とも言われています。
書籍『メイド・イン・ジャパンは終わるのか』にも、引用文「家庭用ゲームは日本がその本格的立ち上げを主導し」<ref name="m91">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.91 </ref>と書かれているぐらいで、1990年代は日本のインパクトが強かったようです。
なお、携帯電話の分野で、日本は国際的な地位を喪失したのに対し、デジタルカメラとゲームは「現代」(参考文献の著作時2010年ごろ)でも日本が主要な地位にある<ref name="m91" />。
{{コラム|ゲームが産業の牽引役だと語った人物|
1998年頃、アニメ評論家の岡田斗司夫が、未来予想の一貫として、「これからゲーム機が、(パソコンではなく)家電の中枢になるだろう」というような内容の未来予想をしていました。たしか、岡田の著書『東大オタキングゼミ』(自由国民社、1998年)で、このような未来予想が読めます。岡田の東大での講義を加筆修正してまとめた書籍なので、実際の講義はその数年前に行われていたのだろうと思います。
岡田の東大での講義は東大生のその後の進路、官僚や大企業のビジネスマン達に大きな影響を与えただろうし、若手新進評論家として、この国の政治・経済人達も、その言論を参考にしただろう。
実際、2008年(リーマンショックあたり)くらいまでの日本の家電業界の投資は、ソニーがゲーム機のCPUを作ったりと、岡田の予想を参考にしているような面もありました。
ですが実際の2001年以降の家電業界の結果は予想とは少し外れました。まず
:* そもそも、冷蔵庫もエアコンも全然デジタル化(IoT化)されず、家電のほとんどが外部からのコンピュータ制御を必要としない状況。
:* 個々人が持ち歩いているデジタル家電は、携帯ゲーム機ではなくスマホになった。
:* パソコンは多くの家庭にいまだにインターネット用端末などとして残り続けている。
一方岡田は東大オタキングゼミで、98年当時の時点で任天堂が莫大な現金資産(たしか数千億円ほど)を持っていることに注目しています。
一般の大企業は、現金ではなく株券や不動産などの形で資産を蓄えています。しかし任天堂は、銀行口座の現金だけで数千億円という、非常に資金力の高い企業でした。今や日本を代表する世界的なゲーム大企業になっています。
また、日本だけでなくマイクロソフトのXBOXなど、実際に欧米の企業も昔はコンピュータゲームが産業の牽引役だと思って、先をこぞってゲーム機に参入していたわけでもある。岡田の未来予想は、決して根拠の無いものではなかったのです。
}}
{{コラム|読書について|
ゲーム業界と関連のない文献も、この教科書では出典として書かれていますが、これはこの頁の主要執筆者Sが、多量の市販本を読む以外に知的活動の方法を知らないことと、自分自身の文章の権威と信頼性を、著名人の威を借りて確立したいからでしょう。
ゲーム業界を志望するなら、ゲーム業界人の書いた本は少なくとも何冊かは読んでおくといいでしょう。
ネット上では、業界人ではないのにもっともらしく書かれた文章も多いですし、おそらく本Wikiの執筆者にも本格的なゲーム業界関係者は一人もいないでしょう。
業界人達のSNS発言ではなく、現代では書籍があるので、実際に書籍を手に入れて読むのがいいですね。書店で販売される書籍というのは、けっして著者だけの意見でなく、編集者や校正者、周辺の職業人達が査読をして、内容の信憑性を確認しています。
<!-- ニュース解説者の池上彰(いけがみ あきら)が、たしか2011年くらいのテレビ番組で言っていたことだと、編集者Sは言っている。 -->
何十冊も本を読むよりはプログラミングを書く実践のほうが重要でしょう。
『ゲームデザイン プロフェッショナル』著者であるFGOクリエイターも、ゲーム開発の書籍は読んでおくべきだと忠告しています<ref>『ゲームデザイン プロフェッショナル』、P234</ref>。また、ゲームデザイン本で学んだ知識は、ゲーム業界以外でも仕事術として活用できます。たとえば上司への業務報告の報告・連絡・相談(ホウ・レン・ソウ)などの考え方は、ゲーム業界でなくても活用できます<ref>『ゲームデザイン プロフェッショナル』、P332</ref>。
いっぽう、もし最新IT技術を勉強したいなら、読むべきは、ゲーム制作の解説本ではなく、そのIT技術の解説本など、そのものの書籍を読むほうが近道でしょう。
}}
===ゲームプログラミングは面白い。しかし、そんな楽な事ではない。===
ここでいう「プログラミング」とは、C言語などのプログラム言語による開発のことです。RPGツクールなど開発ツールによるゲーム制作の話は原則していません(本書『ゲームプログラミング』はあくまでプログラミングのための教科書です)。
さて、よくネットや、あるいは日常でも(C言語などによる)「ゲームプログラミングは簡単だよ。イラストやシナリオのほうが難しい。」、などという人がいますが、この発言の心は、「俺はプログラミングもイラストもシナリオも出来る凄い男だぜ。しかもプログラミングなんて簡単だし、むしろクリエイティブなイラストやシナリオの方に精力を費やす偉い奴だぜ^^」という、世間に良くいる武勇伝、自慢を語りたがる、インチキ親父が吹かしているだけなので、あまり真面目に取り合わないのが正解だと思います。
まず第一に、不当にプログラミングの価値を貶めている言説ですよね。
Visual C++またはVC# 、あるいは Direct Xなどを使ってプログラミングすることは、そんなに簡単なことではないでしょう。
ゲームプログラミングの入門書などには、初心者でも理解できそうな比較的簡単ないくつかのサンプルコードがありますが、それは初心者でも簡単に書けそうな技術だけを抜粋してるという、あくまで例外です。
RPGならたとえば、ドラクエ3のような戦争画面の行動順を処理するソート機能をつくるだけでも一苦労ですし、ほかにも道具・アイテムなどの自動整理をはじめとする標準機能を作るだけでも一苦労です。
決して上手い人のサンプルコードをコピーアンドペーストをして終わりという訳にはいかず(そもそも現状そのようなサンプルコードがネット上に無いですが)、もし仮にサンプルコードがネットに公開されていても、自作品に組み込む際にさらにそれをデバッグ(決してテストプレイの意味ではなく、実際にコード修正が必要になります)しなければならず、プログラミング言語の理解が必要です。
ゲームのプログラミングは決して楽ではないし、仮にもし楽だとしたら、じゃあゲーム会社のプログラマー職の人の仕事は何なんだ・・・という疑問につながりますよね(デマを言ってる人は、この疑問を脳内に都合よく無視しますが)。
ツクールやエディタのような制作ツールを使えば、C言語的なプログラミングは不要ですが、それはそのツクールなどのツールを開発している人達にプログラミングを肩代わりしてもらっているだけなので、決して「ゲームプログラミングが楽」、ではないでしょう。楽だというなら、じゃあツクール開発元の角川書店およびその発注先ソフトメーカーのプログラミングが楽だとでも言うのか・・・(デマを言ってる人はこの疑問を無視します)。
そもそもコンピューターゲームというのはプログラミングがなければ成立しないのですから、そのプログラミングの価値を貶めて平気な人は、コンピューターゲームにかかわる資格はないでしょう。
== ゲーム制作に関する留意点 ==
=== IT的な留意点 ===
====プログラミングなしでも同人ゲームを作れる====
自分でゲームを作る際、必ずしも、C言語などプログラム言語で記述する必要はありません。
プログラミングをせずに、ほぼマウス操作と会話メッセージなどの文章のキーボード入力だけでゲーム開発をできるようにするソフトウェアが、有料または無料で発表されています。
たとえば、RPGを作りたいなら、日本で発表されているソフトでは、『[[w:RPGツクール]]』や『[[w:WOLF RPGエディター]]』などのように、RPG製作に特化された開発ソフトがあり、大幅に開発の手間を減らせます。なお、『RPGツクール』は有料製品です。『WOLF RPGエディター』は無料ソフトです。
アクションゲームを作りたいなら、『[[w:アクションゲームツクール]]』があります。これらツクール製品は有料製品です。(なお、かつて『[[w: 2D格闘ツクール2nd.]]』というのがありましたが、しかし現在ではサポート切れのため、今現在の市販の十字キーコントローラーが初期設定では動かない、一部のボタンしか使えないなど問題点があります。)
また、ノベルゲームを作りたいなら、フリーソフトの『[[w:吉里吉里Z]]』などがあります。吉里吉里Zはソースコードが公開されており、オープンソースになっています。
:なお、とりあえず「ゲーム開発ツール」と呼びましたが、じつは呼び方は特に決まってはいません。「ゲーム制作ツール」と呼ぶ場合もあります。ゲーム開発ツールのことを「ゲームエンジン」と言う場合もありますが、開発ツール以外のゲーム用ランタイムのことも「ゲームエンジン」という場合があります。
:本Wikibooksでは、とりあえず、ツクールや吉里吉里シリーズやウディタ(WOLF RPGエディター)などのソフトの呼び方は、まとめて「ゲーム開発ツール」または「ゲーム開発ソフト」と呼ぶことにします。
C言語などによるプログラムは、上記のゲーム開発ツールを使わない場合の選択肢になるでしょう。
既存のゲーム開発ツールの仕様に不満を感じる場合に、「じゃあ自分でプログラムして作ろう」となり、プログラミングが必要になるわけです。
なお、上記の開発ツールはほとんどがWindows用のソフトです。MacやLinuxでは動きません。MacやLinuxで動作するゲームを作りたい場合は、別のソフトウエアを使う必要があります。
既存のゲーム開発ソフトを使わずにプログラムを組んでゲームを自作する場合、必ずしも既存のツールのような、ゲーム作品と開発ツールが分離された仕組みを再現する必要はありません。
一般的に初心者が、ゲーム開発ツールを作ることはほぼ不可能です。初心者は開発ツールを作ることは考えずに、まず1本、とりあえずゲーム自体を完成させてみましょう。開発ツールを自作したいのなら、まず先にゲーム1本を完成させたあとに、あとから開発ツールとゲーム作品の分離などに取り掛かるのが推奨です。
==== 商業ゲームの開発言語 ====
基本的に、現代の商業ゲームは、C言語で開発をする。
ただし、ファミコンの古いゲームは、アセンブラで開発されていた。ファミリーコンピューターからスーパーファミコンに至るまで、OSは搭載されていない<ref name="m289" />。
ではいつからC言語がゲーム開発に使われるようになったかというと、商学の学説では、プレイステーション(※ おそらくプレステ1?)の頃からだろう、と考えられている<ref name="m289" />。ただしこの時代でも、処理速度の高速化のためにアセンブラにアクセスする開発チームも少なくなかった<ref name="m289" />。
また、プレイステーションのOSは独自仕様である<ref name="m289" />。
カプコンなど一部の企業は、OSによる開発ではなく、移植性を高めるために自社製の内製フレームワークを用いて開発する。カプコンの場合、2010年頃は「MTフレームワーク」という自社製フレームワークを用いて開発を行っていた<ref name="m289" />。
{{コラム|ゲーム用のメーカー独自プログラミング言語について|
ゲーム開発ソフトには、ゲーム開発用の独自のプログラミング言語を持っている場合があります。このような機能の実現方法は、原理的には、ファイル入出力の関数を使い、テキストファイルの文字列を読み取って、文ごとにプログラム動作を設定・実行している、と、考えられます。インタプリタは、このような方法で作られています。
ゲーム製作ソフトでの独自のプログラミング言語はたいてい、コンパイル作業を必要としないので、おそらくインタプリタ方式でしょう。
基本的にWindowsの場合、実行ファイルに変換するには、Visual Studio というマイクロソフト社の配布している開発環境が必要です。
Visual Studio が開発環境を提供していない独自言語は、たいてい、インタプリタ方式となると思われます。
コンパイラ方式に比べて、インタプリタは処理速度が不利なので、適用できるジャンルや用途が限られます。たとえば3Dアクションゲームには、インタプリタ方式は不向きでしょう。
これらの独自言語を使うにしても、自分自身で独自言語を作りたいと思うとしても、この教本ではまず、既存のプログラミング言語を使ってゲーム制作を開始することを推奨します。
}}
====ゲームのプログラム言語の歴史====
ゲームを書くために利用される言語は多岐にわたっています。歴史的にはゲーム業界でも、[[C言語]]や、特に計算機のスピードが重要になる場面では[[w:アセンブリ言語|アセンブラ]]を利用してプログラミングを行うことが普通に行われていました。<!-- (文献)→-->そのため、ゲームプログラミングは通常のプログラミングと違った技能が必要であるように思われていました。
現在では計算機がある程度速くなったことや、ゲームプログラムの開発を複数人で行うことでテクニカルなプログラミングが避けられるようになったことにより、ゲームプログラミングは他の一般のプログラミングと同じような課題だと見なされています。
しかし、特にアクションゲームなどのリアルタイムでの画面書き換えが必要なゲームで、プログラムのスピードが重視されることは変わっていません。また、コンピュータの性能があがるにつれ、それらの性能を全て引き出すように表現手段が変化してきたため([[w:3次元コンピュータグラフィックス|3D]]、[[w:ポリゴン|ポリゴン]]などを参照)、状況によっては複雑で特殊なプログラミングが必要になることもあります。
===== 初心者が使えるプログラミング言語 =====
ゲーム開発において、一般にゲームショップなどで流通している商業ゲーム作品において、現在よく利用されているプログラミング言語として、[[C言語]]、[[CPlusPlus|C++]]、[[Java]]があげられます。
Windowsの3DエンジンのDirectXは、主にC++を想定しています。なので負荷の高いアクションゲームを作りたい場合、Visual C++での開発が安全でしょう。
しかし、ネット上のフリーゲームでは、C++以外の言語が使われることも、よくあります。
さいきんゲームエンジンとして有名なUnityは、言語としてはC#の文法を採用しています。
[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
市販の書籍では、Pythonによるゲーム開発を紹介した出版物もあります。ただし Python は原理的にインタプリタ方式であるために処理速度がC++に劣り、アクションゲームなど負荷の高いゲームを作る事を目指している場合は、将来的にはPythonからC++への装備変更が必要になるかもしれません。
===== ゲームに適さない(だろう)言語 =====
;Flash関係
例えば、かつて Adobe の Flash が、ブラウザで動かせるゲームを作る際に、よく使われていました。このようなwebブラウザ上で動くゲームのことを一般に、「ブラウザゲーム」と言います。ただし、現在ではFlashは廃止の方向です、すでにほぼ廃止されているといっていいでしょう。また、現状では、ローカルPC環境でのゲームをJavaScriptで作るのは、アマチュア段階では困難です。JavaScriptのアマチュアゲームと言う事例を聞きません。
;JavaScript
なお、JavaScript はクロスプラットフォームですが、しかし、セキュリティ上の理由などから、いくつかの機能(たとえばファイル入出力)がwebブラウザ上では使えないようになっており、そのため、JavaScript だけでゲームを作るのは、初歩的なゲームを除くと、かなり困難です。(おそらく、オンラインゲームでは、サーバー側でPHPやサーバサイドJavaScriptなどの別プログラムが走っていると思われます。)
セーブ機能の必要なゲームを作る場合は、JavaScriptでの開発は選択肢にない(セーブの実装には、JavaScript国際規格にはない非標準仕様を使いこなす必要があり、かなりの技術力を要するでしょう)。
=====ブラウザゲームの初歩的な原理=====
商品として流通するようなゲームや、高度な機能を持つブラウザゲームを作ることはとても難しく、このページでは手に負えません。そこで、このページでは、初心者が練習用につくるゲームを例に記述します。
webブラウザだけで動くのがブラウザゲームです。ブラウザゲームを作るのに使う言語の第一選択肢はJavaScriptです。サーバー側の処理が必要ならPHP,Python,Perl,Javaなどの言語の出番でしょう。
「ネットワークゲーム」は「ブラウザゲーム」とは意味が違います。
「ブラウザゲーム」は、パソコンにwebブラウザさえあれば、ネットワークに接続していなくてもゲームプレイできて、最後、クリアまでプレイできる作品もあります。
しかしネットゲームは、ネットワークに接続しないと、ゲームを開始することさえ不可能です。つまり、サーバの提供するゲームが「ネットワークゲーム」「ネトゲ」です。
もしPHPやPerlなどでゲームを作る場合、普通はネットゲームになる筈なので、作者がサーバを構築して提供する必要がありますし、プレイヤーにはゲーム中にサーバに接続する環境が必要になります。提供者は、サーバを用意したり、保守管理する必要がありますよね。サーバーがダウンしてしまうと、プレイヤーがゲームをできなくなります。
「PHP ゲーム」などの単語でネット検索したり、あるいは書店でプログラム言語の書籍や解説サイトを見ると、ときどきPHP・Perlなどの言語でゲーム開発しているものもありますが、一般的なダウンロード型のゲームとは違う筈なので、気をつけてください。
{{コラム|ソケット通信、ほか|
コンピュータプログラムからインターネットに通信するには、いくつかの方法がある。
C言語の場合はOSの提供するソケット通信といわれる機能を使う方法、
JavaScriptにあるHTTP通信の機能を使う方法、
などがあるだろう。
ただし、JavaScriptでゲームを制作するのは、セキュリティ上の制約などからセーブロードが標準的方法では困難など、とても制作が難しい。
よって本セクションでは、C言語にソケット通信を組み込むことの概要を説明する。
ゲーム制作初心者がソケット通信までする必要はないが、将来的には知る必要があるかもしれない。
本wikiではWindowsの場合については 教科書『[[WinSock]]』、
macやLinux / Unix や BSD の場合は 教科書『[[Unixソケットプログラミング]]』 で説明している。
Windowsとそれ以外のOSとで、ソケット通信の仕様が微妙に異なる。
ソケット通信では文字コードの問題がある。手元のパソコンの文字コード設定は、通信相手方の端末には反映されない。
Windowsの日本語版では、伝統的に Shift-JIS といわれる文字コードが使われてきたが、海外のWindows端末は日本の文字コードにあわせてくれないし、macやLinuxやBSDも同様に日本には合わせてくれない。
簡単な対処法として、ゲーム中では日本語を送受信しない、つまり半角の英数字と記号だけを送受信する、という道はある。
会員登録などのためにどうしても氏名や住所などの日本語を使う必要がある場合、PHP・Pythonなどサーバ言語に対応した「フレームワーク」があり、そのフレームワークが最初から日本語に対応、もしくは設定を少しいじるだけで日本語対応するので、それを利用すれば効率的かもしれない。
ゲームとは別途、サーバー側にフレームワークをインストールして、会員登録時にサーバー側でそれを使うようにすればいいだろう。
しかしゲーム内では日本語の扱いは非常に難しい、限定されるという事になるだろう。
C言語のプログラムにサーバサイドの言語・システムを組み込むのは難しいから、ネットゲームではどこかでソケット通信に頼ることになるだろう。
市販の本を探しても、そもそもソケット通信の書籍自体がめったに見当たらないし(ほんの少しだけ出版されている)、もし見つけても全く文字コードの問題の解決方法は紹介されていない(2021年現在)。
}}
====プラットフォ-ム====
;ライセンス料
一般に、プレイステーションや任天堂のゲームを開発するには、専用の機材が必要であり、そのため、ソニーや任天堂とライセンス契約しなければいけない<ref>『ゲームプランとデザインの教科書』、P.107 </ref>。
その契約に際して、ライセンス費用または料金と呼ばれるものを、ゲーム機開発会社の任天堂、ソニーに支払う必要があります。
現在でもソニーや任天堂のゲーム機用のソフト開発・販売には、ライセンス料が必要です。少なくともPS4やニンテンドースイッチのパッケージソフト開発には、「ライセンス費」が必要<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.120</ref>。
なお、書籍『ゲームプランナーの新しい教科書』によると任天堂やソニーのようにゲーム機を作っている会社のことをハードメーカーと言います。つまり、ゲーム機のハードメーカーにライセンス料を支払うという仕組みになっています<ref>『ゲームプランナーの新しい教科書』、P20</ref>。
また、スマートフォン向けアプリは、プラットフォーム使用料が掛かります。
書籍『ゲームプランとデザインの教科書』によると AppleStore, GooglePlayともに売上げの30%とのこと<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.121</ref>。その他のプラットフォームも、大体同じとのことです(参考文献の著作の時点では)。
Google やAppleのようにプラットフォームを提供している企業のことをプラットフォーマーと言います<ref name="gp244">吉冨賢介『ゲームプランナー入門』、P244</ref>。
昔からゲーム機のライセンス料は有料で高額であり、ソニーや任天堂の収益源のひとつになっている<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.267 </ref>。一方、パソコンゲームにはライセンス料が無いのが普通です<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.283 </ref>。
なお、ハードメーカーでなければプラットフォーマーでもないゲーム会社のうち、製造から販売までを手がける会社のことをパブリッシャーといい、たとえばカプコンやコナミやセガやスクウェア・エニックスやバンダイナムコなどがパブリッシャーです<ref name="gp244" />。
実は、必ずしもパブリッシャーが開発を手がけるとは限らず、スマホ向けアプリなどではディベロッパーといわれる開発専門の会社に委託している場合もあります<ref>吉冨賢介『ゲームプランナー入門』、P245</ref>。
;ポリコレ規制
Apple社のAppStore向けのスマートフォンアプリでは、アップロード後に、公開前にAppleによる審査があり<ref name="g139">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.139</ref>。、審査は欧米基準です。
GooglePlayは、公開前の審査はないが公開開始後に海外基準で審査されるので、それに違反していると配信停止になります<ref name="g139" />。
海外プラットフォームで販売・配布したい場合、「ポリティカル・コレクトネス」(政治的な正しさ)といわれる、海外の公序良俗の基準に配慮する必要があります<ref>『ゲーム作りの発想法と企画書のつくりかた』、P.235</ref>。
欧米の判断基準が、アジア諸国やアフリカの生活習俗に合致しない場合も多いのですが、欧米のIT大企業はその欧米基準での規制が政治的に正しいと考えているでしょう。「日本では、少し考え方が違う」と言っても、通用せず規制される場合も多い。
ゲームだけでなくテレビアニメでも、漫画ワンピースの海外アニメ版では、主人公側の若者がタバコを吸っているシーンをアメ玉に作画を変えられたり、ドラゴンボールに出てくるミスターポポという肌の真っ黒なキャラクターの肌を青く書き換えたり、色々な例があります。
ポリコレとは関係ない事例ですが、TVアニメーションのポケットモンスターで主人公のサトシ達がお握りを食べているシーンで、アメリカ版ではドーナツになっていたことがあります。これは、国による食文化の違いを示していますよね。
===プロトタイプ===
ゲームでは、曲や絵が良くても、ゲームとしては今ひとつ面白くない、という事は起こり得ますよね。
ですからむしろ、商業的なゲーム制作では、イラストは簡略なものを使ったうえで、プログラム中心の試作品(プロトタイプ)をいくつか作り、その中でゲームとしての面白さがあるものを、取捨選択したうえで商品化を考え、その後イラストや楽曲を詰めて完成度を高めていく、と、いう制作過程を取るようです。
書籍『ゲームプランナー入門』(吉冨賢介 著)によると、商業ゲーム界では、企画書に書かれたゲームが本当に面白いかどうか確認するために、「プロトタイプ」が作られます。プロトタイプの段階では、プログラマーと、企画の意図を考慮するためプランナーも関わります。<ref name="gp17">吉冨賢介『ゲームプランナー入門』、P17</ref>
イラストレーターは、プロトタイプの前段階あたりでイメージイラストを提供し、スタッフ間の共有イメージを作ります<ref name="gp18">吉冨賢介『ゲームプランナー入門』、P18</ref>。そしてプロトタイプ進行中は、グラフィック案の提案をしていきます<ref name="gcw56">蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P56</ref>。サウンドも同様、プロトタイプでは、曲調を固めていく段階です<ref name="gcw56" />。
:※時々あるトラブルとして、マイナーな同人ゲームや零細メーカーのゲームで、背景イラストや脇役キャラクターなど目立たない部分で他社のイラストが使われていることがあるようです。おそらく試作用に流用したイラストが、そのまま製品に混入したのでしょう。こういうトラブルがあるので、他社イラストの使用は試作であっても避けるべきです。
;実装検証
プログラマーは、そのゲームでコアになるプログラムやシステムやミドルウェアについて、プロトタイプ段階で実装検証を済ませておく必要があります。プロトタイプより前の原案の段階では、利用するミドルウェアの洗い出しをして、出来る範囲での基礎実験をしておきます<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P54</ref>。
ミドルウェアによっては使用料が発生するので、その点を事前に調べておく<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P55</ref>。
プロトタイプのうち、張りぼての例えば画面だけの物等を、「モックアップ」といいます。一方である程度遊べる状態まで作っているものを、「プレアブル」といいます<ref>STUDIO SHIN『ゲームプランナーの新しい教科書』、翔泳社、2018年3月10日初版第2刷、P251の図</ref>。
ゲームデザイン本ではよく「プロトタイプ」という表現が用いられるので、本ページではこの言葉を使うことにします。
{{コラム|商標権等|
知的財産権には著作権・商標権・意匠権などがありますが、商標権は特に強い権利であり、気を配る必要があります。
意匠権とは、建物や工業製品の外観に関する権利なので、ゲーム制作ではあまり気にする必要はないようです<ref name="gpd135">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.135</ref>。
「特許権・実用新案権」と「商標権」は、事業者によって国に登録されている権利で、かなり強力な権利なので、気をつける必要があります。
特許権や実用新案権とは、大まかに言えば、技術的な発明に関する権利です。商標が登録されているかどうかは、特許庁の『特許情報プラットフォーム』というwebサイト<ref name="gpd134">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.134</ref>で確認できます。
商標をトリッキーな意図で登録する人も多く、自社でビジネス展開をする気がなかったり、他社の商品などでまだ登録されていない物を申請したり、そういうやや不正な登録申請でも認可されてしまう場合も多いです。
また、商標は業種のジャンルごとに分かれているので、たとえば携帯電話のジャンルが新たに追加された時代に、過去のゲームの商標を登録した人がいました。そのため携帯ゲームを出せなかったり、商標を買い戻したり、取り戻すための裁判をするのに時間とお金がかかってしまったり、様々な問題が発生します。<ref name="gpd134" />
著作権は、登録の必要がなく、著作をした時点で発生する権利です。
『ゲームプランとデザインの教科書』によると、こういう事柄にまだ慣れていない人によくあることなのですが、他人の個人サイトやSNSで公開されていた絵や曲などを、許可なく勝手に使う事例があるようです<ref name="gpd135" />。
二次利用を許可されてない著作物は素材として使えません。
そして見落としがちなのが、フォントの著作権です<ref name="gpd135" />。フォントにも著作権があります。
フリー素材と書かれていても、商用販売が禁止されている配布形態のものもありますので、気をつけましょう。
}}
{{コラム|アイデアの権利。アイデアとは盗まれるのか、盗むのか?|
商業ゲーム作家たちの、2022/1時点でのSNS発言によると、業界全体でみられることですが、会社外部の人がアイデアを一方的に投稿してきて、会社で作った作品にそのアイデアと類似点があったら、アイデア使用料を要求してくる、そのような問題に悩まされているようです。
そこでゲーム会社側では原則、
:送られてきたハガキやメールは、まずクリエイター以外の事務系の人間が読む。
:もしハガキなどにアイデアがあった場合、そのハガキを処分。
などの方策を取ると言われています。
また、偶然や何らかの理由でアイデアが一致してしまった場合に備えてのリスク回避として、事前に会社のウェブサイトなどで「弊社にアイデアが送られてきた場合、そのアイデアは弊社のものになります」のような宣言をしている会社も多くあると言われています。<!-- (以上、作家のSNS発言やそれを紹介したサイトの取材などのまとめ.)←出典を消すなってS氏はやたら云うんだけど,そんな重要な事かね?もちろん全くなくて,いい加減な事書いていいと言ってるわけではないけど… -->
ここで前編集者は娯楽産業の世界には厄介な消費者がいると言及しているけど、この前編集者自身がこのWikibooks で異常なまでに厄介な参加者なんだが、そろそろ人のふり見て自分を返り見るべきだと思うな。
法学的には、著作権法はアイデアを保護しません(『アイデア・表現の二分論』と言います)。
そして前編集者はアイデアに関して権利をどうこう言う人間を無知だと書いているけど、自分は至上の賢人だと思ってるようだね。
そしてこの人物は他者を愚弄する時は必ず自分の意見ではなく、権威ある人がそう書いたから、出典だからと宣う。
出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。
まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。
}}
任天堂『ゼルダの伝説 ブレス オブ ザ ワイルド』は、プロトタイプの段階ではイラストや音楽を組み込まずに(イラストは、代わりに大きなドットの塊などで代用する)作られている事がゲーム業界見本市イベント CEDEC 2017 で公開されています<ref>https://game.watch.impress.co.jp/docs/news/1078888.html 2020年11月25日に閲覧して確認</ref>。
プロトタイプの段階では、画像や音楽は発注せず、骨組み的なプログラムだけで、そのゲームのアイデアが「はたして本当に面白いか?」を、実際に社内の関係者にプレイさせてみて確認します。
因みにプロトタイプに関しては『[[高等学校情報/その他の技術的な話題#プロトタイプ開発]]』の記述も参考になる。
ここでいう「プロトタイプ」(試作品)とは、コンピュータプログラムのゲームとして動作するのが前提です。映画製作でいう絵コンテ試写のように、ゲームの試作では、なるべく早期に第三者が試作ゲームを遊べるように作っていく必要があります。
プロトタイプという言葉を使用すること自体が妥当かどうか。まず、書籍『ゲームプランとデザインの教科書』で使われている<ref name="gpd350">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.350</ref>。
ニコニコ動画の経営者、川上量生が使っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日 第1刷発行、P.38</ref>。川上は角川書店も買収したので、おそらくそこ(カドカワ・RPGツクール販売元)でも使っているでしょう。
ゲームのプロトタイプの基本姿勢は、「汚く作って、やりなおす」です<ref name="gpd350" />。もちろん最低限のプログラムの知識、勉強は必要ですが、あまり知識収集や理解充実を気にするより、実際に作ってみることを優先したほうがいいようです。チーム制作をしている場合はプロタイプは赤ん坊であり、そのチームで育てていこう、我々の子供だという意識で接しているようです<ref name="gpd350" />。
勉強に関しては、汚くてもいいからまず工夫して作ってみると、何を勉強すればいいかが見えてきます。
英語では「quick and dirty prototype」という言葉があります<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.349</ref>。
書籍『ゲーム作りの発想法と企画書のつくりかた』によると、シナリオライター志望者が企画書やシナリオ案をメーカーに送りつけても、あまり効果的ではないようです。
それよりゲーム形式でシナリオを書いてしまうのがいいようで、「CHR:ヒロインA(私服)、表示」のような文章を織り交ぜて構成していくのが推奨<ref>『ゲーム作りの発想法と企画書のつくりかた、P.140</ref>。
参考文献のその章では、シナリオライター志望者に向けて語られていますが、プログラマーを目指すならどうすればいいでしょうかね。
プログラマー志望なら、サンプルゲーム、サンプルプログラムを作ってしまうのがいいかもしれません。
1990年代、週刊少年マガジンに不定期掲載していた読みきり漫画『ゲームクリエイター列伝』では、カプコン社のゲーム『バイオハザード』を扱った『バイオハザードを創った男達』の際、制作過程でゲームデザイナーが大幅な作り直しを判断して進行させた、という描写があります。(ただしWikiboooks一編集者の記憶、詳細はあいまい)。
のちの、ゲーム評論家の阿部広樹の評によると、むしろそれは劇的な大きな決断ではなく、ゲームデザイナーの日常の普通の仕事ではないか、と語られています。
どんな肩書の人間だろうと、すでに決まって進行していた方針をひっくり返すのは、かなりのストレスのある判断で指摘になりますが、一般に漫画や映画、あるいはNHKの仕事に関するドキュメンタリーでもそうですが、職業や職業者の物語では、過剰に対象を美化し、劇的な演出によって関係者を称賛し、英雄視する傾向があるように思います。
{{コラム|アイデアはアイデアで価値がある。でも、せっかくなら、それを試作して、形にしてみよう。|
ゲーム業界人広井王子は書籍のインタビューで、自分の社長としての人材評価は「0点」から始まる「加点法」だと語っていたようです。
『ゲームデザイン プロフェッショナル』著者も、文脈は違いますが「加点方式で物事を考える」と述べています<ref>『ゲームデザイン プロフェッショナル』、P224</ref>。
正直インチキなゲーム業界人の点数勘定などには全く興味ないが、そんな話とは全く別に、ゲーム制作の上で、実際に動く簡単なプロトタイプを作ってみることは間違いなく有意義な事でしょう。
アイデアはアイデアとして、思考や思想の展開としてありますが、それを具体的な形にしてみることは非常に楽しくエキサイティングで、意味ある活動ですよね。
}}
仕様書や設定資料を超えて、誰もが遊べる試作品は、意味のある企画行為でしょう。前編集者は、時間軸・動きの制作意図の明確化、という言葉を使っています。もちろん短くまとめること自体もなかなか難しいのですが、工夫を凝らして、ゲームプログラムを完成させることが重要な経験であり、思考の具体化でもあると思います。
===アルファ版===
アルファ版はプロトタイプとは違うもので、その後段階で、ゲームの全体像が分かる一部分を、商品に準じた形で作ることです<ref name="gp17" />。
アルファ版でもそのゲームが本当に面白いかどうか検証がなされます。サウンドやビジュアルは商品に近いほぼ完成化された形で取り込みます。
アルファ版の使用の結果、プロジェクト中止の決定がなされる場合もあります<ref name="gp18" />。
ベータ版とは、会社によって意味が多少違いますが(たとえば『ゲームデザインプロフェッショナル』と『ゲームプランナ-入門』とでも微妙に違う)、おおむね、とりあえずのゲーム、最初からエンディングまでのほぼ完成状態をひととおり遊べる制作物です<ref>『ゲームデザインプロフェッショナル』、P170</ref>。
細かいバグ修正はこれらの段階では後回しにします。
基本的に
:プロトタイプ→アルファ版→ベータ版→調整→デバッグ
の流れですね。
===プロトタイプ制作に必要な予備知識===
====数学は後回し====
ゲーム制作の作り始めにおいて、必要な数学や物理の予備知識は、それほど多くありません。
文献『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』によれば、数学や物理の習熟に拘って、それに多くの時間と精力を費やして勉強するよりは、3Dの勉強などで必要を感じたら、そのつど、その分野の数学や物理を学ぶのが効率的だと述べており、また可能なら実際にプログラミングでその理論を試してみると具体的に理解をしやすいと述べています<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P88</ref>。
====C言語の予備知識は入門書1冊+αで十分====
C言語を使ったゲームは、予備知識はそれほど多くないので、あまり難しいことは考えず、まず実際にプログラムを書いて作ってしまう事優先にするのが正解なようです。
市販のC言語入門書で、配列や関数などの一般的な機能を一通り習得したら、あとはVisual C++ で映像出力とキーボ-ド入力のみを、1~2週間ほど勉強、そしてVisual Studioを起動してゲームを作り始める。
うまくいけば数か月以内に、パソコン用の非ネット通信のゲームを作ることができるでしょう。
ただ、ゲームプログラミングを試みる人は、必ずしもゲーム制作のみが絶対的な唯一の目標ではない可能性もあるので、それぞれの立場に応じて、座学を取り入れてみるのもいいと思います。
== 作業リストを作る ==
===作業リストの制作開始の方法===
さて、ゲームを作る時は、アイデアを頭の中だけに置いておくのではなく、文章に書きだしてみましょう。
そして、壮大な長大なアイデアではなく、1週間~1ヶ月ていどで成果の確認できそうなアイデアだけを書いてみましょう。
次にそのアイデアを、実際に動作するプログラム、ソフトウェア(つまりプロトタイプ)にするために、具体的などんな機能を持ったプログラム(簡単なものでよい)を制作しなければいけないか、自分のやるべきことのリストを、箇条書きで作ります。<ref>https://www.youtube.com/watch?v=J5FCZG7dfEY 2020年3月17日に閲覧</ref>
IT界ではこういうリストを「ToDoリスト」(読み: トゥードゥーリスト)とか「タスクリスト」といいます。このページではむしろ日本語で、「作業リスト」と呼んでみましょう。
さて、このリストを作るときは、作業項目は具体的かつ単純な目標に分割します。ですから例えば RPG の戦闘システムを作るときは、
*「戦闘システムを作る。」
と、あいまいに総体的に書くのではなく、具体的に、
*戦闘画面のメッセージ表示欄および標準メッセージを作る。
*「戦う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは後回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
という風に、作業項目を細かく分割していきます。
こうすることで、作業がひとつずつ比較的に簡単な要素に分解されていくので、楽になります。また、バージョン管理ソフトを使って管理している場合も、上記のような作業リストの分解をしておけば、各バージョンの概要を書く際にも作業リストの項目が転用できるので、一石二鳥です。
予定日は書かないほうがいいように思われます。スケジュールを管理したい場合は、別にファイルを作るといいですね。
そして書き出した項目を優先順位で並べたら、最初の作業リストは完成です。
===作業リストの更新===
プログラミングする前に作業リストを眺めて、そして上の項目から実際に作業を開始しましょう。
そして一つの項目を完成させましょう。
そして作業項目がひとつ終わったら、「【完了!】」等、そういう情報を、項目の前または後ろにつけます。備忘のための記録ですね。
たとえば、
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
こうします。
以前の記述を残したまま、その作業が終了したことを示しておくわけですね。
また、もし追加の作業が必要になったら、たとえばダメージ計算システムを作るために、ランダム計算が必要になって、自分がそのプログラム言語でのランダム計算に詳しくないなら、たとえば
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
::※3行目に追加されています。
と、必要に応じて項目を追加します。
さて、これから行う作業を検索しやすくするため、たとえば
'''やることリスト'''
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
'''完了した作業'''
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
の様に完了した項目を後回しにしたり、或いは
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*(現在→) Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
のように、(現在→)、を追加するのも良いでしょう。
つまり作業の記述をそのままに、どこまで進展しているかが分かる等に書き足していくわけですね。
==プロトタイプ制作における創作面の検討事項==
===ゲーム性===
「ゲーム性」という概念があって、これがあるからこそゲームは面白く、魅力的だと考えられています。
プレイステーション開発元のソニーもこれを重視していますし、一般的に多くのゲーム愛好者、関係者たちもその考えに同意するでしょう。
ではゲーム性とは何か?
ゲームのジャンルにもよりますが、「駆け引き」や「戦術」、これが「ゲーム性」だとよく言われます。
『ゲームプランとデザインの教科書』によると、ゲーム性とは、シューティングやアクションでは「対戦の駆け引き」、RPGでは「戦闘と物語の介入」、シミュレーションゲームなら「戦略性」だそうです<ref>『ゲームプランとデザインの教科書』、P152</ref>。
ただし上述の書籍によると、1990年代は今よりもゲーム性とシステムが重視されていたとの説明があるので、裏を返せば2010年以降の現代では、ゲーム業界ではゲーム性の重視の比率は1990年代よりも減っているかもしれません<ref>『ゲームプランとデザインの教科書』、P302</ref>。
『ゲームプランナー入門』(吉冨賢介 著)では、ゲーム性とは「課題や挑戦の仕組み」であると結論づけています<ref>吉冨賢介『ゲームプランナー入門』、P36</ref>。そして、この達成感こそが「ゲームならではの面白さ」だと述べています。
;アクションパズルゲーム「I.Q」
メディアクリエイターの佐藤 雅彦氏(「だんご3兄弟」や「ピタゴラスイッチ」等を手掛けている)が、初めてかかわるコンピュータゲームで、ソニー・コンピュータ・エンターテインメントとの共同企画で、のちに「I.Q」(1997年にシリーズ第一弾を発売)と呼ばれるシリーズに携わった時、プロトタイプが全くゲーム性のないものになってしまい、それをプレイしたソニーの幹部陣の顔色が非常に曇ってしまったようです<ref name="br67">川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P.67</ref>。
ここでの悪い反応、薄い反応の理由がわからなかった佐藤氏が、階段の踊り場でソニーの新人に尋ねてみると、「それが、あの、ゲーム性がないっていうか・・・」と言われたと出典の対談集に書かれています<ref name="br67" />。
基本的に佐藤氏は、プロトタイプの企画を提案しただけですが、ソニーにはプロトタイプを作るための部署があるらしく、1~2ヶ月かけてそこでプロトタイプが作られたようです。
この問題の責任が誰にあるかは、大した重要な事ではありませんが、商業作品としてプロトタイプを作る以上は、どこかの段階でゲーム性を意識して、プログラムに盛り込む工夫が必要になるでしょう。
===ゲームの見た目とは?===
ふつうゲームのプレイヤーは、まず最初にそのゲームの「見た目」を判断し感受するでしょう。ですからその見た目のインパクト、興味を呼び起こす構成が必要になります。
例えばスーパーファミコンRPG『新桃太郎伝説』では、開発当初はドラゴンクエスト5 のようなマップ画面のトップビューUIでしたが、開発中にクォータービューの他社製RPGが発売されて高い評価を得たので、マップUIを(トップビューではなく)クォータービューに作り直したようです。このことは攻略本『新桃太郎伝説 究極本』に開発裏話として書かれています。
一方現在でもこの方向の試みは重要なようで、書籍『ゲームデザイン プロフェッショナル』の著者は、他企業の製品の画面と、自社の製品を目で見比べる分析方法で、自分たちの製品のUI の問題を見出しています<ref name="gdp199">『ゲームデザイン プロフェッショナル』、P199</ref>。
割と素朴で単純で即物的な見た目、「かっこいい」とか、「ぱっと見派手」等の要素が非常に重要なようです<ref name="gdp199" />。
商業としてゲームを作る以上は、ペイしなければ企業も事業の継続も維持できませんから、考慮せざるを得ない問題ではあります。
== ゲーム開発ツールを使う場合 ==
====開発ツールのライセンス条件====
ゲーム開発ツールのなかには、そのツールで開発したゲームソフトに義務として「この開発ツールで開発したソフトウェアは、ソースコードを必ず公開しなければならない」などの条件をつけている場合があり、このような条件を「開示義務」(かいじ ぎむ)または「ソース開示義務」などといいます。
ソース開示が嫌な場合は、開示義務のあるツールは使わないのが正解ですね。
ゲームに限らず、ソース開示を義務としている開発ツールは多くあるので、ライセンスには気を配る必要があります。
「有料ソフトの販売を禁止」とか「アダルト作品の開発は禁止」などの条件をつけている場合も、ありえます。
ですからゲーム開発において、ツールのライセンス条件の確認は、非常に重要です。
{{コラム|GPLライセンス違反|
GPL(ジーピーエル)というライセンスがあって、Linuxなどのオープンソースで使われています。このGPLを組み込んだプログラムは、ソースを公開しなければいけません。
ですから、ソース公開したくないプログラムには、GPLソフトウェアは組み込めません。
ゲーム業界でも、GPLライセンスのソフトウェアを組み込んでしまったために、呼出し元ソフトウェアでのソースコードの一部を公開することになったゲームがあります。2005年頃、『ToHeart2』という美少女ゲームが、xvidというGPLソフトを取り込んだ疑惑によって、GPL違反の疑いでソース公開になりました。([[w:ToHeart2#GPL違反とソース公開]])
GPLでも、たとえばLinuxサーバ上でソース非公開のアプリを動かすように、GPLのソフトウェアを非公開ソフトとは独立した状態で使う場合は、ソース公開の必要はない、と、考えられています。(これが必要有りとなると、オンラインのプログラムやネットゲームは全てソース公開しなければならなくなり、非合理な結果になる。)
特定のプログラム自体に、GPLソフトウェアのコードを取り込んだ時、ソースコード公開が必要になります。
}}
{{コラム|BSDライセンス他|
オープンソースの中には、どのような利用法であっても、利用者にソース公開を求めないライセンスもあります。BSDライセンスとMITライセンスはソース非公開で利用できます。
ゲーム制作ツールの吉里吉里Zは、修正BSDライセンスで公開されています。
もしライセンスのことがよくわからない、またはライセンスの学習に時間をかけたくないなら、オープンソースのツールを使うなら、BSDライセンスを使うのが安全です。
}}
[[w:DXライブラリ]]は、GPLでもBSDライセンスでもありません(DXライブラリ説明書「DxLib.txt」には、どこにも「GPL」とも「BSD」とも書いていない)。DXライブラリは単にソースコードが公開されていて、著作権者の「山田 巧」氏が著作権を保持しているオープンソースなライブラリです。
このように、ネット上でソース公開されているソフトウェアには、ライセンスの複雑な解釈を嫌ってか、「BSD」や「MIT」などのライセンス条件を名乗らないオープンソースソフトウェアもあります。
{{コラム|自作ソフトでソース開示|
昨今ではオープンソースやフリーソフトウエアの発展などの背景もあり、「自作ゲームのソースコードやソースファイルも開示しよう」と思うゲーム作者もいるかもしれません。
然しソースコードを開示していることが原因で、トラブルに巻き込まれる場合もあるかもしれません。自分の作ったゲームのコードが悪用され、トリッキーないたずらや嫌がらせ、誹謗中傷などを受ける可能性も全くないわけではありません。
そこでライセンスに、利用による損害に対する保証が無いことを明示するのは、ある程度有効でしょう。大抵の著名なフリーソフトウェアライセンスには、この条項があります。他者の悪意を完全に防ぎ失くすることは難しいのですが、ある程度の対策は見出されていますし、自身でも見出していく必要があるでしょう。
}}
====開発ツールを使用しないという事====
下記の理由(機能制限および移植性の悪さ)の問題から、あまり大規模な作品は開発ツールでは作らないでおくのが安全です。
大規模な作品の場合、Visual C++ などでコードを書いて開発することを推奨します。
=====機能制限=====
ゲーム開発ツールを使う場合、そのツールにもよりますが、「○○ができない」、つまり特定の目的を果たすための機能を持っていない場合があります。
Visual Basic や Visual C++ には普通にある関数でも、開発ツールには無い場合も多い。
また、もし、いったんはゲーム開発ツールを使って目的の機能を持ったシステムを作ったとして、さらなる機能をそのシステムに追加しようとするときに、大幅な作り直しが必要になる場合があります(拡張性の悪さ)。
システムがモジュール化されていても、そのモジュール部分では大きく改変する必要がある場合もあるでしょう。
ですからゲーム開発ツールによるゲーム制作では、あまり大作を作ろうとしないほうが安全です。開発ツールで作る作品は、比較的に小規模な作品に、とどめておくことを推奨します。
Windowsの場合、本来なら Visual C++ などを使って、プログラム文法のいろいろな事に留意しながらプログラムを書きますよね。開発ツールを使う場合、 Visual C++ のコードを書かずに、ほぼマウス操作だけでプログラムを作ろうとしているわけですから、何かしらの制限があります。拡張性の悪さは、プログラム文法などの学習の負担を減らすためのトレード・オフのようなものですね。
=====移植性の悪さ=====
また、もうひとつの問題点として、C言語への移植性の悪さがあります。
ソースコードが公開されていない開発ツールの場合、異なる開発環境にゲームのソースファイルを移植するのは、ほぼ不可能です(仮に、開発ツールのランタイムを模倣できたとしても、著作権などの法的な懸念が生じる可能性あり)。
ゲーム開発ツールで作ったソースを、Visual C++のソースに置き換えるのは、簡単にはできないし、ほぼ全面的に新たに書くことになるでしょう。
==イラストレーター、デザイナー==
ゲーム制作、業界において、イラストや音楽を作る部署、人物は、まとめて、"アーティスト"と呼んでいるようです。
ゲーム界の場合デザイナーというのは、プランナーやディレクターのことであり、管理職的な設計者のことで、美術的なクリエイターではない。design という英語には、機械建築の設計という意味もあります。
映像関係、画像系のアーティストはグラフィッカーと呼ばれることもあります。ムービー担当者、特にゲーム界では3D-CGの制作者をアニメーターと呼ぶことが多いようです。アニメーション業界では主に、手描きの原画、動画マンをアニメーターと呼びますが、最近は3D-CGアニメーション映画も多いので、すこし状況が変わっているかもしれません。
ゲーム業界とアニメーション業界、各会社企業、過去と現在で、「原画」「仕上げ」「絵コンテ」等、一般的な作業に関する言葉が、それぞれの状況で微妙に違った意味で使われることも多いですね。
…ところで前編集者はわざわざこの項目を作ったうえで、色々な場所での言葉の意味の違いを、クドクドと自分勝手な分かりづらい説明で長々述べた後、「混同しないように気をつけましょう。」なんて馬鹿馬鹿しい言葉で締めているんだけど、この人物の意図はどこにあるのだろう?
例えばデザイナーというのは一般的に、造形作品、図案、意匠を考案する人のことを言うのだから、ゲーム界の外の人間が多少その業界内での意味を取り違えても、それほど致命的なミスでもないし、罵倒、愚弄されるいわれもなければ、好き放題にその相手を罵倒、愚弄していいわけでもない。間違えて使っている人を見たら、その都度やんわりと教えてあげればいいだけじゃあない? だいたいその世界に現実に身を置いたら、そこでの言葉の意味、使い方なんて自然に覚えるものだし…。
それを得意げにこれが違うあれが間違いといちいち理屈書いて、いい気になって威張っているこの人物は何者なのだろう?
現編集者が思うには、この人物は、学問、知識、知恵、科学とは何かという事を、根源的に取り違えている、のだろう。
==操作性==
操作性について、親指と人差し指<!-- ←ここ,中指って書いてあったけど,こっちだよね? -->だけでボタンプッシュなどの操作ができるように作成するのが基本です。中指、小指、薬指はコントローラのホールドに使うぐらいです。人間工学的に、小指や薬指は力が弱いので、微妙な操作には向かないことが知られています<ref>川上大典ほか『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日 第1版 第1刷、P.48</ref>。
一般的にゲームプログラミングでは、
# プレイヤーからの入力を扱うことができる。
# ゲームが提示する内容を表示することができる。
入力と出力、この2点が機能として必要になります。
プログラミング言語とプレイヤーからの入力については歴史的にも、あまり変化がありません。言語では主に[[C言語]]、[[C++]]が用いられる。[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
パソコンゲームでは、プレイヤーからの入力には通常、キーボードかマウスを利用します。他に[[w:ジョイスティック|ジョイスティック]]や[[w:ゲームパッド|ゲームパッド]]が利用される場合もあります。家庭用ゲーム機では[[w:コントローラ|コントローラ]]が利用されることが多いのですが、[[w:ニンテンドーDS|ニンテンドーDS]]や[[w:Wii U|Wii U]]では[[w:タッチパネル|タッチパネル]]、[[w:Wii|Wii]]では複数の入力機器が提供されることが発表されています。各種入力機器をプログラムから扱う手法自体は、普遍性があり、入力機器ごとに大きく変化しない、と、考えられています。[[w:デバイスドライバ|デバイスドライバ]]、[[高等学校情報B]]には、プログラムから周辺機器を扱う方法について多少の記述があります。
画面表示のうち、3Dの表現は割合難しく、ある程度の数学(高校、あるいは場合によってはそれ以上)の理解が必要でしょう。2Dに関してはプログラムの面では、さほど難しい部分はありません。
==処理速度の問題==
基本的にプログラミングでは、関数を使って、処理をコンパクトにまとめ、定数ではなく変数で柔軟性のある操作をすることが求められますが、ゲームの場合は、この構造のせいで処理速度が低下することがあります。
現在のCPUの性能、速さはかなり高くなってはいますが、プログラム処理は無限に煩雑化できますから、やはり高度な処理を短時間でなすことが求められます。特にゲームは、リアルタイムの反応のタイミングが非常に重要ですからね。数学の指数計算についての雑学で、「新聞紙を42回おりたたむと、月に届く距離になる」というものがあります。(新聞紙の厚さ)*2^42、ですね。もっとも新聞紙の物性から言って、ほぼ不可能な操作ですけど^^;;。コードの内容、組み合わせによっては、このように計算量が指数関数的に膨大になってしまい、処理速度が非常に遅くなってしまう場合があります。
ですが、このセクションで後述するように、関数を用いる場合の解決策(※概要:あとでdefineやinlineに置き換え)があるので、プログラミングの初期のほうは、とりあえずバグを未然防止するために関数を活用するべきでしょう。
1980年代頃のファミコンなど古い時代のゲームでは、ストレージ容量(ハードディスク容量のこと)が、ボトルネックでした。「容量不足でイベントをいくつか削りました」と、当時のRPGなどのゲーム作家が述べるのは、ストレージ容量の不足のことですね。ただ当時のファミコンはROMカセットでハードディスクは無いので、まさにストレージ容量という言葉が適切でしょう。
しかし2010年以降の現代では、ボトルネックになっている要因は、ストレージ容量不足よりも処理速度です。
ゲームプログラミングに要求されるコード特性は、科学計算ソフトウェアや金融プログラミングなどの手法とは異なります。情報工学・情報科学で適切とされる「構造化プログラミング」などの歴史的に発展してきたプログラミング・パラダイムの理念とは反するようなコード開発方針になる場合もあります。しかしゲームプログラミングに限らず、限定されたハードウェアで特定の結果を速く得るためには、様々なトリッキーな手管が必要になるでしょう。
;ツクール等制作ツール
RPGツクールの制作元のカドカワ(アスキー社→エンターブレイン社→カドカワ(かつての「角川書店」) )では、PRGツクールでのアクションゲーム開発は推奨していません。アクションゲームの場合は、同じカドカワの「アクションゲームツクール」で制作するよう、薦めています。
アクションゲームとターン制RPG では要求される特性が大きく異なり、なかには、ほぼ対立しているような性質もあります。
ツクールやウディタでも、万能にあらゆることがスタマイズできるわけではなく、その制作ツールの特性に依存しますし、主に処理速度の低下しない部分についてユーザが創作できるようになっているでしょう。
多くのRPG制作ツールはマップ操作や戦闘画面の基本システムのルーチンそのものは、あまりカスタマイズできません。画像や音楽は挿入できますが、例えば戦闘プログラムなら、「コマンド」の命令文など一部の派生的な部分だけが独自に作れる程度でしょう。
ですから、ツクールでどうしてもアクションRPGを作りたい場合、基本システムの改造はかなり困難だろうし、別途、アクションRPGのような動作をするマップイベントを作成する・・・ぐらいでしょうね。
ツクールやウディタでターン制RPG以外のジャンルを制作するのには、実質的には限界があり、さまざまな制約が生じます。
;具体的な手法
初期段階では関数や変数を活用してプログラミングし、処理速度を高める必要がある箇所にだけdefineマクロ等を用い別の方法に置き換える。C++ならinline関数という前処理命令もあります。
通常の関数で記述していったソースコードを、あとから一括変換などでdefineマクロやinline関数などに置き換えることは比較的に容易です。
また、関数を経由しているので、マクロを使った場合でも比較的にバグが混入しづらくなっているかもしれません。(defineなどの前処理命令マクロは、用いるとバグを発見しづらいので、なるべくマクロの利用を避けるべきなのが、ゲームプログラミングに限らないプログラミングの定石です。)
一方、まったく関数を使ってないコードを、あとからdefineマクロなどに手作業で置き換えるのは、なかなか面倒です。
最終的には一括変換で置き換えることが出来ますから、途中の段階では、処理速度を気にせず関数を使うのがいいでしょう。
なお、defineマクロは、値の置換以外には用いないのが、プログラミングの定石です。このため、たとえば黒色RGB値の<code>10,10,10</code>といった配列にdefineマクロを使うべきかどうか悩みますが、とりあえずなるべく値周辺にだけdefineマクロを適用するようにするようにするのが良いでしょう。いっぽう、一般の命令文をdefineマクロで置き換えるのは、避けるべきでしょう。
たとえば、処理に0.5秒ほどの時間の掛かってもかまわないような場所は、どんどん、関数に置き換えていっても良いかもしれません。
アクション性のないゲームなら、関数をぞんぶんに活用できます。
ターン制RPGやシミュレーションゲーム、アドベンチャーゲームなど、関数を活用しやすいでしょう。
一方、アクションゲームなどでキャラクター操作中のコードのように頻繁に使って、しかもそのゲームの中心的なコードなら、そこは最終的には関数にしないほうが良いかもしれません。
このように、ゲームのジャンルによって処理速度に対する必要な水準が異なりますので、プログラミング時における関数などの利用の方針も異なります。
以上のように、何でも関数にすることは避けるべきです。関数は処理速度の問題がありますので、必要性のある部分だけ関数にするべき。関数を使わなくても、for文やif文などのブロックの構成を適切に組み合わせることで、コード中のmain関数以降の部分でコード共通化できることは色々とあります。
「共通性のあるコードだから」といって、大して長いわけでもないコードを関数に置き換える事は、速度維持には寄与せず、ゲーム制作のプログラミングとしては、悪手となるでしょう。
===2Dの画面出力===
画面出力の場合も入力機器の場合と同じで、これらを操作する方法はOSごとに異なっています。先ほどあげた GTK+, Qt, SDLなどのライブラリはクロスプラットフォームの画面出力を提供しているため、これらを利用することで全てのプラットフォームで動くプログラムを作ることができます。<!--画面出力を扱うためには近年の[[w:ビデオカード|ビデオカード]]の発展についても見る必要があります。しかし、ビデオカードの機能は2次元の描画に関してはあまりあらわには見えないので、この話題は3次元の描画を行うときに再び戻ってきます。-->
*[[ゲームプログラミング/ブロック崩し]]
*[[ゲームプログラミング/画面出力]]
==目次==
=== ジャンル別のプログラミング手法 ===
==== 3Dグラフィック ====
* [[ゲームプログラミング/3Dグラフィック]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
==== RPG ====
* [[ゲームプログラミング/RPG]]
==== アクション ====
※未作成
==== パズル ====
※未作成
==== シミュレーション ====
※未作成
=== ゲームのデバッグ ===
* [[ゲームプログラミング/デバッグ]]
=== 入力 ===
OSの種類によって、キーボード入力やマウス入力の受け付けのさいのプログラムの書き方は違う。
Windows API での具体的な手順は『[[ゲームプログラミング/入力]]』で説明する。
=== ゲームエンジン ※未完成 ===
* [[ゲームプログラミング/Unity]] ※リンク先ページの編集者が現状ではUnityの著作・調査を放棄中なので、調べ物としては役立ちません(2021年12月19日に本文を記述)。
=== 非プログラミングのゲーム製作の関連作業 ===
==== バランス調整 ====
*[[ゲームプログラミング/バランス調整]]
厳密にはプログラミングの話題ではないが、ゲーム製作では必要な知識なので、サブページで説明する。
:※ゲームデザインに関する記述をここに集積し分離したい、という編集者の意図もある。
==== ゲーム用の書類の書き方 ====
説明書や仕様書(しようしょ)の書き方については、『[[ゲームプログラミング/書類]]』で解説する。
== 未分類 ==
===Visual C++プログラムによる文字画像の出力===
Visual Studio付属のフォームデザイナ(VSの用意するGUI自動作成ソフト)によるGUIオブジェクト作成では、RPG用には使いづらい。いや、ひょっとしたら上手に使う方法はあるのかもしれないが、様々な理由で難易度は高い。
そこでまず、Visual C++で、フォームデザイナをなるべく使わずに文字や映像を出力する方法を考える。
選択肢は、幾つかある。
1.フォームデザイナを1つも使わない方式
*Windows APIで入力していく方法。(Wikibooksに『[[Windows API]]』の入門書があります。)
*DirectXで入力していく方法。DirectX自体はWindowsAPIを利用している。
2.1つだけフォームデザイナのパネルを使う方式
*フォームデザイナで「パネル」という画像表示機能のコンポーネントを一つ用意して、そのパネルで表示する画像をゲーム内のストーリーなどに応じて切り替えるだけで、すべての画像表示を行う。
フリーソフトでゲーム用ライブラリの『HSP』はWindows API を呼び出す仕組みになっています(HSP関連のサイトを見ると、Win APIプログラミングの解説をしている場合もある)。
フリーソフトでゲーム用ライブラリの『DXライブラリ』は Direct X を呼び出す仕組みになっています。そして、ゲーム開発ツールのひとつであるウディタのソースコードは、DXライブラリとVisual C++ を使って書かれていると、作者が公表しています(ただしソースコードは非公開)。しかし、ウディタを用いたRPGプログラミングでは DXライブラリによるコーディングはしない。ウディタにはコード入力の機能は無く、マウス操作や、キーボード操作、キャラ名称や会話文などのテキスト文字や数値の入力のみに対応している。
===乱数===
そもそも乱数とは何かという問題があるが、それは高度な数学的な議論になるだろうから、我々はその問題には深入りできない。
ゲームにおける乱数的な処理では、事実上ランダムな値にならず、演出や調整のためにアルゴリズムが介入している場合も多い。例えばゲーム中のくじで「外れ」続くと、当たり確率が変動し、次からは当たりやすくなるアルゴリズムなども良く使われる。<ref>『ゲームプランナー集中講座』、P232</ref>。
ゲームは娯楽であり、実用目的のシミュレータではないし、アルゴリズム介入で、確率的にもいんちきが多いので、あまり厳密なランダム性が問題になることは少ないだろう<ref>『ゲームプランナー集中講座』、P231</ref>。
例えばさいころというのは典型的な乱数器だし、ゲームにもよく使う物だろう。
無印C言語には標準的乱数関数 rand()があるが、これを乱数発生に使うことに批判的な意見もあるし、機能もやや不足していると見れる。
Windows64bit では int rand(void) の出力は 32bit 整数だろう。まず stand関数で初期化してから rand()を呼ぶごとに疑似乱数が帰ってくる。これの複数回の連なりが乱数列だね。帰ってくる値は0 以上 定数RAND_MAX の値以下。
例えばさいころの数値が欲しいなら、rand の返り値を6で割った後、余りに1足せば、とりあえずそれらしいものはできる。
RAND_MAXは rand()の属性として定数が与えられているだけだから(Windowsで0x7FFF)、この値の変更はできない。
まあこれでもそこそこいい加減な乱数として機能するだろうが、最近ではもう少し改良された、質の高い乱数関数もある。
また、改良された乱数関数は、乱数の範囲も指定できるから何かと使い勝手が良いし、バグを防ぐ効果もあるのだろう。
<syntaxhighlight lang="cpp">
Random^ saikoro1=gcnew Random();// Random^ でRandomクラスの変数を作っている。gcnewはインスタンスをつくるための演算子。
int detame; detame=saikoro1->Next(1, 7);// Next メソッドで「〇〇以上△△未満」の乱数を指定できる。「->」はメンバーアクセス演算子。
MessageBox::Show("目"+detame.ToString()+"が出ました。");
</syntaxhighlight>
↑例えば上述のコードは前編集者が示したものだが、これは .NETプログラミングですね。.NET のSystem::Randomクラスを使っている。.NETのクラスは普通、C#かVisual Basic で利用するので、Visual C++で使えるようにするには結構面倒な手管がいるが、その辺は読者諸兄、ヘルプやネット情報を参照して、適宜辿り付いてほしい。
C++ の場合はむしろ、 #include <random> を宣言してそこで使える関数を使用するほうが簡単でしょうね。この場合でも、乱数としての精度も高いし、帰り値の範囲指定もできる。
===画像のちらつき===
画像がひんぱんに変化するアプリでは、画面が、ちらつく事がある。画面のちらつきは、ゲームのように、画像を凝視するアプリでは、かなり利便性を損なう。
キャラクターが1歩移動するだけで、画面全体がちらついたりする場合もあり、かなり、プレイヤーの不満になる。
これは、ダブルバッファ(「裏画面」と、良く言われる)という技術で、解決を図る。
Direct Xの用語では「スワップ チェーン」と呼んでいる。
.NET Framework開発環境の C++や C#でもダブルバッファの機能があると解説されている。いくつかのGUIオブジェクトのプロパティで、ダブルバッファの設定項目がある。
しかし前編集者が実験したところ、この機能を有効に使って確認することはできなかったとの指摘がある。ひょっとしたら何らかのマイクロソフトの解説に間違いがあって、工夫次第では利用できるかもしれないが、少なくとも今現在のこのページでは、その問題に関するリファレンスは提供できない。
そこでやはり、以前の項目と同様、Win32 API または DirextX の利用をこのページでは考えたい。
前編集者は、.NET Framework のフォームデザイナでは、ちらつき自体は解決できそうだが、グローバル変数の共有が困難だったり、アプリ内から終了コマンドが使えない、などの難点があると指摘している。
ただ現編集者はこの2点に関しては、解決策はあると思うが、しかし特に調査はしない。
前編集者は、.NETプログラムでゲームを作る難点をいくつも上げているが、おそらくどれも、.NET の仕様や全貌に精通すれば解決できるように思えるが、そもそもその全貌がかなり広大なので、解決の道のりは長いだろう。
そこで少なくともこのページでのWindowsゲームプログラミングは、Win32 API を利用したものになるだろう。
==セーブ、ロード、データベース==
===セーブ機能とロード機能の作り方===
ゲームでもシリアライズ機能が必要なことは多いだろう。数値(HPなどの各種パラメータ現在値)や文字列(例えば、プレイヤーの作成したキャラクターの名前)や現在地やフラグ状況などなど、セーブの機能は欲しい。一番簡単な方法は、C言語の fopen 関数のテキストファイル書き込み機能で、テキストファイルとしてセーブすることだろう。
Windows API には CreateFile関数 があるが、テキストファイルでの素朴なセーブは一番簡単で単純なセーブ法だろう。そしてテキストファイルを読み込んでプログラムに各種変数を配置して、ロードとする。
書き込みとしては、一番単純なC言語記法では、fprintf ですかね。C++としての書き込みをしてもいいし、読み込むのも、一番基本的な方法で。基本Cだとしたら fscanf で、この関数でテキストの数値も変数として読み込めるはずですよ。場合によっては atoi関数 で文字列→数値の変換をすることもありますかね。
基本的にデータファイルは、OS もアプリケーションも、テキストファイルとバイナリファイルの2分類で考えるでしょう。でもテキストファイルだってバイナリの集まりなんですが、テキストを扱うファイルだけ特別視していると考えていい。
そして多少それらしいデータを作りたいときは、バイナリファイルで作るという事になるでしょう。
バイナリファイルでもデータとしてのファイルと、OS が機械語または何らかの仮想的な機械語として扱う実行ファイルがある。それらのバイナリは種類に応じて多くは冒頭にファイル識別子の情報があるだろうし、OS や アプリケーション側で工夫を凝らして、特定の条件を満たす場合しか動作しないようにしているだろう。そしてバイナリファイルを扱うときは、セキュリティの安全性も考慮するだろう。
基本的にプログラム側は何でもありだが、識別子の判別その他、ある程度様々な考慮をしないと、困った事態が起こり、プログラマーが責任を問われることも起こるかもしれない。
まあその時はいつものように口先だけで謝り、それでも許してくれなかったら、腹をかっ割いて死んでお詫びすれば、世間の人たちは美事な武士道精神と言って、口々に褒め称えてくれるだろう^^。←もちろんこれは冗談^^;;;。
市販のパソコン用ゲームや同人ゲームでは、テキストファイルではなくバイナリでデータ保存するゲームの方が圧倒的に多いだろう。その方がそれらしいしかっこがつく。ゲーム開発ツール側自体も、そうなっている場合が多い。RPGツクールもウディタも、セーブデータの形式はバイナリ。
テキストデータは基本エディタで開けるが、バイナリデータも内容によっては結構ぐちゃぐちゃの状態で開ける。バイナリデータはバイナリエディタで開ける。バイナリエディタのリードオンリーモードやバイナリビューアみたいなものがあれば、データーを壊さないで結構安全にデータ調査できる。
データ内容を秘匿したければ、バイナリ化だけではなく、暗号化も必要になるかもしれない。
===機能の整備===
セーブ&ロード機能の実装時には、まずセーブ機能から作るのがやりやすいという。
しかし最終的には関係関数の整備は、ロード機能が基盤となるだろう。
データや変数を、一定のスタイルでセーブして、一方で正しいスタイルでロードする、この機能が必要なわけですよね。
シリアライズされたデータを、型を決めたうえで配置しなければいけないから、ロードのプログラムの方が複雑に、面倒になる。
結局データのシリアライズは、ロード機能が基盤となり、その機能の作りやすさが、セーブ機能の作りやすさも支配するようだ。
== ゲーム中の特殊イベント ==
*[[ゲームプログラミング/特殊イベント]]
RPGやシミュレーションゲームで、1回しか起きない特殊イベントを作りたい場合もありますね。例えば日本の中世の戦国シミュレーションゲームで、「桶狭間の戦い」が3回も起きたら困りますよね。まあ起きるなら起きてもいいけどね^^。信長君には敦盛を3回舞ってもらいましょう^^。
さて、リンク先ではその話題についての叩き台、「こうプログラミングしたら、いいんじゃない?」、という事を説明しています。
==スケジュール管理==
[[File:Tokai Hairo.jpg|thumb|500px|ガントチャートの例:東海発電所の廃止解体工程]]
個人でゲームを作る時にはあまり考慮しなくていいのですが、シビアな仕事の世界では、スケジュール管理表が良く使われます。
「作業責任分担表」(TRM:Task Responcibility Matrix)といわれるスケジュール表から、それをグラフ的に図示したガントチャートといわれる表を作って、その表を見て作業計画を判断する<ref name="gpd65">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.65</ref>。
{|class="wikitable" style="float:left"
| 仕事
| 担当
| 状態
| 開始
| 終了予定
| 終了日
|-
| 仕事1
| 田中
| 済
| 2021/10/03
| 2021/10/10
| 2021/10/10
|-
| 仕事2
| 田中
| 仕掛
| 2021/10/11
| 2021/10/13
|
|-
| 仕事3
| 鈴木
| 済
| 2021/10/05
| 2021/10/08
| 2021/10/08
|-
| 仕事4
| 山田
| 未着手
| 2021/10/13
| 2021/10/17
|
|-
|}
{{-}}
ガントチャートでは普通、横軸に日程をとります。
商業ゲーム界でもガントチャートの横軸は日程です<ref name="gpd65" />。
ガントチャートとして図示することで、ボトルネック、リスク要素、直感的にスケジュールの詳細や全体像が理解しやすくなります<ref name="gpd65" />。
スケジュール管理のための、現実的、習慣的な工夫ですね。
このTRMとガントチャートは、IT業界だけでなく建築工事でも使われ、これを利用したボトルネックの洗い出しも、建築学の教科書に記述があります。
住宅の新築やリフォームをする時、建築業者がこの表を提示して、見せてくれることもあるでしょう。
業界人ではなくとも、こういう慣習を知っておくと、得るものがありますよね。
==ストーリー制作、そして順序==
ゲーム界、特に商業ゲーム界では、ストーリーもゲームも全体から作っていくようです。アトラス社(ペルソナシリーズ、女神転生シリーズ、などを手掛ける)では、「ゲーム全体に血を回すのが先」、という言葉が良く言われていました<ref>[https://news.denfaminicogamer.jp/projectbook/191030a/2]2020年12月1日に閲覧して確認.</ref>。
プレーヤーが見たいのは、物語の細部ではなく、ゲーム全体のストーリーやテンポ、総合像である、とは限らないのだが、しかし物語を含む創作物では、全体を見て重視し、そこから作っていくのはある意味王道、常套手段ではあります。
ちなみにやや雑談的ですが、日本の週刊漫画は、その週その週での勢いや読者の興味の引き付けも大事なので、全体がないのに、その場その場で場当たり的に作られた事も多かったようです。
現編集者が聞いたことのある話では、週刊少年ジャンプで連載していた本宮ひろ志氏が、不良少年物の漫画で、敵の不良少年グループと1対1000の喧嘩になり、さあいよいよ対決場に着いて勝負だってところで以下次号にし、そして実は本宮氏はその続きを全く考えていなくて、考えてみたけどどう考えてもどう描いていいかわからない^^;;;、そこで仕方ないのでイライラして近所の酒場に飲みに行き、そしてイライラしたままそこの常連達とあり得ない大ゲンカして^^;;、そのままボロボロになって家に帰って、2時間で次の号の漫画を描き終えた、と、本宮氏自身がメディアで語っていたのを聞いたことがあります。
さて、コンピューターゲームである以上、ゲームのストーリーはシステムと連携、調和したものになるでしょう。
そこで、ゲーム作家として、システムを先に決めた後ストーリー、そういう方法論の作者も多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.306</ref>。
とにかく商業ゲーム界では常識的に、全体像から攻めていく。
例えばドラマ脚本では、「ハコ書き」という方法がある。全体像に当たる「大ハコ」を記述してから、「大ハコ」→「中ハコ」→「小ハコ」と記述していく<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.184</ref>。
しかし、本当にすべてのゲーム制作は全体から作る必要があるのか、という疑問はありますが、その方法論に従うとすると、
:*エンディングを大まかに先に作る
:*機能の実験を簡易でいいので事前にしておく(※プロトタイプの項目を参照)
:*使用頻度の高い部分から作る
などの工夫を凝らして、常識的な方法を遂行していくことになるでしょう。
或いは、アルファ版(α版)を中盤から作り始めるとか…<ref>吉冨賢介『ゲームプランナー入門』、P17</ref>。α版の製作目的の一つとして、そのゲームが本当に面白いかの検証がある。面白くないと判断したら、制作中止もある。最初からではなく中盤から作ると、ゲームの全体像が見えるので、検証、判断がしやすい。
つまり全体から攻めて、細部やゲームが作られていくわけですから、必ずしも冒頭部から作り始める必要はないわけです。
;エンディングやラスボス戦闘を早めに作る場合
ゲーム作者にもよりますが、商業ゲームシナリオでは、エンディングを早い時期に作る人も多い<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
システム面についても、先にゲーム全体のクリア条件を決めてから、あとから各ステージの条件を決めていくことが多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.253</ref>。
エンディングの仮の、おおざっぱなシナリオ、そしてキャラクターの性格付けを先に決めておくと、ゲームの方向性と主人公達が目指すもの、ゲームの全世界像が作者やスタッフに明快になっていきます<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
基本的に商業ゲーム界では、全体→部分と細部、の構成を進めていきます。
ゲームは必ず最後にラスボスと戦う訳では無いでしょうが、その戦いはゲーム中で最も高負荷になるでしょうし、全てのシステムが集積する場面でもあるので、エンディングを先に作ると、ゲームの最大負荷の検証ができます<ref name="yth">[https://www.youtube.com/watch?v=kAUkSNhH410] 2020年8月30日</ref>。
3Dゲームでは、RPGなら戦闘シーン、アクションゲームならアクションシーンが、一般的に最も高負荷<ref>ntny著『ローポリスーパーテクニック』、ソフトバンククリエイティブ、2010年2月16日初版第5刷、P28</ref>。
負荷が高くて処理が落ちないかどうかも、この方法で確認できます。
まあ全ての物語は最後の最後が一番の見せ場ですからね。
中盤は重要性が低い…訳では無いが、少し手を抜いておこうという事か^^;;;。
最後は見せ場を盛り込むから、物語を削る必要があるとすれば、それ以外の部分、という事になりますよね<ref name="yth" />。
つまりラスボス戦(必ずゲームってこれで終わるの? ^^;;;)は最重要なので削らない。後の部分は削る可能性あり。だから最後を先に作って作りこんでおけば、制作過程で不測の事態が起こっても、重要部分はできているので、早く、上手にリリースできる。
{{コラム|イラスト制作でも順番を考え直すと打開できる場合あり。|
イラスト雑誌『コミッカーズ』(1995年季刊夏号)(唯 登詩樹 表紙)での藤島康介のインタビュー
藤島(談):よく若い漫画家さんから相談で、「先生みたいに女性の長い髪を書くとき、毛先を書くのが難しいです。根元は書けるのに」との相談を受けるのですが、
僕(藤島)は髪を描くときは毛先から始めて根元に向かって描いてます。
つまりイラスト初心者は、根元から髪の毛を描きたくなるのですが、ここで長い髪の毛を描く場合はむしろ毛先を先に書いて位置決めして、長い毛を描くと割とうまく描ける。
きれいな女性の髪の毛は、毛先の奇麗さが大事ですからね。
ストーリーを作る時に全体を考えたうえで、必ずしも最初から書くことにこだわらない方がいいように、絵を描く時にも同じ発想が有効になる。例えば機械製図でも、正確に奇麗に書くためあるいは実際の製作のため?、位置決めの優先指示の記法がある。
}}
*目標
世の中では目的や目標を明確化せよ、と主張する人は結構多い。現編集者は懐疑的。むしろ他人を自分の都合いいように動かしたいから、その方向を明示したいのだろう。それより、我々の本当の目的と目標は何か、歩みを止めてちょっと考えてみろよ、と、言いたい。
しかし結局世の人たちは目標をはっきり、言語化したがる。ゲームでもそれをすると、プレイヤーがゲームに引き込まれる、と言うが、実際にはそれはゲーム業界のカモになっている、インチキゲーマーだけだろう。
とにかくカモたちは目的を欲しがる。目標や課題がゲーム中で明確になっていないと、疑問だらけになり、ゲームをやめて、業界にお金を落としてくれない。そこで設計の際、各ステージやエリアなどの冒頭で、そのステージの課題や目標などを明示する必要があるという<ref>『ゲームプランナー入門』、P39</ref>。
ファミコンなどの古いアクションゲームではゲーム本編では目標は語られていませんが、しかし説明書などではきちんとそれが語られており、実際にスーパーマリオブラザーズの第1作目の説明書では、目的はクッパを倒してピーチ姫を救出することだと語られています<ref>『ゲームプランナー入門』、P54</ref>。
===チュートリアル、製作順序===
RGBやシミュレーションゲームでは、初めの方は、操作説明のためのチュートリアルイベントになることも多いのですが、ここにも製作順序のポイントは指摘できますね。
基本的にはチュートリアルの細部は後回しにしたい。と、いうのはゲーム本体の仕様変更が、製作過程で頻繁に起こるので、チュートリアルもそれに合わせて後回しにせざるを得ない。
最初の段階でチュートリアルを作りこんでも、仕様変更になれば、その記述自体が不適になる。
当初のチュートリアルイベントがそもそも必要かどうか。説明書、マニュアルに任せてもいいですよね。
基本的にゲーム本体の仕様がかなり変更を含み場当たり的なので、チュートリアルは後回し、ゲーム本編の完成間近の時期になるか、もしくは本編完成後になるでしょう。
==昔のコンピューターゲームと技術の発達、変遷==
ゲーム制作の時は、自分が昔プレイして楽しかったゲームを思い浮かべるし、参考にもしますよね。
ただ、コンピューターゲームは明らかに、周辺技術が時間とともに、かなりの速度で発達、変遷していきますし、過去のゲームを参考にすると言っても、精神面、思想面での参考で、技術面ではやはり、最新の情報技術を取り入れたいと、誰もが思うでしょう。
前編集者は得意げに、古典技芸の世界では、『師を見るな、 師が見ているものを見よ』と、いう言葉があると宣っていますが、そもそもこの国のゲーム業界では、基本的に金と目先の安易な欲望と私欲しか顧みられないし、そこを支配する知性と教養は、善意や誠意や真理とはかけ離れた、歪んだ論理と無駄に衒学的な詳細しか持たないし、権力をもって威張っている連中は、善性や美などとはかけ離れた安易な偏向した物理主義的な議論に明け暮れている連中なので、師などと呼べる人物に出会うことさえ、至難な事でしょう。
=== スプライト ===
ファミコン時代の昔のゲーム機には、一画面に表示できるキャラチップ数(敵チップも含める)に上限がありました。
一画面中に表示できる限界は、だいたい、マリオが一画面中に数十人ぶんです。(実際の数値については、本ページでは触れない。説明の本質には関係ないので。)
ファミコンでは、このような仕組みを 「スプライト」と呼んでいました。(実はマリオ1体の表示の時点で既に、いくつかのスプライトの小単位を合成したものになっているのですが、説明やややこしくなるので、このページでは触れません。)
ともかく、実は昔のゲームのステージ設計は、スプライトの制限を前提にしたものになっています。
極端なハナシ、もしたとえばシュテイングゲームなどで、動く敵100体をボムで一瞬で倒せるようにしたゲームを設計しようとかファミコン時代に思っても、
ファミコンではすでに敵100体の表示の時点でグラフィック性能的に原理的に無理なのです。
どうしても敵100体を表示したい場合、表示のタイミングを変えます。
たとえば、
:1タイミング目では0~10体目までのAグループを表示、
:2タイミング目では11~20体目までのBグループを表示、
みたいにして、タイミングを変えることで、なんとか表示するのです。
このため、画面上に動くキャラクターが多いと、一瞬、ほかのキャラが消えるのは、裏側でこういうタイミング切り替えの処理が行われているからです。
説明の都合上、本ページではキリのいい「10体目」までと 上記の例では表現しましたが、実はファミコンの制限はもっときびしく、横1列上には8体目までしか表示できないと言われています。(しかもマリオ1体自体が、じつは2体×2体の計4体チップを使っているといわれる。なのでマリオ5体は同一ライン上には表示できない。)
なおシューテイングゲームの場合、敵チップだけでなく、敵味方の双方の弾丸もチップを利用しますので、実際の制限は上記の数値例よりも、もっと厳しいでしょう。
また、プレイヤー視点ではキャラクター1人にしか見えていなくても、背の高いキャラクターなどはキャラクター2体以上に相当するなど、注意しなければならないこともあります。
だからファミコン時代のアクションゲームで、巨大ボスのいるステージでは、ボス以外の敵が出現しないのは、おそらくですが、プレイヤー視点では1体のボスに見えても、内部プログラム的には敵チップを何体ぶんも利用しているのでしょう。
しかも巨大ボスは、ゆっくりとしか動きません。
おそらく、そのゆっくりとした時間内にVRAMを書き換え中だったのでしょう。
日本ではコトワザで「ウドの大木」みたいな言葉があるので、なんとなく巨大ボスがゆっくりと動いても不自然ではないかもしれませんが、よくよく考えたら現実世界の大男はけっこう動きが早いです。(レスラーやヘビー級ボクサーなどを考えれば分かるでしょう。)
=== 書き換え速度と背景グラ ===
ファミコンのマリオでは、書き換えの手間を省くために、一説には、たとえばマリオ1の地上ステージの世界の空の青色は、実はほとんどの場合、マリオが横スクロールしても空の青色の部分は書き換えをしておらず、横スクロールする前の青色をそのまま使いまわしていると言われています。
なぜそれで効率化できるかというと、ステージ中の障害物はほとんどのステージの場合で、画面の比較的に低い位置に障害物があるので、その低地の障害物だけを書き換えすれば済むからです。
だからファミコン時代では、こういう理由から、ステージの背景グラフィックや、障害物配置なども決まっているでしょう。
だから果たして、現代でもそれを過去の名作のステージ構成を踏襲すべきかどうかは、分かりません。もちろん、仕組みを分かった上で真似るのなら、それは特に問題ないでしょう。
=== アナログテレビの にじみ ===
ブラウン管では、細かすぎるドットは表示が、にじみます。ゲームに限らず、テレビアニメや一般の実写番組などでも同様、にじみます。(どのように、にじむかは、専門的なので説明を省略する)
だから、ファミコン時代から、だいたいプレステ1時代のゲームのグラフィッカーは、このことまで意識してドットを描いているはずです。
ともかく、液晶テレビとブラウン管テレビでは、同じ画像データでも表示結果が変わります。
レトロゲームから勉強する際は、ファミコン〜プレステ1時代のレトロゲームでは、データ上の解像度よりも実際のディスプレイ上の映像は細かいことに気をつける必要があります。
たとえば滲み(にじみ)を意図的に利用することでテレビの解像度以上の表現をしていたりしていました。
また、ファミコンのドットは縦横の長さが縦方向と横方向とで長さが違うので、そこまで考慮して、グラフィッカーは絵を描いています。
また、ドットの図形的な細かさだけでなく、色についても、にじみによって、当時のゲーム機の色用のビット数の限界を超えた表示をファミコン時代から行っていました。
つまり、同じドットの黄色の単色でも、そのドットの幅が1ドットか2ドットかで、テレビ上で表示される色が違います。「色が違って見える気がする」ではなく、実際にブラウン管のディスプレイ上では色が違うのです。言い方を変えると、ブラウン管テレビでは元の画像データ通りには色は表示されていません。(さらに縦方向と横方向とで色のにじみ方が違うが、専門的すぎるので、説明は省略する。wiki書くために調べるほうも大変なので。)
なので、もし現代の人がファミコン当時のゲーム作品のグラフィックを参考にする際は、このことに気をつける必要があります。一番、手軽なのは、そもそもグラフィックの細部については参考にしないことです。
これはつまり、もし公式エミュレーターなどでファミコン時代の古いゲームを、現代の液晶ディスプレイ用のゲーム機でプレイしても、エミュレーター側で過去テレビのグラフィック特性の再現のための特別な工夫をしてないかぎりは、実はグラフィックの表示結果が当時のものとは異なるわけです。
一方、パソコン市場では、ノートパソコンの普及し始めた1999年頃には液晶ディスプレイのものが比較的に安価で出て来たので、この頃からパソコンゲーム市場では次第にブラウン管のにじみを考える必要が無くなったでしょう。
なお、アナログテレビはそもそもテレビ自体の解像度が低いので、プレステ2時代あたりからのゲームには合いません。だから、プレステ2時代あたりからは、あまりブラウン管の特性を考える必要はなくなります。
逆に言うと、あまり指摘されないことですが、プレステ2時代の当時の人が当時の最新ゲーム機をプレイするには、もし既存のアナログテレビを使い続けていた家庭は、テレビ受像機そのものを買い換える必要があったという亊です。
一応、家電量販店などでテレビ用のアナログ/デジタル信号の変換機などを購入してテレビに接続するなどして使えば、デジタルテレビ用のゲーム機もプレイ可能ですが。
だからアナログ放送自体は2010年くらいまで続いたとはいっても、あまり当時のゲーム機をアナログ用テレビでプレイしていたとは考えにくくはあります(プレイヤーの好みによる)。
アナログ停波以降の時代である2010年以降の現代では、もうテレビ番組の受像でもブラウン管は一切用いられていないので、もはや現代のコンテンツ制作では特に考える必要はありません。
ブラウン管自体のドットの縦横が違っている。
このため、ブラウン管を前提にしたゲーム機やパソコンはそれに対応するために画像データ側のドットの縦横比が違っている。
ゲーム機やパソコンの種類、さらにはアーケードゲームの基盤といったハードウェアの種類ごとに、コンピュータ側でのドットの縦横比の管理は違っている(らしい)。このため、移植のたびに、ドットは書き直しになったようだ。
古いゲームの制作では「ドット用紙」という方眼紙のような印刷書面がある(らしい)のだが、そのドット用紙の時点で1マスの縦横比が少しだけ違い、1マスが長方形である。1ドットだけでは長方形であるのに気付かないかもしれないが、しかし「ちりも積れば山になる」ように、何十や百ドットも積み重なれば、縦横の長さは大きく違ってくる。
現在のパソコン用のドットエディタ(という画像制作ツールがある)は1ドットが正方形であるが、しかしファミコン時代は1ドットが(ドット用紙の時点で)少しだけ長方形である。(なお、画像制作ツールそのものの作り方については、『[[ゲームプログラミング/画像ファイルの作成プログラム]]』で説明する。ゲーム制作では普通は必要ないが、知識として。)
ファミコンの色数制限は52色から4色×4パレット(1パレットあたり4色)を使えると言われている<ref>[https://mynavi-creator.jp/blog/article/history-of-2dcg-designer
『2DCGデザイナーなら知っておきたい2DCGゲームの歴史』 2017/8/21 マイナビクリエイター編集部 ] 2021年12月30日に確認. </ref>。しかし実際には、4色のうち1色は透明色として利用される色であり、全パレット共通の色である(なので3×4=12色になることのいなる)。スプライトのパレットとは別に背景のパレットがあるので実際には、もっと16色以上の多くの色数が一画面内で使えるが、しかしその他のさまざまな制限があるので、合計で一画面内で25色が使えると言われる(12 × 2+1 = 25)。
しかし実際には、ブラウン管の滲み(にじみ)を利用しているので、当時のプレイヤーには1パレットだけで描かれた1キャラのキャラチップ内でも3色以上の多くの色が見えているだろうし、画面全体でも25色内にない色がプレイヤーの目には映っていることになるし、もしかしたら52色にない色がプレイヤーには見えているかもしれない。なお、スーパーファミコンの色数制限は32,768色から16色8パレットであると言われている。
レトロなゲーム機では、さらにメモリ容量やストレージ容量などの制限もあり、けっして仕様上の最大色数を気軽に利用できたわけではないだろう。こういう制限もあったからか、ネットではファミコンの色数が「4色」やら「8色」、スーパーファミコンの色数が「16色」や「256色」などとも言われることもある。
{{コラム|「ドット絵」とは|
よく世間には、ファミコン時代のゲームの、ゲーム中での絵柄のことを「ドット絵」という人がいます。プレステ1やセガサターンのポリゴンによって、「ドット絵」が無くなったと思っている人もいます。
しかし現実には、プレステ以降でも、顔ウィンドウの顔グラフィクや、キャラチップなどのグラフィックでは、その制作時にドット単位のグラフィック指定は行われています。
たとえば装備品で武器の横に小さい剣の絵などのアイコン画像が書かれている作品などもありますが、こういったアイコン画像もドット単位の指定で描くでしょう。
こう指摘すると、「プレステ1以降のゲームは解像度が高い」とかよくわからない反論をする人がいますが、しかし「ドット」という工学用語のどこにも、「解像度が低い」とかの意味はありません。また、「ドット」というのをブラウン管ディスプレイの映像だと思ってる人もいます。
しかし、液晶ノートパソコンの普及した2001年以降の液晶モニターの時代ですら、
「液晶のドット欠け」などのように「ドット」という用語は使われます。
「ドット」というのは、けっしてゲーム用語ではなく、「液晶のドット欠け」のように電子工学などですでに意味が決まっているので、ゲームオタクの戯言(ざれごと)は「ドット」の意味には無関係です。
さて、プレステ1以降のゲームでもキャラチップなどでは、ドット単位の指定が行われるのでした。
それどころか、携帯ゲームソフトでは、ガラケーの時代から既にドット単位の指定は現役の手法であり、スマホゲーム時代の現代でも現役です。
だから「ドット絵には魅力がある」とかいって、ファミコン時代のゲームばかりあげる人は、こういう現役のドット絵作家の努力が目に入らない人ですので、なるべく信用しないほうが良いと思います。
また、画像編集のフリーソフトまたはシェアウェアで、現代でも「ドット エディタ」と呼ばれる種類の画像制作ソフトがあり、少なくとも2D同人ゲームの制作ではよく使われます。
ツクールやウディタのドット絵を作る場合でも、ドットエディタを使って作るわけです。
ゲームに興味なさそうな人が「ドット絵」をレトロゲームの絵という意味で使うのは仕方ないかもしれませんが、しかしゲーム通みたいな顔して「俺ってけっこうオタクなんだぜ」みたいなフリしてるのに、レトロ的な用法で「ドット」という言葉を使う人はアレです。
おそらく、本当はけっしてドット絵が好きなんじゃなくって、単に自分の子供時代の思い出が好きなだけだと思います。
ニュアンスは違いますが、アニメ評論でもそういう話があります。1990年代後半に岡田斗司夫と誰かの対談で(おそらく書籍『マジメな話』での対談)、
「アニメの黄金期はいつか?」というよくあるアニメオタク談義について、
対談相手が言うには、
よく「70年代だ」「いや80年代だ」とかで議論が始まるが「いや12歳だ」というオチが有名だと。
}}
=== アナログテレビの焼きつきなど ===
あまりゲーム評論では指摘されないのですが、
このほか、ファミコン時代はテレビ受像機がアナログのブラウン管ディスプレイなので、
あまり長時間、同じ色をディスプレイ上の同じ位置に表示し付けていると焼きつきが起きる可能性があるので、
ステージごとにコンセプトになる背景色を変えたり、
あるいはステージの背景色を黒にしたステージを増やしたりとかの工夫も、必要だったかもしれません。
ゲームではないですがパソコンソフトなどの古いソフトは、こういったディスプレイの焼きつきの事を考えており、だからスクリーンセーバー機能の搭載など何らかの対策をしています。
ともかく、あまり、特定の色ばかり続けて使いすぎないようにする工夫が必要だったでしょう。
アナログテレビは西暦2010年のアナログ停波する時代まで使われていたので、焼きつき問題はファミコン以降のプレステ1~2時代のゲームにも関係するでしょう。
ネット上にはデマで「ブラウン管だと焼きつきが起きない」(×)というデマがあるが、しかし西暦2001年くらいの筐体パソコンのモニターはまだブラウン管が多かったし、その時代からすでに焼きつき防止のためにスクリーンセーバーがWindowsに搭載されていた。だからデマ「ブラウン管だと焼きつきが起きない」(×)にダマされないように。
なお、現代のテレビ受像機には、焼きつき防止のためにすでに「ピクセルシフト」という機能があって、
これは画面上の映像の表示位置をタイミングによって微妙にズラす機能です。こういう機能がすでに搭載されているので、わざわざゲームソフト側で実装する必要はない。そもそも液晶モニターは、焼きつきが起きにくい。ただし有機ELはどうだか、まだ新しい技術なので分からない。
== 脚注 ==
<references />
== 関連項目 ==
* [[ゲームプログラミング/コンピュータゲームの種類]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
* [[プログラミング]]
* [[w:ゲームプログミング]]
{{DEFAULTSORT:けえむふろくらみんく}}
[[Category:ゲーム]]
[[Category:情報技術]]
{{NDC|007.64}}
c5aata14f77xsiqmy5p58mdjtf2xg1j
205982
205981
2022-07-29T11:13:47Z
Honooo
14373
/* スプライト */
wikitext
text/x-wiki
<div class="pathnavbox">
* {{Pathnav|ゲーム}}
* {{Pathnav|工学|情報技術|プログラミング}}
</div>
== 概観 ==
このWiki参考書では、コンピュータを用いた[[w:ゲーム]]のプログラミングを扱います。つまり、いわゆる「テレビゲーム」や、[[w:コンピュータゲーム|コンピュータゲーム]]に関する記述についてです。
ここでは家庭用のパーソナルコンピュータで扱える範囲の事柄、それらのゲームソフトをつくるためのプログラミングについて議論します。必要に応じて家庭用ゲーム機の話題にも触れますが、あくまで派生的なものです。本書はプログラミングの教材であるので、大多数の読者が最初にプログラミングで触れるであろうパーソナルコンピュータでのプログラミングを、特にことわらないかぎりは想定しています。
用語に関して、コンピューターゲームの世界独自なものもあるでしょうから、適宜『[[ゲームプログラミング/コンピュータゲームの種類]]』などを参照してください。
== 本書の目的 ==
この教科書『ゲームプログラミング』の目的は、題名にもあるとおり、プログラミングによってゲームを作るための技術の参考資料を目的としています。
ゲームクリエイターやゲームデザイナー(絵描きではなくゲームの設計者のこと)のためではなく、プログラマーのための教科書です。
したがって本書では、ゲームとは関係の少ない一般IT企業での仕事のしかたについての記述もあれば、製造業系の組込ソフトなどに関する概要的な記述もあります。
なぜなら本書はゲームクリエイターではなく、たまたま何らかの理由でゲームを作っているプログラマーのための教科書だからです。たとえゲーム会社を退職しても、他の一般IT企業に転職してもプログラマーとして応用できることなども目指して本書は書かれています。
従って、紹介する話題が、かなりIT系、テクノロジー系の話題に片寄っています。本書で紹介するクリエイター論やデザイン論は、派生的なものにすぎません。
;本書を扱う上での注意点
特にことわりのないかぎり、本書ではC言語でのプログラミングによってゲームを作りたい読書を念頭に説明しています。
だから、ゲームの生産効率性を無視してでも、本来ならRPGツクールのような開発ツールを使ったほうが早いシンプルなゲームの場合ですら、本書ではC言語または他のプログラミング言語での開発にこだわった方法を説明している場合もあります。
;その他、本書について
このページとそのサブページだけを見ていると本書は「ゲームクリエイトの教科書かな?」と捉えられるかもしれませんが、
しかしこのページとは別に本wikibooksには「[[プログラミング]]」というページがあり、そこではC言語やJavaなど代表的なプログラム言語のwiki教科書にリンクしています。ゲーム限定の話題ではないですが、プログラミングのコードについても、そちら『[[C言語]]』や『[[Java]]』やなどの教科書のほうが(実際に動作するコードの量が)充実しています。また、Visual C++ での画面出力については『[[Windows API]]』に入門的な説明があります。
本書『ゲームプログラミング』はそういったプログラミング教科書一覧の一部でもあります。C言語やWindows API の教科書では、これをどうやってゲームのプログラミングに応用すればいいか説明できないので(本wiki『[[C言語]]』はけっしてゲーム目的のページではないので)、ゲームの実際としてプログラミングの話題を切り離すために本書『ゲームプログラミング』は存在しています。
なので本書にゲームデザイン論やクリエイター論などの内容の充実は期待できません。
本書『ゲームプログラミング』は現状、プログラマー目的以外には対応できないかもしれません。もしプログラマー目的以外の無料のwiki教科書が欲しい方は、現状では、自分で本wikiに加筆するか、あるいは本書『ゲームプログラミング』とは別に新規Wiki執筆を検討していただきたい。
== ゲームを作りたいな、よし、ゲームを作ろう。でも… ==
===しかし自分の本当の目的ってゲーム作り?===
「ゲームを作りたい」と思ったのなら、まずはあまり細かい難しいことは考えず、実際に作り始めてみるのが一番いいと思います。もちろんプログラミングについてほとんど何も知らないのなら、ある程度の勉強は必要ですが、ある程度の知識があるのなら、プログラミングの技量や知識の充実を気にするよりは、実際にゲームの完成を目指してプログラムを書いてみるのが一番いいようですよ。その過程でプログラミングの学習や経験は積んでいけますしね。JavaScriptやPython、無料でプログラミングに取り組める環境も、今現在では充実しています。
しかし、ゲームをプレイするのが好きだからと言って、ゲームを作る、までが本当に自分が好きかどうか、試しに少し作ってみたら、少し考えてみるといいですね。
例えば読者の中には、「私はRPGがすき」という人も多いでしょう。
RPG が好きという事はおそらく、よくRPGの題材になる西洋ファンタジーのストーリーや世界も好きという場合が多いでしょう。そして一方で現実のコンピューターRPGで魅力的に提供される、イラストや音楽が好きという場合もあります。
実際のゲーム業界の人々も、ゲームを彩るイラストレーションや音楽がいかに重要な要素かを語っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P85</ref>。
さて、ここで問題なのですが、「ゲームを作りたい」と貴方が思っていたとして、あなたが本当に作りたいのはゲームなのか?あるいは本当はイラストが描きたかったり、音楽を作りたいのではないか?
…というのは、ゲームというのは総合的な分野ですから、イラストや音楽はその要素として確実にありますが、それ以外、プログラミングやシナリオなど、様々な創作や創造が必要で、全ての作業量はかなり多いものになるでしょう。
そしてゲーム、コンピューターゲームにはゲーム独自の世界観があって、現実や小説や映画とは違う、独特の法則に支配された世界を作る必要があります。ある意味リアリティを持たない、リアリティから外れた世界です。だから、小説のようなリアリティにこだわるなら、ゲームは不向きかもしれません。
ゲーム作り始めの時点では、これらの判断は明確でなくても勉強目的でも構いませんが、しかその内「自分は本当にゲームを作りたいのか? Yes or no?」という疑問への答えが必要になるときがくるかもしれません。
試しにゲームを作ってみて、もし自分の本当の目的がゲームでないと分かったなら、それ以外の活動に移るのも、取る道の選択肢でしょう。
;給料は安い
職業として、商売としてゲームを作る場合、ゲームプログラマーの給料は洋の東西を問わず、安い事が知られており、書籍などでも言及されています。たとえば『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』(ジョン・ソンメズ 著)という欧米人のプログラマーの書いた本には、アメリカのゲーム業界ですらハードワークの割に賃金が低い事が記載されており、もし給料の高い仕事につきたいならウォールストリート(※米国の金融ウォール街のこと)のための仕事をするべきだと書籍中で指摘しています。
日本でも同様にゲーム業界の報酬が低いことは知られており、多くのゲーム会社の伝記漫画でも、よく語られています。
アニメーション業界と比べたら、ゲーム業界のほうが報酬が高いことは事実かもしれませんが、これは実は恐ろしいことに、アニメーション業界の報酬が異常に低いだけで、アニメーション業界よりはましだけど、結局は…というのが現状でしょう。
=== 同人ゲーム以外の発表の場 ===
2001年ごろの日本はネットを活用した同人ゲーム黎明期、フリーゲーム黎明期で、実験的な時代でもあり、多くのイラスト愛好、創作者や音楽創作者がゲーム制作に手を染めていたようです。この頃、まだイラスト投稿サイトや小説投稿サイトといったものは無かったか、あったとしても小規模でマイナーなものでした。
しかし2010年のあたりから各種の投稿サイトが普及したことにより状況は変わり、むしろ現在では、小説やイラストを発表したい人はそのジャンルの投稿サイトに直接アクセスしたほうが早く、そのためゲームを通して発表するのは人によっては廻り道かもしれません。
それをわかったうえで、それでもゲーム制作に身を投じるかを考えた上で、「よし、自分はゲーム制作をしよう」と思えるなら、ゲーム制作をするのが良いでしょう。
実際、今現在の作曲家やイラストレーターは、ゲームに関わったとしても、専門家として楽曲やイラストを提供するという立場に過ぎない場合もあり、自分自身が主体になってゲーム制作をする人は、プロアマ問わず少数派のように見えます。
同人ゲームの世界でも現在は(2021年頃に記述)、プログラマー系の作者が圧倒的に多い様です。
しかし、専門外の人だからこそ、メディアミックス的な意外な視点で新しいものが作れる可能性もあるかもしれません。コピーライター、作家の糸井重里が、マザー2の企画にたずさわった例もあります。しかし、あくまで「可能性」であり、成功はけっして保証されてはいないので、読者の自己責任でお願いします。
今現在のゲーム専門学校のカリキュラムはプログラミングが主体です。CGの授業は、週に2時間程の様。一方でゲームCG、或いは、一般CGに特化した学科もある様です。
あるWikibooks編集者Aは、もしイラストを描きたいなら、イラストの世界で描くのが安全、と考えています。ゲームプログラミングについては、プログラムを書ける人は絵コンテも描けそうだし、基本的にある程度の作図的なイラストを描ける人は多いだろうから、別にプログラミングに専念しろとは思っていません。
さて、読者がゲーム制作を職業として目指すのかどうかはともかく、とりあえず、ゲーム業界の状況を知っておくのが有用でしょう。
結局商業界の状況が権威をもってその分野を支配しているのがこの社会の基本なので、趣味でも職業でも、業界周辺のことを知っておくのは得ることが多いはずです。
文献『レベルデザイン徹底指南書』では、現実世界で自分が新しいスキルを1つ覚えたら、古いスキル1つはどれか忘れる必要があることを説いています<ref>大久保磨『レベルデザイン徹底指南書』、2016年12月14日 初版 第1刷発行、P81</ref>。著者は、最初はグラフィッカーでしたが、しかしプランナーに転職したので、グラフィック関係の技能は仕事では「忘れて」しまった、という内容を述べています。ただし、比喩的に「忘れる」とは言っていますが、実際には忘却し無くなってしまったわけではなく、仕事では時間の都合により両立できないので、グラフィック関係の技能は例え話で「忘れた」、のであり、現実にはグラフィッカー時代に培った観察眼をプランナー時代の現在でも活用している、と、書籍中では述べられています。
このことは職業、あるいは技能とは一般的にそういうもの、と考えることができるでしょう。
{{コラム|漫画家大塚志郎のアドバイス|
同人ゲーム界では、ゲーム制作と、イラストまたは作曲などを一人で兼ねている作者も、ある程度は居ます。一方ネットの世界には様々な簡単に利用できるフリー素材もあるので、イラスト作画や作曲をしなくてもゲーム制作は可能ですよね。
一人でイラスト作画や作曲をしながらゲーム制作をするのはある意味マルチタレントだとも言えますが、現実にその創作をしている人たちは、かなり年長のこの分野の熟練者が多いようです。若い19歳ぐらいの頃に、それらマルチジャンルを両立するのは、一般にかなり困難なことだと思われます。
漫画家の大塚志郎は、漫画家を漫画創作の手本にするならデビュー時代を手本にするのが良い、と、漫画家向けの技法の教育漫画で語っています。
大塚は、漫画家の人生のうちで、これからデビューを目指している新人に近い境遇にあるのは、ヒット後の漫画家の生活状況ではなく、まだ無名・マイナーな時代の態度・生活だ、と描いています。成功後の熟練した漫画家より、若いデビュー直後の作家をお手本にするのがいいだろう、という主張ですよね。
さて、それでもデビュー時代から複数ジャンルの同人活動を均等に兼業する意思が硬いなら、それはそれでひとつの考え方ですが、上述のリスクを知っておく必要があるでしょう。
}}
===ゲーム業界は産業のエンジン役?===
かつてはゲーム産業が、日本のIT産業やデジタル家電産業の中心的・牽引(けんいん)役であった時代がありました。しかし、2010年以降、この考えは当てはまらなくなっています。
PlayStation2あたりまでの時代は、経済評論誌の未来予想でも、「もしかしたら今後、家庭用の据え置きゲーム機がパソコンの代替品として、家庭のリビング家電の標準品になるかもしれない」という予想があった。ゲーム産業がそのような牽引役として、経済界から期待されていました。ソニーが国産CPUをプレステ2〜3に搭載したり、WindwosのマイクロソフトがXBOXでゲーム機に参入したり、そういう時代です。
しかし2020年代の今は違います。結局、2020年代のゲーム機に使われてる技術や部品は、パソコン用の部品や技術の流用、ゲーム機のCPUも、今やインテルなどのパソコン用CPUをゲーム機でも使っています。
もはや現代は、ゲーム業界は、産業のエンジンではないようです。
ですから今現在、新しい技術に興味ある人は、ゲームにこだわらず、直接的にその技術を勉強し改良したほうが近道です。
たとえば、インターネット技術を使って何か新しい事をしたいなら、ゲームを作るよりもwebアプリやサーバーwebサービスを作るべきだし、目的のネットワーク用ソフトウェアをそのまま制作したほうが早いし確実です。
古い経済知識の先入観にとらわれず、無理にゲーム制作にこだわらないほうが、自分自身の技能やキャリアも開けていくでしょう。
2010年に出版された商学書籍『メイド・イン・ジャパンは終わるのか』には、「しかしながら、ファミリーコンピュータで世界に攻勢をかけ、その後圧倒的な強さを誇っていた日本の家庭用ゲーム産業も、90年代末からはその競争力にかげりがみえはじめた。日本の国内市場は伸び悩み、成長率は鈍化傾向にある(図表7-3)。」とあります<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.263</ref>。
その「図表7-3」の統計値によると、
:ファミコン発売の1993年には2268億円、
:スーファミ発売の1990年には2430億円、
:プレステ1発売の1994年には3882億円、
:1995年には急成長して4769億円、
:1997年には4795億円で、ほぼこの頃がピークであり、
:2000年には3768億円にまで低下(プレステ2の発売年)、
:2005年には3151億円まで低下(XBOXの発売年)、
である。(青島らが『レジャー白書』、『情報メディア白書』、『月刊トイジャーナル』、『CESAゲーム白書』などをもとに作成した図表の統計値です。)
<!-- ところで前編集者Sさん,これって正確には何の数字,金額なの?それを後で書き足しておいてほしいんだけど…。あれかな?一年のこの国のゲーム産業の売上高? -->
また、2010年の時点の商学研究では、1997年を境に、ゲームソフト市場で競争する企業数が増加傾向から減少傾向に転じた<ref name="m289">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.289</ref>、とも言われています。
書籍『メイド・イン・ジャパンは終わるのか』にも、引用文「家庭用ゲームは日本がその本格的立ち上げを主導し」<ref name="m91">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.91 </ref>と書かれているぐらいで、1990年代は日本のインパクトが強かったようです。
なお、携帯電話の分野で、日本は国際的な地位を喪失したのに対し、デジタルカメラとゲームは「現代」(参考文献の著作時2010年ごろ)でも日本が主要な地位にある<ref name="m91" />。
{{コラム|ゲームが産業の牽引役だと語った人物|
1998年頃、アニメ評論家の岡田斗司夫が、未来予想の一貫として、「これからゲーム機が、(パソコンではなく)家電の中枢になるだろう」というような内容の未来予想をしていました。たしか、岡田の著書『東大オタキングゼミ』(自由国民社、1998年)で、このような未来予想が読めます。岡田の東大での講義を加筆修正してまとめた書籍なので、実際の講義はその数年前に行われていたのだろうと思います。
岡田の東大での講義は東大生のその後の進路、官僚や大企業のビジネスマン達に大きな影響を与えただろうし、若手新進評論家として、この国の政治・経済人達も、その言論を参考にしただろう。
実際、2008年(リーマンショックあたり)くらいまでの日本の家電業界の投資は、ソニーがゲーム機のCPUを作ったりと、岡田の予想を参考にしているような面もありました。
ですが実際の2001年以降の家電業界の結果は予想とは少し外れました。まず
:* そもそも、冷蔵庫もエアコンも全然デジタル化(IoT化)されず、家電のほとんどが外部からのコンピュータ制御を必要としない状況。
:* 個々人が持ち歩いているデジタル家電は、携帯ゲーム機ではなくスマホになった。
:* パソコンは多くの家庭にいまだにインターネット用端末などとして残り続けている。
一方岡田は東大オタキングゼミで、98年当時の時点で任天堂が莫大な現金資産(たしか数千億円ほど)を持っていることに注目しています。
一般の大企業は、現金ではなく株券や不動産などの形で資産を蓄えています。しかし任天堂は、銀行口座の現金だけで数千億円という、非常に資金力の高い企業でした。今や日本を代表する世界的なゲーム大企業になっています。
また、日本だけでなくマイクロソフトのXBOXなど、実際に欧米の企業も昔はコンピュータゲームが産業の牽引役だと思って、先をこぞってゲーム機に参入していたわけでもある。岡田の未来予想は、決して根拠の無いものではなかったのです。
}}
{{コラム|読書について|
ゲーム業界と関連のない文献も、この教科書では出典として書かれていますが、これはこの頁の主要執筆者Sが、多量の市販本を読む以外に知的活動の方法を知らないことと、自分自身の文章の権威と信頼性を、著名人の威を借りて確立したいからでしょう。
ゲーム業界を志望するなら、ゲーム業界人の書いた本は少なくとも何冊かは読んでおくといいでしょう。
ネット上では、業界人ではないのにもっともらしく書かれた文章も多いですし、おそらく本Wikiの執筆者にも本格的なゲーム業界関係者は一人もいないでしょう。
業界人達のSNS発言ではなく、現代では書籍があるので、実際に書籍を手に入れて読むのがいいですね。書店で販売される書籍というのは、けっして著者だけの意見でなく、編集者や校正者、周辺の職業人達が査読をして、内容の信憑性を確認しています。
<!-- ニュース解説者の池上彰(いけがみ あきら)が、たしか2011年くらいのテレビ番組で言っていたことだと、編集者Sは言っている。 -->
何十冊も本を読むよりはプログラミングを書く実践のほうが重要でしょう。
『ゲームデザイン プロフェッショナル』著者であるFGOクリエイターも、ゲーム開発の書籍は読んでおくべきだと忠告しています<ref>『ゲームデザイン プロフェッショナル』、P234</ref>。また、ゲームデザイン本で学んだ知識は、ゲーム業界以外でも仕事術として活用できます。たとえば上司への業務報告の報告・連絡・相談(ホウ・レン・ソウ)などの考え方は、ゲーム業界でなくても活用できます<ref>『ゲームデザイン プロフェッショナル』、P332</ref>。
いっぽう、もし最新IT技術を勉強したいなら、読むべきは、ゲーム制作の解説本ではなく、そのIT技術の解説本など、そのものの書籍を読むほうが近道でしょう。
}}
===ゲームプログラミングは面白い。しかし、そんな楽な事ではない。===
ここでいう「プログラミング」とは、C言語などのプログラム言語による開発のことです。RPGツクールなど開発ツールによるゲーム制作の話は原則していません(本書『ゲームプログラミング』はあくまでプログラミングのための教科書です)。
さて、よくネットや、あるいは日常でも(C言語などによる)「ゲームプログラミングは簡単だよ。イラストやシナリオのほうが難しい。」、などという人がいますが、この発言の心は、「俺はプログラミングもイラストもシナリオも出来る凄い男だぜ。しかもプログラミングなんて簡単だし、むしろクリエイティブなイラストやシナリオの方に精力を費やす偉い奴だぜ^^」という、世間に良くいる武勇伝、自慢を語りたがる、インチキ親父が吹かしているだけなので、あまり真面目に取り合わないのが正解だと思います。
まず第一に、不当にプログラミングの価値を貶めている言説ですよね。
Visual C++またはVC# 、あるいは Direct Xなどを使ってプログラミングすることは、そんなに簡単なことではないでしょう。
ゲームプログラミングの入門書などには、初心者でも理解できそうな比較的簡単ないくつかのサンプルコードがありますが、それは初心者でも簡単に書けそうな技術だけを抜粋してるという、あくまで例外です。
RPGならたとえば、ドラクエ3のような戦争画面の行動順を処理するソート機能をつくるだけでも一苦労ですし、ほかにも道具・アイテムなどの自動整理をはじめとする標準機能を作るだけでも一苦労です。
決して上手い人のサンプルコードをコピーアンドペーストをして終わりという訳にはいかず(そもそも現状そのようなサンプルコードがネット上に無いですが)、もし仮にサンプルコードがネットに公開されていても、自作品に組み込む際にさらにそれをデバッグ(決してテストプレイの意味ではなく、実際にコード修正が必要になります)しなければならず、プログラミング言語の理解が必要です。
ゲームのプログラミングは決して楽ではないし、仮にもし楽だとしたら、じゃあゲーム会社のプログラマー職の人の仕事は何なんだ・・・という疑問につながりますよね(デマを言ってる人は、この疑問を脳内に都合よく無視しますが)。
ツクールやエディタのような制作ツールを使えば、C言語的なプログラミングは不要ですが、それはそのツクールなどのツールを開発している人達にプログラミングを肩代わりしてもらっているだけなので、決して「ゲームプログラミングが楽」、ではないでしょう。楽だというなら、じゃあツクール開発元の角川書店およびその発注先ソフトメーカーのプログラミングが楽だとでも言うのか・・・(デマを言ってる人はこの疑問を無視します)。
そもそもコンピューターゲームというのはプログラミングがなければ成立しないのですから、そのプログラミングの価値を貶めて平気な人は、コンピューターゲームにかかわる資格はないでしょう。
== ゲーム制作に関する留意点 ==
=== IT的な留意点 ===
====プログラミングなしでも同人ゲームを作れる====
自分でゲームを作る際、必ずしも、C言語などプログラム言語で記述する必要はありません。
プログラミングをせずに、ほぼマウス操作と会話メッセージなどの文章のキーボード入力だけでゲーム開発をできるようにするソフトウェアが、有料または無料で発表されています。
たとえば、RPGを作りたいなら、日本で発表されているソフトでは、『[[w:RPGツクール]]』や『[[w:WOLF RPGエディター]]』などのように、RPG製作に特化された開発ソフトがあり、大幅に開発の手間を減らせます。なお、『RPGツクール』は有料製品です。『WOLF RPGエディター』は無料ソフトです。
アクションゲームを作りたいなら、『[[w:アクションゲームツクール]]』があります。これらツクール製品は有料製品です。(なお、かつて『[[w: 2D格闘ツクール2nd.]]』というのがありましたが、しかし現在ではサポート切れのため、今現在の市販の十字キーコントローラーが初期設定では動かない、一部のボタンしか使えないなど問題点があります。)
また、ノベルゲームを作りたいなら、フリーソフトの『[[w:吉里吉里Z]]』などがあります。吉里吉里Zはソースコードが公開されており、オープンソースになっています。
:なお、とりあえず「ゲーム開発ツール」と呼びましたが、じつは呼び方は特に決まってはいません。「ゲーム制作ツール」と呼ぶ場合もあります。ゲーム開発ツールのことを「ゲームエンジン」と言う場合もありますが、開発ツール以外のゲーム用ランタイムのことも「ゲームエンジン」という場合があります。
:本Wikibooksでは、とりあえず、ツクールや吉里吉里シリーズやウディタ(WOLF RPGエディター)などのソフトの呼び方は、まとめて「ゲーム開発ツール」または「ゲーム開発ソフト」と呼ぶことにします。
C言語などによるプログラムは、上記のゲーム開発ツールを使わない場合の選択肢になるでしょう。
既存のゲーム開発ツールの仕様に不満を感じる場合に、「じゃあ自分でプログラムして作ろう」となり、プログラミングが必要になるわけです。
なお、上記の開発ツールはほとんどがWindows用のソフトです。MacやLinuxでは動きません。MacやLinuxで動作するゲームを作りたい場合は、別のソフトウエアを使う必要があります。
既存のゲーム開発ソフトを使わずにプログラムを組んでゲームを自作する場合、必ずしも既存のツールのような、ゲーム作品と開発ツールが分離された仕組みを再現する必要はありません。
一般的に初心者が、ゲーム開発ツールを作ることはほぼ不可能です。初心者は開発ツールを作ることは考えずに、まず1本、とりあえずゲーム自体を完成させてみましょう。開発ツールを自作したいのなら、まず先にゲーム1本を完成させたあとに、あとから開発ツールとゲーム作品の分離などに取り掛かるのが推奨です。
==== 商業ゲームの開発言語 ====
基本的に、現代の商業ゲームは、C言語で開発をする。
ただし、ファミコンの古いゲームは、アセンブラで開発されていた。ファミリーコンピューターからスーパーファミコンに至るまで、OSは搭載されていない<ref name="m289" />。
ではいつからC言語がゲーム開発に使われるようになったかというと、商学の学説では、プレイステーション(※ おそらくプレステ1?)の頃からだろう、と考えられている<ref name="m289" />。ただしこの時代でも、処理速度の高速化のためにアセンブラにアクセスする開発チームも少なくなかった<ref name="m289" />。
また、プレイステーションのOSは独自仕様である<ref name="m289" />。
カプコンなど一部の企業は、OSによる開発ではなく、移植性を高めるために自社製の内製フレームワークを用いて開発する。カプコンの場合、2010年頃は「MTフレームワーク」という自社製フレームワークを用いて開発を行っていた<ref name="m289" />。
{{コラム|ゲーム用のメーカー独自プログラミング言語について|
ゲーム開発ソフトには、ゲーム開発用の独自のプログラミング言語を持っている場合があります。このような機能の実現方法は、原理的には、ファイル入出力の関数を使い、テキストファイルの文字列を読み取って、文ごとにプログラム動作を設定・実行している、と、考えられます。インタプリタは、このような方法で作られています。
ゲーム製作ソフトでの独自のプログラミング言語はたいてい、コンパイル作業を必要としないので、おそらくインタプリタ方式でしょう。
基本的にWindowsの場合、実行ファイルに変換するには、Visual Studio というマイクロソフト社の配布している開発環境が必要です。
Visual Studio が開発環境を提供していない独自言語は、たいてい、インタプリタ方式となると思われます。
コンパイラ方式に比べて、インタプリタは処理速度が不利なので、適用できるジャンルや用途が限られます。たとえば3Dアクションゲームには、インタプリタ方式は不向きでしょう。
これらの独自言語を使うにしても、自分自身で独自言語を作りたいと思うとしても、この教本ではまず、既存のプログラミング言語を使ってゲーム制作を開始することを推奨します。
}}
====ゲームのプログラム言語の歴史====
ゲームを書くために利用される言語は多岐にわたっています。歴史的にはゲーム業界でも、[[C言語]]や、特に計算機のスピードが重要になる場面では[[w:アセンブリ言語|アセンブラ]]を利用してプログラミングを行うことが普通に行われていました。<!-- (文献)→-->そのため、ゲームプログラミングは通常のプログラミングと違った技能が必要であるように思われていました。
現在では計算機がある程度速くなったことや、ゲームプログラムの開発を複数人で行うことでテクニカルなプログラミングが避けられるようになったことにより、ゲームプログラミングは他の一般のプログラミングと同じような課題だと見なされています。
しかし、特にアクションゲームなどのリアルタイムでの画面書き換えが必要なゲームで、プログラムのスピードが重視されることは変わっていません。また、コンピュータの性能があがるにつれ、それらの性能を全て引き出すように表現手段が変化してきたため([[w:3次元コンピュータグラフィックス|3D]]、[[w:ポリゴン|ポリゴン]]などを参照)、状況によっては複雑で特殊なプログラミングが必要になることもあります。
===== 初心者が使えるプログラミング言語 =====
ゲーム開発において、一般にゲームショップなどで流通している商業ゲーム作品において、現在よく利用されているプログラミング言語として、[[C言語]]、[[CPlusPlus|C++]]、[[Java]]があげられます。
Windowsの3DエンジンのDirectXは、主にC++を想定しています。なので負荷の高いアクションゲームを作りたい場合、Visual C++での開発が安全でしょう。
しかし、ネット上のフリーゲームでは、C++以外の言語が使われることも、よくあります。
さいきんゲームエンジンとして有名なUnityは、言語としてはC#の文法を採用しています。
[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
市販の書籍では、Pythonによるゲーム開発を紹介した出版物もあります。ただし Python は原理的にインタプリタ方式であるために処理速度がC++に劣り、アクションゲームなど負荷の高いゲームを作る事を目指している場合は、将来的にはPythonからC++への装備変更が必要になるかもしれません。
===== ゲームに適さない(だろう)言語 =====
;Flash関係
例えば、かつて Adobe の Flash が、ブラウザで動かせるゲームを作る際に、よく使われていました。このようなwebブラウザ上で動くゲームのことを一般に、「ブラウザゲーム」と言います。ただし、現在ではFlashは廃止の方向です、すでにほぼ廃止されているといっていいでしょう。また、現状では、ローカルPC環境でのゲームをJavaScriptで作るのは、アマチュア段階では困難です。JavaScriptのアマチュアゲームと言う事例を聞きません。
;JavaScript
なお、JavaScript はクロスプラットフォームですが、しかし、セキュリティ上の理由などから、いくつかの機能(たとえばファイル入出力)がwebブラウザ上では使えないようになっており、そのため、JavaScript だけでゲームを作るのは、初歩的なゲームを除くと、かなり困難です。(おそらく、オンラインゲームでは、サーバー側でPHPやサーバサイドJavaScriptなどの別プログラムが走っていると思われます。)
セーブ機能の必要なゲームを作る場合は、JavaScriptでの開発は選択肢にない(セーブの実装には、JavaScript国際規格にはない非標準仕様を使いこなす必要があり、かなりの技術力を要するでしょう)。
=====ブラウザゲームの初歩的な原理=====
商品として流通するようなゲームや、高度な機能を持つブラウザゲームを作ることはとても難しく、このページでは手に負えません。そこで、このページでは、初心者が練習用につくるゲームを例に記述します。
webブラウザだけで動くのがブラウザゲームです。ブラウザゲームを作るのに使う言語の第一選択肢はJavaScriptです。サーバー側の処理が必要ならPHP,Python,Perl,Javaなどの言語の出番でしょう。
「ネットワークゲーム」は「ブラウザゲーム」とは意味が違います。
「ブラウザゲーム」は、パソコンにwebブラウザさえあれば、ネットワークに接続していなくてもゲームプレイできて、最後、クリアまでプレイできる作品もあります。
しかしネットゲームは、ネットワークに接続しないと、ゲームを開始することさえ不可能です。つまり、サーバの提供するゲームが「ネットワークゲーム」「ネトゲ」です。
もしPHPやPerlなどでゲームを作る場合、普通はネットゲームになる筈なので、作者がサーバを構築して提供する必要がありますし、プレイヤーにはゲーム中にサーバに接続する環境が必要になります。提供者は、サーバを用意したり、保守管理する必要がありますよね。サーバーがダウンしてしまうと、プレイヤーがゲームをできなくなります。
「PHP ゲーム」などの単語でネット検索したり、あるいは書店でプログラム言語の書籍や解説サイトを見ると、ときどきPHP・Perlなどの言語でゲーム開発しているものもありますが、一般的なダウンロード型のゲームとは違う筈なので、気をつけてください。
{{コラム|ソケット通信、ほか|
コンピュータプログラムからインターネットに通信するには、いくつかの方法がある。
C言語の場合はOSの提供するソケット通信といわれる機能を使う方法、
JavaScriptにあるHTTP通信の機能を使う方法、
などがあるだろう。
ただし、JavaScriptでゲームを制作するのは、セキュリティ上の制約などからセーブロードが標準的方法では困難など、とても制作が難しい。
よって本セクションでは、C言語にソケット通信を組み込むことの概要を説明する。
ゲーム制作初心者がソケット通信までする必要はないが、将来的には知る必要があるかもしれない。
本wikiではWindowsの場合については 教科書『[[WinSock]]』、
macやLinux / Unix や BSD の場合は 教科書『[[Unixソケットプログラミング]]』 で説明している。
Windowsとそれ以外のOSとで、ソケット通信の仕様が微妙に異なる。
ソケット通信では文字コードの問題がある。手元のパソコンの文字コード設定は、通信相手方の端末には反映されない。
Windowsの日本語版では、伝統的に Shift-JIS といわれる文字コードが使われてきたが、海外のWindows端末は日本の文字コードにあわせてくれないし、macやLinuxやBSDも同様に日本には合わせてくれない。
簡単な対処法として、ゲーム中では日本語を送受信しない、つまり半角の英数字と記号だけを送受信する、という道はある。
会員登録などのためにどうしても氏名や住所などの日本語を使う必要がある場合、PHP・Pythonなどサーバ言語に対応した「フレームワーク」があり、そのフレームワークが最初から日本語に対応、もしくは設定を少しいじるだけで日本語対応するので、それを利用すれば効率的かもしれない。
ゲームとは別途、サーバー側にフレームワークをインストールして、会員登録時にサーバー側でそれを使うようにすればいいだろう。
しかしゲーム内では日本語の扱いは非常に難しい、限定されるという事になるだろう。
C言語のプログラムにサーバサイドの言語・システムを組み込むのは難しいから、ネットゲームではどこかでソケット通信に頼ることになるだろう。
市販の本を探しても、そもそもソケット通信の書籍自体がめったに見当たらないし(ほんの少しだけ出版されている)、もし見つけても全く文字コードの問題の解決方法は紹介されていない(2021年現在)。
}}
====プラットフォ-ム====
;ライセンス料
一般に、プレイステーションや任天堂のゲームを開発するには、専用の機材が必要であり、そのため、ソニーや任天堂とライセンス契約しなければいけない<ref>『ゲームプランとデザインの教科書』、P.107 </ref>。
その契約に際して、ライセンス費用または料金と呼ばれるものを、ゲーム機開発会社の任天堂、ソニーに支払う必要があります。
現在でもソニーや任天堂のゲーム機用のソフト開発・販売には、ライセンス料が必要です。少なくともPS4やニンテンドースイッチのパッケージソフト開発には、「ライセンス費」が必要<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.120</ref>。
なお、書籍『ゲームプランナーの新しい教科書』によると任天堂やソニーのようにゲーム機を作っている会社のことをハードメーカーと言います。つまり、ゲーム機のハードメーカーにライセンス料を支払うという仕組みになっています<ref>『ゲームプランナーの新しい教科書』、P20</ref>。
また、スマートフォン向けアプリは、プラットフォーム使用料が掛かります。
書籍『ゲームプランとデザインの教科書』によると AppleStore, GooglePlayともに売上げの30%とのこと<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.121</ref>。その他のプラットフォームも、大体同じとのことです(参考文献の著作の時点では)。
Google やAppleのようにプラットフォームを提供している企業のことをプラットフォーマーと言います<ref name="gp244">吉冨賢介『ゲームプランナー入門』、P244</ref>。
昔からゲーム機のライセンス料は有料で高額であり、ソニーや任天堂の収益源のひとつになっている<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.267 </ref>。一方、パソコンゲームにはライセンス料が無いのが普通です<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.283 </ref>。
なお、ハードメーカーでなければプラットフォーマーでもないゲーム会社のうち、製造から販売までを手がける会社のことをパブリッシャーといい、たとえばカプコンやコナミやセガやスクウェア・エニックスやバンダイナムコなどがパブリッシャーです<ref name="gp244" />。
実は、必ずしもパブリッシャーが開発を手がけるとは限らず、スマホ向けアプリなどではディベロッパーといわれる開発専門の会社に委託している場合もあります<ref>吉冨賢介『ゲームプランナー入門』、P245</ref>。
;ポリコレ規制
Apple社のAppStore向けのスマートフォンアプリでは、アップロード後に、公開前にAppleによる審査があり<ref name="g139">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.139</ref>。、審査は欧米基準です。
GooglePlayは、公開前の審査はないが公開開始後に海外基準で審査されるので、それに違反していると配信停止になります<ref name="g139" />。
海外プラットフォームで販売・配布したい場合、「ポリティカル・コレクトネス」(政治的な正しさ)といわれる、海外の公序良俗の基準に配慮する必要があります<ref>『ゲーム作りの発想法と企画書のつくりかた』、P.235</ref>。
欧米の判断基準が、アジア諸国やアフリカの生活習俗に合致しない場合も多いのですが、欧米のIT大企業はその欧米基準での規制が政治的に正しいと考えているでしょう。「日本では、少し考え方が違う」と言っても、通用せず規制される場合も多い。
ゲームだけでなくテレビアニメでも、漫画ワンピースの海外アニメ版では、主人公側の若者がタバコを吸っているシーンをアメ玉に作画を変えられたり、ドラゴンボールに出てくるミスターポポという肌の真っ黒なキャラクターの肌を青く書き換えたり、色々な例があります。
ポリコレとは関係ない事例ですが、TVアニメーションのポケットモンスターで主人公のサトシ達がお握りを食べているシーンで、アメリカ版ではドーナツになっていたことがあります。これは、国による食文化の違いを示していますよね。
===プロトタイプ===
ゲームでは、曲や絵が良くても、ゲームとしては今ひとつ面白くない、という事は起こり得ますよね。
ですからむしろ、商業的なゲーム制作では、イラストは簡略なものを使ったうえで、プログラム中心の試作品(プロトタイプ)をいくつか作り、その中でゲームとしての面白さがあるものを、取捨選択したうえで商品化を考え、その後イラストや楽曲を詰めて完成度を高めていく、と、いう制作過程を取るようです。
書籍『ゲームプランナー入門』(吉冨賢介 著)によると、商業ゲーム界では、企画書に書かれたゲームが本当に面白いかどうか確認するために、「プロトタイプ」が作られます。プロトタイプの段階では、プログラマーと、企画の意図を考慮するためプランナーも関わります。<ref name="gp17">吉冨賢介『ゲームプランナー入門』、P17</ref>
イラストレーターは、プロトタイプの前段階あたりでイメージイラストを提供し、スタッフ間の共有イメージを作ります<ref name="gp18">吉冨賢介『ゲームプランナー入門』、P18</ref>。そしてプロトタイプ進行中は、グラフィック案の提案をしていきます<ref name="gcw56">蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P56</ref>。サウンドも同様、プロトタイプでは、曲調を固めていく段階です<ref name="gcw56" />。
:※時々あるトラブルとして、マイナーな同人ゲームや零細メーカーのゲームで、背景イラストや脇役キャラクターなど目立たない部分で他社のイラストが使われていることがあるようです。おそらく試作用に流用したイラストが、そのまま製品に混入したのでしょう。こういうトラブルがあるので、他社イラストの使用は試作であっても避けるべきです。
;実装検証
プログラマーは、そのゲームでコアになるプログラムやシステムやミドルウェアについて、プロトタイプ段階で実装検証を済ませておく必要があります。プロトタイプより前の原案の段階では、利用するミドルウェアの洗い出しをして、出来る範囲での基礎実験をしておきます<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P54</ref>。
ミドルウェアによっては使用料が発生するので、その点を事前に調べておく<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P55</ref>。
プロトタイプのうち、張りぼての例えば画面だけの物等を、「モックアップ」といいます。一方である程度遊べる状態まで作っているものを、「プレアブル」といいます<ref>STUDIO SHIN『ゲームプランナーの新しい教科書』、翔泳社、2018年3月10日初版第2刷、P251の図</ref>。
ゲームデザイン本ではよく「プロトタイプ」という表現が用いられるので、本ページではこの言葉を使うことにします。
{{コラム|商標権等|
知的財産権には著作権・商標権・意匠権などがありますが、商標権は特に強い権利であり、気を配る必要があります。
意匠権とは、建物や工業製品の外観に関する権利なので、ゲーム制作ではあまり気にする必要はないようです<ref name="gpd135">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.135</ref>。
「特許権・実用新案権」と「商標権」は、事業者によって国に登録されている権利で、かなり強力な権利なので、気をつける必要があります。
特許権や実用新案権とは、大まかに言えば、技術的な発明に関する権利です。商標が登録されているかどうかは、特許庁の『特許情報プラットフォーム』というwebサイト<ref name="gpd134">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.134</ref>で確認できます。
商標をトリッキーな意図で登録する人も多く、自社でビジネス展開をする気がなかったり、他社の商品などでまだ登録されていない物を申請したり、そういうやや不正な登録申請でも認可されてしまう場合も多いです。
また、商標は業種のジャンルごとに分かれているので、たとえば携帯電話のジャンルが新たに追加された時代に、過去のゲームの商標を登録した人がいました。そのため携帯ゲームを出せなかったり、商標を買い戻したり、取り戻すための裁判をするのに時間とお金がかかってしまったり、様々な問題が発生します。<ref name="gpd134" />
著作権は、登録の必要がなく、著作をした時点で発生する権利です。
『ゲームプランとデザインの教科書』によると、こういう事柄にまだ慣れていない人によくあることなのですが、他人の個人サイトやSNSで公開されていた絵や曲などを、許可なく勝手に使う事例があるようです<ref name="gpd135" />。
二次利用を許可されてない著作物は素材として使えません。
そして見落としがちなのが、フォントの著作権です<ref name="gpd135" />。フォントにも著作権があります。
フリー素材と書かれていても、商用販売が禁止されている配布形態のものもありますので、気をつけましょう。
}}
{{コラム|アイデアの権利。アイデアとは盗まれるのか、盗むのか?|
商業ゲーム作家たちの、2022/1時点でのSNS発言によると、業界全体でみられることですが、会社外部の人がアイデアを一方的に投稿してきて、会社で作った作品にそのアイデアと類似点があったら、アイデア使用料を要求してくる、そのような問題に悩まされているようです。
そこでゲーム会社側では原則、
:送られてきたハガキやメールは、まずクリエイター以外の事務系の人間が読む。
:もしハガキなどにアイデアがあった場合、そのハガキを処分。
などの方策を取ると言われています。
また、偶然や何らかの理由でアイデアが一致してしまった場合に備えてのリスク回避として、事前に会社のウェブサイトなどで「弊社にアイデアが送られてきた場合、そのアイデアは弊社のものになります」のような宣言をしている会社も多くあると言われています。<!-- (以上、作家のSNS発言やそれを紹介したサイトの取材などのまとめ.)←出典を消すなってS氏はやたら云うんだけど,そんな重要な事かね?もちろん全くなくて,いい加減な事書いていいと言ってるわけではないけど… -->
ここで前編集者は娯楽産業の世界には厄介な消費者がいると言及しているけど、この前編集者自身がこのWikibooks で異常なまでに厄介な参加者なんだが、そろそろ人のふり見て自分を返り見るべきだと思うな。
法学的には、著作権法はアイデアを保護しません(『アイデア・表現の二分論』と言います)。
そして前編集者はアイデアに関して権利をどうこう言う人間を無知だと書いているけど、自分は至上の賢人だと思ってるようだね。
そしてこの人物は他者を愚弄する時は必ず自分の意見ではなく、権威ある人がそう書いたから、出典だからと宣う。
出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。
まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。
}}
任天堂『ゼルダの伝説 ブレス オブ ザ ワイルド』は、プロトタイプの段階ではイラストや音楽を組み込まずに(イラストは、代わりに大きなドットの塊などで代用する)作られている事がゲーム業界見本市イベント CEDEC 2017 で公開されています<ref>https://game.watch.impress.co.jp/docs/news/1078888.html 2020年11月25日に閲覧して確認</ref>。
プロトタイプの段階では、画像や音楽は発注せず、骨組み的なプログラムだけで、そのゲームのアイデアが「はたして本当に面白いか?」を、実際に社内の関係者にプレイさせてみて確認します。
因みにプロトタイプに関しては『[[高等学校情報/その他の技術的な話題#プロトタイプ開発]]』の記述も参考になる。
ここでいう「プロトタイプ」(試作品)とは、コンピュータプログラムのゲームとして動作するのが前提です。映画製作でいう絵コンテ試写のように、ゲームの試作では、なるべく早期に第三者が試作ゲームを遊べるように作っていく必要があります。
プロトタイプという言葉を使用すること自体が妥当かどうか。まず、書籍『ゲームプランとデザインの教科書』で使われている<ref name="gpd350">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.350</ref>。
ニコニコ動画の経営者、川上量生が使っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日 第1刷発行、P.38</ref>。川上は角川書店も買収したので、おそらくそこ(カドカワ・RPGツクール販売元)でも使っているでしょう。
ゲームのプロトタイプの基本姿勢は、「汚く作って、やりなおす」です<ref name="gpd350" />。もちろん最低限のプログラムの知識、勉強は必要ですが、あまり知識収集や理解充実を気にするより、実際に作ってみることを優先したほうがいいようです。チーム制作をしている場合はプロタイプは赤ん坊であり、そのチームで育てていこう、我々の子供だという意識で接しているようです<ref name="gpd350" />。
勉強に関しては、汚くてもいいからまず工夫して作ってみると、何を勉強すればいいかが見えてきます。
英語では「quick and dirty prototype」という言葉があります<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.349</ref>。
書籍『ゲーム作りの発想法と企画書のつくりかた』によると、シナリオライター志望者が企画書やシナリオ案をメーカーに送りつけても、あまり効果的ではないようです。
それよりゲーム形式でシナリオを書いてしまうのがいいようで、「CHR:ヒロインA(私服)、表示」のような文章を織り交ぜて構成していくのが推奨<ref>『ゲーム作りの発想法と企画書のつくりかた、P.140</ref>。
参考文献のその章では、シナリオライター志望者に向けて語られていますが、プログラマーを目指すならどうすればいいでしょうかね。
プログラマー志望なら、サンプルゲーム、サンプルプログラムを作ってしまうのがいいかもしれません。
1990年代、週刊少年マガジンに不定期掲載していた読みきり漫画『ゲームクリエイター列伝』では、カプコン社のゲーム『バイオハザード』を扱った『バイオハザードを創った男達』の際、制作過程でゲームデザイナーが大幅な作り直しを判断して進行させた、という描写があります。(ただしWikiboooks一編集者の記憶、詳細はあいまい)。
のちの、ゲーム評論家の阿部広樹の評によると、むしろそれは劇的な大きな決断ではなく、ゲームデザイナーの日常の普通の仕事ではないか、と語られています。
どんな肩書の人間だろうと、すでに決まって進行していた方針をひっくり返すのは、かなりのストレスのある判断で指摘になりますが、一般に漫画や映画、あるいはNHKの仕事に関するドキュメンタリーでもそうですが、職業や職業者の物語では、過剰に対象を美化し、劇的な演出によって関係者を称賛し、英雄視する傾向があるように思います。
{{コラム|アイデアはアイデアで価値がある。でも、せっかくなら、それを試作して、形にしてみよう。|
ゲーム業界人広井王子は書籍のインタビューで、自分の社長としての人材評価は「0点」から始まる「加点法」だと語っていたようです。
『ゲームデザイン プロフェッショナル』著者も、文脈は違いますが「加点方式で物事を考える」と述べています<ref>『ゲームデザイン プロフェッショナル』、P224</ref>。
正直インチキなゲーム業界人の点数勘定などには全く興味ないが、そんな話とは全く別に、ゲーム制作の上で、実際に動く簡単なプロトタイプを作ってみることは間違いなく有意義な事でしょう。
アイデアはアイデアとして、思考や思想の展開としてありますが、それを具体的な形にしてみることは非常に楽しくエキサイティングで、意味ある活動ですよね。
}}
仕様書や設定資料を超えて、誰もが遊べる試作品は、意味のある企画行為でしょう。前編集者は、時間軸・動きの制作意図の明確化、という言葉を使っています。もちろん短くまとめること自体もなかなか難しいのですが、工夫を凝らして、ゲームプログラムを完成させることが重要な経験であり、思考の具体化でもあると思います。
===アルファ版===
アルファ版はプロトタイプとは違うもので、その後段階で、ゲームの全体像が分かる一部分を、商品に準じた形で作ることです<ref name="gp17" />。
アルファ版でもそのゲームが本当に面白いかどうか検証がなされます。サウンドやビジュアルは商品に近いほぼ完成化された形で取り込みます。
アルファ版の使用の結果、プロジェクト中止の決定がなされる場合もあります<ref name="gp18" />。
ベータ版とは、会社によって意味が多少違いますが(たとえば『ゲームデザインプロフェッショナル』と『ゲームプランナ-入門』とでも微妙に違う)、おおむね、とりあえずのゲーム、最初からエンディングまでのほぼ完成状態をひととおり遊べる制作物です<ref>『ゲームデザインプロフェッショナル』、P170</ref>。
細かいバグ修正はこれらの段階では後回しにします。
基本的に
:プロトタイプ→アルファ版→ベータ版→調整→デバッグ
の流れですね。
===プロトタイプ制作に必要な予備知識===
====数学は後回し====
ゲーム制作の作り始めにおいて、必要な数学や物理の予備知識は、それほど多くありません。
文献『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』によれば、数学や物理の習熟に拘って、それに多くの時間と精力を費やして勉強するよりは、3Dの勉強などで必要を感じたら、そのつど、その分野の数学や物理を学ぶのが効率的だと述べており、また可能なら実際にプログラミングでその理論を試してみると具体的に理解をしやすいと述べています<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P88</ref>。
====C言語の予備知識は入門書1冊+αで十分====
C言語を使ったゲームは、予備知識はそれほど多くないので、あまり難しいことは考えず、まず実際にプログラムを書いて作ってしまう事優先にするのが正解なようです。
市販のC言語入門書で、配列や関数などの一般的な機能を一通り習得したら、あとはVisual C++ で映像出力とキーボ-ド入力のみを、1~2週間ほど勉強、そしてVisual Studioを起動してゲームを作り始める。
うまくいけば数か月以内に、パソコン用の非ネット通信のゲームを作ることができるでしょう。
ただ、ゲームプログラミングを試みる人は、必ずしもゲーム制作のみが絶対的な唯一の目標ではない可能性もあるので、それぞれの立場に応じて、座学を取り入れてみるのもいいと思います。
== 作業リストを作る ==
===作業リストの制作開始の方法===
さて、ゲームを作る時は、アイデアを頭の中だけに置いておくのではなく、文章に書きだしてみましょう。
そして、壮大な長大なアイデアではなく、1週間~1ヶ月ていどで成果の確認できそうなアイデアだけを書いてみましょう。
次にそのアイデアを、実際に動作するプログラム、ソフトウェア(つまりプロトタイプ)にするために、具体的などんな機能を持ったプログラム(簡単なものでよい)を制作しなければいけないか、自分のやるべきことのリストを、箇条書きで作ります。<ref>https://www.youtube.com/watch?v=J5FCZG7dfEY 2020年3月17日に閲覧</ref>
IT界ではこういうリストを「ToDoリスト」(読み: トゥードゥーリスト)とか「タスクリスト」といいます。このページではむしろ日本語で、「作業リスト」と呼んでみましょう。
さて、このリストを作るときは、作業項目は具体的かつ単純な目標に分割します。ですから例えば RPG の戦闘システムを作るときは、
*「戦闘システムを作る。」
と、あいまいに総体的に書くのではなく、具体的に、
*戦闘画面のメッセージ表示欄および標準メッセージを作る。
*「戦う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは後回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
という風に、作業項目を細かく分割していきます。
こうすることで、作業がひとつずつ比較的に簡単な要素に分解されていくので、楽になります。また、バージョン管理ソフトを使って管理している場合も、上記のような作業リストの分解をしておけば、各バージョンの概要を書く際にも作業リストの項目が転用できるので、一石二鳥です。
予定日は書かないほうがいいように思われます。スケジュールを管理したい場合は、別にファイルを作るといいですね。
そして書き出した項目を優先順位で並べたら、最初の作業リストは完成です。
===作業リストの更新===
プログラミングする前に作業リストを眺めて、そして上の項目から実際に作業を開始しましょう。
そして一つの項目を完成させましょう。
そして作業項目がひとつ終わったら、「【完了!】」等、そういう情報を、項目の前または後ろにつけます。備忘のための記録ですね。
たとえば、
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
こうします。
以前の記述を残したまま、その作業が終了したことを示しておくわけですね。
また、もし追加の作業が必要になったら、たとえばダメージ計算システムを作るために、ランダム計算が必要になって、自分がそのプログラム言語でのランダム計算に詳しくないなら、たとえば
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
::※3行目に追加されています。
と、必要に応じて項目を追加します。
さて、これから行う作業を検索しやすくするため、たとえば
'''やることリスト'''
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
'''完了した作業'''
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
の様に完了した項目を後回しにしたり、或いは
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*(現在→) Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
のように、(現在→)、を追加するのも良いでしょう。
つまり作業の記述をそのままに、どこまで進展しているかが分かる等に書き足していくわけですね。
==プロトタイプ制作における創作面の検討事項==
===ゲーム性===
「ゲーム性」という概念があって、これがあるからこそゲームは面白く、魅力的だと考えられています。
プレイステーション開発元のソニーもこれを重視していますし、一般的に多くのゲーム愛好者、関係者たちもその考えに同意するでしょう。
ではゲーム性とは何か?
ゲームのジャンルにもよりますが、「駆け引き」や「戦術」、これが「ゲーム性」だとよく言われます。
『ゲームプランとデザインの教科書』によると、ゲーム性とは、シューティングやアクションでは「対戦の駆け引き」、RPGでは「戦闘と物語の介入」、シミュレーションゲームなら「戦略性」だそうです<ref>『ゲームプランとデザインの教科書』、P152</ref>。
ただし上述の書籍によると、1990年代は今よりもゲーム性とシステムが重視されていたとの説明があるので、裏を返せば2010年以降の現代では、ゲーム業界ではゲーム性の重視の比率は1990年代よりも減っているかもしれません<ref>『ゲームプランとデザインの教科書』、P302</ref>。
『ゲームプランナー入門』(吉冨賢介 著)では、ゲーム性とは「課題や挑戦の仕組み」であると結論づけています<ref>吉冨賢介『ゲームプランナー入門』、P36</ref>。そして、この達成感こそが「ゲームならではの面白さ」だと述べています。
;アクションパズルゲーム「I.Q」
メディアクリエイターの佐藤 雅彦氏(「だんご3兄弟」や「ピタゴラスイッチ」等を手掛けている)が、初めてかかわるコンピュータゲームで、ソニー・コンピュータ・エンターテインメントとの共同企画で、のちに「I.Q」(1997年にシリーズ第一弾を発売)と呼ばれるシリーズに携わった時、プロトタイプが全くゲーム性のないものになってしまい、それをプレイしたソニーの幹部陣の顔色が非常に曇ってしまったようです<ref name="br67">川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P.67</ref>。
ここでの悪い反応、薄い反応の理由がわからなかった佐藤氏が、階段の踊り場でソニーの新人に尋ねてみると、「それが、あの、ゲーム性がないっていうか・・・」と言われたと出典の対談集に書かれています<ref name="br67" />。
基本的に佐藤氏は、プロトタイプの企画を提案しただけですが、ソニーにはプロトタイプを作るための部署があるらしく、1~2ヶ月かけてそこでプロトタイプが作られたようです。
この問題の責任が誰にあるかは、大した重要な事ではありませんが、商業作品としてプロトタイプを作る以上は、どこかの段階でゲーム性を意識して、プログラムに盛り込む工夫が必要になるでしょう。
===ゲームの見た目とは?===
ふつうゲームのプレイヤーは、まず最初にそのゲームの「見た目」を判断し感受するでしょう。ですからその見た目のインパクト、興味を呼び起こす構成が必要になります。
例えばスーパーファミコンRPG『新桃太郎伝説』では、開発当初はドラゴンクエスト5 のようなマップ画面のトップビューUIでしたが、開発中にクォータービューの他社製RPGが発売されて高い評価を得たので、マップUIを(トップビューではなく)クォータービューに作り直したようです。このことは攻略本『新桃太郎伝説 究極本』に開発裏話として書かれています。
一方現在でもこの方向の試みは重要なようで、書籍『ゲームデザイン プロフェッショナル』の著者は、他企業の製品の画面と、自社の製品を目で見比べる分析方法で、自分たちの製品のUI の問題を見出しています<ref name="gdp199">『ゲームデザイン プロフェッショナル』、P199</ref>。
割と素朴で単純で即物的な見た目、「かっこいい」とか、「ぱっと見派手」等の要素が非常に重要なようです<ref name="gdp199" />。
商業としてゲームを作る以上は、ペイしなければ企業も事業の継続も維持できませんから、考慮せざるを得ない問題ではあります。
== ゲーム開発ツールを使う場合 ==
====開発ツールのライセンス条件====
ゲーム開発ツールのなかには、そのツールで開発したゲームソフトに義務として「この開発ツールで開発したソフトウェアは、ソースコードを必ず公開しなければならない」などの条件をつけている場合があり、このような条件を「開示義務」(かいじ ぎむ)または「ソース開示義務」などといいます。
ソース開示が嫌な場合は、開示義務のあるツールは使わないのが正解ですね。
ゲームに限らず、ソース開示を義務としている開発ツールは多くあるので、ライセンスには気を配る必要があります。
「有料ソフトの販売を禁止」とか「アダルト作品の開発は禁止」などの条件をつけている場合も、ありえます。
ですからゲーム開発において、ツールのライセンス条件の確認は、非常に重要です。
{{コラム|GPLライセンス違反|
GPL(ジーピーエル)というライセンスがあって、Linuxなどのオープンソースで使われています。このGPLを組み込んだプログラムは、ソースを公開しなければいけません。
ですから、ソース公開したくないプログラムには、GPLソフトウェアは組み込めません。
ゲーム業界でも、GPLライセンスのソフトウェアを組み込んでしまったために、呼出し元ソフトウェアでのソースコードの一部を公開することになったゲームがあります。2005年頃、『ToHeart2』という美少女ゲームが、xvidというGPLソフトを取り込んだ疑惑によって、GPL違反の疑いでソース公開になりました。([[w:ToHeart2#GPL違反とソース公開]])
GPLでも、たとえばLinuxサーバ上でソース非公開のアプリを動かすように、GPLのソフトウェアを非公開ソフトとは独立した状態で使う場合は、ソース公開の必要はない、と、考えられています。(これが必要有りとなると、オンラインのプログラムやネットゲームは全てソース公開しなければならなくなり、非合理な結果になる。)
特定のプログラム自体に、GPLソフトウェアのコードを取り込んだ時、ソースコード公開が必要になります。
}}
{{コラム|BSDライセンス他|
オープンソースの中には、どのような利用法であっても、利用者にソース公開を求めないライセンスもあります。BSDライセンスとMITライセンスはソース非公開で利用できます。
ゲーム制作ツールの吉里吉里Zは、修正BSDライセンスで公開されています。
もしライセンスのことがよくわからない、またはライセンスの学習に時間をかけたくないなら、オープンソースのツールを使うなら、BSDライセンスを使うのが安全です。
}}
[[w:DXライブラリ]]は、GPLでもBSDライセンスでもありません(DXライブラリ説明書「DxLib.txt」には、どこにも「GPL」とも「BSD」とも書いていない)。DXライブラリは単にソースコードが公開されていて、著作権者の「山田 巧」氏が著作権を保持しているオープンソースなライブラリです。
このように、ネット上でソース公開されているソフトウェアには、ライセンスの複雑な解釈を嫌ってか、「BSD」や「MIT」などのライセンス条件を名乗らないオープンソースソフトウェアもあります。
{{コラム|自作ソフトでソース開示|
昨今ではオープンソースやフリーソフトウエアの発展などの背景もあり、「自作ゲームのソースコードやソースファイルも開示しよう」と思うゲーム作者もいるかもしれません。
然しソースコードを開示していることが原因で、トラブルに巻き込まれる場合もあるかもしれません。自分の作ったゲームのコードが悪用され、トリッキーないたずらや嫌がらせ、誹謗中傷などを受ける可能性も全くないわけではありません。
そこでライセンスに、利用による損害に対する保証が無いことを明示するのは、ある程度有効でしょう。大抵の著名なフリーソフトウェアライセンスには、この条項があります。他者の悪意を完全に防ぎ失くすることは難しいのですが、ある程度の対策は見出されていますし、自身でも見出していく必要があるでしょう。
}}
====開発ツールを使用しないという事====
下記の理由(機能制限および移植性の悪さ)の問題から、あまり大規模な作品は開発ツールでは作らないでおくのが安全です。
大規模な作品の場合、Visual C++ などでコードを書いて開発することを推奨します。
=====機能制限=====
ゲーム開発ツールを使う場合、そのツールにもよりますが、「○○ができない」、つまり特定の目的を果たすための機能を持っていない場合があります。
Visual Basic や Visual C++ には普通にある関数でも、開発ツールには無い場合も多い。
また、もし、いったんはゲーム開発ツールを使って目的の機能を持ったシステムを作ったとして、さらなる機能をそのシステムに追加しようとするときに、大幅な作り直しが必要になる場合があります(拡張性の悪さ)。
システムがモジュール化されていても、そのモジュール部分では大きく改変する必要がある場合もあるでしょう。
ですからゲーム開発ツールによるゲーム制作では、あまり大作を作ろうとしないほうが安全です。開発ツールで作る作品は、比較的に小規模な作品に、とどめておくことを推奨します。
Windowsの場合、本来なら Visual C++ などを使って、プログラム文法のいろいろな事に留意しながらプログラムを書きますよね。開発ツールを使う場合、 Visual C++ のコードを書かずに、ほぼマウス操作だけでプログラムを作ろうとしているわけですから、何かしらの制限があります。拡張性の悪さは、プログラム文法などの学習の負担を減らすためのトレード・オフのようなものですね。
=====移植性の悪さ=====
また、もうひとつの問題点として、C言語への移植性の悪さがあります。
ソースコードが公開されていない開発ツールの場合、異なる開発環境にゲームのソースファイルを移植するのは、ほぼ不可能です(仮に、開発ツールのランタイムを模倣できたとしても、著作権などの法的な懸念が生じる可能性あり)。
ゲーム開発ツールで作ったソースを、Visual C++のソースに置き換えるのは、簡単にはできないし、ほぼ全面的に新たに書くことになるでしょう。
==イラストレーター、デザイナー==
ゲーム制作、業界において、イラストや音楽を作る部署、人物は、まとめて、"アーティスト"と呼んでいるようです。
ゲーム界の場合デザイナーというのは、プランナーやディレクターのことであり、管理職的な設計者のことで、美術的なクリエイターではない。design という英語には、機械建築の設計という意味もあります。
映像関係、画像系のアーティストはグラフィッカーと呼ばれることもあります。ムービー担当者、特にゲーム界では3D-CGの制作者をアニメーターと呼ぶことが多いようです。アニメーション業界では主に、手描きの原画、動画マンをアニメーターと呼びますが、最近は3D-CGアニメーション映画も多いので、すこし状況が変わっているかもしれません。
ゲーム業界とアニメーション業界、各会社企業、過去と現在で、「原画」「仕上げ」「絵コンテ」等、一般的な作業に関する言葉が、それぞれの状況で微妙に違った意味で使われることも多いですね。
…ところで前編集者はわざわざこの項目を作ったうえで、色々な場所での言葉の意味の違いを、クドクドと自分勝手な分かりづらい説明で長々述べた後、「混同しないように気をつけましょう。」なんて馬鹿馬鹿しい言葉で締めているんだけど、この人物の意図はどこにあるのだろう?
例えばデザイナーというのは一般的に、造形作品、図案、意匠を考案する人のことを言うのだから、ゲーム界の外の人間が多少その業界内での意味を取り違えても、それほど致命的なミスでもないし、罵倒、愚弄されるいわれもなければ、好き放題にその相手を罵倒、愚弄していいわけでもない。間違えて使っている人を見たら、その都度やんわりと教えてあげればいいだけじゃあない? だいたいその世界に現実に身を置いたら、そこでの言葉の意味、使い方なんて自然に覚えるものだし…。
それを得意げにこれが違うあれが間違いといちいち理屈書いて、いい気になって威張っているこの人物は何者なのだろう?
現編集者が思うには、この人物は、学問、知識、知恵、科学とは何かという事を、根源的に取り違えている、のだろう。
==操作性==
操作性について、親指と人差し指<!-- ←ここ,中指って書いてあったけど,こっちだよね? -->だけでボタンプッシュなどの操作ができるように作成するのが基本です。中指、小指、薬指はコントローラのホールドに使うぐらいです。人間工学的に、小指や薬指は力が弱いので、微妙な操作には向かないことが知られています<ref>川上大典ほか『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日 第1版 第1刷、P.48</ref>。
一般的にゲームプログラミングでは、
# プレイヤーからの入力を扱うことができる。
# ゲームが提示する内容を表示することができる。
入力と出力、この2点が機能として必要になります。
プログラミング言語とプレイヤーからの入力については歴史的にも、あまり変化がありません。言語では主に[[C言語]]、[[C++]]が用いられる。[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
パソコンゲームでは、プレイヤーからの入力には通常、キーボードかマウスを利用します。他に[[w:ジョイスティック|ジョイスティック]]や[[w:ゲームパッド|ゲームパッド]]が利用される場合もあります。家庭用ゲーム機では[[w:コントローラ|コントローラ]]が利用されることが多いのですが、[[w:ニンテンドーDS|ニンテンドーDS]]や[[w:Wii U|Wii U]]では[[w:タッチパネル|タッチパネル]]、[[w:Wii|Wii]]では複数の入力機器が提供されることが発表されています。各種入力機器をプログラムから扱う手法自体は、普遍性があり、入力機器ごとに大きく変化しない、と、考えられています。[[w:デバイスドライバ|デバイスドライバ]]、[[高等学校情報B]]には、プログラムから周辺機器を扱う方法について多少の記述があります。
画面表示のうち、3Dの表現は割合難しく、ある程度の数学(高校、あるいは場合によってはそれ以上)の理解が必要でしょう。2Dに関してはプログラムの面では、さほど難しい部分はありません。
==処理速度の問題==
基本的にプログラミングでは、関数を使って、処理をコンパクトにまとめ、定数ではなく変数で柔軟性のある操作をすることが求められますが、ゲームの場合は、この構造のせいで処理速度が低下することがあります。
現在のCPUの性能、速さはかなり高くなってはいますが、プログラム処理は無限に煩雑化できますから、やはり高度な処理を短時間でなすことが求められます。特にゲームは、リアルタイムの反応のタイミングが非常に重要ですからね。数学の指数計算についての雑学で、「新聞紙を42回おりたたむと、月に届く距離になる」というものがあります。(新聞紙の厚さ)*2^42、ですね。もっとも新聞紙の物性から言って、ほぼ不可能な操作ですけど^^;;。コードの内容、組み合わせによっては、このように計算量が指数関数的に膨大になってしまい、処理速度が非常に遅くなってしまう場合があります。
ですが、このセクションで後述するように、関数を用いる場合の解決策(※概要:あとでdefineやinlineに置き換え)があるので、プログラミングの初期のほうは、とりあえずバグを未然防止するために関数を活用するべきでしょう。
1980年代頃のファミコンなど古い時代のゲームでは、ストレージ容量(ハードディスク容量のこと)が、ボトルネックでした。「容量不足でイベントをいくつか削りました」と、当時のRPGなどのゲーム作家が述べるのは、ストレージ容量の不足のことですね。ただ当時のファミコンはROMカセットでハードディスクは無いので、まさにストレージ容量という言葉が適切でしょう。
しかし2010年以降の現代では、ボトルネックになっている要因は、ストレージ容量不足よりも処理速度です。
ゲームプログラミングに要求されるコード特性は、科学計算ソフトウェアや金融プログラミングなどの手法とは異なります。情報工学・情報科学で適切とされる「構造化プログラミング」などの歴史的に発展してきたプログラミング・パラダイムの理念とは反するようなコード開発方針になる場合もあります。しかしゲームプログラミングに限らず、限定されたハードウェアで特定の結果を速く得るためには、様々なトリッキーな手管が必要になるでしょう。
;ツクール等制作ツール
RPGツクールの制作元のカドカワ(アスキー社→エンターブレイン社→カドカワ(かつての「角川書店」) )では、PRGツクールでのアクションゲーム開発は推奨していません。アクションゲームの場合は、同じカドカワの「アクションゲームツクール」で制作するよう、薦めています。
アクションゲームとターン制RPG では要求される特性が大きく異なり、なかには、ほぼ対立しているような性質もあります。
ツクールやウディタでも、万能にあらゆることがスタマイズできるわけではなく、その制作ツールの特性に依存しますし、主に処理速度の低下しない部分についてユーザが創作できるようになっているでしょう。
多くのRPG制作ツールはマップ操作や戦闘画面の基本システムのルーチンそのものは、あまりカスタマイズできません。画像や音楽は挿入できますが、例えば戦闘プログラムなら、「コマンド」の命令文など一部の派生的な部分だけが独自に作れる程度でしょう。
ですから、ツクールでどうしてもアクションRPGを作りたい場合、基本システムの改造はかなり困難だろうし、別途、アクションRPGのような動作をするマップイベントを作成する・・・ぐらいでしょうね。
ツクールやウディタでターン制RPG以外のジャンルを制作するのには、実質的には限界があり、さまざまな制約が生じます。
;具体的な手法
初期段階では関数や変数を活用してプログラミングし、処理速度を高める必要がある箇所にだけdefineマクロ等を用い別の方法に置き換える。C++ならinline関数という前処理命令もあります。
通常の関数で記述していったソースコードを、あとから一括変換などでdefineマクロやinline関数などに置き換えることは比較的に容易です。
また、関数を経由しているので、マクロを使った場合でも比較的にバグが混入しづらくなっているかもしれません。(defineなどの前処理命令マクロは、用いるとバグを発見しづらいので、なるべくマクロの利用を避けるべきなのが、ゲームプログラミングに限らないプログラミングの定石です。)
一方、まったく関数を使ってないコードを、あとからdefineマクロなどに手作業で置き換えるのは、なかなか面倒です。
最終的には一括変換で置き換えることが出来ますから、途中の段階では、処理速度を気にせず関数を使うのがいいでしょう。
なお、defineマクロは、値の置換以外には用いないのが、プログラミングの定石です。このため、たとえば黒色RGB値の<code>10,10,10</code>といった配列にdefineマクロを使うべきかどうか悩みますが、とりあえずなるべく値周辺にだけdefineマクロを適用するようにするようにするのが良いでしょう。いっぽう、一般の命令文をdefineマクロで置き換えるのは、避けるべきでしょう。
たとえば、処理に0.5秒ほどの時間の掛かってもかまわないような場所は、どんどん、関数に置き換えていっても良いかもしれません。
アクション性のないゲームなら、関数をぞんぶんに活用できます。
ターン制RPGやシミュレーションゲーム、アドベンチャーゲームなど、関数を活用しやすいでしょう。
一方、アクションゲームなどでキャラクター操作中のコードのように頻繁に使って、しかもそのゲームの中心的なコードなら、そこは最終的には関数にしないほうが良いかもしれません。
このように、ゲームのジャンルによって処理速度に対する必要な水準が異なりますので、プログラミング時における関数などの利用の方針も異なります。
以上のように、何でも関数にすることは避けるべきです。関数は処理速度の問題がありますので、必要性のある部分だけ関数にするべき。関数を使わなくても、for文やif文などのブロックの構成を適切に組み合わせることで、コード中のmain関数以降の部分でコード共通化できることは色々とあります。
「共通性のあるコードだから」といって、大して長いわけでもないコードを関数に置き換える事は、速度維持には寄与せず、ゲーム制作のプログラミングとしては、悪手となるでしょう。
===2Dの画面出力===
画面出力の場合も入力機器の場合と同じで、これらを操作する方法はOSごとに異なっています。先ほどあげた GTK+, Qt, SDLなどのライブラリはクロスプラットフォームの画面出力を提供しているため、これらを利用することで全てのプラットフォームで動くプログラムを作ることができます。<!--画面出力を扱うためには近年の[[w:ビデオカード|ビデオカード]]の発展についても見る必要があります。しかし、ビデオカードの機能は2次元の描画に関してはあまりあらわには見えないので、この話題は3次元の描画を行うときに再び戻ってきます。-->
*[[ゲームプログラミング/ブロック崩し]]
*[[ゲームプログラミング/画面出力]]
==目次==
=== ジャンル別のプログラミング手法 ===
==== 3Dグラフィック ====
* [[ゲームプログラミング/3Dグラフィック]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
==== RPG ====
* [[ゲームプログラミング/RPG]]
==== アクション ====
※未作成
==== パズル ====
※未作成
==== シミュレーション ====
※未作成
=== ゲームのデバッグ ===
* [[ゲームプログラミング/デバッグ]]
=== 入力 ===
OSの種類によって、キーボード入力やマウス入力の受け付けのさいのプログラムの書き方は違う。
Windows API での具体的な手順は『[[ゲームプログラミング/入力]]』で説明する。
=== ゲームエンジン ※未完成 ===
* [[ゲームプログラミング/Unity]] ※リンク先ページの編集者が現状ではUnityの著作・調査を放棄中なので、調べ物としては役立ちません(2021年12月19日に本文を記述)。
=== 非プログラミングのゲーム製作の関連作業 ===
==== バランス調整 ====
*[[ゲームプログラミング/バランス調整]]
厳密にはプログラミングの話題ではないが、ゲーム製作では必要な知識なので、サブページで説明する。
:※ゲームデザインに関する記述をここに集積し分離したい、という編集者の意図もある。
==== ゲーム用の書類の書き方 ====
説明書や仕様書(しようしょ)の書き方については、『[[ゲームプログラミング/書類]]』で解説する。
== 未分類 ==
===Visual C++プログラムによる文字画像の出力===
Visual Studio付属のフォームデザイナ(VSの用意するGUI自動作成ソフト)によるGUIオブジェクト作成では、RPG用には使いづらい。いや、ひょっとしたら上手に使う方法はあるのかもしれないが、様々な理由で難易度は高い。
そこでまず、Visual C++で、フォームデザイナをなるべく使わずに文字や映像を出力する方法を考える。
選択肢は、幾つかある。
1.フォームデザイナを1つも使わない方式
*Windows APIで入力していく方法。(Wikibooksに『[[Windows API]]』の入門書があります。)
*DirectXで入力していく方法。DirectX自体はWindowsAPIを利用している。
2.1つだけフォームデザイナのパネルを使う方式
*フォームデザイナで「パネル」という画像表示機能のコンポーネントを一つ用意して、そのパネルで表示する画像をゲーム内のストーリーなどに応じて切り替えるだけで、すべての画像表示を行う。
フリーソフトでゲーム用ライブラリの『HSP』はWindows API を呼び出す仕組みになっています(HSP関連のサイトを見ると、Win APIプログラミングの解説をしている場合もある)。
フリーソフトでゲーム用ライブラリの『DXライブラリ』は Direct X を呼び出す仕組みになっています。そして、ゲーム開発ツールのひとつであるウディタのソースコードは、DXライブラリとVisual C++ を使って書かれていると、作者が公表しています(ただしソースコードは非公開)。しかし、ウディタを用いたRPGプログラミングでは DXライブラリによるコーディングはしない。ウディタにはコード入力の機能は無く、マウス操作や、キーボード操作、キャラ名称や会話文などのテキスト文字や数値の入力のみに対応している。
===乱数===
そもそも乱数とは何かという問題があるが、それは高度な数学的な議論になるだろうから、我々はその問題には深入りできない。
ゲームにおける乱数的な処理では、事実上ランダムな値にならず、演出や調整のためにアルゴリズムが介入している場合も多い。例えばゲーム中のくじで「外れ」続くと、当たり確率が変動し、次からは当たりやすくなるアルゴリズムなども良く使われる。<ref>『ゲームプランナー集中講座』、P232</ref>。
ゲームは娯楽であり、実用目的のシミュレータではないし、アルゴリズム介入で、確率的にもいんちきが多いので、あまり厳密なランダム性が問題になることは少ないだろう<ref>『ゲームプランナー集中講座』、P231</ref>。
例えばさいころというのは典型的な乱数器だし、ゲームにもよく使う物だろう。
無印C言語には標準的乱数関数 rand()があるが、これを乱数発生に使うことに批判的な意見もあるし、機能もやや不足していると見れる。
Windows64bit では int rand(void) の出力は 32bit 整数だろう。まず stand関数で初期化してから rand()を呼ぶごとに疑似乱数が帰ってくる。これの複数回の連なりが乱数列だね。帰ってくる値は0 以上 定数RAND_MAX の値以下。
例えばさいころの数値が欲しいなら、rand の返り値を6で割った後、余りに1足せば、とりあえずそれらしいものはできる。
RAND_MAXは rand()の属性として定数が与えられているだけだから(Windowsで0x7FFF)、この値の変更はできない。
まあこれでもそこそこいい加減な乱数として機能するだろうが、最近ではもう少し改良された、質の高い乱数関数もある。
また、改良された乱数関数は、乱数の範囲も指定できるから何かと使い勝手が良いし、バグを防ぐ効果もあるのだろう。
<syntaxhighlight lang="cpp">
Random^ saikoro1=gcnew Random();// Random^ でRandomクラスの変数を作っている。gcnewはインスタンスをつくるための演算子。
int detame; detame=saikoro1->Next(1, 7);// Next メソッドで「〇〇以上△△未満」の乱数を指定できる。「->」はメンバーアクセス演算子。
MessageBox::Show("目"+detame.ToString()+"が出ました。");
</syntaxhighlight>
↑例えば上述のコードは前編集者が示したものだが、これは .NETプログラミングですね。.NET のSystem::Randomクラスを使っている。.NETのクラスは普通、C#かVisual Basic で利用するので、Visual C++で使えるようにするには結構面倒な手管がいるが、その辺は読者諸兄、ヘルプやネット情報を参照して、適宜辿り付いてほしい。
C++ の場合はむしろ、 #include <random> を宣言してそこで使える関数を使用するほうが簡単でしょうね。この場合でも、乱数としての精度も高いし、帰り値の範囲指定もできる。
===画像のちらつき===
画像がひんぱんに変化するアプリでは、画面が、ちらつく事がある。画面のちらつきは、ゲームのように、画像を凝視するアプリでは、かなり利便性を損なう。
キャラクターが1歩移動するだけで、画面全体がちらついたりする場合もあり、かなり、プレイヤーの不満になる。
これは、ダブルバッファ(「裏画面」と、良く言われる)という技術で、解決を図る。
Direct Xの用語では「スワップ チェーン」と呼んでいる。
.NET Framework開発環境の C++や C#でもダブルバッファの機能があると解説されている。いくつかのGUIオブジェクトのプロパティで、ダブルバッファの設定項目がある。
しかし前編集者が実験したところ、この機能を有効に使って確認することはできなかったとの指摘がある。ひょっとしたら何らかのマイクロソフトの解説に間違いがあって、工夫次第では利用できるかもしれないが、少なくとも今現在のこのページでは、その問題に関するリファレンスは提供できない。
そこでやはり、以前の項目と同様、Win32 API または DirextX の利用をこのページでは考えたい。
前編集者は、.NET Framework のフォームデザイナでは、ちらつき自体は解決できそうだが、グローバル変数の共有が困難だったり、アプリ内から終了コマンドが使えない、などの難点があると指摘している。
ただ現編集者はこの2点に関しては、解決策はあると思うが、しかし特に調査はしない。
前編集者は、.NETプログラムでゲームを作る難点をいくつも上げているが、おそらくどれも、.NET の仕様や全貌に精通すれば解決できるように思えるが、そもそもその全貌がかなり広大なので、解決の道のりは長いだろう。
そこで少なくともこのページでのWindowsゲームプログラミングは、Win32 API を利用したものになるだろう。
==セーブ、ロード、データベース==
===セーブ機能とロード機能の作り方===
ゲームでもシリアライズ機能が必要なことは多いだろう。数値(HPなどの各種パラメータ現在値)や文字列(例えば、プレイヤーの作成したキャラクターの名前)や現在地やフラグ状況などなど、セーブの機能は欲しい。一番簡単な方法は、C言語の fopen 関数のテキストファイル書き込み機能で、テキストファイルとしてセーブすることだろう。
Windows API には CreateFile関数 があるが、テキストファイルでの素朴なセーブは一番簡単で単純なセーブ法だろう。そしてテキストファイルを読み込んでプログラムに各種変数を配置して、ロードとする。
書き込みとしては、一番単純なC言語記法では、fprintf ですかね。C++としての書き込みをしてもいいし、読み込むのも、一番基本的な方法で。基本Cだとしたら fscanf で、この関数でテキストの数値も変数として読み込めるはずですよ。場合によっては atoi関数 で文字列→数値の変換をすることもありますかね。
基本的にデータファイルは、OS もアプリケーションも、テキストファイルとバイナリファイルの2分類で考えるでしょう。でもテキストファイルだってバイナリの集まりなんですが、テキストを扱うファイルだけ特別視していると考えていい。
そして多少それらしいデータを作りたいときは、バイナリファイルで作るという事になるでしょう。
バイナリファイルでもデータとしてのファイルと、OS が機械語または何らかの仮想的な機械語として扱う実行ファイルがある。それらのバイナリは種類に応じて多くは冒頭にファイル識別子の情報があるだろうし、OS や アプリケーション側で工夫を凝らして、特定の条件を満たす場合しか動作しないようにしているだろう。そしてバイナリファイルを扱うときは、セキュリティの安全性も考慮するだろう。
基本的にプログラム側は何でもありだが、識別子の判別その他、ある程度様々な考慮をしないと、困った事態が起こり、プログラマーが責任を問われることも起こるかもしれない。
まあその時はいつものように口先だけで謝り、それでも許してくれなかったら、腹をかっ割いて死んでお詫びすれば、世間の人たちは美事な武士道精神と言って、口々に褒め称えてくれるだろう^^。←もちろんこれは冗談^^;;;。
市販のパソコン用ゲームや同人ゲームでは、テキストファイルではなくバイナリでデータ保存するゲームの方が圧倒的に多いだろう。その方がそれらしいしかっこがつく。ゲーム開発ツール側自体も、そうなっている場合が多い。RPGツクールもウディタも、セーブデータの形式はバイナリ。
テキストデータは基本エディタで開けるが、バイナリデータも内容によっては結構ぐちゃぐちゃの状態で開ける。バイナリデータはバイナリエディタで開ける。バイナリエディタのリードオンリーモードやバイナリビューアみたいなものがあれば、データーを壊さないで結構安全にデータ調査できる。
データ内容を秘匿したければ、バイナリ化だけではなく、暗号化も必要になるかもしれない。
===機能の整備===
セーブ&ロード機能の実装時には、まずセーブ機能から作るのがやりやすいという。
しかし最終的には関係関数の整備は、ロード機能が基盤となるだろう。
データや変数を、一定のスタイルでセーブして、一方で正しいスタイルでロードする、この機能が必要なわけですよね。
シリアライズされたデータを、型を決めたうえで配置しなければいけないから、ロードのプログラムの方が複雑に、面倒になる。
結局データのシリアライズは、ロード機能が基盤となり、その機能の作りやすさが、セーブ機能の作りやすさも支配するようだ。
== ゲーム中の特殊イベント ==
*[[ゲームプログラミング/特殊イベント]]
RPGやシミュレーションゲームで、1回しか起きない特殊イベントを作りたい場合もありますね。例えば日本の中世の戦国シミュレーションゲームで、「桶狭間の戦い」が3回も起きたら困りますよね。まあ起きるなら起きてもいいけどね^^。信長君には敦盛を3回舞ってもらいましょう^^。
さて、リンク先ではその話題についての叩き台、「こうプログラミングしたら、いいんじゃない?」、という事を説明しています。
==スケジュール管理==
[[File:Tokai Hairo.jpg|thumb|500px|ガントチャートの例:東海発電所の廃止解体工程]]
個人でゲームを作る時にはあまり考慮しなくていいのですが、シビアな仕事の世界では、スケジュール管理表が良く使われます。
「作業責任分担表」(TRM:Task Responcibility Matrix)といわれるスケジュール表から、それをグラフ的に図示したガントチャートといわれる表を作って、その表を見て作業計画を判断する<ref name="gpd65">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.65</ref>。
{|class="wikitable" style="float:left"
| 仕事
| 担当
| 状態
| 開始
| 終了予定
| 終了日
|-
| 仕事1
| 田中
| 済
| 2021/10/03
| 2021/10/10
| 2021/10/10
|-
| 仕事2
| 田中
| 仕掛
| 2021/10/11
| 2021/10/13
|
|-
| 仕事3
| 鈴木
| 済
| 2021/10/05
| 2021/10/08
| 2021/10/08
|-
| 仕事4
| 山田
| 未着手
| 2021/10/13
| 2021/10/17
|
|-
|}
{{-}}
ガントチャートでは普通、横軸に日程をとります。
商業ゲーム界でもガントチャートの横軸は日程です<ref name="gpd65" />。
ガントチャートとして図示することで、ボトルネック、リスク要素、直感的にスケジュールの詳細や全体像が理解しやすくなります<ref name="gpd65" />。
スケジュール管理のための、現実的、習慣的な工夫ですね。
このTRMとガントチャートは、IT業界だけでなく建築工事でも使われ、これを利用したボトルネックの洗い出しも、建築学の教科書に記述があります。
住宅の新築やリフォームをする時、建築業者がこの表を提示して、見せてくれることもあるでしょう。
業界人ではなくとも、こういう慣習を知っておくと、得るものがありますよね。
==ストーリー制作、そして順序==
ゲーム界、特に商業ゲーム界では、ストーリーもゲームも全体から作っていくようです。アトラス社(ペルソナシリーズ、女神転生シリーズ、などを手掛ける)では、「ゲーム全体に血を回すのが先」、という言葉が良く言われていました<ref>[https://news.denfaminicogamer.jp/projectbook/191030a/2]2020年12月1日に閲覧して確認.</ref>。
プレーヤーが見たいのは、物語の細部ではなく、ゲーム全体のストーリーやテンポ、総合像である、とは限らないのだが、しかし物語を含む創作物では、全体を見て重視し、そこから作っていくのはある意味王道、常套手段ではあります。
ちなみにやや雑談的ですが、日本の週刊漫画は、その週その週での勢いや読者の興味の引き付けも大事なので、全体がないのに、その場その場で場当たり的に作られた事も多かったようです。
現編集者が聞いたことのある話では、週刊少年ジャンプで連載していた本宮ひろ志氏が、不良少年物の漫画で、敵の不良少年グループと1対1000の喧嘩になり、さあいよいよ対決場に着いて勝負だってところで以下次号にし、そして実は本宮氏はその続きを全く考えていなくて、考えてみたけどどう考えてもどう描いていいかわからない^^;;;、そこで仕方ないのでイライラして近所の酒場に飲みに行き、そしてイライラしたままそこの常連達とあり得ない大ゲンカして^^;;、そのままボロボロになって家に帰って、2時間で次の号の漫画を描き終えた、と、本宮氏自身がメディアで語っていたのを聞いたことがあります。
さて、コンピューターゲームである以上、ゲームのストーリーはシステムと連携、調和したものになるでしょう。
そこで、ゲーム作家として、システムを先に決めた後ストーリー、そういう方法論の作者も多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.306</ref>。
とにかく商業ゲーム界では常識的に、全体像から攻めていく。
例えばドラマ脚本では、「ハコ書き」という方法がある。全体像に当たる「大ハコ」を記述してから、「大ハコ」→「中ハコ」→「小ハコ」と記述していく<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.184</ref>。
しかし、本当にすべてのゲーム制作は全体から作る必要があるのか、という疑問はありますが、その方法論に従うとすると、
:*エンディングを大まかに先に作る
:*機能の実験を簡易でいいので事前にしておく(※プロトタイプの項目を参照)
:*使用頻度の高い部分から作る
などの工夫を凝らして、常識的な方法を遂行していくことになるでしょう。
或いは、アルファ版(α版)を中盤から作り始めるとか…<ref>吉冨賢介『ゲームプランナー入門』、P17</ref>。α版の製作目的の一つとして、そのゲームが本当に面白いかの検証がある。面白くないと判断したら、制作中止もある。最初からではなく中盤から作ると、ゲームの全体像が見えるので、検証、判断がしやすい。
つまり全体から攻めて、細部やゲームが作られていくわけですから、必ずしも冒頭部から作り始める必要はないわけです。
;エンディングやラスボス戦闘を早めに作る場合
ゲーム作者にもよりますが、商業ゲームシナリオでは、エンディングを早い時期に作る人も多い<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
システム面についても、先にゲーム全体のクリア条件を決めてから、あとから各ステージの条件を決めていくことが多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.253</ref>。
エンディングの仮の、おおざっぱなシナリオ、そしてキャラクターの性格付けを先に決めておくと、ゲームの方向性と主人公達が目指すもの、ゲームの全世界像が作者やスタッフに明快になっていきます<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
基本的に商業ゲーム界では、全体→部分と細部、の構成を進めていきます。
ゲームは必ず最後にラスボスと戦う訳では無いでしょうが、その戦いはゲーム中で最も高負荷になるでしょうし、全てのシステムが集積する場面でもあるので、エンディングを先に作ると、ゲームの最大負荷の検証ができます<ref name="yth">[https://www.youtube.com/watch?v=kAUkSNhH410] 2020年8月30日</ref>。
3Dゲームでは、RPGなら戦闘シーン、アクションゲームならアクションシーンが、一般的に最も高負荷<ref>ntny著『ローポリスーパーテクニック』、ソフトバンククリエイティブ、2010年2月16日初版第5刷、P28</ref>。
負荷が高くて処理が落ちないかどうかも、この方法で確認できます。
まあ全ての物語は最後の最後が一番の見せ場ですからね。
中盤は重要性が低い…訳では無いが、少し手を抜いておこうという事か^^;;;。
最後は見せ場を盛り込むから、物語を削る必要があるとすれば、それ以外の部分、という事になりますよね<ref name="yth" />。
つまりラスボス戦(必ずゲームってこれで終わるの? ^^;;;)は最重要なので削らない。後の部分は削る可能性あり。だから最後を先に作って作りこんでおけば、制作過程で不測の事態が起こっても、重要部分はできているので、早く、上手にリリースできる。
{{コラム|イラスト制作でも順番を考え直すと打開できる場合あり。|
イラスト雑誌『コミッカーズ』(1995年季刊夏号)(唯 登詩樹 表紙)での藤島康介のインタビュー
藤島(談):よく若い漫画家さんから相談で、「先生みたいに女性の長い髪を書くとき、毛先を書くのが難しいです。根元は書けるのに」との相談を受けるのですが、
僕(藤島)は髪を描くときは毛先から始めて根元に向かって描いてます。
つまりイラスト初心者は、根元から髪の毛を描きたくなるのですが、ここで長い髪の毛を描く場合はむしろ毛先を先に書いて位置決めして、長い毛を描くと割とうまく描ける。
きれいな女性の髪の毛は、毛先の奇麗さが大事ですからね。
ストーリーを作る時に全体を考えたうえで、必ずしも最初から書くことにこだわらない方がいいように、絵を描く時にも同じ発想が有効になる。例えば機械製図でも、正確に奇麗に書くためあるいは実際の製作のため?、位置決めの優先指示の記法がある。
}}
*目標
世の中では目的や目標を明確化せよ、と主張する人は結構多い。現編集者は懐疑的。むしろ他人を自分の都合いいように動かしたいから、その方向を明示したいのだろう。それより、我々の本当の目的と目標は何か、歩みを止めてちょっと考えてみろよ、と、言いたい。
しかし結局世の人たちは目標をはっきり、言語化したがる。ゲームでもそれをすると、プレイヤーがゲームに引き込まれる、と言うが、実際にはそれはゲーム業界のカモになっている、インチキゲーマーだけだろう。
とにかくカモたちは目的を欲しがる。目標や課題がゲーム中で明確になっていないと、疑問だらけになり、ゲームをやめて、業界にお金を落としてくれない。そこで設計の際、各ステージやエリアなどの冒頭で、そのステージの課題や目標などを明示する必要があるという<ref>『ゲームプランナー入門』、P39</ref>。
ファミコンなどの古いアクションゲームではゲーム本編では目標は語られていませんが、しかし説明書などではきちんとそれが語られており、実際にスーパーマリオブラザーズの第1作目の説明書では、目的はクッパを倒してピーチ姫を救出することだと語られています<ref>『ゲームプランナー入門』、P54</ref>。
===チュートリアル、製作順序===
RGBやシミュレーションゲームでは、初めの方は、操作説明のためのチュートリアルイベントになることも多いのですが、ここにも製作順序のポイントは指摘できますね。
基本的にはチュートリアルの細部は後回しにしたい。と、いうのはゲーム本体の仕様変更が、製作過程で頻繁に起こるので、チュートリアルもそれに合わせて後回しにせざるを得ない。
最初の段階でチュートリアルを作りこんでも、仕様変更になれば、その記述自体が不適になる。
当初のチュートリアルイベントがそもそも必要かどうか。説明書、マニュアルに任せてもいいですよね。
基本的にゲーム本体の仕様がかなり変更を含み場当たり的なので、チュートリアルは後回し、ゲーム本編の完成間近の時期になるか、もしくは本編完成後になるでしょう。
==昔のコンピューターゲームと技術の発達、変遷==
ゲーム制作の時は、自分が昔プレイして楽しかったゲームを思い浮かべるし、参考にもしますよね。
ただ、コンピューターゲームは明らかに、周辺技術が時間とともに、かなりの速度で発達、変遷していきますし、過去のゲームを参考にすると言っても、精神面、思想面での参考で、技術面ではやはり、最新の情報技術を取り入れたいと、誰もが思うでしょう。
前編集者は得意げに、古典技芸の世界では、『師を見るな、 師が見ているものを見よ』と、いう言葉があると宣っていますが、そもそもこの国のゲーム業界では、基本的に金と目先の安易な欲望と私欲しか顧みられないし、そこを支配する知性と教養は、善意や誠意や真理とはかけ離れた、歪んだ論理と無駄に衒学的な詳細しか持たないし、権力をもって威張っている連中は、善性や美などとはかけ離れた安易な偏向した物理主義的な議論に明け暮れている連中なので、師などと呼べる人物に出会うことさえ、至難な事でしょう。
=== スプライト ===
ファミコン時代の昔のゲーム機には、一画面に表示できるキャラチップ数(敵チップも含める)に上限がありました。
一画面中に表示できる限界は、だいたい、マリオが一画面中に数十人ぶんです。
このように、ビデオゲームで小さなキャラクタを、高速表示する仕組みを、「スプライト」と呼んでいました。マリオのキャラクター表示は小単位のスプライトを複数合成していたようです。
このキャラクター数の制限が、当時はゲームの設計にも大きな影響を及ぼしていたわけですね。
例えばシューティングゲームで、100体の敵機を表示することはできない。
しかしそれなりの工夫はあった。表示のタイミングを変えることで、なんとなく、多量のスプライトがあるように見せることはできた。
つまり、
:1タイミング目では0~10体目までのAグループを表示、
:2タイミング目では11~20体目までのBグループを表示、
して、切り替える、うまく、素早くとか?
上手にプログラムを作ればそこそこ上手くいったようですね。それでも、キャラクターが多いと、一瞬、消えたりしている。
ファミコン上における実際の技術限界の正確な数値は、別の資料を参照していただくとして、あまりあてにならない数字として例えば、横1列上には 8体目までしか表示できなかったようです。マリオは一人で2*2=チップ使っていた。だから横一列では 4体までしか表示できませんね。
例えばシューティングでは、敵機の他に、弾丸などもスプライトでしょう。
マリオが4チップなように、巨大ボスなんかチップ数をかなり使っているでしょうね。
そしてチップ数が多いから、速度が遅くなるのでしょうか、何か我々の昔のゲームをプレイした記憶では、巨大ボスの動きは緩慢でしたよね。
しかしやや脱線しますが、巨大なキャラクターは何となく動きが遅いという我々の固定観念がある一方で、レスラーやヘビー級ボクサーはかなり動きが速い。相手の体が大きい上動きが早ければ、もう勝てないね。座して死を待つしかないか^^;;;。
<!-- すじ肉先輩さー、「ウドの大木」みたいな言葉を得意げに書いてる時点で、あんたは性格悪いし、このサイトでの不適切編集者である証拠なんだよね。-->
=== 書き換え速度と背景グラ ===
ファミコンのマリオでは、書き換えの手間を省くために、一説には、たとえばマリオ1の地上ステージの世界の空の青色は、実はほとんどの場合、マリオが横スクロールしても空の青色の部分は書き換えをしておらず、横スクロールする前の青色をそのまま使いまわしていると言われています。
なぜそれで効率化できるかというと、ステージ中の障害物はほとんどのステージの場合で、画面の比較的に低い位置に障害物があるので、その低地の障害物だけを書き換えすれば済むからです。
だからファミコン時代では、こういう理由から、ステージの背景グラフィックや、障害物配置なども決まっているでしょう。
だから果たして、現代でもそれを過去の名作のステージ構成を踏襲すべきかどうかは、分かりません。もちろん、仕組みを分かった上で真似るのなら、それは特に問題ないでしょう。
=== アナログテレビの にじみ ===
ブラウン管では、細かすぎるドットは表示が、にじみます。ゲームに限らず、テレビアニメや一般の実写番組などでも同様、にじみます。(どのように、にじむかは、専門的なので説明を省略する)
だから、ファミコン時代から、だいたいプレステ1時代のゲームのグラフィッカーは、このことまで意識してドットを描いているはずです。
ともかく、液晶テレビとブラウン管テレビでは、同じ画像データでも表示結果が変わります。
レトロゲームから勉強する際は、ファミコン〜プレステ1時代のレトロゲームでは、データ上の解像度よりも実際のディスプレイ上の映像は細かいことに気をつける必要があります。
たとえば滲み(にじみ)を意図的に利用することでテレビの解像度以上の表現をしていたりしていました。
また、ファミコンのドットは縦横の長さが縦方向と横方向とで長さが違うので、そこまで考慮して、グラフィッカーは絵を描いています。
また、ドットの図形的な細かさだけでなく、色についても、にじみによって、当時のゲーム機の色用のビット数の限界を超えた表示をファミコン時代から行っていました。
つまり、同じドットの黄色の単色でも、そのドットの幅が1ドットか2ドットかで、テレビ上で表示される色が違います。「色が違って見える気がする」ではなく、実際にブラウン管のディスプレイ上では色が違うのです。言い方を変えると、ブラウン管テレビでは元の画像データ通りには色は表示されていません。(さらに縦方向と横方向とで色のにじみ方が違うが、専門的すぎるので、説明は省略する。wiki書くために調べるほうも大変なので。)
なので、もし現代の人がファミコン当時のゲーム作品のグラフィックを参考にする際は、このことに気をつける必要があります。一番、手軽なのは、そもそもグラフィックの細部については参考にしないことです。
これはつまり、もし公式エミュレーターなどでファミコン時代の古いゲームを、現代の液晶ディスプレイ用のゲーム機でプレイしても、エミュレーター側で過去テレビのグラフィック特性の再現のための特別な工夫をしてないかぎりは、実はグラフィックの表示結果が当時のものとは異なるわけです。
一方、パソコン市場では、ノートパソコンの普及し始めた1999年頃には液晶ディスプレイのものが比較的に安価で出て来たので、この頃からパソコンゲーム市場では次第にブラウン管のにじみを考える必要が無くなったでしょう。
なお、アナログテレビはそもそもテレビ自体の解像度が低いので、プレステ2時代あたりからのゲームには合いません。だから、プレステ2時代あたりからは、あまりブラウン管の特性を考える必要はなくなります。
逆に言うと、あまり指摘されないことですが、プレステ2時代の当時の人が当時の最新ゲーム機をプレイするには、もし既存のアナログテレビを使い続けていた家庭は、テレビ受像機そのものを買い換える必要があったという亊です。
一応、家電量販店などでテレビ用のアナログ/デジタル信号の変換機などを購入してテレビに接続するなどして使えば、デジタルテレビ用のゲーム機もプレイ可能ですが。
だからアナログ放送自体は2010年くらいまで続いたとはいっても、あまり当時のゲーム機をアナログ用テレビでプレイしていたとは考えにくくはあります(プレイヤーの好みによる)。
アナログ停波以降の時代である2010年以降の現代では、もうテレビ番組の受像でもブラウン管は一切用いられていないので、もはや現代のコンテンツ制作では特に考える必要はありません。
ブラウン管自体のドットの縦横が違っている。
このため、ブラウン管を前提にしたゲーム機やパソコンはそれに対応するために画像データ側のドットの縦横比が違っている。
ゲーム機やパソコンの種類、さらにはアーケードゲームの基盤といったハードウェアの種類ごとに、コンピュータ側でのドットの縦横比の管理は違っている(らしい)。このため、移植のたびに、ドットは書き直しになったようだ。
古いゲームの制作では「ドット用紙」という方眼紙のような印刷書面がある(らしい)のだが、そのドット用紙の時点で1マスの縦横比が少しだけ違い、1マスが長方形である。1ドットだけでは長方形であるのに気付かないかもしれないが、しかし「ちりも積れば山になる」ように、何十や百ドットも積み重なれば、縦横の長さは大きく違ってくる。
現在のパソコン用のドットエディタ(という画像制作ツールがある)は1ドットが正方形であるが、しかしファミコン時代は1ドットが(ドット用紙の時点で)少しだけ長方形である。(なお、画像制作ツールそのものの作り方については、『[[ゲームプログラミング/画像ファイルの作成プログラム]]』で説明する。ゲーム制作では普通は必要ないが、知識として。)
ファミコンの色数制限は52色から4色×4パレット(1パレットあたり4色)を使えると言われている<ref>[https://mynavi-creator.jp/blog/article/history-of-2dcg-designer
『2DCGデザイナーなら知っておきたい2DCGゲームの歴史』 2017/8/21 マイナビクリエイター編集部 ] 2021年12月30日に確認. </ref>。しかし実際には、4色のうち1色は透明色として利用される色であり、全パレット共通の色である(なので3×4=12色になることのいなる)。スプライトのパレットとは別に背景のパレットがあるので実際には、もっと16色以上の多くの色数が一画面内で使えるが、しかしその他のさまざまな制限があるので、合計で一画面内で25色が使えると言われる(12 × 2+1 = 25)。
しかし実際には、ブラウン管の滲み(にじみ)を利用しているので、当時のプレイヤーには1パレットだけで描かれた1キャラのキャラチップ内でも3色以上の多くの色が見えているだろうし、画面全体でも25色内にない色がプレイヤーの目には映っていることになるし、もしかしたら52色にない色がプレイヤーには見えているかもしれない。なお、スーパーファミコンの色数制限は32,768色から16色8パレットであると言われている。
レトロなゲーム機では、さらにメモリ容量やストレージ容量などの制限もあり、けっして仕様上の最大色数を気軽に利用できたわけではないだろう。こういう制限もあったからか、ネットではファミコンの色数が「4色」やら「8色」、スーパーファミコンの色数が「16色」や「256色」などとも言われることもある。
{{コラム|「ドット絵」とは|
よく世間には、ファミコン時代のゲームの、ゲーム中での絵柄のことを「ドット絵」という人がいます。プレステ1やセガサターンのポリゴンによって、「ドット絵」が無くなったと思っている人もいます。
しかし現実には、プレステ以降でも、顔ウィンドウの顔グラフィクや、キャラチップなどのグラフィックでは、その制作時にドット単位のグラフィック指定は行われています。
たとえば装備品で武器の横に小さい剣の絵などのアイコン画像が書かれている作品などもありますが、こういったアイコン画像もドット単位の指定で描くでしょう。
こう指摘すると、「プレステ1以降のゲームは解像度が高い」とかよくわからない反論をする人がいますが、しかし「ドット」という工学用語のどこにも、「解像度が低い」とかの意味はありません。また、「ドット」というのをブラウン管ディスプレイの映像だと思ってる人もいます。
しかし、液晶ノートパソコンの普及した2001年以降の液晶モニターの時代ですら、
「液晶のドット欠け」などのように「ドット」という用語は使われます。
「ドット」というのは、けっしてゲーム用語ではなく、「液晶のドット欠け」のように電子工学などですでに意味が決まっているので、ゲームオタクの戯言(ざれごと)は「ドット」の意味には無関係です。
さて、プレステ1以降のゲームでもキャラチップなどでは、ドット単位の指定が行われるのでした。
それどころか、携帯ゲームソフトでは、ガラケーの時代から既にドット単位の指定は現役の手法であり、スマホゲーム時代の現代でも現役です。
だから「ドット絵には魅力がある」とかいって、ファミコン時代のゲームばかりあげる人は、こういう現役のドット絵作家の努力が目に入らない人ですので、なるべく信用しないほうが良いと思います。
また、画像編集のフリーソフトまたはシェアウェアで、現代でも「ドット エディタ」と呼ばれる種類の画像制作ソフトがあり、少なくとも2D同人ゲームの制作ではよく使われます。
ツクールやウディタのドット絵を作る場合でも、ドットエディタを使って作るわけです。
ゲームに興味なさそうな人が「ドット絵」をレトロゲームの絵という意味で使うのは仕方ないかもしれませんが、しかしゲーム通みたいな顔して「俺ってけっこうオタクなんだぜ」みたいなフリしてるのに、レトロ的な用法で「ドット」という言葉を使う人はアレです。
おそらく、本当はけっしてドット絵が好きなんじゃなくって、単に自分の子供時代の思い出が好きなだけだと思います。
ニュアンスは違いますが、アニメ評論でもそういう話があります。1990年代後半に岡田斗司夫と誰かの対談で(おそらく書籍『マジメな話』での対談)、
「アニメの黄金期はいつか?」というよくあるアニメオタク談義について、
対談相手が言うには、
よく「70年代だ」「いや80年代だ」とかで議論が始まるが「いや12歳だ」というオチが有名だと。
}}
=== アナログテレビの焼きつきなど ===
あまりゲーム評論では指摘されないのですが、
このほか、ファミコン時代はテレビ受像機がアナログのブラウン管ディスプレイなので、
あまり長時間、同じ色をディスプレイ上の同じ位置に表示し付けていると焼きつきが起きる可能性があるので、
ステージごとにコンセプトになる背景色を変えたり、
あるいはステージの背景色を黒にしたステージを増やしたりとかの工夫も、必要だったかもしれません。
ゲームではないですがパソコンソフトなどの古いソフトは、こういったディスプレイの焼きつきの事を考えており、だからスクリーンセーバー機能の搭載など何らかの対策をしています。
ともかく、あまり、特定の色ばかり続けて使いすぎないようにする工夫が必要だったでしょう。
アナログテレビは西暦2010年のアナログ停波する時代まで使われていたので、焼きつき問題はファミコン以降のプレステ1~2時代のゲームにも関係するでしょう。
ネット上にはデマで「ブラウン管だと焼きつきが起きない」(×)というデマがあるが、しかし西暦2001年くらいの筐体パソコンのモニターはまだブラウン管が多かったし、その時代からすでに焼きつき防止のためにスクリーンセーバーがWindowsに搭載されていた。だからデマ「ブラウン管だと焼きつきが起きない」(×)にダマされないように。
なお、現代のテレビ受像機には、焼きつき防止のためにすでに「ピクセルシフト」という機能があって、
これは画面上の映像の表示位置をタイミングによって微妙にズラす機能です。こういう機能がすでに搭載されているので、わざわざゲームソフト側で実装する必要はない。そもそも液晶モニターは、焼きつきが起きにくい。ただし有機ELはどうだか、まだ新しい技術なので分からない。
== 脚注 ==
<references />
== 関連項目 ==
* [[ゲームプログラミング/コンピュータゲームの種類]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
* [[プログラミング]]
* [[w:ゲームプログミング]]
{{DEFAULTSORT:けえむふろくらみんく}}
[[Category:ゲーム]]
[[Category:情報技術]]
{{NDC|007.64}}
6agrja26wsp4phtkchtjvj5on960dq3
205983
205982
2022-07-29T11:14:54Z
Honooo
14373
/*画面描き換えと背景*/
wikitext
text/x-wiki
<div class="pathnavbox">
* {{Pathnav|ゲーム}}
* {{Pathnav|工学|情報技術|プログラミング}}
</div>
== 概観 ==
このWiki参考書では、コンピュータを用いた[[w:ゲーム]]のプログラミングを扱います。つまり、いわゆる「テレビゲーム」や、[[w:コンピュータゲーム|コンピュータゲーム]]に関する記述についてです。
ここでは家庭用のパーソナルコンピュータで扱える範囲の事柄、それらのゲームソフトをつくるためのプログラミングについて議論します。必要に応じて家庭用ゲーム機の話題にも触れますが、あくまで派生的なものです。本書はプログラミングの教材であるので、大多数の読者が最初にプログラミングで触れるであろうパーソナルコンピュータでのプログラミングを、特にことわらないかぎりは想定しています。
用語に関して、コンピューターゲームの世界独自なものもあるでしょうから、適宜『[[ゲームプログラミング/コンピュータゲームの種類]]』などを参照してください。
== 本書の目的 ==
この教科書『ゲームプログラミング』の目的は、題名にもあるとおり、プログラミングによってゲームを作るための技術の参考資料を目的としています。
ゲームクリエイターやゲームデザイナー(絵描きではなくゲームの設計者のこと)のためではなく、プログラマーのための教科書です。
したがって本書では、ゲームとは関係の少ない一般IT企業での仕事のしかたについての記述もあれば、製造業系の組込ソフトなどに関する概要的な記述もあります。
なぜなら本書はゲームクリエイターではなく、たまたま何らかの理由でゲームを作っているプログラマーのための教科書だからです。たとえゲーム会社を退職しても、他の一般IT企業に転職してもプログラマーとして応用できることなども目指して本書は書かれています。
従って、紹介する話題が、かなりIT系、テクノロジー系の話題に片寄っています。本書で紹介するクリエイター論やデザイン論は、派生的なものにすぎません。
;本書を扱う上での注意点
特にことわりのないかぎり、本書ではC言語でのプログラミングによってゲームを作りたい読書を念頭に説明しています。
だから、ゲームの生産効率性を無視してでも、本来ならRPGツクールのような開発ツールを使ったほうが早いシンプルなゲームの場合ですら、本書ではC言語または他のプログラミング言語での開発にこだわった方法を説明している場合もあります。
;その他、本書について
このページとそのサブページだけを見ていると本書は「ゲームクリエイトの教科書かな?」と捉えられるかもしれませんが、
しかしこのページとは別に本wikibooksには「[[プログラミング]]」というページがあり、そこではC言語やJavaなど代表的なプログラム言語のwiki教科書にリンクしています。ゲーム限定の話題ではないですが、プログラミングのコードについても、そちら『[[C言語]]』や『[[Java]]』やなどの教科書のほうが(実際に動作するコードの量が)充実しています。また、Visual C++ での画面出力については『[[Windows API]]』に入門的な説明があります。
本書『ゲームプログラミング』はそういったプログラミング教科書一覧の一部でもあります。C言語やWindows API の教科書では、これをどうやってゲームのプログラミングに応用すればいいか説明できないので(本wiki『[[C言語]]』はけっしてゲーム目的のページではないので)、ゲームの実際としてプログラミングの話題を切り離すために本書『ゲームプログラミング』は存在しています。
なので本書にゲームデザイン論やクリエイター論などの内容の充実は期待できません。
本書『ゲームプログラミング』は現状、プログラマー目的以外には対応できないかもしれません。もしプログラマー目的以外の無料のwiki教科書が欲しい方は、現状では、自分で本wikiに加筆するか、あるいは本書『ゲームプログラミング』とは別に新規Wiki執筆を検討していただきたい。
== ゲームを作りたいな、よし、ゲームを作ろう。でも… ==
===しかし自分の本当の目的ってゲーム作り?===
「ゲームを作りたい」と思ったのなら、まずはあまり細かい難しいことは考えず、実際に作り始めてみるのが一番いいと思います。もちろんプログラミングについてほとんど何も知らないのなら、ある程度の勉強は必要ですが、ある程度の知識があるのなら、プログラミングの技量や知識の充実を気にするよりは、実際にゲームの完成を目指してプログラムを書いてみるのが一番いいようですよ。その過程でプログラミングの学習や経験は積んでいけますしね。JavaScriptやPython、無料でプログラミングに取り組める環境も、今現在では充実しています。
しかし、ゲームをプレイするのが好きだからと言って、ゲームを作る、までが本当に自分が好きかどうか、試しに少し作ってみたら、少し考えてみるといいですね。
例えば読者の中には、「私はRPGがすき」という人も多いでしょう。
RPG が好きという事はおそらく、よくRPGの題材になる西洋ファンタジーのストーリーや世界も好きという場合が多いでしょう。そして一方で現実のコンピューターRPGで魅力的に提供される、イラストや音楽が好きという場合もあります。
実際のゲーム業界の人々も、ゲームを彩るイラストレーションや音楽がいかに重要な要素かを語っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P85</ref>。
さて、ここで問題なのですが、「ゲームを作りたい」と貴方が思っていたとして、あなたが本当に作りたいのはゲームなのか?あるいは本当はイラストが描きたかったり、音楽を作りたいのではないか?
…というのは、ゲームというのは総合的な分野ですから、イラストや音楽はその要素として確実にありますが、それ以外、プログラミングやシナリオなど、様々な創作や創造が必要で、全ての作業量はかなり多いものになるでしょう。
そしてゲーム、コンピューターゲームにはゲーム独自の世界観があって、現実や小説や映画とは違う、独特の法則に支配された世界を作る必要があります。ある意味リアリティを持たない、リアリティから外れた世界です。だから、小説のようなリアリティにこだわるなら、ゲームは不向きかもしれません。
ゲーム作り始めの時点では、これらの判断は明確でなくても勉強目的でも構いませんが、しかその内「自分は本当にゲームを作りたいのか? Yes or no?」という疑問への答えが必要になるときがくるかもしれません。
試しにゲームを作ってみて、もし自分の本当の目的がゲームでないと分かったなら、それ以外の活動に移るのも、取る道の選択肢でしょう。
;給料は安い
職業として、商売としてゲームを作る場合、ゲームプログラマーの給料は洋の東西を問わず、安い事が知られており、書籍などでも言及されています。たとえば『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』(ジョン・ソンメズ 著)という欧米人のプログラマーの書いた本には、アメリカのゲーム業界ですらハードワークの割に賃金が低い事が記載されており、もし給料の高い仕事につきたいならウォールストリート(※米国の金融ウォール街のこと)のための仕事をするべきだと書籍中で指摘しています。
日本でも同様にゲーム業界の報酬が低いことは知られており、多くのゲーム会社の伝記漫画でも、よく語られています。
アニメーション業界と比べたら、ゲーム業界のほうが報酬が高いことは事実かもしれませんが、これは実は恐ろしいことに、アニメーション業界の報酬が異常に低いだけで、アニメーション業界よりはましだけど、結局は…というのが現状でしょう。
=== 同人ゲーム以外の発表の場 ===
2001年ごろの日本はネットを活用した同人ゲーム黎明期、フリーゲーム黎明期で、実験的な時代でもあり、多くのイラスト愛好、創作者や音楽創作者がゲーム制作に手を染めていたようです。この頃、まだイラスト投稿サイトや小説投稿サイトといったものは無かったか、あったとしても小規模でマイナーなものでした。
しかし2010年のあたりから各種の投稿サイトが普及したことにより状況は変わり、むしろ現在では、小説やイラストを発表したい人はそのジャンルの投稿サイトに直接アクセスしたほうが早く、そのためゲームを通して発表するのは人によっては廻り道かもしれません。
それをわかったうえで、それでもゲーム制作に身を投じるかを考えた上で、「よし、自分はゲーム制作をしよう」と思えるなら、ゲーム制作をするのが良いでしょう。
実際、今現在の作曲家やイラストレーターは、ゲームに関わったとしても、専門家として楽曲やイラストを提供するという立場に過ぎない場合もあり、自分自身が主体になってゲーム制作をする人は、プロアマ問わず少数派のように見えます。
同人ゲームの世界でも現在は(2021年頃に記述)、プログラマー系の作者が圧倒的に多い様です。
しかし、専門外の人だからこそ、メディアミックス的な意外な視点で新しいものが作れる可能性もあるかもしれません。コピーライター、作家の糸井重里が、マザー2の企画にたずさわった例もあります。しかし、あくまで「可能性」であり、成功はけっして保証されてはいないので、読者の自己責任でお願いします。
今現在のゲーム専門学校のカリキュラムはプログラミングが主体です。CGの授業は、週に2時間程の様。一方でゲームCG、或いは、一般CGに特化した学科もある様です。
あるWikibooks編集者Aは、もしイラストを描きたいなら、イラストの世界で描くのが安全、と考えています。ゲームプログラミングについては、プログラムを書ける人は絵コンテも描けそうだし、基本的にある程度の作図的なイラストを描ける人は多いだろうから、別にプログラミングに専念しろとは思っていません。
さて、読者がゲーム制作を職業として目指すのかどうかはともかく、とりあえず、ゲーム業界の状況を知っておくのが有用でしょう。
結局商業界の状況が権威をもってその分野を支配しているのがこの社会の基本なので、趣味でも職業でも、業界周辺のことを知っておくのは得ることが多いはずです。
文献『レベルデザイン徹底指南書』では、現実世界で自分が新しいスキルを1つ覚えたら、古いスキル1つはどれか忘れる必要があることを説いています<ref>大久保磨『レベルデザイン徹底指南書』、2016年12月14日 初版 第1刷発行、P81</ref>。著者は、最初はグラフィッカーでしたが、しかしプランナーに転職したので、グラフィック関係の技能は仕事では「忘れて」しまった、という内容を述べています。ただし、比喩的に「忘れる」とは言っていますが、実際には忘却し無くなってしまったわけではなく、仕事では時間の都合により両立できないので、グラフィック関係の技能は例え話で「忘れた」、のであり、現実にはグラフィッカー時代に培った観察眼をプランナー時代の現在でも活用している、と、書籍中では述べられています。
このことは職業、あるいは技能とは一般的にそういうもの、と考えることができるでしょう。
{{コラム|漫画家大塚志郎のアドバイス|
同人ゲーム界では、ゲーム制作と、イラストまたは作曲などを一人で兼ねている作者も、ある程度は居ます。一方ネットの世界には様々な簡単に利用できるフリー素材もあるので、イラスト作画や作曲をしなくてもゲーム制作は可能ですよね。
一人でイラスト作画や作曲をしながらゲーム制作をするのはある意味マルチタレントだとも言えますが、現実にその創作をしている人たちは、かなり年長のこの分野の熟練者が多いようです。若い19歳ぐらいの頃に、それらマルチジャンルを両立するのは、一般にかなり困難なことだと思われます。
漫画家の大塚志郎は、漫画家を漫画創作の手本にするならデビュー時代を手本にするのが良い、と、漫画家向けの技法の教育漫画で語っています。
大塚は、漫画家の人生のうちで、これからデビューを目指している新人に近い境遇にあるのは、ヒット後の漫画家の生活状況ではなく、まだ無名・マイナーな時代の態度・生活だ、と描いています。成功後の熟練した漫画家より、若いデビュー直後の作家をお手本にするのがいいだろう、という主張ですよね。
さて、それでもデビュー時代から複数ジャンルの同人活動を均等に兼業する意思が硬いなら、それはそれでひとつの考え方ですが、上述のリスクを知っておく必要があるでしょう。
}}
===ゲーム業界は産業のエンジン役?===
かつてはゲーム産業が、日本のIT産業やデジタル家電産業の中心的・牽引(けんいん)役であった時代がありました。しかし、2010年以降、この考えは当てはまらなくなっています。
PlayStation2あたりまでの時代は、経済評論誌の未来予想でも、「もしかしたら今後、家庭用の据え置きゲーム機がパソコンの代替品として、家庭のリビング家電の標準品になるかもしれない」という予想があった。ゲーム産業がそのような牽引役として、経済界から期待されていました。ソニーが国産CPUをプレステ2〜3に搭載したり、WindwosのマイクロソフトがXBOXでゲーム機に参入したり、そういう時代です。
しかし2020年代の今は違います。結局、2020年代のゲーム機に使われてる技術や部品は、パソコン用の部品や技術の流用、ゲーム機のCPUも、今やインテルなどのパソコン用CPUをゲーム機でも使っています。
もはや現代は、ゲーム業界は、産業のエンジンではないようです。
ですから今現在、新しい技術に興味ある人は、ゲームにこだわらず、直接的にその技術を勉強し改良したほうが近道です。
たとえば、インターネット技術を使って何か新しい事をしたいなら、ゲームを作るよりもwebアプリやサーバーwebサービスを作るべきだし、目的のネットワーク用ソフトウェアをそのまま制作したほうが早いし確実です。
古い経済知識の先入観にとらわれず、無理にゲーム制作にこだわらないほうが、自分自身の技能やキャリアも開けていくでしょう。
2010年に出版された商学書籍『メイド・イン・ジャパンは終わるのか』には、「しかしながら、ファミリーコンピュータで世界に攻勢をかけ、その後圧倒的な強さを誇っていた日本の家庭用ゲーム産業も、90年代末からはその競争力にかげりがみえはじめた。日本の国内市場は伸び悩み、成長率は鈍化傾向にある(図表7-3)。」とあります<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.263</ref>。
その「図表7-3」の統計値によると、
:ファミコン発売の1993年には2268億円、
:スーファミ発売の1990年には2430億円、
:プレステ1発売の1994年には3882億円、
:1995年には急成長して4769億円、
:1997年には4795億円で、ほぼこの頃がピークであり、
:2000年には3768億円にまで低下(プレステ2の発売年)、
:2005年には3151億円まで低下(XBOXの発売年)、
である。(青島らが『レジャー白書』、『情報メディア白書』、『月刊トイジャーナル』、『CESAゲーム白書』などをもとに作成した図表の統計値です。)
<!-- ところで前編集者Sさん,これって正確には何の数字,金額なの?それを後で書き足しておいてほしいんだけど…。あれかな?一年のこの国のゲーム産業の売上高? -->
また、2010年の時点の商学研究では、1997年を境に、ゲームソフト市場で競争する企業数が増加傾向から減少傾向に転じた<ref name="m289">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.289</ref>、とも言われています。
書籍『メイド・イン・ジャパンは終わるのか』にも、引用文「家庭用ゲームは日本がその本格的立ち上げを主導し」<ref name="m91">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.91 </ref>と書かれているぐらいで、1990年代は日本のインパクトが強かったようです。
なお、携帯電話の分野で、日本は国際的な地位を喪失したのに対し、デジタルカメラとゲームは「現代」(参考文献の著作時2010年ごろ)でも日本が主要な地位にある<ref name="m91" />。
{{コラム|ゲームが産業の牽引役だと語った人物|
1998年頃、アニメ評論家の岡田斗司夫が、未来予想の一貫として、「これからゲーム機が、(パソコンではなく)家電の中枢になるだろう」というような内容の未来予想をしていました。たしか、岡田の著書『東大オタキングゼミ』(自由国民社、1998年)で、このような未来予想が読めます。岡田の東大での講義を加筆修正してまとめた書籍なので、実際の講義はその数年前に行われていたのだろうと思います。
岡田の東大での講義は東大生のその後の進路、官僚や大企業のビジネスマン達に大きな影響を与えただろうし、若手新進評論家として、この国の政治・経済人達も、その言論を参考にしただろう。
実際、2008年(リーマンショックあたり)くらいまでの日本の家電業界の投資は、ソニーがゲーム機のCPUを作ったりと、岡田の予想を参考にしているような面もありました。
ですが実際の2001年以降の家電業界の結果は予想とは少し外れました。まず
:* そもそも、冷蔵庫もエアコンも全然デジタル化(IoT化)されず、家電のほとんどが外部からのコンピュータ制御を必要としない状況。
:* 個々人が持ち歩いているデジタル家電は、携帯ゲーム機ではなくスマホになった。
:* パソコンは多くの家庭にいまだにインターネット用端末などとして残り続けている。
一方岡田は東大オタキングゼミで、98年当時の時点で任天堂が莫大な現金資産(たしか数千億円ほど)を持っていることに注目しています。
一般の大企業は、現金ではなく株券や不動産などの形で資産を蓄えています。しかし任天堂は、銀行口座の現金だけで数千億円という、非常に資金力の高い企業でした。今や日本を代表する世界的なゲーム大企業になっています。
また、日本だけでなくマイクロソフトのXBOXなど、実際に欧米の企業も昔はコンピュータゲームが産業の牽引役だと思って、先をこぞってゲーム機に参入していたわけでもある。岡田の未来予想は、決して根拠の無いものではなかったのです。
}}
{{コラム|読書について|
ゲーム業界と関連のない文献も、この教科書では出典として書かれていますが、これはこの頁の主要執筆者Sが、多量の市販本を読む以外に知的活動の方法を知らないことと、自分自身の文章の権威と信頼性を、著名人の威を借りて確立したいからでしょう。
ゲーム業界を志望するなら、ゲーム業界人の書いた本は少なくとも何冊かは読んでおくといいでしょう。
ネット上では、業界人ではないのにもっともらしく書かれた文章も多いですし、おそらく本Wikiの執筆者にも本格的なゲーム業界関係者は一人もいないでしょう。
業界人達のSNS発言ではなく、現代では書籍があるので、実際に書籍を手に入れて読むのがいいですね。書店で販売される書籍というのは、けっして著者だけの意見でなく、編集者や校正者、周辺の職業人達が査読をして、内容の信憑性を確認しています。
<!-- ニュース解説者の池上彰(いけがみ あきら)が、たしか2011年くらいのテレビ番組で言っていたことだと、編集者Sは言っている。 -->
何十冊も本を読むよりはプログラミングを書く実践のほうが重要でしょう。
『ゲームデザイン プロフェッショナル』著者であるFGOクリエイターも、ゲーム開発の書籍は読んでおくべきだと忠告しています<ref>『ゲームデザイン プロフェッショナル』、P234</ref>。また、ゲームデザイン本で学んだ知識は、ゲーム業界以外でも仕事術として活用できます。たとえば上司への業務報告の報告・連絡・相談(ホウ・レン・ソウ)などの考え方は、ゲーム業界でなくても活用できます<ref>『ゲームデザイン プロフェッショナル』、P332</ref>。
いっぽう、もし最新IT技術を勉強したいなら、読むべきは、ゲーム制作の解説本ではなく、そのIT技術の解説本など、そのものの書籍を読むほうが近道でしょう。
}}
===ゲームプログラミングは面白い。しかし、そんな楽な事ではない。===
ここでいう「プログラミング」とは、C言語などのプログラム言語による開発のことです。RPGツクールなど開発ツールによるゲーム制作の話は原則していません(本書『ゲームプログラミング』はあくまでプログラミングのための教科書です)。
さて、よくネットや、あるいは日常でも(C言語などによる)「ゲームプログラミングは簡単だよ。イラストやシナリオのほうが難しい。」、などという人がいますが、この発言の心は、「俺はプログラミングもイラストもシナリオも出来る凄い男だぜ。しかもプログラミングなんて簡単だし、むしろクリエイティブなイラストやシナリオの方に精力を費やす偉い奴だぜ^^」という、世間に良くいる武勇伝、自慢を語りたがる、インチキ親父が吹かしているだけなので、あまり真面目に取り合わないのが正解だと思います。
まず第一に、不当にプログラミングの価値を貶めている言説ですよね。
Visual C++またはVC# 、あるいは Direct Xなどを使ってプログラミングすることは、そんなに簡単なことではないでしょう。
ゲームプログラミングの入門書などには、初心者でも理解できそうな比較的簡単ないくつかのサンプルコードがありますが、それは初心者でも簡単に書けそうな技術だけを抜粋してるという、あくまで例外です。
RPGならたとえば、ドラクエ3のような戦争画面の行動順を処理するソート機能をつくるだけでも一苦労ですし、ほかにも道具・アイテムなどの自動整理をはじめとする標準機能を作るだけでも一苦労です。
決して上手い人のサンプルコードをコピーアンドペーストをして終わりという訳にはいかず(そもそも現状そのようなサンプルコードがネット上に無いですが)、もし仮にサンプルコードがネットに公開されていても、自作品に組み込む際にさらにそれをデバッグ(決してテストプレイの意味ではなく、実際にコード修正が必要になります)しなければならず、プログラミング言語の理解が必要です。
ゲームのプログラミングは決して楽ではないし、仮にもし楽だとしたら、じゃあゲーム会社のプログラマー職の人の仕事は何なんだ・・・という疑問につながりますよね(デマを言ってる人は、この疑問を脳内に都合よく無視しますが)。
ツクールやエディタのような制作ツールを使えば、C言語的なプログラミングは不要ですが、それはそのツクールなどのツールを開発している人達にプログラミングを肩代わりしてもらっているだけなので、決して「ゲームプログラミングが楽」、ではないでしょう。楽だというなら、じゃあツクール開発元の角川書店およびその発注先ソフトメーカーのプログラミングが楽だとでも言うのか・・・(デマを言ってる人はこの疑問を無視します)。
そもそもコンピューターゲームというのはプログラミングがなければ成立しないのですから、そのプログラミングの価値を貶めて平気な人は、コンピューターゲームにかかわる資格はないでしょう。
== ゲーム制作に関する留意点 ==
=== IT的な留意点 ===
====プログラミングなしでも同人ゲームを作れる====
自分でゲームを作る際、必ずしも、C言語などプログラム言語で記述する必要はありません。
プログラミングをせずに、ほぼマウス操作と会話メッセージなどの文章のキーボード入力だけでゲーム開発をできるようにするソフトウェアが、有料または無料で発表されています。
たとえば、RPGを作りたいなら、日本で発表されているソフトでは、『[[w:RPGツクール]]』や『[[w:WOLF RPGエディター]]』などのように、RPG製作に特化された開発ソフトがあり、大幅に開発の手間を減らせます。なお、『RPGツクール』は有料製品です。『WOLF RPGエディター』は無料ソフトです。
アクションゲームを作りたいなら、『[[w:アクションゲームツクール]]』があります。これらツクール製品は有料製品です。(なお、かつて『[[w: 2D格闘ツクール2nd.]]』というのがありましたが、しかし現在ではサポート切れのため、今現在の市販の十字キーコントローラーが初期設定では動かない、一部のボタンしか使えないなど問題点があります。)
また、ノベルゲームを作りたいなら、フリーソフトの『[[w:吉里吉里Z]]』などがあります。吉里吉里Zはソースコードが公開されており、オープンソースになっています。
:なお、とりあえず「ゲーム開発ツール」と呼びましたが、じつは呼び方は特に決まってはいません。「ゲーム制作ツール」と呼ぶ場合もあります。ゲーム開発ツールのことを「ゲームエンジン」と言う場合もありますが、開発ツール以外のゲーム用ランタイムのことも「ゲームエンジン」という場合があります。
:本Wikibooksでは、とりあえず、ツクールや吉里吉里シリーズやウディタ(WOLF RPGエディター)などのソフトの呼び方は、まとめて「ゲーム開発ツール」または「ゲーム開発ソフト」と呼ぶことにします。
C言語などによるプログラムは、上記のゲーム開発ツールを使わない場合の選択肢になるでしょう。
既存のゲーム開発ツールの仕様に不満を感じる場合に、「じゃあ自分でプログラムして作ろう」となり、プログラミングが必要になるわけです。
なお、上記の開発ツールはほとんどがWindows用のソフトです。MacやLinuxでは動きません。MacやLinuxで動作するゲームを作りたい場合は、別のソフトウエアを使う必要があります。
既存のゲーム開発ソフトを使わずにプログラムを組んでゲームを自作する場合、必ずしも既存のツールのような、ゲーム作品と開発ツールが分離された仕組みを再現する必要はありません。
一般的に初心者が、ゲーム開発ツールを作ることはほぼ不可能です。初心者は開発ツールを作ることは考えずに、まず1本、とりあえずゲーム自体を完成させてみましょう。開発ツールを自作したいのなら、まず先にゲーム1本を完成させたあとに、あとから開発ツールとゲーム作品の分離などに取り掛かるのが推奨です。
==== 商業ゲームの開発言語 ====
基本的に、現代の商業ゲームは、C言語で開発をする。
ただし、ファミコンの古いゲームは、アセンブラで開発されていた。ファミリーコンピューターからスーパーファミコンに至るまで、OSは搭載されていない<ref name="m289" />。
ではいつからC言語がゲーム開発に使われるようになったかというと、商学の学説では、プレイステーション(※ おそらくプレステ1?)の頃からだろう、と考えられている<ref name="m289" />。ただしこの時代でも、処理速度の高速化のためにアセンブラにアクセスする開発チームも少なくなかった<ref name="m289" />。
また、プレイステーションのOSは独自仕様である<ref name="m289" />。
カプコンなど一部の企業は、OSによる開発ではなく、移植性を高めるために自社製の内製フレームワークを用いて開発する。カプコンの場合、2010年頃は「MTフレームワーク」という自社製フレームワークを用いて開発を行っていた<ref name="m289" />。
{{コラム|ゲーム用のメーカー独自プログラミング言語について|
ゲーム開発ソフトには、ゲーム開発用の独自のプログラミング言語を持っている場合があります。このような機能の実現方法は、原理的には、ファイル入出力の関数を使い、テキストファイルの文字列を読み取って、文ごとにプログラム動作を設定・実行している、と、考えられます。インタプリタは、このような方法で作られています。
ゲーム製作ソフトでの独自のプログラミング言語はたいてい、コンパイル作業を必要としないので、おそらくインタプリタ方式でしょう。
基本的にWindowsの場合、実行ファイルに変換するには、Visual Studio というマイクロソフト社の配布している開発環境が必要です。
Visual Studio が開発環境を提供していない独自言語は、たいてい、インタプリタ方式となると思われます。
コンパイラ方式に比べて、インタプリタは処理速度が不利なので、適用できるジャンルや用途が限られます。たとえば3Dアクションゲームには、インタプリタ方式は不向きでしょう。
これらの独自言語を使うにしても、自分自身で独自言語を作りたいと思うとしても、この教本ではまず、既存のプログラミング言語を使ってゲーム制作を開始することを推奨します。
}}
====ゲームのプログラム言語の歴史====
ゲームを書くために利用される言語は多岐にわたっています。歴史的にはゲーム業界でも、[[C言語]]や、特に計算機のスピードが重要になる場面では[[w:アセンブリ言語|アセンブラ]]を利用してプログラミングを行うことが普通に行われていました。<!-- (文献)→-->そのため、ゲームプログラミングは通常のプログラミングと違った技能が必要であるように思われていました。
現在では計算機がある程度速くなったことや、ゲームプログラムの開発を複数人で行うことでテクニカルなプログラミングが避けられるようになったことにより、ゲームプログラミングは他の一般のプログラミングと同じような課題だと見なされています。
しかし、特にアクションゲームなどのリアルタイムでの画面書き換えが必要なゲームで、プログラムのスピードが重視されることは変わっていません。また、コンピュータの性能があがるにつれ、それらの性能を全て引き出すように表現手段が変化してきたため([[w:3次元コンピュータグラフィックス|3D]]、[[w:ポリゴン|ポリゴン]]などを参照)、状況によっては複雑で特殊なプログラミングが必要になることもあります。
===== 初心者が使えるプログラミング言語 =====
ゲーム開発において、一般にゲームショップなどで流通している商業ゲーム作品において、現在よく利用されているプログラミング言語として、[[C言語]]、[[CPlusPlus|C++]]、[[Java]]があげられます。
Windowsの3DエンジンのDirectXは、主にC++を想定しています。なので負荷の高いアクションゲームを作りたい場合、Visual C++での開発が安全でしょう。
しかし、ネット上のフリーゲームでは、C++以外の言語が使われることも、よくあります。
さいきんゲームエンジンとして有名なUnityは、言語としてはC#の文法を採用しています。
[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
市販の書籍では、Pythonによるゲーム開発を紹介した出版物もあります。ただし Python は原理的にインタプリタ方式であるために処理速度がC++に劣り、アクションゲームなど負荷の高いゲームを作る事を目指している場合は、将来的にはPythonからC++への装備変更が必要になるかもしれません。
===== ゲームに適さない(だろう)言語 =====
;Flash関係
例えば、かつて Adobe の Flash が、ブラウザで動かせるゲームを作る際に、よく使われていました。このようなwebブラウザ上で動くゲームのことを一般に、「ブラウザゲーム」と言います。ただし、現在ではFlashは廃止の方向です、すでにほぼ廃止されているといっていいでしょう。また、現状では、ローカルPC環境でのゲームをJavaScriptで作るのは、アマチュア段階では困難です。JavaScriptのアマチュアゲームと言う事例を聞きません。
;JavaScript
なお、JavaScript はクロスプラットフォームですが、しかし、セキュリティ上の理由などから、いくつかの機能(たとえばファイル入出力)がwebブラウザ上では使えないようになっており、そのため、JavaScript だけでゲームを作るのは、初歩的なゲームを除くと、かなり困難です。(おそらく、オンラインゲームでは、サーバー側でPHPやサーバサイドJavaScriptなどの別プログラムが走っていると思われます。)
セーブ機能の必要なゲームを作る場合は、JavaScriptでの開発は選択肢にない(セーブの実装には、JavaScript国際規格にはない非標準仕様を使いこなす必要があり、かなりの技術力を要するでしょう)。
=====ブラウザゲームの初歩的な原理=====
商品として流通するようなゲームや、高度な機能を持つブラウザゲームを作ることはとても難しく、このページでは手に負えません。そこで、このページでは、初心者が練習用につくるゲームを例に記述します。
webブラウザだけで動くのがブラウザゲームです。ブラウザゲームを作るのに使う言語の第一選択肢はJavaScriptです。サーバー側の処理が必要ならPHP,Python,Perl,Javaなどの言語の出番でしょう。
「ネットワークゲーム」は「ブラウザゲーム」とは意味が違います。
「ブラウザゲーム」は、パソコンにwebブラウザさえあれば、ネットワークに接続していなくてもゲームプレイできて、最後、クリアまでプレイできる作品もあります。
しかしネットゲームは、ネットワークに接続しないと、ゲームを開始することさえ不可能です。つまり、サーバの提供するゲームが「ネットワークゲーム」「ネトゲ」です。
もしPHPやPerlなどでゲームを作る場合、普通はネットゲームになる筈なので、作者がサーバを構築して提供する必要がありますし、プレイヤーにはゲーム中にサーバに接続する環境が必要になります。提供者は、サーバを用意したり、保守管理する必要がありますよね。サーバーがダウンしてしまうと、プレイヤーがゲームをできなくなります。
「PHP ゲーム」などの単語でネット検索したり、あるいは書店でプログラム言語の書籍や解説サイトを見ると、ときどきPHP・Perlなどの言語でゲーム開発しているものもありますが、一般的なダウンロード型のゲームとは違う筈なので、気をつけてください。
{{コラム|ソケット通信、ほか|
コンピュータプログラムからインターネットに通信するには、いくつかの方法がある。
C言語の場合はOSの提供するソケット通信といわれる機能を使う方法、
JavaScriptにあるHTTP通信の機能を使う方法、
などがあるだろう。
ただし、JavaScriptでゲームを制作するのは、セキュリティ上の制約などからセーブロードが標準的方法では困難など、とても制作が難しい。
よって本セクションでは、C言語にソケット通信を組み込むことの概要を説明する。
ゲーム制作初心者がソケット通信までする必要はないが、将来的には知る必要があるかもしれない。
本wikiではWindowsの場合については 教科書『[[WinSock]]』、
macやLinux / Unix や BSD の場合は 教科書『[[Unixソケットプログラミング]]』 で説明している。
Windowsとそれ以外のOSとで、ソケット通信の仕様が微妙に異なる。
ソケット通信では文字コードの問題がある。手元のパソコンの文字コード設定は、通信相手方の端末には反映されない。
Windowsの日本語版では、伝統的に Shift-JIS といわれる文字コードが使われてきたが、海外のWindows端末は日本の文字コードにあわせてくれないし、macやLinuxやBSDも同様に日本には合わせてくれない。
簡単な対処法として、ゲーム中では日本語を送受信しない、つまり半角の英数字と記号だけを送受信する、という道はある。
会員登録などのためにどうしても氏名や住所などの日本語を使う必要がある場合、PHP・Pythonなどサーバ言語に対応した「フレームワーク」があり、そのフレームワークが最初から日本語に対応、もしくは設定を少しいじるだけで日本語対応するので、それを利用すれば効率的かもしれない。
ゲームとは別途、サーバー側にフレームワークをインストールして、会員登録時にサーバー側でそれを使うようにすればいいだろう。
しかしゲーム内では日本語の扱いは非常に難しい、限定されるという事になるだろう。
C言語のプログラムにサーバサイドの言語・システムを組み込むのは難しいから、ネットゲームではどこかでソケット通信に頼ることになるだろう。
市販の本を探しても、そもそもソケット通信の書籍自体がめったに見当たらないし(ほんの少しだけ出版されている)、もし見つけても全く文字コードの問題の解決方法は紹介されていない(2021年現在)。
}}
====プラットフォ-ム====
;ライセンス料
一般に、プレイステーションや任天堂のゲームを開発するには、専用の機材が必要であり、そのため、ソニーや任天堂とライセンス契約しなければいけない<ref>『ゲームプランとデザインの教科書』、P.107 </ref>。
その契約に際して、ライセンス費用または料金と呼ばれるものを、ゲーム機開発会社の任天堂、ソニーに支払う必要があります。
現在でもソニーや任天堂のゲーム機用のソフト開発・販売には、ライセンス料が必要です。少なくともPS4やニンテンドースイッチのパッケージソフト開発には、「ライセンス費」が必要<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.120</ref>。
なお、書籍『ゲームプランナーの新しい教科書』によると任天堂やソニーのようにゲーム機を作っている会社のことをハードメーカーと言います。つまり、ゲーム機のハードメーカーにライセンス料を支払うという仕組みになっています<ref>『ゲームプランナーの新しい教科書』、P20</ref>。
また、スマートフォン向けアプリは、プラットフォーム使用料が掛かります。
書籍『ゲームプランとデザインの教科書』によると AppleStore, GooglePlayともに売上げの30%とのこと<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.121</ref>。その他のプラットフォームも、大体同じとのことです(参考文献の著作の時点では)。
Google やAppleのようにプラットフォームを提供している企業のことをプラットフォーマーと言います<ref name="gp244">吉冨賢介『ゲームプランナー入門』、P244</ref>。
昔からゲーム機のライセンス料は有料で高額であり、ソニーや任天堂の収益源のひとつになっている<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.267 </ref>。一方、パソコンゲームにはライセンス料が無いのが普通です<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.283 </ref>。
なお、ハードメーカーでなければプラットフォーマーでもないゲーム会社のうち、製造から販売までを手がける会社のことをパブリッシャーといい、たとえばカプコンやコナミやセガやスクウェア・エニックスやバンダイナムコなどがパブリッシャーです<ref name="gp244" />。
実は、必ずしもパブリッシャーが開発を手がけるとは限らず、スマホ向けアプリなどではディベロッパーといわれる開発専門の会社に委託している場合もあります<ref>吉冨賢介『ゲームプランナー入門』、P245</ref>。
;ポリコレ規制
Apple社のAppStore向けのスマートフォンアプリでは、アップロード後に、公開前にAppleによる審査があり<ref name="g139">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.139</ref>。、審査は欧米基準です。
GooglePlayは、公開前の審査はないが公開開始後に海外基準で審査されるので、それに違反していると配信停止になります<ref name="g139" />。
海外プラットフォームで販売・配布したい場合、「ポリティカル・コレクトネス」(政治的な正しさ)といわれる、海外の公序良俗の基準に配慮する必要があります<ref>『ゲーム作りの発想法と企画書のつくりかた』、P.235</ref>。
欧米の判断基準が、アジア諸国やアフリカの生活習俗に合致しない場合も多いのですが、欧米のIT大企業はその欧米基準での規制が政治的に正しいと考えているでしょう。「日本では、少し考え方が違う」と言っても、通用せず規制される場合も多い。
ゲームだけでなくテレビアニメでも、漫画ワンピースの海外アニメ版では、主人公側の若者がタバコを吸っているシーンをアメ玉に作画を変えられたり、ドラゴンボールに出てくるミスターポポという肌の真っ黒なキャラクターの肌を青く書き換えたり、色々な例があります。
ポリコレとは関係ない事例ですが、TVアニメーションのポケットモンスターで主人公のサトシ達がお握りを食べているシーンで、アメリカ版ではドーナツになっていたことがあります。これは、国による食文化の違いを示していますよね。
===プロトタイプ===
ゲームでは、曲や絵が良くても、ゲームとしては今ひとつ面白くない、という事は起こり得ますよね。
ですからむしろ、商業的なゲーム制作では、イラストは簡略なものを使ったうえで、プログラム中心の試作品(プロトタイプ)をいくつか作り、その中でゲームとしての面白さがあるものを、取捨選択したうえで商品化を考え、その後イラストや楽曲を詰めて完成度を高めていく、と、いう制作過程を取るようです。
書籍『ゲームプランナー入門』(吉冨賢介 著)によると、商業ゲーム界では、企画書に書かれたゲームが本当に面白いかどうか確認するために、「プロトタイプ」が作られます。プロトタイプの段階では、プログラマーと、企画の意図を考慮するためプランナーも関わります。<ref name="gp17">吉冨賢介『ゲームプランナー入門』、P17</ref>
イラストレーターは、プロトタイプの前段階あたりでイメージイラストを提供し、スタッフ間の共有イメージを作ります<ref name="gp18">吉冨賢介『ゲームプランナー入門』、P18</ref>。そしてプロトタイプ進行中は、グラフィック案の提案をしていきます<ref name="gcw56">蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P56</ref>。サウンドも同様、プロトタイプでは、曲調を固めていく段階です<ref name="gcw56" />。
:※時々あるトラブルとして、マイナーな同人ゲームや零細メーカーのゲームで、背景イラストや脇役キャラクターなど目立たない部分で他社のイラストが使われていることがあるようです。おそらく試作用に流用したイラストが、そのまま製品に混入したのでしょう。こういうトラブルがあるので、他社イラストの使用は試作であっても避けるべきです。
;実装検証
プログラマーは、そのゲームでコアになるプログラムやシステムやミドルウェアについて、プロトタイプ段階で実装検証を済ませておく必要があります。プロトタイプより前の原案の段階では、利用するミドルウェアの洗い出しをして、出来る範囲での基礎実験をしておきます<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P54</ref>。
ミドルウェアによっては使用料が発生するので、その点を事前に調べておく<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P55</ref>。
プロトタイプのうち、張りぼての例えば画面だけの物等を、「モックアップ」といいます。一方である程度遊べる状態まで作っているものを、「プレアブル」といいます<ref>STUDIO SHIN『ゲームプランナーの新しい教科書』、翔泳社、2018年3月10日初版第2刷、P251の図</ref>。
ゲームデザイン本ではよく「プロトタイプ」という表現が用いられるので、本ページではこの言葉を使うことにします。
{{コラム|商標権等|
知的財産権には著作権・商標権・意匠権などがありますが、商標権は特に強い権利であり、気を配る必要があります。
意匠権とは、建物や工業製品の外観に関する権利なので、ゲーム制作ではあまり気にする必要はないようです<ref name="gpd135">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.135</ref>。
「特許権・実用新案権」と「商標権」は、事業者によって国に登録されている権利で、かなり強力な権利なので、気をつける必要があります。
特許権や実用新案権とは、大まかに言えば、技術的な発明に関する権利です。商標が登録されているかどうかは、特許庁の『特許情報プラットフォーム』というwebサイト<ref name="gpd134">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.134</ref>で確認できます。
商標をトリッキーな意図で登録する人も多く、自社でビジネス展開をする気がなかったり、他社の商品などでまだ登録されていない物を申請したり、そういうやや不正な登録申請でも認可されてしまう場合も多いです。
また、商標は業種のジャンルごとに分かれているので、たとえば携帯電話のジャンルが新たに追加された時代に、過去のゲームの商標を登録した人がいました。そのため携帯ゲームを出せなかったり、商標を買い戻したり、取り戻すための裁判をするのに時間とお金がかかってしまったり、様々な問題が発生します。<ref name="gpd134" />
著作権は、登録の必要がなく、著作をした時点で発生する権利です。
『ゲームプランとデザインの教科書』によると、こういう事柄にまだ慣れていない人によくあることなのですが、他人の個人サイトやSNSで公開されていた絵や曲などを、許可なく勝手に使う事例があるようです<ref name="gpd135" />。
二次利用を許可されてない著作物は素材として使えません。
そして見落としがちなのが、フォントの著作権です<ref name="gpd135" />。フォントにも著作権があります。
フリー素材と書かれていても、商用販売が禁止されている配布形態のものもありますので、気をつけましょう。
}}
{{コラム|アイデアの権利。アイデアとは盗まれるのか、盗むのか?|
商業ゲーム作家たちの、2022/1時点でのSNS発言によると、業界全体でみられることですが、会社外部の人がアイデアを一方的に投稿してきて、会社で作った作品にそのアイデアと類似点があったら、アイデア使用料を要求してくる、そのような問題に悩まされているようです。
そこでゲーム会社側では原則、
:送られてきたハガキやメールは、まずクリエイター以外の事務系の人間が読む。
:もしハガキなどにアイデアがあった場合、そのハガキを処分。
などの方策を取ると言われています。
また、偶然や何らかの理由でアイデアが一致してしまった場合に備えてのリスク回避として、事前に会社のウェブサイトなどで「弊社にアイデアが送られてきた場合、そのアイデアは弊社のものになります」のような宣言をしている会社も多くあると言われています。<!-- (以上、作家のSNS発言やそれを紹介したサイトの取材などのまとめ.)←出典を消すなってS氏はやたら云うんだけど,そんな重要な事かね?もちろん全くなくて,いい加減な事書いていいと言ってるわけではないけど… -->
ここで前編集者は娯楽産業の世界には厄介な消費者がいると言及しているけど、この前編集者自身がこのWikibooks で異常なまでに厄介な参加者なんだが、そろそろ人のふり見て自分を返り見るべきだと思うな。
法学的には、著作権法はアイデアを保護しません(『アイデア・表現の二分論』と言います)。
そして前編集者はアイデアに関して権利をどうこう言う人間を無知だと書いているけど、自分は至上の賢人だと思ってるようだね。
そしてこの人物は他者を愚弄する時は必ず自分の意見ではなく、権威ある人がそう書いたから、出典だからと宣う。
出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。
まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。
}}
任天堂『ゼルダの伝説 ブレス オブ ザ ワイルド』は、プロトタイプの段階ではイラストや音楽を組み込まずに(イラストは、代わりに大きなドットの塊などで代用する)作られている事がゲーム業界見本市イベント CEDEC 2017 で公開されています<ref>https://game.watch.impress.co.jp/docs/news/1078888.html 2020年11月25日に閲覧して確認</ref>。
プロトタイプの段階では、画像や音楽は発注せず、骨組み的なプログラムだけで、そのゲームのアイデアが「はたして本当に面白いか?」を、実際に社内の関係者にプレイさせてみて確認します。
因みにプロトタイプに関しては『[[高等学校情報/その他の技術的な話題#プロトタイプ開発]]』の記述も参考になる。
ここでいう「プロトタイプ」(試作品)とは、コンピュータプログラムのゲームとして動作するのが前提です。映画製作でいう絵コンテ試写のように、ゲームの試作では、なるべく早期に第三者が試作ゲームを遊べるように作っていく必要があります。
プロトタイプという言葉を使用すること自体が妥当かどうか。まず、書籍『ゲームプランとデザインの教科書』で使われている<ref name="gpd350">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.350</ref>。
ニコニコ動画の経営者、川上量生が使っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日 第1刷発行、P.38</ref>。川上は角川書店も買収したので、おそらくそこ(カドカワ・RPGツクール販売元)でも使っているでしょう。
ゲームのプロトタイプの基本姿勢は、「汚く作って、やりなおす」です<ref name="gpd350" />。もちろん最低限のプログラムの知識、勉強は必要ですが、あまり知識収集や理解充実を気にするより、実際に作ってみることを優先したほうがいいようです。チーム制作をしている場合はプロタイプは赤ん坊であり、そのチームで育てていこう、我々の子供だという意識で接しているようです<ref name="gpd350" />。
勉強に関しては、汚くてもいいからまず工夫して作ってみると、何を勉強すればいいかが見えてきます。
英語では「quick and dirty prototype」という言葉があります<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.349</ref>。
書籍『ゲーム作りの発想法と企画書のつくりかた』によると、シナリオライター志望者が企画書やシナリオ案をメーカーに送りつけても、あまり効果的ではないようです。
それよりゲーム形式でシナリオを書いてしまうのがいいようで、「CHR:ヒロインA(私服)、表示」のような文章を織り交ぜて構成していくのが推奨<ref>『ゲーム作りの発想法と企画書のつくりかた、P.140</ref>。
参考文献のその章では、シナリオライター志望者に向けて語られていますが、プログラマーを目指すならどうすればいいでしょうかね。
プログラマー志望なら、サンプルゲーム、サンプルプログラムを作ってしまうのがいいかもしれません。
1990年代、週刊少年マガジンに不定期掲載していた読みきり漫画『ゲームクリエイター列伝』では、カプコン社のゲーム『バイオハザード』を扱った『バイオハザードを創った男達』の際、制作過程でゲームデザイナーが大幅な作り直しを判断して進行させた、という描写があります。(ただしWikiboooks一編集者の記憶、詳細はあいまい)。
のちの、ゲーム評論家の阿部広樹の評によると、むしろそれは劇的な大きな決断ではなく、ゲームデザイナーの日常の普通の仕事ではないか、と語られています。
どんな肩書の人間だろうと、すでに決まって進行していた方針をひっくり返すのは、かなりのストレスのある判断で指摘になりますが、一般に漫画や映画、あるいはNHKの仕事に関するドキュメンタリーでもそうですが、職業や職業者の物語では、過剰に対象を美化し、劇的な演出によって関係者を称賛し、英雄視する傾向があるように思います。
{{コラム|アイデアはアイデアで価値がある。でも、せっかくなら、それを試作して、形にしてみよう。|
ゲーム業界人広井王子は書籍のインタビューで、自分の社長としての人材評価は「0点」から始まる「加点法」だと語っていたようです。
『ゲームデザイン プロフェッショナル』著者も、文脈は違いますが「加点方式で物事を考える」と述べています<ref>『ゲームデザイン プロフェッショナル』、P224</ref>。
正直インチキなゲーム業界人の点数勘定などには全く興味ないが、そんな話とは全く別に、ゲーム制作の上で、実際に動く簡単なプロトタイプを作ってみることは間違いなく有意義な事でしょう。
アイデアはアイデアとして、思考や思想の展開としてありますが、それを具体的な形にしてみることは非常に楽しくエキサイティングで、意味ある活動ですよね。
}}
仕様書や設定資料を超えて、誰もが遊べる試作品は、意味のある企画行為でしょう。前編集者は、時間軸・動きの制作意図の明確化、という言葉を使っています。もちろん短くまとめること自体もなかなか難しいのですが、工夫を凝らして、ゲームプログラムを完成させることが重要な経験であり、思考の具体化でもあると思います。
===アルファ版===
アルファ版はプロトタイプとは違うもので、その後段階で、ゲームの全体像が分かる一部分を、商品に準じた形で作ることです<ref name="gp17" />。
アルファ版でもそのゲームが本当に面白いかどうか検証がなされます。サウンドやビジュアルは商品に近いほぼ完成化された形で取り込みます。
アルファ版の使用の結果、プロジェクト中止の決定がなされる場合もあります<ref name="gp18" />。
ベータ版とは、会社によって意味が多少違いますが(たとえば『ゲームデザインプロフェッショナル』と『ゲームプランナ-入門』とでも微妙に違う)、おおむね、とりあえずのゲーム、最初からエンディングまでのほぼ完成状態をひととおり遊べる制作物です<ref>『ゲームデザインプロフェッショナル』、P170</ref>。
細かいバグ修正はこれらの段階では後回しにします。
基本的に
:プロトタイプ→アルファ版→ベータ版→調整→デバッグ
の流れですね。
===プロトタイプ制作に必要な予備知識===
====数学は後回し====
ゲーム制作の作り始めにおいて、必要な数学や物理の予備知識は、それほど多くありません。
文献『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』によれば、数学や物理の習熟に拘って、それに多くの時間と精力を費やして勉強するよりは、3Dの勉強などで必要を感じたら、そのつど、その分野の数学や物理を学ぶのが効率的だと述べており、また可能なら実際にプログラミングでその理論を試してみると具体的に理解をしやすいと述べています<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P88</ref>。
====C言語の予備知識は入門書1冊+αで十分====
C言語を使ったゲームは、予備知識はそれほど多くないので、あまり難しいことは考えず、まず実際にプログラムを書いて作ってしまう事優先にするのが正解なようです。
市販のC言語入門書で、配列や関数などの一般的な機能を一通り習得したら、あとはVisual C++ で映像出力とキーボ-ド入力のみを、1~2週間ほど勉強、そしてVisual Studioを起動してゲームを作り始める。
うまくいけば数か月以内に、パソコン用の非ネット通信のゲームを作ることができるでしょう。
ただ、ゲームプログラミングを試みる人は、必ずしもゲーム制作のみが絶対的な唯一の目標ではない可能性もあるので、それぞれの立場に応じて、座学を取り入れてみるのもいいと思います。
== 作業リストを作る ==
===作業リストの制作開始の方法===
さて、ゲームを作る時は、アイデアを頭の中だけに置いておくのではなく、文章に書きだしてみましょう。
そして、壮大な長大なアイデアではなく、1週間~1ヶ月ていどで成果の確認できそうなアイデアだけを書いてみましょう。
次にそのアイデアを、実際に動作するプログラム、ソフトウェア(つまりプロトタイプ)にするために、具体的などんな機能を持ったプログラム(簡単なものでよい)を制作しなければいけないか、自分のやるべきことのリストを、箇条書きで作ります。<ref>https://www.youtube.com/watch?v=J5FCZG7dfEY 2020年3月17日に閲覧</ref>
IT界ではこういうリストを「ToDoリスト」(読み: トゥードゥーリスト)とか「タスクリスト」といいます。このページではむしろ日本語で、「作業リスト」と呼んでみましょう。
さて、このリストを作るときは、作業項目は具体的かつ単純な目標に分割します。ですから例えば RPG の戦闘システムを作るときは、
*「戦闘システムを作る。」
と、あいまいに総体的に書くのではなく、具体的に、
*戦闘画面のメッセージ表示欄および標準メッセージを作る。
*「戦う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは後回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
という風に、作業項目を細かく分割していきます。
こうすることで、作業がひとつずつ比較的に簡単な要素に分解されていくので、楽になります。また、バージョン管理ソフトを使って管理している場合も、上記のような作業リストの分解をしておけば、各バージョンの概要を書く際にも作業リストの項目が転用できるので、一石二鳥です。
予定日は書かないほうがいいように思われます。スケジュールを管理したい場合は、別にファイルを作るといいですね。
そして書き出した項目を優先順位で並べたら、最初の作業リストは完成です。
===作業リストの更新===
プログラミングする前に作業リストを眺めて、そして上の項目から実際に作業を開始しましょう。
そして一つの項目を完成させましょう。
そして作業項目がひとつ終わったら、「【完了!】」等、そういう情報を、項目の前または後ろにつけます。備忘のための記録ですね。
たとえば、
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
こうします。
以前の記述を残したまま、その作業が終了したことを示しておくわけですね。
また、もし追加の作業が必要になったら、たとえばダメージ計算システムを作るために、ランダム計算が必要になって、自分がそのプログラム言語でのランダム計算に詳しくないなら、たとえば
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
::※3行目に追加されています。
と、必要に応じて項目を追加します。
さて、これから行う作業を検索しやすくするため、たとえば
'''やることリスト'''
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
'''完了した作業'''
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
の様に完了した項目を後回しにしたり、或いは
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*(現在→) Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
のように、(現在→)、を追加するのも良いでしょう。
つまり作業の記述をそのままに、どこまで進展しているかが分かる等に書き足していくわけですね。
==プロトタイプ制作における創作面の検討事項==
===ゲーム性===
「ゲーム性」という概念があって、これがあるからこそゲームは面白く、魅力的だと考えられています。
プレイステーション開発元のソニーもこれを重視していますし、一般的に多くのゲーム愛好者、関係者たちもその考えに同意するでしょう。
ではゲーム性とは何か?
ゲームのジャンルにもよりますが、「駆け引き」や「戦術」、これが「ゲーム性」だとよく言われます。
『ゲームプランとデザインの教科書』によると、ゲーム性とは、シューティングやアクションでは「対戦の駆け引き」、RPGでは「戦闘と物語の介入」、シミュレーションゲームなら「戦略性」だそうです<ref>『ゲームプランとデザインの教科書』、P152</ref>。
ただし上述の書籍によると、1990年代は今よりもゲーム性とシステムが重視されていたとの説明があるので、裏を返せば2010年以降の現代では、ゲーム業界ではゲーム性の重視の比率は1990年代よりも減っているかもしれません<ref>『ゲームプランとデザインの教科書』、P302</ref>。
『ゲームプランナー入門』(吉冨賢介 著)では、ゲーム性とは「課題や挑戦の仕組み」であると結論づけています<ref>吉冨賢介『ゲームプランナー入門』、P36</ref>。そして、この達成感こそが「ゲームならではの面白さ」だと述べています。
;アクションパズルゲーム「I.Q」
メディアクリエイターの佐藤 雅彦氏(「だんご3兄弟」や「ピタゴラスイッチ」等を手掛けている)が、初めてかかわるコンピュータゲームで、ソニー・コンピュータ・エンターテインメントとの共同企画で、のちに「I.Q」(1997年にシリーズ第一弾を発売)と呼ばれるシリーズに携わった時、プロトタイプが全くゲーム性のないものになってしまい、それをプレイしたソニーの幹部陣の顔色が非常に曇ってしまったようです<ref name="br67">川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P.67</ref>。
ここでの悪い反応、薄い反応の理由がわからなかった佐藤氏が、階段の踊り場でソニーの新人に尋ねてみると、「それが、あの、ゲーム性がないっていうか・・・」と言われたと出典の対談集に書かれています<ref name="br67" />。
基本的に佐藤氏は、プロトタイプの企画を提案しただけですが、ソニーにはプロトタイプを作るための部署があるらしく、1~2ヶ月かけてそこでプロトタイプが作られたようです。
この問題の責任が誰にあるかは、大した重要な事ではありませんが、商業作品としてプロトタイプを作る以上は、どこかの段階でゲーム性を意識して、プログラムに盛り込む工夫が必要になるでしょう。
===ゲームの見た目とは?===
ふつうゲームのプレイヤーは、まず最初にそのゲームの「見た目」を判断し感受するでしょう。ですからその見た目のインパクト、興味を呼び起こす構成が必要になります。
例えばスーパーファミコンRPG『新桃太郎伝説』では、開発当初はドラゴンクエスト5 のようなマップ画面のトップビューUIでしたが、開発中にクォータービューの他社製RPGが発売されて高い評価を得たので、マップUIを(トップビューではなく)クォータービューに作り直したようです。このことは攻略本『新桃太郎伝説 究極本』に開発裏話として書かれています。
一方現在でもこの方向の試みは重要なようで、書籍『ゲームデザイン プロフェッショナル』の著者は、他企業の製品の画面と、自社の製品を目で見比べる分析方法で、自分たちの製品のUI の問題を見出しています<ref name="gdp199">『ゲームデザイン プロフェッショナル』、P199</ref>。
割と素朴で単純で即物的な見た目、「かっこいい」とか、「ぱっと見派手」等の要素が非常に重要なようです<ref name="gdp199" />。
商業としてゲームを作る以上は、ペイしなければ企業も事業の継続も維持できませんから、考慮せざるを得ない問題ではあります。
== ゲーム開発ツールを使う場合 ==
====開発ツールのライセンス条件====
ゲーム開発ツールのなかには、そのツールで開発したゲームソフトに義務として「この開発ツールで開発したソフトウェアは、ソースコードを必ず公開しなければならない」などの条件をつけている場合があり、このような条件を「開示義務」(かいじ ぎむ)または「ソース開示義務」などといいます。
ソース開示が嫌な場合は、開示義務のあるツールは使わないのが正解ですね。
ゲームに限らず、ソース開示を義務としている開発ツールは多くあるので、ライセンスには気を配る必要があります。
「有料ソフトの販売を禁止」とか「アダルト作品の開発は禁止」などの条件をつけている場合も、ありえます。
ですからゲーム開発において、ツールのライセンス条件の確認は、非常に重要です。
{{コラム|GPLライセンス違反|
GPL(ジーピーエル)というライセンスがあって、Linuxなどのオープンソースで使われています。このGPLを組み込んだプログラムは、ソースを公開しなければいけません。
ですから、ソース公開したくないプログラムには、GPLソフトウェアは組み込めません。
ゲーム業界でも、GPLライセンスのソフトウェアを組み込んでしまったために、呼出し元ソフトウェアでのソースコードの一部を公開することになったゲームがあります。2005年頃、『ToHeart2』という美少女ゲームが、xvidというGPLソフトを取り込んだ疑惑によって、GPL違反の疑いでソース公開になりました。([[w:ToHeart2#GPL違反とソース公開]])
GPLでも、たとえばLinuxサーバ上でソース非公開のアプリを動かすように、GPLのソフトウェアを非公開ソフトとは独立した状態で使う場合は、ソース公開の必要はない、と、考えられています。(これが必要有りとなると、オンラインのプログラムやネットゲームは全てソース公開しなければならなくなり、非合理な結果になる。)
特定のプログラム自体に、GPLソフトウェアのコードを取り込んだ時、ソースコード公開が必要になります。
}}
{{コラム|BSDライセンス他|
オープンソースの中には、どのような利用法であっても、利用者にソース公開を求めないライセンスもあります。BSDライセンスとMITライセンスはソース非公開で利用できます。
ゲーム制作ツールの吉里吉里Zは、修正BSDライセンスで公開されています。
もしライセンスのことがよくわからない、またはライセンスの学習に時間をかけたくないなら、オープンソースのツールを使うなら、BSDライセンスを使うのが安全です。
}}
[[w:DXライブラリ]]は、GPLでもBSDライセンスでもありません(DXライブラリ説明書「DxLib.txt」には、どこにも「GPL」とも「BSD」とも書いていない)。DXライブラリは単にソースコードが公開されていて、著作権者の「山田 巧」氏が著作権を保持しているオープンソースなライブラリです。
このように、ネット上でソース公開されているソフトウェアには、ライセンスの複雑な解釈を嫌ってか、「BSD」や「MIT」などのライセンス条件を名乗らないオープンソースソフトウェアもあります。
{{コラム|自作ソフトでソース開示|
昨今ではオープンソースやフリーソフトウエアの発展などの背景もあり、「自作ゲームのソースコードやソースファイルも開示しよう」と思うゲーム作者もいるかもしれません。
然しソースコードを開示していることが原因で、トラブルに巻き込まれる場合もあるかもしれません。自分の作ったゲームのコードが悪用され、トリッキーないたずらや嫌がらせ、誹謗中傷などを受ける可能性も全くないわけではありません。
そこでライセンスに、利用による損害に対する保証が無いことを明示するのは、ある程度有効でしょう。大抵の著名なフリーソフトウェアライセンスには、この条項があります。他者の悪意を完全に防ぎ失くすることは難しいのですが、ある程度の対策は見出されていますし、自身でも見出していく必要があるでしょう。
}}
====開発ツールを使用しないという事====
下記の理由(機能制限および移植性の悪さ)の問題から、あまり大規模な作品は開発ツールでは作らないでおくのが安全です。
大規模な作品の場合、Visual C++ などでコードを書いて開発することを推奨します。
=====機能制限=====
ゲーム開発ツールを使う場合、そのツールにもよりますが、「○○ができない」、つまり特定の目的を果たすための機能を持っていない場合があります。
Visual Basic や Visual C++ には普通にある関数でも、開発ツールには無い場合も多い。
また、もし、いったんはゲーム開発ツールを使って目的の機能を持ったシステムを作ったとして、さらなる機能をそのシステムに追加しようとするときに、大幅な作り直しが必要になる場合があります(拡張性の悪さ)。
システムがモジュール化されていても、そのモジュール部分では大きく改変する必要がある場合もあるでしょう。
ですからゲーム開発ツールによるゲーム制作では、あまり大作を作ろうとしないほうが安全です。開発ツールで作る作品は、比較的に小規模な作品に、とどめておくことを推奨します。
Windowsの場合、本来なら Visual C++ などを使って、プログラム文法のいろいろな事に留意しながらプログラムを書きますよね。開発ツールを使う場合、 Visual C++ のコードを書かずに、ほぼマウス操作だけでプログラムを作ろうとしているわけですから、何かしらの制限があります。拡張性の悪さは、プログラム文法などの学習の負担を減らすためのトレード・オフのようなものですね。
=====移植性の悪さ=====
また、もうひとつの問題点として、C言語への移植性の悪さがあります。
ソースコードが公開されていない開発ツールの場合、異なる開発環境にゲームのソースファイルを移植するのは、ほぼ不可能です(仮に、開発ツールのランタイムを模倣できたとしても、著作権などの法的な懸念が生じる可能性あり)。
ゲーム開発ツールで作ったソースを、Visual C++のソースに置き換えるのは、簡単にはできないし、ほぼ全面的に新たに書くことになるでしょう。
==イラストレーター、デザイナー==
ゲーム制作、業界において、イラストや音楽を作る部署、人物は、まとめて、"アーティスト"と呼んでいるようです。
ゲーム界の場合デザイナーというのは、プランナーやディレクターのことであり、管理職的な設計者のことで、美術的なクリエイターではない。design という英語には、機械建築の設計という意味もあります。
映像関係、画像系のアーティストはグラフィッカーと呼ばれることもあります。ムービー担当者、特にゲーム界では3D-CGの制作者をアニメーターと呼ぶことが多いようです。アニメーション業界では主に、手描きの原画、動画マンをアニメーターと呼びますが、最近は3D-CGアニメーション映画も多いので、すこし状況が変わっているかもしれません。
ゲーム業界とアニメーション業界、各会社企業、過去と現在で、「原画」「仕上げ」「絵コンテ」等、一般的な作業に関する言葉が、それぞれの状況で微妙に違った意味で使われることも多いですね。
…ところで前編集者はわざわざこの項目を作ったうえで、色々な場所での言葉の意味の違いを、クドクドと自分勝手な分かりづらい説明で長々述べた後、「混同しないように気をつけましょう。」なんて馬鹿馬鹿しい言葉で締めているんだけど、この人物の意図はどこにあるのだろう?
例えばデザイナーというのは一般的に、造形作品、図案、意匠を考案する人のことを言うのだから、ゲーム界の外の人間が多少その業界内での意味を取り違えても、それほど致命的なミスでもないし、罵倒、愚弄されるいわれもなければ、好き放題にその相手を罵倒、愚弄していいわけでもない。間違えて使っている人を見たら、その都度やんわりと教えてあげればいいだけじゃあない? だいたいその世界に現実に身を置いたら、そこでの言葉の意味、使い方なんて自然に覚えるものだし…。
それを得意げにこれが違うあれが間違いといちいち理屈書いて、いい気になって威張っているこの人物は何者なのだろう?
現編集者が思うには、この人物は、学問、知識、知恵、科学とは何かという事を、根源的に取り違えている、のだろう。
==操作性==
操作性について、親指と人差し指<!-- ←ここ,中指って書いてあったけど,こっちだよね? -->だけでボタンプッシュなどの操作ができるように作成するのが基本です。中指、小指、薬指はコントローラのホールドに使うぐらいです。人間工学的に、小指や薬指は力が弱いので、微妙な操作には向かないことが知られています<ref>川上大典ほか『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日 第1版 第1刷、P.48</ref>。
一般的にゲームプログラミングでは、
# プレイヤーからの入力を扱うことができる。
# ゲームが提示する内容を表示することができる。
入力と出力、この2点が機能として必要になります。
プログラミング言語とプレイヤーからの入力については歴史的にも、あまり変化がありません。言語では主に[[C言語]]、[[C++]]が用いられる。[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
パソコンゲームでは、プレイヤーからの入力には通常、キーボードかマウスを利用します。他に[[w:ジョイスティック|ジョイスティック]]や[[w:ゲームパッド|ゲームパッド]]が利用される場合もあります。家庭用ゲーム機では[[w:コントローラ|コントローラ]]が利用されることが多いのですが、[[w:ニンテンドーDS|ニンテンドーDS]]や[[w:Wii U|Wii U]]では[[w:タッチパネル|タッチパネル]]、[[w:Wii|Wii]]では複数の入力機器が提供されることが発表されています。各種入力機器をプログラムから扱う手法自体は、普遍性があり、入力機器ごとに大きく変化しない、と、考えられています。[[w:デバイスドライバ|デバイスドライバ]]、[[高等学校情報B]]には、プログラムから周辺機器を扱う方法について多少の記述があります。
画面表示のうち、3Dの表現は割合難しく、ある程度の数学(高校、あるいは場合によってはそれ以上)の理解が必要でしょう。2Dに関してはプログラムの面では、さほど難しい部分はありません。
==処理速度の問題==
基本的にプログラミングでは、関数を使って、処理をコンパクトにまとめ、定数ではなく変数で柔軟性のある操作をすることが求められますが、ゲームの場合は、この構造のせいで処理速度が低下することがあります。
現在のCPUの性能、速さはかなり高くなってはいますが、プログラム処理は無限に煩雑化できますから、やはり高度な処理を短時間でなすことが求められます。特にゲームは、リアルタイムの反応のタイミングが非常に重要ですからね。数学の指数計算についての雑学で、「新聞紙を42回おりたたむと、月に届く距離になる」というものがあります。(新聞紙の厚さ)*2^42、ですね。もっとも新聞紙の物性から言って、ほぼ不可能な操作ですけど^^;;。コードの内容、組み合わせによっては、このように計算量が指数関数的に膨大になってしまい、処理速度が非常に遅くなってしまう場合があります。
ですが、このセクションで後述するように、関数を用いる場合の解決策(※概要:あとでdefineやinlineに置き換え)があるので、プログラミングの初期のほうは、とりあえずバグを未然防止するために関数を活用するべきでしょう。
1980年代頃のファミコンなど古い時代のゲームでは、ストレージ容量(ハードディスク容量のこと)が、ボトルネックでした。「容量不足でイベントをいくつか削りました」と、当時のRPGなどのゲーム作家が述べるのは、ストレージ容量の不足のことですね。ただ当時のファミコンはROMカセットでハードディスクは無いので、まさにストレージ容量という言葉が適切でしょう。
しかし2010年以降の現代では、ボトルネックになっている要因は、ストレージ容量不足よりも処理速度です。
ゲームプログラミングに要求されるコード特性は、科学計算ソフトウェアや金融プログラミングなどの手法とは異なります。情報工学・情報科学で適切とされる「構造化プログラミング」などの歴史的に発展してきたプログラミング・パラダイムの理念とは反するようなコード開発方針になる場合もあります。しかしゲームプログラミングに限らず、限定されたハードウェアで特定の結果を速く得るためには、様々なトリッキーな手管が必要になるでしょう。
;ツクール等制作ツール
RPGツクールの制作元のカドカワ(アスキー社→エンターブレイン社→カドカワ(かつての「角川書店」) )では、PRGツクールでのアクションゲーム開発は推奨していません。アクションゲームの場合は、同じカドカワの「アクションゲームツクール」で制作するよう、薦めています。
アクションゲームとターン制RPG では要求される特性が大きく異なり、なかには、ほぼ対立しているような性質もあります。
ツクールやウディタでも、万能にあらゆることがスタマイズできるわけではなく、その制作ツールの特性に依存しますし、主に処理速度の低下しない部分についてユーザが創作できるようになっているでしょう。
多くのRPG制作ツールはマップ操作や戦闘画面の基本システムのルーチンそのものは、あまりカスタマイズできません。画像や音楽は挿入できますが、例えば戦闘プログラムなら、「コマンド」の命令文など一部の派生的な部分だけが独自に作れる程度でしょう。
ですから、ツクールでどうしてもアクションRPGを作りたい場合、基本システムの改造はかなり困難だろうし、別途、アクションRPGのような動作をするマップイベントを作成する・・・ぐらいでしょうね。
ツクールやウディタでターン制RPG以外のジャンルを制作するのには、実質的には限界があり、さまざまな制約が生じます。
;具体的な手法
初期段階では関数や変数を活用してプログラミングし、処理速度を高める必要がある箇所にだけdefineマクロ等を用い別の方法に置き換える。C++ならinline関数という前処理命令もあります。
通常の関数で記述していったソースコードを、あとから一括変換などでdefineマクロやinline関数などに置き換えることは比較的に容易です。
また、関数を経由しているので、マクロを使った場合でも比較的にバグが混入しづらくなっているかもしれません。(defineなどの前処理命令マクロは、用いるとバグを発見しづらいので、なるべくマクロの利用を避けるべきなのが、ゲームプログラミングに限らないプログラミングの定石です。)
一方、まったく関数を使ってないコードを、あとからdefineマクロなどに手作業で置き換えるのは、なかなか面倒です。
最終的には一括変換で置き換えることが出来ますから、途中の段階では、処理速度を気にせず関数を使うのがいいでしょう。
なお、defineマクロは、値の置換以外には用いないのが、プログラミングの定石です。このため、たとえば黒色RGB値の<code>10,10,10</code>といった配列にdefineマクロを使うべきかどうか悩みますが、とりあえずなるべく値周辺にだけdefineマクロを適用するようにするようにするのが良いでしょう。いっぽう、一般の命令文をdefineマクロで置き換えるのは、避けるべきでしょう。
たとえば、処理に0.5秒ほどの時間の掛かってもかまわないような場所は、どんどん、関数に置き換えていっても良いかもしれません。
アクション性のないゲームなら、関数をぞんぶんに活用できます。
ターン制RPGやシミュレーションゲーム、アドベンチャーゲームなど、関数を活用しやすいでしょう。
一方、アクションゲームなどでキャラクター操作中のコードのように頻繁に使って、しかもそのゲームの中心的なコードなら、そこは最終的には関数にしないほうが良いかもしれません。
このように、ゲームのジャンルによって処理速度に対する必要な水準が異なりますので、プログラミング時における関数などの利用の方針も異なります。
以上のように、何でも関数にすることは避けるべきです。関数は処理速度の問題がありますので、必要性のある部分だけ関数にするべき。関数を使わなくても、for文やif文などのブロックの構成を適切に組み合わせることで、コード中のmain関数以降の部分でコード共通化できることは色々とあります。
「共通性のあるコードだから」といって、大して長いわけでもないコードを関数に置き換える事は、速度維持には寄与せず、ゲーム制作のプログラミングとしては、悪手となるでしょう。
===2Dの画面出力===
画面出力の場合も入力機器の場合と同じで、これらを操作する方法はOSごとに異なっています。先ほどあげた GTK+, Qt, SDLなどのライブラリはクロスプラットフォームの画面出力を提供しているため、これらを利用することで全てのプラットフォームで動くプログラムを作ることができます。<!--画面出力を扱うためには近年の[[w:ビデオカード|ビデオカード]]の発展についても見る必要があります。しかし、ビデオカードの機能は2次元の描画に関してはあまりあらわには見えないので、この話題は3次元の描画を行うときに再び戻ってきます。-->
*[[ゲームプログラミング/ブロック崩し]]
*[[ゲームプログラミング/画面出力]]
==目次==
=== ジャンル別のプログラミング手法 ===
==== 3Dグラフィック ====
* [[ゲームプログラミング/3Dグラフィック]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
==== RPG ====
* [[ゲームプログラミング/RPG]]
==== アクション ====
※未作成
==== パズル ====
※未作成
==== シミュレーション ====
※未作成
=== ゲームのデバッグ ===
* [[ゲームプログラミング/デバッグ]]
=== 入力 ===
OSの種類によって、キーボード入力やマウス入力の受け付けのさいのプログラムの書き方は違う。
Windows API での具体的な手順は『[[ゲームプログラミング/入力]]』で説明する。
=== ゲームエンジン ※未完成 ===
* [[ゲームプログラミング/Unity]] ※リンク先ページの編集者が現状ではUnityの著作・調査を放棄中なので、調べ物としては役立ちません(2021年12月19日に本文を記述)。
=== 非プログラミングのゲーム製作の関連作業 ===
==== バランス調整 ====
*[[ゲームプログラミング/バランス調整]]
厳密にはプログラミングの話題ではないが、ゲーム製作では必要な知識なので、サブページで説明する。
:※ゲームデザインに関する記述をここに集積し分離したい、という編集者の意図もある。
==== ゲーム用の書類の書き方 ====
説明書や仕様書(しようしょ)の書き方については、『[[ゲームプログラミング/書類]]』で解説する。
== 未分類 ==
===Visual C++プログラムによる文字画像の出力===
Visual Studio付属のフォームデザイナ(VSの用意するGUI自動作成ソフト)によるGUIオブジェクト作成では、RPG用には使いづらい。いや、ひょっとしたら上手に使う方法はあるのかもしれないが、様々な理由で難易度は高い。
そこでまず、Visual C++で、フォームデザイナをなるべく使わずに文字や映像を出力する方法を考える。
選択肢は、幾つかある。
1.フォームデザイナを1つも使わない方式
*Windows APIで入力していく方法。(Wikibooksに『[[Windows API]]』の入門書があります。)
*DirectXで入力していく方法。DirectX自体はWindowsAPIを利用している。
2.1つだけフォームデザイナのパネルを使う方式
*フォームデザイナで「パネル」という画像表示機能のコンポーネントを一つ用意して、そのパネルで表示する画像をゲーム内のストーリーなどに応じて切り替えるだけで、すべての画像表示を行う。
フリーソフトでゲーム用ライブラリの『HSP』はWindows API を呼び出す仕組みになっています(HSP関連のサイトを見ると、Win APIプログラミングの解説をしている場合もある)。
フリーソフトでゲーム用ライブラリの『DXライブラリ』は Direct X を呼び出す仕組みになっています。そして、ゲーム開発ツールのひとつであるウディタのソースコードは、DXライブラリとVisual C++ を使って書かれていると、作者が公表しています(ただしソースコードは非公開)。しかし、ウディタを用いたRPGプログラミングでは DXライブラリによるコーディングはしない。ウディタにはコード入力の機能は無く、マウス操作や、キーボード操作、キャラ名称や会話文などのテキスト文字や数値の入力のみに対応している。
===乱数===
そもそも乱数とは何かという問題があるが、それは高度な数学的な議論になるだろうから、我々はその問題には深入りできない。
ゲームにおける乱数的な処理では、事実上ランダムな値にならず、演出や調整のためにアルゴリズムが介入している場合も多い。例えばゲーム中のくじで「外れ」続くと、当たり確率が変動し、次からは当たりやすくなるアルゴリズムなども良く使われる。<ref>『ゲームプランナー集中講座』、P232</ref>。
ゲームは娯楽であり、実用目的のシミュレータではないし、アルゴリズム介入で、確率的にもいんちきが多いので、あまり厳密なランダム性が問題になることは少ないだろう<ref>『ゲームプランナー集中講座』、P231</ref>。
例えばさいころというのは典型的な乱数器だし、ゲームにもよく使う物だろう。
無印C言語には標準的乱数関数 rand()があるが、これを乱数発生に使うことに批判的な意見もあるし、機能もやや不足していると見れる。
Windows64bit では int rand(void) の出力は 32bit 整数だろう。まず stand関数で初期化してから rand()を呼ぶごとに疑似乱数が帰ってくる。これの複数回の連なりが乱数列だね。帰ってくる値は0 以上 定数RAND_MAX の値以下。
例えばさいころの数値が欲しいなら、rand の返り値を6で割った後、余りに1足せば、とりあえずそれらしいものはできる。
RAND_MAXは rand()の属性として定数が与えられているだけだから(Windowsで0x7FFF)、この値の変更はできない。
まあこれでもそこそこいい加減な乱数として機能するだろうが、最近ではもう少し改良された、質の高い乱数関数もある。
また、改良された乱数関数は、乱数の範囲も指定できるから何かと使い勝手が良いし、バグを防ぐ効果もあるのだろう。
<syntaxhighlight lang="cpp">
Random^ saikoro1=gcnew Random();// Random^ でRandomクラスの変数を作っている。gcnewはインスタンスをつくるための演算子。
int detame; detame=saikoro1->Next(1, 7);// Next メソッドで「〇〇以上△△未満」の乱数を指定できる。「->」はメンバーアクセス演算子。
MessageBox::Show("目"+detame.ToString()+"が出ました。");
</syntaxhighlight>
↑例えば上述のコードは前編集者が示したものだが、これは .NETプログラミングですね。.NET のSystem::Randomクラスを使っている。.NETのクラスは普通、C#かVisual Basic で利用するので、Visual C++で使えるようにするには結構面倒な手管がいるが、その辺は読者諸兄、ヘルプやネット情報を参照して、適宜辿り付いてほしい。
C++ の場合はむしろ、 #include <random> を宣言してそこで使える関数を使用するほうが簡単でしょうね。この場合でも、乱数としての精度も高いし、帰り値の範囲指定もできる。
===画像のちらつき===
画像がひんぱんに変化するアプリでは、画面が、ちらつく事がある。画面のちらつきは、ゲームのように、画像を凝視するアプリでは、かなり利便性を損なう。
キャラクターが1歩移動するだけで、画面全体がちらついたりする場合もあり、かなり、プレイヤーの不満になる。
これは、ダブルバッファ(「裏画面」と、良く言われる)という技術で、解決を図る。
Direct Xの用語では「スワップ チェーン」と呼んでいる。
.NET Framework開発環境の C++や C#でもダブルバッファの機能があると解説されている。いくつかのGUIオブジェクトのプロパティで、ダブルバッファの設定項目がある。
しかし前編集者が実験したところ、この機能を有効に使って確認することはできなかったとの指摘がある。ひょっとしたら何らかのマイクロソフトの解説に間違いがあって、工夫次第では利用できるかもしれないが、少なくとも今現在のこのページでは、その問題に関するリファレンスは提供できない。
そこでやはり、以前の項目と同様、Win32 API または DirextX の利用をこのページでは考えたい。
前編集者は、.NET Framework のフォームデザイナでは、ちらつき自体は解決できそうだが、グローバル変数の共有が困難だったり、アプリ内から終了コマンドが使えない、などの難点があると指摘している。
ただ現編集者はこの2点に関しては、解決策はあると思うが、しかし特に調査はしない。
前編集者は、.NETプログラムでゲームを作る難点をいくつも上げているが、おそらくどれも、.NET の仕様や全貌に精通すれば解決できるように思えるが、そもそもその全貌がかなり広大なので、解決の道のりは長いだろう。
そこで少なくともこのページでのWindowsゲームプログラミングは、Win32 API を利用したものになるだろう。
==セーブ、ロード、データベース==
===セーブ機能とロード機能の作り方===
ゲームでもシリアライズ機能が必要なことは多いだろう。数値(HPなどの各種パラメータ現在値)や文字列(例えば、プレイヤーの作成したキャラクターの名前)や現在地やフラグ状況などなど、セーブの機能は欲しい。一番簡単な方法は、C言語の fopen 関数のテキストファイル書き込み機能で、テキストファイルとしてセーブすることだろう。
Windows API には CreateFile関数 があるが、テキストファイルでの素朴なセーブは一番簡単で単純なセーブ法だろう。そしてテキストファイルを読み込んでプログラムに各種変数を配置して、ロードとする。
書き込みとしては、一番単純なC言語記法では、fprintf ですかね。C++としての書き込みをしてもいいし、読み込むのも、一番基本的な方法で。基本Cだとしたら fscanf で、この関数でテキストの数値も変数として読み込めるはずですよ。場合によっては atoi関数 で文字列→数値の変換をすることもありますかね。
基本的にデータファイルは、OS もアプリケーションも、テキストファイルとバイナリファイルの2分類で考えるでしょう。でもテキストファイルだってバイナリの集まりなんですが、テキストを扱うファイルだけ特別視していると考えていい。
そして多少それらしいデータを作りたいときは、バイナリファイルで作るという事になるでしょう。
バイナリファイルでもデータとしてのファイルと、OS が機械語または何らかの仮想的な機械語として扱う実行ファイルがある。それらのバイナリは種類に応じて多くは冒頭にファイル識別子の情報があるだろうし、OS や アプリケーション側で工夫を凝らして、特定の条件を満たす場合しか動作しないようにしているだろう。そしてバイナリファイルを扱うときは、セキュリティの安全性も考慮するだろう。
基本的にプログラム側は何でもありだが、識別子の判別その他、ある程度様々な考慮をしないと、困った事態が起こり、プログラマーが責任を問われることも起こるかもしれない。
まあその時はいつものように口先だけで謝り、それでも許してくれなかったら、腹をかっ割いて死んでお詫びすれば、世間の人たちは美事な武士道精神と言って、口々に褒め称えてくれるだろう^^。←もちろんこれは冗談^^;;;。
市販のパソコン用ゲームや同人ゲームでは、テキストファイルではなくバイナリでデータ保存するゲームの方が圧倒的に多いだろう。その方がそれらしいしかっこがつく。ゲーム開発ツール側自体も、そうなっている場合が多い。RPGツクールもウディタも、セーブデータの形式はバイナリ。
テキストデータは基本エディタで開けるが、バイナリデータも内容によっては結構ぐちゃぐちゃの状態で開ける。バイナリデータはバイナリエディタで開ける。バイナリエディタのリードオンリーモードやバイナリビューアみたいなものがあれば、データーを壊さないで結構安全にデータ調査できる。
データ内容を秘匿したければ、バイナリ化だけではなく、暗号化も必要になるかもしれない。
===機能の整備===
セーブ&ロード機能の実装時には、まずセーブ機能から作るのがやりやすいという。
しかし最終的には関係関数の整備は、ロード機能が基盤となるだろう。
データや変数を、一定のスタイルでセーブして、一方で正しいスタイルでロードする、この機能が必要なわけですよね。
シリアライズされたデータを、型を決めたうえで配置しなければいけないから、ロードのプログラムの方が複雑に、面倒になる。
結局データのシリアライズは、ロード機能が基盤となり、その機能の作りやすさが、セーブ機能の作りやすさも支配するようだ。
== ゲーム中の特殊イベント ==
*[[ゲームプログラミング/特殊イベント]]
RPGやシミュレーションゲームで、1回しか起きない特殊イベントを作りたい場合もありますね。例えば日本の中世の戦国シミュレーションゲームで、「桶狭間の戦い」が3回も起きたら困りますよね。まあ起きるなら起きてもいいけどね^^。信長君には敦盛を3回舞ってもらいましょう^^。
さて、リンク先ではその話題についての叩き台、「こうプログラミングしたら、いいんじゃない?」、という事を説明しています。
==スケジュール管理==
[[File:Tokai Hairo.jpg|thumb|500px|ガントチャートの例:東海発電所の廃止解体工程]]
個人でゲームを作る時にはあまり考慮しなくていいのですが、シビアな仕事の世界では、スケジュール管理表が良く使われます。
「作業責任分担表」(TRM:Task Responcibility Matrix)といわれるスケジュール表から、それをグラフ的に図示したガントチャートといわれる表を作って、その表を見て作業計画を判断する<ref name="gpd65">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.65</ref>。
{|class="wikitable" style="float:left"
| 仕事
| 担当
| 状態
| 開始
| 終了予定
| 終了日
|-
| 仕事1
| 田中
| 済
| 2021/10/03
| 2021/10/10
| 2021/10/10
|-
| 仕事2
| 田中
| 仕掛
| 2021/10/11
| 2021/10/13
|
|-
| 仕事3
| 鈴木
| 済
| 2021/10/05
| 2021/10/08
| 2021/10/08
|-
| 仕事4
| 山田
| 未着手
| 2021/10/13
| 2021/10/17
|
|-
|}
{{-}}
ガントチャートでは普通、横軸に日程をとります。
商業ゲーム界でもガントチャートの横軸は日程です<ref name="gpd65" />。
ガントチャートとして図示することで、ボトルネック、リスク要素、直感的にスケジュールの詳細や全体像が理解しやすくなります<ref name="gpd65" />。
スケジュール管理のための、現実的、習慣的な工夫ですね。
このTRMとガントチャートは、IT業界だけでなく建築工事でも使われ、これを利用したボトルネックの洗い出しも、建築学の教科書に記述があります。
住宅の新築やリフォームをする時、建築業者がこの表を提示して、見せてくれることもあるでしょう。
業界人ではなくとも、こういう慣習を知っておくと、得るものがありますよね。
==ストーリー制作、そして順序==
ゲーム界、特に商業ゲーム界では、ストーリーもゲームも全体から作っていくようです。アトラス社(ペルソナシリーズ、女神転生シリーズ、などを手掛ける)では、「ゲーム全体に血を回すのが先」、という言葉が良く言われていました<ref>[https://news.denfaminicogamer.jp/projectbook/191030a/2]2020年12月1日に閲覧して確認.</ref>。
プレーヤーが見たいのは、物語の細部ではなく、ゲーム全体のストーリーやテンポ、総合像である、とは限らないのだが、しかし物語を含む創作物では、全体を見て重視し、そこから作っていくのはある意味王道、常套手段ではあります。
ちなみにやや雑談的ですが、日本の週刊漫画は、その週その週での勢いや読者の興味の引き付けも大事なので、全体がないのに、その場その場で場当たり的に作られた事も多かったようです。
現編集者が聞いたことのある話では、週刊少年ジャンプで連載していた本宮ひろ志氏が、不良少年物の漫画で、敵の不良少年グループと1対1000の喧嘩になり、さあいよいよ対決場に着いて勝負だってところで以下次号にし、そして実は本宮氏はその続きを全く考えていなくて、考えてみたけどどう考えてもどう描いていいかわからない^^;;;、そこで仕方ないのでイライラして近所の酒場に飲みに行き、そしてイライラしたままそこの常連達とあり得ない大ゲンカして^^;;、そのままボロボロになって家に帰って、2時間で次の号の漫画を描き終えた、と、本宮氏自身がメディアで語っていたのを聞いたことがあります。
さて、コンピューターゲームである以上、ゲームのストーリーはシステムと連携、調和したものになるでしょう。
そこで、ゲーム作家として、システムを先に決めた後ストーリー、そういう方法論の作者も多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.306</ref>。
とにかく商業ゲーム界では常識的に、全体像から攻めていく。
例えばドラマ脚本では、「ハコ書き」という方法がある。全体像に当たる「大ハコ」を記述してから、「大ハコ」→「中ハコ」→「小ハコ」と記述していく<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.184</ref>。
しかし、本当にすべてのゲーム制作は全体から作る必要があるのか、という疑問はありますが、その方法論に従うとすると、
:*エンディングを大まかに先に作る
:*機能の実験を簡易でいいので事前にしておく(※プロトタイプの項目を参照)
:*使用頻度の高い部分から作る
などの工夫を凝らして、常識的な方法を遂行していくことになるでしょう。
或いは、アルファ版(α版)を中盤から作り始めるとか…<ref>吉冨賢介『ゲームプランナー入門』、P17</ref>。α版の製作目的の一つとして、そのゲームが本当に面白いかの検証がある。面白くないと判断したら、制作中止もある。最初からではなく中盤から作ると、ゲームの全体像が見えるので、検証、判断がしやすい。
つまり全体から攻めて、細部やゲームが作られていくわけですから、必ずしも冒頭部から作り始める必要はないわけです。
;エンディングやラスボス戦闘を早めに作る場合
ゲーム作者にもよりますが、商業ゲームシナリオでは、エンディングを早い時期に作る人も多い<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
システム面についても、先にゲーム全体のクリア条件を決めてから、あとから各ステージの条件を決めていくことが多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.253</ref>。
エンディングの仮の、おおざっぱなシナリオ、そしてキャラクターの性格付けを先に決めておくと、ゲームの方向性と主人公達が目指すもの、ゲームの全世界像が作者やスタッフに明快になっていきます<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
基本的に商業ゲーム界では、全体→部分と細部、の構成を進めていきます。
ゲームは必ず最後にラスボスと戦う訳では無いでしょうが、その戦いはゲーム中で最も高負荷になるでしょうし、全てのシステムが集積する場面でもあるので、エンディングを先に作ると、ゲームの最大負荷の検証ができます<ref name="yth">[https://www.youtube.com/watch?v=kAUkSNhH410] 2020年8月30日</ref>。
3Dゲームでは、RPGなら戦闘シーン、アクションゲームならアクションシーンが、一般的に最も高負荷<ref>ntny著『ローポリスーパーテクニック』、ソフトバンククリエイティブ、2010年2月16日初版第5刷、P28</ref>。
負荷が高くて処理が落ちないかどうかも、この方法で確認できます。
まあ全ての物語は最後の最後が一番の見せ場ですからね。
中盤は重要性が低い…訳では無いが、少し手を抜いておこうという事か^^;;;。
最後は見せ場を盛り込むから、物語を削る必要があるとすれば、それ以外の部分、という事になりますよね<ref name="yth" />。
つまりラスボス戦(必ずゲームってこれで終わるの? ^^;;;)は最重要なので削らない。後の部分は削る可能性あり。だから最後を先に作って作りこんでおけば、制作過程で不測の事態が起こっても、重要部分はできているので、早く、上手にリリースできる。
{{コラム|イラスト制作でも順番を考え直すと打開できる場合あり。|
イラスト雑誌『コミッカーズ』(1995年季刊夏号)(唯 登詩樹 表紙)での藤島康介のインタビュー
藤島(談):よく若い漫画家さんから相談で、「先生みたいに女性の長い髪を書くとき、毛先を書くのが難しいです。根元は書けるのに」との相談を受けるのですが、
僕(藤島)は髪を描くときは毛先から始めて根元に向かって描いてます。
つまりイラスト初心者は、根元から髪の毛を描きたくなるのですが、ここで長い髪の毛を描く場合はむしろ毛先を先に書いて位置決めして、長い毛を描くと割とうまく描ける。
きれいな女性の髪の毛は、毛先の奇麗さが大事ですからね。
ストーリーを作る時に全体を考えたうえで、必ずしも最初から書くことにこだわらない方がいいように、絵を描く時にも同じ発想が有効になる。例えば機械製図でも、正確に奇麗に書くためあるいは実際の製作のため?、位置決めの優先指示の記法がある。
}}
*目標
世の中では目的や目標を明確化せよ、と主張する人は結構多い。現編集者は懐疑的。むしろ他人を自分の都合いいように動かしたいから、その方向を明示したいのだろう。それより、我々の本当の目的と目標は何か、歩みを止めてちょっと考えてみろよ、と、言いたい。
しかし結局世の人たちは目標をはっきり、言語化したがる。ゲームでもそれをすると、プレイヤーがゲームに引き込まれる、と言うが、実際にはそれはゲーム業界のカモになっている、インチキゲーマーだけだろう。
とにかくカモたちは目的を欲しがる。目標や課題がゲーム中で明確になっていないと、疑問だらけになり、ゲームをやめて、業界にお金を落としてくれない。そこで設計の際、各ステージやエリアなどの冒頭で、そのステージの課題や目標などを明示する必要があるという<ref>『ゲームプランナー入門』、P39</ref>。
ファミコンなどの古いアクションゲームではゲーム本編では目標は語られていませんが、しかし説明書などではきちんとそれが語られており、実際にスーパーマリオブラザーズの第1作目の説明書では、目的はクッパを倒してピーチ姫を救出することだと語られています<ref>『ゲームプランナー入門』、P54</ref>。
===チュートリアル、製作順序===
RGBやシミュレーションゲームでは、初めの方は、操作説明のためのチュートリアルイベントになることも多いのですが、ここにも製作順序のポイントは指摘できますね。
基本的にはチュートリアルの細部は後回しにしたい。と、いうのはゲーム本体の仕様変更が、製作過程で頻繁に起こるので、チュートリアルもそれに合わせて後回しにせざるを得ない。
最初の段階でチュートリアルを作りこんでも、仕様変更になれば、その記述自体が不適になる。
当初のチュートリアルイベントがそもそも必要かどうか。説明書、マニュアルに任せてもいいですよね。
基本的にゲーム本体の仕様がかなり変更を含み場当たり的なので、チュートリアルは後回し、ゲーム本編の完成間近の時期になるか、もしくは本編完成後になるでしょう。
==昔のコンピューターゲームと技術の発達、変遷==
ゲーム制作の時は、自分が昔プレイして楽しかったゲームを思い浮かべるし、参考にもしますよね。
ただ、コンピューターゲームは明らかに、周辺技術が時間とともに、かなりの速度で発達、変遷していきますし、過去のゲームを参考にすると言っても、精神面、思想面での参考で、技術面ではやはり、最新の情報技術を取り入れたいと、誰もが思うでしょう。
前編集者は得意げに、古典技芸の世界では、『師を見るな、 師が見ているものを見よ』と、いう言葉があると宣っていますが、そもそもこの国のゲーム業界では、基本的に金と目先の安易な欲望と私欲しか顧みられないし、そこを支配する知性と教養は、善意や誠意や真理とはかけ離れた、歪んだ論理と無駄に衒学的な詳細しか持たないし、権力をもって威張っている連中は、善性や美などとはかけ離れた安易な偏向した物理主義的な議論に明け暮れている連中なので、師などと呼べる人物に出会うことさえ、至難な事でしょう。
=== スプライト ===
ファミコン時代の昔のゲーム機には、一画面に表示できるキャラチップ数(敵チップも含める)に上限がありました。
一画面中に表示できる限界は、だいたい、マリオが一画面中に数十人ぶんです。
このように、ビデオゲームで小さなキャラクタを、高速表示する仕組みを、「スプライト」と呼んでいました。マリオのキャラクター表示は小単位のスプライトを複数合成していたようです。
このキャラクター数の制限が、当時はゲームの設計にも大きな影響を及ぼしていたわけですね。
例えばシューティングゲームで、100体の敵機を表示することはできない。
しかしそれなりの工夫はあった。表示のタイミングを変えることで、なんとなく、多量のスプライトがあるように見せることはできた。
つまり、
:1タイミング目では0~10体目までのAグループを表示、
:2タイミング目では11~20体目までのBグループを表示、
して、切り替える、うまく、素早くとか?
上手にプログラムを作ればそこそこ上手くいったようですね。それでも、キャラクターが多いと、一瞬、消えたりしている。
ファミコン上における実際の技術限界の正確な数値は、別の資料を参照していただくとして、あまりあてにならない数字として例えば、横1列上には 8体目までしか表示できなかったようです。マリオは一人で2*2=チップ使っていた。だから横一列では 4体までしか表示できませんね。
例えばシューティングでは、敵機の他に、弾丸などもスプライトでしょう。
マリオが4チップなように、巨大ボスなんかチップ数をかなり使っているでしょうね。
そしてチップ数が多いから、速度が遅くなるのでしょうか、何か我々の昔のゲームをプレイした記憶では、巨大ボスの動きは緩慢でしたよね。
しかしやや脱線しますが、巨大なキャラクターは何となく動きが遅いという我々の固定観念がある一方で、レスラーやヘビー級ボクサーはかなり動きが速い。相手の体が大きい上動きが早ければ、もう勝てないね。座して死を待つしかないか^^;;;。
<!-- すじ肉先輩さー、「ウドの大木」みたいな言葉を得意げに書いてる時点で、あんたは性格悪いし、このサイトでの不適切編集者である証拠なんだよね。-->
===画面描き換えと背景===
ファミコンのマリオの横スクロールでは、例えば地上ステージの空は、青一色で描き換えを行わない。低地の地面の障害物周辺だけを動かしていたようですね。動かす部分はプログラムでの描き換えが必要だし、動かない部分は背景として、描き換える必要がない。
書き換える必要のない背景表示は当然プログラムの負荷も少ないですよね。
ですから昔のレトロゲームの雰囲気や映像、仕様は、当時の技術の制限、影響を受けた上でその形態になっていたという事で、今は技術が発達したので、様々な斬新な映像表現や、演出を駆使できる。
一方で最新の技術を駆使したうえで、過去のレトロな雰囲気を再現、表現するという道もあるでしょうね。
=== アナログテレビの にじみ ===
ブラウン管では、細かすぎるドットは表示が、にじみます。ゲームに限らず、テレビアニメや一般の実写番組などでも同様、にじみます。(どのように、にじむかは、専門的なので説明を省略する)
だから、ファミコン時代から、だいたいプレステ1時代のゲームのグラフィッカーは、このことまで意識してドットを描いているはずです。
ともかく、液晶テレビとブラウン管テレビでは、同じ画像データでも表示結果が変わります。
レトロゲームから勉強する際は、ファミコン〜プレステ1時代のレトロゲームでは、データ上の解像度よりも実際のディスプレイ上の映像は細かいことに気をつける必要があります。
たとえば滲み(にじみ)を意図的に利用することでテレビの解像度以上の表現をしていたりしていました。
また、ファミコンのドットは縦横の長さが縦方向と横方向とで長さが違うので、そこまで考慮して、グラフィッカーは絵を描いています。
また、ドットの図形的な細かさだけでなく、色についても、にじみによって、当時のゲーム機の色用のビット数の限界を超えた表示をファミコン時代から行っていました。
つまり、同じドットの黄色の単色でも、そのドットの幅が1ドットか2ドットかで、テレビ上で表示される色が違います。「色が違って見える気がする」ではなく、実際にブラウン管のディスプレイ上では色が違うのです。言い方を変えると、ブラウン管テレビでは元の画像データ通りには色は表示されていません。(さらに縦方向と横方向とで色のにじみ方が違うが、専門的すぎるので、説明は省略する。wiki書くために調べるほうも大変なので。)
なので、もし現代の人がファミコン当時のゲーム作品のグラフィックを参考にする際は、このことに気をつける必要があります。一番、手軽なのは、そもそもグラフィックの細部については参考にしないことです。
これはつまり、もし公式エミュレーターなどでファミコン時代の古いゲームを、現代の液晶ディスプレイ用のゲーム機でプレイしても、エミュレーター側で過去テレビのグラフィック特性の再現のための特別な工夫をしてないかぎりは、実はグラフィックの表示結果が当時のものとは異なるわけです。
一方、パソコン市場では、ノートパソコンの普及し始めた1999年頃には液晶ディスプレイのものが比較的に安価で出て来たので、この頃からパソコンゲーム市場では次第にブラウン管のにじみを考える必要が無くなったでしょう。
なお、アナログテレビはそもそもテレビ自体の解像度が低いので、プレステ2時代あたりからのゲームには合いません。だから、プレステ2時代あたりからは、あまりブラウン管の特性を考える必要はなくなります。
逆に言うと、あまり指摘されないことですが、プレステ2時代の当時の人が当時の最新ゲーム機をプレイするには、もし既存のアナログテレビを使い続けていた家庭は、テレビ受像機そのものを買い換える必要があったという亊です。
一応、家電量販店などでテレビ用のアナログ/デジタル信号の変換機などを購入してテレビに接続するなどして使えば、デジタルテレビ用のゲーム機もプレイ可能ですが。
だからアナログ放送自体は2010年くらいまで続いたとはいっても、あまり当時のゲーム機をアナログ用テレビでプレイしていたとは考えにくくはあります(プレイヤーの好みによる)。
アナログ停波以降の時代である2010年以降の現代では、もうテレビ番組の受像でもブラウン管は一切用いられていないので、もはや現代のコンテンツ制作では特に考える必要はありません。
ブラウン管自体のドットの縦横が違っている。
このため、ブラウン管を前提にしたゲーム機やパソコンはそれに対応するために画像データ側のドットの縦横比が違っている。
ゲーム機やパソコンの種類、さらにはアーケードゲームの基盤といったハードウェアの種類ごとに、コンピュータ側でのドットの縦横比の管理は違っている(らしい)。このため、移植のたびに、ドットは書き直しになったようだ。
古いゲームの制作では「ドット用紙」という方眼紙のような印刷書面がある(らしい)のだが、そのドット用紙の時点で1マスの縦横比が少しだけ違い、1マスが長方形である。1ドットだけでは長方形であるのに気付かないかもしれないが、しかし「ちりも積れば山になる」ように、何十や百ドットも積み重なれば、縦横の長さは大きく違ってくる。
現在のパソコン用のドットエディタ(という画像制作ツールがある)は1ドットが正方形であるが、しかしファミコン時代は1ドットが(ドット用紙の時点で)少しだけ長方形である。(なお、画像制作ツールそのものの作り方については、『[[ゲームプログラミング/画像ファイルの作成プログラム]]』で説明する。ゲーム制作では普通は必要ないが、知識として。)
ファミコンの色数制限は52色から4色×4パレット(1パレットあたり4色)を使えると言われている<ref>[https://mynavi-creator.jp/blog/article/history-of-2dcg-designer
『2DCGデザイナーなら知っておきたい2DCGゲームの歴史』 2017/8/21 マイナビクリエイター編集部 ] 2021年12月30日に確認. </ref>。しかし実際には、4色のうち1色は透明色として利用される色であり、全パレット共通の色である(なので3×4=12色になることのいなる)。スプライトのパレットとは別に背景のパレットがあるので実際には、もっと16色以上の多くの色数が一画面内で使えるが、しかしその他のさまざまな制限があるので、合計で一画面内で25色が使えると言われる(12 × 2+1 = 25)。
しかし実際には、ブラウン管の滲み(にじみ)を利用しているので、当時のプレイヤーには1パレットだけで描かれた1キャラのキャラチップ内でも3色以上の多くの色が見えているだろうし、画面全体でも25色内にない色がプレイヤーの目には映っていることになるし、もしかしたら52色にない色がプレイヤーには見えているかもしれない。なお、スーパーファミコンの色数制限は32,768色から16色8パレットであると言われている。
レトロなゲーム機では、さらにメモリ容量やストレージ容量などの制限もあり、けっして仕様上の最大色数を気軽に利用できたわけではないだろう。こういう制限もあったからか、ネットではファミコンの色数が「4色」やら「8色」、スーパーファミコンの色数が「16色」や「256色」などとも言われることもある。
{{コラム|「ドット絵」とは|
よく世間には、ファミコン時代のゲームの、ゲーム中での絵柄のことを「ドット絵」という人がいます。プレステ1やセガサターンのポリゴンによって、「ドット絵」が無くなったと思っている人もいます。
しかし現実には、プレステ以降でも、顔ウィンドウの顔グラフィクや、キャラチップなどのグラフィックでは、その制作時にドット単位のグラフィック指定は行われています。
たとえば装備品で武器の横に小さい剣の絵などのアイコン画像が書かれている作品などもありますが、こういったアイコン画像もドット単位の指定で描くでしょう。
こう指摘すると、「プレステ1以降のゲームは解像度が高い」とかよくわからない反論をする人がいますが、しかし「ドット」という工学用語のどこにも、「解像度が低い」とかの意味はありません。また、「ドット」というのをブラウン管ディスプレイの映像だと思ってる人もいます。
しかし、液晶ノートパソコンの普及した2001年以降の液晶モニターの時代ですら、
「液晶のドット欠け」などのように「ドット」という用語は使われます。
「ドット」というのは、けっしてゲーム用語ではなく、「液晶のドット欠け」のように電子工学などですでに意味が決まっているので、ゲームオタクの戯言(ざれごと)は「ドット」の意味には無関係です。
さて、プレステ1以降のゲームでもキャラチップなどでは、ドット単位の指定が行われるのでした。
それどころか、携帯ゲームソフトでは、ガラケーの時代から既にドット単位の指定は現役の手法であり、スマホゲーム時代の現代でも現役です。
だから「ドット絵には魅力がある」とかいって、ファミコン時代のゲームばかりあげる人は、こういう現役のドット絵作家の努力が目に入らない人ですので、なるべく信用しないほうが良いと思います。
また、画像編集のフリーソフトまたはシェアウェアで、現代でも「ドット エディタ」と呼ばれる種類の画像制作ソフトがあり、少なくとも2D同人ゲームの制作ではよく使われます。
ツクールやウディタのドット絵を作る場合でも、ドットエディタを使って作るわけです。
ゲームに興味なさそうな人が「ドット絵」をレトロゲームの絵という意味で使うのは仕方ないかもしれませんが、しかしゲーム通みたいな顔して「俺ってけっこうオタクなんだぜ」みたいなフリしてるのに、レトロ的な用法で「ドット」という言葉を使う人はアレです。
おそらく、本当はけっしてドット絵が好きなんじゃなくって、単に自分の子供時代の思い出が好きなだけだと思います。
ニュアンスは違いますが、アニメ評論でもそういう話があります。1990年代後半に岡田斗司夫と誰かの対談で(おそらく書籍『マジメな話』での対談)、
「アニメの黄金期はいつか?」というよくあるアニメオタク談義について、
対談相手が言うには、
よく「70年代だ」「いや80年代だ」とかで議論が始まるが「いや12歳だ」というオチが有名だと。
}}
=== アナログテレビの焼きつきなど ===
あまりゲーム評論では指摘されないのですが、
このほか、ファミコン時代はテレビ受像機がアナログのブラウン管ディスプレイなので、
あまり長時間、同じ色をディスプレイ上の同じ位置に表示し付けていると焼きつきが起きる可能性があるので、
ステージごとにコンセプトになる背景色を変えたり、
あるいはステージの背景色を黒にしたステージを増やしたりとかの工夫も、必要だったかもしれません。
ゲームではないですがパソコンソフトなどの古いソフトは、こういったディスプレイの焼きつきの事を考えており、だからスクリーンセーバー機能の搭載など何らかの対策をしています。
ともかく、あまり、特定の色ばかり続けて使いすぎないようにする工夫が必要だったでしょう。
アナログテレビは西暦2010年のアナログ停波する時代まで使われていたので、焼きつき問題はファミコン以降のプレステ1~2時代のゲームにも関係するでしょう。
ネット上にはデマで「ブラウン管だと焼きつきが起きない」(×)というデマがあるが、しかし西暦2001年くらいの筐体パソコンのモニターはまだブラウン管が多かったし、その時代からすでに焼きつき防止のためにスクリーンセーバーがWindowsに搭載されていた。だからデマ「ブラウン管だと焼きつきが起きない」(×)にダマされないように。
なお、現代のテレビ受像機には、焼きつき防止のためにすでに「ピクセルシフト」という機能があって、
これは画面上の映像の表示位置をタイミングによって微妙にズラす機能です。こういう機能がすでに搭載されているので、わざわざゲームソフト側で実装する必要はない。そもそも液晶モニターは、焼きつきが起きにくい。ただし有機ELはどうだか、まだ新しい技術なので分からない。
== 脚注 ==
<references />
== 関連項目 ==
* [[ゲームプログラミング/コンピュータゲームの種類]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
* [[プログラミング]]
* [[w:ゲームプログミング]]
{{DEFAULTSORT:けえむふろくらみんく}}
[[Category:ゲーム]]
[[Category:情報技術]]
{{NDC|007.64}}
8l06gmwcsq0xn759murx2zhymv3wa9k
205984
205983
2022-07-29T11:20:15Z
Honooo
14373
/*アナログテレビのドットのにじみ*/
wikitext
text/x-wiki
<div class="pathnavbox">
* {{Pathnav|ゲーム}}
* {{Pathnav|工学|情報技術|プログラミング}}
</div>
== 概観 ==
このWiki参考書では、コンピュータを用いた[[w:ゲーム]]のプログラミングを扱います。つまり、いわゆる「テレビゲーム」や、[[w:コンピュータゲーム|コンピュータゲーム]]に関する記述についてです。
ここでは家庭用のパーソナルコンピュータで扱える範囲の事柄、それらのゲームソフトをつくるためのプログラミングについて議論します。必要に応じて家庭用ゲーム機の話題にも触れますが、あくまで派生的なものです。本書はプログラミングの教材であるので、大多数の読者が最初にプログラミングで触れるであろうパーソナルコンピュータでのプログラミングを、特にことわらないかぎりは想定しています。
用語に関して、コンピューターゲームの世界独自なものもあるでしょうから、適宜『[[ゲームプログラミング/コンピュータゲームの種類]]』などを参照してください。
== 本書の目的 ==
この教科書『ゲームプログラミング』の目的は、題名にもあるとおり、プログラミングによってゲームを作るための技術の参考資料を目的としています。
ゲームクリエイターやゲームデザイナー(絵描きではなくゲームの設計者のこと)のためではなく、プログラマーのための教科書です。
したがって本書では、ゲームとは関係の少ない一般IT企業での仕事のしかたについての記述もあれば、製造業系の組込ソフトなどに関する概要的な記述もあります。
なぜなら本書はゲームクリエイターではなく、たまたま何らかの理由でゲームを作っているプログラマーのための教科書だからです。たとえゲーム会社を退職しても、他の一般IT企業に転職してもプログラマーとして応用できることなども目指して本書は書かれています。
従って、紹介する話題が、かなりIT系、テクノロジー系の話題に片寄っています。本書で紹介するクリエイター論やデザイン論は、派生的なものにすぎません。
;本書を扱う上での注意点
特にことわりのないかぎり、本書ではC言語でのプログラミングによってゲームを作りたい読書を念頭に説明しています。
だから、ゲームの生産効率性を無視してでも、本来ならRPGツクールのような開発ツールを使ったほうが早いシンプルなゲームの場合ですら、本書ではC言語または他のプログラミング言語での開発にこだわった方法を説明している場合もあります。
;その他、本書について
このページとそのサブページだけを見ていると本書は「ゲームクリエイトの教科書かな?」と捉えられるかもしれませんが、
しかしこのページとは別に本wikibooksには「[[プログラミング]]」というページがあり、そこではC言語やJavaなど代表的なプログラム言語のwiki教科書にリンクしています。ゲーム限定の話題ではないですが、プログラミングのコードについても、そちら『[[C言語]]』や『[[Java]]』やなどの教科書のほうが(実際に動作するコードの量が)充実しています。また、Visual C++ での画面出力については『[[Windows API]]』に入門的な説明があります。
本書『ゲームプログラミング』はそういったプログラミング教科書一覧の一部でもあります。C言語やWindows API の教科書では、これをどうやってゲームのプログラミングに応用すればいいか説明できないので(本wiki『[[C言語]]』はけっしてゲーム目的のページではないので)、ゲームの実際としてプログラミングの話題を切り離すために本書『ゲームプログラミング』は存在しています。
なので本書にゲームデザイン論やクリエイター論などの内容の充実は期待できません。
本書『ゲームプログラミング』は現状、プログラマー目的以外には対応できないかもしれません。もしプログラマー目的以外の無料のwiki教科書が欲しい方は、現状では、自分で本wikiに加筆するか、あるいは本書『ゲームプログラミング』とは別に新規Wiki執筆を検討していただきたい。
== ゲームを作りたいな、よし、ゲームを作ろう。でも… ==
===しかし自分の本当の目的ってゲーム作り?===
「ゲームを作りたい」と思ったのなら、まずはあまり細かい難しいことは考えず、実際に作り始めてみるのが一番いいと思います。もちろんプログラミングについてほとんど何も知らないのなら、ある程度の勉強は必要ですが、ある程度の知識があるのなら、プログラミングの技量や知識の充実を気にするよりは、実際にゲームの完成を目指してプログラムを書いてみるのが一番いいようですよ。その過程でプログラミングの学習や経験は積んでいけますしね。JavaScriptやPython、無料でプログラミングに取り組める環境も、今現在では充実しています。
しかし、ゲームをプレイするのが好きだからと言って、ゲームを作る、までが本当に自分が好きかどうか、試しに少し作ってみたら、少し考えてみるといいですね。
例えば読者の中には、「私はRPGがすき」という人も多いでしょう。
RPG が好きという事はおそらく、よくRPGの題材になる西洋ファンタジーのストーリーや世界も好きという場合が多いでしょう。そして一方で現実のコンピューターRPGで魅力的に提供される、イラストや音楽が好きという場合もあります。
実際のゲーム業界の人々も、ゲームを彩るイラストレーションや音楽がいかに重要な要素かを語っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P85</ref>。
さて、ここで問題なのですが、「ゲームを作りたい」と貴方が思っていたとして、あなたが本当に作りたいのはゲームなのか?あるいは本当はイラストが描きたかったり、音楽を作りたいのではないか?
…というのは、ゲームというのは総合的な分野ですから、イラストや音楽はその要素として確実にありますが、それ以外、プログラミングやシナリオなど、様々な創作や創造が必要で、全ての作業量はかなり多いものになるでしょう。
そしてゲーム、コンピューターゲームにはゲーム独自の世界観があって、現実や小説や映画とは違う、独特の法則に支配された世界を作る必要があります。ある意味リアリティを持たない、リアリティから外れた世界です。だから、小説のようなリアリティにこだわるなら、ゲームは不向きかもしれません。
ゲーム作り始めの時点では、これらの判断は明確でなくても勉強目的でも構いませんが、しかその内「自分は本当にゲームを作りたいのか? Yes or no?」という疑問への答えが必要になるときがくるかもしれません。
試しにゲームを作ってみて、もし自分の本当の目的がゲームでないと分かったなら、それ以外の活動に移るのも、取る道の選択肢でしょう。
;給料は安い
職業として、商売としてゲームを作る場合、ゲームプログラマーの給料は洋の東西を問わず、安い事が知られており、書籍などでも言及されています。たとえば『CAREER SKILLS ソフトウェア開発者の完全キャリアガイド』(ジョン・ソンメズ 著)という欧米人のプログラマーの書いた本には、アメリカのゲーム業界ですらハードワークの割に賃金が低い事が記載されており、もし給料の高い仕事につきたいならウォールストリート(※米国の金融ウォール街のこと)のための仕事をするべきだと書籍中で指摘しています。
日本でも同様にゲーム業界の報酬が低いことは知られており、多くのゲーム会社の伝記漫画でも、よく語られています。
アニメーション業界と比べたら、ゲーム業界のほうが報酬が高いことは事実かもしれませんが、これは実は恐ろしいことに、アニメーション業界の報酬が異常に低いだけで、アニメーション業界よりはましだけど、結局は…というのが現状でしょう。
=== 同人ゲーム以外の発表の場 ===
2001年ごろの日本はネットを活用した同人ゲーム黎明期、フリーゲーム黎明期で、実験的な時代でもあり、多くのイラスト愛好、創作者や音楽創作者がゲーム制作に手を染めていたようです。この頃、まだイラスト投稿サイトや小説投稿サイトといったものは無かったか、あったとしても小規模でマイナーなものでした。
しかし2010年のあたりから各種の投稿サイトが普及したことにより状況は変わり、むしろ現在では、小説やイラストを発表したい人はそのジャンルの投稿サイトに直接アクセスしたほうが早く、そのためゲームを通して発表するのは人によっては廻り道かもしれません。
それをわかったうえで、それでもゲーム制作に身を投じるかを考えた上で、「よし、自分はゲーム制作をしよう」と思えるなら、ゲーム制作をするのが良いでしょう。
実際、今現在の作曲家やイラストレーターは、ゲームに関わったとしても、専門家として楽曲やイラストを提供するという立場に過ぎない場合もあり、自分自身が主体になってゲーム制作をする人は、プロアマ問わず少数派のように見えます。
同人ゲームの世界でも現在は(2021年頃に記述)、プログラマー系の作者が圧倒的に多い様です。
しかし、専門外の人だからこそ、メディアミックス的な意外な視点で新しいものが作れる可能性もあるかもしれません。コピーライター、作家の糸井重里が、マザー2の企画にたずさわった例もあります。しかし、あくまで「可能性」であり、成功はけっして保証されてはいないので、読者の自己責任でお願いします。
今現在のゲーム専門学校のカリキュラムはプログラミングが主体です。CGの授業は、週に2時間程の様。一方でゲームCG、或いは、一般CGに特化した学科もある様です。
あるWikibooks編集者Aは、もしイラストを描きたいなら、イラストの世界で描くのが安全、と考えています。ゲームプログラミングについては、プログラムを書ける人は絵コンテも描けそうだし、基本的にある程度の作図的なイラストを描ける人は多いだろうから、別にプログラミングに専念しろとは思っていません。
さて、読者がゲーム制作を職業として目指すのかどうかはともかく、とりあえず、ゲーム業界の状況を知っておくのが有用でしょう。
結局商業界の状況が権威をもってその分野を支配しているのがこの社会の基本なので、趣味でも職業でも、業界周辺のことを知っておくのは得ることが多いはずです。
文献『レベルデザイン徹底指南書』では、現実世界で自分が新しいスキルを1つ覚えたら、古いスキル1つはどれか忘れる必要があることを説いています<ref>大久保磨『レベルデザイン徹底指南書』、2016年12月14日 初版 第1刷発行、P81</ref>。著者は、最初はグラフィッカーでしたが、しかしプランナーに転職したので、グラフィック関係の技能は仕事では「忘れて」しまった、という内容を述べています。ただし、比喩的に「忘れる」とは言っていますが、実際には忘却し無くなってしまったわけではなく、仕事では時間の都合により両立できないので、グラフィック関係の技能は例え話で「忘れた」、のであり、現実にはグラフィッカー時代に培った観察眼をプランナー時代の現在でも活用している、と、書籍中では述べられています。
このことは職業、あるいは技能とは一般的にそういうもの、と考えることができるでしょう。
{{コラム|漫画家大塚志郎のアドバイス|
同人ゲーム界では、ゲーム制作と、イラストまたは作曲などを一人で兼ねている作者も、ある程度は居ます。一方ネットの世界には様々な簡単に利用できるフリー素材もあるので、イラスト作画や作曲をしなくてもゲーム制作は可能ですよね。
一人でイラスト作画や作曲をしながらゲーム制作をするのはある意味マルチタレントだとも言えますが、現実にその創作をしている人たちは、かなり年長のこの分野の熟練者が多いようです。若い19歳ぐらいの頃に、それらマルチジャンルを両立するのは、一般にかなり困難なことだと思われます。
漫画家の大塚志郎は、漫画家を漫画創作の手本にするならデビュー時代を手本にするのが良い、と、漫画家向けの技法の教育漫画で語っています。
大塚は、漫画家の人生のうちで、これからデビューを目指している新人に近い境遇にあるのは、ヒット後の漫画家の生活状況ではなく、まだ無名・マイナーな時代の態度・生活だ、と描いています。成功後の熟練した漫画家より、若いデビュー直後の作家をお手本にするのがいいだろう、という主張ですよね。
さて、それでもデビュー時代から複数ジャンルの同人活動を均等に兼業する意思が硬いなら、それはそれでひとつの考え方ですが、上述のリスクを知っておく必要があるでしょう。
}}
===ゲーム業界は産業のエンジン役?===
かつてはゲーム産業が、日本のIT産業やデジタル家電産業の中心的・牽引(けんいん)役であった時代がありました。しかし、2010年以降、この考えは当てはまらなくなっています。
PlayStation2あたりまでの時代は、経済評論誌の未来予想でも、「もしかしたら今後、家庭用の据え置きゲーム機がパソコンの代替品として、家庭のリビング家電の標準品になるかもしれない」という予想があった。ゲーム産業がそのような牽引役として、経済界から期待されていました。ソニーが国産CPUをプレステ2〜3に搭載したり、WindwosのマイクロソフトがXBOXでゲーム機に参入したり、そういう時代です。
しかし2020年代の今は違います。結局、2020年代のゲーム機に使われてる技術や部品は、パソコン用の部品や技術の流用、ゲーム機のCPUも、今やインテルなどのパソコン用CPUをゲーム機でも使っています。
もはや現代は、ゲーム業界は、産業のエンジンではないようです。
ですから今現在、新しい技術に興味ある人は、ゲームにこだわらず、直接的にその技術を勉強し改良したほうが近道です。
たとえば、インターネット技術を使って何か新しい事をしたいなら、ゲームを作るよりもwebアプリやサーバーwebサービスを作るべきだし、目的のネットワーク用ソフトウェアをそのまま制作したほうが早いし確実です。
古い経済知識の先入観にとらわれず、無理にゲーム制作にこだわらないほうが、自分自身の技能やキャリアも開けていくでしょう。
2010年に出版された商学書籍『メイド・イン・ジャパンは終わるのか』には、「しかしながら、ファミリーコンピュータで世界に攻勢をかけ、その後圧倒的な強さを誇っていた日本の家庭用ゲーム産業も、90年代末からはその競争力にかげりがみえはじめた。日本の国内市場は伸び悩み、成長率は鈍化傾向にある(図表7-3)。」とあります<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.263</ref>。
その「図表7-3」の統計値によると、
:ファミコン発売の1993年には2268億円、
:スーファミ発売の1990年には2430億円、
:プレステ1発売の1994年には3882億円、
:1995年には急成長して4769億円、
:1997年には4795億円で、ほぼこの頃がピークであり、
:2000年には3768億円にまで低下(プレステ2の発売年)、
:2005年には3151億円まで低下(XBOXの発売年)、
である。(青島らが『レジャー白書』、『情報メディア白書』、『月刊トイジャーナル』、『CESAゲーム白書』などをもとに作成した図表の統計値です。)
<!-- ところで前編集者Sさん,これって正確には何の数字,金額なの?それを後で書き足しておいてほしいんだけど…。あれかな?一年のこの国のゲーム産業の売上高? -->
また、2010年の時点の商学研究では、1997年を境に、ゲームソフト市場で競争する企業数が増加傾向から減少傾向に転じた<ref name="m289">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.289</ref>、とも言われています。
書籍『メイド・イン・ジャパンは終わるのか』にも、引用文「家庭用ゲームは日本がその本格的立ち上げを主導し」<ref name="m91">青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.91 </ref>と書かれているぐらいで、1990年代は日本のインパクトが強かったようです。
なお、携帯電話の分野で、日本は国際的な地位を喪失したのに対し、デジタルカメラとゲームは「現代」(参考文献の著作時2010年ごろ)でも日本が主要な地位にある<ref name="m91" />。
{{コラム|ゲームが産業の牽引役だと語った人物|
1998年頃、アニメ評論家の岡田斗司夫が、未来予想の一貫として、「これからゲーム機が、(パソコンではなく)家電の中枢になるだろう」というような内容の未来予想をしていました。たしか、岡田の著書『東大オタキングゼミ』(自由国民社、1998年)で、このような未来予想が読めます。岡田の東大での講義を加筆修正してまとめた書籍なので、実際の講義はその数年前に行われていたのだろうと思います。
岡田の東大での講義は東大生のその後の進路、官僚や大企業のビジネスマン達に大きな影響を与えただろうし、若手新進評論家として、この国の政治・経済人達も、その言論を参考にしただろう。
実際、2008年(リーマンショックあたり)くらいまでの日本の家電業界の投資は、ソニーがゲーム機のCPUを作ったりと、岡田の予想を参考にしているような面もありました。
ですが実際の2001年以降の家電業界の結果は予想とは少し外れました。まず
:* そもそも、冷蔵庫もエアコンも全然デジタル化(IoT化)されず、家電のほとんどが外部からのコンピュータ制御を必要としない状況。
:* 個々人が持ち歩いているデジタル家電は、携帯ゲーム機ではなくスマホになった。
:* パソコンは多くの家庭にいまだにインターネット用端末などとして残り続けている。
一方岡田は東大オタキングゼミで、98年当時の時点で任天堂が莫大な現金資産(たしか数千億円ほど)を持っていることに注目しています。
一般の大企業は、現金ではなく株券や不動産などの形で資産を蓄えています。しかし任天堂は、銀行口座の現金だけで数千億円という、非常に資金力の高い企業でした。今や日本を代表する世界的なゲーム大企業になっています。
また、日本だけでなくマイクロソフトのXBOXなど、実際に欧米の企業も昔はコンピュータゲームが産業の牽引役だと思って、先をこぞってゲーム機に参入していたわけでもある。岡田の未来予想は、決して根拠の無いものではなかったのです。
}}
{{コラム|読書について|
ゲーム業界と関連のない文献も、この教科書では出典として書かれていますが、これはこの頁の主要執筆者Sが、多量の市販本を読む以外に知的活動の方法を知らないことと、自分自身の文章の権威と信頼性を、著名人の威を借りて確立したいからでしょう。
ゲーム業界を志望するなら、ゲーム業界人の書いた本は少なくとも何冊かは読んでおくといいでしょう。
ネット上では、業界人ではないのにもっともらしく書かれた文章も多いですし、おそらく本Wikiの執筆者にも本格的なゲーム業界関係者は一人もいないでしょう。
業界人達のSNS発言ではなく、現代では書籍があるので、実際に書籍を手に入れて読むのがいいですね。書店で販売される書籍というのは、けっして著者だけの意見でなく、編集者や校正者、周辺の職業人達が査読をして、内容の信憑性を確認しています。
<!-- ニュース解説者の池上彰(いけがみ あきら)が、たしか2011年くらいのテレビ番組で言っていたことだと、編集者Sは言っている。 -->
何十冊も本を読むよりはプログラミングを書く実践のほうが重要でしょう。
『ゲームデザイン プロフェッショナル』著者であるFGOクリエイターも、ゲーム開発の書籍は読んでおくべきだと忠告しています<ref>『ゲームデザイン プロフェッショナル』、P234</ref>。また、ゲームデザイン本で学んだ知識は、ゲーム業界以外でも仕事術として活用できます。たとえば上司への業務報告の報告・連絡・相談(ホウ・レン・ソウ)などの考え方は、ゲーム業界でなくても活用できます<ref>『ゲームデザイン プロフェッショナル』、P332</ref>。
いっぽう、もし最新IT技術を勉強したいなら、読むべきは、ゲーム制作の解説本ではなく、そのIT技術の解説本など、そのものの書籍を読むほうが近道でしょう。
}}
===ゲームプログラミングは面白い。しかし、そんな楽な事ではない。===
ここでいう「プログラミング」とは、C言語などのプログラム言語による開発のことです。RPGツクールなど開発ツールによるゲーム制作の話は原則していません(本書『ゲームプログラミング』はあくまでプログラミングのための教科書です)。
さて、よくネットや、あるいは日常でも(C言語などによる)「ゲームプログラミングは簡単だよ。イラストやシナリオのほうが難しい。」、などという人がいますが、この発言の心は、「俺はプログラミングもイラストもシナリオも出来る凄い男だぜ。しかもプログラミングなんて簡単だし、むしろクリエイティブなイラストやシナリオの方に精力を費やす偉い奴だぜ^^」という、世間に良くいる武勇伝、自慢を語りたがる、インチキ親父が吹かしているだけなので、あまり真面目に取り合わないのが正解だと思います。
まず第一に、不当にプログラミングの価値を貶めている言説ですよね。
Visual C++またはVC# 、あるいは Direct Xなどを使ってプログラミングすることは、そんなに簡単なことではないでしょう。
ゲームプログラミングの入門書などには、初心者でも理解できそうな比較的簡単ないくつかのサンプルコードがありますが、それは初心者でも簡単に書けそうな技術だけを抜粋してるという、あくまで例外です。
RPGならたとえば、ドラクエ3のような戦争画面の行動順を処理するソート機能をつくるだけでも一苦労ですし、ほかにも道具・アイテムなどの自動整理をはじめとする標準機能を作るだけでも一苦労です。
決して上手い人のサンプルコードをコピーアンドペーストをして終わりという訳にはいかず(そもそも現状そのようなサンプルコードがネット上に無いですが)、もし仮にサンプルコードがネットに公開されていても、自作品に組み込む際にさらにそれをデバッグ(決してテストプレイの意味ではなく、実際にコード修正が必要になります)しなければならず、プログラミング言語の理解が必要です。
ゲームのプログラミングは決して楽ではないし、仮にもし楽だとしたら、じゃあゲーム会社のプログラマー職の人の仕事は何なんだ・・・という疑問につながりますよね(デマを言ってる人は、この疑問を脳内に都合よく無視しますが)。
ツクールやエディタのような制作ツールを使えば、C言語的なプログラミングは不要ですが、それはそのツクールなどのツールを開発している人達にプログラミングを肩代わりしてもらっているだけなので、決して「ゲームプログラミングが楽」、ではないでしょう。楽だというなら、じゃあツクール開発元の角川書店およびその発注先ソフトメーカーのプログラミングが楽だとでも言うのか・・・(デマを言ってる人はこの疑問を無視します)。
そもそもコンピューターゲームというのはプログラミングがなければ成立しないのですから、そのプログラミングの価値を貶めて平気な人は、コンピューターゲームにかかわる資格はないでしょう。
== ゲーム制作に関する留意点 ==
=== IT的な留意点 ===
====プログラミングなしでも同人ゲームを作れる====
自分でゲームを作る際、必ずしも、C言語などプログラム言語で記述する必要はありません。
プログラミングをせずに、ほぼマウス操作と会話メッセージなどの文章のキーボード入力だけでゲーム開発をできるようにするソフトウェアが、有料または無料で発表されています。
たとえば、RPGを作りたいなら、日本で発表されているソフトでは、『[[w:RPGツクール]]』や『[[w:WOLF RPGエディター]]』などのように、RPG製作に特化された開発ソフトがあり、大幅に開発の手間を減らせます。なお、『RPGツクール』は有料製品です。『WOLF RPGエディター』は無料ソフトです。
アクションゲームを作りたいなら、『[[w:アクションゲームツクール]]』があります。これらツクール製品は有料製品です。(なお、かつて『[[w: 2D格闘ツクール2nd.]]』というのがありましたが、しかし現在ではサポート切れのため、今現在の市販の十字キーコントローラーが初期設定では動かない、一部のボタンしか使えないなど問題点があります。)
また、ノベルゲームを作りたいなら、フリーソフトの『[[w:吉里吉里Z]]』などがあります。吉里吉里Zはソースコードが公開されており、オープンソースになっています。
:なお、とりあえず「ゲーム開発ツール」と呼びましたが、じつは呼び方は特に決まってはいません。「ゲーム制作ツール」と呼ぶ場合もあります。ゲーム開発ツールのことを「ゲームエンジン」と言う場合もありますが、開発ツール以外のゲーム用ランタイムのことも「ゲームエンジン」という場合があります。
:本Wikibooksでは、とりあえず、ツクールや吉里吉里シリーズやウディタ(WOLF RPGエディター)などのソフトの呼び方は、まとめて「ゲーム開発ツール」または「ゲーム開発ソフト」と呼ぶことにします。
C言語などによるプログラムは、上記のゲーム開発ツールを使わない場合の選択肢になるでしょう。
既存のゲーム開発ツールの仕様に不満を感じる場合に、「じゃあ自分でプログラムして作ろう」となり、プログラミングが必要になるわけです。
なお、上記の開発ツールはほとんどがWindows用のソフトです。MacやLinuxでは動きません。MacやLinuxで動作するゲームを作りたい場合は、別のソフトウエアを使う必要があります。
既存のゲーム開発ソフトを使わずにプログラムを組んでゲームを自作する場合、必ずしも既存のツールのような、ゲーム作品と開発ツールが分離された仕組みを再現する必要はありません。
一般的に初心者が、ゲーム開発ツールを作ることはほぼ不可能です。初心者は開発ツールを作ることは考えずに、まず1本、とりあえずゲーム自体を完成させてみましょう。開発ツールを自作したいのなら、まず先にゲーム1本を完成させたあとに、あとから開発ツールとゲーム作品の分離などに取り掛かるのが推奨です。
==== 商業ゲームの開発言語 ====
基本的に、現代の商業ゲームは、C言語で開発をする。
ただし、ファミコンの古いゲームは、アセンブラで開発されていた。ファミリーコンピューターからスーパーファミコンに至るまで、OSは搭載されていない<ref name="m289" />。
ではいつからC言語がゲーム開発に使われるようになったかというと、商学の学説では、プレイステーション(※ おそらくプレステ1?)の頃からだろう、と考えられている<ref name="m289" />。ただしこの時代でも、処理速度の高速化のためにアセンブラにアクセスする開発チームも少なくなかった<ref name="m289" />。
また、プレイステーションのOSは独自仕様である<ref name="m289" />。
カプコンなど一部の企業は、OSによる開発ではなく、移植性を高めるために自社製の内製フレームワークを用いて開発する。カプコンの場合、2010年頃は「MTフレームワーク」という自社製フレームワークを用いて開発を行っていた<ref name="m289" />。
{{コラム|ゲーム用のメーカー独自プログラミング言語について|
ゲーム開発ソフトには、ゲーム開発用の独自のプログラミング言語を持っている場合があります。このような機能の実現方法は、原理的には、ファイル入出力の関数を使い、テキストファイルの文字列を読み取って、文ごとにプログラム動作を設定・実行している、と、考えられます。インタプリタは、このような方法で作られています。
ゲーム製作ソフトでの独自のプログラミング言語はたいてい、コンパイル作業を必要としないので、おそらくインタプリタ方式でしょう。
基本的にWindowsの場合、実行ファイルに変換するには、Visual Studio というマイクロソフト社の配布している開発環境が必要です。
Visual Studio が開発環境を提供していない独自言語は、たいてい、インタプリタ方式となると思われます。
コンパイラ方式に比べて、インタプリタは処理速度が不利なので、適用できるジャンルや用途が限られます。たとえば3Dアクションゲームには、インタプリタ方式は不向きでしょう。
これらの独自言語を使うにしても、自分自身で独自言語を作りたいと思うとしても、この教本ではまず、既存のプログラミング言語を使ってゲーム制作を開始することを推奨します。
}}
====ゲームのプログラム言語の歴史====
ゲームを書くために利用される言語は多岐にわたっています。歴史的にはゲーム業界でも、[[C言語]]や、特に計算機のスピードが重要になる場面では[[w:アセンブリ言語|アセンブラ]]を利用してプログラミングを行うことが普通に行われていました。<!-- (文献)→-->そのため、ゲームプログラミングは通常のプログラミングと違った技能が必要であるように思われていました。
現在では計算機がある程度速くなったことや、ゲームプログラムの開発を複数人で行うことでテクニカルなプログラミングが避けられるようになったことにより、ゲームプログラミングは他の一般のプログラミングと同じような課題だと見なされています。
しかし、特にアクションゲームなどのリアルタイムでの画面書き換えが必要なゲームで、プログラムのスピードが重視されることは変わっていません。また、コンピュータの性能があがるにつれ、それらの性能を全て引き出すように表現手段が変化してきたため([[w:3次元コンピュータグラフィックス|3D]]、[[w:ポリゴン|ポリゴン]]などを参照)、状況によっては複雑で特殊なプログラミングが必要になることもあります。
===== 初心者が使えるプログラミング言語 =====
ゲーム開発において、一般にゲームショップなどで流通している商業ゲーム作品において、現在よく利用されているプログラミング言語として、[[C言語]]、[[CPlusPlus|C++]]、[[Java]]があげられます。
Windowsの3DエンジンのDirectXは、主にC++を想定しています。なので負荷の高いアクションゲームを作りたい場合、Visual C++での開発が安全でしょう。
しかし、ネット上のフリーゲームでは、C++以外の言語が使われることも、よくあります。
さいきんゲームエンジンとして有名なUnityは、言語としてはC#の文法を採用しています。
[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
市販の書籍では、Pythonによるゲーム開発を紹介した出版物もあります。ただし Python は原理的にインタプリタ方式であるために処理速度がC++に劣り、アクションゲームなど負荷の高いゲームを作る事を目指している場合は、将来的にはPythonからC++への装備変更が必要になるかもしれません。
===== ゲームに適さない(だろう)言語 =====
;Flash関係
例えば、かつて Adobe の Flash が、ブラウザで動かせるゲームを作る際に、よく使われていました。このようなwebブラウザ上で動くゲームのことを一般に、「ブラウザゲーム」と言います。ただし、現在ではFlashは廃止の方向です、すでにほぼ廃止されているといっていいでしょう。また、現状では、ローカルPC環境でのゲームをJavaScriptで作るのは、アマチュア段階では困難です。JavaScriptのアマチュアゲームと言う事例を聞きません。
;JavaScript
なお、JavaScript はクロスプラットフォームですが、しかし、セキュリティ上の理由などから、いくつかの機能(たとえばファイル入出力)がwebブラウザ上では使えないようになっており、そのため、JavaScript だけでゲームを作るのは、初歩的なゲームを除くと、かなり困難です。(おそらく、オンラインゲームでは、サーバー側でPHPやサーバサイドJavaScriptなどの別プログラムが走っていると思われます。)
セーブ機能の必要なゲームを作る場合は、JavaScriptでの開発は選択肢にない(セーブの実装には、JavaScript国際規格にはない非標準仕様を使いこなす必要があり、かなりの技術力を要するでしょう)。
=====ブラウザゲームの初歩的な原理=====
商品として流通するようなゲームや、高度な機能を持つブラウザゲームを作ることはとても難しく、このページでは手に負えません。そこで、このページでは、初心者が練習用につくるゲームを例に記述します。
webブラウザだけで動くのがブラウザゲームです。ブラウザゲームを作るのに使う言語の第一選択肢はJavaScriptです。サーバー側の処理が必要ならPHP,Python,Perl,Javaなどの言語の出番でしょう。
「ネットワークゲーム」は「ブラウザゲーム」とは意味が違います。
「ブラウザゲーム」は、パソコンにwebブラウザさえあれば、ネットワークに接続していなくてもゲームプレイできて、最後、クリアまでプレイできる作品もあります。
しかしネットゲームは、ネットワークに接続しないと、ゲームを開始することさえ不可能です。つまり、サーバの提供するゲームが「ネットワークゲーム」「ネトゲ」です。
もしPHPやPerlなどでゲームを作る場合、普通はネットゲームになる筈なので、作者がサーバを構築して提供する必要がありますし、プレイヤーにはゲーム中にサーバに接続する環境が必要になります。提供者は、サーバを用意したり、保守管理する必要がありますよね。サーバーがダウンしてしまうと、プレイヤーがゲームをできなくなります。
「PHP ゲーム」などの単語でネット検索したり、あるいは書店でプログラム言語の書籍や解説サイトを見ると、ときどきPHP・Perlなどの言語でゲーム開発しているものもありますが、一般的なダウンロード型のゲームとは違う筈なので、気をつけてください。
{{コラム|ソケット通信、ほか|
コンピュータプログラムからインターネットに通信するには、いくつかの方法がある。
C言語の場合はOSの提供するソケット通信といわれる機能を使う方法、
JavaScriptにあるHTTP通信の機能を使う方法、
などがあるだろう。
ただし、JavaScriptでゲームを制作するのは、セキュリティ上の制約などからセーブロードが標準的方法では困難など、とても制作が難しい。
よって本セクションでは、C言語にソケット通信を組み込むことの概要を説明する。
ゲーム制作初心者がソケット通信までする必要はないが、将来的には知る必要があるかもしれない。
本wikiではWindowsの場合については 教科書『[[WinSock]]』、
macやLinux / Unix や BSD の場合は 教科書『[[Unixソケットプログラミング]]』 で説明している。
Windowsとそれ以外のOSとで、ソケット通信の仕様が微妙に異なる。
ソケット通信では文字コードの問題がある。手元のパソコンの文字コード設定は、通信相手方の端末には反映されない。
Windowsの日本語版では、伝統的に Shift-JIS といわれる文字コードが使われてきたが、海外のWindows端末は日本の文字コードにあわせてくれないし、macやLinuxやBSDも同様に日本には合わせてくれない。
簡単な対処法として、ゲーム中では日本語を送受信しない、つまり半角の英数字と記号だけを送受信する、という道はある。
会員登録などのためにどうしても氏名や住所などの日本語を使う必要がある場合、PHP・Pythonなどサーバ言語に対応した「フレームワーク」があり、そのフレームワークが最初から日本語に対応、もしくは設定を少しいじるだけで日本語対応するので、それを利用すれば効率的かもしれない。
ゲームとは別途、サーバー側にフレームワークをインストールして、会員登録時にサーバー側でそれを使うようにすればいいだろう。
しかしゲーム内では日本語の扱いは非常に難しい、限定されるという事になるだろう。
C言語のプログラムにサーバサイドの言語・システムを組み込むのは難しいから、ネットゲームではどこかでソケット通信に頼ることになるだろう。
市販の本を探しても、そもそもソケット通信の書籍自体がめったに見当たらないし(ほんの少しだけ出版されている)、もし見つけても全く文字コードの問題の解決方法は紹介されていない(2021年現在)。
}}
====プラットフォ-ム====
;ライセンス料
一般に、プレイステーションや任天堂のゲームを開発するには、専用の機材が必要であり、そのため、ソニーや任天堂とライセンス契約しなければいけない<ref>『ゲームプランとデザインの教科書』、P.107 </ref>。
その契約に際して、ライセンス費用または料金と呼ばれるものを、ゲーム機開発会社の任天堂、ソニーに支払う必要があります。
現在でもソニーや任天堂のゲーム機用のソフト開発・販売には、ライセンス料が必要です。少なくともPS4やニンテンドースイッチのパッケージソフト開発には、「ライセンス費」が必要<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.120</ref>。
なお、書籍『ゲームプランナーの新しい教科書』によると任天堂やソニーのようにゲーム機を作っている会社のことをハードメーカーと言います。つまり、ゲーム機のハードメーカーにライセンス料を支払うという仕組みになっています<ref>『ゲームプランナーの新しい教科書』、P20</ref>。
また、スマートフォン向けアプリは、プラットフォーム使用料が掛かります。
書籍『ゲームプランとデザインの教科書』によると AppleStore, GooglePlayともに売上げの30%とのこと<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.121</ref>。その他のプラットフォームも、大体同じとのことです(参考文献の著作の時点では)。
Google やAppleのようにプラットフォームを提供している企業のことをプラットフォーマーと言います<ref name="gp244">吉冨賢介『ゲームプランナー入門』、P244</ref>。
昔からゲーム機のライセンス料は有料で高額であり、ソニーや任天堂の収益源のひとつになっている<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.267 </ref>。一方、パソコンゲームにはライセンス料が無いのが普通です<ref>青島矢一ほか『メイド・イン・ジャパンは終わるのか』、東洋経済、2010年8月12日発行、P.283 </ref>。
なお、ハードメーカーでなければプラットフォーマーでもないゲーム会社のうち、製造から販売までを手がける会社のことをパブリッシャーといい、たとえばカプコンやコナミやセガやスクウェア・エニックスやバンダイナムコなどがパブリッシャーです<ref name="gp244" />。
実は、必ずしもパブリッシャーが開発を手がけるとは限らず、スマホ向けアプリなどではディベロッパーといわれる開発専門の会社に委託している場合もあります<ref>吉冨賢介『ゲームプランナー入門』、P245</ref>。
;ポリコレ規制
Apple社のAppStore向けのスマートフォンアプリでは、アップロード後に、公開前にAppleによる審査があり<ref name="g139">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.139</ref>。、審査は欧米基準です。
GooglePlayは、公開前の審査はないが公開開始後に海外基準で審査されるので、それに違反していると配信停止になります<ref name="g139" />。
海外プラットフォームで販売・配布したい場合、「ポリティカル・コレクトネス」(政治的な正しさ)といわれる、海外の公序良俗の基準に配慮する必要があります<ref>『ゲーム作りの発想法と企画書のつくりかた』、P.235</ref>。
欧米の判断基準が、アジア諸国やアフリカの生活習俗に合致しない場合も多いのですが、欧米のIT大企業はその欧米基準での規制が政治的に正しいと考えているでしょう。「日本では、少し考え方が違う」と言っても、通用せず規制される場合も多い。
ゲームだけでなくテレビアニメでも、漫画ワンピースの海外アニメ版では、主人公側の若者がタバコを吸っているシーンをアメ玉に作画を変えられたり、ドラゴンボールに出てくるミスターポポという肌の真っ黒なキャラクターの肌を青く書き換えたり、色々な例があります。
ポリコレとは関係ない事例ですが、TVアニメーションのポケットモンスターで主人公のサトシ達がお握りを食べているシーンで、アメリカ版ではドーナツになっていたことがあります。これは、国による食文化の違いを示していますよね。
===プロトタイプ===
ゲームでは、曲や絵が良くても、ゲームとしては今ひとつ面白くない、という事は起こり得ますよね。
ですからむしろ、商業的なゲーム制作では、イラストは簡略なものを使ったうえで、プログラム中心の試作品(プロトタイプ)をいくつか作り、その中でゲームとしての面白さがあるものを、取捨選択したうえで商品化を考え、その後イラストや楽曲を詰めて完成度を高めていく、と、いう制作過程を取るようです。
書籍『ゲームプランナー入門』(吉冨賢介 著)によると、商業ゲーム界では、企画書に書かれたゲームが本当に面白いかどうか確認するために、「プロトタイプ」が作られます。プロトタイプの段階では、プログラマーと、企画の意図を考慮するためプランナーも関わります。<ref name="gp17">吉冨賢介『ゲームプランナー入門』、P17</ref>
イラストレーターは、プロトタイプの前段階あたりでイメージイラストを提供し、スタッフ間の共有イメージを作ります<ref name="gp18">吉冨賢介『ゲームプランナー入門』、P18</ref>。そしてプロトタイプ進行中は、グラフィック案の提案をしていきます<ref name="gcw56">蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P56</ref>。サウンドも同様、プロトタイプでは、曲調を固めていく段階です<ref name="gcw56" />。
:※時々あるトラブルとして、マイナーな同人ゲームや零細メーカーのゲームで、背景イラストや脇役キャラクターなど目立たない部分で他社のイラストが使われていることがあるようです。おそらく試作用に流用したイラストが、そのまま製品に混入したのでしょう。こういうトラブルがあるので、他社イラストの使用は試作であっても避けるべきです。
;実装検証
プログラマーは、そのゲームでコアになるプログラムやシステムやミドルウェアについて、プロトタイプ段階で実装検証を済ませておく必要があります。プロトタイプより前の原案の段階では、利用するミドルウェアの洗い出しをして、出来る範囲での基礎実験をしておきます<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P54</ref>。
ミドルウェアによっては使用料が発生するので、その点を事前に調べておく<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P55</ref>。
プロトタイプのうち、張りぼての例えば画面だけの物等を、「モックアップ」といいます。一方である程度遊べる状態まで作っているものを、「プレアブル」といいます<ref>STUDIO SHIN『ゲームプランナーの新しい教科書』、翔泳社、2018年3月10日初版第2刷、P251の図</ref>。
ゲームデザイン本ではよく「プロトタイプ」という表現が用いられるので、本ページではこの言葉を使うことにします。
{{コラム|商標権等|
知的財産権には著作権・商標権・意匠権などがありますが、商標権は特に強い権利であり、気を配る必要があります。
意匠権とは、建物や工業製品の外観に関する権利なので、ゲーム制作ではあまり気にする必要はないようです<ref name="gpd135">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.135</ref>。
「特許権・実用新案権」と「商標権」は、事業者によって国に登録されている権利で、かなり強力な権利なので、気をつける必要があります。
特許権や実用新案権とは、大まかに言えば、技術的な発明に関する権利です。商標が登録されているかどうかは、特許庁の『特許情報プラットフォーム』というwebサイト<ref name="gpd134">川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.134</ref>で確認できます。
商標をトリッキーな意図で登録する人も多く、自社でビジネス展開をする気がなかったり、他社の商品などでまだ登録されていない物を申請したり、そういうやや不正な登録申請でも認可されてしまう場合も多いです。
また、商標は業種のジャンルごとに分かれているので、たとえば携帯電話のジャンルが新たに追加された時代に、過去のゲームの商標を登録した人がいました。そのため携帯ゲームを出せなかったり、商標を買い戻したり、取り戻すための裁判をするのに時間とお金がかかってしまったり、様々な問題が発生します。<ref name="gpd134" />
著作権は、登録の必要がなく、著作をした時点で発生する権利です。
『ゲームプランとデザインの教科書』によると、こういう事柄にまだ慣れていない人によくあることなのですが、他人の個人サイトやSNSで公開されていた絵や曲などを、許可なく勝手に使う事例があるようです<ref name="gpd135" />。
二次利用を許可されてない著作物は素材として使えません。
そして見落としがちなのが、フォントの著作権です<ref name="gpd135" />。フォントにも著作権があります。
フリー素材と書かれていても、商用販売が禁止されている配布形態のものもありますので、気をつけましょう。
}}
{{コラム|アイデアの権利。アイデアとは盗まれるのか、盗むのか?|
商業ゲーム作家たちの、2022/1時点でのSNS発言によると、業界全体でみられることですが、会社外部の人がアイデアを一方的に投稿してきて、会社で作った作品にそのアイデアと類似点があったら、アイデア使用料を要求してくる、そのような問題に悩まされているようです。
そこでゲーム会社側では原則、
:送られてきたハガキやメールは、まずクリエイター以外の事務系の人間が読む。
:もしハガキなどにアイデアがあった場合、そのハガキを処分。
などの方策を取ると言われています。
また、偶然や何らかの理由でアイデアが一致してしまった場合に備えてのリスク回避として、事前に会社のウェブサイトなどで「弊社にアイデアが送られてきた場合、そのアイデアは弊社のものになります」のような宣言をしている会社も多くあると言われています。<!-- (以上、作家のSNS発言やそれを紹介したサイトの取材などのまとめ.)←出典を消すなってS氏はやたら云うんだけど,そんな重要な事かね?もちろん全くなくて,いい加減な事書いていいと言ってるわけではないけど… -->
ここで前編集者は娯楽産業の世界には厄介な消費者がいると言及しているけど、この前編集者自身がこのWikibooks で異常なまでに厄介な参加者なんだが、そろそろ人のふり見て自分を返り見るべきだと思うな。
法学的には、著作権法はアイデアを保護しません(『アイデア・表現の二分論』と言います)。
そして前編集者はアイデアに関して権利をどうこう言う人間を無知だと書いているけど、自分は至上の賢人だと思ってるようだね。
そしてこの人物は他者を愚弄する時は必ず自分の意見ではなく、権威ある人がそう書いたから、出典だからと宣う。
出典は岡田斗司夫氏の著作『東大オタク学講座』や『マジメな話』だそうだ。
まあ岡田氏ならかなり過激なことを書くのは事実だろうが,この前編集者S はその悪徳をさらに10倍に高めてこのWikibooks に記述する地獄のように厄介で無知で馬鹿な人間だ。
}}
任天堂『ゼルダの伝説 ブレス オブ ザ ワイルド』は、プロトタイプの段階ではイラストや音楽を組み込まずに(イラストは、代わりに大きなドットの塊などで代用する)作られている事がゲーム業界見本市イベント CEDEC 2017 で公開されています<ref>https://game.watch.impress.co.jp/docs/news/1078888.html 2020年11月25日に閲覧して確認</ref>。
プロトタイプの段階では、画像や音楽は発注せず、骨組み的なプログラムだけで、そのゲームのアイデアが「はたして本当に面白いか?」を、実際に社内の関係者にプレイさせてみて確認します。
因みにプロトタイプに関しては『[[高等学校情報/その他の技術的な話題#プロトタイプ開発]]』の記述も参考になる。
ここでいう「プロトタイプ」(試作品)とは、コンピュータプログラムのゲームとして動作するのが前提です。映画製作でいう絵コンテ試写のように、ゲームの試作では、なるべく早期に第三者が試作ゲームを遊べるように作っていく必要があります。
プロトタイプという言葉を使用すること自体が妥当かどうか。まず、書籍『ゲームプランとデザインの教科書』で使われている<ref name="gpd350">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.350</ref>。
ニコニコ動画の経営者、川上量生が使っています<ref>川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日 第1刷発行、P.38</ref>。川上は角川書店も買収したので、おそらくそこ(カドカワ・RPGツクール販売元)でも使っているでしょう。
ゲームのプロトタイプの基本姿勢は、「汚く作って、やりなおす」です<ref name="gpd350" />。もちろん最低限のプログラムの知識、勉強は必要ですが、あまり知識収集や理解充実を気にするより、実際に作ってみることを優先したほうがいいようです。チーム制作をしている場合はプロタイプは赤ん坊であり、そのチームで育てていこう、我々の子供だという意識で接しているようです<ref name="gpd350" />。
勉強に関しては、汚くてもいいからまず工夫して作ってみると、何を勉強すればいいかが見えてきます。
英語では「quick and dirty prototype」という言葉があります<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.349</ref>。
書籍『ゲーム作りの発想法と企画書のつくりかた』によると、シナリオライター志望者が企画書やシナリオ案をメーカーに送りつけても、あまり効果的ではないようです。
それよりゲーム形式でシナリオを書いてしまうのがいいようで、「CHR:ヒロインA(私服)、表示」のような文章を織り交ぜて構成していくのが推奨<ref>『ゲーム作りの発想法と企画書のつくりかた、P.140</ref>。
参考文献のその章では、シナリオライター志望者に向けて語られていますが、プログラマーを目指すならどうすればいいでしょうかね。
プログラマー志望なら、サンプルゲーム、サンプルプログラムを作ってしまうのがいいかもしれません。
1990年代、週刊少年マガジンに不定期掲載していた読みきり漫画『ゲームクリエイター列伝』では、カプコン社のゲーム『バイオハザード』を扱った『バイオハザードを創った男達』の際、制作過程でゲームデザイナーが大幅な作り直しを判断して進行させた、という描写があります。(ただしWikiboooks一編集者の記憶、詳細はあいまい)。
のちの、ゲーム評論家の阿部広樹の評によると、むしろそれは劇的な大きな決断ではなく、ゲームデザイナーの日常の普通の仕事ではないか、と語られています。
どんな肩書の人間だろうと、すでに決まって進行していた方針をひっくり返すのは、かなりのストレスのある判断で指摘になりますが、一般に漫画や映画、あるいはNHKの仕事に関するドキュメンタリーでもそうですが、職業や職業者の物語では、過剰に対象を美化し、劇的な演出によって関係者を称賛し、英雄視する傾向があるように思います。
{{コラム|アイデアはアイデアで価値がある。でも、せっかくなら、それを試作して、形にしてみよう。|
ゲーム業界人広井王子は書籍のインタビューで、自分の社長としての人材評価は「0点」から始まる「加点法」だと語っていたようです。
『ゲームデザイン プロフェッショナル』著者も、文脈は違いますが「加点方式で物事を考える」と述べています<ref>『ゲームデザイン プロフェッショナル』、P224</ref>。
正直インチキなゲーム業界人の点数勘定などには全く興味ないが、そんな話とは全く別に、ゲーム制作の上で、実際に動く簡単なプロトタイプを作ってみることは間違いなく有意義な事でしょう。
アイデアはアイデアとして、思考や思想の展開としてありますが、それを具体的な形にしてみることは非常に楽しくエキサイティングで、意味ある活動ですよね。
}}
仕様書や設定資料を超えて、誰もが遊べる試作品は、意味のある企画行為でしょう。前編集者は、時間軸・動きの制作意図の明確化、という言葉を使っています。もちろん短くまとめること自体もなかなか難しいのですが、工夫を凝らして、ゲームプログラムを完成させることが重要な経験であり、思考の具体化でもあると思います。
===アルファ版===
アルファ版はプロトタイプとは違うもので、その後段階で、ゲームの全体像が分かる一部分を、商品に準じた形で作ることです<ref name="gp17" />。
アルファ版でもそのゲームが本当に面白いかどうか検証がなされます。サウンドやビジュアルは商品に近いほぼ完成化された形で取り込みます。
アルファ版の使用の結果、プロジェクト中止の決定がなされる場合もあります<ref name="gp18" />。
ベータ版とは、会社によって意味が多少違いますが(たとえば『ゲームデザインプロフェッショナル』と『ゲームプランナ-入門』とでも微妙に違う)、おおむね、とりあえずのゲーム、最初からエンディングまでのほぼ完成状態をひととおり遊べる制作物です<ref>『ゲームデザインプロフェッショナル』、P170</ref>。
細かいバグ修正はこれらの段階では後回しにします。
基本的に
:プロトタイプ→アルファ版→ベータ版→調整→デバッグ
の流れですね。
===プロトタイプ制作に必要な予備知識===
====数学は後回し====
ゲーム制作の作り始めにおいて、必要な数学や物理の予備知識は、それほど多くありません。
文献『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』によれば、数学や物理の習熟に拘って、それに多くの時間と精力を費やして勉強するよりは、3Dの勉強などで必要を感じたら、そのつど、その分野の数学や物理を学ぶのが効率的だと述べており、また可能なら実際にプログラミングでその理論を試してみると具体的に理解をしやすいと述べています<ref>蛭田健司『ゲームクリエイターの仕事 イマドキのゲーム制作現場を大解剖』、翔泳社、2016年4月14日初版第1刷発行、P88</ref>。
====C言語の予備知識は入門書1冊+αで十分====
C言語を使ったゲームは、予備知識はそれほど多くないので、あまり難しいことは考えず、まず実際にプログラムを書いて作ってしまう事優先にするのが正解なようです。
市販のC言語入門書で、配列や関数などの一般的な機能を一通り習得したら、あとはVisual C++ で映像出力とキーボ-ド入力のみを、1~2週間ほど勉強、そしてVisual Studioを起動してゲームを作り始める。
うまくいけば数か月以内に、パソコン用の非ネット通信のゲームを作ることができるでしょう。
ただ、ゲームプログラミングを試みる人は、必ずしもゲーム制作のみが絶対的な唯一の目標ではない可能性もあるので、それぞれの立場に応じて、座学を取り入れてみるのもいいと思います。
== 作業リストを作る ==
===作業リストの制作開始の方法===
さて、ゲームを作る時は、アイデアを頭の中だけに置いておくのではなく、文章に書きだしてみましょう。
そして、壮大な長大なアイデアではなく、1週間~1ヶ月ていどで成果の確認できそうなアイデアだけを書いてみましょう。
次にそのアイデアを、実際に動作するプログラム、ソフトウェア(つまりプロトタイプ)にするために、具体的などんな機能を持ったプログラム(簡単なものでよい)を制作しなければいけないか、自分のやるべきことのリストを、箇条書きで作ります。<ref>https://www.youtube.com/watch?v=J5FCZG7dfEY 2020年3月17日に閲覧</ref>
IT界ではこういうリストを「ToDoリスト」(読み: トゥードゥーリスト)とか「タスクリスト」といいます。このページではむしろ日本語で、「作業リスト」と呼んでみましょう。
さて、このリストを作るときは、作業項目は具体的かつ単純な目標に分割します。ですから例えば RPG の戦闘システムを作るときは、
*「戦闘システムを作る。」
と、あいまいに総体的に書くのではなく、具体的に、
*戦闘画面のメッセージ表示欄および標準メッセージを作る。
*「戦う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは後回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
という風に、作業項目を細かく分割していきます。
こうすることで、作業がひとつずつ比較的に簡単な要素に分解されていくので、楽になります。また、バージョン管理ソフトを使って管理している場合も、上記のような作業リストの分解をしておけば、各バージョンの概要を書く際にも作業リストの項目が転用できるので、一石二鳥です。
予定日は書かないほうがいいように思われます。スケジュールを管理したい場合は、別にファイルを作るといいですね。
そして書き出した項目を優先順位で並べたら、最初の作業リストは完成です。
===作業リストの更新===
プログラミングする前に作業リストを眺めて、そして上の項目から実際に作業を開始しましょう。
そして一つの項目を完成させましょう。
そして作業項目がひとつ終わったら、「【完了!】」等、そういう情報を、項目の前または後ろにつけます。備忘のための記録ですね。
たとえば、
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
こうします。
以前の記述を残したまま、その作業が終了したことを示しておくわけですね。
また、もし追加の作業が必要になったら、たとえばダメージ計算システムを作るために、ランダム計算が必要になって、自分がそのプログラム言語でのランダム計算に詳しくないなら、たとえば
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
::※3行目に追加されています。
と、必要に応じて項目を追加します。
さて、これから行う作業を検索しやすくするため、たとえば
'''やることリスト'''
*Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
'''完了した作業'''
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
の様に完了した項目を後回しにしたり、或いは
*【完了!】戦闘画面のメッセージ表示欄および標準メッセージを作る。
*【完了!】「闘う」コマンド選択欄を作る。(動作するコマンドはまだ「戦う」だけ。「逃げる」「魔法」などは音回し。)
*(現在→) Visual C++ でのランダム計算のとりあえず出来る方法について調べる。
*主人公1人用の「戦う」コマンド用のダメージ計算システムを作る。
*主人公以外の味方キャラのぶんの表示欄も戦闘画面に追加する。
*味方キャラが素早さ順に行動する処理を作る。
のように、(現在→)、を追加するのも良いでしょう。
つまり作業の記述をそのままに、どこまで進展しているかが分かる等に書き足していくわけですね。
==プロトタイプ制作における創作面の検討事項==
===ゲーム性===
「ゲーム性」という概念があって、これがあるからこそゲームは面白く、魅力的だと考えられています。
プレイステーション開発元のソニーもこれを重視していますし、一般的に多くのゲーム愛好者、関係者たちもその考えに同意するでしょう。
ではゲーム性とは何か?
ゲームのジャンルにもよりますが、「駆け引き」や「戦術」、これが「ゲーム性」だとよく言われます。
『ゲームプランとデザインの教科書』によると、ゲーム性とは、シューティングやアクションでは「対戦の駆け引き」、RPGでは「戦闘と物語の介入」、シミュレーションゲームなら「戦略性」だそうです<ref>『ゲームプランとデザインの教科書』、P152</ref>。
ただし上述の書籍によると、1990年代は今よりもゲーム性とシステムが重視されていたとの説明があるので、裏を返せば2010年以降の現代では、ゲーム業界ではゲーム性の重視の比率は1990年代よりも減っているかもしれません<ref>『ゲームプランとデザインの教科書』、P302</ref>。
『ゲームプランナー入門』(吉冨賢介 著)では、ゲーム性とは「課題や挑戦の仕組み」であると結論づけています<ref>吉冨賢介『ゲームプランナー入門』、P36</ref>。そして、この達成感こそが「ゲームならではの面白さ」だと述べています。
;アクションパズルゲーム「I.Q」
メディアクリエイターの佐藤 雅彦氏(「だんご3兄弟」や「ピタゴラスイッチ」等を手掛けている)が、初めてかかわるコンピュータゲームで、ソニー・コンピュータ・エンターテインメントとの共同企画で、のちに「I.Q」(1997年にシリーズ第一弾を発売)と呼ばれるシリーズに携わった時、プロトタイプが全くゲーム性のないものになってしまい、それをプレイしたソニーの幹部陣の顔色が非常に曇ってしまったようです<ref name="br67">川村元気『理系に学ぶ』、ダイヤモンド社、2016年4月21日第1刷発行、P.67</ref>。
ここでの悪い反応、薄い反応の理由がわからなかった佐藤氏が、階段の踊り場でソニーの新人に尋ねてみると、「それが、あの、ゲーム性がないっていうか・・・」と言われたと出典の対談集に書かれています<ref name="br67" />。
基本的に佐藤氏は、プロトタイプの企画を提案しただけですが、ソニーにはプロトタイプを作るための部署があるらしく、1~2ヶ月かけてそこでプロトタイプが作られたようです。
この問題の責任が誰にあるかは、大した重要な事ではありませんが、商業作品としてプロトタイプを作る以上は、どこかの段階でゲーム性を意識して、プログラムに盛り込む工夫が必要になるでしょう。
===ゲームの見た目とは?===
ふつうゲームのプレイヤーは、まず最初にそのゲームの「見た目」を判断し感受するでしょう。ですからその見た目のインパクト、興味を呼び起こす構成が必要になります。
例えばスーパーファミコンRPG『新桃太郎伝説』では、開発当初はドラゴンクエスト5 のようなマップ画面のトップビューUIでしたが、開発中にクォータービューの他社製RPGが発売されて高い評価を得たので、マップUIを(トップビューではなく)クォータービューに作り直したようです。このことは攻略本『新桃太郎伝説 究極本』に開発裏話として書かれています。
一方現在でもこの方向の試みは重要なようで、書籍『ゲームデザイン プロフェッショナル』の著者は、他企業の製品の画面と、自社の製品を目で見比べる分析方法で、自分たちの製品のUI の問題を見出しています<ref name="gdp199">『ゲームデザイン プロフェッショナル』、P199</ref>。
割と素朴で単純で即物的な見た目、「かっこいい」とか、「ぱっと見派手」等の要素が非常に重要なようです<ref name="gdp199" />。
商業としてゲームを作る以上は、ペイしなければ企業も事業の継続も維持できませんから、考慮せざるを得ない問題ではあります。
== ゲーム開発ツールを使う場合 ==
====開発ツールのライセンス条件====
ゲーム開発ツールのなかには、そのツールで開発したゲームソフトに義務として「この開発ツールで開発したソフトウェアは、ソースコードを必ず公開しなければならない」などの条件をつけている場合があり、このような条件を「開示義務」(かいじ ぎむ)または「ソース開示義務」などといいます。
ソース開示が嫌な場合は、開示義務のあるツールは使わないのが正解ですね。
ゲームに限らず、ソース開示を義務としている開発ツールは多くあるので、ライセンスには気を配る必要があります。
「有料ソフトの販売を禁止」とか「アダルト作品の開発は禁止」などの条件をつけている場合も、ありえます。
ですからゲーム開発において、ツールのライセンス条件の確認は、非常に重要です。
{{コラム|GPLライセンス違反|
GPL(ジーピーエル)というライセンスがあって、Linuxなどのオープンソースで使われています。このGPLを組み込んだプログラムは、ソースを公開しなければいけません。
ですから、ソース公開したくないプログラムには、GPLソフトウェアは組み込めません。
ゲーム業界でも、GPLライセンスのソフトウェアを組み込んでしまったために、呼出し元ソフトウェアでのソースコードの一部を公開することになったゲームがあります。2005年頃、『ToHeart2』という美少女ゲームが、xvidというGPLソフトを取り込んだ疑惑によって、GPL違反の疑いでソース公開になりました。([[w:ToHeart2#GPL違反とソース公開]])
GPLでも、たとえばLinuxサーバ上でソース非公開のアプリを動かすように、GPLのソフトウェアを非公開ソフトとは独立した状態で使う場合は、ソース公開の必要はない、と、考えられています。(これが必要有りとなると、オンラインのプログラムやネットゲームは全てソース公開しなければならなくなり、非合理な結果になる。)
特定のプログラム自体に、GPLソフトウェアのコードを取り込んだ時、ソースコード公開が必要になります。
}}
{{コラム|BSDライセンス他|
オープンソースの中には、どのような利用法であっても、利用者にソース公開を求めないライセンスもあります。BSDライセンスとMITライセンスはソース非公開で利用できます。
ゲーム制作ツールの吉里吉里Zは、修正BSDライセンスで公開されています。
もしライセンスのことがよくわからない、またはライセンスの学習に時間をかけたくないなら、オープンソースのツールを使うなら、BSDライセンスを使うのが安全です。
}}
[[w:DXライブラリ]]は、GPLでもBSDライセンスでもありません(DXライブラリ説明書「DxLib.txt」には、どこにも「GPL」とも「BSD」とも書いていない)。DXライブラリは単にソースコードが公開されていて、著作権者の「山田 巧」氏が著作権を保持しているオープンソースなライブラリです。
このように、ネット上でソース公開されているソフトウェアには、ライセンスの複雑な解釈を嫌ってか、「BSD」や「MIT」などのライセンス条件を名乗らないオープンソースソフトウェアもあります。
{{コラム|自作ソフトでソース開示|
昨今ではオープンソースやフリーソフトウエアの発展などの背景もあり、「自作ゲームのソースコードやソースファイルも開示しよう」と思うゲーム作者もいるかもしれません。
然しソースコードを開示していることが原因で、トラブルに巻き込まれる場合もあるかもしれません。自分の作ったゲームのコードが悪用され、トリッキーないたずらや嫌がらせ、誹謗中傷などを受ける可能性も全くないわけではありません。
そこでライセンスに、利用による損害に対する保証が無いことを明示するのは、ある程度有効でしょう。大抵の著名なフリーソフトウェアライセンスには、この条項があります。他者の悪意を完全に防ぎ失くすることは難しいのですが、ある程度の対策は見出されていますし、自身でも見出していく必要があるでしょう。
}}
====開発ツールを使用しないという事====
下記の理由(機能制限および移植性の悪さ)の問題から、あまり大規模な作品は開発ツールでは作らないでおくのが安全です。
大規模な作品の場合、Visual C++ などでコードを書いて開発することを推奨します。
=====機能制限=====
ゲーム開発ツールを使う場合、そのツールにもよりますが、「○○ができない」、つまり特定の目的を果たすための機能を持っていない場合があります。
Visual Basic や Visual C++ には普通にある関数でも、開発ツールには無い場合も多い。
また、もし、いったんはゲーム開発ツールを使って目的の機能を持ったシステムを作ったとして、さらなる機能をそのシステムに追加しようとするときに、大幅な作り直しが必要になる場合があります(拡張性の悪さ)。
システムがモジュール化されていても、そのモジュール部分では大きく改変する必要がある場合もあるでしょう。
ですからゲーム開発ツールによるゲーム制作では、あまり大作を作ろうとしないほうが安全です。開発ツールで作る作品は、比較的に小規模な作品に、とどめておくことを推奨します。
Windowsの場合、本来なら Visual C++ などを使って、プログラム文法のいろいろな事に留意しながらプログラムを書きますよね。開発ツールを使う場合、 Visual C++ のコードを書かずに、ほぼマウス操作だけでプログラムを作ろうとしているわけですから、何かしらの制限があります。拡張性の悪さは、プログラム文法などの学習の負担を減らすためのトレード・オフのようなものですね。
=====移植性の悪さ=====
また、もうひとつの問題点として、C言語への移植性の悪さがあります。
ソースコードが公開されていない開発ツールの場合、異なる開発環境にゲームのソースファイルを移植するのは、ほぼ不可能です(仮に、開発ツールのランタイムを模倣できたとしても、著作権などの法的な懸念が生じる可能性あり)。
ゲーム開発ツールで作ったソースを、Visual C++のソースに置き換えるのは、簡単にはできないし、ほぼ全面的に新たに書くことになるでしょう。
==イラストレーター、デザイナー==
ゲーム制作、業界において、イラストや音楽を作る部署、人物は、まとめて、"アーティスト"と呼んでいるようです。
ゲーム界の場合デザイナーというのは、プランナーやディレクターのことであり、管理職的な設計者のことで、美術的なクリエイターではない。design という英語には、機械建築の設計という意味もあります。
映像関係、画像系のアーティストはグラフィッカーと呼ばれることもあります。ムービー担当者、特にゲーム界では3D-CGの制作者をアニメーターと呼ぶことが多いようです。アニメーション業界では主に、手描きの原画、動画マンをアニメーターと呼びますが、最近は3D-CGアニメーション映画も多いので、すこし状況が変わっているかもしれません。
ゲーム業界とアニメーション業界、各会社企業、過去と現在で、「原画」「仕上げ」「絵コンテ」等、一般的な作業に関する言葉が、それぞれの状況で微妙に違った意味で使われることも多いですね。
…ところで前編集者はわざわざこの項目を作ったうえで、色々な場所での言葉の意味の違いを、クドクドと自分勝手な分かりづらい説明で長々述べた後、「混同しないように気をつけましょう。」なんて馬鹿馬鹿しい言葉で締めているんだけど、この人物の意図はどこにあるのだろう?
例えばデザイナーというのは一般的に、造形作品、図案、意匠を考案する人のことを言うのだから、ゲーム界の外の人間が多少その業界内での意味を取り違えても、それほど致命的なミスでもないし、罵倒、愚弄されるいわれもなければ、好き放題にその相手を罵倒、愚弄していいわけでもない。間違えて使っている人を見たら、その都度やんわりと教えてあげればいいだけじゃあない? だいたいその世界に現実に身を置いたら、そこでの言葉の意味、使い方なんて自然に覚えるものだし…。
それを得意げにこれが違うあれが間違いといちいち理屈書いて、いい気になって威張っているこの人物は何者なのだろう?
現編集者が思うには、この人物は、学問、知識、知恵、科学とは何かという事を、根源的に取り違えている、のだろう。
==操作性==
操作性について、親指と人差し指<!-- ←ここ,中指って書いてあったけど,こっちだよね? -->だけでボタンプッシュなどの操作ができるように作成するのが基本です。中指、小指、薬指はコントローラのホールドに使うぐらいです。人間工学的に、小指や薬指は力が弱いので、微妙な操作には向かないことが知られています<ref>川上大典ほか『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日 第1版 第1刷、P.48</ref>。
一般的にゲームプログラミングでは、
# プレイヤーからの入力を扱うことができる。
# ゲームが提示する内容を表示することができる。
入力と出力、この2点が機能として必要になります。
プログラミング言語とプレイヤーからの入力については歴史的にも、あまり変化がありません。言語では主に[[C言語]]、[[C++]]が用いられる。[[w:携帯電話|携帯電話]]向けのゲームでは[[Java]]が利用されましたが、これは携帯電話を提供する各社がJavaをアプリケーションの言語として選んだことによります([[w:iアプリ|iアプリ]]、[[w:EZアプリ (Java)|EZアプリ]]、[[w:S!アプリ|S!アプリ]]などを参照)。現在でもAndroidなどのスマートフォン向けでは、Javaが使われています。
パソコンゲームでは、プレイヤーからの入力には通常、キーボードかマウスを利用します。他に[[w:ジョイスティック|ジョイスティック]]や[[w:ゲームパッド|ゲームパッド]]が利用される場合もあります。家庭用ゲーム機では[[w:コントローラ|コントローラ]]が利用されることが多いのですが、[[w:ニンテンドーDS|ニンテンドーDS]]や[[w:Wii U|Wii U]]では[[w:タッチパネル|タッチパネル]]、[[w:Wii|Wii]]では複数の入力機器が提供されることが発表されています。各種入力機器をプログラムから扱う手法自体は、普遍性があり、入力機器ごとに大きく変化しない、と、考えられています。[[w:デバイスドライバ|デバイスドライバ]]、[[高等学校情報B]]には、プログラムから周辺機器を扱う方法について多少の記述があります。
画面表示のうち、3Dの表現は割合難しく、ある程度の数学(高校、あるいは場合によってはそれ以上)の理解が必要でしょう。2Dに関してはプログラムの面では、さほど難しい部分はありません。
==処理速度の問題==
基本的にプログラミングでは、関数を使って、処理をコンパクトにまとめ、定数ではなく変数で柔軟性のある操作をすることが求められますが、ゲームの場合は、この構造のせいで処理速度が低下することがあります。
現在のCPUの性能、速さはかなり高くなってはいますが、プログラム処理は無限に煩雑化できますから、やはり高度な処理を短時間でなすことが求められます。特にゲームは、リアルタイムの反応のタイミングが非常に重要ですからね。数学の指数計算についての雑学で、「新聞紙を42回おりたたむと、月に届く距離になる」というものがあります。(新聞紙の厚さ)*2^42、ですね。もっとも新聞紙の物性から言って、ほぼ不可能な操作ですけど^^;;。コードの内容、組み合わせによっては、このように計算量が指数関数的に膨大になってしまい、処理速度が非常に遅くなってしまう場合があります。
ですが、このセクションで後述するように、関数を用いる場合の解決策(※概要:あとでdefineやinlineに置き換え)があるので、プログラミングの初期のほうは、とりあえずバグを未然防止するために関数を活用するべきでしょう。
1980年代頃のファミコンなど古い時代のゲームでは、ストレージ容量(ハードディスク容量のこと)が、ボトルネックでした。「容量不足でイベントをいくつか削りました」と、当時のRPGなどのゲーム作家が述べるのは、ストレージ容量の不足のことですね。ただ当時のファミコンはROMカセットでハードディスクは無いので、まさにストレージ容量という言葉が適切でしょう。
しかし2010年以降の現代では、ボトルネックになっている要因は、ストレージ容量不足よりも処理速度です。
ゲームプログラミングに要求されるコード特性は、科学計算ソフトウェアや金融プログラミングなどの手法とは異なります。情報工学・情報科学で適切とされる「構造化プログラミング」などの歴史的に発展してきたプログラミング・パラダイムの理念とは反するようなコード開発方針になる場合もあります。しかしゲームプログラミングに限らず、限定されたハードウェアで特定の結果を速く得るためには、様々なトリッキーな手管が必要になるでしょう。
;ツクール等制作ツール
RPGツクールの制作元のカドカワ(アスキー社→エンターブレイン社→カドカワ(かつての「角川書店」) )では、PRGツクールでのアクションゲーム開発は推奨していません。アクションゲームの場合は、同じカドカワの「アクションゲームツクール」で制作するよう、薦めています。
アクションゲームとターン制RPG では要求される特性が大きく異なり、なかには、ほぼ対立しているような性質もあります。
ツクールやウディタでも、万能にあらゆることがスタマイズできるわけではなく、その制作ツールの特性に依存しますし、主に処理速度の低下しない部分についてユーザが創作できるようになっているでしょう。
多くのRPG制作ツールはマップ操作や戦闘画面の基本システムのルーチンそのものは、あまりカスタマイズできません。画像や音楽は挿入できますが、例えば戦闘プログラムなら、「コマンド」の命令文など一部の派生的な部分だけが独自に作れる程度でしょう。
ですから、ツクールでどうしてもアクションRPGを作りたい場合、基本システムの改造はかなり困難だろうし、別途、アクションRPGのような動作をするマップイベントを作成する・・・ぐらいでしょうね。
ツクールやウディタでターン制RPG以外のジャンルを制作するのには、実質的には限界があり、さまざまな制約が生じます。
;具体的な手法
初期段階では関数や変数を活用してプログラミングし、処理速度を高める必要がある箇所にだけdefineマクロ等を用い別の方法に置き換える。C++ならinline関数という前処理命令もあります。
通常の関数で記述していったソースコードを、あとから一括変換などでdefineマクロやinline関数などに置き換えることは比較的に容易です。
また、関数を経由しているので、マクロを使った場合でも比較的にバグが混入しづらくなっているかもしれません。(defineなどの前処理命令マクロは、用いるとバグを発見しづらいので、なるべくマクロの利用を避けるべきなのが、ゲームプログラミングに限らないプログラミングの定石です。)
一方、まったく関数を使ってないコードを、あとからdefineマクロなどに手作業で置き換えるのは、なかなか面倒です。
最終的には一括変換で置き換えることが出来ますから、途中の段階では、処理速度を気にせず関数を使うのがいいでしょう。
なお、defineマクロは、値の置換以外には用いないのが、プログラミングの定石です。このため、たとえば黒色RGB値の<code>10,10,10</code>といった配列にdefineマクロを使うべきかどうか悩みますが、とりあえずなるべく値周辺にだけdefineマクロを適用するようにするようにするのが良いでしょう。いっぽう、一般の命令文をdefineマクロで置き換えるのは、避けるべきでしょう。
たとえば、処理に0.5秒ほどの時間の掛かってもかまわないような場所は、どんどん、関数に置き換えていっても良いかもしれません。
アクション性のないゲームなら、関数をぞんぶんに活用できます。
ターン制RPGやシミュレーションゲーム、アドベンチャーゲームなど、関数を活用しやすいでしょう。
一方、アクションゲームなどでキャラクター操作中のコードのように頻繁に使って、しかもそのゲームの中心的なコードなら、そこは最終的には関数にしないほうが良いかもしれません。
このように、ゲームのジャンルによって処理速度に対する必要な水準が異なりますので、プログラミング時における関数などの利用の方針も異なります。
以上のように、何でも関数にすることは避けるべきです。関数は処理速度の問題がありますので、必要性のある部分だけ関数にするべき。関数を使わなくても、for文やif文などのブロックの構成を適切に組み合わせることで、コード中のmain関数以降の部分でコード共通化できることは色々とあります。
「共通性のあるコードだから」といって、大して長いわけでもないコードを関数に置き換える事は、速度維持には寄与せず、ゲーム制作のプログラミングとしては、悪手となるでしょう。
===2Dの画面出力===
画面出力の場合も入力機器の場合と同じで、これらを操作する方法はOSごとに異なっています。先ほどあげた GTK+, Qt, SDLなどのライブラリはクロスプラットフォームの画面出力を提供しているため、これらを利用することで全てのプラットフォームで動くプログラムを作ることができます。<!--画面出力を扱うためには近年の[[w:ビデオカード|ビデオカード]]の発展についても見る必要があります。しかし、ビデオカードの機能は2次元の描画に関してはあまりあらわには見えないので、この話題は3次元の描画を行うときに再び戻ってきます。-->
*[[ゲームプログラミング/ブロック崩し]]
*[[ゲームプログラミング/画面出力]]
==目次==
=== ジャンル別のプログラミング手法 ===
==== 3Dグラフィック ====
* [[ゲームプログラミング/3Dグラフィック]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
==== RPG ====
* [[ゲームプログラミング/RPG]]
==== アクション ====
※未作成
==== パズル ====
※未作成
==== シミュレーション ====
※未作成
=== ゲームのデバッグ ===
* [[ゲームプログラミング/デバッグ]]
=== 入力 ===
OSの種類によって、キーボード入力やマウス入力の受け付けのさいのプログラムの書き方は違う。
Windows API での具体的な手順は『[[ゲームプログラミング/入力]]』で説明する。
=== ゲームエンジン ※未完成 ===
* [[ゲームプログラミング/Unity]] ※リンク先ページの編集者が現状ではUnityの著作・調査を放棄中なので、調べ物としては役立ちません(2021年12月19日に本文を記述)。
=== 非プログラミングのゲーム製作の関連作業 ===
==== バランス調整 ====
*[[ゲームプログラミング/バランス調整]]
厳密にはプログラミングの話題ではないが、ゲーム製作では必要な知識なので、サブページで説明する。
:※ゲームデザインに関する記述をここに集積し分離したい、という編集者の意図もある。
==== ゲーム用の書類の書き方 ====
説明書や仕様書(しようしょ)の書き方については、『[[ゲームプログラミング/書類]]』で解説する。
== 未分類 ==
===Visual C++プログラムによる文字画像の出力===
Visual Studio付属のフォームデザイナ(VSの用意するGUI自動作成ソフト)によるGUIオブジェクト作成では、RPG用には使いづらい。いや、ひょっとしたら上手に使う方法はあるのかもしれないが、様々な理由で難易度は高い。
そこでまず、Visual C++で、フォームデザイナをなるべく使わずに文字や映像を出力する方法を考える。
選択肢は、幾つかある。
1.フォームデザイナを1つも使わない方式
*Windows APIで入力していく方法。(Wikibooksに『[[Windows API]]』の入門書があります。)
*DirectXで入力していく方法。DirectX自体はWindowsAPIを利用している。
2.1つだけフォームデザイナのパネルを使う方式
*フォームデザイナで「パネル」という画像表示機能のコンポーネントを一つ用意して、そのパネルで表示する画像をゲーム内のストーリーなどに応じて切り替えるだけで、すべての画像表示を行う。
フリーソフトでゲーム用ライブラリの『HSP』はWindows API を呼び出す仕組みになっています(HSP関連のサイトを見ると、Win APIプログラミングの解説をしている場合もある)。
フリーソフトでゲーム用ライブラリの『DXライブラリ』は Direct X を呼び出す仕組みになっています。そして、ゲーム開発ツールのひとつであるウディタのソースコードは、DXライブラリとVisual C++ を使って書かれていると、作者が公表しています(ただしソースコードは非公開)。しかし、ウディタを用いたRPGプログラミングでは DXライブラリによるコーディングはしない。ウディタにはコード入力の機能は無く、マウス操作や、キーボード操作、キャラ名称や会話文などのテキスト文字や数値の入力のみに対応している。
===乱数===
そもそも乱数とは何かという問題があるが、それは高度な数学的な議論になるだろうから、我々はその問題には深入りできない。
ゲームにおける乱数的な処理では、事実上ランダムな値にならず、演出や調整のためにアルゴリズムが介入している場合も多い。例えばゲーム中のくじで「外れ」続くと、当たり確率が変動し、次からは当たりやすくなるアルゴリズムなども良く使われる。<ref>『ゲームプランナー集中講座』、P232</ref>。
ゲームは娯楽であり、実用目的のシミュレータではないし、アルゴリズム介入で、確率的にもいんちきが多いので、あまり厳密なランダム性が問題になることは少ないだろう<ref>『ゲームプランナー集中講座』、P231</ref>。
例えばさいころというのは典型的な乱数器だし、ゲームにもよく使う物だろう。
無印C言語には標準的乱数関数 rand()があるが、これを乱数発生に使うことに批判的な意見もあるし、機能もやや不足していると見れる。
Windows64bit では int rand(void) の出力は 32bit 整数だろう。まず stand関数で初期化してから rand()を呼ぶごとに疑似乱数が帰ってくる。これの複数回の連なりが乱数列だね。帰ってくる値は0 以上 定数RAND_MAX の値以下。
例えばさいころの数値が欲しいなら、rand の返り値を6で割った後、余りに1足せば、とりあえずそれらしいものはできる。
RAND_MAXは rand()の属性として定数が与えられているだけだから(Windowsで0x7FFF)、この値の変更はできない。
まあこれでもそこそこいい加減な乱数として機能するだろうが、最近ではもう少し改良された、質の高い乱数関数もある。
また、改良された乱数関数は、乱数の範囲も指定できるから何かと使い勝手が良いし、バグを防ぐ効果もあるのだろう。
<syntaxhighlight lang="cpp">
Random^ saikoro1=gcnew Random();// Random^ でRandomクラスの変数を作っている。gcnewはインスタンスをつくるための演算子。
int detame; detame=saikoro1->Next(1, 7);// Next メソッドで「〇〇以上△△未満」の乱数を指定できる。「->」はメンバーアクセス演算子。
MessageBox::Show("目"+detame.ToString()+"が出ました。");
</syntaxhighlight>
↑例えば上述のコードは前編集者が示したものだが、これは .NETプログラミングですね。.NET のSystem::Randomクラスを使っている。.NETのクラスは普通、C#かVisual Basic で利用するので、Visual C++で使えるようにするには結構面倒な手管がいるが、その辺は読者諸兄、ヘルプやネット情報を参照して、適宜辿り付いてほしい。
C++ の場合はむしろ、 #include <random> を宣言してそこで使える関数を使用するほうが簡単でしょうね。この場合でも、乱数としての精度も高いし、帰り値の範囲指定もできる。
===画像のちらつき===
画像がひんぱんに変化するアプリでは、画面が、ちらつく事がある。画面のちらつきは、ゲームのように、画像を凝視するアプリでは、かなり利便性を損なう。
キャラクターが1歩移動するだけで、画面全体がちらついたりする場合もあり、かなり、プレイヤーの不満になる。
これは、ダブルバッファ(「裏画面」と、良く言われる)という技術で、解決を図る。
Direct Xの用語では「スワップ チェーン」と呼んでいる。
.NET Framework開発環境の C++や C#でもダブルバッファの機能があると解説されている。いくつかのGUIオブジェクトのプロパティで、ダブルバッファの設定項目がある。
しかし前編集者が実験したところ、この機能を有効に使って確認することはできなかったとの指摘がある。ひょっとしたら何らかのマイクロソフトの解説に間違いがあって、工夫次第では利用できるかもしれないが、少なくとも今現在のこのページでは、その問題に関するリファレンスは提供できない。
そこでやはり、以前の項目と同様、Win32 API または DirextX の利用をこのページでは考えたい。
前編集者は、.NET Framework のフォームデザイナでは、ちらつき自体は解決できそうだが、グローバル変数の共有が困難だったり、アプリ内から終了コマンドが使えない、などの難点があると指摘している。
ただ現編集者はこの2点に関しては、解決策はあると思うが、しかし特に調査はしない。
前編集者は、.NETプログラムでゲームを作る難点をいくつも上げているが、おそらくどれも、.NET の仕様や全貌に精通すれば解決できるように思えるが、そもそもその全貌がかなり広大なので、解決の道のりは長いだろう。
そこで少なくともこのページでのWindowsゲームプログラミングは、Win32 API を利用したものになるだろう。
==セーブ、ロード、データベース==
===セーブ機能とロード機能の作り方===
ゲームでもシリアライズ機能が必要なことは多いだろう。数値(HPなどの各種パラメータ現在値)や文字列(例えば、プレイヤーの作成したキャラクターの名前)や現在地やフラグ状況などなど、セーブの機能は欲しい。一番簡単な方法は、C言語の fopen 関数のテキストファイル書き込み機能で、テキストファイルとしてセーブすることだろう。
Windows API には CreateFile関数 があるが、テキストファイルでの素朴なセーブは一番簡単で単純なセーブ法だろう。そしてテキストファイルを読み込んでプログラムに各種変数を配置して、ロードとする。
書き込みとしては、一番単純なC言語記法では、fprintf ですかね。C++としての書き込みをしてもいいし、読み込むのも、一番基本的な方法で。基本Cだとしたら fscanf で、この関数でテキストの数値も変数として読み込めるはずですよ。場合によっては atoi関数 で文字列→数値の変換をすることもありますかね。
基本的にデータファイルは、OS もアプリケーションも、テキストファイルとバイナリファイルの2分類で考えるでしょう。でもテキストファイルだってバイナリの集まりなんですが、テキストを扱うファイルだけ特別視していると考えていい。
そして多少それらしいデータを作りたいときは、バイナリファイルで作るという事になるでしょう。
バイナリファイルでもデータとしてのファイルと、OS が機械語または何らかの仮想的な機械語として扱う実行ファイルがある。それらのバイナリは種類に応じて多くは冒頭にファイル識別子の情報があるだろうし、OS や アプリケーション側で工夫を凝らして、特定の条件を満たす場合しか動作しないようにしているだろう。そしてバイナリファイルを扱うときは、セキュリティの安全性も考慮するだろう。
基本的にプログラム側は何でもありだが、識別子の判別その他、ある程度様々な考慮をしないと、困った事態が起こり、プログラマーが責任を問われることも起こるかもしれない。
まあその時はいつものように口先だけで謝り、それでも許してくれなかったら、腹をかっ割いて死んでお詫びすれば、世間の人たちは美事な武士道精神と言って、口々に褒め称えてくれるだろう^^。←もちろんこれは冗談^^;;;。
市販のパソコン用ゲームや同人ゲームでは、テキストファイルではなくバイナリでデータ保存するゲームの方が圧倒的に多いだろう。その方がそれらしいしかっこがつく。ゲーム開発ツール側自体も、そうなっている場合が多い。RPGツクールもウディタも、セーブデータの形式はバイナリ。
テキストデータは基本エディタで開けるが、バイナリデータも内容によっては結構ぐちゃぐちゃの状態で開ける。バイナリデータはバイナリエディタで開ける。バイナリエディタのリードオンリーモードやバイナリビューアみたいなものがあれば、データーを壊さないで結構安全にデータ調査できる。
データ内容を秘匿したければ、バイナリ化だけではなく、暗号化も必要になるかもしれない。
===機能の整備===
セーブ&ロード機能の実装時には、まずセーブ機能から作るのがやりやすいという。
しかし最終的には関係関数の整備は、ロード機能が基盤となるだろう。
データや変数を、一定のスタイルでセーブして、一方で正しいスタイルでロードする、この機能が必要なわけですよね。
シリアライズされたデータを、型を決めたうえで配置しなければいけないから、ロードのプログラムの方が複雑に、面倒になる。
結局データのシリアライズは、ロード機能が基盤となり、その機能の作りやすさが、セーブ機能の作りやすさも支配するようだ。
== ゲーム中の特殊イベント ==
*[[ゲームプログラミング/特殊イベント]]
RPGやシミュレーションゲームで、1回しか起きない特殊イベントを作りたい場合もありますね。例えば日本の中世の戦国シミュレーションゲームで、「桶狭間の戦い」が3回も起きたら困りますよね。まあ起きるなら起きてもいいけどね^^。信長君には敦盛を3回舞ってもらいましょう^^。
さて、リンク先ではその話題についての叩き台、「こうプログラミングしたら、いいんじゃない?」、という事を説明しています。
==スケジュール管理==
[[File:Tokai Hairo.jpg|thumb|500px|ガントチャートの例:東海発電所の廃止解体工程]]
個人でゲームを作る時にはあまり考慮しなくていいのですが、シビアな仕事の世界では、スケジュール管理表が良く使われます。
「作業責任分担表」(TRM:Task Responcibility Matrix)といわれるスケジュール表から、それをグラフ的に図示したガントチャートといわれる表を作って、その表を見て作業計画を判断する<ref name="gpd65">川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.65</ref>。
{|class="wikitable" style="float:left"
| 仕事
| 担当
| 状態
| 開始
| 終了予定
| 終了日
|-
| 仕事1
| 田中
| 済
| 2021/10/03
| 2021/10/10
| 2021/10/10
|-
| 仕事2
| 田中
| 仕掛
| 2021/10/11
| 2021/10/13
|
|-
| 仕事3
| 鈴木
| 済
| 2021/10/05
| 2021/10/08
| 2021/10/08
|-
| 仕事4
| 山田
| 未着手
| 2021/10/13
| 2021/10/17
|
|-
|}
{{-}}
ガントチャートでは普通、横軸に日程をとります。
商業ゲーム界でもガントチャートの横軸は日程です<ref name="gpd65" />。
ガントチャートとして図示することで、ボトルネック、リスク要素、直感的にスケジュールの詳細や全体像が理解しやすくなります<ref name="gpd65" />。
スケジュール管理のための、現実的、習慣的な工夫ですね。
このTRMとガントチャートは、IT業界だけでなく建築工事でも使われ、これを利用したボトルネックの洗い出しも、建築学の教科書に記述があります。
住宅の新築やリフォームをする時、建築業者がこの表を提示して、見せてくれることもあるでしょう。
業界人ではなくとも、こういう慣習を知っておくと、得るものがありますよね。
==ストーリー制作、そして順序==
ゲーム界、特に商業ゲーム界では、ストーリーもゲームも全体から作っていくようです。アトラス社(ペルソナシリーズ、女神転生シリーズ、などを手掛ける)では、「ゲーム全体に血を回すのが先」、という言葉が良く言われていました<ref>[https://news.denfaminicogamer.jp/projectbook/191030a/2]2020年12月1日に閲覧して確認.</ref>。
プレーヤーが見たいのは、物語の細部ではなく、ゲーム全体のストーリーやテンポ、総合像である、とは限らないのだが、しかし物語を含む創作物では、全体を見て重視し、そこから作っていくのはある意味王道、常套手段ではあります。
ちなみにやや雑談的ですが、日本の週刊漫画は、その週その週での勢いや読者の興味の引き付けも大事なので、全体がないのに、その場その場で場当たり的に作られた事も多かったようです。
現編集者が聞いたことのある話では、週刊少年ジャンプで連載していた本宮ひろ志氏が、不良少年物の漫画で、敵の不良少年グループと1対1000の喧嘩になり、さあいよいよ対決場に着いて勝負だってところで以下次号にし、そして実は本宮氏はその続きを全く考えていなくて、考えてみたけどどう考えてもどう描いていいかわからない^^;;;、そこで仕方ないのでイライラして近所の酒場に飲みに行き、そしてイライラしたままそこの常連達とあり得ない大ゲンカして^^;;、そのままボロボロになって家に帰って、2時間で次の号の漫画を描き終えた、と、本宮氏自身がメディアで語っていたのを聞いたことがあります。
さて、コンピューターゲームである以上、ゲームのストーリーはシステムと連携、調和したものになるでしょう。
そこで、ゲーム作家として、システムを先に決めた後ストーリー、そういう方法論の作者も多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.306</ref>。
とにかく商業ゲーム界では常識的に、全体像から攻めていく。
例えばドラマ脚本では、「ハコ書き」という方法がある。全体像に当たる「大ハコ」を記述してから、「大ハコ」→「中ハコ」→「小ハコ」と記述していく<ref>川上大典 ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.184</ref>。
しかし、本当にすべてのゲーム制作は全体から作る必要があるのか、という疑問はありますが、その方法論に従うとすると、
:*エンディングを大まかに先に作る
:*機能の実験を簡易でいいので事前にしておく(※プロトタイプの項目を参照)
:*使用頻度の高い部分から作る
などの工夫を凝らして、常識的な方法を遂行していくことになるでしょう。
或いは、アルファ版(α版)を中盤から作り始めるとか…<ref>吉冨賢介『ゲームプランナー入門』、P17</ref>。α版の製作目的の一つとして、そのゲームが本当に面白いかの検証がある。面白くないと判断したら、制作中止もある。最初からではなく中盤から作ると、ゲームの全体像が見えるので、検証、判断がしやすい。
つまり全体から攻めて、細部やゲームが作られていくわけですから、必ずしも冒頭部から作り始める必要はないわけです。
;エンディングやラスボス戦闘を早めに作る場合
ゲーム作者にもよりますが、商業ゲームシナリオでは、エンディングを早い時期に作る人も多い<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
システム面についても、先にゲーム全体のクリア条件を決めてから、あとから各ステージの条件を決めていくことが多いようです<ref>川上大典ほか著『ゲームプランとデザインの教科書』、秀和システム、2018年11月1日第1版第1刷、P.253</ref>。
エンディングの仮の、おおざっぱなシナリオ、そしてキャラクターの性格付けを先に決めておくと、ゲームの方向性と主人公達が目指すもの、ゲームの全世界像が作者やスタッフに明快になっていきます<ref>畑大典ほか著『ゲーム作りの発想法と企画書の作り方』、総合科学出版、2020年11月19日第1版第1刷発行、P166</ref>。
基本的に商業ゲーム界では、全体→部分と細部、の構成を進めていきます。
ゲームは必ず最後にラスボスと戦う訳では無いでしょうが、その戦いはゲーム中で最も高負荷になるでしょうし、全てのシステムが集積する場面でもあるので、エンディングを先に作ると、ゲームの最大負荷の検証ができます<ref name="yth">[https://www.youtube.com/watch?v=kAUkSNhH410] 2020年8月30日</ref>。
3Dゲームでは、RPGなら戦闘シーン、アクションゲームならアクションシーンが、一般的に最も高負荷<ref>ntny著『ローポリスーパーテクニック』、ソフトバンククリエイティブ、2010年2月16日初版第5刷、P28</ref>。
負荷が高くて処理が落ちないかどうかも、この方法で確認できます。
まあ全ての物語は最後の最後が一番の見せ場ですからね。
中盤は重要性が低い…訳では無いが、少し手を抜いておこうという事か^^;;;。
最後は見せ場を盛り込むから、物語を削る必要があるとすれば、それ以外の部分、という事になりますよね<ref name="yth" />。
つまりラスボス戦(必ずゲームってこれで終わるの? ^^;;;)は最重要なので削らない。後の部分は削る可能性あり。だから最後を先に作って作りこんでおけば、制作過程で不測の事態が起こっても、重要部分はできているので、早く、上手にリリースできる。
{{コラム|イラスト制作でも順番を考え直すと打開できる場合あり。|
イラスト雑誌『コミッカーズ』(1995年季刊夏号)(唯 登詩樹 表紙)での藤島康介のインタビュー
藤島(談):よく若い漫画家さんから相談で、「先生みたいに女性の長い髪を書くとき、毛先を書くのが難しいです。根元は書けるのに」との相談を受けるのですが、
僕(藤島)は髪を描くときは毛先から始めて根元に向かって描いてます。
つまりイラスト初心者は、根元から髪の毛を描きたくなるのですが、ここで長い髪の毛を描く場合はむしろ毛先を先に書いて位置決めして、長い毛を描くと割とうまく描ける。
きれいな女性の髪の毛は、毛先の奇麗さが大事ですからね。
ストーリーを作る時に全体を考えたうえで、必ずしも最初から書くことにこだわらない方がいいように、絵を描く時にも同じ発想が有効になる。例えば機械製図でも、正確に奇麗に書くためあるいは実際の製作のため?、位置決めの優先指示の記法がある。
}}
*目標
世の中では目的や目標を明確化せよ、と主張する人は結構多い。現編集者は懐疑的。むしろ他人を自分の都合いいように動かしたいから、その方向を明示したいのだろう。それより、我々の本当の目的と目標は何か、歩みを止めてちょっと考えてみろよ、と、言いたい。
しかし結局世の人たちは目標をはっきり、言語化したがる。ゲームでもそれをすると、プレイヤーがゲームに引き込まれる、と言うが、実際にはそれはゲーム業界のカモになっている、インチキゲーマーだけだろう。
とにかくカモたちは目的を欲しがる。目標や課題がゲーム中で明確になっていないと、疑問だらけになり、ゲームをやめて、業界にお金を落としてくれない。そこで設計の際、各ステージやエリアなどの冒頭で、そのステージの課題や目標などを明示する必要があるという<ref>『ゲームプランナー入門』、P39</ref>。
ファミコンなどの古いアクションゲームではゲーム本編では目標は語られていませんが、しかし説明書などではきちんとそれが語られており、実際にスーパーマリオブラザーズの第1作目の説明書では、目的はクッパを倒してピーチ姫を救出することだと語られています<ref>『ゲームプランナー入門』、P54</ref>。
===チュートリアル、製作順序===
RGBやシミュレーションゲームでは、初めの方は、操作説明のためのチュートリアルイベントになることも多いのですが、ここにも製作順序のポイントは指摘できますね。
基本的にはチュートリアルの細部は後回しにしたい。と、いうのはゲーム本体の仕様変更が、製作過程で頻繁に起こるので、チュートリアルもそれに合わせて後回しにせざるを得ない。
最初の段階でチュートリアルを作りこんでも、仕様変更になれば、その記述自体が不適になる。
当初のチュートリアルイベントがそもそも必要かどうか。説明書、マニュアルに任せてもいいですよね。
基本的にゲーム本体の仕様がかなり変更を含み場当たり的なので、チュートリアルは後回し、ゲーム本編の完成間近の時期になるか、もしくは本編完成後になるでしょう。
==昔のコンピューターゲームと技術の発達、変遷==
ゲーム制作の時は、自分が昔プレイして楽しかったゲームを思い浮かべるし、参考にもしますよね。
ただ、コンピューターゲームは明らかに、周辺技術が時間とともに、かなりの速度で発達、変遷していきますし、過去のゲームを参考にすると言っても、精神面、思想面での参考で、技術面ではやはり、最新の情報技術を取り入れたいと、誰もが思うでしょう。
前編集者は得意げに、古典技芸の世界では、『師を見るな、 師が見ているものを見よ』と、いう言葉があると宣っていますが、そもそもこの国のゲーム業界では、基本的に金と目先の安易な欲望と私欲しか顧みられないし、そこを支配する知性と教養は、善意や誠意や真理とはかけ離れた、歪んだ論理と無駄に衒学的な詳細しか持たないし、権力をもって威張っている連中は、善性や美などとはかけ離れた安易な偏向した物理主義的な議論に明け暮れている連中なので、師などと呼べる人物に出会うことさえ、至難な事でしょう。
=== スプライト ===
ファミコン時代の昔のゲーム機には、一画面に表示できるキャラチップ数(敵チップも含める)に上限がありました。
一画面中に表示できる限界は、だいたい、マリオが一画面中に数十人ぶんです。
このように、ビデオゲームで小さなキャラクタを、高速表示する仕組みを、「スプライト」と呼んでいました。マリオのキャラクター表示は小単位のスプライトを複数合成していたようです。
このキャラクター数の制限が、当時はゲームの設計にも大きな影響を及ぼしていたわけですね。
例えばシューティングゲームで、100体の敵機を表示することはできない。
しかしそれなりの工夫はあった。表示のタイミングを変えることで、なんとなく、多量のスプライトがあるように見せることはできた。
つまり、
:1タイミング目では0~10体目までのAグループを表示、
:2タイミング目では11~20体目までのBグループを表示、
して、切り替える、うまく、素早くとか?
上手にプログラムを作ればそこそこ上手くいったようですね。それでも、キャラクターが多いと、一瞬、消えたりしている。
ファミコン上における実際の技術限界の正確な数値は、別の資料を参照していただくとして、あまりあてにならない数字として例えば、横1列上には 8体目までしか表示できなかったようです。マリオは一人で2*2=チップ使っていた。だから横一列では 4体までしか表示できませんね。
例えばシューティングでは、敵機の他に、弾丸などもスプライトでしょう。
マリオが4チップなように、巨大ボスなんかチップ数をかなり使っているでしょうね。
そしてチップ数が多いから、速度が遅くなるのでしょうか、何か我々の昔のゲームをプレイした記憶では、巨大ボスの動きは緩慢でしたよね。
しかしやや脱線しますが、巨大なキャラクターは何となく動きが遅いという我々の固定観念がある一方で、レスラーやヘビー級ボクサーはかなり動きが速い。相手の体が大きい上動きが早ければ、もう勝てないね。座して死を待つしかないか^^;;;。
<!-- すじ肉先輩さー、「ウドの大木」みたいな言葉を得意げに書いてる時点で、あんたは性格悪いし、このサイトでの不適切編集者である証拠なんだよね。-->
===画面描き換えと背景===
ファミコンのマリオの横スクロールでは、例えば地上ステージの空は、青一色で描き換えを行わない。低地の地面の障害物周辺だけを動かしていたようですね。動かす部分はプログラムでの描き換えが必要だし、動かない部分は背景として、描き換える必要がない。
書き換える必要のない背景表示は当然プログラムの負荷も少ないですよね。
ですから昔のレトロゲームの雰囲気や映像、仕様は、当時の技術の制限、影響を受けた上でその形態になっていたという事で、今は技術が発達したので、様々な斬新な映像表現や、演出を駆使できる。
一方で最新の技術を駆使したうえで、過去のレトロな雰囲気を再現、表現するという道もあるでしょうね。
===アナログテレビのドットのにじみ===
昔のブラウン管テレビのドットは、にじみが大きいとみていいようですね。これは画面の性質なので、ゲームでも映画でもバラエティでもドキュメンタリーでも、解像度画面としてのにじみは同じように大きい。
だから、ファミコンからプレイステーション1時代ぐらいまで、ゲームのグラフィッカーは、そういうにじみの大きい映像を意識して、ドット絵を描いていたでしょうね。
今の液晶画面が完全ににじみがないかどうかは怪しいですが、ブラウン管よりは少ない。
ただ滲みが大きいから、解像度が低くても何となく、自然に見えるという事はあったでしょう。
色に関してもにじみの重なりで、何となく豊かな色に見える。
前編集者は、同じドットの黄色の単色でも、そのドットの幅が1ドットか2ドットかで、テレビ上で表示される色が違う、実際にブラウン管のディスプレイ上で色が違うと書いていますが、どうでしょうね、要するに電子線が蛍光物質を刺激する量が割とあいまいですからね、そういう事を言いたいのか。
まあとにかく、昔のゲームはそういうあいまいでアナログな技術で、一種独特の画面を作り出していたわけですね。
ですからプログラムとしては当時の仕様をそのまま再現したとしても、今現在の機材では、昔のゲームの独特の雰囲気そのものまで再現するのは難しいですよね。
パソコン市場では、1999年ごろからノートパソコンが普及し、液晶ディスプレイも安価で出回ってきた。そこでにじみの少ないくっきりした映像が主流になってきますね。
基本的にディスプレイはブラウン管→液晶と変わり、解像度は大きくなる一方ですね。
プレイステーション2あたりからはもはやブラウン管でのプレイ自体考えなくなる。
この辺から家庭用ディプレイの切り替えが起こっていましたよね。
アナログ放送は2010年ぐらいまで続いたでしょうか。しかし家庭ではゲームをするにしても、普通に放送を見るにしても、DVDを見るにしても、ブラウン管から液晶や、プラズマというのもありましたよね、画面の解像度自体も高くなっていく。
そして画像のドットはにじみの少ないくっきりしたものへ、ゲームの映像の考え方自体変わっていきますよね。
最近はパソコン画面でも、TVでもドットの縦横は等しい正方形ですが、ブラウン管はそうではなかった。
だから、当時はドットで絵を描く時も、長方形ドットですね。
しかも、ゲーム機やパソコンの種類、さらにはアーケードゲームの基盤といったハードウェアの種類ごとに、コンピュータ側でのドットの縦横比の管理は違っている(らしい)。このため、移植のたびに、ドットは書き直しになったようだ。
昔は、というか実はいまでも、CGや画像の縦横比が正確ではない映像を見る事はありますよね。
現在のパソコン用のドットエディタ(という画像制作ツールがある)は1ドットが正方形だが、ファミコン時代は1ドットが(ドット用紙の時点で)少しだけ長方形。(なお、画像制作ツールの作り方については、『[[ゲームプログラミング/画像ファイルの作成プログラム]]』というコンテンツがこのサイトにある。)
ファミコンの色数制限は52色から4色×4パレット(1パレットあたり4色)を使えると言われている<ref>[https://mynavi-creator.jp/blog/article/history-of-2dcg-designer] 2021年12月30日に確認.</ref>。しかし実際には、4色のうち1色は透明色として利用される色であり、全パレット共通の色になる(だから3×4=12色が使える)。
スプライトのパレットとは別に背景のパレットがあるので実際にはもっと多くの色数が一画面内で使えるが、しかしその他さまざまな制限があるので、合計で一画面内で25色が使えると言われる(12+13=25)。
論理的には25色だが、ブラウン管のドットの滲みやテレビのアナログな仕様から、結局はなかなか豊かな映像が当時も見れたと言っていいのではないだろうか。
しかしレトロなゲーム機では、さらにメモリ容量やストレージ容量などの制限もあり、けっして仕様上の最大色数を気軽に利用できたわけではないかもしれない。こういう制限もあったからか、ネットではファミコンの色数が「4色」や「8色」、スーパーファミコンの色数が「16色」や「256色」、とも言われることがある。
{{コラム|ドット絵|
ファミコンのギザギザのキャラクターの絵は、良く、ドット絵と言われますよね。
ただ、プレーステーション以降、ゲーム機が進化しても、コンピュータの画像は、ドットのラスターグラフィックだから、ドット単位で絵を描くことは多い。
特に小さい絵、キャラクターやアイコンはドット単位でデザインします。
しかし言葉の使い方では、ドット絵と言えば昔の、ファミコンキャラクター風のギザギザの解像度の低い絵を指すことが多いでしょう。
現在のドットエディタで絵を描く場合でも、解像度の低い絵が多いですね。ラスターグラフィックも結局ドット単位で解像度が高いだけですが、解像度が高い、アンチエイリアスを駆使した絵は、もはや、ドットというよりはアナログの手描きの絵と言いたくなる。
前編集者はこのドット絵という言葉にこだわって、なんかグダグダ理屈書いていたけど、現編集者にとって何がしたいのか、何を言いたいのかただただ謎ですね。
とにかくドット絵にレトロな意味を持たせても全然問題ないと思うけど…。
子供時代の思い出は大事だぜ^^。
1990年代後半に、岡田斗司夫氏の対談でこういうものがあったそうです。出典はおそらく『マジメな話』。
「アニメの黄金期っていつだろう?」
「70年代かな~。」
「いや、80年代だろう。」
「そうかな~。」
「むしろ…」
「むしろ?」
「…12歳だね^^」
12歳万歳!(^^)/
}}
=== アナログテレビの焼きつきなど ===
あまりゲーム評論では指摘されないのですが、
このほか、ファミコン時代はテレビ受像機がアナログのブラウン管ディスプレイなので、
あまり長時間、同じ色をディスプレイ上の同じ位置に表示し付けていると焼きつきが起きる可能性があるので、
ステージごとにコンセプトになる背景色を変えたり、
あるいはステージの背景色を黒にしたステージを増やしたりとかの工夫も、必要だったかもしれません。
ゲームではないですがパソコンソフトなどの古いソフトは、こういったディスプレイの焼きつきの事を考えており、だからスクリーンセーバー機能の搭載など何らかの対策をしています。
ともかく、あまり、特定の色ばかり続けて使いすぎないようにする工夫が必要だったでしょう。
アナログテレビは西暦2010年のアナログ停波する時代まで使われていたので、焼きつき問題はファミコン以降のプレステ1~2時代のゲームにも関係するでしょう。
ネット上にはデマで「ブラウン管だと焼きつきが起きない」(×)というデマがあるが、しかし西暦2001年くらいの筐体パソコンのモニターはまだブラウン管が多かったし、その時代からすでに焼きつき防止のためにスクリーンセーバーがWindowsに搭載されていた。だからデマ「ブラウン管だと焼きつきが起きない」(×)にダマされないように。
なお、現代のテレビ受像機には、焼きつき防止のためにすでに「ピクセルシフト」という機能があって、
これは画面上の映像の表示位置をタイミングによって微妙にズラす機能です。こういう機能がすでに搭載されているので、わざわざゲームソフト側で実装する必要はない。そもそも液晶モニターは、焼きつきが起きにくい。ただし有機ELはどうだか、まだ新しい技術なので分からない。
== 脚注 ==
<references />
== 関連項目 ==
* [[ゲームプログラミング/コンピュータゲームの種類]]
* [[XNAを使用したシンプルな3Dゲームの作成]]
* [[プログラミング]]
* [[w:ゲームプログミング]]
{{DEFAULTSORT:けえむふろくらみんく}}
[[Category:ゲーム]]
[[Category:情報技術]]
{{NDC|007.64}}
5w3wj6gv6y7j9dhrfnaof2chhbd3q3l
ガリア戦記 第3巻
0
6151
205955
205438
2022-07-28T15:28:30Z
Linguae
449
/* 14節 */
wikitext
text/x-wiki
[[Category:ガリア戦記|3]]
[[ガリア戦記]]> '''第3巻''' >[[ガリア戦記 第3巻/注解|注解]]
<div style="text-align:center">
<span style="font-size:20px; font-weight:bold; font-variant-caps: petite-caps; color:white; background: rgb(47,94,255);background: linear-gradient(180deg, rgba(47,94,255,1) 0%, rgba(24,56,255,1) 50%, rgba(0,8,255,1) 100%);"> C IVLII CAESARIS COMMENTARIORVM BELLI GALLICI </span>
<span style="font-size:40px; font-weight:bold; color:white; background: rgb(47,94,255);background: linear-gradient(180deg, rgba(47,94,255,1) 0%, rgba(24,56,255,1) 50%, rgba(0,8,255,1) 100%);"> LIBER TERTIVS </span>
</div>
[[画像:Gaule -56.png|thumb|right|150px|ガリア戦記 第3巻の情勢図(BC56年)。<br>黄色の領域がローマ領。桃色が同盟部族領。]]
{| id="toc" style="align:left;clear:all;" align="left" cellpadding="5"
! style="background:#ccccff; text-align:left;" colspan="2" | ガリア戦記 第3巻 目次
|-
| style="text-align:right; font-size: 0.86em;"|
'''[[#アルプス・オクトードゥールスの戦い|アルプス・オクトードゥールスの戦い]]''':<br />
'''[[#大西洋岸ウェネティー族の造反|大西洋岸ウェネティー族の造反]]''':<br />
<br />
'''[[#大西洋岸ウネッリ族の造反|大西洋岸ウネッリ族の造反]]''':<br />
'''[[#クラッススのアクィタニア遠征|クラッススのアクィタニア遠征]]''':<br />
<br />
'''[[#モリニ族・メナピイ族への遠征|モリニ族・メナピイ族への遠征]]''':<br />
| style="text-align:left; font-size: 0.86em;"|
[[#1節|01節]] |
[[#2節|02節]] |
[[#3節|03節]] |
[[#4節|04節]] |
[[#5節|05節]] |
[[#6節|06節]] <br />
[[#7節|07節]] |
[[#8節|08節]] |
[[#9節|09節]] |
[[#10節|10節]] <br />
[[#11節|11節]] |
[[#12節|12節]] |
[[#13節|13節]] |
[[#14節|14節]] |
[[#15節|15節]] |
[[#16節|16節]] <br />
[[#17節|17節]] |
[[#18節|18節]] |
[[#19節|19節]] <br />
[[#20節|20節]] <br />
[[#21節|21節]] |
[[#22節|22節]] |
[[#23節|23節]] |
[[#24節|24節]] |
[[#25節|25節]] |
[[#26節|26節]] |
[[#27節|27節]] <br />
[[#28節|28節]] |
[[#29節|29節]]
|}
<br style="clear:both;" />
__notoc__
==<span style="color:#009900;">はじめに</span>==
:<div style="color:#009900;width:85%;">前巻([[ガリア戦記 第2巻|ガリア戦記 第2巻]])の終わりで述べられたように、カエサルによってガッリアはほぼ平定されたと思われて、首都ローマで感謝祭が催されたほどであった。このため、本巻(第3巻)ではカエサル自身の遠征として記す内容はとても少ない。<br><br>本巻の[[#1節]]~[[#6節]]で言及される[[#アルプス・オクトードゥールスの戦い]]は、[[w:紀元前57年|BC57年]]秋頃に起こったと考えられるので、本来なら第2巻に含められるべきであるが、そうなると第3巻が20節ほどの非常に短い巻になってしまうので、第3巻の冒頭に置いたとも考えられる。<br><br>本巻(第3巻)の年([[w:紀元前56年|BC56年]])の春には、ガッリア遠征の遂行上きわめて重要な'''ルカ会談'''があったので、以下に補足する。</div>
<div style="background-color:#eee;width:75%;">
===コラム「ルカ会談」===
:::<span style="font-family:Times New Roman;font-size:13pt;">''[[w:en:Luca Conference|Luca Conference]]''</span>(英語記事)などを参照。
:<span style="color:#009900;">伝記作家[[ガリア戦記/注解編#プルータルコス『対比列伝』|プルータルコス]]によれば<ref>[[ガリア戦記/注解編#プルータルコス『対比列伝』|プルータルコス『対比列伝』]]の「カエサル」20,21</ref>、カエサルはベルガエ人との戦いを成し遂げると、前年に続いて'''パドゥス川'''〔[[w:la:Padus|Padus]] [[w:ポー川|ポー川]]〕流域で越冬しながら、ローマ政界への政治工作を続けた。例えば、カエサルを後援者とする選挙の立候補者たちが有権者を買収するための金銭をばらまいていた。ガッリア人捕虜を奴隷商人に売り払って得た莫大な金銭で。その結果、カエサルの金銭で当選した者たちの尽力で、属州総督カエサルへの新たな資金の支給が可決されるという具合であった。<br><br>そのうち、多くの名門貴族たちがカエサルに面会するために[[w:ルッカ|ルカ]]([[w:la:Luca|Luca]])の街へやって来た。<br>こうした中、[[w:紀元前56年|BC56年]]の4月に、カエサルと非公式の盟約([[w:三頭政治#第一回三頭政治|三頭政治]])を結んでいた[[w:マルクス・リキニウス・クラッスス|クラッスス]]と[[w:グナエウス・ポンペイウス|ポンペイウス]]もルカを訪れて、三者による会談が行われた。<br><br>首都ローマでは、三頭政治を後ろ盾とする[[w:ポプラレス|平民派]]の[[w:プブリウス・クロディウス・プルケル|クロディウス]](<span style="font-family:Times New Roman;">[[w:la:Publius Clodius Pulcher|Publius Clodius Pulcher]]</span>)が民衆に暴動をけしかけ、[[w:オプティマテス|門閥派]]のミロ(<span style="font-family:Times New Roman;">[[w:la:Titus Annius Milo|Titus Annius Milo]]</span>)と激しく抗争するなど、騒然としていた。このクロディウスの暴力的な手法は、クラッススとポンペイウスの関係を傷つけた。また、カエサルのガッリアでの輝かしい勝利に、二人とも不満を感じていた。このように三頭政治は綻び出していたのだ。<br><br>三人は三頭政治を延長することで合意した。カエサルは、クラッススとポンペイウスが翌年([[w:紀元前55年|BC55年]])の執政官に立候補すること、3属州の総督であるカエサルの任期がさらに5年間延長されること、などを求めた。<br><br>会談の結果、任期が大幅に延長されたカエサルの野望は、ガッリアに止まらず、[[w:ゲルマニア|ゲルマーニア]]や[[w:ブリタンニア|ブリタンニア]]の征服へと向かっていく。一方、再び執政官になった二人は、[[w:パルティア|パルティア]]を攻略するためにクラッススがシリア総督になることを決めるが、これはクラッススの命運とともに三頭政治の瓦解、カエサルとポンペイウスの関係悪化を招来することになる。
</span>
<div style="text-align:center">
{|
|-
|[[画像:First Triumvirate of Caesar, Crassius and Pompey.jpg|thumb|right|500px|後に[[w:三頭政治#第一回三頭政治|三頭政治]](<span style="font-family:Times New Roman;">[[w:la:Triumviratus|Triumviratus]]</span>)と呼ばれることになる非公式な盟約を結んでいた、左から[[w:ガイウス・ユリウス・カエサル|カエサル]]、[[w:マルクス・リキニウス・クラッスス|クラッスス]]、[[w:グナエウス・ポンペイウス|ポンペイウス]]。<br>3人は、第3巻の戦いが始まる前に、ルカ会談で三頭政治の延長を決めた。]]
|}
</div>
</div>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
==アルプス・オクトードゥールスの戦い==
:<span style="font-family:Times New Roman;font-size:13pt;">''[[w:en:Battle of Octodurus|Battle of Octodurus]]''</span>(英語記事)<span style="font-family:Times New Roman;font-size:13pt;">''[[w:fr:Bataille d'Octodure|Bataille d'Octodure]]''</span>(仏語記事)などを参照。
===1節===
[[画像:Historische Karte CH Rome 1.png|thumb|right|300px|現在の[[w:スイス|スイス]]の帝制ローマ時代の地図。左下の三日月形の[[w:レマン湖|レマン湖]]の下方に、<span style="font-family:Times New Roman;">ALLOBROGES, NANTUATES, VERAGRI, SEDUNI</span> の部族名が見える。]]
[[画像:Afdaling vd San Bernardino - panoramio.jpg|thumb|right|300px|現在の[[w:グラン・サン・ベルナール峠|グラン・サン・ベルナール峠]]。ラテン語では <span style="font-family:Times New Roman;">[[w:la:Porta Magni Sancti Bernardi|Porta Magni Sancti Bernardi]] という。<br>スイスを縦断する[[w:欧州自動車道路|欧州自動車道路]] [[w:en:European route E27|E27]] が[[w:レマン湖|レマン湖]]からこの峠を通ってイタリアの[[w:アオスタ|アオスタ]]へ至る。</span>]]
*<span style="background-color:#ffd;">[[/注解/1節]] {{進捗|00%|2022-04-23}}</span>
'''ガルバとローマ第12軍団が、ロダヌス川渓谷のオクトードゥールスにて冬営する'''
<br>
; カエサルが、ガルバと軍団・騎兵をアルプス地方へ派兵
*Cum in Italiam proficisceretur Caesar,
**カエサルは、イタリア〔[[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]〕に出発していたときに、
*[[wikt:en:Servium|Servium]] Galbam cum [[w:en:Legio XII Fulminata|legione duodecima(XII.)]] et parte equitatus
**[[w:セルウィウス・スルピキウス・ガルバ (紀元前54年法務官)|セルウィウス・ガルバ]]を第12軍団および騎兵隊の一部とともに、
*in [[wikt:fr:Nantuates#Latin|Nantuates]], [[wikt:en:Veragri#Latin|Veragros]] Sedunosque misit,
**ナントゥアーテース族・ウェラーグリー族・セドゥーニー族(の領土)に派遣した。
*qui a finibus [[wikt:en:Allobroges#Latin|Allobrogum]] et lacu [[wikt:fr:Lemannus|Lemanno]] et flumine [[wikt:en:Rhodanus#Latin|Rhodano]] ad summas [[wikt:en:Alpes#Latin|Alpes]] pertinent.
**彼らはアッロブロゲース族の領土、レマンヌス湖〔[[w:レマン湖|レマン湖]]〕およびロダヌス川〔[[w:ローヌ川|ローヌ川]]〕から[[w:アルプス山脈|アルプス]]の頂きに及んでいる。
*Causa mittendi fuit,
**派遣の理由は(以下のこと)であった:
*quod iter per Alpes,
**アルプスを通る道は、
*quo magno cum periculo magnisque cum [[wikt:en:portorium|portoriis]] mercatores ire consuerant,
**大きな危険と多額の関税を伴って商人たちが旅することが常であったので、
*patefieri volebat.
**(カエサルは道が)開かれることを望んでいたのだ。
**:<span style="color:#009900;">(訳注:現在の[[w:グラン・サン・ベルナール峠|グラン・サン・ベルナール峠]]を通ってスイスとイタリアを結ぶ道のことで、<br> 帝制初期に[[w:アウグストゥス|アウグストゥス]]によって街道が敷設された。<br> かつて[[w:ハンニバル|ハンニバル]]が越えたのは諸説あるが、この道であった可能性もある。<br> ローマ人がこの地に移入・育成した軍用犬は現在の[[w:セント・バーナード|セント・バーナード犬]]。)</span>
*Huic permisit, si opus esse arbitraretur, uti in his locis legionem hiemandi causa conlocaret.
**彼〔ガルバ〕に、もし必要と思われるならば、この地に軍団を[[w:冬営|冬営]]するために宿営させることを許可した。
[[画像:Servius Sulpicius Galba.jpg|thumb|right|300px|[[w:セルウィウス・スルピキウス・ガルバ (紀元前54年法務官)|セルウィウス・スルピキウス・ガルバ]]の横顔が刻まれた貨幣。ガルバは[[w:紀元前54年|BC54年]]([[ガリア戦記 第5巻|ガリア戦記 第5巻]]の年)に[[w:プラエトル|法務官]]に任官。内戦期もカエサルに従うが、暗殺計画に参画する。<br>[[w:ネロ|ネロ帝]]とともにユリウス家の王朝が途絶えると、ガルバの曽孫が[[w:ローマ内戦_(68年-70年)#四皇帝|四皇帝]]の一人目の[[w:ガルバ|ガルバ帝]]となった。このため[[w:ガイウス・スエトニウス・トランクィッルス|スエートーニウス]]『ローマ皇帝伝』の「ガルバ伝」にガルバへの言及がある<ref>[[s:la:De_vita_Caesarum_libri_VIII/Vita_Galbae#III.]]</ref>。]]
<br>
; ガルバが、諸部族を攻略して、軍団の冬営を決める
*Galba, secundis aliquot proeliis factis
**ガルバは、いくつかの優勢な戦いをして、
*castellisque compluribus eorum expugnatis,
**彼ら〔ガッリア諸部族〕の多くの砦が攻略されると、
*missis ad eum undique legatis
**彼〔ガルバ〕のもとへ四方八方から(諸部族の)使節たちが遣わされ、
*obsidibusque datis et pace facta,
**人質が供出されて、講和がなされたので、
*constituit
**(ガルバは、以下のことを)決めた。
*cohortes duas in Nantuatibus conlocare
**2個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>をナントゥアーテース族(の領土)に宿営させること、
*et ipse cum reliquis eius legionis cohortibus
**(ガルバ)自身はその軍団の残りの<ruby><rb>歩兵大隊</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>とともに、
*in vico Veragrorum, qui appellatur [[wikt:en:Octodurus|Octodurus]], hiemare;
**オクトードゥールスと呼ばれているウェラーグリー族の村に冬営することを。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:オクトードゥールス([[wikt:en:Octodurus|Octodurus]])は現在の[[w:マルティニー|マルティニー市]]。)</span>
<br>
; ウェラーグリー族のオクトードゥールス村
*qui vicus positus in valle, non magna adiecta planitie,
**その村は、さほど大きくない平地に付随した渓谷の中に位置し、
*altissimis montibus undique continetur.
**とても高い山々で四方八方を囲まれている。
*Cum hic in duas partes flumine divideretur,
**これ〔村〕は川によって二つの部分に分け隔てられているので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:現在の[[w:マルティニー|マルティニー]]の街中を、[[w:ローヌ川|ローヌ川]]の支流であるドランス川(''[[w:en:Drance|Drance]])が貫流している。)</span>
*alteram partem eius vici Gallis [ad hiemandum] concessit,
**その村の一方の部分をガッリア人に [越冬するために] 譲った。
*alteram vacuam ab his relictam cohortibus attribuit.
**もう一方の彼ら〔ガッリア人〕により空にされた方を、残りの<ruby><rb>歩兵大隊</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>に割り当てた。
*Eum locum vallo fossaque munivit.
**その地を堡塁と塹壕で守りを固めた。
<div style="text-align:center">
{|
|-
|[[画像:Martigny_1600.jpg|thumb|right|600px|かつてウェラーグリー族のオクトードゥールス村([[w:la:Octodurus|Octodurus]])があった所は、現在では[[w:スイス|スイス]]の[[w:マルティニー|マルティニー]]([[w:en:Martigny|Martigny]])市となっている。[[w:ローヌ川|ローヌ川]]が屈曲して流れる[[w:谷|渓谷]]地帯にある。]]
|}
</div>
<div style="background-color:#eee;width:77%;">
===コラム「ガルバの派遣とカティリーナ事件」===
:::関連記事:<span style="font-family:Times New Roman;font-size:13pt;">[[w:la:Catilinae coniuratio|Catilinae coniuratio]], ''[[w:en:Second Catilinarian conspiracy|Second Catilinarian conspiracy]]''</span>
:<span style="color:#009900;"> [[w:セルウィウス・スルピキウス・ガルバ (紀元前54年法務官)|セルウィウス・スルピキウス・'''ガルバ''']]にアルプス派兵を指揮させた理由について、カエサルは記していない。<br><br> [[w:紀元前63年|BC63年]]~[[w:紀元前62年|BC62年]]に、ローマの高官だった[[w:ルキウス・セルギウス・カティリナ|ルーキウス・セルギウス・'''カティリーナ''']]([[w:la:Lucius Sergius Catilina|Lucius Sergius Catilina]])がクーデタを企てるという大事件があった。'''[[w:マルクス・トゥッリウス・キケロ|キケロー]]'''が『[[w:カティリナ弾劾演説|カティリナ弾劾演説]]』で糾弾し、カエサルが事件の黒幕ではないかと取り沙汰された(スエートニウス<ref>[[s:la:De_vita_Caesarum_libri_VIII/Vita_divi_Iuli#XIV.]], [[s:la:De_vita_Caesarum_libri_VIII/Vita_divi_Iuli#XVII.|#XVII.]] を参照。</ref>)。<br> BC63年の[[w:プラエトル|法務官]][[w:ガイウス・ポンプティヌス|ガーイウス・'''ポンプティーヌス''']]がキケローを助けて事件を捜査し、アッロブロゲース族からカティリーナへ宛てた手紙を調べた。BC62年にポンプティーヌスは前法務官としてガッリア総督となり、事件に関与していたアッロブロゲース族を平定した。このとき、[[w:トリブヌス|副官]]としてポンプティーヌスを助けてアッロブロゲース族を攻めたのが'''ガルバ'''であった。総督がカエサルに替わっても、ガルバは副官として留任し、アッロブロゲース族の近隣部族の鎮定に努めていたわけである。<br> ポンプティーヌスは、一部の元老院議員の反対で、戦勝将軍の権利である[[w:凱旋式|凱旋式]]ができなかった。これを不満に思っていたガルバは、[[w:紀元前54年|BC54年]]に法務官になると尽力して、その年にポンプティーヌスの凱旋式を行なうことに成功した。
<div style="text-align:center">
{|
|-
|[[画像:Joseph-Marie Vien - The Oath of Catiline.jpg|thumb|right|320px|'''カティリーナの誓い'''(''Le Serment de Catiline'')<br>[[w:ジョゼフ=マリー・ヴィアン|ジョゼフ=マリー・ヴィアン]]画(1809年)。<hr>カティリーナと共謀者たちは、人間の血を混ぜたワインを飲んで誓いを立てる儀式を行なったと伝えられている。]]
|[[画像:The Discovery of the Body of Catiline.jpg|thumb|right|320px|'''カティリーナの遺骸の発見'''<br>(''Il ritrovamento del corpo di Catilina'')<br>''[[w:en:Alcide Segoni|Alcide Segoni]]'' 画(1871年)<hr>アッロブロゲース族のいるガッリアへ向かおうとしていたカティリーナは、[[w:ピストイア|ピストリア]]([[w:la:Pistorium|Pistoria]])の戦い(''[[w:en:Battle of Pistoia|Battle of Pistoia]]'')で戦死した。]]
|}
</div>
</div>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===2節===
*<span style="background-color:#ffd;">[[/注解/2節]] {{進捗|00%|2022-05-05}}</span>
'''ガッリア人が再び挙兵して周囲の高峰を押さえ、第12軍団の冬営地を包囲'''
*Cum dies hibernorum complures transissent frumentumque eo comportari iussisset,
**冬営の多くの日々が過ぎ去って、穀物がそこに運び集められることを([[w:セルウィウス・スルピキウス・ガルバ (紀元前54年法務官)|ガルバ]]が)命じていたときに、
*subito per exploratores certior factus est
**突然に(以下のことが)[[w:偵察|偵察隊]]により報告された。
*ex ea parte vici, quam Gallis concesserat, omnes noctu discessisse
**ガッリア人たちに譲っていた村の一部から、皆が夜に立ち退いており、
*montesque, qui [[wikt:en:impendeo#Latin|impenderent]], a maxima multitudine Sedunorum et [[wikt:en:Veragri|Veragrorum]] teneri.
**そそり立つ山々がセドゥーニー族とウェラーグリー族のかなりの大勢により占拠されたのだ。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ウェラーグリー族は既述のようにオクトードゥールス村 [[w:la:Octodurus|Octodurus]]〔現在の[[w:マルティニー|マルティニー市]]〕を、<br>セドゥーニー族 [[w:la:Seduni|Seduni]] はより上流のセドゥヌム [[w:la:Sedunum|Sedunum]]〔現在の[[w:シオン (スイス)|シオン市]]〕を首邑としていた。)</span>
*Id aliquot de causis acciderat,
**いくつかの理由から、起こっていたことには、
*ut subito Galli belli renovandi legionisque opprimendae consilium caperent:
**突如としてガッリア人が、戦争を再開して(ローマ人の)軍団を急襲する作戦計画を立てたのだ。
<br>
; 第1の理由:ガルバの第12軍団は、兵が割かれていて寡勢である
*primum, quod legionem neque eam plenissimam detractis cohortibus duabus
**というのも、第一に、総員がそろっていない軍団を ──2個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>が引き抜かれていて、
**:<span style="color:#009900;">(訳注:前節で既述のように、2個歩兵大隊をナントゥアーテース族のところに宿営させていたが、これはレマンヌス湖〔[[w:レマン湖|レマン湖]]〕に近いより下流の地域で、離れていたようだ。)</span>
*et compluribus singillatim, qui commeatus petendi causa missi erant, absentibus,
**多くの者たちが一人ずつ、糧食を求めるために派遣されていて不在である、──
*propter paucitatem despiciebant;
**(その第12軍団を)少数であるゆえに、見下していたからだ。
<br>
; 第2の理由:渓谷にいるローマ人は、山から攻め降りて来るガッリア人の飛道具を受け止められまい
*tum etiam, quod propter iniquitatem loci,
**それからさらに(ローマ勢が冬営している渓谷の)地の利の無さゆえ、
*cum ipsi ex montibus in vallem decurrerent et tela conicerent,
**(ガッリア勢)自身が山々から谷間に駆け下りて飛道具を投じたときに、
*ne primum quidem impetum suum posse sustineri existimabant.
**自分たちの最初の襲撃を(ローマ勢が)持ちこたえることができない、と判断していたので。
<br>
; 第3の理由:人質を取られて、属州に併合される前にローマ人を討て
*Accedebat, quod suos ab se liberos abstractos obsidum nomine dolebant,
**加えて、人質の名目で自分たちから引き離されている自分の子供たちのことを嘆き悲しんでいたので、
*et Romanos non solum itinerum causa, sed etiam perpetuae possessionis
**かつ、ローマ人たちは道(の開通)のためだけでなく、永続的な領有のためにさえも
*culmina Alpium occupare <u>conari</u>
**アルプスの頂上を占領すること、
*et ea loca finitimae provinciae adiungere
**および(ローマの)属州に隣接する当地を併合することを<u>企てている</u>、
*sibi persuasum habebant.
**と(ガッリア人たちは)確信していたのである。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===3節===
*<span style="background-color:#ffd;">[[/注解/3節]] {{進捗|00%|2022-05-12}}</span>
'''ガルバが軍議を召集し、策を募る'''
*His nuntiis acceptis Galba,
**ガルバは、これらの報告を受け取ると、
*<u>cum</u> neque opus hibernorum munitionesque plene essent perfectae
**冬営の普請や防塁構築も十分に完成していなかったし、
*neque de frumento reliquoque commeatu satis esset provisum,
**穀物や他の糧秣も十分に調達されていなかった<u>ので</u>、
*quod deditione facta obsidibusque acceptis
**── というのも、降伏がなされて、人質が受け取られ、
*nihil de bello timendum existimaverat,
**戦争について恐れるべきことは何もない、と判断していたためであるが、──
*consilio celeriter convocato sententias exquirere coepit.
**軍議を速やかに召集して、意見を求め始めた。
<br>
;軍議
*Quo in consilio,
**その軍議において、
*<u>cum</u> tantum repentini periculi praeter opinionem accidisset
**これほどの不意の危険が、予想に反して起こっていたので、
*ac iam omnia fere superiora loca multitudine armatorum completa conspicerentur
**かつ、すでにほぼすべてのより高い場所が、武装した大勢の者たちで満たされていることが、見られていたので、
*neque subsidio veniri
**救援のために(援軍が)来られることもなかったし、
*neque commeatus supportari interclusis itineribus possent,
**糧秣が運び込まれることも、道が遮断されているので、できなかった<u>ので</u>、
*prope iam desperata salute non nullae eius modi sententiae dicebantur,
**すでにほぼ身の安全に絶望していた幾人かの者たちの'''以下のような'''意見が述べられていた。
*ut impedimentis relictis eruptione facta
**輜重を残して、出撃して、
*isdem itineribus quibus eo pervenissent ad salutem contenderent.
**そこへやって来たのと同じ道によって、安全なところへ急ぐように、と。
**:<span style="color:#009900;">(訳注:レマンヌス〔[[w:レマン湖|レマン湖]]〕湖畔を通ってアッロブロゲース族領へ撤収することであろう。)</span>
*Maiori tamen parti placuit,
**しかしながら、大部分の者が賛成したのは、
*hoc reservato ad extremum consilio
**この考え(計画)を最後まで保持しておいて、
*interim rei eventum experiri et castra defendere.
**その間に、事の結果を吟味して、陣営を守備すること、であった。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===4節===
*<span style="background-color:#ffd;">[[/注解/4節]] {{進捗|00%|2022-05-16}}</span>
'''ガッリア勢がガルバの陣営を急襲し、寡兵のローマ勢は劣勢に陥る'''
*Brevi spatio interiecto,
**(敵の来襲まで)短い間が介在しただけだったので、
*vix ut iis rebus quas constituissent conlocandis atque administrandis tempus daretur,
**決めておいた物事を配置したり遂行するための時間が、ほとんど与えられないほどであった。
*hostes ex omnibus partibus signo dato decurrere,
**敵方〔ガッリア勢〕があらゆる方向から、号令が出されて、駆け下りて来て、
*lapides [[wikt:en:gaesum|gaesa]]que in vallum conicere.
**石や投槍を堡塁の中に投げ込んだ。
*Nostri primo integris viribus fortiter propugnare
**我が方〔ローマ勢〕は、当初、体力が損なわれていないうちは勇敢に応戦して、
*neque ullum frustra telum ex loco superiore mittere,
**高所から、いかなる飛道具も無駄に投げることはなかった。
*et quaecumque<!--ut quaeque--> pars castrorum nudata defensoribus premi videbatur,
**陣営のどの部分であれ、防戦者たちがはがされて押され気味であることと思われれば、
*eo occurrere et auxilium ferre,
**(ローマ勢が)そこへ駆け付けて、支援した。
<br>
; 兵の多寡が、ローマ勢を追い込む
*sed hoc superari
**しかし、以下のことにより(ローマ勢は)打ち破られた。
*quod diuturnitate pugnae hostes defessi proelio excedebant,
**──戦いが長引いたことにより、疲れ切った敵たちは戦闘から離脱して、
*alii integris viribus succedebant;
**体力が損なわれていない他の者たちが交代していたのだ。──
*quarum rerum a nostris propter paucitatem fieri nihil poterat,
**我が方〔ローマ勢〕は少数であるゆえに、このような事〔兵の交代〕は何らなされ得なかった。
*ac non modo defesso ex pugna excedendi,
**疲弊した者にとっての戦いから離脱することの(機会)のみならず、
*sed ne saucio quidem eius loci ubi constiterat relinquendi ac sui recipiendi facultas dabatur.
**負傷した者にとってさえも、その持ち場を放棄することや(体力を)回復することの機会も与えられなかったのだ。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===5節===
*<span style="background-color:#ffd;">[[/注解/5節]] {{進捗|00%|2022-05-29}}</span>
'''最後の土壇場で説得されたガルバが、疲労回復後の突撃に命運を賭ける'''
*<u>Cum</u> iam amplius horis sex continenter pugnaretur,
**すでに6時間より多く引き続いて戦われており、
**:<span style="color:#009900;">(訳注:[[古代ローマの不定時法]]では、冬の日中の半日ほどである)</span>
*ac non solum vires sed etiam tela nostros deficerent,
**活力だけでなく飛道具さえも我が方〔ローマ勢〕には不足していたし、
*atque hostes acrius instarent
**敵方〔ガッリア勢〕はより激しく攻め立てていて、
*languidioribusque nostris
**我が方〔ローマ勢〕が弱り切っており、
*vallum scindere et fossas complere coepissent,
**(ガッリア勢は)防柵を破却したり、塹壕を埋め立てたりし始めていたし、
*resque esset iam ad extremum perducta casum,
**戦況はすでに最後の土壇場に陥っていた<u>ので</u>、
<br>
; 二人の軍団首脳バクルスとウォルセーヌスが、ガルバに敵中突破を説く
*[[wikt:en:P.|P.]] Sextius Baculus, primi pili centurio,
**<ruby><rb>[[w:プリムス・ピルス|首位百人隊長]]</rb><rp>(</rp><rt>プリームス・ピールス</rt><rp>)</rp></ruby>プーブリウス・セクスティウス・バクルス
**:<span style="color:#009900;">(訳注:[[w:la:Publius Sextius Baculus|Publius Sextius Baculus]] などの記事を参照。)</span>
*quem Nervico proelio compluribus confectum vulneribus diximus,
**──その者が[[w:ネルウィイ族|ネルウィイー族]]との戦いで多くの負傷で消耗したと前述した──
**:<span style="color:#009900;">(訳注:[[ガリア戦記 第2巻#25節|第2巻25節]]を参照。なお、[[ガリア戦記 第6巻#38節|第6巻38節]] でも言及される。)</span>
*et item [[wikt:en:C.#Latin|C.]] Volusenus, tribunus militum, vir et consilii magni et virtutis,
**および、[[w:トリブヌス・ミリトゥム|軍団次官]]ガーイウス・ウォルセーヌス ──卓越した判断力と武勇を持つ男──(の2人)は、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:en:Gaius Volusenus|Gaius Volusenus]]'' などの記事を参照せよ。)</span>
*ad Galbam accurrunt
**ガルバのもとへ急いで来て、
*atque unam esse spem salutis docent, si eruptione facta extremum auxilium experirentur.
**身の安全のただ一つの希望は、出撃をして最後の救済策を試みるかどうかだ、と説く。
*Itaque convocatis centurionibus
**こうして、<ruby><rb>[[w:ケントゥリオ|百人隊長]]</rb><rp>(</rp><rt>ケントゥリオー</rt><rp>)</rp></ruby>たちが召集されて、
*celeriter milites certiores facit,
**(ガルバが以下のことを)速やかに兵士たちに通達する。
*paulisper intermitterent proelium
**しばらく戦いを中断して
*ac tantummodo tela missa exciperent seque ex labore reficerent,
**ただ投げられた飛道具を遮るだけとし、疲労から(体力を)回復するようにと、
*post dato signo ex castris erumperent,
**与えられた号令の後に陣営から出撃するように、
*atque omnem spem salutis in virtute ponerent.
**身の安全のすべての希望を武勇に賭けるように、と。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===6節===
*<span style="background-color:#ffd;">[[/注解/6節]] {{進捗|00%|2022-06-05}}</span>
'''第12軍団がガッリア勢を破るが、ガルバはオクトードゥールスでの冬営を断念する'''
*Quod iussi sunt faciunt,
**(ローマ兵たちは)命じられたことをなして、
*ac subito omnibus portis eruptione facta
**突然に(陣営の)すべての門から出撃がなされ、
*neque cognoscendi quid fieret
**何が生じたのかを知ることの(機会)も
*neque sui colligendi hostibus facultatem relinquunt.
**(自軍の兵力を)集中することの機会も、敵方に残さない。
*Ita commutata fortuna
**こうして武運が変転して、
*eos qui in spem potiundorum castrorum venerant undique circumventos intercipiunt,
**(ローマ人の)陣営を占領することを期待してやって来ていた者たちを、至る所で包囲して<ruby><rb>屠</rb><rp>(</rp><rt>ほふ</rt><rp>)</rp></ruby>る。
*et ex hominum milibus amplius XXX{triginta},
**3万より多い人間が
*quem numerum barbarorum ad castra venisse constabat,
**それだけの数の蛮族が(ローマ)陣営のところへ来ていたのは、確実であったが、
*plus tertia parte interfecta
**3分の1より多く(の者)が<ruby><rb>殺戮</rb><rp>(</rp><rt>さつりく</rt><rp>)</rp></ruby>されて、
*reliquos perterritos in fugam coiciunt
**(ローマ勢は)残りの者たちを怖気づかせて敗走に追いやり、
*ac ne in locis quidem superioribus consistere patiuntur.
**(ガッリア勢は)より高い場所にさえ留まることさえ許されない。
*Sic omnibus hostium copiis fusis armisque exutis
**そのように敵方の全軍勢が撃破されて、武器が放棄されて、
*se intra munitiones suas recipiunt.
**(ローマ勢は)自分たちの防塁の内側に撤収する。
<br>
; ガルバがオクトードゥールスでの冬営を断念して、同盟部族領に撤退する
*Quo proelio facto,
**この戦いが果たされると、
*quod saepius fortunam temptare Galba nolebat
**──ガルバは、よりたびたび武運を試すことを欲していなかったし、
*atque alio se in hiberna consilio venisse meminerat,
**冬営に他の計画のために来ていたことを思い出していたが、
*aliis occurrisse rebus videbat,
**別の事態に遭遇したのを見ていたので、──
*maxime frumenti commeatusque inopia permotus
**とりわけ穀物や糧秣の欠乏に揺り動かされて、
*postero die omnibus eius vici aedificiis incensis
**翌日にその村のすべての建物が焼き討ちされて、
*in provinciam reverti contendit,
**(ガルバは)属州〔[[w:ガリア・キサルピナ|ガッリア・キサルピーナ]]〕に引き返すことを急ぐ。
*ac nullo hoste prohibente aut iter demorante
**いかなる敵によって妨げられることも、あるいは行軍が遅滞させられることもなく、
*incolumem legionem in Nantuates,
**軍団を無傷なままでナントゥアーテース族(の領土)に(連れて行き)、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:ナントゥアーテース族 ''[[w:en:Nantuates|Nantuates]]'' は、レマンヌス湖〔[[w:レマン湖|レマン湖]]〕の南東を領有していた部族。<br> [[#1節]]で、軍団のうち2個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>を宿営させたことが述べられた。)</span>
*inde in Allobroges perduxit ibique hiemavit.
**そこから、アッロブロゲース族(の領土)に連れて行き、そこで冬営した。
<div style="text-align:center">
{|
|-
|[[画像:Amphitheaterforumclaudiival1.jpg|thumb|right|500px|オクトードゥールス(<span style="font-family:Times New Roman;">[[w:la:Octodurus|Octodurus]]</span>)、すなわち現在の[[w:マルティニー|マルティニー市]]に遺る帝制ローマ時代の円形競技場。オクトードゥールスは、<span style="font-family:Times New Roman;">Forum Claudii Vallensium</span> と改称され、[[w: クラウディウス|クラウディウス帝]]によって円形競技場が建てられた。<br>(<span style="font-family:Times New Roman;">''[[w:fr:Amphithéâtre de Martigny|Amphithéâtre de Martigny]]''</span> 等の記事を参照。)]]
|}
</div>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
==大西洋岸ウェネティー族の造反==
:::<span style="background-color:#ffd;">関連記事:[[w:モルビアン湾の海戦|モルビアン湾の海戦]]、''[[w:fr:Guerre des Vénètes|fr:Guerre des Vénètes]]'' 等を参照せよ。</span>
===7節===
*<span style="background-color:#ffd;">[[/注解/7節]] {{進捗|00%|2022-06-12}}</span>
'''新たな戦争の勃発'''
*His rebus gestis
**これらの戦役が遂げられて、
*cum omnibus de causis Caesar pacatam Galliam existimaret,
**カエサルが、あらゆる状況についてガッリアは平定された、と判断していたときに、
*superatis Belgis,
**(すなわち)[[w:ベルガエ|ベルガエ人]]は征服され、
**:<span style="color:#009900;">(訳注:第2巻で述べられたこと)</span>
*expulsis Germanis,
**[[w:ゲルマニア|ゲルマーニア]]人は駆逐され、
**:<span style="color:#009900;">(訳注:第1巻で述べられた[[w:アリオウィストゥス|アリオウィストゥス]]との戦役のこと)</span>
*victis in [[wikt:en:Alpibus|Alpibus]] Sedunis,
**アルペース〔[[w:アルプス山脈|アルプス]]〕においてセドゥーニー族は打ち負かされて、
**:<span style="color:#009900;">(訳注:[[#1節]]~[[#6節]]で述べられたこと)</span>
*atque ita inita hieme in [[wikt:en:Illyricum#Latin|Illyricum]] profectus esset,
**こうして冬の初めに(カエサルが)[[w:イリュリクム|イッリュリクム]]に出発していたときに、
*quod eas quoque nationes adire et regiones cognoscere volebat,
**──というのは、これら各部族を訪れて諸地方を知ることを欲していたからであるが、──
**:<span style="color:#009900;">(訳注:属州総督の職務として、巡回裁判を行う必要があったためであろう)</span>
*subitum bellum in Gallia coortum est.
**突然の戦争がガッリアで勃発したのである。
<br>
; 戦争の背景
*Eius belli haec fuit causa:
**その戦争の原因は、以下の通りであった。
*[[wikt:en:P.|P.]] Crassus adulescens cum legione septima(VII.)
**[[w:プブリウス・リキニウス・クラッスス|プーブリウス・クラッスス青年]]は、第7軍団とともに
**:<span style="color:#009900;">(訳注:三頭政治家[[w:マルクス・リキニウス・クラッスス|M. クラッスス]]の息子で、第1巻[[s:la:Commentarii_de_bello_Gallico/Liber_I#52|52節]]では騎兵隊の指揮官だった。<br> [[ガリア戦記_第2巻#34節|第2巻34節]]では、1個軍団とともに大西洋沿岸地方に派遣されたと述べられた。)</span>
*proximus mare Oceanum in Andibus hiemarat.
**<ruby><rb>大洋〔[[w:大西洋|大西洋]]〕</rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>に最も近いアンデース族(の領土)で冬営していた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:アンデース族 Andes は、'''アンデカーウィー族''' [[w:la:Andecavi|Andecavi]], ''[[wikt:en:Andecavi|Andecavi]]'' と呼ばれることが多い。<br> 実際には大西洋岸から内陸側に寄っていたと考えられている。)</span>
*Is, quod in his locis inopia frumenti erat,
**彼〔クラッスス〕は、これらの場所においては穀物の欠乏があったので、
*praefectos tribunosque militum complures in finitimas civitates
**([[w:アウクシリア|支援軍]]の)<ruby><rb>[[w:プラエフェクトゥス|指揮官]]</rb><rp>(</rp><rt>プラエフェクトゥス</rt><rp>)</rp></ruby>たちや[[w:トリブヌス・ミリトゥム|軍団次官]]たちのかなりの数を、近隣諸部族のところへ
*frumenti (commeatusque petendi) causa dimisit;
**穀物や糧食を求めるために送り出した。
*quo in numero est [[wikt:en:T.#Latin|T.]] Terrasidius missus in Esuvios<!--/ Unellos Essuviosque-->,
**その人員のうち、ティトゥス・テッラシディウスは、エスウィイー族<!--ウネッリー族やエスウィイ族-->のところに遣わされ、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:テッラシディウスは騎士階級の将校。''[[w:en:Terrasidius|Terrasidius]]'' 参照。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:エスウィイー族 ''[[w:en:Esuvii|Esuvii]]'' は、現在の[[w:オルヌ川|オルヌ川]]盆地の[[w:オルヌ県|オルヌ県]][[w:セー (オルヌ県)|セー]]~[[w:fr:Exmes|エム]]の辺りにいたらしい。)</span>
*[[wikt:en:M.#Latin|M.]] [[wikt:en:Trebius#Latin|Trebius]] Gallus in Coriosolităs,
**マールクス・トレビウス・ガッルスは、コリオソリテース族のところに(遣わされ)、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:it:Marco Trebio Gallo|it:Marco Trebio Gallo]]'' 等参照)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:コリオソリテース族 ''[[w:en:Coriosolites|Coriosolites]]'' は、クーリオソリーテース ''[[wikt:en:Curiosolites|Curiosolites]]'' などとも呼ばれ、<br> 現在の[[w:コート=ダルモール県|コート=ダルモール県]]コルスール([[w:en:Corseul|Corseul]])の辺りにいたらしい。)</span>
*[[wikt:en:Q.|Q.]] [[wikt:en:Velanius#Latin|Velanius]] cum T. Sillio in Venetos.
**クゥイーントゥス・ウェラーニウスはティトゥス・シーッリウスとともに、[[w:ウェネティ族 (ガリア)|ウェネティー族]]のところに(遣わされた)。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:it:Quinto Velanio|it:Quinto Velanio]], [[w:it:Tito Silio|it:Tito Silio]]'' 等参照。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:ウェネティ族 (ガリア)|ウェネティー族]] ''[[w:en:Veneti (Gaul)|Veneti (Gaul)]]'' は、[[w:アルモリカ|アルモリカ]]南西部、現在の[[w:モルビアン県|モルビアン県]]辺りにいた。)</span>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===8節===
*<span style="background-color:#ffd;">[[/注解/8節]] {{進捗|00%|2022-06-13}}</span>
'''ウェネティー族らの動き'''
<br>
; 沿海地方を主導するウェネティー族
*Huius est civitatis longe amplissima auctoritas omnis orae maritimae regionum earum,
**この部族〔ウェネティー族〕の<ruby><rb>影響力</rb><rp>(</rp><rt>アウクトーリタース</rt><rp>)</rp></ruby>は、海岸のその全地方の中でずば抜けて大きい。
*quod et naves habent Veneti plurimas,
**── というのは、[[w:ウェネティ族 (ガリア)|ウェネティー族]]は、最も多くの船舶を持っており、
*quibus in Britanniam navigare consuerunt,
**それら〔船団〕によって[[w:ブリタンニア|ブリタンニア]]に航海するのが常であり、
*et scientia atque usu rerum nauticarum ceteros antecedunt
**かつ[[w:海事|海事]]の知識と経験において他の者たち〔諸部族〕をしのいでおり、
*et in magno impetu maris atque aperto <Oceano>
**かつ海のたいへんな荒々しさと開けた<<ruby><rb>大洋〔[[w:大西洋|大西洋]]〕</rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>>において、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:<Oceano> は写本になく、挿入提案された修正読み)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:大陸棚|大陸棚]]が広がる[[w:ビスケー湾|ビスケー湾]]は、世界最大12mの大きな[[w:潮汐|干満差]]と、<br> 北西風による激しい嵐で知られる<ref>[https://kotobank.jp/word/%E3%83%93%E3%82%B9%E3%82%B1%E3%83%BC%E6%B9%BE-119819 ビスケー湾とは - コトバンク]</ref>。)</span>
*paucis portibus interiectis,
**わずかの港が介在していて、
*quos tenent ipsi,
**彼ら自身〔ウェネティー族〕がそれら〔港湾〕を制していて、
*omnes fere qui eo mari uti consuerunt, habent vectigales.
**その海を利用するのが常であった者たち〔部族〕ほぼすべてを、貢税者としていたのだ。──
<br>
; ウェネティー族が、クラッススの使節たちを抑留する
*Ab his fit initium retinendi Sillii atque Velanii,
**彼ら〔ウェネティー族〕によって、シーッリウスとウェラーニウスを拘束することが皮切りとなる。
**:<span style="color:#009900;">(訳注:2人は、前節([[#7節]])でウェネティー族への派遣が述べられた使節)</span>
*<u>et si quos intercipere potuerunt</u>
**何らかの者たちを捕えることができたのではないか、と。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、β系写本だけの記述で、α系写本にはない。)</span>
*quod per eos suos se obsides, quos Crasso dedissent, recuperaturos existimabant.
**というのは、彼らを介して、[[w:プブリウス・リキニウス・クラッスス|クラッスス]]に差し出されていた己の人質たちを取り戻すことができると考えていたのである。
<br>
*Horum auctoritate finitimi adducti,
**彼ら〔ウェネティー族〕の影響力によって、近隣の者たち〔諸部族〕が動かされて、
*ut sunt Gallorum subita et repentina consilia,
**──ガッリア人の判断力というものは、思いがけなく性急なものであるが、──
*eadem de causa Trebium Terrasidiumque retinent
**同じ理由によりトレビウスとテッラシディウスを拘束する。
**:<span style="color:#009900;">(訳注:トレビウスは、前節でコリオソリテース族に派遣された。<br> テッラシディウスは、前節でエスウィイー族に派遣された。)</span>
*et celeriter missis legatis
**そして速やかに使節が遣わされて、
*per suos principes inter se coniurant
**自分らの領袖たちを通して互いに誓約する。
*nihil nisi communi consilio acturos eundemque omnes fortunae exitum esse laturos,
**合同の軍議なしには何も実施しないであろうし、皆が命運の同じ結果に耐えるであろう、と。
*reliquasque civitates sollicitant,
**残りの諸部族を扇動する。
*ut in ea libertate quam a maioribus acceperint, permanere quam Romanorum servitutem perferre malint.
**ローマ人への隷属を辛抱することより、むしろ先祖から引き継いでいた自由に留まることを欲すべし、と。
<br>
*Omni ora maritima celeriter ad suam sententiam perducta
**すべての海岸(の諸部族)が速やかに自分たち〔ウェネティー族〕の見解に引き込まれると、
*communem legationem ad [[wikt:en:Publium|Publium]] Crassum mittunt,
**共同の使節を[[w:プブリウス・リキニウス・クラッスス|プーブリウス・クラッスス]]のもとへ遣わす。
*si velit suos recuperare, obsides sibi remittat.
**もし味方の者たち〔ローマ人〕を取り戻すことを望むならば、自分たち〔諸部族〕の人質たちを返すように、と。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===9節===
*<span style="background-color:#ffd;">[[/注解/9節]] {{進捗|00%|2022-06-19}}</span>
{{Wikipedia|la:Liger| Liger }}
'''カエサル到着、ウェネティー族らの作戦と開戦準備'''
; カエサルが、海戦の準備を手配してから、沿岸地域に急ぐ
*Quibus de rebus Caesar a Crasso certior factus,
**以上の事について、カエサルは[[w:プブリウス・リキニウス・クラッスス|クラッスス]]により報知されると、
*quod ipse aberat longius,
**(カエサル)自身は非常に遠くに離れていたので、
**:<span style="color:#009900;">(訳注:[[#コラム「ルカ会談」|#ルカ会談]]などローマへの政界工作のために属州にいたと考えられている。)</span>
*naves interim longas aedificari in flumine [[wikt:la:Liger#Latine|Ligeri]], quod influit in Oceanum,
**その間に<u>軍船</u>が<ruby><rb>大洋〔[[w:大西洋|大西洋]]〕</rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>に流れ込むリゲル川〔[[w:ロワール川|ロワール川]]〕にて建造されること、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:艦隊 [[w:la:Classis Romana|classis]] の主力として戦う[[w:ガレー船|ガレー船]]は「長船」[[w:la:Navis longa|navis longa]] と呼ばれていた。<br> これに対して、軍需物資を運搬する輸送船は [[w:la:Navis actuaria|navis actuaria]] と呼ばれていた。)</span>
*remiges ex provincia institui,
**<ruby><rb>漕ぎ手</rb><rp>(</rp><rt>レーメクス</rt><rp>)</rp></ruby>が属州〔[[w:ガリア・トランサルピナ|ガッリア・トランサルピーナ]]〕から採用されること、
*nautas gubernatoresque comparari iubet.
**<ruby><rb>[[w:船員|水夫]]</rb><rp>(</rp><rt>ナウタ</rt><rp>)</rp></ruby>や<ruby><rb>操舵手</rb><rp>(</rp><rt>グベルナートル</rt><rp>)</rp></ruby>が徴募されること、を命じる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:船尾の「<ruby><rb>[[w:舵|舵]]</rb><rp>(</rp><rt>かじ</rt><rp>)</rp></ruby>」が発明されたのは[[w:漢|漢代]]の中国であって、古代西洋の船に<ruby><rb>舵</rb><rp>(</rp><rt>かじ</rt><rp>)</rp></ruby>はない。<br> 船の操舵手は「<ruby><rb>舵櫂</rb><rp>(</rp><rt>かじかい</rt><rp>)</rp></ruby>」(''[[w:en:Steering oar|steering oar]]'') という[[w:櫂|櫂]]の一種を用いて操船したらしい。)</span>
<br>
*His rebus celeriter administratis ipse,
**これらの事柄が速やかに処理されると、(カエサル)自身は
*cum primum per anni tempus potuit, ad exercitum contendit.
**年のできるだけ早い時季に、軍隊のもとへ急いだ。
<br>
; ウェネティー族らが、使節団拘留の重大さを勘案して、海戦の準備を進める
*Veneti reliquaeque item civitates cognito Caesaris adventu
**[[w:ウェネティ族 (ガリア)|ウェネティー族]]と残りの部族もまた、カエサルの到着を知り、
*<span style="color:#009900;"><</span>et de recipiendis obsidibus spem se fefellise<span style="color:#009900;">></span> certiores facti,
**<span style="color:#009900;"><</span>かつ人質を取り戻すという希望に惑わされたことを<span style="color:#009900;">></span> 知らされて、
*simul quod quantum in se facinus admisissent intellegebant,
**同時に、どれほど大それた行為を自分たちが侵していたかを判断していたので、
*<span style="color:#009900;">[</span>legatos, quod nomen ad omnes nationes sanctum inviolatumque semper fuisset,
**──(すなわち)あらゆる種族のもとでその名が神聖かつ不可侵の、使節たちが
*retentos ab se et in vincula coniectos,<span style="color:#009900;">]</span>
**自分たちによって拘束され、鎖につながれていたわけだが、──
*pro magnitudine periculi bellum parare
**危機の重大さに見合う戦争を準備すること、
*et maxime ea quae ad usum navium pertinent providere instituunt,
**とりわけ船団を運用するために役立つところのものを調達すること、を着手する。
*hoc maiore spe quod multum natura loci confidebant.
**地勢を大いに信じていた点に大きな期待をして。
<br>
*Pedestria esse itinera concisa aestuariis,
**(ローマ勢の)歩兵の行軍路は入江で遮断されるし、
*navigationem impeditam propter inscientiam locorum paucitatemque portuum sciebant,
**土地の不案内と港の少なさのゆえに航行が妨げられることを(ウェネティー族らは)知っていた。
*neque nostros exercitus propter inopiam frumenti diutius apud se morari posse confidebant;
**穀物の欠乏のゆえに、我が軍〔ローマ軍〕がより長く彼らのもとに留まることができないと(ウェネティー族らは)信じ切っていた。
<br>
*ac iam ut omnia contra opinionem acciderent,
**やがて、すべてのことが予想に反して生じたとしても、
*tamen se plurimum navibus posse, quam Romanos neque ullam facultatem habere navium,
**けれども自分たち〔ウェネティー族ら〕は艦船において、艦船の備えを何ら持たないローマ人よりも大いに優勢であり、
*neque eorum locorum, ubi bellum gesturi essent, vada, portus, insulas novisse;
**戦争を遂行しようとしているところの浅瀬・港・島に(ローマ人は)不案内であった(と信じ切っていた)。
<br>
*ac longe aliam esse navigationem in concluso mari atque in vastissimo atque apertissimo Oceano perspiciebant.
**閉ざされた海〔[[w:地中海|地中海]]〕と非常に広大で開けた大洋における航行はまったく別物であると見通していた。
<br>
*His initis consiliis
**この作戦計画が決められると、
*oppida muniunt,
**<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の防備を固め、
*frumenta ex agris in oppida comportant,
**穀物を耕地から<ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>に運び込み、
*naves in [[wikt:en:Venetia#Latin|Venetiam]], ubi Caesarem primum (esse) bellum gesturum constabat, quam plurimas possunt, cogunt.
**カエサルが最初の戦争を遂行するであろうことが明白であったところの[[w:ウェネティ族 (ガリア)|ウェネティー族]]領に、ありったけの艦船を集める。
<br>
*Socios sibi ad id bellum
**この戦争のために(ウェネティー族は)自分たちのもとへ同盟者として
*[[wikt:en:Osismi#Latin|Osismos]], [[wikt:en:Lexovii#Latin|Lexovios]], [[wikt:en:Namnetes#Latin|Namnetes]], Ambiliatos, [[wikt:en:Morini#Latin|Morinos]], [[w:en:Diablintes|Diablintes]], [[wikt:en:Menapii#Latin|Menapios]] adsciscunt;
**<span style="font-size:10pt;">オスィスミー族・レクソウィイー族・ナムネーテース族・アンビリアーティー族・モリニー族・ディアブリンテース族・メナピイー族</span> を引き入れる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:アンビリアーティー族 ➡ [[w:ガイウス・プリニウス・セクンドゥス|プリニウス]]は「アンビラトリー族」 [[wikt:en:Ambilatri#Latin|Ambilatri]] と記す。<br> ディアブリンテース族 ➡ プリニウスは「ディアブリンティー族」 [[wikt:en:Diablinti#Latin|Diablinti]] と記す。<br> この部族は、アウレルキー族 ''[[w:en:Aulerci|Aulerci]]'' の支族。)</span>
*auxilia ex Britannia, quae contra eas regiones posita est, arcessunt.
**援軍を、この地域の向かい側に位置する[[w:ブリタンニア|ブリタンニア]]から呼び寄せた。
**:<span style="color:#009900;">(訳注:援軍を出したという口実のもと、翌年カエサルがブリタンニアに侵攻することになる。)</span>
<div style="text-align:center">
{|
|-
|[[画像:Map of Aremorican tribes (Latin).svg|thumb|right|600px|[[w:アルモリカ|アルモリカ]](<span style="font-family:Times New Roman;font-size:13pt;">''[[w:en:Armorica|Armorica]]''</span> )の部族分布図。
]]
|}
</div>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===10節===
*<span style="background-color:#ffd;">[[/注解/10節]] {{進捗|00%|2022-07-02}}</span>
'''カエサルの開戦への大義名分'''
*Erant hae difficultates belli gerendi, quas supra ostendimus,
**上で指摘したような、戦争を遂行することの困難さがあった。
*sed tamen multa Caesarem ad id bellum incitabant:
**にもかかわらず、多くのことがカエサルをその戦争へと駆り立てていたのだ。
*iniuria retentorum equitum Romanorum,
**①ローマ人の[[w:エクィテス|騎士]]〔騎士階級の者〕たちが拘束されることの無法さ、
*rebellio facta post deditionem,
**②降伏の後でなされた造反、
*defectio datis obsidibus,
**③人質を供出しての謀反、
*tot civitatum coniuratio,
**④これほど多くの部族の共謀、
*in primis ne hac parte neglecta reliquae nationes sibi idem licere arbitrarentur.
**⑤何よりも第一に、この地方をなおざりにして、残りの種族が自分たちも同じことを許容されると思い込まないように。
*Itaque cum intellegeret
**そこで、(カエサルは以下のように)認識していたので、
*omnes fere Gallos novis rebus studere et ad bellum mobiliter celeriterque excitari,
**①ほぼすべてのガリア人が政変を熱望して、戦争へ簡単に速やかに奮い立たせられていること、
*omnes autem homines natura libertati studere incitari et condicionem servitutis odisse,
**②他方ですべての人間は本来的に自由を熱望することに扇動され、隷属の状態を嫌っていること、
*prius quam plures civitates conspirarent,
**多くの部族が共謀するより前に、
*partiendum sibi ac latius distribuendum exercitum putavit.
**(カエサルは)自分にとって軍隊が分けられるべき、より広範に割り振られるべきであると考えた。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===11節===
*<span style="background-color:#ffd;">[[/注解/11節]] {{進捗|00%|2022-07-03}}</span>
'''ラビエーヌス、クラッスス、サビーヌス、ブルートゥスを前線へ派兵する'''
<br><br>
; 副官ラビエーヌスをトレウェリー族のもとへ遣わす
*Itaque [[wikt:en:Titum|T.]] [[wikt:en:Labienus#Latin|Labienum]] legatum in [[wikt:en:Treveri#Latin|Treveros]], qui proximi flumini Rheno sunt, cum equitatu mittit.
**こうして、<ruby><rb>[[w:レガトゥス|副官]]</rb><rp>(</rp><rt>レガトゥス</rt><rp>)</rp></ruby>[[w:ティトゥス・ラビエヌス|ティトゥス・ラビエーヌス]]をレーヌス川〔[[w:ライン川|ライン川]]〕に最も近いトレーウェリー族に、騎兵隊とともに派遣する。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:la:Titus Labienus|Titus Labienus]] は、『ガリア戦記』におけるカエサルの片腕。<br> ''[[w:en:Treveri|Treveri]]'' はローマの同盟部族だが、[[ガリア戦記_第5巻|第5巻]]・[[ガリア戦記_第6巻|第6巻]]で挙兵する。)</span>
*Huic mandat,
**彼に(以下のように)命じる。
*[[wikt:en:Remi#Latin|Remos]] reliquosque [[wikt:en:Belgas|Belgas]] adeat atque in officio contineat
**①レーミー族やほかの[[w:ベルガエ|ベルガエ人]]を訪れて、<ruby><rb>忠実さ</rb><rp>(</rp><rt>オッフィキウム</rt><rp>)</rp></ruby>に留めるように、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:en:Remi|Remi]]'' は、ローマの同盟部族で、[[ガリア戦記_第2巻#3節|第2巻3節]]以降で言及された。)</span>
*[[wikt:en:Germanos|Germanos]]que, qui auxilio a Gallis arcessiti dicebantur,
**②ガッリア人により援兵として呼び寄せられたといわれていた[[w:ゲルマニア|ゲルマーニア]]人が
**:<span style="color:#009900;">(訳注:第1巻で言及された[[w:アリオウィストゥス|アリオウィストゥス]]の軍勢のこと。)</span>
*si per vim navibus flumen transire conentur, prohibeat.
**(彼らが)もし力ずくで船で川を渡ることを試みるならば、防ぐように、と。
<br>
; クラッスス青年をアクィーターニアに派遣する
*[[wikt:en:Publium|P.]] [[wikt:en:Crassus#Latin|Crassum]] cum cohortibus legionariis XII(duodecim) et magno numero equitatus in Aquitaniam proficisci iubet,
**[[w:プブリウス・リキニウス・クラッスス|プーブリウス・クラッスス]]には、軍団の12個<ruby><rb>[[w:コホルス|歩兵大隊]]</rb><rp>(</rp><rt>コホルス</rt><rp>)</rp></ruby>と多数の騎兵隊とともに、[[w:アクィタニア|アクィーターニア]]に出発することを命じる。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:la:Publius Licinius Crassus|Publius Licinius Crassus]]、[[#7節]]から既述。)</span>
*ne ex his nationibus auxilia in Galliam mittantur ac tantae nationes coniungantur.
**これらの種族から援兵がガッリアに派遣され、これほど多くの諸部族が結託することがないように。
<br>
; 副官サビーヌスを3個軍団とともに[[w:アルモリカ|アルモリカ]]北部へ派兵する
*[[wikt:en:Quintum#Latin|Q.]] [[wikt:en:Titurius#Latin|Titurium]] Sabinum legatum cum legionibus tribus
**副官[[w:クィントゥス・ティトゥリウス・サビヌス|クィーントゥス・ティトゥリウス・サビーヌス]]を3個軍団とともに
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:''[[w:en:Quintus Titurius Sabinus|Quintus Titurius Sabinus]]'' は[[ガリア戦記_第2巻#5節|第2巻5節]]から言及されている『ガリア戦記』前半で活躍する副官。)</span>
*in [[wikt:en:Unelli#Latin|Unellos]](Venellos), Coriosolităs [[wikt:en:Lexovii#Latin|Lexovios]]que mittit, qui eam manum distinendam curet.
**ウネッリー族・コリオソリテース族・レクソウィイー族に派遣して、彼らの手勢を分散させるべく配慮するように。
<br>
; ブルートゥス青年をウェネティー族領へ派兵する
*[[wikt:en:Decimus#Latin|D.]] [[wikt:en:Brutum|Brutum]] adulescentem classi Gallicisque navibus,
**[[w:デキムス・ユニウス・ブルトゥス・アルビヌス|デキムス・ブルートゥス青年]]に、(ローマの)艦隊とガッリア人の船団を、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[w:la:Decimus Iunius Brutus Albinus|Decimus Iunius Brutus Albinus]] は、カエサルの副官として活躍するが、後に暗殺に加わる。)</span>
*quas ex [[wikt:en:Pictones#Latin|Pictonibus]] et [[wikt:en:Santoni#Latin|Santonis]] reliquisque pacatis regionibus convenire iusserat,
**──これら(船団)はピクトネース族・サントニー族やほかの平定された地方から集まるように命じていたものであるが、──
*praeficit et, cum primum possit, in [[wikt:en:Veneti#Latin|Venetos]] proficisci iubet.
**(ブルートゥスに船団を)指揮させて、できるだけ早く[[w:ウェネティ族 (ガリア)|ウェネティー族]](の領土)に出発することを命じる。
<br>
*Ipse eo pedestribus copiis contendit.
**(カエサル)自身は、そこへ歩兵の軍勢とともに急ぐ。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===12節===
*<span style="background-color:#ffd;">[[/注解/12節]] {{進捗|00%|2022-07-09}}</span>
'''ウェネティー族の城塞都市の地勢、海洋民の機動性'''
<div style="text-align:center">
{|
|-
|[[画像:Bretagne Finistere PointeduRaz15119.jpg|thumb|right|350px|ウェネティー族の[[w:オッピドゥム|城塞都市]]があった[[w:ブルターニュ半島|ブルターニュ半島]]の突き出た地形]]
|}
</div>
*Erant [[wikt:en:eiusmodi|eiusmodi]] fere situs oppidorum,
**([[w:ウェネティ族 (ガリア)|ウェネティー族]]の)<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の地勢はほぼ以下のようであった。
*ut posita in extremis [[wikt:en:lingula#Latin|lingulis]] [[wikt:en:promunturium#Latin|promunturiis]]que
**<ruby><rb>[[w:砂嘴|砂嘴]]</rb><rp>(</rp><rt>リングラ</rt><rp>)</rp></ruby>や[[w:岬|岬]]の先端部に位置しているので、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:lingula#Latin|lingula]] ⇒ [[w:la:Lingua terrae|lingua terrae]] (舌状地) ≒ <ruby><rb>[[w:砂嘴|砂嘴]]</rb><rp>(</rp><rt>さし</rt><rp>)</rp></ruby>(くちばし状の砂地)。)</span>
*neque pedibus aditum haberent, cum ex alto se [[wikt:en:aestus#Latin|aestus]] incitavisset,
**沖合から<ruby><rb>[[w:潮汐|潮 汐]]</rb><rp>(</rp><rt>アエトゥス</rt><rp>)</rp></ruby>が押し寄せて来たとき<span style="color:#009900;">〔満潮〕</span>に、徒歩での<ruby><rb>接近路</rb><rp>(</rp><rt>アプローチ</rt><rp>)</rp></ruby>を持っていなかった。
*quod bis accidit semper horarum XII(duodenarum) spatio,
**というのは<span style="color:#009900;">(満潮が毎日)</span>2度、常に12時間の間隔で起こるためである。
<div style="text-align:center">
{|
|-
|[[画像:Astronomical tide IJmuiden 21 January 2012.png|thumb|right|600px|ある日(24時間)の'''[[w:潮位|潮位]]'''予測グラフの例(2012年、オランダ北海沿岸のエイマイデン)。<br>満潮や干潮は、約12時間の周期で繰り返されることが多いため、たいてい1日2回ずつ生じる。]]
|}
</div>
*neque navibus,
**船で(のアプローチ)もなく、
*quod rursus minuente aestu naves in vadis adflictarentur.
**というのは、潮が再び減ると<span style="color:#009900;">〔干潮〕</span>、船団が[[w:浅瀬|浅瀬]]で損傷してしまうためである。
*Ita utraque re oppidorum oppugnatio impediebatur;
**このように<span style="color:#009900;">(陸路・海路)</span>どちらの状況においても、<ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の攻略は妨げられていた。
<br><br>
*ac si quando magnitudine operis forte superati,
**あるとき、期せずして<span style="color:#009900;">(ウェネティー族がローマ人の)</span><ruby><rb>構造物</rb><rp>(</rp><rt>オプス</rt><rp>)</rp></ruby>の大きさに圧倒されて、
*extruso mari aggere ac molibus
**<span style="color:#009900;">(ローマ人が建造した)</span><ruby><rb>土手</rb><rp>(</rp><rt>アッゲル</rt><rp>)</rp></ruby>や<ruby><rb>[[w:防波堤|防波堤]]</rb><rp>(</rp><rt>モーレース</rt><rp>)</rp></ruby>により海水が押し出され、
*atque his oppidi moenibus adaequatis,
**これら<span style="color:#009900;">〔堡塁〕</span>が<ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>の城壁と<span style="color:#009900;">(高さにおいて)</span>等しくされ、
*suis fortunis desperare coeperant,
**<span style="color:#009900;">(ウェネティー族らが)</span>自分たちの命運に絶望し始めていたとしても、
*magno numero navium adpulso,
**船の多数を接岸して、
*cuius rei summam facultatem habebant,
**それら〔船〕の供給に最大の備えを持っていたので、
*omnia sua deportabant seque in proxima oppida recipiebant;
**自分たちの<ruby><rb>一切合財</rb><rp>(</rp><rt>オムニア</rt><rp>)</rp></ruby>を運び去って、最も近い<ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>に撤収していた。
*ibi se rursus isdem opportunitatibus loci defendebant.
**そこにおいて再び同じような地の利によって防戦していたのだ。
<br><br>
*Haec [[wikt:en:eo#Latin|eo]] facilius magnam partem aestatis faciebant,
**以上のことが、夏の大部分を<span style="color:#009900;">(ウェネティー族にとって)</span>より容易にしていた。
*quod nostrae naves [[wikt:en:tempestas#Latin|tempestatibus]] detinebantur,
**なぜなら、我が方〔ローマ人〕の船団は嵐により<span style="color:#009900;">(航行を)</span>阻まれており、
*summaque erat
**<span style="color:#009900;">(航行することの困難さが)</span>非常に大きかった。
*vasto atque aperto mari,
**海は広大で開けており、
*magnis aestibus,
**<ruby><rb>潮流</rb><rp>(</rp><rt>アエトゥス</rt><rp>)</rp></ruby>が激しく、
*raris ac prope nullis portibus
**港は<ruby><rb>疎</rb><rp>(</rp><rt>まば</rt><rp>)</rp></ruby>らでほとんどないので、
*difficultas navigandi.
**航行することの困難さが<span style="color:#009900;">(非常に大きかった)</span>。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===13節===
*<span style="background-color:#ffd;">[[/注解/13節]] {{進捗|00%|2022-07-10}}</span>
'''ウェネティー族の帆船の特徴'''
<div style="background-color:#ededed; width:90%; text-align:center">
{|
|-
| colspan="2" |ウェネティー族の船の再現画(左下に兵士の大きさが示されている)
| rowspan="2" style="background-color:#fff;" |
| rowspan="2" style="vertical-align:bottom;" |[[画像:Navis longa ja.JPG|thumb|right|350px|古代ローマの軍船([[w:ガレー船|ガレー船]])の構成]]
|-
| style="vertical-align:bottom;" |[[画像:Navire venete.svg|thumb|right|200px|一つの帆をもつ帆船の例]]
| style="vertical-align:bottom;" |[[画像:Navire venete 2.svg|thumb|right|200px|二つの帆をもつ帆船の例]]
|}
</div>
*Namque ipsorum naves ad hunc modum factae armataeque erant:
**これに対して彼ら<span style="color:#009900;">〔[[w:ウェネティ族 (ガリア)|ウェネティー族]]〕</span>自身の[[w:帆船|船]]は、以下のやり方で建造され、<ruby><rb>[[w:艤装|艤装]]</rb><rp>(</rp><rt>ぎそう</rt><rp>)</rp></ruby>されていた。
; 竜骨
*[[wikt:en:carina#Latin|carinae]] [[wikt:en:aliquanto|aliquanto]] planiores quam nostrarum navium,
**<ruby><rb>[[w:竜骨 (船)|竜 骨]]</rb><rp>(</rp><rt>カリーナ</rt><rp>)</rp></ruby>は、我が方<span style="color:#009900;">〔ローマ人〕</span>の船のものよりも、いくらか平らで、
**:<span style="color:#009900;">(訳注:[[w:竜骨 (船)|竜骨]]は、船底に突き出た背骨部分で、[[w:帆船|帆船]]が風で横滑りしないように造られていた。)</span>
*quo facilius vada ac decessum aestus excipere possent;
**それによって、より容易に[[w:浅瀬|浅瀬]] や [[w:潮汐|潮]]が退くこと<span style="color:#009900;">〔干潮〕</span>を持ち応えることができた。
; 船首と船尾
*[[wikt:en:prora#Latin|prorae]] admodum erectae atque item [[wikt:en:puppis|puppes]],
**<ruby><rb>[[w:船首|船 首]]</rb><rp>(</rp><rt>プローラ</rt><rp>)</rp></ruby>はまったく直立しており、<ruby><rb>[[w:船尾|船 尾]]</rb><rp>(</rp><rt>プッピス</rt><rp>)</rp></ruby>も同様で、
*ad magnitudinem fluctuum tempestatumque adcommodatae;
**<ruby><rb>[[w:波#波浪(風浪とうねり)|波 浪]]</rb><rp>(</rp><rt>フルークトゥス</rt><rp>)</rp></ruby> や <ruby><rb>[[w:嵐|暴風雨]]</rb><rp>(</rp><rt>テンペスタース</rt><rp>)</rp></ruby> の激しさに適応していた。
; 船体の材質
*naves totae factae ex [[wikt:en:robur#Latin|robore]] ad quamvis vim et contumeliam perferendam;
**船は、どんな力や衝撃にも耐えるために、全体として[[w:オーク|オーク材]]で造られていた。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:la:robur|robur]] は ''[[wikt:en:oak#English|oak]]'' と英訳され、[[w:樫#Japanese|樫]]と訳されることが多いが、<br> 「<ruby><rb>[[w:カシ|樫]]</rb><rp>(</rp><rt>カシ</rt><rp>)</rp></ruby>」は常緑樹であり、西洋では落葉樹である「<ruby><rb>[[w:ナラ|楢]]</rb><rp>(</rp><rt>ナラ</rt><rp>)</rp></ruby>」が多い。<br> 学名 [[w:la:Quercus robur|Quercus robur]] は「[[w:ヨーロッパナラ|ヨーロッパナラ]]」と訳される。)</span>
; 横梁
*[[wikt:en:transtrum#Latin|transtra]] ex pedalibus in altitudinem [[wikt:en:trabs#Latin|trabibus]], confixa [[wikt:en:clavus#Latin|clavis]] [[wikt:en:ferreus#Latin|ferreis]] digiti [[wikt:en:pollex#Latin|pollicis]] crassitudine;
**<ruby><rb>横梁(横木)</rb><rp>(</rp><rt>トラーンストルム</rt><rp>)</rp></ruby>は、1ペースの幅の<ruby><rb>材木</rb><rp>(</rp><rt>トラプス</rt><rp>)</rp></ruby>からなり、親指の太さほどの鉄製の[[w:釘|釘]]で固定されていた。
**:<span style="font-family:Times New Roman;color:#009900;">(訳注:1[[ガイウス・ユリウス・カエサルの著作/通貨・計量単位#ペース|ペース]]は約29.6cm。)</span>
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:transtrum#Latin|transtra]] は、<ruby><rb>[[w:マスト|帆柱]]</rb><rp>(</rp><rt>マスト</rt><rp>)</rp></ruby>([[wikt:en:malus#Etymology_3_2|malus]])を船に固定するための<ruby><rb>横梁(横木)</rb><rp>(</rp><rt>クロスビーム</rt><rp>)</rp></ruby>とも考えられる。)</span>
; 錨(いかり)の索具
*[[wikt:en:ancora#Latin|ancorae]] pro [[wikt:en:funis#Latin|funibus]] ferreis catenis revinctae;
**<ruby><rb>[[w:錨|錨]]</rb><rp>(</rp><rt>アンコラ</rt><rp>)</rp></ruby>は、<ruby><rb>[[w:ロープ|縄 索]]</rb><rp>(</rp><rt>フーニス</rt><rp>)</rp></ruby>の代わりに鉄製の[[w:鎖|鎖]]でつながれていた。
<div style="background-color:#eee; width:600px; text-align:center">
{|
|-
| style="vertical-align:bottom;" |[[画像:Nemi 060 museo delle Navi.jpg|thumb|right|180px|[[w:la:Ancora|ancora]] ([[w:錨|錨]])(古代ローマ)]]
| style="vertical-align:bottom;" |[[画像:Cordage en chanvre.jpg|thumb|right|150px|[[w:la:Funis|funis]] (綱の[[w:ロープ|ロープ]])]]
| style="vertical-align:bottom;" |[[画像:Old chain.jpg|thumb|right|150px|[[w:la:Catena|catena]] ([[w:鎖|鎖]])]]
|}
</div>
<br>
; 帆の材質
*[[wikt:en:pellis#Latin|pelles]] pro [[wikt:en:velum#Latin|velis]] [[wikt:en:aluta#Latin|alutae]]que tenuiter confectae,
**<ruby><rb>[[w:帆布|帆 布]]</rb><rp>(</rp><rt>ウェールム</rt><rp>)</rp></ruby>の代わりに<ruby><rb>[[w:毛皮|毛皮]]</rb><rp>(</rp><rt>ペッリス</rt><rp>)</rp></ruby>や、薄く作製された<ruby><rb>なめし皮</rb><rp>(</rp><rt>アルータ</rt><rp>)</rp></ruby>が(用いられた)。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:[[wikt:en:pellis#Latin|pellis]] は<ruby><rb>鞣</rb><rp>(</rp><rt>なめ</rt><rp>)</rp></ruby>していない生皮、[[wikt:en:aluta#Latin|aluta]] は<ruby><rb>鞣</rb><rp>(</rp><rt>なめ</rt><rp>)</rp></ruby>した[[w:皮革|皮革]] [[wikt:en:corium#Latin|corium]] のこと。)</span>
<div style="background-color:#eee; width:600px; text-align:center">
{|
|-
| style="vertical-align:bottom;" |[[画像:Linen canvas.jpg|thumb|right|150px|<ruby><rb>[[w:リネン|亜麻布]]</rb><rp>(</rp><rt>リネン</rt><rp>)</rp></ruby>の[[w:帆布|帆布]] ]]
| style="vertical-align:bottom;" |[[画像:Kissen aus indischem Antilopenfell 2013.jpg|thumb|right|100px|[[w:la:Pellis|pellis]] ([[w:毛皮|毛皮]])]]
| style="vertical-align:bottom;" |[[画像:Natural Bridge State Park (30337351644).jpg|thumb|right|200px|aluta ([[w:en:Tanning (leather)|なめし皮]])]]
|}
</div>
*[hae] sive propter inopiam [[wikt:en:linum#Latin|lini]] atque eius usus inscientiam,
**[これは] あるいは、<ruby><rb>[[w:アマ (植物)|亜麻]]</rb><rp>(</rp><rt>リーヌム</rt><rp>)</rp></ruby>の不足ゆえや、その利用に無知であるゆえか、
**:<span style="color:#009900;">(訳注:ローマ人には、[[w:リネン|亜麻布 (リネン)]]で帆を作る慣習があった。)</span>
*sive eo, quod est magis [[wikt:en:verisimilis#Latin|veri simile]],
**あるいは、この方がより真実に近いのだろうが、
*quod tantas tempestates Oceani tantosque impetus ventorum sustineri
**<ruby><rb>[[w:オーケアノス|大洋]]〔[[w:大西洋|大西洋]]〕</rb><rp>(</rp><rt>オーケアヌス</rt><rp>)</rp></ruby>のあれほどの嵐や、風のあれほどの激しさに持ち応えること、
*ac tanta onera navium regi
**船のあれほどの重さを制御することは、
*[[wikt:en:velum#Latin|velis]] non satis commode posse arbitrabantur.
**<ruby><rb>帆 布</rb><rp>(</rp><rt>ウェールム</rt><rp>)</rp></ruby>にとって十分に具合良くできないと、<span style="color:#009900;">(ウェネティー族は)</span>考えていたためであろう。
<br><br>
; ウェネティー船団とローマ艦隊の優劣
*Cum his navibus nostrae classi eiusmodi congressus erat,
**彼ら<span style="color:#009900;">〔ウェネティー族〕</span>の船団と、我が方<span style="color:#009900;">〔ローマ軍〕</span>の艦隊は、以下のように交戦していた。
*ut una celeritate et pulsu remorum praestaret,
**迅速さと<ruby><rb>[[w:櫂|櫂]](かい)</rb><rp>(</rp><rt>レームス</rt><rp>)</rp></ruby>を<ruby><rb>漕</rb><rp>(</rp><rt>こ</rt><rp>)</rp></ruby>ぐのだけは<span style="color:#009900;">(ローマ艦隊が)</span>よりまさっていたのだが、
*reliqua pro loci natura, pro vi tempestatum
**そのほかのことは、地勢や嵐の勢いを考慮すると、
*illis essent aptiora et adcommodatiora.
**彼ら<span style="color:#009900;">〔ウェネティー族〕</span>にとってより適しており、より好都合であった。
*Neque enim his nostrae rostro nocere poterant
**なぜなら、我が方<span style="color:#009900;">〔ローマ艦隊〕</span>の<ruby><rb>[[w:衝角|衝 角]]</rb><rp>(</rp><rt>ローストルム</rt><rp>)</rp></ruby>によって彼ら<span style="color:#009900;">(の船)</span>に対して損壊することができず、
*── tanta in iis erat firmitudo ──,
**──それら<span style="color:#009900;">〔ウェネティー族の船〕</span>においては<span style="color:#009900;">(船体の)</span>それほどの頑丈さがあったのだが──
*neque propter altitudinem facile telum adigebatur,
**<span style="color:#009900;">(ウェネティー族の船体の)</span>高さのゆえに、飛道具がたやすく投げ込まれなかったし、
*et eadem de causa minus commode <u>[[wikt:en:copula#Latin|copulis]]</u> continebantur.
**同じ理由から、あまり都合よく <ruby><rb><u>[[w:鉤縄|鉤縄]]</u></rb><rp>(</rp><rt>かぎなわ</rt><rp>)</rp></ruby> で<span style="color:#009900;">(敵船が)</span>つなぎ止められなかった。
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:下線部は、古い写本では [[wikt:en:scopulus#Latin|scopulis]]「岩礁」だが、<br> 後代の写本で修正され「[[w:鉤縄|鉤縄]]」と解釈されている。下図参照。)</span>
<div style="background-color:#eee; width:350px; text-align:center">
{|
|-
| style="vertical-align:bottom;" |[[画像:Grappling hook 2 (PSF).png|thumb|right|410px|[[w:海戦|海戦]]において敵船に[[w:移乗攻撃|接舷]]するために用いられていた、多数の<ruby><rb>[[w:鉤|鉤]]</rb><rp>(</rp><rt>かぎ</rt><rp>)</rp></ruby>を備えた<ruby><rb>[[w:銛|銛]]</rb><rp>(</rp><rt>もり</rt><rp>)</rp></ruby>の一種(<small>英語 [[wikt:en:grappling hook|grappling hook]]</small>)。<hr>[[内乱記_第1巻#57節|『内乱記』第1巻57節]]、[[内乱記_第2巻#6節|第2巻6節]]においても、[[w:デキムス・ユニウス・ブルトゥス・アルビヌス|D.ブルートゥス]]による'''[[内乱記/マッシリアについて|マッシリア攻囲]]'''の海戦の場面で、同様の鉤について言及される。]]
|}
</div>
*Accedebat ut,
**さらに加えて、
*cum <span style="color:#009900;">[</span>saevire ventus coepisset et<span style="color:#009900;">]</span> se vento dedissent,
**<span style="color:#009900;">[</span>風が荒々しく吹き始めて<span style="color:#009900;">]</span> 風に身を委ねて<span style="color:#009900;">(航行して)</span>いたときに、
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:β系写本では [ ] 部分を欠く。)</span>
*et tempestatem ferrent facilius
**<span style="color:#009900;">(ウェネティー族の船団は)</span>嵐により容易に耐えていたし、
*et in vadis consisterent tutius
**浅瀬により安全に停留して、
*et ab aestu relictae
**潮に取り残されても、
*nihil saxa et [[wikt:en:cautes#Latin|cautes]] timerent;
**岩石やごつごつした石を何ら恐れることがなかった。
*quarum rerum omnium nostris navibus casus erant extimescendi.
**それらのすべての事が、我が<span style="color:#009900;">〔ローマ人の〕</span>船団にとっては、恐怖すべき危険であったのだ。
**:<span style="color:#009900;">(訳注:ウェネティー族の船は[[w:竜骨 (船)|竜骨]]がローマ人の船より平たいため、<br> 浅瀬や引き潮を容易に持ち応えられた。本節の冒頭を参照。)</span>
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===14節===
*<span style="background-color:#ffd;">[[/注解/14節]] {{進捗|00%|2022-07-17}}</span>
[[画像:Bataille Morbihan -56.png|thumb|right|250px|[[w:モルビアン湾の海戦|ウェネティー族との海戦]]の布陣図]]
'''海戦が始まる'''
*Compluribus expugnatis oppidis
**いくつかの<ruby><rb>[[w:オッピドゥム|城塞都市]]</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>が攻略されると、
*Caesar ubi intellexit frustra tantum laborem sumi
**カエサルはこれほどの労苦が徒労になると知るや否や、
*neque hostium fugam captis oppidis reprimi
**(すなわち)<ruby><rb>城塞都市</rb><rp>(</rp><rt>オッピドゥム</rt><rp>)</rp></ruby>が占領されても、敵の逃亡を妨げられず、
*neque iis noceri posse,
**彼ら<span style="color:#009900;">〔ウェネティー族〕</span>に損害を与えることもできない(と知るや否や)、
*statuit exspectandam classem.
**[[w:ローマ海軍|(ローマ)艦隊]]<span style="color:#009900;">(の到着)</span>を待つことを決定した。
*Quae ubi convenit ac primum ab hostibus visa est,
**これら<span style="color:#009900;">〔艦隊〕</span>が集まって敵により目撃されるや否や、
*circiter CCXX{ducentae viginti} naves eorum paratissimae
**約220の彼ら<span style="color:#009900;">〔ウェネティー族〕</span>の船団が準備を整え、
*atque omni genere armorum ornatissimae
**あらゆる種類の武器が装備され、
*ex portu profectae nostris adversae constiterunt;
**港から出航して我が方と向かい合って布陣した。
*neque satis [[w:la:Decimus Iunius Brutus Albinus|Bruto]], qui classi praeerat,
**艦隊を指揮していた[[w:デキムス・ユニウス・ブルトゥス・アルビヌス|ブルートゥス]]にはまったく(知られてい)なかった。
*vel tribunis militum centurionibusque, quibus singulae naves erant attributae,
**これらの各々の船を割り当てられていた軍団次官([[w:トリブヌス・ミリトゥム|トリブヌス・ミリトゥム]])や[[w:ケントゥリオ|百人隊長]]にさえ、
*constabat quid agerent aut quam rationem pugnae insisterent.
**何を行なうか、どんな戦法を採用するか、知られていなかった。
*Rostro enim noceri non posse cognoverant;
**なぜなら、[[w:衝角|衝角]]で(敵に)損害を与えることができないことを知っていたからだ。
*turribus autem excitatis tamen has altitudo puppium ex barbaris navibus superabat,
**しかし、[[w:櫓|櫓]]を築いたけれども、その高さを[[w:野蛮|蛮族]]の船の[[w:船尾|船尾]]が上回っていた。
*ut neque ex inferiore loco satis commode tela adigi possent
**その結果、より低い場所から十分に具合良く飛び道具を投げ込むことができず、
*et missa a Gallis gravius acciderent.
**ガリア人により放られたものがより激しく降ってきた。
<br>
; ローマ艦隊の切り札「コルウス」
[[画像:Corvus.svg|thumb|right|250px|鉤竿に似たローマの兵器「[[w:コルウス|コルウス]]」]]
*Una erat magno usui res praeparata a nostris,
**我が方により準備されていた大いに役立つ事が一つあった。
*falces praeacutae insertae adfixaeque longuriis, non absimili forma muralium falcium.
**先の尖った[[w:鎌|鎌]]が挿入されて長い竿に固定されたもの、[[w:破城槌|破城槌]]に良く似た形のものである。
*His cum funes qui antemnas ad malos destinabant, comprehensi adductique erant,
**これを、[[w:帆桁|帆桁]]を帆柱([[w:マスト|マスト]])に結びつけていた[[w:ロープ|綱]](帆綱)にひっかけて引っ張るたびに、
*navigio remis incitato praerumpebantur.
**[[w:櫂|櫂]]によってすばやく航行すると、(帆綱は)引きちぎられた。
*Quibus abscisis antemnae necessario concidebant,
**これ(帆綱)が切れて、帆桁は必然的に倒れて、
*ut, cum omnis Gallicis navibus spes in velis armamentisque consisteret,
**その結果、ガリア人のすべての船にとって、期待は帆と[[w:索具|索具]]に基づいていたので、
*his ereptis omnis usus navium uno tempore eriperetur.
**これをちぎり取られて、船の運用(能力)も奪い取られた。
*Reliquum erat certamen positum in virtute, qua nostri milites facile superabant,
**残りの争闘は武勇いかんにかかっており、我が方(ローマ)の兵士がはるかに上回った。
*atque eo magis quod in conspectu Caesaris atque omnis exercitus res gerebatur,
**カエサルと全軍の眺望の中で、それだけ大きく、事(戦闘)が遂行されたので、
*ut nullum paulo fortius factum latere posset;
**どんな力強い動作も知られずにいることができないほどであった。
*omnes enim colles ac loca superiora, unde erat propinquus despectus in mare, ab exercitu tenebantur.
**なぜなら、そこから間近に海を見下ろすすべての丘とより高い場所は、(ローマの)軍隊によって占領されていたのである。
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
===15節===
'''海戦が終わる'''
*Deiectis, ut diximus, antemnis,
**上述したように帆桁がぶっ倒れて、
*cum singulas binae ac ternae naves circumsteterant,
**(ウェネティー族の船)1艘ずつを(ローマの)2艘ずつや3艘ずつの船が攻囲して、
*milites summa vi transcendere in hostium naves contendebant.
**(ローマの)兵士たちは最高の力で敵の船に乗り移ることに努めた。
*Quod postquam barbari fieri animadverterunt,
**そのことが行なわれていると蛮族が気づいた後で、
*expugnatis compluribus navibus,
**いくつもの(ウェネティー族の)船が攻略されて、
*cum ei rei nullum reperiretur auxilium,
**この事態に対して何ら助けを見出せなかったので、
*fuga salutem petere contenderunt.
**逃亡に身の安全を求めることに努めた。
*Ac iam conversis in eam partem navibus quo ventus ferebat,
**ちょうど風が運んでいた方角へ船の向きを変えたが、
*tanta subito malacia ac tranquillitas exstitit,
**突然に大きく[[w:凪|凪]]や静けさが生じて、
*ut se ex loco movere non possent.
**(ウェネティー族が)その場所から動くことができないほどであった。
*Quae quidem res ad negotium conficiendum maximae fuit oportunitati:
**このような事態はまさに仕事(軍務)を遂行するのに最大の機会であった。
*nam singulas nostri consectati expugnaverunt,
**というのも(敵船)1つずつを我が方が追跡して攻略して、
*ut perpaucae ex omni numero noctis interventu ad terram pervenirent,
**その結果、総勢のうちから非常にわずかな数の者たちが、夜のとばりに包まれて、陸地に達したのだ。
*cum ab hora fere IIII{quarta}. usque ad solis occasum pugnaretur.
**なぜなら(海戦が)ほぼ第四時から日が没するまで絶えず戦われたからだ。
**:(訳注:第四時は、古代ローマの不定時法で、午前9時~10時頃と思われる。)
===16節===
'''ウェネティー族の行末'''
*Quo proelio bellum Venetorum totiusque orae maritimae confectum est.
**以上の戦闘で、[[w:ウェネティ族 (ガリア)|ウェネティー族]]およびすべての沿岸住民との戦争が完遂された。
*Nam cum omnis iuventus, omnes etiam gravioris aetatis,
**なぜなら、すべての青年とすべての年嵩の者さえも、
*in quibus aliquid consilii aut dignitatis fuit eo convenerant,
**何らかの見識や品位のあった者たちは、そこ(戦場)へ集まっていたからだ。
*tum navium quod ubique fuerat in unum locum coegerant;
**そのとき、至る所にあった船が一つの場所に集められていたのだ。
*quibus amissis reliqui neque quo se reciperent neque quemadmodum oppida defenderent habebant.
**以上のものを喪失して、残存者たちは、どこへ退くかも、どんな方法で城市を防衛するかもわからなかった。
*Itaque se suaque omnia Caesari dediderunt.
**こうして、彼らとそのすべてのものをカエサルに委ねた(降伏した)。
*In quos eo gravius Caesar vindicandum statuit
**これらのものを、カエサルはより厳重に処罰すると決定した。
*quo diligentius in reliquum tempus a barbaris ius legatorum conservaretur.
**将来、蛮族により(ローマの)使節の権利をいっそう保たせるように。
*Itaque omni senatu necato reliquos sub corona vendidit.
**こうして、すべての長老を殺害して、残りの者たちを奴隷として売却した。
**(訳注:sub corona vendere;葉冠のもとに売る=奴隷として売る)
==大西洋岸ウネッリ族の造反==
===17節===
[[画像:Campagne Unelles -56.png|thumb|right|200px|ウネッリ族・レクソウィイ族への遠征経路。]]
'''ウネッリ族の反乱とサビヌスの作戦'''
*Dum haec in Venetis geruntur,
**以上のことが[[w:ウェネティ族 (ガリア)|ウェネティー族]](の領国)で行なわれていた間に、
*Q. Titurius Sabinus cum iis copiis, quas a Caesare acceperat
**[[w:クィントゥス・ティトゥリウス・サビヌス|クィントゥス・ティトゥリウス・サビヌス]]は、カエサルから受け取った軍勢とともに
*in fines Unellorum{Venellorum} pervenit.
**[[w:ウネッリ族|ウネッリ族]]の領土に到着した。
*His praeerat Viridovix ac summam imperii tenebat earum omnium civitatum, quae defecerant,
**彼ら(ウネッリ族)を指揮していたのは[[w:ウィリドウィクス|ウィリドウィクス]]で、背反した全部族の最高指揮権を保持していた。
*ex quibus exercitum [magnasque copias] coegerat;
**(彼は)これら(の部族)から大軍勢を徴集した。
*atque his paucis diebus Aulerci Eburovices Lexoviique,
**それから数日内に、[[w:アウレルキ族|アウレルキ族]]、[[w:エブロウィケス族|エブロウィケス族]]と[[w:レクソウィー族|レクソウィイ族]]は、
*senatu suo interfecto, quod auctores belli esse nolebant,
**自分たちの長老たちを、戦争の首謀者になることを欲しなかったという理由で殺害し、
*portas clauserunt seseque cum Viridovice coniunxerunt;
**(城市の)門を閉じて、彼らはウィリドウィクスと結託した。
*magnaque praeterea multitudo undique ex Gallia perditorum hominum latronumque convenerat,
**そのうえにガリアの至る所から大勢の無頼漢や略奪者が集まっていた。
*quos spes praedandi studiumque bellandi ab agri cultura et cotidiano labore revocabat.
**これらの者たちを、略奪への期待と戦争への熱望が、農耕や毎日の仕事から呼び戻したのだ。
*Sabinus idoneo omnibus rebus loco castris se tenebat,
**サビヌスはすべての事柄において適切な場所で、陣営を保持した。
*cum Viridovix contra eum duorum milium spatio consedisset
**ウィリドウィクスは彼に対抗して2[[w:ローママイル|ローママイル]](約3km)の間隔で陣取って、
*cotidieque productis copiis pugnandi potestatem faceret,
**毎日、軍勢を連れ出して戦闘の機会を作った。
*ut iam non solum hostibus in contemptionem Sabinus veniret,
**その結果ついに、敵からサビヌスが軽蔑されるに至ったのみならず、
*sed etiam nostrorum militum vocibus nonnihil carperetur;
**我が方(ローマ)の兵士からも若干の者が声に出して嘲弄するに至った。
*tantamque opinionem timoris praebuit,
**これほどの恐れの評判を呈したので、
*ut iam ad vallum castrorum hostes accedere auderent.
**ついに陣営の堡塁のところにまで敵が敢えて近づいて来るほどであった。
*Id ea de causa faciebat
**(サビヌスは)以上のことを以下の理由でしたのである。
*quod cum tanta multitudine hostium,
**というのも、このような大がかりな敵とともに、
*praesertim eo absente qui summam imperii teneret,
**とりわけ、(ローマ側の)最高指揮権を保持する者(=カエサル)がおらずに、
*nisi aequo loco aut opportunitate aliqua data
**有利な場所か何らかの機会が与えられなければ、
*legato dimicandum non existimabat.
**総督副官([[w:レガトゥス|レガトゥス]])にとって戦うべきとは考えなかったのである。
===18節===
'''サビヌスの計略'''
*Hac confirmata opinione timoris
**このような恐れの評判が強められて、
*idoneum quendam hominem et callidum delegit Gallum,
**(サビヌスは)適切で明敏なガリア人のある男を選び出した。
*ex iis quos auxilii causa secum habebat.
**支援軍([[w:アウクシリア|アウクシリア]])のために保持していた者たちの内から。
*Huic magnis praemiis pollicitationibusque persuadet uti ad hostes transeat,
**この者を、多大なほうびを約束して、敵側に渡るように説得して、
*et quid fieri velit edocet.
**(サビヌスが)なされんと欲することを説き教えた。
*Qui ubi pro perfuga ad eos venit, timorem Romanorum proponit,
**その者は、逃亡兵として彼ら(ウネッリ族)のところへ来るや否や、ローマ人の恐れを申し述べた。
*quibus angustiis ipse Caesar a Venetis prematur docet,
**いかなる困窮で、カエサル自身が[[w:ウェネティ族 (ガリア)|ウェネティー族]]により苦戦させられているかを教えた。
*neque longius abesse, quin proxima nocte
**遠からず、明晩には
*Sabinus clam ex castris exercitum educat
**サビヌスはひそかに陣営から軍隊を導き出して、
*et ad Caesarem auxilii ferendi causa proficiscatur.
**カエサルのところへ支援をもたらすために出発するであろう(とその男は教えた)。
*Quod ubi auditum est, conclamant
**このことが聞かれるや否や、(ウネッリ族の者たちは)叫び声を上げて、
*omnes occasionem negotii bene gerendi amittendam non esse: ad castra iri oportere.
**うまく仕事をするすべての機会を失うべきではない、(ローマの)陣営へ行かねばならぬ(と叫んだ)。
*Multae res ad hoc consilium Gallos hortabantur:
**多くの事柄が、この計画へとガリア人を励ました。
**(それらの事柄とは、以下のことである。)
*superiorum dierum Sabini cunctatio,
**最近の日々のサビヌスのためらい、
*perfugae confirmatio,
**脱走兵の確証、
*inopia cibariorum, cui rei parum diligenter ab iis erat provisum,
**彼ら(ガリア人)によって充分に入念に調達されなかった糧食の欠乏、
*spes Venetici belli,
**[[w:ウェネティ族 (ガリア)|ウェネティー族]]の戦争への希望、
*et quod fere libenter homines id quod volunt credunt.
**というのも、たいてい人間は(自分が)欲することを喜んで信ずるからである。
*His rebus adducti non prius Viridovicem reliquosque duces ex concilio dimittunt,
**これらの事態に引かれて、(ウネッリ族は)ウィリドウィクスや他の指導者を会議から解散させなかった。
*quam ab his sit concessum arma uti capiant et ad castra contendant.
**彼らによって、武器を取って(ローマ)陣営へ急行するように容認されるまでは。
*Qua re concessa laeti, ut explorata victoria,
**この事が容認されて、勝利が得られたかのように喜んで、
*sarmentis virgultisque collectis, quibus fossas Romanorum compleant, ad castra pergunt.
**柴や薮を集めて、これでもってローマ人の堀を埋めるべく、(ローマの)陣営のところへ出発した。
===19節===
'''ウネッリ族らとの決戦'''
*Locus erat castrorum editus et paulatim ab imo acclivis circiter passus mille.
**ローマ陣営の位置は高く、最も下(麓)から緩やかな上り坂で約1000[[w:パッスス|パッスス]](約1.5km)のところにあった。
*Huc magno cursu contenderunt,
ここへ、大いに駆けて急いで、
*ut quam minimum spatii ad se colligendos armandosque Romanis daretur,
**ローマ人にとって集結して武装するための時間ができるだけ与えられないようにして、
*exanimatique pervenerunt.
**息を切らして到着した。
*Sabinus suos hortatus cupientibus signum dat.
**サビヌスは、自分の部下たちを励まして、はやる者たちに合図を与える。
*Impeditis hostibus propter ea quae ferebant onera,
**敵は、彼らが担いでいた重荷のために妨げられていて、
*subito duabus portis eruptionem fieri iubet.
**(サビヌスは)突然に(左右の)二つの門から出撃することを命じた。
*Factum est
**(ut以下のことが)なされた。
*opportunitate loci, hostium inscientia ac defatigatione,
**場所の有利さ、敵の(武具や戦術の)不案内と疲労や、
*virtute militum et superiorum pugnarum exercitatione,
**兵士の武勇とかつての戦闘の熟練によって
*ut ne primum quidem nostrorum impetum ferrent ac statim terga verterent.
**我が方(ローマ)の最初の襲撃さえ持ちこたえることなく、(敵は)すぐに背を向けた。
*Quos impeditos integris viribus milites nostri consecuti
**これらの妨げられている者たちを、健全な力で我が方の兵士たちが追跡して、
*magnum numerum eorum occiderunt;
**彼らの大多数を殺戮した。
*reliquos equites consectati paucos, qui ex fuga evaserant, reliquerunt.
**残りの者たちは、(ローマの)騎兵が追跡したが、逃亡によって逃れたので、見逃した。
*Sic uno tempore et de navali pugna Sabinus et de Sabini victoria Caesar est certior factus,
**このようにして一度に、海戦についてサビヌスが、サビヌスの勝利についてカエサルが、報告を受けて、
*civitatesque omnes se statim Titurio dediderunt.
**(敵の)全部族がすぐにティトゥリウス(・サビヌス)に降伏した。
*Nam ut ad bella suscipienda Gallorum alacer ac promptus est animus,
**こうなったのは、ガリア人は戦争を実行することについては性急で、心は敏捷であるが、
*sic mollis ac minime resistens ad calamitates ferendas mens eorum est.
**と同様に柔弱で、災難に耐えるには彼らの心はあまり抵抗しないためである。
==クラッススのアクィタニア遠征==
===20節===
[[画像:Campagne Aquitains -56.png|thumb|right|200px|クラッススのアウィタニア遠征の経路。]]
'''クラッススのアクィタニア遠征、ソティアテス族'''
*Eodem fere tempore P. Crassus, cum in Aquitaniam pervenisset,
**ほぼ同じ時期に[[w:プブリウス・リキニウス・クラッスス|プブリウス・クラッスス]]が[[w:アクィタニア|アクィタニア]]に達したときに、
*quae pars, ut ante dictum est, et regionum latitudine et multitudine hominum
**この方面は、前述のように、領域の広さと人間の多さで
*ex tertia parte Galliae est aestimanda,
**[[w:ガリア|ガリア]]の第三の部分であると考えられるべきであるが、
*cum intellegeret in illis locis sibi bellum gerendum,
**(クラッススは)かの場所で自らにとって戦争がなされるべきであると考えたので、
*ubi paucis ante annis L. Valerius Praeconinus legatus exercitu pulso interfectus esset
**そこでほんの数年前に[[w:ルキウス・ウァレリウス・プラエコニヌス|ルキウス・ウァレリウス・プラエコニヌス]]総督副官([[w:レガトゥス|レガトゥス]])が軍隊を撃退されて殺害されており、
*atque unde L. Manlius proconsul impedimentis amissis profugisset,
**かつここから[[w:ルキウス・マンリウス・トルクァトゥス|ルキウス・マンリウス]]執政官代理([[w:プロコンスル|プロコンスル]])が輜重を失って敗走しており、
*non mediocrem sibi diligentiam adhibendam intellegebat.
**己にとって尋常ならざる注意深さが適用されるべきだと考えたのだ。
*Itaque re frumentaria provisa, auxiliis equitatuque comparato,
**こうして糧食が調達され、支援軍([[w:アウクシリア|アウクシリア]])や[[w:騎兵|騎兵隊]]が整備され、
*multis praeterea viris fortibus Tolosa et Carcasone et Narbone,
**そのうえ多くの屈強な男たちが、[[w:トロサ|トロサ]]や[[w:カルカソ|カルカソ]]や[[w:ナルボ|ナルボ]]から
*- quae sunt civitates Galliae provinciae finitimae, ex his regionibus-
**<それらは、この地域に隣接する(ローマの)ガリア属州([[w:ガリア・ナルボネンシス|ガリア・トランサルピナ]])の都市であるが、>
*nominatim evocatis, in Sotiatium fines exercitum introduxit.
**名指しで徴集されて、(クラッススは)[[w:ソティアテス族|ソティアテス族]]の領土に軍隊を導き入れた。
*Cuius adventu cognito Sotiates magnis copiis coactis,
**彼(クラッスス)の到着を知ると、ソティアテス族は大軍勢を集めて、
*equitatuque, quo plurimum valebant, in itinere agmen nostrum adorti
**それにより彼らが大いに力があったところの騎兵隊で、行軍中の我が(ローマの)隊列を襲って、
*primum equestre proelium commiserunt,
**はじめに騎兵戦を戦った。
*deinde equitatu suo pulso atque insequentibus nostris
**それから、その(敵の)騎兵隊が撃退され、我が方が追跡したが、
*subito pedestres copias, quas in convalle in insidiis conlocaverant, ostenderunt.
**突然に歩兵の軍勢 <[[w:峡谷|峡谷]]の中で[[w:伏兵|伏兵]]として配置していた者たち> が現われた。
*Iis nostros disiectos adorti proelium renovarunt.
**これらによって追い散らされた我が方(ローマ軍)に襲いかかり、戦いを再び始めた。
===21節===
'''ソティアテス族の敗勢'''
*Pugnatum est diu atque acriter,
**長く激しく戦われた。
*cum Sotiates superioribus victoriis freti
**というのもソティアテス族は、かつての(ローマ軍に対する)勝利を信頼しており、
*in sua virtute totius Aquitaniae salutem positam putarent,
**自分たちの武勇の中に全アクィタニアの安全が立脚していると、みなしていたからだ。
*nostri autem,
**我が方(ローマ軍)はそれに対して
*quid sine imperatore et sine reliquis legionibus adulescentulo duce efficere possent,
**最高司令官([[w:インペラトル|インペラトル]])なし、他の[[w:ローマ軍団|軍団]]もなしに、この若造(クラッスス)が指揮官として何をなしうるかが
*perspici cuperent;
**注視(吟味)されることを欲していたのだ。
*tandem confecti vulneribus hostes terga verterunt.
**ついに傷を負って、敵は背を向けた。
*Quorum magno numero interfecto
**これらの者の大多数を殺戮し、
*Crassus ex itinere oppidum Sotiatium oppugnare coepit.
**クラッススは行軍からただちにソティアテス族の[[w:オッピドゥム|城市]]を攻撃し始めた。
*Quibus fortiter resistentibus vineas turresque egit.
**これらの者たちが勇敢に抵抗したので、(ローマ勢は)工作小屋([[w:ウィネア|ウィネア]])や[[w:櫓|櫓]]を(城の方に)導いた。
*Illi alias eruptione temptata, alias cuniculis ad aggerem vineasque actis
**彼ら(アクィタニア人)は、あるときは突撃を試みて、あるときは[[w:坑道|坑道]]を[[w:土塁|土塁]]や工作小屋のところへ導いた。
*- cuius rei sunt longe peritissimi Aquitani,
**<こういった事柄(坑道の技術)に、アクィタニア人は長らく非常に熟練している。
*propterea quod multis locis apud eos aerariae secturaeque sunt -,
**これは、彼らのもとの多くの場所に[[w:銅山|銅山]]や[[w:採石所|採石所]]があることのためである。>
*ubi diligentia nostrorum nihil his rebus profici posse intellexerunt,
**我が方の注意深さによってこのような事柄によっても何ら得られぬと考えるや否や、
*legatos ad Crassum mittunt, seque in deditionem ut recipiat petunt.
**(ソティアテス族は)使節をクラッススのところへ送って、自分たちを降伏へと受け入れるように求める。
*Qua re impetrata arma tradere iussi faciunt.
**この事が達せられ、武器の引渡しが命じられ、実行された。
===22節===
'''アディアトゥアヌスと従僕たちの突撃'''
*Atque in ea re omnium nostrorum intentis animis
**この事柄に我が方(ローマ勢)の皆が心から没頭しており、
*alia ex parte oppidi Adiatuanus, qui summam imperii tenebat,
**城市の他の方面から、最高指揮権を保持していた[[w:アディアトゥアヌス|アディアトゥアヌス]]が
*cum DC{sescentis} devotis, quos illi{Galli} soldurios appellant,
**ガリア人がソルドゥリイ(従僕)と呼んでいる600名の忠実な者とともに(突撃を試みた)。
'''アディアトゥアヌスの従僕たち'''
*- quorum haec est condicio,
**< これらの者たちの状況は以下の通りであった。
*uti omnibus in vita commodis una cum iis fruantur quorum se amicitiae dediderint,
**人生におけるあらゆる恩恵を、忠心に身を捧げる者たちと一緒に享受する。
*si quid his per vim accidat, aut eundem casum una ferant aut sibi mortem consciscant;
**もし彼らに何か暴力沙汰が起こったら、同じ運命に一緒に耐えるか、自らに死を引き受ける(自殺する)。
*neque adhuc hominum memoria repertus est quisquam qui,
**これまで、次のような人の記憶は見出されていない。
*eo interfecto, cuius se amicitiae devovisset, mortem recusaret -
**忠心に身を捧げる者が殺されても死を拒む(ような者) >
*cum his Adiatuanus eruptionem facere conatus
**これらの者(従僕)とともにアディアトゥアヌスは突撃することを試みた。
'''アディアトゥアヌスの敗退'''
*clamore ab ea parte munitionis sublato
**堡塁のその方面から叫び声が上げられて、
*cum ad arma milites concurrissent vehementerque ibi pugnatum esset,
**武器のところへ(ローマの)兵士たちが急ぎ集まった後に、そこで激しく戦われた。
*repulsus in oppidum
**(アディアトゥアヌスたちは)城市の中に撃退され、
*tamen uti eadem deditionis condicione uteretur a Crasso impetravit.
**しかし(前と)同じ降伏条件を用いるように、クラッススを説得した。
===23節===
'''ウォカテス族・タルサテス族対クラッスス'''
*Armis obsidibusque acceptis, Crassus in fines Vocatium et Tarusatium profectus est.
**武器と人質を受け取って、クラッススは[[w:ウォカテス族|ウォカテス族]]と[[w:タルサテス族|タルサテス族]]の領土に出発した。
*Tum vero barbari commoti,
**そのとき確かに蛮族たちは動揺させられて、
*quod oppidum et natura loci et manu munitum
**というのも、地勢と部隊で防備された(ソティアテス族の)城市が
*paucis diebus quibus eo ventum erat, expugnatum cognoverant,
**(ローマ人が)そこへ来てからわずかな日数で攻め落とされたことを知っていたためであるが、
*legatos quoque versus dimittere,
**使節たちをあらゆる方面に向けて送り出し、
*coniurare, obsides inter se dare, copias parare coeperunt.
**共謀して、互いに人質を与え合って、軍勢を準備し始めた。
*Mittuntur etiam ad eas civitates legati quae sunt citerioris Hispaniae finitimae Aquitaniae:
**アクィタニアに隣接する[[w:上ヒスパニア|上ヒスパニア]]([[w:en:Hispania Citerior|Hispania Citerior]])にいる部族たちにさえ、使節が派遣された。
[[画像:Hispania_1a_division_provincial.PNG|thumb|250px|right|BC197年頃のヒスパニア。オレンジ色の地域が当時の上ヒスパニア]]
[[画像:Ethnographic Iberia 200 BCE.PNG|thumb|right|250px|BC200年頃のイベリア半島の民族分布。朱色の部分に[[w:アクィタニア人|アクィタニア人]]の諸部族が居住していた。]]
*inde auxilia ducesque arcessuntur.
**そこから援兵と指揮官が呼び寄せられた。
*Quorum adventu
**これらの者が到着して、
*magna cum auctoritate et magna [cum] hominum multitudine
**大きな権威と大勢の人間とともに、
*bellum gerere conantur.
**戦争遂行を企てた。
*Duces vero ii deliguntur
**指揮官には確かに(以下の者たちが)選ばれた。
*qui una cum Q. Sertorio omnes annos fuerant
**皆が多年の間、[[w:クィントゥス・セルトリウス|クィントゥス・セルトリウス]]([[w:la:Quintus Sertorius|Quintus Sertorius]])と一緒にいて、
*summamque scientiam rei militaris habere existimabantur.
**軍事の最高の知識を有すると考えられていた(者たちである)。
**(訳注:セルトリウスは、[[w:ルキウス・コルネリウス・スッラ|スッラ]]の独裁に抵抗したローマ人の武将である。[[w:ヒスパニア|ヒスパニア]]の住民にローマ軍の戦術を教えて共和政ローマに対して反乱を起こしたが、[[w:グナエウス・ポンペイウス|ポンペイウス]]によって鎮圧された。)
*Hi consuetudine populi Romani loca capere,
**これらの者たちは、ローマ人民の習慣によって、場所を占領し、
*castra munire,
**[[w:カストラ|陣営]]を防壁で守り、
*commeatibus nostros intercludere instituunt.
**我が方(ローマ勢)の物資をさえぎることに決めたのだ。
*Quod ubi Crassus animadvertit,
**クラッススは(以下の諸事情に)気づくや否や、(すなわち)
*suas copias propter exiguitatem non facile diduci,
**己の軍勢が寡兵であるために、展開するのが容易でないこと、
*hostem et vagari et vias obsidere et castris satis praesidii relinquere,
**敵はうろつき回って道を遮断して、陣営に十分な守備兵を残していること、
*ob eam causam minus commode frumentum commeatumque sibi supportari,
**その理由のために糧食や軍需品を都合良く自陣に持ち運べていないこと、
*in dies hostium numerum augeri,
**日々に敵の数が増していること、(これらの諸事情に気づいたので)
*non cunctandum existimavit quin pugna decertaret.
**(クラッススは)戦闘で雌雄を決することをためらうべきではないと考えたのだ。
*Hac re ad consilium delata, ubi omnes idem sentire intellexit,
**この事が会議に報告されて、皆が同じく考えていることを知るや否や、
*posterum diem pugnae constituit.
**戦闘を翌日に決めた。
===24節===
'''両軍の開戦準備'''
*Prima luce productis omnibus copiis,
**(クラッススは)夜明けに全軍勢を連れ出して、
*duplici acie instituta,
**二重の戦列を整列し、
*auxiliis in mediam aciem coniectis,
**支援軍([[w:アウクシリア|アウクシリア]])を戦列の中央部に集結し、
*quid hostes consilii caperent exspectabat.
**敵がいかなる計略をとるのかを待った。
*Illi,
**彼ら(アクィタニア人)は、
*etsi propter multitudinem et veterem belli gloriam paucitatemque nostrorum se tuto dimicaturos existimabant,
**(自らの)多勢、昔の戦争の名誉、我が方(ローマ勢)の寡勢のために、安全に闘えると考えたにも拘らず、
*tamen tutius esse arbitrabantur obsessis viis commeatu intercluso sine ullo vulnere victoria potiri,
**それでもより安全と思われるのは、道を包囲して[[w:兵站|兵站]]を遮断し、何ら傷なしに勝利をものにすることであり、
*et si propter inopiam rei frumentariae Romani se recipere coepissent,
**もし糧食の欠乏のためにローマ人が退却し始めたならば、
*impeditos in agmine et sub sarcinis infirmiores
**(ローマ人が)隊列において[[w:背嚢|背嚢]]を背負って妨げられて臆病になっているところを、
*aequo animo adoriri cogitabant.
**平常心をもって襲いかかれると考えたのだ。
*Hoc consilio probato ab ducibus, productis Romanorum copiis, sese castris tenebant.
**この計略が指揮官により承認されて、ローマ人の軍勢が進撃しても、彼らは陣営に留まった。
*Hac re perspecta Crassus,
**この事を見通してクラッススは、
*cum sua cunctatione atque opinione timidiores hostes
**(敵)自身のためらいや、評判より臆病な敵が
*nostros milites alacriores ad pugnandum effecissent
**我が方(ローマ)の兵士たちを戦うことにおいてやる気にさせたので、
*atque omnium voces audirentur exspectari diutius non oportere quin ad castra iretur,
**かつ(敵の)陣営へ向かうことをこれ以上待つべきではないという皆の声が聞かれたので、
*cohortatus suos omnibus cupientibus ad hostium castra contendit.
**部下を励まして、(戦いを)欲する皆で、敵の陣営へ急行した。
===25節===
'''クラッスス、敵陣へ攻めかかる'''
*Ibi cum alii fossas complerent, alii multis telis coniectis
**そこで、ある者は堀を埋め、ある者は多くの飛道具を投げて、
*defensores vallo munitionibusque depellerent,
**守備兵たちを[[w:防柵|防柵]]や[[w:防壁|防壁]]から駆逐した。
*auxiliaresque, quibus ad pugnam non multum Crassus confidebat,
**[[w:アウクシリア|支援軍]]の者たちといえば、クラッススは彼らの戦いを大して信頼していなかったが、
*lapidibus telisque subministrandis et ad aggerem caespitibus comportandis
**石や飛道具を供給したり、[[w:土塁|土塁]]のために[[w:芝|芝草]]を運んだり、
*speciem atque opinionem pugnantium praeberent,
**戦っている様子や印象を示した。
*cum item ab hostibus constanter ac non timide pugnaretur
**敵もまたしっかりと臆せずに戦って、
*telaque ex loco superiore missa non frustra acciderent,
**より高い所から放られた飛道具は無駄なく落ちてきたので、
*equites circumitis hostium castris Crasso renuntiaverunt
**[[w:騎兵|騎兵]]は、敵の陣営を巡察してクラッススに報告した。
*non eadem esse diligentia ab decumana porta castra munita
**(敵の)陣営の後門(porta decumana)は(他の部分と)同じほどの入念さで防備されておらず、
*facilemque aditum habere.
**容易に接近できると。
===26節===
'''クラッスス、総攻撃をかける'''
*Crassus equitum praefectos cohortatus,
**クラッススは[[w:騎兵|騎兵]]の指揮官たちに促した。
*ut magnis praemiis pollicitationibusque suos excitarent, quid fieri velit ostendit.
**大きな恩賞の約束で部下たちを駆り立てて、何がなされることを欲しているかを示すようにと。
*Illi, ut erat imperatum,
**この者らは命じられたように、
*eductis iis cohortibus quae praesidio castris relictae intritae ab labore erant,
**守備兵として陣営に残されていて、働きによって疲弊していなかった歩兵大隊([[w:コホルス|コホルス]])を連れ出して、
*et longiore itinere circumductis, ne ex hostium castris conspici possent,
**敵の陣営から視認できないように、遠回りの道程をめぐらせて、
*omnium oculis mentibusque ad pugnam intentis
**(彼我の)皆の目と意識が戦闘に没頭している間に
*celeriter ad eas quas diximus munitiones pervenerunt atque his prorutis
**速やかに前述した(後門の)防壁に至って、それを崩壊させて、
*prius in hostium castris constiterunt,
**敵の陣営に拠点を築いた。
*quam plane ab his videri aut quid rei gereretur cognosci posset.
**彼ら(敵)によりまったく見られ、あるいはいかなる事が遂行されているかを知られるよりも早くのことだった。
*Tum vero clamore ab ea parte audito
**そのときまさにこの方面から雄叫びが聞こえて、
*nostri redintegratis viribus,
**我が方(ローマ勢)は活力を回復し、
*quod plerumque in spe victoriae accidere consuevit,
**勝利の希望の中にたいてい起こるのが常であったように
*acrius impugnare coeperunt.
**より激烈に攻め立て始めたのであった。
*Hostes undique circumventi desperatis omnibus rebus
**敵は至る所から攻囲されて、すべての事態に絶望し、
*se per munitiones deicere et fuga salutem petere intenderunt.
**壁を越えて飛び降りて、逃亡によって身の安全を求めることに懸命になった。
*Quos equitatus apertissimis campis consectatus
**この者たちを(ローマの)騎兵隊が非常に開けた平原で追撃し、
*ex milium L{quinquaginta} numero, quae ex Aquitania Cantabrisque convenisse constabat,
**[[w:アクィタニア|アクィタニア]]と[[w:カンタブリ族|カンタブリ族]]([[w:en:Cantabri|Cantabri]])から集まっていた(敵の総勢の)数は5万名が確認されたが、
*vix quarta parte relicta,
**やっとその四分の一が生き残り、
*multa nocte se in castra recepit.
**夜も更けて(ローマ勢は)陣営に退却した。
===27節===
'''アクィタニア諸部族の降伏'''
*Hac audita pugna
**この戦闘(の勝敗)を聞いて、
*maxima pars Aquitaniae sese Crasso dedidit obsidesque ultro misit;
**[[w:アクィタニア人|アクィタニア人]]の大部分がクラッススに降伏して、すすんで[[w:人質|人質]]を送った。
*quo in numero fuerunt
**その数の中には以下の部族がいた。
*Tarbelli, Bigerriones, Ptianii, Vocates, Tarusates, Elusates,
**[[w:タルベッリ族|タルベッリ族]]、[[w:ビゲッリオネス族|ビゲッリオネス族]]、[[w:プティアニー族|プティアニイ族]]、[[w:ウォカテス族|ウォカテス族]]、[[w:タルサテス族|タルサテス族]]、[[w:エルサテス族|エルサテス族]]、
*Gates, Ausci, Garunni, Sibulates, Cocosates:
**[[w:ガテス族|ガテス族]]、[[w:アウスキ族|アウスキ族]]、[[w:ガルンニ族|ガルンニ族]]、[[w:シブラテス族|シブラテス族]]、[[w:ココサテス族|ココサテス族]]、である。
*paucae ultimae nationes
**わずかな遠方の部族たちは、
*anni tempore confisae, quod hiems suberat,
**時季を頼りにして、というのも冬が近づいていたためであるが、
*id facere neglexerunt.
**そのこと(降伏と人質)をなおざりにした。
==モリニ族・メナピイ族への遠征==
===28節===
'''カエサル、モリニ族・メナピイ族へ遠征'''
*Eodem fere tempore Caesar,
**(前節までに述べたクラッススのアクィタニア遠征と)ほぼ同じ時期にカエサルは、
*etsi prope exacta iam aestas erat,
**すでに夏はほとんど過ぎ去っていたのであるが、
*tamen quod omni Gallia pacata
**全ガリアが平定されていたにもかかわらず、
*Morini Menapiique supererant,
**[[w:モリニ族|モリニ族]]と[[w:メナピー族|メナピイ族]]は生き残って
*qui in armis essent, neque ad eum umquam legatos de pace misissent,
**武装した状態で、彼(カエサル)のところへ決して和平の使節を派遣しようとしなかったので、
*arbitratus id bellum celeriter confici posse, eo exercitum duxit;
**この戦争は速やかに完遂されると思って、そこへ軍隊を率いて行った。
*qui longe alia ratione ac reliqui Galli bellum gerere instituerunt.
**これら(の部族)は、他のガリア人とはまったく別の方法で戦争遂行することを決めた。
*Nam
**なぜなら
*quod intellegebant maximas nationes, quae proelio contendissent, pulsas superatasque esse,
**というのも、戦闘を戦った非常に多くの部族が撃退され、征服されていることを(彼らは)知っており、
*continentesque silvas ac paludes habebant,
**かつ、絶え間ない[[w:森林|森]]と[[w:沼地|沼地]]を(彼らは)持っていたので
*eo se suaque omnia contulerunt.
**そこへ自分たちとそのすべての物を運び集めたのだ。
*Ad quarum initium silvarum cum Caesar pervenisset castraque munire instituisset
**かかる森の入口のところへカエサルが到着して陣営の防備にとりかかったときに、
*neque hostis interim visus esset,
**敵はその間に現れることはなく、
*dispersis in opere nostris
**工事において分散されている我が方(ローマ勢)を
*subito ex omnibus partibus silvae evolaverunt et in nostros impetum fecerunt.
**突然に(敵が)森のあらゆる方面から飛び出してきて、我が方に襲撃をしかけたのだ。
*Nostri celeriter arma ceperunt
**我が方は速やかに武器を取って
*eosque in silvas reppulerunt et compluribus interfectis
**彼らを森の中に押し戻して、かなり(の敵)を殺傷して
*longius impeditioribus locis secuti
**非常に通りにくい場所を追跡したが、
*paucos ex suis deperdiderunt.
**我が方の部下で損傷を負ったのは少数であった。
===29節===
'''カエサル、むなしく撤兵する'''
*Reliquis deinceps diebus Caesar silvas caedere instituit,
**続いて(冬が近づくまでの)残りの何日かで、カエサルは森を[[w:伐採|伐採]]することに決めた。
*et ne quis inermibus imprudentibusque militibus ab latere impetus fieri posset,
**(これは)非武装で不注意な兵士たちが側面からいかなる襲撃もなされないように(ということであり)、
*omnem eam materiam quae erat caesa conversam ad hostem conlocabat
**伐採されたすべての[[w:木材|材木]]を敵の方へ向きを変えて配置して、
*et pro vallo ad utrumque latus exstruebat.
**[[w:防柵|防柵]]の代わりに両方の側面に築いた。
*Incredibili celeritate magno spatio paucis diebus confecto,
**信じがたいほどの迅速さで大きな空間がわずかな日数で完遂されて、
*cum iam pecus atque extrema impedimenta a nostris tenerentur,
**すでに[[w:家畜|家畜]]や[[w:輜重|輜重]]の最も端が我が方(ローマ軍)により捕捉された。
*ipsi densiores silvas peterent,
**(敵)自身は密生した森を行くし、
*eiusmodi sunt tempestates consecutae, uti opus necessario intermitteretur
**[[w:嵐|嵐]]が続いたので、工事はやむを得ずに中断された。
*et continuatione imbrium diutius sub pellibus milites contineri non possent.
**雨が続いて、これ以上は皮([[w:天幕|天幕]])の下に兵士たちを留めることはできなかった。
*Itaque vastatis omnibus eorum agris, vicis aedificiisque incensis,
**こうして、彼らのすべての畑を荒らして、村々や建物に火をつけて、
*Caesar exercitum reduxit
**カエサルは軍隊を連れ戻して、
*et in Aulercis Lexoviisque, reliquis item civitatibus quae proxime bellum fecerant,
**[[w:アウレルキ族|アウレルキ族]]と[[w:レクソウィー族|レクソウィイ族]]や、他の同様に最近に戦争をしていた部族たちのところに
*in hibernis conlocavit.
**[[w:冬営|冬営]]を設置した。
----
*<span style="background-color:#99ff99;">「ガリア戦記 第3巻」了。「[[ガリア戦記 第4巻]]」へ続く。</span>
==脚注==
<references />
[[Category:ガリア戦記 第3巻|*]]
k9j96akmnxa2czk68r9kg42u3077okd
小学校社会/6学年/歴史編/人物事典
0
6942
205976
202322
2022-07-29T08:00:42Z
Mtodo
450
/* 江戸時代 */
wikitext
text/x-wiki
{{半保護S}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|frame=1}}
{{stub}}
ここには、小学校の歴史の勉強で出てくる人物について書いてあります({{ruby|発展|はってん}}的な内容および人物もふくまれています)。もっとくわしく知りたいときは、色がついているタイトルの名前をクリックしてください。ウィキペディアにあるページにリンクしてあります。少し{{ruby|難|むずか}}しいかもしれませんので、事典や身近な大人をフル活用してください。
<!--執筆者へ
あまり長くならないよう、4〜5行程度にまとめてください。
第1行目には、「生没年」があるといいと思います。-->
また、難しいかもしれませんが、[[中学受験社会/歴史/人物]]をみてもいい情報があるかもしれません。
== {{ruby|弥生|やよい}}時代 ==
=== [[w:卑弥呼|{{ruby|卑弥呼|ひみこ}}]] ===
3世紀はじめごろ。{{ruby|邪馬台国|やまたいこく}}の女王で、神のおつげやうらないで政治を行った。当時、中国にあった{{ruby|魏|ぎ}}という国に使いを送り、その時に親魏倭王の称号を与えられたとその国の歴史書({{ruby|魏志倭人伝|ぎしわじんでん}})に記されている。邪馬台国があったと考えられる場所は、{{ruby|奈良|なら}}と九州北部の説が有力である。一番古い時代に作られた{{ruby|古墳|こふん}}が、卑弥呼の墓で、奈良に邪馬台国があった場合、{{ruby|箸墓|はしはか}}古墳が卑弥呼の墓ではないか、と考えられている。
== {{ruby|飛鳥|あすか}}時代 ==
=== {{Ruby|[[w:聖徳太子|聖徳太子]]|しょうとくたいし}} ===
572年~622年。{{ruby|厩戸王|うまやとおう}}などとも{{ruby|呼|よ}}ばれる。[[w:推古天皇|{{ruby|推古|すいこ}}天皇]]に代わって政治を行う{{ruby|摂政|せっしょう}}として{{ruby|活躍|かつやく}}。{{ruby|仏教|ぶっきょう}}や中国の{{ruby|儒教|じゅきょう}}の教えをもとに、{{ruby|朝廷|ちょうてい}}の役人の{{ruby|心得|こころえ}}である[[w:十七条憲法|{{ruby|十七条の憲法|じゅうしちじょうのけんぽう}}]]を定めた。また、能力が高かったり手がらをたてた人が重要な仕事をできる[[w:冠位十二階|{{ruby|冠位十二階|かんいじゅうにかい}}]]の制度をつくった。仏教を深く{{ruby|信仰|しんこう}}していた聖徳太子は、[[w:法隆寺|{{ruby|法隆寺|ほうりゅうじ}}]]を建て、仏教の力で平和な世の中になるように願った。10人が同時に話しても、そのすべての内容を理解したなどの伝説がある。
* 関連する人物
[[w:推古天皇|{{ruby|推古天皇|すいこてんのう}}]]
=== [[w:小野妹子|{{ruby|小野妹子|おののいもこ}}]] ===
6世紀後半〜7世紀前半。{{ruby|男性|だんせい}}である。607年、{{ruby|聖徳太子|しょうとくたいし}}の命令で第2回[[w:遣隋使|{{ruby|遣隋使|けんずいし}}]]として中国の隋の国にわたる。608年には第3回遣隋使となっている。
=== [[w:天智天皇|{{ruby|中大兄皇子|なかのおおえのおうじ}}]] ===
のちの{{ruby|天智天皇|てんじてんのう}}です。なくなった[[#聖徳太子|聖徳太子]]の意志を受けつぐため、{{ruby|中臣鎌足|なかとみのかまたり}}とともに{{ruby|蘇我|そが}}氏を{{ruby|倒|たお}}した。これを、{{ruby|大化|たいか}}の改新 という。そして天皇中心とした国づくりが行われた。
=== [[w:藤原鎌足|{{ruby|中臣鎌足|なかとみのかまたり}}]] ===
{{ruby|中大兄皇子|なかのおおえのおうじ}}と協力して {{ruby|大化|たいか}}の改新 を進めた。
やがて、{{ruby|藤原姓|ふじわらせい}}をもらう。
大化の改新の中心人物は、{{ruby|中大兄皇子|なかのおおえのおうじ}}と{{ruby|中臣鎌足|なかとみのかまたり}}である。
== {{ruby|奈良|なら}}時代 ==
=== [[w:聖武天皇|{{ruby|聖武天皇|しょうむてんのう}}]] ===
聖武天皇の時代は災が多かったために、都を移動させたり、東大寺を中心に国分寺を国ごとに建てさせた。仏教を{{ruby|信仰|しんこう}}し農民などの不安をしずめるため、大仏を作る{{Ruby|詔|みことのり}}(天皇の命令)を出した。
=== [[w:行基|{{ruby|行基|ぎょうき}}]] ===
一般の民衆への仏教の布教が禁止されていた時代に、布教を行った{{ruby|僧|そう}}。{{ruby|朝廷|ちょうてい}}からは{{ruby|弾圧|だんあつ}}されたが、{{ruby|民衆|みんしゅう}}からは{{ruby|尊敬|そんけい}}された。国民の平和を願う大仏を作った。
しかし、大仏が出来る前に死んでしまった。
=== [[w:鑑真|{{ruby|鑑真|がんじん}}]] ===
{{ruby|聖武天皇|しょうむてんのう}}から{{ruby|招|まね}}かれ、{{ruby|僧|そう}}として中国から日本に11年かけて{{ruby|渡|わた}}ってきたが、5度の失敗ゆえに失明してしまった。{{ruby|唐招提寺|とうしょうだいじ}}を建て日本に正しい仏教を伝えたとされている。
その他に医学や薬学、美術工芸なども伝えた。
== {{ruby|平安|へいあん}}時代 ==
=== [[w:藤原道長|{{ruby|藤原道長|ふじわらのみちなが}}]] ===
{{ruby|中臣鎌足|なかとみのかまたり}}を祖先とする{{ruby|貴族|きぞく}}。
道長は信じられないくらい運が良かったといわれています。道長は兄弟の中では末っ子でしたが、兄たちが病気や事件を起こして追放されてしまったため、貴族の中でトップの地位となりました。
自分の{{ruby|娘|むすめ}}を{{ruby|天皇|てんのう}}のきさきにしたり、自分の{{ruby|権力|けんりょく}}がゆるぎないものになったと確信し、下の「{{ruby|望月|もちづき}}の歌」を作りました。
この世をば {{ruby|我|わ}}がぞと思う 望月の かけたることも なしと思えば
(この世は、望月(満月)のように欠けているところがなく、自分のもののようだ。)
道長は「{{ruby|源氏|げんじ}}物語」の{{ruby|光|ひかる}}源氏のモデルだといわれています。道長が{{ruby|活躍|かつやく}}していたころ、「源氏物語」を書いた{{ruby|紫式部|むらさきしきぶ}}は{{ruby|朝廷|ちょうてい}}で道長の{{ruby|娘|むすめ}}の教育係をしていました。紫式部は教育係をしながら朝廷の人々の様子を観察していたと言われています。このことから、主人公の光源氏は、道長がモデルではないかといわれています。
=== [[w:菅原道真|{{ruby|菅原道真|すがわらのみちざね}}]] ===
{{ruby|遣唐使|けんとうし}}の{{ruby|廃止|はいし}}を申し出ました。ライバルの{{ruby|藤原|ふじわら}}氏らの{{ruby|陰謀|いんぼう}}により、悪名を着せられ、{{ruby|太宰府|だざいふ}}に追いやられました。太宰府は、今の{{ruby|福岡|ふくおか}}県にありました。道真は、学問に{{ruby|秀|ひい}}でていたと言われ、現在では、学問の神様としてもまつられています。
=== [[w:紫式部|{{ruby|紫式部|むらさきしきぶ}}]] ===
970年~?。{{ruby|一条天皇|いちじょうてんのう}}のきさき(妻)の{{ruby|彰子|しょうこ}}に仕えました。「紫式部日記」を書きました。
巡りあ{{ruby|ひ|(い)}}て みしやそれとも わかぬまに 雲がくれにし {{ruby|夜半|よは}}のつきかな - 紫式部
{{ruby|恋愛|れんあい}}小説『{{ruby|源氏物語|げんじものがたり}}』の作者。
主人公は、{{ruby|光|ひかる}}源氏という名の美少年。
源氏物語は、今も世界中で人気がある。
=== [[w:清少納言|{{ruby|清少納言|せいしょうなごん}}]] ===
966年〜1025年頃。{{ruby|一条天皇|いちじょうてんのう}}の きさき(妻) の[[w:藤原定子|{{ruby|藤原定子|ふじわらのていし/さだこ}}]]につかえた。
夜をこめて とりのそらねは はかるとも 世に{{ruby|あふ|おお}}さかの せきはゆるさじ - 清少納言
{{ruby|随|ずい}}筆である『{{ruby|枕草子|まくらのそうし}}』の作者です。
=== [[w:平清盛|{{ruby|平清盛|たいらのきよもり}}]] ===
{{ruby|平家|へいけ}}の武士として、日本の歴史上、初めて、政治{{ruby|権力|けんりょく}}の{{ruby|中枢|ちゅうすう}}をにぎった人物。{{ruby|源氏|げんじ}}と戦い武士ではじめて{{ruby|太政|だいじょう}}大臣となりました。1181年に{{ruby|亡|な}}くなりました。
平家の権力の{{ruby|最盛期|さいせいき}}には、「平家にあらずんば、人にあらず」(平家でなければ人でない)とも言われました。
1185年、平氏は、源氏によって{{ruby|壇ノ浦|だんのうら}}、現在の{{ruby|山口|やまぐち}}県で{{ruby|滅|ほろ}}ぼされました。
== 鎌倉時代~戦国時代 ==
=== {{ruby|鎌倉|かまくら}}時代 ===
==== [[w:源頼朝|{{ruby|源頼朝|みなもとのよりとも}}]] ====
{{ruby|源氏|げんじ}}と{{ruby|平家|へいけ}}が戦っていた時代の、源氏の{{ruby|棟梁|とうりょう}}(リーダー)。関東地方({{ruby|鎌倉|かまくら}})から、弟の{{ruby|義経|よしつね}}らに指示を送って平家を{{ruby|倒|たお}}した。平家滅亡に向けた{{ruby|戦|いくさ}}には頼朝は出向いていません。
全国を支配し、鎌倉{{ruby|幕府|ばくふ}}をひらき、1192年に{{ruby|征夷大将軍|せいいたいしょうぐん}}に任命されました。
* 関連する人物
:[[w:北条政子|{{ruby|北条政子|ほうじょうまさこ}}]]
:頼朝の妻。
:頼朝が{{ruby|亡|な}}くなった後、しばらくは源氏から{{ruby|将軍|しょうぐん}}が出たが、その後、頼朝の{{ruby|家系|かけい}}が{{ruby|途|と}}絶え、北条氏が、{{ruby|執権|しっけん}}として{{ruby|権力|けんりょく}}をにぎった。
==== [[w:源義経|{{ruby|源義経|みなもとのよしつね}}]] ====
:{{ruby|頼朝|よりとも}}の弟。実際に平家と戦っていたのは義経など、頼朝の部下だったが、源氏と平家の戦いが終わったあと、義経は兄の頼朝に{{ruby|疎|うと}}んじられ、義経は東北方面に{{ruby|逃|に}}げるはめとなりましたが、頼朝の軍勢の{{ruby|追撃|ついげき}}にあい、最終的に、頼朝の軍勢によって{{ruby|滅|ほろ}}ぼされた。
==== [[w:北条時宗|{{ruby|北条時宗|ほうじょうときむね}}]] ====
{{ruby|元寇|げんこう}}でモンゴル軍が{{ruby|攻|せ}}め{{ruby|込|こ}}みんできたときの、{{ruby|鎌倉幕府|かまくらばくふ}}の{{ruby|執権|しっけん}}。
* 関連する人物
:[[w:クビライ|フビライ・ハン]]
:元寇のときの、モンゴル本国での{{ruby|皇帝|こうてい}}(ハン)。日本の戦場には、フビライは出向いていない。そもそもフビライは、日本には全く関心がなかった。
:{{ruby|彼|かれ}}が支配しようとしていたのは、おそらくユーラシア大陸方面であり、すでに中国のほとんどを支配していた。支配を広げようと、このころの時代の前後に、ベトナムや{{ruby|朝鮮|ちょうせん}}半島などの周辺の国々とも戦争をしていたので、そのついでに日本にも攻め込んできただけである。
:[[w:竹崎季長|{{ruby|竹崎季長|たけさきすえなが}}]]
:元寇のときの鎌倉幕府の{{ruby|御家人|ごけにん}}。自身の戦いを「{{ruby|蒙古襲来絵詞|もうこしゅうらいえまき}}」に{{ruby|描|えが}}かせた。
====[[w:運慶|{{ruby|運慶|うんけい}}]]====
====[[w:快慶|{{ruby|快慶|かいけい}}]]====
二人の彫刻家。金剛力士像(こんごうりきしぞう)の作者。
鎌倉時代の、武士の支配する世相(せそう)を反映してか、この時代には、このような力強い作品も、好まれるようになった。
=== 室町時代 ===
==== 足利尊氏 ====
「あしかがたかうじ」。尊氏は、有力だった御家人である「足利貞氏」の息子として生まれた。鎌倉幕府がまだ生まれた時にあり、元は源氏の一族だった。若い頃についての記録がほとんどなく、出身地も鎌倉・足利・丹波など様々な説がある。
「後醍醐天皇が天皇を中心とする政治を復活させよう!」と幕府に2回も争いを仕掛けたが、敗北し島根県に追放された。しかし、後醍醐天皇は島根県から脱出して3度目の争いに挑んだ。この時尊氏は天皇の味方にならないかと誘われ、鎌倉幕府にも恩はあったが不満を抱えた尊氏は最後は天皇軍に加わった。その後いろんな場所で戦いを繰り広げ、1333年に幕府を滅ぼした。
滅ぼした後醍醐天皇は、自分の名から1字を与え「尊氏」になったという。しかし天皇を中心とする政治を行ってたため武士の不満はどんどん高まった。尊氏も天皇の政治に不満を持っていた。
そこで尊氏は武士の政治を取り戻そうと1336年に光明天皇を即位させ、後醍醐天皇を奈良に追い払った。そうした末、光明天皇から征夷大将軍に任命され、室町幕府を開いた。
==== 足利義満 ====
「あしかがよしみつ」。義満は南北朝を統一させたことで有名。
室町幕府の基礎固めをする中で、京都の室町に貴族の屋敷に見立てた武家屋敷を作った。ここに幕府を移して政治を行うためであった。その屋敷は広い庭には四季折々の花が咲き乱れたことから、人々は「花の御所」と呼ぶようになった。
南北朝を統一させた義満は息子に将軍の職を譲って、京都の北山に別荘を建てては華やかな余生を過ごした。その別荘の中にある、外側に金を張り巡らせた建物だったことから【金閣寺】と言われている。
==== 足利義政====
「あしかがよしまさ」。応仁の乱のさなか、子に将軍職をゆずり文化に没頭した。
有名な銀閣は晩年に建てられた。
==== 雪舟 ====
「せっしゅう」水墨画(すいぼくが)を日本風にした人。
なお、水墨画は、中国大陸が起源(きげん)であり、日本が起源ではない。
=== 戦国時代 ===
==== 有力な戦国大名 ====
*武田信玄
:{{ruby|甲斐|かい}}(現在の山梨県)の戦国大名。後に{{ruby|信濃|しなの}}(長野県)と{{ruby|駿河|するが}}(静岡県の東部)などにも勢力を伸ばす。信濃への勢力拡大の最中に{{ruby|越後|えちご}}(新潟県)の上杉謙信と5回戦った([[w:川中島の戦い]])。
:「風林火山」とよばれる旗印で有名。「風林火山」は「{{ruby|疾|と}}きこと(※ 早いこと、という意味 )風のごとく、静かなること林のごとし、侵略すること火のごとく、動かざること山のごとし。」という言葉に由来する。
:分国法の一つである「{{ruby|甲州法度次第|こうしゅうはっとのしだい}}」を定めた。
:晩年に織田信長・徳川家康とも戦う([[w:三方ヶ原の戦い]])が、その後に死去。あとを継いだ武田勝頼の代で武田家は滅亡する。
*上杉謙信
:{{ruby|越後|えちご}}(新潟県)の戦国大名。元々は長尾景虎という名前であったが、後に関東の名門である上杉家を継いだため、上杉輝虎と名のる(謙信の名は晩年。以下では謙信で統一)。
:謙信は義理にあつかった人物と言われている。武田家が塩不足に悩まされていたときに、相手の弱味につけこむのは{{ruby|卑怯|ひきょう}}とかんがえたのだろうか、武田家に塩を送り、「敵に塩を送る」のことわざの語源とされる。
*今川義元
:{{ruby|駿河|するが}}(静岡県東部)と{{ruby|遠江|とおとうみ}}(静岡県西部)の戦国大名。足利家の一門でもあった有力大名。武田信玄などとも同盟を組み、{{ruby|三河|みかわ}}(愛知県東部)と{{ruby|尾張|おわり}}(愛知県西部)にも勢力を伸ばすが、[[w:桶狭間の戦い]]で織田信長に敗れて戦死する。息子の氏真の代のときに武田信玄と徳川家康とに攻められて大名家としては滅亡する。
:分国法の一つである{{ruby|今川仮名目録|いまがわかなもくろく}}に追加を行った。
*毛利元就
:{{ruby|安芸|あき}}(広島県)の戦国大名。元々は小さな{{ruby|領主|りょうしゅ}}にすぎなかったが、周辺の小領主を吸収して勢力を拡大する。そして、[[w:厳島の合戦]]などで周囲の有力大名を倒し、中国地方の大部分を統一する。
:「三本の矢」の言い伝えで有名。元就が死ぬ直前、3人の息子達に矢を1本ずつわたして「折ってみよ」と命じた。息子はたちはなんなく矢を折った。つぎに、元就は息子に3本の矢をわたしてもう一度「この矢を折ってみよ」と言った。3本の矢はかたく、息子たちは、矢を折れなかった。そこで「おまえたちも、この矢のように3人が力をあわせよ」と言ったという。(ただし、史実ではないことが分かっている)
*島津貴久
:{{ruby|薩摩|さつま}}(鹿児島県西部)の戦国大名。元々は島津家の分家の出だったが、本家の養子となる。父の協力をえながら対立していた他の分家や豪族を押さえ、薩摩を統一する。その後、{{ruby|大隅|おおすみ}}(鹿児島県東部)・{{ruby|日向|ひゅうが}}(宮崎県)にも勢力を拡大する。
:鹿児島に渡来したフランシスコ・ザビエルと面会し、日本で初めてキリスト教の布教を許可する。しかし、領地の神社・寺院の反発が激しく、布教を禁止する。
:息子の義久の代で、島津家の悲願であった大隅・日向の統一に成功する。さらに、九州の有力大名も倒して九州の大半を統一するが、豊臣秀吉に敗れて薩摩・大隅・日向の一部の大名となる。
*長宗我部元親
*三好長慶
*顕如
====フランシスコ・ ザビエル ====
戦国時代のころ、日本に、キリスト教を布教しにきた最初の人物。いわゆる宣教師(せんきょうし)のうちの一人。
* 関連する人物
:ルイス=フロイス
ルイス=フロイスは、宣教師の一人であり、信長に気に入られた。
=== 安土桃山時代 ===
==== 織田信長 ====
1534年~1582年。有名な合戦: 桶狭間の戦い、姉川の戦い、石山合戦、長篠の合戦、など。
元々は尾張(愛知県西部)の一部を治める大名であったが、対立する親類や勢力をたおして尾張を統一する。1560年に桶狭間(おけはざま)の戦いで今川義元を討ち取る。この戦いのあと、三河の松平元康(のちの徳川家康。以下、家康で統一)が独立し、家康と信長とが同盟を1562年にむすんだ。
その後、{{ruby|美濃|みの}}(岐阜県南部)の戦国大名・斎藤竜興を倒し、信長は美濃も統一した。そして、信長は拠点を岐阜城に移した。
1568年、室町幕府13代将軍・足利義輝の弟・足利義昭(よしあき)の求めに応じ、上洛を開始する。信長は対立した大名を倒し、そうでない大名とは協力関係を築くことで上洛に成功する。
だが、信長の勢いが増すうちに、しだいに足利義昭と信長は対立するようになる。足利義昭は、信長以外の日本全国の大名に、信長をたおすように書状でよびかけた。そして、武田信玄や近江(滋賀県)の浅井長政、{{ruby|越前|えちぜん}}(福井県の大半)の朝倉義景などの有力な大名や{{ruby|比叡山|ひえいざん}}{{ruby|延暦寺|えんりゃくじ}}と一向一揆のような一部の仏教勢力が、信長に敵対した。信長の周囲のほとんどが敵に回ったため、一時は大変な危機におちいった。しかし、浅井・朝倉などを各個に撃破することに成功した上に武田信玄が病死したため、危機を乗り切った。
そして、信長は1573年、足利義昭を京都から追い出し、室町幕府は信長によって滅ぼされた。
1575年、徳川家康は武田信玄のあとをついだ武田勝頼に攻め込まれ、信長が救援に向かう。両軍は長篠(三河国)で戦いとなり、織田・徳川軍は鉄砲を大量に使用し<ref>千丁(一説に三千丁)とも言われる</ref>、武田軍に勝った。これが長篠の合戦である。
1576年に信長は安土城を築いた。1582年、毛利家と戦っていた部下の羽柴秀吉を援助しようと、道中で本能寺に寝泊まりしていたところを、部下の明智光秀によって裏切られ、自害する(本能寺の変)。
信長は新しいもの好きだったようで、宣教師(せんきょうし)が地球儀を見せると、即座に地球が丸いことを理解したという。
後世の江戸時代以降の作家からは、信長の性格の例えとして「鳴かぬなら殺してしまえホトトギス」などと信長は評されている。
* 家臣
:柴田勝家(しばた かついえ)
:羽柴秀吉(はしば ひでよし)
:前田利家(まえだ としいえ)
:明智光秀(あけち みつひで)
など、ほか多数。
==== 豊臣秀吉 ====
信長亡き後、明智光秀を倒し検地を始めた。大阪城を築き、関白となると翌年には太政大臣となった。刀狩令を出した2年後に天下統一を成し遂げた。その後、朝鮮に2度攻め込み、2回目の侵略中に病死した。
==== その他 ====
*千利休
:お茶を飲む習慣は鎌倉時代に始まっていたが、室町時代になると茶の湯として広く流行し、茶器の工芸品としての価値も高まった。そのため、高価な茶器を用いた豪華な茶会が開かれるようになった。
:そのような風潮に対して、一見ありふれたような道具を用い、そまつな中の美しさを見出し、客と主人との心の交流を重んじる[[w:わび茶]]が生まれる。このわび茶をもとにして、現在の茶道を作り上げたのが千利休である。
:堺の有力商人でもあった利休は、織田信長などとの取引をつうじて関係を築き上げていった。このため武将たちとも交流ができ、多くの弟子が生まれた。信長の死後、豊臣秀吉に仕えるが、秀吉の怒りをかってしまい、利休は切腹させられた。
*狩野永徳
:戦国時代の有名な絵描きの一人。「狩野派」(かのうは)とは、彼、および、彼の弟子や孫弟子などの一門のことである。
== 江戸時代 ==
===[[w:徳川家康|{{ruby|徳川家康|とくがわいえやす}}]]===
[[File:Tokugawa_Ieyasu2.JPG|thumb|250px|徳川家康]]
:1543年、{{Ruby|三河|みかわ}}(現在の愛知県東部)の大名{{Ruby|松平|まつだいら}}氏に生まれます。松平氏は三河の国人出身の大名でしたが、隣接する{{ruby|今川|いまがわ}}氏や織田氏に比べると弱小な大名でした。家康は家を継ぐ前、{{Ruby|松平元康|まつだいらもとやす}}と言って、今川氏に人質に出されていたことがあります。
:1560年[[#桶狭間の戦い|{{ruby|桶狭間|おけはざま}}の戦い]]で[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#今川義元|今川義元]]が討ち死にし、今川氏が弱くなると、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#織田信長|信長]]と同盟し三河をとりもどします。そして、名を{{ruby|徳川家康|とくがわいえやす}}とかえ、{{Ruby|遠江|とおとおみ}}をせめとります。その後、信長の同盟国として武田氏や北条氏と隣接する信長の勢力の東南部を守り続けます。
:1572年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#三方原の戦い|{{ruby|三方原|みかたがはら}}の戦い]]では大敗し、命の危険もありましたが、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#武田信玄|武田信玄]]が病死し、兵は甲斐へもどったため一命をとりとめました。
:逆に、1575年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#長篠の戦い|長篠の戦い]]では、信長との連合軍で、{{ruby|武田勝頼|たけだかつより}}に大勝し{{Ruby|駿河|するが}}をえ、1582年武田氏をほろぼして{{Ruby|甲斐|かい}}と{{Ruby|信濃|しなの}}の一部をえました。
:秀吉には、後継者争いで一時抵抗し、秀吉の軍をくだすなどしたのですが、和解し、その後はしたがいます。
:1590年、秀吉の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#小田原攻め|小田原攻め]]に協力し北条氏を攻め滅ぼしますが、秀吉の命令によって、領地を北条氏のおさめていた関東に移され、{{Ruby|江戸|えど}}城を{{Ruby|拠城|きょじょう}}としました。
:秀吉の生前は、秀吉配下では最大の大名となっており、秀吉政権においては五大老の筆頭でした。
:秀吉の死後、1600年、[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代#関ヶ原の戦い|関ヶ原の戦い]]に勝利して政権を握ります。
:1603年、{{Ruby|朝廷|ちょうてい}}から [[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#将軍|{{Ruby|征夷大将軍|せいいたいしょうぐん}}]]に任命され、江戸の幕府を開きます。
:1614年から翌年に「大坂の陣」を起こして豊臣氏を滅ぼしたのち、1616年亡くなりました。「東照大権現」として、日光東照宮などにまつられています。
=== [[w:徳川家光|{{ruby|徳川家光|とくがわいえみつ}}]] ===
家光は江戸幕府第3代目将軍。征夷大将軍になると、武家諸法度の中に新しく参勤交代という制度を創り江戸幕府の支配を固めだした。老中、大老を置いた
===<span id="近松門左衛門"/>[[w:近松門左衛門|{{ruby|近松門左衛門|ちかまつもんざえもん}}]]===
人形浄瑠璃・歌舞伎の作者。町人社会の義理や人情をテーマとした作品([[w:世話物]])や歴史的な事件や出来事を扱った[[w:時代物]]で評判を得る。
代表作は「曽根崎心中」「{{ruby|冥途|めいど}}の飛脚」「{{ruby|女殺油地獄|おんなごろしあぶらのじごく}}」「{{ruby|国姓爺合戦|こくせんやかっせん}}」など。
===<span id="歌川広重"/>[[w:歌川広重|{{ruby|歌川(安藤)広重|うたがわ(あんどう)ひろしげ}}]]===
『東海道五十三次』で有名な浮世絵師。
=== <span id="本居宣長"/>本居宣長 ===
「もとおりのりなが」国学を学ぶ。
『古事記伝』を著す。
=== <span id="杉田玄白"/>杉田玄白 ===
[[File:Kaitai Shinsho 29-1.png|thumb|解体新書。]]
前野良沢と共にオランダ書「ターヘル・アナトミア」を日本語に訳し、「解体新書」を完成させた。
=== <span id="伊能忠敬"/>伊能忠敬 ===
日本中を駆け巡り、正確な日本地図を作る。
=== <span id="マシュー・ペリー"/>マシュー・ペリー ===
日本に開国を求め、1854年に日米和親条約を結ぶ。
=== <span id="勝海舟"/>勝海舟 ===
幕臣
西郷隆盛と話し合い、江戸城を人が死ぬことなく開城させた。
=== <span id="坂本龍馬"/>坂本龍馬 ===
西郷隆盛(薩摩藩)と木戸孝允(長州藩)を結び付け薩長同盟の成立に大きな役割を果たした。
また、土佐藩の仲間を中心に、日本初の貿易会社(海援隊)を長崎で作り、物産や武器の貿易をした。
33歳の時何者かに暗殺され、亡くなった。
== {{ruby|明治|めいじ}}時代 ==
=== <span id="西郷隆盛"/>[[w:西郷隆盛|{{ruby|西郷隆盛|さいごうたかもり}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。「討幕」を主導するなど{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
:討幕後、{{ruby|廃藩置県|はいはんちけん}}を主導するなど、新しい社会を作るために、古い武家社会の消滅に貢献しました。
:征韓論を唱えて、政府を離れました。
:鹿児島に戻って、若者の指導をしていましたが、新政府に不満を持つ士族にかつぎあげられ、西南戦争を起こし敗死します。
=== <span id="大久保利通"/>[[w:大久保利通|{{ruby|大久保利通|おおくぼとしみち}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。西郷隆盛等とともに討幕を主導します。
:維新後は、内務省を作り、日本の官僚制度を作り上げます。
:西南戦争時には、これを指導し政府を勝利に導きます。
:西南戦争の翌年、不平士族に暗殺されます。
=== <span id="木戸孝允"/>[[w:木戸孝允|{{ruby|木戸孝允|きどたかよし}}]] ===
{{ruby|長州藩|ちょうしゅうはん}}出身。{{ruby|西郷隆盛|さいごうたかもり}}と同じく、{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
=== <span id="明治天皇"/>[[w:明治天皇|{{ruby|明治天皇|めいじてんのう}}]] ===
明治時代の天皇。{{ruby|五箇条|ごかじょう}}の{{ruby|御誓文|ごせいもん}}を発布しました。
=== <span id="伊藤博文"/>[[w:伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:大久保利通の跡を継いで、日本の官僚制度を整備します。
:その完成として{{ruby|内閣|ないかく}}制度を{{ruby|創設|そうせつ}}し、初代{{ruby|内閣総理大臣|ないかくそうりだいじん}}となります。
:ヨーロッパを回り、大日本{{ruby|帝国憲法|けんぽう}}の手本となる憲法を研究し、ドイツ(当時はプロシア)の憲法を手本とすることにしました。
=== <span id="渋沢栄一"/>[[w:渋沢栄一|{{ruby|渋沢栄一|しぶさわえいいち}}]] ===
:銀行、証券取引所、保険制度、商工会議所など、近代的な経済の仕組みを日本に導入した実業家です。
* 関連する人物
: [[w:岩崎弥太郎|{{ruby|岩崎弥太郎|いわさきやたろう}}]]
=== <span id="福澤諭吉"/>[[w:福澤諭吉|{{ruby|福沢諭吉|ふくざわゆきち}}]] ===
[[画像:福澤諭吉像2.jpg|250px|thumb|福澤諭吉像(東京都港区三田・慶應大学構内)]]
:1835年 - 1901年
:豊前国中津藩(現在の大分県中津市)の下級武士の子として生まれます。大阪の「適塾」で蘭学を学び、1859年[[#勝海舟|勝海舟]]らが率いる咸臨丸に同乗し渡米の経験をえ、その後ヨーロッパを訪問、再び米国を訪れるなどして、蘭学のみならず英語による欧米の文物の知識を得るようになります。
:1868年(慶応4年)に、蘭学塾である'''慶應義塾'''を開きます。それまで、医学や化学など科学技術が中心であった蘭学塾と異なり、欧米の思想や会計などの制度も教えました。また、蘭学塾といいながら英語によるものが教えられていました。これが、日本で最初の近代的大学と言われる'''慶應義塾大学'''(慶應大学)の創始です。
:明治時代になって、「自由」や「平等」など「権利」「人権」といった欧米の近代思想を数々の著書を通じて紹介しました。『学問のすすめ』の中では「天は人の上に人を造らず、人の下に人を造らず」と、生まれながらの平等を説いて、努力次第で社会の重要な地位に就くことができること(立身出世)を主張しました。
:官主導の明治政府に対して、民間の立場から、新聞や出版物で社会を啓蒙し、教え子を民間の各所で活躍させるなどして、日本社会の近代化を主導しました。
:現在({{#time:Y|+9 hours}}年)の1万円札の肖像に用いられています。
* 関連する人物
: [[w:中江兆民|{{ruby|中江兆民|なかえちょうみん}}]]
: [[w:金玉均|{{ruby|金玉均|きんぎょくきん}}]] <!-- 当然、荒らしではありません -->
=== <span id="大隈重信"/>[[w:大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]] ===
:{{ruby|地租改正|ちそかいせい}}などの{{ruby|改革|かいかく}}にあたるとともに、{{ruby|殖産興業|しょくさんこうぎょう}}を{{ruby|推進|すいしん}}しました。
:自由民権運動を主導しました。
=== <span id="板垣退助"/>[[w:板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]] ===
自由{{ruby|民権|みんけん}}運動の主導者です。
=== <span id="陸奥宗光"/>[[w:陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]] ===
日米修好通商条約の{{ruby|領事裁判権|りょうじさいばんけん}}({{ruby|治外法権|ちがいほうけん}})の{{ruby|撤廃|てっぱい}}に成功しました。
=== <span id="山県有朋"/>[[w:山県有朋|{{ruby|山県有朋|やまがたありとも}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:日本陸軍の仕組みを作り上げ、政府に対する強い地位を確立した。
* 関連する人物
:[[w:川上操六|{{ruby|川上操六|かわかみそうろく}}]]
:[[w:山本権兵衛|{{ruby|山本権兵衛|やまもとごんのひょうえ(ごんべい)}}]] - 海軍において山縣有朋と同様の役割を果たした。
=== <span id="東郷平八郎"/>[[w:東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]] ===
:{{ruby|日露|にちろ}}戦争で{{ruby|活躍|かつやく}}した海軍軍人です。
関連する人物
:[[w:大山巌|{{ruby|大山巌|おおやまいわお}}]]
:[[w:児玉源太郎|{{ruby|児玉源太郎|こだまげんたろう}}]]
:[[w:乃木希典|{{ruby|乃木希典|のぎまれすけ}}]]
:メッケル
=== <span id="小村寿太郎"/>[[w:小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]] ===
:日露戦争の講和会議に全件として出席し、ポーツマス条約を締結して日露戦争を終わらせた。
:1911(明治44)年にアメリカとの{{ruby|交渉|こうしょう}}で関税自主{{ruby|権|けん}}を回復させた。
=== <span id="野口英世"/>[[w:野口英世|{{ruby|野口英世|のぐちひでよ}}]] ===
:1876年(明治9年) - 1928年(昭和3年)。医師、細菌学者。
:福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)出身。高等小学校を卒業して上京し、済生学舎(日本医科大学の前身)に通い、医術開業試験に合格して医師となり、渡米してペンシルベニア大学医学部の助手を経て、ロックフェラー医学研究所研究員となった。
:主に細菌学の研究に従事し、{{ruby|黄熱病|おうねつびょう}}や梅毒の研究で知られる。数々の論文を発表し、ノーベル生理学・医学賞の授賞候補に三度名前が挙がった。黄熱病の研究中に自身もそれにかかり、英領ゴールド・コースト(現在のガーナ共和国)のアクラで51歳で死去。
:1000円札にのっている人物として有名。
:その他、[[小学校社会/6学年/歴史編/国際社会に進み出す日本-明治末期から大正時代#野口英世]]を参照。
===<span id="北里柴三郎"/>[[w:北里柴三郎|{{ruby|北里柴三郎|きたさとしばさぶろう}}]]===
:ドイツに留学し、伝染病を研究。帰国後、伝染病の研究所作ろうとしたが、政府の援助は得られなかったところ、{{ruby|福沢諭吉|ふくざわゆきち}}が支援し研究所が完成、{{ruby|志賀潔|しがきよし}}、野口英世などの研究者が生まれ育っていった。
== {{ruby|昭和|しょうわ}}時代 ==
=== <span id="昭和天皇"/>[[w:昭和天皇|{{ruby|昭和天皇|しょうわてんのう}}]] ===
{{ruby|昭和|しょうわ}}時代の{{ruby|天皇|てんのう}}。
=== <span id="吉田茂"/>[[w:吉田茂|{{ruby|吉田茂|よしだしげる}}]] ===
:アメリカ合衆国占領下の日本で、新憲法の成立と日本の新しい民主主義体制を確立させ、サンフランシスコ講和条約を締結し日本の主権を回復しました。。
=== <span id="佐藤栄作"/>[[w:佐藤栄作|{{ruby|佐藤栄作|さとうえいさく}}]] ===
:1964年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
:日本の高度成長をおしすすめ、沖縄の日本への復帰を成功させました。
:日本人で初めて、ノーベル平和賞を受賞しています。
=== <span id="田中角栄"/>[[w:田中角栄|{{ruby|田中角栄|たなかかくえい}}]] ===
1972年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
==脚注==
<references/>
[[Category:社会|しようかつこうしやかい6しんふつ]]
c4htsut2tljzte6rpkozrh95i268phv
205978
205976
2022-07-29T08:02:39Z
Mtodo
450
/* {{ruby|徳川家康|とくがわいえやす}} */
wikitext
text/x-wiki
{{半保護S}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|frame=1}}
{{stub}}
ここには、小学校の歴史の勉強で出てくる人物について書いてあります({{ruby|発展|はってん}}的な内容および人物もふくまれています)。もっとくわしく知りたいときは、色がついているタイトルの名前をクリックしてください。ウィキペディアにあるページにリンクしてあります。少し{{ruby|難|むずか}}しいかもしれませんので、事典や身近な大人をフル活用してください。
<!--執筆者へ
あまり長くならないよう、4〜5行程度にまとめてください。
第1行目には、「生没年」があるといいと思います。-->
また、難しいかもしれませんが、[[中学受験社会/歴史/人物]]をみてもいい情報があるかもしれません。
== {{ruby|弥生|やよい}}時代 ==
=== [[w:卑弥呼|{{ruby|卑弥呼|ひみこ}}]] ===
3世紀はじめごろ。{{ruby|邪馬台国|やまたいこく}}の女王で、神のおつげやうらないで政治を行った。当時、中国にあった{{ruby|魏|ぎ}}という国に使いを送り、その時に親魏倭王の称号を与えられたとその国の歴史書({{ruby|魏志倭人伝|ぎしわじんでん}})に記されている。邪馬台国があったと考えられる場所は、{{ruby|奈良|なら}}と九州北部の説が有力である。一番古い時代に作られた{{ruby|古墳|こふん}}が、卑弥呼の墓で、奈良に邪馬台国があった場合、{{ruby|箸墓|はしはか}}古墳が卑弥呼の墓ではないか、と考えられている。
== {{ruby|飛鳥|あすか}}時代 ==
=== {{Ruby|[[w:聖徳太子|聖徳太子]]|しょうとくたいし}} ===
572年~622年。{{ruby|厩戸王|うまやとおう}}などとも{{ruby|呼|よ}}ばれる。[[w:推古天皇|{{ruby|推古|すいこ}}天皇]]に代わって政治を行う{{ruby|摂政|せっしょう}}として{{ruby|活躍|かつやく}}。{{ruby|仏教|ぶっきょう}}や中国の{{ruby|儒教|じゅきょう}}の教えをもとに、{{ruby|朝廷|ちょうてい}}の役人の{{ruby|心得|こころえ}}である[[w:十七条憲法|{{ruby|十七条の憲法|じゅうしちじょうのけんぽう}}]]を定めた。また、能力が高かったり手がらをたてた人が重要な仕事をできる[[w:冠位十二階|{{ruby|冠位十二階|かんいじゅうにかい}}]]の制度をつくった。仏教を深く{{ruby|信仰|しんこう}}していた聖徳太子は、[[w:法隆寺|{{ruby|法隆寺|ほうりゅうじ}}]]を建て、仏教の力で平和な世の中になるように願った。10人が同時に話しても、そのすべての内容を理解したなどの伝説がある。
* 関連する人物
[[w:推古天皇|{{ruby|推古天皇|すいこてんのう}}]]
=== [[w:小野妹子|{{ruby|小野妹子|おののいもこ}}]] ===
6世紀後半〜7世紀前半。{{ruby|男性|だんせい}}である。607年、{{ruby|聖徳太子|しょうとくたいし}}の命令で第2回[[w:遣隋使|{{ruby|遣隋使|けんずいし}}]]として中国の隋の国にわたる。608年には第3回遣隋使となっている。
=== [[w:天智天皇|{{ruby|中大兄皇子|なかのおおえのおうじ}}]] ===
のちの{{ruby|天智天皇|てんじてんのう}}です。なくなった[[#聖徳太子|聖徳太子]]の意志を受けつぐため、{{ruby|中臣鎌足|なかとみのかまたり}}とともに{{ruby|蘇我|そが}}氏を{{ruby|倒|たお}}した。これを、{{ruby|大化|たいか}}の改新 という。そして天皇中心とした国づくりが行われた。
=== [[w:藤原鎌足|{{ruby|中臣鎌足|なかとみのかまたり}}]] ===
{{ruby|中大兄皇子|なかのおおえのおうじ}}と協力して {{ruby|大化|たいか}}の改新 を進めた。
やがて、{{ruby|藤原姓|ふじわらせい}}をもらう。
大化の改新の中心人物は、{{ruby|中大兄皇子|なかのおおえのおうじ}}と{{ruby|中臣鎌足|なかとみのかまたり}}である。
== {{ruby|奈良|なら}}時代 ==
=== [[w:聖武天皇|{{ruby|聖武天皇|しょうむてんのう}}]] ===
聖武天皇の時代は災が多かったために、都を移動させたり、東大寺を中心に国分寺を国ごとに建てさせた。仏教を{{ruby|信仰|しんこう}}し農民などの不安をしずめるため、大仏を作る{{Ruby|詔|みことのり}}(天皇の命令)を出した。
=== [[w:行基|{{ruby|行基|ぎょうき}}]] ===
一般の民衆への仏教の布教が禁止されていた時代に、布教を行った{{ruby|僧|そう}}。{{ruby|朝廷|ちょうてい}}からは{{ruby|弾圧|だんあつ}}されたが、{{ruby|民衆|みんしゅう}}からは{{ruby|尊敬|そんけい}}された。国民の平和を願う大仏を作った。
しかし、大仏が出来る前に死んでしまった。
=== [[w:鑑真|{{ruby|鑑真|がんじん}}]] ===
{{ruby|聖武天皇|しょうむてんのう}}から{{ruby|招|まね}}かれ、{{ruby|僧|そう}}として中国から日本に11年かけて{{ruby|渡|わた}}ってきたが、5度の失敗ゆえに失明してしまった。{{ruby|唐招提寺|とうしょうだいじ}}を建て日本に正しい仏教を伝えたとされている。
その他に医学や薬学、美術工芸なども伝えた。
== {{ruby|平安|へいあん}}時代 ==
=== [[w:藤原道長|{{ruby|藤原道長|ふじわらのみちなが}}]] ===
{{ruby|中臣鎌足|なかとみのかまたり}}を祖先とする{{ruby|貴族|きぞく}}。
道長は信じられないくらい運が良かったといわれています。道長は兄弟の中では末っ子でしたが、兄たちが病気や事件を起こして追放されてしまったため、貴族の中でトップの地位となりました。
自分の{{ruby|娘|むすめ}}を{{ruby|天皇|てんのう}}のきさきにしたり、自分の{{ruby|権力|けんりょく}}がゆるぎないものになったと確信し、下の「{{ruby|望月|もちづき}}の歌」を作りました。
この世をば {{ruby|我|わ}}がぞと思う 望月の かけたることも なしと思えば
(この世は、望月(満月)のように欠けているところがなく、自分のもののようだ。)
道長は「{{ruby|源氏|げんじ}}物語」の{{ruby|光|ひかる}}源氏のモデルだといわれています。道長が{{ruby|活躍|かつやく}}していたころ、「源氏物語」を書いた{{ruby|紫式部|むらさきしきぶ}}は{{ruby|朝廷|ちょうてい}}で道長の{{ruby|娘|むすめ}}の教育係をしていました。紫式部は教育係をしながら朝廷の人々の様子を観察していたと言われています。このことから、主人公の光源氏は、道長がモデルではないかといわれています。
=== [[w:菅原道真|{{ruby|菅原道真|すがわらのみちざね}}]] ===
{{ruby|遣唐使|けんとうし}}の{{ruby|廃止|はいし}}を申し出ました。ライバルの{{ruby|藤原|ふじわら}}氏らの{{ruby|陰謀|いんぼう}}により、悪名を着せられ、{{ruby|太宰府|だざいふ}}に追いやられました。太宰府は、今の{{ruby|福岡|ふくおか}}県にありました。道真は、学問に{{ruby|秀|ひい}}でていたと言われ、現在では、学問の神様としてもまつられています。
=== [[w:紫式部|{{ruby|紫式部|むらさきしきぶ}}]] ===
970年~?。{{ruby|一条天皇|いちじょうてんのう}}のきさき(妻)の{{ruby|彰子|しょうこ}}に仕えました。「紫式部日記」を書きました。
巡りあ{{ruby|ひ|(い)}}て みしやそれとも わかぬまに 雲がくれにし {{ruby|夜半|よは}}のつきかな - 紫式部
{{ruby|恋愛|れんあい}}小説『{{ruby|源氏物語|げんじものがたり}}』の作者。
主人公は、{{ruby|光|ひかる}}源氏という名の美少年。
源氏物語は、今も世界中で人気がある。
=== [[w:清少納言|{{ruby|清少納言|せいしょうなごん}}]] ===
966年〜1025年頃。{{ruby|一条天皇|いちじょうてんのう}}の きさき(妻) の[[w:藤原定子|{{ruby|藤原定子|ふじわらのていし/さだこ}}]]につかえた。
夜をこめて とりのそらねは はかるとも 世に{{ruby|あふ|おお}}さかの せきはゆるさじ - 清少納言
{{ruby|随|ずい}}筆である『{{ruby|枕草子|まくらのそうし}}』の作者です。
=== [[w:平清盛|{{ruby|平清盛|たいらのきよもり}}]] ===
{{ruby|平家|へいけ}}の武士として、日本の歴史上、初めて、政治{{ruby|権力|けんりょく}}の{{ruby|中枢|ちゅうすう}}をにぎった人物。{{ruby|源氏|げんじ}}と戦い武士ではじめて{{ruby|太政|だいじょう}}大臣となりました。1181年に{{ruby|亡|な}}くなりました。
平家の権力の{{ruby|最盛期|さいせいき}}には、「平家にあらずんば、人にあらず」(平家でなければ人でない)とも言われました。
1185年、平氏は、源氏によって{{ruby|壇ノ浦|だんのうら}}、現在の{{ruby|山口|やまぐち}}県で{{ruby|滅|ほろ}}ぼされました。
== 鎌倉時代~戦国時代 ==
=== {{ruby|鎌倉|かまくら}}時代 ===
==== [[w:源頼朝|{{ruby|源頼朝|みなもとのよりとも}}]] ====
{{ruby|源氏|げんじ}}と{{ruby|平家|へいけ}}が戦っていた時代の、源氏の{{ruby|棟梁|とうりょう}}(リーダー)。関東地方({{ruby|鎌倉|かまくら}})から、弟の{{ruby|義経|よしつね}}らに指示を送って平家を{{ruby|倒|たお}}した。平家滅亡に向けた{{ruby|戦|いくさ}}には頼朝は出向いていません。
全国を支配し、鎌倉{{ruby|幕府|ばくふ}}をひらき、1192年に{{ruby|征夷大将軍|せいいたいしょうぐん}}に任命されました。
* 関連する人物
:[[w:北条政子|{{ruby|北条政子|ほうじょうまさこ}}]]
:頼朝の妻。
:頼朝が{{ruby|亡|な}}くなった後、しばらくは源氏から{{ruby|将軍|しょうぐん}}が出たが、その後、頼朝の{{ruby|家系|かけい}}が{{ruby|途|と}}絶え、北条氏が、{{ruby|執権|しっけん}}として{{ruby|権力|けんりょく}}をにぎった。
==== [[w:源義経|{{ruby|源義経|みなもとのよしつね}}]] ====
:{{ruby|頼朝|よりとも}}の弟。実際に平家と戦っていたのは義経など、頼朝の部下だったが、源氏と平家の戦いが終わったあと、義経は兄の頼朝に{{ruby|疎|うと}}んじられ、義経は東北方面に{{ruby|逃|に}}げるはめとなりましたが、頼朝の軍勢の{{ruby|追撃|ついげき}}にあい、最終的に、頼朝の軍勢によって{{ruby|滅|ほろ}}ぼされた。
==== [[w:北条時宗|{{ruby|北条時宗|ほうじょうときむね}}]] ====
{{ruby|元寇|げんこう}}でモンゴル軍が{{ruby|攻|せ}}め{{ruby|込|こ}}みんできたときの、{{ruby|鎌倉幕府|かまくらばくふ}}の{{ruby|執権|しっけん}}。
* 関連する人物
:[[w:クビライ|フビライ・ハン]]
:元寇のときの、モンゴル本国での{{ruby|皇帝|こうてい}}(ハン)。日本の戦場には、フビライは出向いていない。そもそもフビライは、日本には全く関心がなかった。
:{{ruby|彼|かれ}}が支配しようとしていたのは、おそらくユーラシア大陸方面であり、すでに中国のほとんどを支配していた。支配を広げようと、このころの時代の前後に、ベトナムや{{ruby|朝鮮|ちょうせん}}半島などの周辺の国々とも戦争をしていたので、そのついでに日本にも攻め込んできただけである。
:[[w:竹崎季長|{{ruby|竹崎季長|たけさきすえなが}}]]
:元寇のときの鎌倉幕府の{{ruby|御家人|ごけにん}}。自身の戦いを「{{ruby|蒙古襲来絵詞|もうこしゅうらいえまき}}」に{{ruby|描|えが}}かせた。
====[[w:運慶|{{ruby|運慶|うんけい}}]]====
====[[w:快慶|{{ruby|快慶|かいけい}}]]====
二人の彫刻家。金剛力士像(こんごうりきしぞう)の作者。
鎌倉時代の、武士の支配する世相(せそう)を反映してか、この時代には、このような力強い作品も、好まれるようになった。
=== 室町時代 ===
==== 足利尊氏 ====
「あしかがたかうじ」。尊氏は、有力だった御家人である「足利貞氏」の息子として生まれた。鎌倉幕府がまだ生まれた時にあり、元は源氏の一族だった。若い頃についての記録がほとんどなく、出身地も鎌倉・足利・丹波など様々な説がある。
「後醍醐天皇が天皇を中心とする政治を復活させよう!」と幕府に2回も争いを仕掛けたが、敗北し島根県に追放された。しかし、後醍醐天皇は島根県から脱出して3度目の争いに挑んだ。この時尊氏は天皇の味方にならないかと誘われ、鎌倉幕府にも恩はあったが不満を抱えた尊氏は最後は天皇軍に加わった。その後いろんな場所で戦いを繰り広げ、1333年に幕府を滅ぼした。
滅ぼした後醍醐天皇は、自分の名から1字を与え「尊氏」になったという。しかし天皇を中心とする政治を行ってたため武士の不満はどんどん高まった。尊氏も天皇の政治に不満を持っていた。
そこで尊氏は武士の政治を取り戻そうと1336年に光明天皇を即位させ、後醍醐天皇を奈良に追い払った。そうした末、光明天皇から征夷大将軍に任命され、室町幕府を開いた。
==== 足利義満 ====
「あしかがよしみつ」。義満は南北朝を統一させたことで有名。
室町幕府の基礎固めをする中で、京都の室町に貴族の屋敷に見立てた武家屋敷を作った。ここに幕府を移して政治を行うためであった。その屋敷は広い庭には四季折々の花が咲き乱れたことから、人々は「花の御所」と呼ぶようになった。
南北朝を統一させた義満は息子に将軍の職を譲って、京都の北山に別荘を建てては華やかな余生を過ごした。その別荘の中にある、外側に金を張り巡らせた建物だったことから【金閣寺】と言われている。
==== 足利義政====
「あしかがよしまさ」。応仁の乱のさなか、子に将軍職をゆずり文化に没頭した。
有名な銀閣は晩年に建てられた。
==== 雪舟 ====
「せっしゅう」水墨画(すいぼくが)を日本風にした人。
なお、水墨画は、中国大陸が起源(きげん)であり、日本が起源ではない。
=== 戦国時代 ===
==== 有力な戦国大名 ====
*武田信玄
:{{ruby|甲斐|かい}}(現在の山梨県)の戦国大名。後に{{ruby|信濃|しなの}}(長野県)と{{ruby|駿河|するが}}(静岡県の東部)などにも勢力を伸ばす。信濃への勢力拡大の最中に{{ruby|越後|えちご}}(新潟県)の上杉謙信と5回戦った([[w:川中島の戦い]])。
:「風林火山」とよばれる旗印で有名。「風林火山」は「{{ruby|疾|と}}きこと(※ 早いこと、という意味 )風のごとく、静かなること林のごとし、侵略すること火のごとく、動かざること山のごとし。」という言葉に由来する。
:分国法の一つである「{{ruby|甲州法度次第|こうしゅうはっとのしだい}}」を定めた。
:晩年に織田信長・徳川家康とも戦う([[w:三方ヶ原の戦い]])が、その後に死去。あとを継いだ武田勝頼の代で武田家は滅亡する。
*上杉謙信
:{{ruby|越後|えちご}}(新潟県)の戦国大名。元々は長尾景虎という名前であったが、後に関東の名門である上杉家を継いだため、上杉輝虎と名のる(謙信の名は晩年。以下では謙信で統一)。
:謙信は義理にあつかった人物と言われている。武田家が塩不足に悩まされていたときに、相手の弱味につけこむのは{{ruby|卑怯|ひきょう}}とかんがえたのだろうか、武田家に塩を送り、「敵に塩を送る」のことわざの語源とされる。
*今川義元
:{{ruby|駿河|するが}}(静岡県東部)と{{ruby|遠江|とおとうみ}}(静岡県西部)の戦国大名。足利家の一門でもあった有力大名。武田信玄などとも同盟を組み、{{ruby|三河|みかわ}}(愛知県東部)と{{ruby|尾張|おわり}}(愛知県西部)にも勢力を伸ばすが、[[w:桶狭間の戦い]]で織田信長に敗れて戦死する。息子の氏真の代のときに武田信玄と徳川家康とに攻められて大名家としては滅亡する。
:分国法の一つである{{ruby|今川仮名目録|いまがわかなもくろく}}に追加を行った。
*毛利元就
:{{ruby|安芸|あき}}(広島県)の戦国大名。元々は小さな{{ruby|領主|りょうしゅ}}にすぎなかったが、周辺の小領主を吸収して勢力を拡大する。そして、[[w:厳島の合戦]]などで周囲の有力大名を倒し、中国地方の大部分を統一する。
:「三本の矢」の言い伝えで有名。元就が死ぬ直前、3人の息子達に矢を1本ずつわたして「折ってみよ」と命じた。息子はたちはなんなく矢を折った。つぎに、元就は息子に3本の矢をわたしてもう一度「この矢を折ってみよ」と言った。3本の矢はかたく、息子たちは、矢を折れなかった。そこで「おまえたちも、この矢のように3人が力をあわせよ」と言ったという。(ただし、史実ではないことが分かっている)
*島津貴久
:{{ruby|薩摩|さつま}}(鹿児島県西部)の戦国大名。元々は島津家の分家の出だったが、本家の養子となる。父の協力をえながら対立していた他の分家や豪族を押さえ、薩摩を統一する。その後、{{ruby|大隅|おおすみ}}(鹿児島県東部)・{{ruby|日向|ひゅうが}}(宮崎県)にも勢力を拡大する。
:鹿児島に渡来したフランシスコ・ザビエルと面会し、日本で初めてキリスト教の布教を許可する。しかし、領地の神社・寺院の反発が激しく、布教を禁止する。
:息子の義久の代で、島津家の悲願であった大隅・日向の統一に成功する。さらに、九州の有力大名も倒して九州の大半を統一するが、豊臣秀吉に敗れて薩摩・大隅・日向の一部の大名となる。
*長宗我部元親
*三好長慶
*顕如
====フランシスコ・ ザビエル ====
戦国時代のころ、日本に、キリスト教を布教しにきた最初の人物。いわゆる宣教師(せんきょうし)のうちの一人。
* 関連する人物
:ルイス=フロイス
ルイス=フロイスは、宣教師の一人であり、信長に気に入られた。
=== 安土桃山時代 ===
==== 織田信長 ====
1534年~1582年。有名な合戦: 桶狭間の戦い、姉川の戦い、石山合戦、長篠の合戦、など。
元々は尾張(愛知県西部)の一部を治める大名であったが、対立する親類や勢力をたおして尾張を統一する。1560年に桶狭間(おけはざま)の戦いで今川義元を討ち取る。この戦いのあと、三河の松平元康(のちの徳川家康。以下、家康で統一)が独立し、家康と信長とが同盟を1562年にむすんだ。
その後、{{ruby|美濃|みの}}(岐阜県南部)の戦国大名・斎藤竜興を倒し、信長は美濃も統一した。そして、信長は拠点を岐阜城に移した。
1568年、室町幕府13代将軍・足利義輝の弟・足利義昭(よしあき)の求めに応じ、上洛を開始する。信長は対立した大名を倒し、そうでない大名とは協力関係を築くことで上洛に成功する。
だが、信長の勢いが増すうちに、しだいに足利義昭と信長は対立するようになる。足利義昭は、信長以外の日本全国の大名に、信長をたおすように書状でよびかけた。そして、武田信玄や近江(滋賀県)の浅井長政、{{ruby|越前|えちぜん}}(福井県の大半)の朝倉義景などの有力な大名や{{ruby|比叡山|ひえいざん}}{{ruby|延暦寺|えんりゃくじ}}と一向一揆のような一部の仏教勢力が、信長に敵対した。信長の周囲のほとんどが敵に回ったため、一時は大変な危機におちいった。しかし、浅井・朝倉などを各個に撃破することに成功した上に武田信玄が病死したため、危機を乗り切った。
そして、信長は1573年、足利義昭を京都から追い出し、室町幕府は信長によって滅ぼされた。
1575年、徳川家康は武田信玄のあとをついだ武田勝頼に攻め込まれ、信長が救援に向かう。両軍は長篠(三河国)で戦いとなり、織田・徳川軍は鉄砲を大量に使用し<ref>千丁(一説に三千丁)とも言われる</ref>、武田軍に勝った。これが長篠の合戦である。
1576年に信長は安土城を築いた。1582年、毛利家と戦っていた部下の羽柴秀吉を援助しようと、道中で本能寺に寝泊まりしていたところを、部下の明智光秀によって裏切られ、自害する(本能寺の変)。
信長は新しいもの好きだったようで、宣教師(せんきょうし)が地球儀を見せると、即座に地球が丸いことを理解したという。
後世の江戸時代以降の作家からは、信長の性格の例えとして「鳴かぬなら殺してしまえホトトギス」などと信長は評されている。
* 家臣
:柴田勝家(しばた かついえ)
:羽柴秀吉(はしば ひでよし)
:前田利家(まえだ としいえ)
:明智光秀(あけち みつひで)
など、ほか多数。
==== 豊臣秀吉 ====
信長亡き後、明智光秀を倒し検地を始めた。大阪城を築き、関白となると翌年には太政大臣となった。刀狩令を出した2年後に天下統一を成し遂げた。その後、朝鮮に2度攻め込み、2回目の侵略中に病死した。
==== その他 ====
*千利休
:お茶を飲む習慣は鎌倉時代に始まっていたが、室町時代になると茶の湯として広く流行し、茶器の工芸品としての価値も高まった。そのため、高価な茶器を用いた豪華な茶会が開かれるようになった。
:そのような風潮に対して、一見ありふれたような道具を用い、そまつな中の美しさを見出し、客と主人との心の交流を重んじる[[w:わび茶]]が生まれる。このわび茶をもとにして、現在の茶道を作り上げたのが千利休である。
:堺の有力商人でもあった利休は、織田信長などとの取引をつうじて関係を築き上げていった。このため武将たちとも交流ができ、多くの弟子が生まれた。信長の死後、豊臣秀吉に仕えるが、秀吉の怒りをかってしまい、利休は切腹させられた。
*狩野永徳
:戦国時代の有名な絵描きの一人。「狩野派」(かのうは)とは、彼、および、彼の弟子や孫弟子などの一門のことである。
== 江戸時代 ==
===[[w:徳川家康|{{ruby|徳川家康|とくがわいえやす}}]]===
[[File:Tokugawa_Ieyasu2.JPG|thumb|250px|徳川家康]]
:1543年、{{Ruby|三河|みかわ}}(現在の愛知県東部)の大名{{Ruby|松平|まつだいら}}氏に生まれます。松平氏は三河の国人出身の大名でしたが、隣接する{{ruby|今川|いまがわ}}氏や織田氏に比べると弱小な大名でした。家康は家を継ぐ前、{{Ruby|松平元康|まつだいらもとやす}}と言って、今川氏に人質に出されていたことがあります。
:1560年[[#桶狭間の戦い|{{ruby|桶狭間|おけはざま}}の戦い]]で[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#今川義元|今川義元]]が討ち死にし、今川氏が弱くなると、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#織田信長|信長]]と同盟し三河をとりもどします。そして、名を{{ruby|徳川家康|とくがわいえやす}}とかえ、{{Ruby|遠江|とおとおみ}}をせめとります。その後、信長の同盟国として武田氏や北条氏と隣接する信長の勢力の東南部を守り続けます。
:1572年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#三方原の戦い|{{ruby|三方原|みかたがはら}}の戦い]]では大敗し、命の危険もありましたが、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#武田信玄|武田信玄]]が病死し、兵は甲斐へもどったため一命をとりとめました。
:逆に、1575年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#長篠の戦い|長篠の戦い]]では、信長との連合軍で、{{ruby|武田勝頼|たけだかつより}}に大勝し{{Ruby|駿河|するが}}をえ、1582年武田氏をほろぼして{{Ruby|甲斐|かい}}と{{Ruby|信濃|しなの}}の一部をえました。
:秀吉には、後継者争いで一時抵抗し、秀吉の軍をくだすなどしたのですが、和解し、その後はしたがいます。
:1590年、秀吉の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#小田原攻め|小田原攻め]]に協力し北条氏を攻め滅ぼしますが、秀吉の命令によって、領地を北条氏のおさめていた関東に移され、{{Ruby|江戸|えど}}城を{{Ruby|拠城|きょじょう}}としました。
:秀吉の生前は、秀吉配下では最大の大名となっており、秀吉政権においては五大老の筆頭でした。
:秀吉の死後、1600年、[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#関ヶ原の戦い|関ヶ原の戦い]]に勝利して政権を握ります。
:1603年、{{Ruby|朝廷|ちょうてい}}から [[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#将軍|{{Ruby|征夷大将軍|せいいたいしょうぐん}}]]に任命され、江戸の幕府を開きます。
:1614年から翌年に「大坂の陣」を起こして豊臣氏を滅ぼしたのち、1616年亡くなりました。「東照大権現」として、日光東照宮などにまつられています。
=== [[w:徳川家光|{{ruby|徳川家光|とくがわいえみつ}}]] ===
家光は江戸幕府第3代目将軍。征夷大将軍になると、武家諸法度の中に新しく参勤交代という制度を創り江戸幕府の支配を固めだした。老中、大老を置いた
===<span id="近松門左衛門"/>[[w:近松門左衛門|{{ruby|近松門左衛門|ちかまつもんざえもん}}]]===
人形浄瑠璃・歌舞伎の作者。町人社会の義理や人情をテーマとした作品([[w:世話物]])や歴史的な事件や出来事を扱った[[w:時代物]]で評判を得る。
代表作は「曽根崎心中」「{{ruby|冥途|めいど}}の飛脚」「{{ruby|女殺油地獄|おんなごろしあぶらのじごく}}」「{{ruby|国姓爺合戦|こくせんやかっせん}}」など。
===<span id="歌川広重"/>[[w:歌川広重|{{ruby|歌川(安藤)広重|うたがわ(あんどう)ひろしげ}}]]===
『東海道五十三次』で有名な浮世絵師。
=== <span id="本居宣長"/>本居宣長 ===
「もとおりのりなが」国学を学ぶ。
『古事記伝』を著す。
=== <span id="杉田玄白"/>杉田玄白 ===
[[File:Kaitai Shinsho 29-1.png|thumb|解体新書。]]
前野良沢と共にオランダ書「ターヘル・アナトミア」を日本語に訳し、「解体新書」を完成させた。
=== <span id="伊能忠敬"/>伊能忠敬 ===
日本中を駆け巡り、正確な日本地図を作る。
=== <span id="マシュー・ペリー"/>マシュー・ペリー ===
日本に開国を求め、1854年に日米和親条約を結ぶ。
=== <span id="勝海舟"/>勝海舟 ===
幕臣
西郷隆盛と話し合い、江戸城を人が死ぬことなく開城させた。
=== <span id="坂本龍馬"/>坂本龍馬 ===
西郷隆盛(薩摩藩)と木戸孝允(長州藩)を結び付け薩長同盟の成立に大きな役割を果たした。
また、土佐藩の仲間を中心に、日本初の貿易会社(海援隊)を長崎で作り、物産や武器の貿易をした。
33歳の時何者かに暗殺され、亡くなった。
== {{ruby|明治|めいじ}}時代 ==
=== <span id="西郷隆盛"/>[[w:西郷隆盛|{{ruby|西郷隆盛|さいごうたかもり}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。「討幕」を主導するなど{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
:討幕後、{{ruby|廃藩置県|はいはんちけん}}を主導するなど、新しい社会を作るために、古い武家社会の消滅に貢献しました。
:征韓論を唱えて、政府を離れました。
:鹿児島に戻って、若者の指導をしていましたが、新政府に不満を持つ士族にかつぎあげられ、西南戦争を起こし敗死します。
=== <span id="大久保利通"/>[[w:大久保利通|{{ruby|大久保利通|おおくぼとしみち}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。西郷隆盛等とともに討幕を主導します。
:維新後は、内務省を作り、日本の官僚制度を作り上げます。
:西南戦争時には、これを指導し政府を勝利に導きます。
:西南戦争の翌年、不平士族に暗殺されます。
=== <span id="木戸孝允"/>[[w:木戸孝允|{{ruby|木戸孝允|きどたかよし}}]] ===
{{ruby|長州藩|ちょうしゅうはん}}出身。{{ruby|西郷隆盛|さいごうたかもり}}と同じく、{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
=== <span id="明治天皇"/>[[w:明治天皇|{{ruby|明治天皇|めいじてんのう}}]] ===
明治時代の天皇。{{ruby|五箇条|ごかじょう}}の{{ruby|御誓文|ごせいもん}}を発布しました。
=== <span id="伊藤博文"/>[[w:伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:大久保利通の跡を継いで、日本の官僚制度を整備します。
:その完成として{{ruby|内閣|ないかく}}制度を{{ruby|創設|そうせつ}}し、初代{{ruby|内閣総理大臣|ないかくそうりだいじん}}となります。
:ヨーロッパを回り、大日本{{ruby|帝国憲法|けんぽう}}の手本となる憲法を研究し、ドイツ(当時はプロシア)の憲法を手本とすることにしました。
=== <span id="渋沢栄一"/>[[w:渋沢栄一|{{ruby|渋沢栄一|しぶさわえいいち}}]] ===
:銀行、証券取引所、保険制度、商工会議所など、近代的な経済の仕組みを日本に導入した実業家です。
* 関連する人物
: [[w:岩崎弥太郎|{{ruby|岩崎弥太郎|いわさきやたろう}}]]
=== <span id="福澤諭吉"/>[[w:福澤諭吉|{{ruby|福沢諭吉|ふくざわゆきち}}]] ===
[[画像:福澤諭吉像2.jpg|250px|thumb|福澤諭吉像(東京都港区三田・慶應大学構内)]]
:1835年 - 1901年
:豊前国中津藩(現在の大分県中津市)の下級武士の子として生まれます。大阪の「適塾」で蘭学を学び、1859年[[#勝海舟|勝海舟]]らが率いる咸臨丸に同乗し渡米の経験をえ、その後ヨーロッパを訪問、再び米国を訪れるなどして、蘭学のみならず英語による欧米の文物の知識を得るようになります。
:1868年(慶応4年)に、蘭学塾である'''慶應義塾'''を開きます。それまで、医学や化学など科学技術が中心であった蘭学塾と異なり、欧米の思想や会計などの制度も教えました。また、蘭学塾といいながら英語によるものが教えられていました。これが、日本で最初の近代的大学と言われる'''慶應義塾大学'''(慶應大学)の創始です。
:明治時代になって、「自由」や「平等」など「権利」「人権」といった欧米の近代思想を数々の著書を通じて紹介しました。『学問のすすめ』の中では「天は人の上に人を造らず、人の下に人を造らず」と、生まれながらの平等を説いて、努力次第で社会の重要な地位に就くことができること(立身出世)を主張しました。
:官主導の明治政府に対して、民間の立場から、新聞や出版物で社会を啓蒙し、教え子を民間の各所で活躍させるなどして、日本社会の近代化を主導しました。
:現在({{#time:Y|+9 hours}}年)の1万円札の肖像に用いられています。
* 関連する人物
: [[w:中江兆民|{{ruby|中江兆民|なかえちょうみん}}]]
: [[w:金玉均|{{ruby|金玉均|きんぎょくきん}}]] <!-- 当然、荒らしではありません -->
=== <span id="大隈重信"/>[[w:大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]] ===
:{{ruby|地租改正|ちそかいせい}}などの{{ruby|改革|かいかく}}にあたるとともに、{{ruby|殖産興業|しょくさんこうぎょう}}を{{ruby|推進|すいしん}}しました。
:自由民権運動を主導しました。
=== <span id="板垣退助"/>[[w:板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]] ===
自由{{ruby|民権|みんけん}}運動の主導者です。
=== <span id="陸奥宗光"/>[[w:陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]] ===
日米修好通商条約の{{ruby|領事裁判権|りょうじさいばんけん}}({{ruby|治外法権|ちがいほうけん}})の{{ruby|撤廃|てっぱい}}に成功しました。
=== <span id="山県有朋"/>[[w:山県有朋|{{ruby|山県有朋|やまがたありとも}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:日本陸軍の仕組みを作り上げ、政府に対する強い地位を確立した。
* 関連する人物
:[[w:川上操六|{{ruby|川上操六|かわかみそうろく}}]]
:[[w:山本権兵衛|{{ruby|山本権兵衛|やまもとごんのひょうえ(ごんべい)}}]] - 海軍において山縣有朋と同様の役割を果たした。
=== <span id="東郷平八郎"/>[[w:東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]] ===
:{{ruby|日露|にちろ}}戦争で{{ruby|活躍|かつやく}}した海軍軍人です。
関連する人物
:[[w:大山巌|{{ruby|大山巌|おおやまいわお}}]]
:[[w:児玉源太郎|{{ruby|児玉源太郎|こだまげんたろう}}]]
:[[w:乃木希典|{{ruby|乃木希典|のぎまれすけ}}]]
:メッケル
=== <span id="小村寿太郎"/>[[w:小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]] ===
:日露戦争の講和会議に全件として出席し、ポーツマス条約を締結して日露戦争を終わらせた。
:1911(明治44)年にアメリカとの{{ruby|交渉|こうしょう}}で関税自主{{ruby|権|けん}}を回復させた。
=== <span id="野口英世"/>[[w:野口英世|{{ruby|野口英世|のぐちひでよ}}]] ===
:1876年(明治9年) - 1928年(昭和3年)。医師、細菌学者。
:福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)出身。高等小学校を卒業して上京し、済生学舎(日本医科大学の前身)に通い、医術開業試験に合格して医師となり、渡米してペンシルベニア大学医学部の助手を経て、ロックフェラー医学研究所研究員となった。
:主に細菌学の研究に従事し、{{ruby|黄熱病|おうねつびょう}}や梅毒の研究で知られる。数々の論文を発表し、ノーベル生理学・医学賞の授賞候補に三度名前が挙がった。黄熱病の研究中に自身もそれにかかり、英領ゴールド・コースト(現在のガーナ共和国)のアクラで51歳で死去。
:1000円札にのっている人物として有名。
:その他、[[小学校社会/6学年/歴史編/国際社会に進み出す日本-明治末期から大正時代#野口英世]]を参照。
===<span id="北里柴三郎"/>[[w:北里柴三郎|{{ruby|北里柴三郎|きたさとしばさぶろう}}]]===
:ドイツに留学し、伝染病を研究。帰国後、伝染病の研究所作ろうとしたが、政府の援助は得られなかったところ、{{ruby|福沢諭吉|ふくざわゆきち}}が支援し研究所が完成、{{ruby|志賀潔|しがきよし}}、野口英世などの研究者が生まれ育っていった。
== {{ruby|昭和|しょうわ}}時代 ==
=== <span id="昭和天皇"/>[[w:昭和天皇|{{ruby|昭和天皇|しょうわてんのう}}]] ===
{{ruby|昭和|しょうわ}}時代の{{ruby|天皇|てんのう}}。
=== <span id="吉田茂"/>[[w:吉田茂|{{ruby|吉田茂|よしだしげる}}]] ===
:アメリカ合衆国占領下の日本で、新憲法の成立と日本の新しい民主主義体制を確立させ、サンフランシスコ講和条約を締結し日本の主権を回復しました。。
=== <span id="佐藤栄作"/>[[w:佐藤栄作|{{ruby|佐藤栄作|さとうえいさく}}]] ===
:1964年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
:日本の高度成長をおしすすめ、沖縄の日本への復帰を成功させました。
:日本人で初めて、ノーベル平和賞を受賞しています。
=== <span id="田中角栄"/>[[w:田中角栄|{{ruby|田中角栄|たなかかくえい}}]] ===
1972年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
==脚注==
<references/>
[[Category:社会|しようかつこうしやかい6しんふつ]]
azlpva8qmv435bgloegzl71w8wns8nb
205979
205978
2022-07-29T08:03:22Z
Mtodo
450
/* {{ruby|徳川家康|とくがわいえやす}} */
wikitext
text/x-wiki
{{半保護S}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|frame=1}}
{{stub}}
ここには、小学校の歴史の勉強で出てくる人物について書いてあります({{ruby|発展|はってん}}的な内容および人物もふくまれています)。もっとくわしく知りたいときは、色がついているタイトルの名前をクリックしてください。ウィキペディアにあるページにリンクしてあります。少し{{ruby|難|むずか}}しいかもしれませんので、事典や身近な大人をフル活用してください。
<!--執筆者へ
あまり長くならないよう、4〜5行程度にまとめてください。
第1行目には、「生没年」があるといいと思います。-->
また、難しいかもしれませんが、[[中学受験社会/歴史/人物]]をみてもいい情報があるかもしれません。
== {{ruby|弥生|やよい}}時代 ==
=== [[w:卑弥呼|{{ruby|卑弥呼|ひみこ}}]] ===
3世紀はじめごろ。{{ruby|邪馬台国|やまたいこく}}の女王で、神のおつげやうらないで政治を行った。当時、中国にあった{{ruby|魏|ぎ}}という国に使いを送り、その時に親魏倭王の称号を与えられたとその国の歴史書({{ruby|魏志倭人伝|ぎしわじんでん}})に記されている。邪馬台国があったと考えられる場所は、{{ruby|奈良|なら}}と九州北部の説が有力である。一番古い時代に作られた{{ruby|古墳|こふん}}が、卑弥呼の墓で、奈良に邪馬台国があった場合、{{ruby|箸墓|はしはか}}古墳が卑弥呼の墓ではないか、と考えられている。
== {{ruby|飛鳥|あすか}}時代 ==
=== {{Ruby|[[w:聖徳太子|聖徳太子]]|しょうとくたいし}} ===
572年~622年。{{ruby|厩戸王|うまやとおう}}などとも{{ruby|呼|よ}}ばれる。[[w:推古天皇|{{ruby|推古|すいこ}}天皇]]に代わって政治を行う{{ruby|摂政|せっしょう}}として{{ruby|活躍|かつやく}}。{{ruby|仏教|ぶっきょう}}や中国の{{ruby|儒教|じゅきょう}}の教えをもとに、{{ruby|朝廷|ちょうてい}}の役人の{{ruby|心得|こころえ}}である[[w:十七条憲法|{{ruby|十七条の憲法|じゅうしちじょうのけんぽう}}]]を定めた。また、能力が高かったり手がらをたてた人が重要な仕事をできる[[w:冠位十二階|{{ruby|冠位十二階|かんいじゅうにかい}}]]の制度をつくった。仏教を深く{{ruby|信仰|しんこう}}していた聖徳太子は、[[w:法隆寺|{{ruby|法隆寺|ほうりゅうじ}}]]を建て、仏教の力で平和な世の中になるように願った。10人が同時に話しても、そのすべての内容を理解したなどの伝説がある。
* 関連する人物
[[w:推古天皇|{{ruby|推古天皇|すいこてんのう}}]]
=== [[w:小野妹子|{{ruby|小野妹子|おののいもこ}}]] ===
6世紀後半〜7世紀前半。{{ruby|男性|だんせい}}である。607年、{{ruby|聖徳太子|しょうとくたいし}}の命令で第2回[[w:遣隋使|{{ruby|遣隋使|けんずいし}}]]として中国の隋の国にわたる。608年には第3回遣隋使となっている。
=== [[w:天智天皇|{{ruby|中大兄皇子|なかのおおえのおうじ}}]] ===
のちの{{ruby|天智天皇|てんじてんのう}}です。なくなった[[#聖徳太子|聖徳太子]]の意志を受けつぐため、{{ruby|中臣鎌足|なかとみのかまたり}}とともに{{ruby|蘇我|そが}}氏を{{ruby|倒|たお}}した。これを、{{ruby|大化|たいか}}の改新 という。そして天皇中心とした国づくりが行われた。
=== [[w:藤原鎌足|{{ruby|中臣鎌足|なかとみのかまたり}}]] ===
{{ruby|中大兄皇子|なかのおおえのおうじ}}と協力して {{ruby|大化|たいか}}の改新 を進めた。
やがて、{{ruby|藤原姓|ふじわらせい}}をもらう。
大化の改新の中心人物は、{{ruby|中大兄皇子|なかのおおえのおうじ}}と{{ruby|中臣鎌足|なかとみのかまたり}}である。
== {{ruby|奈良|なら}}時代 ==
=== [[w:聖武天皇|{{ruby|聖武天皇|しょうむてんのう}}]] ===
聖武天皇の時代は災が多かったために、都を移動させたり、東大寺を中心に国分寺を国ごとに建てさせた。仏教を{{ruby|信仰|しんこう}}し農民などの不安をしずめるため、大仏を作る{{Ruby|詔|みことのり}}(天皇の命令)を出した。
=== [[w:行基|{{ruby|行基|ぎょうき}}]] ===
一般の民衆への仏教の布教が禁止されていた時代に、布教を行った{{ruby|僧|そう}}。{{ruby|朝廷|ちょうてい}}からは{{ruby|弾圧|だんあつ}}されたが、{{ruby|民衆|みんしゅう}}からは{{ruby|尊敬|そんけい}}された。国民の平和を願う大仏を作った。
しかし、大仏が出来る前に死んでしまった。
=== [[w:鑑真|{{ruby|鑑真|がんじん}}]] ===
{{ruby|聖武天皇|しょうむてんのう}}から{{ruby|招|まね}}かれ、{{ruby|僧|そう}}として中国から日本に11年かけて{{ruby|渡|わた}}ってきたが、5度の失敗ゆえに失明してしまった。{{ruby|唐招提寺|とうしょうだいじ}}を建て日本に正しい仏教を伝えたとされている。
その他に医学や薬学、美術工芸なども伝えた。
== {{ruby|平安|へいあん}}時代 ==
=== [[w:藤原道長|{{ruby|藤原道長|ふじわらのみちなが}}]] ===
{{ruby|中臣鎌足|なかとみのかまたり}}を祖先とする{{ruby|貴族|きぞく}}。
道長は信じられないくらい運が良かったといわれています。道長は兄弟の中では末っ子でしたが、兄たちが病気や事件を起こして追放されてしまったため、貴族の中でトップの地位となりました。
自分の{{ruby|娘|むすめ}}を{{ruby|天皇|てんのう}}のきさきにしたり、自分の{{ruby|権力|けんりょく}}がゆるぎないものになったと確信し、下の「{{ruby|望月|もちづき}}の歌」を作りました。
この世をば {{ruby|我|わ}}がぞと思う 望月の かけたることも なしと思えば
(この世は、望月(満月)のように欠けているところがなく、自分のもののようだ。)
道長は「{{ruby|源氏|げんじ}}物語」の{{ruby|光|ひかる}}源氏のモデルだといわれています。道長が{{ruby|活躍|かつやく}}していたころ、「源氏物語」を書いた{{ruby|紫式部|むらさきしきぶ}}は{{ruby|朝廷|ちょうてい}}で道長の{{ruby|娘|むすめ}}の教育係をしていました。紫式部は教育係をしながら朝廷の人々の様子を観察していたと言われています。このことから、主人公の光源氏は、道長がモデルではないかといわれています。
=== [[w:菅原道真|{{ruby|菅原道真|すがわらのみちざね}}]] ===
{{ruby|遣唐使|けんとうし}}の{{ruby|廃止|はいし}}を申し出ました。ライバルの{{ruby|藤原|ふじわら}}氏らの{{ruby|陰謀|いんぼう}}により、悪名を着せられ、{{ruby|太宰府|だざいふ}}に追いやられました。太宰府は、今の{{ruby|福岡|ふくおか}}県にありました。道真は、学問に{{ruby|秀|ひい}}でていたと言われ、現在では、学問の神様としてもまつられています。
=== [[w:紫式部|{{ruby|紫式部|むらさきしきぶ}}]] ===
970年~?。{{ruby|一条天皇|いちじょうてんのう}}のきさき(妻)の{{ruby|彰子|しょうこ}}に仕えました。「紫式部日記」を書きました。
巡りあ{{ruby|ひ|(い)}}て みしやそれとも わかぬまに 雲がくれにし {{ruby|夜半|よは}}のつきかな - 紫式部
{{ruby|恋愛|れんあい}}小説『{{ruby|源氏物語|げんじものがたり}}』の作者。
主人公は、{{ruby|光|ひかる}}源氏という名の美少年。
源氏物語は、今も世界中で人気がある。
=== [[w:清少納言|{{ruby|清少納言|せいしょうなごん}}]] ===
966年〜1025年頃。{{ruby|一条天皇|いちじょうてんのう}}の きさき(妻) の[[w:藤原定子|{{ruby|藤原定子|ふじわらのていし/さだこ}}]]につかえた。
夜をこめて とりのそらねは はかるとも 世に{{ruby|あふ|おお}}さかの せきはゆるさじ - 清少納言
{{ruby|随|ずい}}筆である『{{ruby|枕草子|まくらのそうし}}』の作者です。
=== [[w:平清盛|{{ruby|平清盛|たいらのきよもり}}]] ===
{{ruby|平家|へいけ}}の武士として、日本の歴史上、初めて、政治{{ruby|権力|けんりょく}}の{{ruby|中枢|ちゅうすう}}をにぎった人物。{{ruby|源氏|げんじ}}と戦い武士ではじめて{{ruby|太政|だいじょう}}大臣となりました。1181年に{{ruby|亡|な}}くなりました。
平家の権力の{{ruby|最盛期|さいせいき}}には、「平家にあらずんば、人にあらず」(平家でなければ人でない)とも言われました。
1185年、平氏は、源氏によって{{ruby|壇ノ浦|だんのうら}}、現在の{{ruby|山口|やまぐち}}県で{{ruby|滅|ほろ}}ぼされました。
== 鎌倉時代~戦国時代 ==
=== {{ruby|鎌倉|かまくら}}時代 ===
==== [[w:源頼朝|{{ruby|源頼朝|みなもとのよりとも}}]] ====
{{ruby|源氏|げんじ}}と{{ruby|平家|へいけ}}が戦っていた時代の、源氏の{{ruby|棟梁|とうりょう}}(リーダー)。関東地方({{ruby|鎌倉|かまくら}})から、弟の{{ruby|義経|よしつね}}らに指示を送って平家を{{ruby|倒|たお}}した。平家滅亡に向けた{{ruby|戦|いくさ}}には頼朝は出向いていません。
全国を支配し、鎌倉{{ruby|幕府|ばくふ}}をひらき、1192年に{{ruby|征夷大将軍|せいいたいしょうぐん}}に任命されました。
* 関連する人物
:[[w:北条政子|{{ruby|北条政子|ほうじょうまさこ}}]]
:頼朝の妻。
:頼朝が{{ruby|亡|な}}くなった後、しばらくは源氏から{{ruby|将軍|しょうぐん}}が出たが、その後、頼朝の{{ruby|家系|かけい}}が{{ruby|途|と}}絶え、北条氏が、{{ruby|執権|しっけん}}として{{ruby|権力|けんりょく}}をにぎった。
==== [[w:源義経|{{ruby|源義経|みなもとのよしつね}}]] ====
:{{ruby|頼朝|よりとも}}の弟。実際に平家と戦っていたのは義経など、頼朝の部下だったが、源氏と平家の戦いが終わったあと、義経は兄の頼朝に{{ruby|疎|うと}}んじられ、義経は東北方面に{{ruby|逃|に}}げるはめとなりましたが、頼朝の軍勢の{{ruby|追撃|ついげき}}にあい、最終的に、頼朝の軍勢によって{{ruby|滅|ほろ}}ぼされた。
==== [[w:北条時宗|{{ruby|北条時宗|ほうじょうときむね}}]] ====
{{ruby|元寇|げんこう}}でモンゴル軍が{{ruby|攻|せ}}め{{ruby|込|こ}}みんできたときの、{{ruby|鎌倉幕府|かまくらばくふ}}の{{ruby|執権|しっけん}}。
* 関連する人物
:[[w:クビライ|フビライ・ハン]]
:元寇のときの、モンゴル本国での{{ruby|皇帝|こうてい}}(ハン)。日本の戦場には、フビライは出向いていない。そもそもフビライは、日本には全く関心がなかった。
:{{ruby|彼|かれ}}が支配しようとしていたのは、おそらくユーラシア大陸方面であり、すでに中国のほとんどを支配していた。支配を広げようと、このころの時代の前後に、ベトナムや{{ruby|朝鮮|ちょうせん}}半島などの周辺の国々とも戦争をしていたので、そのついでに日本にも攻め込んできただけである。
:[[w:竹崎季長|{{ruby|竹崎季長|たけさきすえなが}}]]
:元寇のときの鎌倉幕府の{{ruby|御家人|ごけにん}}。自身の戦いを「{{ruby|蒙古襲来絵詞|もうこしゅうらいえまき}}」に{{ruby|描|えが}}かせた。
====[[w:運慶|{{ruby|運慶|うんけい}}]]====
====[[w:快慶|{{ruby|快慶|かいけい}}]]====
二人の彫刻家。金剛力士像(こんごうりきしぞう)の作者。
鎌倉時代の、武士の支配する世相(せそう)を反映してか、この時代には、このような力強い作品も、好まれるようになった。
=== 室町時代 ===
==== 足利尊氏 ====
「あしかがたかうじ」。尊氏は、有力だった御家人である「足利貞氏」の息子として生まれた。鎌倉幕府がまだ生まれた時にあり、元は源氏の一族だった。若い頃についての記録がほとんどなく、出身地も鎌倉・足利・丹波など様々な説がある。
「後醍醐天皇が天皇を中心とする政治を復活させよう!」と幕府に2回も争いを仕掛けたが、敗北し島根県に追放された。しかし、後醍醐天皇は島根県から脱出して3度目の争いに挑んだ。この時尊氏は天皇の味方にならないかと誘われ、鎌倉幕府にも恩はあったが不満を抱えた尊氏は最後は天皇軍に加わった。その後いろんな場所で戦いを繰り広げ、1333年に幕府を滅ぼした。
滅ぼした後醍醐天皇は、自分の名から1字を与え「尊氏」になったという。しかし天皇を中心とする政治を行ってたため武士の不満はどんどん高まった。尊氏も天皇の政治に不満を持っていた。
そこで尊氏は武士の政治を取り戻そうと1336年に光明天皇を即位させ、後醍醐天皇を奈良に追い払った。そうした末、光明天皇から征夷大将軍に任命され、室町幕府を開いた。
==== 足利義満 ====
「あしかがよしみつ」。義満は南北朝を統一させたことで有名。
室町幕府の基礎固めをする中で、京都の室町に貴族の屋敷に見立てた武家屋敷を作った。ここに幕府を移して政治を行うためであった。その屋敷は広い庭には四季折々の花が咲き乱れたことから、人々は「花の御所」と呼ぶようになった。
南北朝を統一させた義満は息子に将軍の職を譲って、京都の北山に別荘を建てては華やかな余生を過ごした。その別荘の中にある、外側に金を張り巡らせた建物だったことから【金閣寺】と言われている。
==== 足利義政====
「あしかがよしまさ」。応仁の乱のさなか、子に将軍職をゆずり文化に没頭した。
有名な銀閣は晩年に建てられた。
==== 雪舟 ====
「せっしゅう」水墨画(すいぼくが)を日本風にした人。
なお、水墨画は、中国大陸が起源(きげん)であり、日本が起源ではない。
=== 戦国時代 ===
==== 有力な戦国大名 ====
*武田信玄
:{{ruby|甲斐|かい}}(現在の山梨県)の戦国大名。後に{{ruby|信濃|しなの}}(長野県)と{{ruby|駿河|するが}}(静岡県の東部)などにも勢力を伸ばす。信濃への勢力拡大の最中に{{ruby|越後|えちご}}(新潟県)の上杉謙信と5回戦った([[w:川中島の戦い]])。
:「風林火山」とよばれる旗印で有名。「風林火山」は「{{ruby|疾|と}}きこと(※ 早いこと、という意味 )風のごとく、静かなること林のごとし、侵略すること火のごとく、動かざること山のごとし。」という言葉に由来する。
:分国法の一つである「{{ruby|甲州法度次第|こうしゅうはっとのしだい}}」を定めた。
:晩年に織田信長・徳川家康とも戦う([[w:三方ヶ原の戦い]])が、その後に死去。あとを継いだ武田勝頼の代で武田家は滅亡する。
*上杉謙信
:{{ruby|越後|えちご}}(新潟県)の戦国大名。元々は長尾景虎という名前であったが、後に関東の名門である上杉家を継いだため、上杉輝虎と名のる(謙信の名は晩年。以下では謙信で統一)。
:謙信は義理にあつかった人物と言われている。武田家が塩不足に悩まされていたときに、相手の弱味につけこむのは{{ruby|卑怯|ひきょう}}とかんがえたのだろうか、武田家に塩を送り、「敵に塩を送る」のことわざの語源とされる。
*今川義元
:{{ruby|駿河|するが}}(静岡県東部)と{{ruby|遠江|とおとうみ}}(静岡県西部)の戦国大名。足利家の一門でもあった有力大名。武田信玄などとも同盟を組み、{{ruby|三河|みかわ}}(愛知県東部)と{{ruby|尾張|おわり}}(愛知県西部)にも勢力を伸ばすが、[[w:桶狭間の戦い]]で織田信長に敗れて戦死する。息子の氏真の代のときに武田信玄と徳川家康とに攻められて大名家としては滅亡する。
:分国法の一つである{{ruby|今川仮名目録|いまがわかなもくろく}}に追加を行った。
*毛利元就
:{{ruby|安芸|あき}}(広島県)の戦国大名。元々は小さな{{ruby|領主|りょうしゅ}}にすぎなかったが、周辺の小領主を吸収して勢力を拡大する。そして、[[w:厳島の合戦]]などで周囲の有力大名を倒し、中国地方の大部分を統一する。
:「三本の矢」の言い伝えで有名。元就が死ぬ直前、3人の息子達に矢を1本ずつわたして「折ってみよ」と命じた。息子はたちはなんなく矢を折った。つぎに、元就は息子に3本の矢をわたしてもう一度「この矢を折ってみよ」と言った。3本の矢はかたく、息子たちは、矢を折れなかった。そこで「おまえたちも、この矢のように3人が力をあわせよ」と言ったという。(ただし、史実ではないことが分かっている)
*島津貴久
:{{ruby|薩摩|さつま}}(鹿児島県西部)の戦国大名。元々は島津家の分家の出だったが、本家の養子となる。父の協力をえながら対立していた他の分家や豪族を押さえ、薩摩を統一する。その後、{{ruby|大隅|おおすみ}}(鹿児島県東部)・{{ruby|日向|ひゅうが}}(宮崎県)にも勢力を拡大する。
:鹿児島に渡来したフランシスコ・ザビエルと面会し、日本で初めてキリスト教の布教を許可する。しかし、領地の神社・寺院の反発が激しく、布教を禁止する。
:息子の義久の代で、島津家の悲願であった大隅・日向の統一に成功する。さらに、九州の有力大名も倒して九州の大半を統一するが、豊臣秀吉に敗れて薩摩・大隅・日向の一部の大名となる。
*長宗我部元親
*三好長慶
*顕如
====フランシスコ・ ザビエル ====
戦国時代のころ、日本に、キリスト教を布教しにきた最初の人物。いわゆる宣教師(せんきょうし)のうちの一人。
* 関連する人物
:ルイス=フロイス
ルイス=フロイスは、宣教師の一人であり、信長に気に入られた。
=== 安土桃山時代 ===
==== 織田信長 ====
1534年~1582年。有名な合戦: 桶狭間の戦い、姉川の戦い、石山合戦、長篠の合戦、など。
元々は尾張(愛知県西部)の一部を治める大名であったが、対立する親類や勢力をたおして尾張を統一する。1560年に桶狭間(おけはざま)の戦いで今川義元を討ち取る。この戦いのあと、三河の松平元康(のちの徳川家康。以下、家康で統一)が独立し、家康と信長とが同盟を1562年にむすんだ。
その後、{{ruby|美濃|みの}}(岐阜県南部)の戦国大名・斎藤竜興を倒し、信長は美濃も統一した。そして、信長は拠点を岐阜城に移した。
1568年、室町幕府13代将軍・足利義輝の弟・足利義昭(よしあき)の求めに応じ、上洛を開始する。信長は対立した大名を倒し、そうでない大名とは協力関係を築くことで上洛に成功する。
だが、信長の勢いが増すうちに、しだいに足利義昭と信長は対立するようになる。足利義昭は、信長以外の日本全国の大名に、信長をたおすように書状でよびかけた。そして、武田信玄や近江(滋賀県)の浅井長政、{{ruby|越前|えちぜん}}(福井県の大半)の朝倉義景などの有力な大名や{{ruby|比叡山|ひえいざん}}{{ruby|延暦寺|えんりゃくじ}}と一向一揆のような一部の仏教勢力が、信長に敵対した。信長の周囲のほとんどが敵に回ったため、一時は大変な危機におちいった。しかし、浅井・朝倉などを各個に撃破することに成功した上に武田信玄が病死したため、危機を乗り切った。
そして、信長は1573年、足利義昭を京都から追い出し、室町幕府は信長によって滅ぼされた。
1575年、徳川家康は武田信玄のあとをついだ武田勝頼に攻め込まれ、信長が救援に向かう。両軍は長篠(三河国)で戦いとなり、織田・徳川軍は鉄砲を大量に使用し<ref>千丁(一説に三千丁)とも言われる</ref>、武田軍に勝った。これが長篠の合戦である。
1576年に信長は安土城を築いた。1582年、毛利家と戦っていた部下の羽柴秀吉を援助しようと、道中で本能寺に寝泊まりしていたところを、部下の明智光秀によって裏切られ、自害する(本能寺の変)。
信長は新しいもの好きだったようで、宣教師(せんきょうし)が地球儀を見せると、即座に地球が丸いことを理解したという。
後世の江戸時代以降の作家からは、信長の性格の例えとして「鳴かぬなら殺してしまえホトトギス」などと信長は評されている。
* 家臣
:柴田勝家(しばた かついえ)
:羽柴秀吉(はしば ひでよし)
:前田利家(まえだ としいえ)
:明智光秀(あけち みつひで)
など、ほか多数。
==== 豊臣秀吉 ====
信長亡き後、明智光秀を倒し検地を始めた。大阪城を築き、関白となると翌年には太政大臣となった。刀狩令を出した2年後に天下統一を成し遂げた。その後、朝鮮に2度攻め込み、2回目の侵略中に病死した。
==== その他 ====
*千利休
:お茶を飲む習慣は鎌倉時代に始まっていたが、室町時代になると茶の湯として広く流行し、茶器の工芸品としての価値も高まった。そのため、高価な茶器を用いた豪華な茶会が開かれるようになった。
:そのような風潮に対して、一見ありふれたような道具を用い、そまつな中の美しさを見出し、客と主人との心の交流を重んじる[[w:わび茶]]が生まれる。このわび茶をもとにして、現在の茶道を作り上げたのが千利休である。
:堺の有力商人でもあった利休は、織田信長などとの取引をつうじて関係を築き上げていった。このため武将たちとも交流ができ、多くの弟子が生まれた。信長の死後、豊臣秀吉に仕えるが、秀吉の怒りをかってしまい、利休は切腹させられた。
*狩野永徳
:戦国時代の有名な絵描きの一人。「狩野派」(かのうは)とは、彼、および、彼の弟子や孫弟子などの一門のことである。
== 江戸時代 ==
===[[w:徳川家康|{{ruby|徳川家康|とくがわいえやす}}]]===
[[File:Tokugawa_Ieyasu2.JPG|thumb|250px|徳川家康]]
:1543年、{{Ruby|三河|みかわ}}(現在の愛知県東部)の大名{{Ruby|松平|まつだいら}}氏に生まれます。松平氏は三河の国人出身の大名でしたが、隣接する{{ruby|今川|いまがわ}}氏や織田氏に比べると弱小な大名でした。家康は家を継ぐ前、{{Ruby|松平元康|まつだいらもとやす}}と言って、今川氏に人質に出されていたことがあります。
:1560年[[#桶狭間の戦い|{{ruby|桶狭間|おけはざま}}の戦い]]で[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#今川義元|今川義元]]が討ち死にし、今川氏が弱くなると、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#織田信長|信長]]と同盟し三河をとりもどします。そして、名を{{ruby|徳川家康|とくがわいえやす}}とかえ、{{Ruby|遠江|とおとおみ}}をせめとります。その後、信長の同盟国として武田氏や北条氏と隣接する信長の勢力の東南部を守り続けます。
:1572年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#三方原の戦い|{{ruby|三方原|みかたがはら}}の戦い]]では大敗し、命の危険もありましたが、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#武田信玄|武田信玄]]が病死し、兵は甲斐へもどったため一命をとりとめました。
:逆に、1575年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#長篠の戦い|長篠の戦い]]では、信長との連合軍で、{{ruby|武田勝頼|たけだかつより}}に大勝し{{Ruby|駿河|するが}}をえ、1582年武田氏をほろぼして{{Ruby|甲斐|かい}}と{{Ruby|信濃|しなの}}の一部をえました。
:秀吉には、後継者争いで一時抵抗し、秀吉の軍をくだすなどしたのですが、和解し、その後はしたがいます。
:1590年、秀吉の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#小田原攻め|小田原攻め]]に協力し北条氏を攻め滅ぼしますが、秀吉の命令によって、領地を北条氏のおさめていた関東に移され、{{Ruby|江戸|えど}}城を{{Ruby|拠城|きょじょう}}としました。
:秀吉の生前は、秀吉配下では最大の大名となっており、秀吉政権においては五大老の筆頭でした。
:秀吉の死後、1600年、[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#関ヶ原の戦い|関ヶ原の戦い]]に勝利して政権を握ります。
:1603年、{{Ruby|朝廷|ちょうてい}}から [[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#将軍|{{Ruby|征夷大将軍|せいいたいしょうぐん}}]]に任命され、江戸に幕府を開きます。
:1614年から翌年に「大坂の陣」を起こして豊臣氏を滅ぼしたのち、1616年亡くなりました。「東照大権現」として、日光東照宮などにまつられています。
=== [[w:徳川家光|{{ruby|徳川家光|とくがわいえみつ}}]] ===
家光は江戸幕府第3代目将軍。征夷大将軍になると、武家諸法度の中に新しく参勤交代という制度を創り江戸幕府の支配を固めだした。老中、大老を置いた
===<span id="近松門左衛門"/>[[w:近松門左衛門|{{ruby|近松門左衛門|ちかまつもんざえもん}}]]===
人形浄瑠璃・歌舞伎の作者。町人社会の義理や人情をテーマとした作品([[w:世話物]])や歴史的な事件や出来事を扱った[[w:時代物]]で評判を得る。
代表作は「曽根崎心中」「{{ruby|冥途|めいど}}の飛脚」「{{ruby|女殺油地獄|おんなごろしあぶらのじごく}}」「{{ruby|国姓爺合戦|こくせんやかっせん}}」など。
===<span id="歌川広重"/>[[w:歌川広重|{{ruby|歌川(安藤)広重|うたがわ(あんどう)ひろしげ}}]]===
『東海道五十三次』で有名な浮世絵師。
=== <span id="本居宣長"/>本居宣長 ===
「もとおりのりなが」国学を学ぶ。
『古事記伝』を著す。
=== <span id="杉田玄白"/>杉田玄白 ===
[[File:Kaitai Shinsho 29-1.png|thumb|解体新書。]]
前野良沢と共にオランダ書「ターヘル・アナトミア」を日本語に訳し、「解体新書」を完成させた。
=== <span id="伊能忠敬"/>伊能忠敬 ===
日本中を駆け巡り、正確な日本地図を作る。
=== <span id="マシュー・ペリー"/>マシュー・ペリー ===
日本に開国を求め、1854年に日米和親条約を結ぶ。
=== <span id="勝海舟"/>勝海舟 ===
幕臣
西郷隆盛と話し合い、江戸城を人が死ぬことなく開城させた。
=== <span id="坂本龍馬"/>坂本龍馬 ===
西郷隆盛(薩摩藩)と木戸孝允(長州藩)を結び付け薩長同盟の成立に大きな役割を果たした。
また、土佐藩の仲間を中心に、日本初の貿易会社(海援隊)を長崎で作り、物産や武器の貿易をした。
33歳の時何者かに暗殺され、亡くなった。
== {{ruby|明治|めいじ}}時代 ==
=== <span id="西郷隆盛"/>[[w:西郷隆盛|{{ruby|西郷隆盛|さいごうたかもり}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。「討幕」を主導するなど{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
:討幕後、{{ruby|廃藩置県|はいはんちけん}}を主導するなど、新しい社会を作るために、古い武家社会の消滅に貢献しました。
:征韓論を唱えて、政府を離れました。
:鹿児島に戻って、若者の指導をしていましたが、新政府に不満を持つ士族にかつぎあげられ、西南戦争を起こし敗死します。
=== <span id="大久保利通"/>[[w:大久保利通|{{ruby|大久保利通|おおくぼとしみち}}]] ===
:{{ruby|薩摩藩|さつまはん}}出身。西郷隆盛等とともに討幕を主導します。
:維新後は、内務省を作り、日本の官僚制度を作り上げます。
:西南戦争時には、これを指導し政府を勝利に導きます。
:西南戦争の翌年、不平士族に暗殺されます。
=== <span id="木戸孝允"/>[[w:木戸孝允|{{ruby|木戸孝允|きどたかよし}}]] ===
{{ruby|長州藩|ちょうしゅうはん}}出身。{{ruby|西郷隆盛|さいごうたかもり}}と同じく、{{ruby|明治維新|めいじいしん}}の中心人物です(参議)。
=== <span id="明治天皇"/>[[w:明治天皇|{{ruby|明治天皇|めいじてんのう}}]] ===
明治時代の天皇。{{ruby|五箇条|ごかじょう}}の{{ruby|御誓文|ごせいもん}}を発布しました。
=== <span id="伊藤博文"/>[[w:伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:大久保利通の跡を継いで、日本の官僚制度を整備します。
:その完成として{{ruby|内閣|ないかく}}制度を{{ruby|創設|そうせつ}}し、初代{{ruby|内閣総理大臣|ないかくそうりだいじん}}となります。
:ヨーロッパを回り、大日本{{ruby|帝国憲法|けんぽう}}の手本となる憲法を研究し、ドイツ(当時はプロシア)の憲法を手本とすることにしました。
=== <span id="渋沢栄一"/>[[w:渋沢栄一|{{ruby|渋沢栄一|しぶさわえいいち}}]] ===
:銀行、証券取引所、保険制度、商工会議所など、近代的な経済の仕組みを日本に導入した実業家です。
* 関連する人物
: [[w:岩崎弥太郎|{{ruby|岩崎弥太郎|いわさきやたろう}}]]
=== <span id="福澤諭吉"/>[[w:福澤諭吉|{{ruby|福沢諭吉|ふくざわゆきち}}]] ===
[[画像:福澤諭吉像2.jpg|250px|thumb|福澤諭吉像(東京都港区三田・慶應大学構内)]]
:1835年 - 1901年
:豊前国中津藩(現在の大分県中津市)の下級武士の子として生まれます。大阪の「適塾」で蘭学を学び、1859年[[#勝海舟|勝海舟]]らが率いる咸臨丸に同乗し渡米の経験をえ、その後ヨーロッパを訪問、再び米国を訪れるなどして、蘭学のみならず英語による欧米の文物の知識を得るようになります。
:1868年(慶応4年)に、蘭学塾である'''慶應義塾'''を開きます。それまで、医学や化学など科学技術が中心であった蘭学塾と異なり、欧米の思想や会計などの制度も教えました。また、蘭学塾といいながら英語によるものが教えられていました。これが、日本で最初の近代的大学と言われる'''慶應義塾大学'''(慶應大学)の創始です。
:明治時代になって、「自由」や「平等」など「権利」「人権」といった欧米の近代思想を数々の著書を通じて紹介しました。『学問のすすめ』の中では「天は人の上に人を造らず、人の下に人を造らず」と、生まれながらの平等を説いて、努力次第で社会の重要な地位に就くことができること(立身出世)を主張しました。
:官主導の明治政府に対して、民間の立場から、新聞や出版物で社会を啓蒙し、教え子を民間の各所で活躍させるなどして、日本社会の近代化を主導しました。
:現在({{#time:Y|+9 hours}}年)の1万円札の肖像に用いられています。
* 関連する人物
: [[w:中江兆民|{{ruby|中江兆民|なかえちょうみん}}]]
: [[w:金玉均|{{ruby|金玉均|きんぎょくきん}}]] <!-- 当然、荒らしではありません -->
=== <span id="大隈重信"/>[[w:大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]] ===
:{{ruby|地租改正|ちそかいせい}}などの{{ruby|改革|かいかく}}にあたるとともに、{{ruby|殖産興業|しょくさんこうぎょう}}を{{ruby|推進|すいしん}}しました。
:自由民権運動を主導しました。
=== <span id="板垣退助"/>[[w:板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]] ===
自由{{ruby|民権|みんけん}}運動の主導者です。
=== <span id="陸奥宗光"/>[[w:陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]] ===
日米修好通商条約の{{ruby|領事裁判権|りょうじさいばんけん}}({{ruby|治外法権|ちがいほうけん}})の{{ruby|撤廃|てっぱい}}に成功しました。
=== <span id="山県有朋"/>[[w:山県有朋|{{ruby|山県有朋|やまがたありとも}}]] ===
:{{ruby|長州藩|ちょうしゅうはん}}出身。
:日本陸軍の仕組みを作り上げ、政府に対する強い地位を確立した。
* 関連する人物
:[[w:川上操六|{{ruby|川上操六|かわかみそうろく}}]]
:[[w:山本権兵衛|{{ruby|山本権兵衛|やまもとごんのひょうえ(ごんべい)}}]] - 海軍において山縣有朋と同様の役割を果たした。
=== <span id="東郷平八郎"/>[[w:東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]] ===
:{{ruby|日露|にちろ}}戦争で{{ruby|活躍|かつやく}}した海軍軍人です。
関連する人物
:[[w:大山巌|{{ruby|大山巌|おおやまいわお}}]]
:[[w:児玉源太郎|{{ruby|児玉源太郎|こだまげんたろう}}]]
:[[w:乃木希典|{{ruby|乃木希典|のぎまれすけ}}]]
:メッケル
=== <span id="小村寿太郎"/>[[w:小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]] ===
:日露戦争の講和会議に全件として出席し、ポーツマス条約を締結して日露戦争を終わらせた。
:1911(明治44)年にアメリカとの{{ruby|交渉|こうしょう}}で関税自主{{ruby|権|けん}}を回復させた。
=== <span id="野口英世"/>[[w:野口英世|{{ruby|野口英世|のぐちひでよ}}]] ===
:1876年(明治9年) - 1928年(昭和3年)。医師、細菌学者。
:福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)出身。高等小学校を卒業して上京し、済生学舎(日本医科大学の前身)に通い、医術開業試験に合格して医師となり、渡米してペンシルベニア大学医学部の助手を経て、ロックフェラー医学研究所研究員となった。
:主に細菌学の研究に従事し、{{ruby|黄熱病|おうねつびょう}}や梅毒の研究で知られる。数々の論文を発表し、ノーベル生理学・医学賞の授賞候補に三度名前が挙がった。黄熱病の研究中に自身もそれにかかり、英領ゴールド・コースト(現在のガーナ共和国)のアクラで51歳で死去。
:1000円札にのっている人物として有名。
:その他、[[小学校社会/6学年/歴史編/国際社会に進み出す日本-明治末期から大正時代#野口英世]]を参照。
===<span id="北里柴三郎"/>[[w:北里柴三郎|{{ruby|北里柴三郎|きたさとしばさぶろう}}]]===
:ドイツに留学し、伝染病を研究。帰国後、伝染病の研究所作ろうとしたが、政府の援助は得られなかったところ、{{ruby|福沢諭吉|ふくざわゆきち}}が支援し研究所が完成、{{ruby|志賀潔|しがきよし}}、野口英世などの研究者が生まれ育っていった。
== {{ruby|昭和|しょうわ}}時代 ==
=== <span id="昭和天皇"/>[[w:昭和天皇|{{ruby|昭和天皇|しょうわてんのう}}]] ===
{{ruby|昭和|しょうわ}}時代の{{ruby|天皇|てんのう}}。
=== <span id="吉田茂"/>[[w:吉田茂|{{ruby|吉田茂|よしだしげる}}]] ===
:アメリカ合衆国占領下の日本で、新憲法の成立と日本の新しい民主主義体制を確立させ、サンフランシスコ講和条約を締結し日本の主権を回復しました。。
=== <span id="佐藤栄作"/>[[w:佐藤栄作|{{ruby|佐藤栄作|さとうえいさく}}]] ===
:1964年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
:日本の高度成長をおしすすめ、沖縄の日本への復帰を成功させました。
:日本人で初めて、ノーベル平和賞を受賞しています。
=== <span id="田中角栄"/>[[w:田中角栄|{{ruby|田中角栄|たなかかくえい}}]] ===
1972年{{ruby|頃|ごろ}}の{{ruby|首相|しゅしょう}}です。
==脚注==
<references/>
[[Category:社会|しようかつこうしやかい6しんふつ]]
ko60sxelvejku6eonqofz7oh2rkj2dd
プログラミング/共通知識
0
23172
205958
205910
2022-07-28T22:20:53Z
Ef3
694
/* 実行順序 */ s/文を区切るのは改行、あるいは<code>;</code> (セミコロン) を使用することが多い。/(C言語では)式の後に<code>;</code> (セミコロン) を後置すると文(式文)となる。/;C言語では、セミコロンは文を区切っているのではなく、式を文にする区切子でブロックの最後にもセミコロンが必須。
wikitext
text/x-wiki
このページでは、プログラミングにおいて頻出である共通の知識を説明する。
== 概要 ==
プログラミングはWindows(ウィンドウズ)、macOS(マック)、GNU/Linux(リナックス)、ChromeOS(クロームブック)、*BSD(ビーエスディー)どのOSでも、行うことができる。
スマートフォン向けのOS、iPhone(アイ フォーン) や Android(アンドロイド)などで行うこともできる。
※注釈:以下では、電子計算機を指す用語として「コンピュータ」、「コンピューター」が混在している場合があるが、どちらも同じ意味である。
==「プログラミング」とは? ==
「'''プログラム'''」はコンピュータにしてもらう指示をまとめたものです。「'''プログラミング'''」は、「'''プログラム'''」を作成することです。私たちはプログラムを作ってコンピュータに実行させることでコンピュータに仕事をしてもらいます。現代のコンピュータは、内部では0と1だけの2進数で動作しています<ref>フラッシュメモリーのMLC/TLCに代表される[[w:多値論理]]など、特殊なアーキテクチャを採用しているコンピューターを除く</ref>。2進数で表現されていることを特に「'''バイナリ'''」と呼びます。それに合わせて、指示は0と1のみで表現される「'''機械語'''」で与える必要があります。しかし機械語は直接読み書きすることは困難です。そこで、より私たちの話す言語に近い文法や単語からなる”記号”で指示を記述して、それをあとで2進数に訳して実行させるという方法が生まれました。この「翻訳する」作業を「'''コンパイル'''」と呼びます。
== 文字入力 ==
プログラミングをするからには、文字の入力ができなくては始まらない。以下は、文字に関する概念を簡単に述べる。
=== バイナリファイルとテキストファイル ===
'''概要''': バイナリファイルとテキストファイルは人間都合の呼びわけである。
コンピュータはHDD、SSDなどの記憶媒体にファイルを保存する。「'''テキストファイル'''」とは、文字として解釈することを想定されたファイルを指す。対となる概念として、「'''バイナリファイル'''」がある。Windowsではテキストファイルには<code>.txt</code>という拡張子を付けることが多い。プログラムを作るとき、拡張子は言語に応じたものを付けて区別する。
=== テキストエディタ ===
'''概要''': テキストエディタは怖くない。
文字を入力するときは、専用のアプリを起動する。以下に不完全なOSに付属しているエディターのリストを示す:
* Windows: メモ帳 (<code>notepad.exe</code>)
* macOS: vi, emacs
* GNU/Linux: nano
さらに、emacsやvim、Atom、VSCodeもテキストエディタと呼ばれる。エディタによっては、シンタックスハイライトと呼ばれる色分けをする機能や、折りたたみ機能など、特色ある機能を搭載している場合がある。テキストエディタのインストール方法については、ここでは取り扱わないので、各エディタのマニュアルを参照すること。
=== ワープロソフトは使えない ===
'''概要''': マイクロソフト社のWord(ワード)のようなワープロソフトでは、テキスト以外に付属するデータがあるため、プログラミングには使えない。
ワープロソフトで保存されるのはバイナリファイルであることが非常に多い。ワープロソフトで文章を保存しても、文章がそのままテキストとして保存されるわけではない。そのファイルの拡張子を「.c」に書き換えてC言語として再解釈しようとしても、コンパイルエラーになってしまうだろう。なぜエラーになるかというと、ワープロソフトには、メタデータと呼ばれるフォントの種類、大きさ、色、位置関係の情報など、文字そのもの以外の情報もふくまれているからだ<ref>実は多くのワープロソフトではテキストファイルを保存する方法が用意されており、それで保存すればプログラミングもできないこともありません。ただしワープロソフトはプログラミングを意図した設計になっていないので、ワープロソフトでやるメリットはほとんどありません。</ref>。
=== 入力モード ===
'''概要''': 大半のプログラミング言語において、ほとんどの記号、数字は、半角英数字で入力しなければならない。表示させたい文章などは、その限りではない。
プログラム中に出現する記号は、ほとんどの場合、半角英数字で入力する必要がある。大抵のOSでは直接入力モードに切り替える必要がある。OSによっては、半角モードと直接入力モードとは、べつのモードの場合がありますので、気をつけましょう。なお、Windows7では、半角英数が直接入力です。
<syntaxhighlight lang="c">
print("おはよう")
</syntaxhighlight>
というコードがあったとしたら、「print」「(」「"」は直接入力モードで入力します。「おはよう」を全角モードで入力します。そして、ふたつめの「"」「)」は直接入力モードで入力します。つまり、例外的に日本語表示をしたい部分だけを除いて、原則的に直接入力モードで、入力することになります。
=== 拡張子 ===
'''概要''': ファイルの最後の「.」より後ろを[[w:拡張子]]と呼ぶ。ファイルの名前にはわかりやすくするために拡張子をつけておく。
'''拡張子'''(かくちょうし)はテキストエディタで保存する時つける必要がある。拡張子は、プログラミング言語の種類によって変わるため、それぞれのプログラミング言語についてのマニュアルを参照する。C言語で保存するには、「.c」を末尾につける。{{code|sample}}という名前のファイルをC言語として保存する場合には、ファイル名を{{code|sample.c}}とする。
=== コマンドラインと慣れ親しむ ===
'''概要''': キャラクターインターフェイスのみ用意されている場合は、コマンドラインで諸々の準備を行わなければならない。
* Windowsの場合: {{code|[[w:コマンドプロンプト|cmd]]}}または{{code|[[w:PowerShell|powershell]]}}
* macOS場合: {{code|/bin/zsh}}<ref>macOS 10.15 Catalina(2019) からディフォルログインシェルが、それまでの bash から zsh に変わった。</ref>
* GNU/Linuxの場合: {{code|/bin/bash}}が多い
* FreeBSD,NetBSD,OpenBSDなどのBSD系Unixの場合: {{code|/bin/tcsh}}ほか
真っ黒な画面、白い文字。恐怖心を覚えるかもしれないが、避けては通れない道である。プログラミング言語によっては扱う必要がないかもしれない。パッケージマネージャーによるインストールなどはここでは扱わないので、各OSのマニュアルを参照。
* コマンドラインから抜ける: {{code|exit}}
<!--
== GNU/Linuxの場合 ==
=== おおまかな手順 ===
[[File:Fedora teminal.png|thumb|500px|「端末」を開いた場合のGNU/Linuxの画面 (Fedora 29)]]
[[File:GNU/Linux Fedora terminal.png|thumb|300px|端末の画面 (抜粋)]]
# テキストエディタで、ソースコード(プログラム文)を記述する。
# コードを保存するとき、その言語専用の拡張子をつけて、コードだけの書かれたテキストファイルを保存する。
# コンパイルの必要な言語の場合、コンパイルなどの作業。この作業は、コマンド端末(Windowsに例えると「DOSプロンプト」みたいなアプリ)を用いることになる。
# 実行可能な形式になったファイル形式のファイルを、実行する。この作業で、コマンド端末を用いることになる。
=== コマンド端末の起動と終了のしかた ===
GNU/Linuxの場合、OSにディストリビューションと呼ばれる種類があります。そのOSの種類により、なかに入っているコマンド端末の名前がちがいます。
しかし、たいてい最近のOSにはアプリケーション検索のための画面が用意されており、そのアプリ検索欄に「コマンド」とか「command」とか「terminal」(※ 「ターミナル」と読む。「端末」という意味)とかの語句を検索欄に入力すれば、そのOSに入っているコマンド端末アプリが発見されるので、OSの指示にしたがえばそのコマンド端末アプリを起動することができます。<ref>「command」とさいごまで入力しなくても、「comm」とか「コマ」あたりまで入力した時点で、補完することができる。</ref>
またほとんどのOSにはコマンド端末が最初からインストールされているので、わざわざ追加インストールする必要はありません。もしためしてみて追加インストールを要求される場合、アプリケーションをまちがえている場合があります。<ref>たとえば、GNU/Linuxの一種である「Fedora」(フェドラ)というOSの標準バージョンOSを使っている場合なら、さいしょからコマンド端末がインストールされており、「端末」というアプリケーション名のアプリが、目的のコマンド端末アプリケーションである。</ref>
コマンド端末の起動方法は、普通のアプリケーションの起動と同じで、アイコンをダブルクリックすれば起動することができます。
なお、GNU/Linuxのコマンド端末を終了する場合は、右上(もしくは左上)にある「×」マークをクリックするか、コマンド端末中に「exit」<ref>発音はイグジットと読む</ref>と入力します。
なお、まちがって「exit()」(×。まちがい!)と入力してしまうと、そういう名前の特別な別コマンドだと解釈されてしまい、文字を追加入力する画面になってしまう。その場合、Ctrlキーとcを一緒に押すことで強制終了して元の画面に戻ることができます。
=== アプリのインストール作業 ===
言語によっては、そのプログラミング言語が、インストールされてない場合も多くあります。その場合、自分で、追加インストールする必要があります。
GNU/Linuxで一般にアプリをインストールする場合、そのOSの種類によって、インストールのためのコマンドが違います。
GNU/Linuxの一種である「ubuntu」(ウブントゥー)で、アプリをインストールする場合、OSの文字入力モードを直接入力モードにしてあることを確認したうえで、「sudo apt-get install アプリ名」のようにコマンドを実行します。
GNU/Linuxの一種である「Fedora」(フェドラ)で、アプリをインストールする場合、OSの文字入力モードを直接入力モードにしてあることを確認したうえで、「sudo dnf install アプリ名」のようにコマンドを実行します。
なお「sudo」とは、「管理者権限になって、コマンドを実行する」という意味です。「apt」(発音はアプト?)とか「dnf」(ディー エヌ エフ)はソフトウェアの名前のようなものなので、まだ、プログラミング初心者は、「apt」とか「dnf」を気にしなくていいです。
さて、「sudo ◯◯ install アプリ名」をコマンド端末に入力してエンターキーを押したあとに、コマンド端末からパスワードの入力を求められる場合もあります。もし、OSインストールに設定したパスワードをそのまま変更していなければ、どのパスワードを入力します。
なお「sudo install アプリ名」(×。「apt-get」や「dnf」を忘れている。)と入力しても、エラーになります。
さて、インストール作業の途中などで、端末から、「本当に実行しても、よろしいですか? y/n 」的な作業確認のための入力を求められます。もし、本当に実行してもいいなら、直接入力モードでyを入力して、エンターキーを押します。ここでの「y」の意味は、英語yesの頭文字のことです。
実行を取り消したい場合には、直接入力モードでnを入力して、エンターキーを押します。ここでの「n」の意味は、英語noの頭文字のことです。
== Windowsの場合(※ 未完) ==
プログラミング言語の種類によって、プログラミングを始めるためのソフトウェアは違うが、たいていの有名で普及しているプログラミング言語については、『Visual Studio』(ビジュアル スタジオ)のような名前のソフトウェアで、プログラミング作業ができるようになっている。
なお、'''WindowsとMac以外'''では『Visual Studio』を利用できない(Macは"Visual Studio for Mac"が存在する)。
『Visual Studio』のインストールは、けっこう手間と時間が掛かる。もし普段からWindows Updateをしてない場合、『Visual Studio』のインストールのための準備には数日の期間が必要になる場合もあるので、あらかじめ Windows Update をしておく必要がある。(深夜の睡眠前にアップデートを実行しておくと、時間が効率的に使えるだろう。)
また、.NET Framework の最新版が必要である(Visual Studio for Macの場合.NET Coreの最新版が必要)。
さらに、.NET Framework の最新版をインストールするためには、Windows Update でシステムを最新の状態にアップデートしていく必要がある。
システムを最新の状態にアップデートしてないと、Visual Studio をインストールできない。マイクロソフト公式サイトからVisual Studioのインストーラーをダウンロードして起動しても、インストーラーが途中で終了する。
また、Visual Studio のインストールがいちおうは成功しても、初期状態では単なるテキストエディタであり、なんとコンパイラは何も付属していない。Windows用の各種のプログラム言語のコンパイラはけっこう利用容量が多く、数GBほど容量を占有するためもあってか、初期状態ではコンパイラをインストールしていない。
このため、最終的に数十GBの空き容量が、Visual Studio のインストールのために最低でも必要になる。
Visual Studio には何種類かあり「Visual Studio IDE」や「Visual Studio Code」などの種類がある。
Windows製品にかぎらず(GNU/Linuxなどでも)「IDE」とは一般に、コンパイラとプログラム実行環境と編集用エディタが付属したソフトウェアの事であり、統合開発環境(Integrated Development Environment)を略してIDEと読んでいる。
-->
== 言語と言語処理系 ==
コンピュータが認識できるのは機械語のみであることは先で述べました。しかしプログラミング言語は文法に沿った言語で書かれています。それらの書かれた文章を'''ソースコード'''と呼びます。
プログラムを処理するためのソフトウェアを'''言語処理系'''と呼び、言語処理系は[[#インタプリタ|インタプリタ]]と[[#コンパイラ|コンパイラ]]に大別されます。
=== インタープリター ===
インタープリターとは、プログラミング言語で書かれたソースコードや中間形式を逐次解釈しながら実行するプログラムのことです。
'''スクリプト言語'''と呼ばれる言語は、おおむねインタープリター方式を採用しています。
言語処理系の主要な実装がインタープリターなプログラミング言語を'''インタープリター型言語'''(''Interpretive language'')と呼びます。
インタープリター型言語には
* [[Lisp]]
* [[JavaScript]]
* [[Perl]]
* [[Python]]
* [[Ruby]]
などがあります。
手軽に書いてすぐ実行できるというメリットがある反面、プログラムの実行時に毎回解釈をする必要があるのでプログラムの実行速度はコンパイル方式のプログラミング言語に実行速度が劣る場合があります<ref>インタープリターは実行時に「どの部分が多く実行されたか?」「分岐命令でどちらに多く分岐したか?」などの実行時統計情報を容易に手に入れることができ、これらに基づき[[W:実行時コンパイラ|実行時コンパイラ]](JIT)による最適化が可能となります。よって、一概にインタープリター方式がコンパイル方式より実行速度が劣るとは言えません。</ref>。
インタープリター方式を採用した言語の処理系は、ソースコードを直接実行するのでプログラムを書換えると、即時に実行結果もそれに応じて変化します。
=== コンパイラ ===
ソースコードを予めに機械語(ネイティブコード)に翻訳し、機械語のファイルを実行するという方法もあります。
プログラムのソースコードコードを機械語に変換することを、'''[[W:コンパイル|コンパイル]]'''と言います。
コンパイルするためのソフトウェアのことを'''[[W:コンパイラ|コンパイラ]]'''といいます。
言語処理系の主要な実装がコンパイラなプログラミング言語を'''[[W:コンパイル型言語|コンパイル型言語]]'''(''Compiled language'')と呼びます。
また、[[W:実行時コンパイラ|実行時コンパイラ]](JIT; Just-In-Time Compiler)と区別するため、[[W:事前コンパイラ|事前コンパイラ]](AOT;Ahead-Of-Time)と呼ばれます。
コンパイル型言語には
* [[Fortran]]
* [[COBOL]]
* [[C言語]]
* [[C++]]
などがあります。
コンパイル型言語では、ソースコードが書かれたファイルと、実行ファイルとは、別のファイルです。
そのためソースコードを変更してもコンパイルしなければ変更が反映されません。
コンパイル型言語の実行ファイルは、機械語で書かれています<ref>UCSD-PascalのP-Codeや、JavaのByte-codeの様な中間コードを生成し、中間コード・インタープリタが実行する言語処理系もあります。</ref>。
コンパイル型言語のプログラムの実行では、機械語で書かれた実行ファイルをそのまま実行するので処理が高速です。
実行ファイルは、それぞれのハードウェアやオペレーティング・システムに合わせた形式になっています<ref>異なるハードウェアの実行ファイルは、通常は仮想機械環境を使わない限り実行できません。</ref>。
Windowsをターゲットにした実行ファイルをGNU/Linuxにコピーしても実行できません<ref>同じハードウェアでも異なったOSで相互に実行ファイルが実行できない理由は、いくつかありますが、実行ファイルの形式の違いとOSの提供するシステムコールの違いが主なもので、この2つを克服した[[W:Wine|Wine]](GNU/LinuxでWindowsの実行ファイルを実行可能にする環境)や[[W:Windows Subsystem for GNU/Linux|WSL]](WindowsでGNU/Linuxの実行ファイルを実行可能にする環境)では異なったOSの実行ファイルの実行を実現しています。</ref>。
実行ファイルから元々のソースコードを取り出すこと ('''[[W:逆コンパイラ|デコンパイル]]''') は一般に困難です。
機械語にはそのハードウェア対する命令だけが書かれており、ソースコードは機械語には書かれていません<ref>ただし、デバッグや動的リンクの為のシンボルは実行ファイルに含まれている場合もあり、デコンパイルの難易度を下げます。</ref>。
機械語に変換された実行ファイルは、配布するプログラムのソースコードを秘匿することが可能になる特徴があります。
プログラムのコードをコンパイルしたファイルを実行ファイルにまとめる前のファイルを'''オブジェクトファイル'''言います。
1つの実行ファイルが、複数のオブジェクトファイルから構成されることがあります。
(コンパイル) (リンク)
ソースコード1 ⇒ オブジェクトファイル1 ⇒ 実行ファイル
ソースコード2 ⇒ オブジェクトファイル2 ↑
: ↑
ソースコードn ⇒ オブジェクトファイルn ↑
という流れになります。
{{See also|w:機械語}}
=== どちらでもない言語、両方できる言語 ===
プログラミング言語をインタプリター言語とコンパイル言語に分けましたが、どちらにも属さないものや、どちらでも実現可能なものもあります。
=== 中間コード型 ===
ソースコードをコンパイルしてから中間コード・ファイルを生成し、実行は中間コード・インタプリタが行う形式があり、
この様な形式を'''中間コード型'''と呼びます。
中間コード型には
* [[w:UCSD p-System|UCSD p-System]]
** 対象言語:[[W:UCSD-Pascal|UCSD-Pascal]]
* [[Java]]
** 対象言語:Java, [[Groovy]], [[Scala]], [[Kotlin]], [[Clojure]]など
* MS-CLI
** 対象言語:C++/CLI, C#, F#, Visual Basicほか
などがあります。
==== Java ====
[[File:JvmSpec7.png|480px|ソースコード→classファイル→機械語|right]]
Javaはソースコードを、Java仮想マシンが解釈できる中間言語 (Javaバイトコード) にコンパイルします。そして実行時に、その中間言語を読み込みそれを実行するという仕組みです(中間コード・インタプリタ)。中間言語ファイルは機械語から独立しているため、どのハードウェアでも使うことができます。かわりにユーザーは、Java中間言語を実行するソフトウェア (JRE; Java Runtime Environment) をインストールします。そして、そのJavaのランタイムは、Windows、macOS、GNU/Linux系列といったそれぞれのOSごとで動作するように開発・維持されています。ユーザーから見れば、Javaのように中間言語を生成するプログラミング言語は、どのOSにも依存せず動作するので理想的なように見えます。しかし、ユーザーから見て統一的なAPIを提供しつつ、統一的なAPIとそれぞれのOSの違いを吸収する部分を実装することは非常に手間がかかります。
JVMを利用するJava以外の言語、Groovy, Scala, Kotlin, Clojureなども登場しています。
=== 両方できる言語 ===
また、コンパイルして実行することもインタプリタで実行も両方できる場合がある。Python、Go言語、Haskellは、その例です。
=== 例外 ===
;コンパイル型言語を逐次実行、あるいはインタプリタ型の言語をコンパイルして使用する場合
:コンパイル型言語に分類されるC言語のソースコードをインタプリタで逐次実行することがある。
:逆に、インタプリタ型言語に分類されるのBASICのソースコードをBASICコンパイラでコンパイルし生成された実行ファイルを実行することもある。
この様に、'''言語処理系の主要な実装が'''あるいは多くの場合は最初の実装が、インタプリタなのかコンパイラなのかで分類しているので、例外が生じる余地があります。
== 字句解析器・構文解析器 ==
== 字句解析器 ==
ソースコードは通常の文字列ですが、まずは、空白での区切りや既知のキーワードあるいは区切子に鑑み、文法上の最小単位の列に還元します。
この文法上の最小単位をトークンと呼びます。
トークンを切り出すプログラムのことを字句解析器(じくかいせきき;''lexical analyzer'' レキシカルアナライザー)あるいはトークナイザー(''Tokenizer'')と呼びます。
=== 構文解析器 ===
字句解析器の出力は、トークンの羅列(トークン列)です。
このトークン列を先頭から読出し、プログラミング言語の構文に当てはまるか、パターンマッチングを行い、一致したパターンに従い内部表現(構文木など)に変換します。
このようなプログラムのことを、トークン列から構文を解析するという意味で、構文解析器(こうぶんかいしゃくき;''parser'' パーサー)と呼びます。
構文解析にあたって、解析中のトークン列の注目している部分が、2つ以上の構文にマッチすることがあります(構文規の衝突;例えば懸垂if)。
この様な場合は、優先順位や結合方向を文法で規定することにより、一意にマッチする構文が定まるよう、実装上の工夫が必要です。
字句解析と構文解析を別々に行うことが可能なプリグラミング言語もありますが、多くのプログラミング言語では(文法に曖昧さがあったり、字句に対し意味論が重複している<ref>例えば、C++では、キャストと関数呼出しあるいは初期化の構文に衝突があり、型や関数の定義状況との照会を行わないと、構文の特定ができません。</ref>などの理由で)字句解析と構文解析は連携し実装されています。
== 文法 ==
=== 代入 ===
'''注釈''': <code>a = a + 1</code>が何を指すかご存知だろうか。{{code|a}}が変数、 {{code|<var>x</var> {{=}} <var>y</var>}}が変数{{code|x}}に式{{code|y}}の評価結果を代入していることが理解できるのであればこの文章は読み飛ばしても良い。
プログラミングと数学では、<code>=</code>が指す意味が違う。数学では、<code>=</code>は等号であり<math>a = b</math>とすることで、<math>a</math>と<math>b</math>が等価であることを意味する<ref>数学においては、<code>=</code>を等式ではなく代入に用いることもあり、コンテキストによって読み分けられる。</ref>。プログラミングにおいて<code>a = b</code>は変数<code>a</code>に式<code>b</code>の評価結果を代入する。たとえば、<code>a = a + 1</code>で、<code>a</code>の値が<code>2</code>だったとすると、<code>a = 2 + 1</code>となり、<code>2 + 1</code>の評価結果<code>3</code>が{{code|a}}に代入される。
=== 変数 ===
なお、上記の説明で、当然のように「変数」という言葉を用いたが、この「変数」という用語も、数学とは扱いかたが微妙に違うので、気をつける必要がある。
変数名の命名規則については、それぞれのプログラミング言語のマニュアルを参照すること。
また、なお、たいていの言語では、大文字・小文字を区別する(''case-sensitive'')<ref>比較的古くからある言語では、大文字・小文字を区別しない傾向にあります。具体的には、[[Fortran]]・[[COBOL]]・[[Lisp]]・[[ALGOL]]や[[BASIC]]は大文字・小文字を区別しません。理由は1つではありませんが、有力な理由の1つに小文字がコードがコード化されたASCIIが制定される1963年より前、あるいは同時期に言語設計と言語処理系の実装が行われたから、と考えられます。むしろC言語(1972)が比較的古い言語であるにもかかわらず小文字を区別していることが特異的といえます。</ref>。
C言語で例を示す:
;例1:<syntaxhighlight lang="c">
a = 2;
a = A + 1;
</syntaxhighlight>
以上のプログラムはエラーになる。{{code|a}}と{{code|A}}は区別され、{{code|A}}が定義されていないためである。
変数{{code|a}}を1増やしたいのであれば、例2のようにする。
;例2:
<syntaxhighlight lang="c">
a = 2;
a = a + 1;
</syntaxhighlight>
実行すれば、aの値は3になる。
{{コラム|静的型付け言語と動的型付け言語|2=
プログラミング言語は、静的型付け言語と動的型付け言語に大別されます。両者の間で、代入や変数の意味論が異なるので明確に区別する必要があります。
;静的型付け言語
:;具体例
::[[Fortran]], [[COBOL]], [[C言語]], [[C++]], [[Java]], [[Go]], [[Rust]]
:;特徴
::変数は型を持つ
::代入は、変数と結びついた記憶領域への右辺値のコピー
;動的型付け言語
:;具体例
::[[Lisp]], [[JavaScript]], [[Python]], [[Ruby]]
:;特徴
::変数に型はなく、変数に束縛された値(=オブジェクト, =インスタンス)が型を持つ
::代入は、変数への値の束縛
[[BASIC]]のような変数名に型情報を持った言語や、関数型言語の一部のように変数そのものを持たない言語もあります。
プログラミング言語の学習において、その言語のパラダイムにおける型システム・変数システム(オブジェクトシステム)の理解は初学時の重要な要素です。
}}
=== 実行順序 ===
単文は出現順序が先の方から順に実行されることがほとんどである(逐次実行<ref>現実のプロセッサーは、主に実行効率のために、投機実行やアウトオブオーダー実行などで逐次ではなく並列で、またインストラクションの順序を組替えて実行している。しかし、プログラマーから観た意味論は変更しない範囲で行われる(一部のRISCプロセッサーのディレイスロットの様な例外はある)。</ref>)。(C言語では)式の後に<code>;</code> (セミコロン) を後置すると文(式文)となる。例2で示したプログラムなら、<code>a = 2;</code>のあとに、<code>a = a + 1;</code>が実行される。
: 文や式の様な構文要素の分類は、プログラミング言語によって異なる。
=== 数値 ===
ソースコードで記述する整数リテラル、及び小数リテラルは、特に指定をしないかぎり、10進数である。整数と、(ほとんどの場合、[[w:IEEE 754|IEEE 754]]に準拠した) 有限のケタの小数が、普通のプログラミング言語では使える。分数や平方根(<math>\sqrt 3</math> など)などは、関数として用意されている場合でも、評価結果が近似される。また、小数も精度以下の部分は近似して表されます。
{{See also|[[W:浮動小数点数|浮動小数点数]]}}
<!-- 1.73205 08075 68877 29352 74463 41505 87236 69428 05253 -->
もし<math>\sqrt 3</math>が <math>1.732050808</math> に近似されたなら、コンピュータ内部では、<math>1.73205 \, 08075 \, 68877 \, 29352 \, 74463 \, 41505 \, 87236 \, 69428 \, 05253 \, \cdots</math>ではなく、<math>1.732050808 \times 10^0</math>という値として表現されています。上記のように、本来なら数学的には無限のケタの平方根などの無理数を有限ケタの小数に近似してしまうため、誤差が発生する。このような、無限小数を有限小数に近似したために誤差の発生する現象のことを'''浮動小数点数による誤差'''という。
過去の編集で、'''浮動小数点数による誤差''' を'''ケタ落ち'''としていましたが、'''桁落ち'''とは、丸め誤差を含む非常に近い大きさの小数同士で減算を行ったときに、有効数字が減る現象のことを言い有限の仮数部と指数部で表すことによる誤差とは違う概念です。また一般に浮動小数点数は2進数が採用されているので、十進数では有限桁数で表現できても浮動小数点数では循環小数になることがあります(例えば、
0.1<sub>10</sub> = 0.000110011001100…<sub>2</sub>)。
{{See also|[[W:桁落ち|桁落ち]]}}
== 関連項目 ==
* [[プログラミング/学習方法]]
* [[学習方法/高校情報]]
== 脚注 ==
{{Reflist}}
[[カテゴリ:プログラミング]]
c9hhu92ty5b43pxkoilscgq6lyt195g
高等学校日本史B/平安時代の地方政治
0
24159
205951
124578
2022-07-28T13:56:35Z
椎楽
32225
wikitext
text/x-wiki
{{Nav}}
== 経済 ==
=== 地方政治 ===
国司が任国に代理人である目代を行かせて、国司本人は京に在任する制度も認められた。また、代理人として'''目代'''(もくだい)を任国に行かせて、国司本人は在京する場合、このような国司のことを'''遥任'''(ようにん)という。または、そのような行為(代理人を任国に行かせて自分は在京する行為)のことも遥任(ようにん)という。
いっぽう、代理人をつかわずに国司本人が任国に行く場合、このような国司は'''受領'''(ずりょう)と呼ばれた。
また、(なんらかの理由で、)戸籍や計帳による農民把握が難しくなり、班田が行われなくなり、課税の対象が人から土地へと変わった。
そして、有力な農民に耕作を請け負わせた。また、耕作を請け負った有力農民のことを'''田堵'''(たと)という。
また田の管理区分では、田に、この請負人(田堵)の名前をつけて区分して管理したため、その田は「'''名田'''」あるいは「'''名'''」と呼ばれる
=== 荘園 ===
10世紀後半ごろから、熱心に開墾をする領主があらわれ、11世紀には彼らは'''開発領主'''と呼ばれた。
開発領主のなかには、国司による税の負担をのがれるため、中央の貴族に土地を寄進するものが現れた。このように寄進された土地は'''荘園'''(しょうえん)と呼ばれた。(のちの『百錬抄』(ひゃくれんしょう)や『愚管抄』(ぐかんしょう)などで「荘園」という用語がある。)
寄進をうけた貴族は'''領家'''(りょうけ)とよばれた。寄進を受けた貴族が、さらに上級の貴族に寄進する場合もあり、その上級貴族は'''本家'''(ほんけ)と呼ばれた。
:※ 東寺百合文書(とうじ ひゃくごう もんじょ)に「本家」、「領家」、「荘家」という表現がある。(東寺百合文書の原文は漢文)
いっぽう、寄進をした側の現地の管理者は、'''荘官'''(しょうかん)とよばれた。
荘園は、しだいに、租税をまぬがれる'''不輸の権'''(ふゆのけん)を獲得した。
また、国司の派遣する検田使(けんでんし)などの役人の立ち入りをさせない'''不入の権'''も獲得した。
== 武士 ==
=== 地方の反乱 ===
9世紀から10世紀ごろ、地方でたびたび反乱が起き、鎮圧のため「押領使」(おうりょうし)や「追捕使」(ついぶし)と呼ばれた軍隊が地方に送られた。軍隊の現場管理者たちのなかには、鎮圧後も京都にかえらず、地方に土着する者もあらわれていった。
このような武装集団たちが武士となっていった。
10世紀の前半、関東の有力武士の'''平将門'''(たいらの まさかど)は、下総(しもうさ)を根拠地として、一族と争っているうちに、国司とも対立し、将門は939年に常陸(ひたち)の国府を襲い、将門は反乱を起こした('''平将門の乱''')。さらに下野(しもつけ)・上野(こうづけ)の国府も襲った。そして、将門みずからを新皇(しんのう)と自称した。しかし940年、平貞盛(たいらのさだもり)と藤原秀郷(ふじわらひでさと)によって、平将門の反乱は鎮圧され、将門は討たれた。
同じころ、元・伊予(いよ)の国司であった'''藤原純友'''(ふじわら すみとも)が939年、瀬戸内海の一帯の地域で反乱を起こし、941年には太宰府を攻め落とした('''藤原純友の乱''')。しかし、同949年、小野好古・源経基らによって討たれた。
=== 源氏 ===
1028年には関東の房総半島で'''平忠常'''(たいらのただつね)が反乱したが、源頼信(みなもとの よりのぶ)が鎮圧した。
これ鎮圧の以降、関東で源氏の影響力が高まる。
1051年、陸奥で豪族の安倍氏が乱を起こす。頼信の子の頼義(よりよし)とその子(つまり頼信の孫)の義家(よしいえ)が、現地に下り、東国の武士をひきいて戦い、豪族の清原(きよはら)氏の援けを得て、安倍の反乱を鎮圧した。('''前九年合戦'''(ぜんくねん がっせん) )
その後、安倍氏にかわって奥羽で権力を得た清原(きよはら)氏に内紛が起き、義家はこれに介入し、1083年に藤原清衡(〜きよひら)をたすけて、反対派を鎮圧した。('''後三年合戦'''(ごさんねん がっせん) )
こののち奥羽では、清衡および その子の基衡(もとひら)と孫の秀衡(ひでひら)による'''奥州藤原氏'''が、陸奥(むつ)の平泉(ひらいずみ)を拠点にして支配し、約100年にわたって繁栄した。
また、これらの合戦の成果により、源氏の東国支配は確固たるものになった。
[[category:高等学校日本史|へいあんしたいのちほうせいし]]
6b1xpa8kh1fnny72wpfzs00151pzr4h
高等学校日本史B/院政とその展開
0
24160
205953
141960
2022-07-28T14:16:25Z
椎楽
32225
カテゴリ追加と大先生のポンコツ説明の一部を修正。
wikitext
text/x-wiki
{{Nav}}
11世紀のなかば、藤原氏を外戚としない'''後三条天皇'''(ごさんじょう てんのう)が即位したので、摂関政治が終わった。
後三条天皇は1069年に'''延久の荘園整理令'''(えんきゅう の しょうえん せいりれい)を出し、'''記録荘園券契所'''(きろく しょうえん けんけいじょ)を設置し、基準に満たない荘園を停止した。 摂関家も例外なく、多くの荘園を停止された。
(後三条天皇は、院政を行ってない。)
つづいて、後三条の子の'''白河天皇'''(しらかわ てんのう)が即位したが、1086年に退位して幼少の堀河天皇(ほりかわ てんのう)に皇位をゆずり、白河みずからは'''上皇'''となった。
そして、上皇みずから、政治を行った。
このような、上皇による政治のことを'''院政'''という。
院とは、もともとは上皇の住まいのことだったが、しだいに上皇じしんを指し示すようになった。
白河上皇、鳥羽(とば)上皇、後白河(ごしらかわ)上皇が、院政を行い、100年ほど院政が続く。
白河上皇は、院の御所に警備のため'''北面の武士'''を設けた。
歴代の上皇の院政の仕組みでは、上皇は'''院庁'''(いんのちょう)を設けた。国政は、上皇が太政官(だじょうかん)に指示して、実行された。
院政では、上皇の意志を伝える文書である'''院宣'''(いんぜん)や、院庁から下される文書である'''院庁下文'''(いんちょうの くだしぶみ)が権力をもった。
この頃から国司ではない公卿や寺社に、律令国の国司任命権と税などの収益を得る権限を与える'''知行国'''の制度が広まった。背景として、俸禄制度が崩壊して朝廷が公卿への給与を支払うことができなくなったことがあげられる。つまり、知行国からの収益を公卿への給与の代わりとしたのである。
荘園の制度は、この時代もひきつづき、存続した。ますます、荘園の独立性は高まっていき、中央政府は貴族や寺社の荘園からは租税などを取りづらくなった。
この頃、寺社が武装するようになった。寺社は、下級僧侶や領民を武装させて'''僧兵'''(そうへい)として組織した。また、僧兵らは、たびたび、貴族など相手に神木(しんぼく)や神輿(みこし)などをかついでデモ行進してくる'''強訴'''(ごうそ)を行い、要求を通そうとした。
朝廷は、僧兵らの圧力に対抗するため、武士を重用したので、中央政界で武士の影響力が高まった。
[[category:高等学校日本史|いんせいとそのてんかい]]
bj5hku56lv9xqv6y52ii1ipqqwcplpm
205962
205953
2022-07-29T00:05:47Z
2001:268:9BB8:625:B336:F087:6971:5991
ミス修正。
wikitext
text/x-wiki
{{Nav}}
11世紀のなかば、藤原氏を外戚としない'''後三条天皇'''(ごさんじょう てんのう)が即位したので、摂関政治が終わった。
後三条天皇は1069年に'''延久の荘園整理令'''(えんきゅう の しょうえん せいりれい)を出し、'''記録荘園券契所'''(きろく しょうえん けんけいじょ)を設置し、基準に満たない荘園を停止した。 摂関家も例外なく、多くの荘園を停止された。
(後三条天皇は、院政を行ってない。)
つづいて、後三条の子の'''白河天皇'''(しらかわ てんのう)が即位したが、1086年に退位して幼少の堀河天皇(ほりかわ てんのう)に皇位をゆずり、白河みずからは'''上皇'''となった。
そして、上皇みずから、政治を行った。
このような、上皇による政治のことを'''院政'''という。
院とは、もともとは上皇の住まいのことだったが、しだいに上皇じしんを指し示すようになった。
白河上皇、鳥羽(とば)上皇、後白河(ごしらかわ)上皇が、院政を行い、100年ほど院政が続く。
白河上皇は、院の御所に警備のため'''北面の武士'''を設けた。
歴代の上皇の院政の仕組みでは、上皇は'''院庁'''(いんのちょう)を設けた。国政は、上皇が太政官(だじょうかん)に指示して、実行された。
院政では、上皇の意志を伝える文書である'''院宣'''(いんぜん)や、院庁から下される文書である'''院庁下文'''(いんちょうの くだしぶみ)が権力をもった。
この頃から国司ではない公卿や寺社に、律令国の国司推薦権と税などの収益を得る権限を与える'''知行国'''の制度が広まった。背景として、俸禄制度が崩壊して朝廷が公卿への給与を支払うことができなくなったことがあげられる。つまり、知行国からの収益を公卿への給与の代わりとしたのである。
荘園の制度は、この時代もひきつづき、存続した。ますます、荘園の独立性は高まっていき、中央政府は貴族や寺社の荘園からは租税などを取りづらくなった。
この頃、寺社が武装するようになった。寺社は、下級僧侶や領民を武装させて'''僧兵'''(そうへい)として組織した。また、僧兵らは、たびたび、貴族など相手に神木(しんぼく)や神輿(みこし)などをかついでデモ行進してくる'''強訴'''(ごうそ)を行い、要求を通そうとした。
朝廷は、僧兵らの圧力に対抗するため、武士を重用したので、中央政界で武士の影響力が高まった。
[[category:高等学校日本史|いんせいとそのてんかい]]
bi58tdr58jmfa14wgqsok4zhh0clax7
高等学校日本史B/国風文化
0
24163
205952
158267
2022-07-28T13:57:13Z
椎楽
32225
wikitext
text/x-wiki
{{Nav}}
この平安のころ、十二単(じゅうにひとえ)とか、竹取物語などの日本文学が流行ったので、平安期の文化のことを、日本風の文化という意味で、歴史用語で「'''国風文化'''」ということが多い。
しかし、この時代、外国由来の仏教や密教なども、ひきつづき、流行していた。
== 外来の文化の変化 ==
この時代、宗教では、「国風」という名前に反して、外来文化である密教や'''陰陽道'''(おんみょうどう)も流行していた。
また、陰陽道などでの方角に関する考え方により、縁起の悪い方角を避ける「方違え」(かたたがえ)などの風習も生まれた。
また、従来からあった神仏習合(しんぶつ しゅうごう)の考えは、この時代、より具体化し、神は仏が姿を変えた仮の姿(権現(ごんげん) )であるとする'''本地垂迹説'''(ほんち すいじゃくせつ)となった。
== かな文学 ==
漢字の草書体をくずした かな文字(平仮名)は、貴族社会では、和歌や文学で用いられた。だが、公文書では、かな は用いられなかった。
また、かな の普及により、多くの和歌や文学がつくられるようになった。
== 文学 ==
『竹取物語』(たけとり ものがたり)は、いつ誰がつくったのか不明であるが、日本最古の かな物語 であると考えられる。(『竹取物語』の作者は不明なので、検定教科書では紹介してない。)
また、前提として、かな文字が普及している必要がある。
※ なお、紀貫之(きの つらゆき)が、(日本最古の)日記文学として『土佐日記』(とさにっき)を、かな文字をつかって書いている。なので、『竹取物語』も、この頃の時代の作品だろうと考えられている。
かなが普及したことにより、かな文字の文学が作られていくようになり、かなの和歌を多く含む勅撰の和歌集である『古今和歌集』がつくられた。
在原業平(ありわらの なりひら)など実在の人物を題材にした歌物語である『伊勢物語』も、書かれた。
また、『源氏物語』を書いた紫式部は、藤原道長の娘の中宮彰子(ちゅうぐう しょうし)に仕えた。
なので、その頃の時代の人である。
:(※ 範囲外: )『源氏物語』のなかに、『伊勢物語』を参考にした描写があることなどから、作品の成立した順序も分かっている。
::(古い側) 『竹取物語』 → 『伊勢物語』 → 『源氏物語』 (新しい側)
:の順で、作品が出来た。
随筆では、清少納言(せい しょうなごん)の『枕草子』(まくらの そうし)がある。
:(※ くわしくはwikibooks『[[高等学校国語総合]]』の古文の単元で、それぞれの作品を読んだほうが早い。)
* まめ知識
なお、この時代、日記の使いみちは、文芸のほかにも、貴族の各家庭で子孫のための歴史書としても日記は書かれた。(※ 実教出版などの教科書で紹介。)これらの日記でも、漢字とともに平仮名が活用された。
== 末法思想 ==
「国風文化」という名とは裏腹に、仏教では、釈迦の没後から2000年後と考えられる西暦1052年に世界が乱れるだろうと不安視する'''末法思想'''(まっぽう しそう)が流行した。
このような思想のなか、死後は、けがれた地上に生まれ変わるのではなく、天国の浄土(じょうど)への生まれ変わり(往生(おうじょう) )を願う'''浄土教'''(じょうどきょう)が流行した。
985年に僧侶の'''源信'''(げんしん)は、『往生要集』(おうじょうようしゅう)を著した。
また、10世紀、'''空也'''(くうや)が京都で念仏を布教した。
また、貴族によって、各地に'''阿弥陀堂'''(あみだどう)が建てられた。
京都の宇治(うじ)にある平等院鳳凰堂(びょうどういん ほうおうどう)も、阿弥陀堂のひとつであり、平等院鳳凰堂のなかには阿弥陀如来像がある。
== その他 ==
:※ 「寝殿造」(しんでんづくり)とか、「十二単」(じゅうにひとえ)とか、大和絵(やまとえ)とか、中学で習ったとおり。
== ※ 発展的な話題 ==
:(※ 山川出版、実教出版、明成社の教科書で紹介。)
:(※ 清水書院、東京書籍の教科書では、記述が見られない。)
この時代の男子は、元服(げんぶく、げんぷく)という儀式を経ることで成人と見なされていた。
元服は、およそ数え年で12から16歳の時に行われる(時代や階級で前後する)。また、貴族の女子の場合は、裳着(もぎ)という儀式を行うことで成人したものとされた。元服にともない、貴族の男子は官職を得て、朝廷に仕えた。
:(範囲外?: )なお、元服は加冠(かかん)や初冠(ういこうぶり)等ともいう。(※ 国語教科の古文科目で、作品『伊勢物語』で『初冠』とという作品が高校の範囲内。)
また、この時代、宮中で、元旦や 節会(せちえ)や 新嘗祭(にいなめさい)などの'''年中行事'''が発達した。新嘗祭や大祓(おおはらえ)などの神事も、この平安時代の年中行事に含まれる。
* 服装
男性貴族の正装は束帯(そくたい)だが、普段着として、束帯を簡素化した直衣(のうし)や、簡単な構造で動きやすい狩衣(かりぎぬ)や布衣(ほい)などの衣服も着用された。
庶民の男性も、晴れ着(はれぎ)として、水干(すいかん)などを着ることもあった。
女性の正装は、女房装束(にょうぼうしょうぞく)である(いわゆる十二単(じゅうに ひとえ) )。
[[category:高等学校日本史|こくふうふんか]]
emd094chu11msh2c2l0e4hl85z2gk0t
Kotlin
0
26659
205961
204496
2022-07-28T23:57:47Z
Ef3
694
/* 標準入力 */ Fix bug
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
whenを使って条件分岐をすることができます。
C言語でいうswitch case 文と似ているが、whenはbreakが必要ありません。(詳しくは後述)
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "aa"
when (mes) {
"a" -> {
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
}
</syntaxhighlight>
;実行結果
<pre>
mesはa
</pre>
;解説
Kotlinの場合は処理が複数行に渡る場合は中括弧 {{code|1=<nowiki>{...}</nowiki>}}を必須とすることで、JavaやC言語に見られる曖昧さを解消しています。
分岐のコードについては以下の書式が許されている:
値 -> その値のときに行う処理
値 -> { その値のときに行う処理 }
値1, 値2, ... -> それらの値のときに行う処理
値1, 値2, ... -> { それらの値のときに行う処理 }
中括弧を用いるパターン {{code|1=<nowiki>{...}</nowiki>}}では、任意行の処理を書くことが許されます。
<pre>
when (mes){
"a" -> {
println("mesはa")
}
</pre>
というのは、変数 mes が 文字列"a"なら、<code> <nowiki> -> </nowiki> </code>のあとのブロックの処理をするという意味です。
なので、{{code|"b" -> println("mesはb")}}については、そもそもmes は"xxx"ではないので(mes は "xxx"ではなく "aa" です。)、まったく文字列「テスト」の表示は行われないのです。
kotlin の when文における 記号 <nowiki> -> </nowiki> は、単なる記号です。
C言語では、メンバアクセス演算子が (見た目の上では) 同じであるが、Cのそれは構造体のメンバにアクセスするための演算子であるため意味が全く異なります。
;参考
Javaのswitch-case 文では以下のようになる:
:<syntaxhighlight lang="java">
switch (mes) {
case "a":
System.out.println("mesはa");
break;
case "b":
System.out.println("mesはb");
break;
case "c": // 意図したフォール・スルー
case "d": // 意図したフォール・スルー
case "e":
System.out.println("mesはcかdかe");
break;
default:
System.out.println("mesはその他");
}
</syntaxhighlight>
ここでうっかりbreakを忘れると、意図しないラベルへ処理が移ってしまう。ラベルから別のラベルへ実行が移ることをを[[w:fall-through]](フォール・スルー)と呼び、意図したものかそうでないのか判別が難しい。
なお、Go言語にも、switch という構文があるが、C言語のswitchとは違いbreakがなくてもフォール・スルーせず、キーワードを fallthrough を使って明示的にフォール・スルーさせる<ref>型スイッチの場合は、フォール・スルーできません。</ref>。
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for文と整数範囲型 ===
for文はKotlinにもあります。しかし、C言語とは記法を異にします。
for (変数 in 範囲)
という記法です。
たとえば
:<syntaxhighlight lang="kotlin">
for (i in 1..5)
</syntaxhighlight>
と書いたら、変数iを1から5まで1ずつ増やすという意味です。
変数にvarやvalを使うことはできません。(varやval などを書いても、コンパイル時にエラーになります。 )再代入もできません。
なお、型を明示して
for (i: Int in 1..5)
のように宣言してもよい。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
for (i in 1..5) {
println("for文を実行中... " + i + " of 5")
}
}
</syntaxhighlight>
;実行結果
<pre>
for文を実行中... 1 of 5
for文を実行中... 2 of 5
for文を実行中... 3 of 5
for文を実行中... 4 of 5
for文を実行中... 5 of 5
</pre>
;備考
Kotlinには{{code|kotlin.ranges.IntRange}}という{{code|kotlin.Int}}型の閉区間を表現するクラスがあります。<ref name="api:IntRange">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-int-range/</ref>
さらに、{{code|kotlin.ranges.CharRange}}という{{code|kotlin.Char}}型の閉区間を表現するクラスもあります。<ref name="api:CharRange">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/-char-range/</ref>
{{code|IntRange}}は{{code|1..5}}のように生成するが、{{code|CharRange}}は{{code|'A'..'D'}}のように生成します。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
var m = 'G'
if (m in 'A'..'E') {
println("AからD")
}
if (m in 'F'..'K') {
println("FからK")
}
}
</syntaxhighlight>
;実行結果
<pre>
FからK
</pre>
; 解説
:<syntaxhighlight lang="kotlin">
m in 'A'..'E'
</syntaxhighlight>
というコードは、以下のコードと同一の意味である:<ref>https://kotlinlang.org/docs/reference/operator-overloading.html</ref>
:<syntaxhighlight lang="kotlin">
('A'..'E').contains(m)
</syntaxhighlight>
=== 最内スコープ優先の法則 ===
Kotlinでは<!-- 右辺値または左辺値として変数が要求された場合はその文の属するスコープと同じかそれよりも外側で、かつ最も内側の変数が宣言されたスコープの変数を参照します。よりわかりやすく言うと、 --> 内側のスコープの変数と外側のスコープの変数が名前でダブった場合、内側のスコープの変数が優先されます。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
var i =10
for (i in 1..3) // ループ変数iは上のiとは異なります。ループ変数iはforの中でしか見えない
{
println("カレーライス")
println("for内でいまiは" + i)
}
println("for終わり、いまiはいくつかな" + i)
}
</syntaxhighlight>
;実行結果
<pre>
カレーライス
for内でいまiは1
カレーライス
for内でいまiは2
カレーライス
for内でいまiは3
for終わり、いまiはいくつかな10
</pre>
for文のブロック内の最後では、iは3であったが、ブロックを抜けた際に、それは破棄された。そのため、ブロック外で最初にiに代入していた「10」が、最後のprintlnの表示結果として出てきていることに注目しましょう。
Kotlinは、このような変数名の重複によるシャドーイングを危険であるとして警告します。
上記コードの場合、コンパイル時に警告文として
<pre>
test.kt:5:10: warning: name shadowed: i
for (i in 1..3)
^
</pre>
というような警告が出ます。
なお、下記のように書き換えれば、警告はでなくなります。下記コードの表示結果は上と同じです。ただし、下記のコードはウソをついています(「いまiは」と言っているのに、変数名に「i」を使用していないです)。上コードとの比較のため、表示文を上コードと同じままにしています。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
var i = 10
for (temp in 1..3) // ループ変数名を「i」から別の変数に変更
{
println("カレーライス")
println("for内でいまiは" + temp)
}
println("for終わり、いまiはいくつかな" + i)
}
</syntaxhighlight>
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
s27r7hnho936c7ky2vx7m1rsyntsizp
205963
205961
2022-07-29T02:10:25Z
Ef3
694
/* for文とコレクション */ Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。/*コレクション*/<code>println((1..5).javaClass.kotlin)</code>の結果<code>class kotlin.ranges.IntRange</code>が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。 コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります(網羅はしていません)。
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
whenを使って条件分岐をすることができます。
C言語でいうswitch case 文と似ているが、whenはbreakが必要ありません。(詳しくは後述)
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "aa"
when (mes) {
"a" -> {
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
}
</syntaxhighlight>
;実行結果
<pre>
mesはa
</pre>
;解説
Kotlinの場合は処理が複数行に渡る場合は中括弧 {{code|1=<nowiki>{...}</nowiki>}}を必須とすることで、JavaやC言語に見られる曖昧さを解消しています。
分岐のコードについては以下の書式が許されている:
値 -> その値のときに行う処理
値 -> { その値のときに行う処理 }
値1, 値2, ... -> それらの値のときに行う処理
値1, 値2, ... -> { それらの値のときに行う処理 }
中括弧を用いるパターン {{code|1=<nowiki>{...}</nowiki>}}では、任意行の処理を書くことが許されます。
<pre>
when (mes){
"a" -> {
println("mesはa")
}
</pre>
というのは、変数 mes が 文字列"a"なら、<code> <nowiki> -> </nowiki> </code>のあとのブロックの処理をするという意味です。
なので、{{code|"b" -> println("mesはb")}}については、そもそもmes は"xxx"ではないので(mes は "xxx"ではなく "aa" です。)、まったく文字列「テスト」の表示は行われないのです。
kotlin の when文における 記号 <nowiki> -> </nowiki> は、単なる記号です。
C言語では、メンバアクセス演算子が (見た目の上では) 同じであるが、Cのそれは構造体のメンバにアクセスするための演算子であるため意味が全く異なります。
;参考
Javaのswitch-case 文では以下のようになる:
:<syntaxhighlight lang="java">
switch (mes) {
case "a":
System.out.println("mesはa");
break;
case "b":
System.out.println("mesはb");
break;
case "c": // 意図したフォール・スルー
case "d": // 意図したフォール・スルー
case "e":
System.out.println("mesはcかdかe");
break;
default:
System.out.println("mesはその他");
}
</syntaxhighlight>
ここでうっかりbreakを忘れると、意図しないラベルへ処理が移ってしまう。ラベルから別のラベルへ実行が移ることをを[[w:fall-through]](フォール・スルー)と呼び、意図したものかそうでないのか判別が難しい。
なお、Go言語にも、switch という構文があるが、C言語のswitchとは違いbreakがなくてもフォール・スルーせず、キーワードを fallthrough を使って明示的にフォール・スルーさせる<ref>型スイッチの場合は、フォール・スルーできません。</ref>。
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for式とコレクション ===
Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。
;構文:<syntaxhighlight lang=text>
for (ループ変数 in コレクション) 式
</syntaxhighlight>
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 範囲コレクションとforを組合せた例]:<syntaxhighlight lang="kotlin" highlight=2>
fun main(args: Array<String>) {
for (i in 1..5) println(i)
println((1..5).javaClass.kotlin)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
class kotlin.ranges.IntRange
</syntaxhighlight>
:<var>i</var>の様なループ変数は、forがスコープになります。
:ここでは、型指定を省略しているので、型推論されコレクションの要素型になります。省略せず、
::<syntaxhighlight lang="kotlin" hightlight=2>
for (i : Int in 1..5) println(i)
</syntaxhighlight>
:とすることもできます(ただし、異種コレクションだと要素型はUnion型になり宣言が複雑になるので、コードレビューの時に意図を明確にするなどの想起がない限り、型推論に任せるのが常です)。
:ループ変数は、varやvalを前置することができません。
:ループ変数には、代入できません。
==== for と等価な while ====
;for と等価な while:<syntaxhighlight lang="kotlin">
for (ループ変数 in コレクション) {
println(ループ変数)
}
// は、以下と等価
val イテレーター = コレクション.iterator()
while (イテレーター.hasNext()) {
val ループ変数 = イテレーター.next()
println(ループ変数)
}
</syntaxhighlight>
:このことから、コレクションは .iterator(), .hasNext(), .next() の3つのメソッドを持つクラスと規定できます(この様なメソッド集合をプロトコルといい、この場合は for プロトコルといいます)。
==== コレクション ====
<code>println((1..5).javaClass.kotlin)</code>の結果が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。
コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります。これは網羅していませんし、上記の forプロトコルに従ったクラスを作れば、ユーザー定義のコレクションも作成できます。
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 様々なコレクション]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
val collections = arrayOf(
1..5,
1..8 step 2,
5 downTo 1,
8 downTo 1 step 2,
'A'..'Z',
listOf(2,3,5),
setOf(7,11,13))
println("$collections(${collections.javaClass.kotlin})")
for (collection in collections) {
print(collection)
print(": ")
for (x in collection) {
print(x)
print(" ")
}
print(": ")
println(collection.javaClass.kotlin)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
class kotlin.Array
1..5: 1 2 3 4 5 : class kotlin.ranges.IntRange
1..7 step 2: 1 3 5 7 : class kotlin.ranges.IntProgression
5 downTo 1 step 1: 5 4 3 2 1 : class kotlin.ranges.IntProgression
8 downTo 2 step 2: 8 6 4 2 : class kotlin.ranges.IntProgression
A..Z: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : class kotlin.ranges.CharRange
[2, 3, 5]: 2 3 5 : class java.util.Arrays$ArrayList
[7, 11, 13]: 7 11 13 : class java.util.LinkedHashSet
</syntaxhighlight>
: 二重のforループで、外周はコレクションのコレクションで、内周は個々のコレクションの要素をイテレーションしています。
=== 最内スコープ優先の法則 ===
Kotlinでは<!-- 右辺値または左辺値として変数が要求された場合はその文の属するスコープと同じかそれよりも外側で、かつ最も内側の変数が宣言されたスコープの変数を参照します。よりわかりやすく言うと、 --> 内側のスコープの変数と外側のスコープの変数が名前でダブった場合、内側のスコープの変数が優先されます。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
var i =10
for (i in 1..3) // ループ変数iは上のiとは異なります。ループ変数iはforの中でしか見えない
{
println("カレーライス")
println("for内でいまiは" + i)
}
println("for終わり、いまiはいくつかな" + i)
}
</syntaxhighlight>
;実行結果
<pre>
カレーライス
for内でいまiは1
カレーライス
for内でいまiは2
カレーライス
for内でいまiは3
for終わり、いまiはいくつかな10
</pre>
for文のブロック内の最後では、iは3であったが、ブロックを抜けた際に、それは破棄された。そのため、ブロック外で最初にiに代入していた「10」が、最後のprintlnの表示結果として出てきていることに注目しましょう。
Kotlinは、このような変数名の重複によるシャドーイングを危険であるとして警告します。
上記コードの場合、コンパイル時に警告文として
<pre>
test.kt:5:10: warning: name shadowed: i
for (i in 1..3)
^
</pre>
というような警告が出ます。
なお、下記のように書き換えれば、警告はでなくなります。下記コードの表示結果は上と同じです。ただし、下記のコードはウソをついています(「いまiは」と言っているのに、変数名に「i」を使用していないです)。上コードとの比較のため、表示文を上コードと同じままにしています。
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
var i = 10
for (temp in 1..3) // ループ変数名を「i」から別の変数に変更
{
println("カレーライス")
println("for内でいまiは" + temp)
}
println("for終わり、いまiはいくつかな" + i)
}
</syntaxhighlight>
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
7g5rjnruzmb88a2hx8al5u4hn1fdc7b
205964
205963
2022-07-29T02:44:35Z
Ef3
694
/* 識別子の重複とシャドーイング */ Kotlinでは、内側のスコープの識別子と外側のスコープの識別子が重複した場合、内側のスコープの識別子が参照されます。
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
whenを使って条件分岐をすることができます。
C言語でいうswitch case 文と似ているが、whenはbreakが必要ありません。(詳しくは後述)
;コード例
:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "aa"
when (mes) {
"a" -> {
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
}
</syntaxhighlight>
;実行結果
<pre>
mesはa
</pre>
;解説
Kotlinの場合は処理が複数行に渡る場合は中括弧 {{code|1=<nowiki>{...}</nowiki>}}を必須とすることで、JavaやC言語に見られる曖昧さを解消しています。
分岐のコードについては以下の書式が許されている:
値 -> その値のときに行う処理
値 -> { その値のときに行う処理 }
値1, 値2, ... -> それらの値のときに行う処理
値1, 値2, ... -> { それらの値のときに行う処理 }
中括弧を用いるパターン {{code|1=<nowiki>{...}</nowiki>}}では、任意行の処理を書くことが許されます。
<pre>
when (mes){
"a" -> {
println("mesはa")
}
</pre>
というのは、変数 mes が 文字列"a"なら、<code> <nowiki> -> </nowiki> </code>のあとのブロックの処理をするという意味です。
なので、{{code|"b" -> println("mesはb")}}については、そもそもmes は"xxx"ではないので(mes は "xxx"ではなく "aa" です。)、まったく文字列「テスト」の表示は行われないのです。
kotlin の when文における 記号 <nowiki> -> </nowiki> は、単なる記号です。
C言語では、メンバアクセス演算子が (見た目の上では) 同じであるが、Cのそれは構造体のメンバにアクセスするための演算子であるため意味が全く異なります。
;参考
Javaのswitch-case 文では以下のようになる:
:<syntaxhighlight lang="java">
switch (mes) {
case "a":
System.out.println("mesはa");
break;
case "b":
System.out.println("mesはb");
break;
case "c": // 意図したフォール・スルー
case "d": // 意図したフォール・スルー
case "e":
System.out.println("mesはcかdかe");
break;
default:
System.out.println("mesはその他");
}
</syntaxhighlight>
ここでうっかりbreakを忘れると、意図しないラベルへ処理が移ってしまう。ラベルから別のラベルへ実行が移ることをを[[w:fall-through]](フォール・スルー)と呼び、意図したものかそうでないのか判別が難しい。
なお、Go言語にも、switch という構文があるが、C言語のswitchとは違いbreakがなくてもフォール・スルーせず、キーワードを fallthrough を使って明示的にフォール・スルーさせる<ref>型スイッチの場合は、フォール・スルーできません。</ref>。
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for式とコレクション ===
Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。
;構文:<syntaxhighlight lang=text>
for (ループ変数 in コレクション) 式
</syntaxhighlight>
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 範囲コレクションとforを組合せた例]:<syntaxhighlight lang="kotlin" highlight=2>
fun main(args: Array<String>) {
for (i in 1..5) println(i)
println((1..5).javaClass.kotlin)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
class kotlin.ranges.IntRange
</syntaxhighlight>
:<var>i</var>の様なループ変数は、forがスコープになります。
:ここでは、型指定を省略しているので、型推論されコレクションの要素型になります。省略せず、
::<syntaxhighlight lang="kotlin" hightlight=2>
for (i : Int in 1..5) println(i)
</syntaxhighlight>
:とすることもできます(ただし、異種コレクションだと要素型はUnion型になり宣言が複雑になるので、コードレビューの時に意図を明確にするなどの想起がない限り、型推論に任せるのが常です)。
:ループ変数は、varやvalを前置することができません。
:ループ変数には、代入できません。
==== for と等価な while ====
;for と等価な while:<syntaxhighlight lang="kotlin">
for (ループ変数 in コレクション) {
println(ループ変数)
}
// は、以下と等価
val イテレーター = コレクション.iterator()
while (イテレーター.hasNext()) {
val ループ変数 = イテレーター.next()
println(ループ変数)
}
</syntaxhighlight>
:このことから、コレクションは .iterator(), .hasNext(), .next() の3つのメソッドを持つクラスと規定できます(この様なメソッド集合をプロトコルといい、この場合は for プロトコルといいます)。
==== コレクション ====
<code>println((1..5).javaClass.kotlin)</code>の結果が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。
コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります。これは網羅していませんし、上記の forプロトコルに従ったクラスを作れば、ユーザー定義のコレクションも作成できます。
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 様々なコレクション]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
val collections = arrayOf(
1..5,
1..8 step 2,
5 downTo 1,
8 downTo 1 step 2,
'A'..'Z',
listOf(2,3,5),
setOf(7,11,13))
println("$collections(${collections.javaClass.kotlin})")
for (collection in collections) {
print(collection)
print(": ")
for (x in collection) {
print(x)
print(" ")
}
print(": ")
println(collection.javaClass.kotlin)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
class kotlin.Array
1..5: 1 2 3 4 5 : class kotlin.ranges.IntRange
1..7 step 2: 1 3 5 7 : class kotlin.ranges.IntProgression
5 downTo 1 step 1: 5 4 3 2 1 : class kotlin.ranges.IntProgression
8 downTo 2 step 2: 8 6 4 2 : class kotlin.ranges.IntProgression
A..Z: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : class kotlin.ranges.CharRange
[2, 3, 5]: 2 3 5 : class java.util.Arrays$ArrayList
[7, 11, 13]: 7 11 13 : class java.util.LinkedHashSet
</syntaxhighlight>
: 二重のforループで、外周はコレクションのコレクションで、内周は個々のコレクションの要素をイテレーションしています。
=== 識別子の重複とシャドーイング ===
Kotlinでは、内側のスコープの識別子と外側のスコープの識別子が重複した場合、内側のスコープの識別子が参照されます。
;[https://paiza.io/projects/etUJhoaySpr4RcwO9VwO-g?language=kotlin コード例]:<syntaxhighlight lang="Kotlin" line highlight="2,4">
fun main() {
var i = 10
for (i in 1..3)
println("for内: i = $i")
println("for外: i = $i")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:4:10: warning: name shadowed: i
for (i in 1..3)
^
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
for内: i = 1
for内: i = 2
for内: i = 3
for外: i = 10
</syntaxhighlight>
: ループ変数 <var>i</var> と、2行目で宣言された変数 <var>i</var> の名前が衝突しいています。
: この様に名前が衝突した場合、スコープの内側のオブジェクトが参照されます。
:: 名前が衝突し、内側和のスコープの識別子に外側のスコープの識別子が隠される事を'''シャドーイング'''と呼び、コンパイラーは発見すると<code>warning: name shadowed: 識別子</code>と(エラーでなく)警告します。
多くのシャドーイングは無害ですが…
;ありがちな間違え:<syntaxhighlight lang="Kotlin" line highlight="2,3">
fun main() {
for (i in 1..3)
for (i in 1..4)
println("(i, i) = ($i, $i)")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:3:14: warning: name shadowed: i
for (i in 1..4)
^
</syntaxhighlight>
;修正例:<syntaxhighlight lang="Kotlin" line highlight="3,4">
fun main() {
for (i in 1..3)
for (j in 1..4)
println("(i, j) = ($i, $j)")
}
</syntaxhighlight>
: 行列式を扱っていると、よくやらかします。
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
5x0umgkbc2b95afgc41bat8hi5yke9b
205967
205964
2022-07-29T03:41:49Z
Ef3
694
/* when */ when式を使って条件分岐をすることができます。 when 式は、when に与えられた式に最初にマッチするパターンに結ぶ付いた値を返すパターンマッチングです。 式が省略されると、パターンの条件が最初に真になるパターンに結びついた値を返します。
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
when式を使って条件分岐をすることができます。
when 式は、when に与えられた式に最初にマッチするパターンに結ぶ付いた値を返すパターンマッチングです。
式が省略されると、パターンの条件が最初に真になるパターンに結びついた値を返します。
;when式の例:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "a"
when (mes) {
"a" -> {
print("定数で初期化しているので、")
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
// when 式の値を使った等価なコード
println(when (mes) {
"a" -> {
print("定数で初期化しているので、")
"mesはa"
}
"b" -> "mesはb"
"c", "d", "e" -> "mesはcかdかe"
else -> "mesはそれ以外"
})
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
定数で初期化しているので、mesはa
定数で初期化しているので、mesはa
</syntaxhighlight>
: when式は、いくつかの論理条件に応じて、複数の異なる制御構造体(ケース)のうちの1つを評価することができるという点で、条件式と類似しています<ref>[https://kotlinlang.org/spec/expressions.html#when-expressions Kotlin language specification Chapter 8 Expressions 8.6 When expressions]</ref>。
: 重要な違いは、when式は複数の異なる条件とそれに対応する制御構造体(control structure bodies; CSB)を含むことができることです。
: when式には、境界値付きと境界値なしの2種類の形式があります。
: 境界値(bound value;whenキーワードの後の括弧で囲まれた式)なしのwhen式は、whenエントリからの条件に基づいて異なるCSBのうちの1つを評価します。
: 各 when エントリは、boolean 条件(または特殊な else 条件)とそれに対応する CSB から構成されます。
: when項目は出現順にチェックされ評価され、条件が真と評価された場合、対応するCSBが評価され、when式の値はCSBの値と同じになり、残りのすべての条件と式は評価されません。
::whenパターン式のパターンの後ろに break は不要です(フォールスルーしませんし、することはできません)。
::もし break を書くと、when式の外のループ式からの脱出になります(フォールスルーしてしまう言語には、できなかったこと)。
区切子 <code>-></code> を使った構文の左辺の条件には、以下のようなバリエーションがあります。
;when式の条件の構文:<syntaxhighlight lang="Kotlin">
値
値1, 値2... , 値n
in 範囲式
!in 範囲式
is 型
!is 型
else
</syntaxhighlight>
: 値は、定数である必要はなくメソッドでも構いません。
: 式は、単式i外にブロック式<code>{...}</code>でも構いません。
[TODO:境界値を省略した例、when文でループを脱出する例、enumな式が境界値に与えられた例]
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for式とコレクション ===
Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。
;構文:<syntaxhighlight lang=text>
for (ループ変数 in コレクション) 式
</syntaxhighlight>
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 範囲コレクションとforを組合せた例]:<syntaxhighlight lang="kotlin" highlight=2>
fun main(args: Array<String>) {
for (i in 1..5) println(i)
println((1..5).javaClass.kotlin)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
class kotlin.ranges.IntRange
</syntaxhighlight>
:<var>i</var>の様なループ変数は、forがスコープになります。
:ここでは、型指定を省略しているので、型推論されコレクションの要素型になります。省略せず、
::<syntaxhighlight lang="kotlin" hightlight=2>
for (i : Int in 1..5) println(i)
</syntaxhighlight>
:とすることもできます(ただし、異種コレクションだと要素型はUnion型になり宣言が複雑になるので、コードレビューの時に意図を明確にするなどの想起がない限り、型推論に任せるのが常です)。
:ループ変数は、varやvalを前置することができません。
:ループ変数には、代入できません。
==== for と等価な while ====
;for と等価な while:<syntaxhighlight lang="kotlin">
for (ループ変数 in コレクション) {
println(ループ変数)
}
// は、以下と等価
val イテレーター = コレクション.iterator()
while (イテレーター.hasNext()) {
val ループ変数 = イテレーター.next()
println(ループ変数)
}
</syntaxhighlight>
:このことから、コレクションは .iterator(), .hasNext(), .next() の3つのメソッドを持つクラスと規定できます(この様なメソッド集合をプロトコルといい、この場合は for プロトコルといいます)。
==== コレクション ====
<code>println((1..5).javaClass.kotlin)</code>の結果が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。
コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります。これは網羅していませんし、上記の forプロトコルに従ったクラスを作れば、ユーザー定義のコレクションも作成できます。
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 様々なコレクション]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
val collections = arrayOf(
1..5,
1..8 step 2,
5 downTo 1,
8 downTo 1 step 2,
'A'..'Z',
listOf(2,3,5),
setOf(7,11,13))
println("$collections(${collections.javaClass.kotlin})")
for (collection in collections) {
print(collection)
print(": ")
for (x in collection) {
print(x)
print(" ")
}
print(": ")
println(collection.javaClass.kotlin)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
class kotlin.Array
1..5: 1 2 3 4 5 : class kotlin.ranges.IntRange
1..7 step 2: 1 3 5 7 : class kotlin.ranges.IntProgression
5 downTo 1 step 1: 5 4 3 2 1 : class kotlin.ranges.IntProgression
8 downTo 2 step 2: 8 6 4 2 : class kotlin.ranges.IntProgression
A..Z: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : class kotlin.ranges.CharRange
[2, 3, 5]: 2 3 5 : class java.util.Arrays$ArrayList
[7, 11, 13]: 7 11 13 : class java.util.LinkedHashSet
</syntaxhighlight>
: 二重のforループで、外周はコレクションのコレクションで、内周は個々のコレクションの要素をイテレーションしています。
=== 識別子の重複とシャドーイング ===
Kotlinでは、内側のスコープの識別子と外側のスコープの識別子が重複した場合、内側のスコープの識別子が参照されます。
;[https://paiza.io/projects/etUJhoaySpr4RcwO9VwO-g?language=kotlin コード例]:<syntaxhighlight lang="Kotlin" line highlight="2,4">
fun main() {
var i = 10
for (i in 1..3)
println("for内: i = $i")
println("for外: i = $i")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:4:10: warning: name shadowed: i
for (i in 1..3)
^
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
for内: i = 1
for内: i = 2
for内: i = 3
for外: i = 10
</syntaxhighlight>
: ループ変数 <var>i</var> と、2行目で宣言された変数 <var>i</var> の名前が衝突しいています。
: この様に名前が衝突した場合、スコープの内側のオブジェクトが参照されます。
:: 名前が衝突し、内側和のスコープの識別子に外側のスコープの識別子が隠される事を'''シャドーイング'''と呼び、コンパイラーは発見すると<code>warning: name shadowed: 識別子</code>と(エラーでなく)警告します。
多くのシャドーイングは無害ですが…
;ありがちな間違え:<syntaxhighlight lang="Kotlin" line highlight="2,3">
fun main() {
for (i in 1..3)
for (i in 1..4)
println("(i, i) = ($i, $i)")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:3:14: warning: name shadowed: i
for (i in 1..4)
^
</syntaxhighlight>
;修正例:<syntaxhighlight lang="Kotlin" line highlight="3,4">
fun main() {
for (i in 1..3)
for (j in 1..4)
println("(i, j) = ($i, $j)")
}
</syntaxhighlight>
: 行列式を扱っていると、よくやらかします。
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
iisb4zsf3j9kc2r7jefdky0i6bpj6cx
205968
205967
2022-07-29T05:22:02Z
Ef3
694
/* repeat関数 */ Kotlinにはrepeat関数があり、定数回の繰返しが必要な時に便利です<ref>[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/repeat.html repeat - Kotlin Programming Language]</ref>
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
when式を使って条件分岐をすることができます。
when 式は、when に与えられた式に最初にマッチするパターンに結ぶ付いた値を返すパターンマッチングです。
式が省略されると、パターンの条件が最初に真になるパターンに結びついた値を返します。
;when式の例:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "a"
when (mes) {
"a" -> {
print("定数で初期化しているので、")
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
// when 式の値を使った等価なコード
println(when (mes) {
"a" -> {
print("定数で初期化しているので、")
"mesはa"
}
"b" -> "mesはb"
"c", "d", "e" -> "mesはcかdかe"
else -> "mesはそれ以外"
})
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
定数で初期化しているので、mesはa
定数で初期化しているので、mesはa
</syntaxhighlight>
: when式は、いくつかの論理条件に応じて、複数の異なる制御構造体(ケース)のうちの1つを評価することができるという点で、条件式と類似しています<ref>[https://kotlinlang.org/spec/expressions.html#when-expressions Kotlin language specification Chapter 8 Expressions 8.6 When expressions]</ref>。
: 重要な違いは、when式は複数の異なる条件とそれに対応する制御構造体(control structure bodies; CSB)を含むことができることです。
: when式には、境界値付きと境界値なしの2種類の形式があります。
: 境界値(bound value;whenキーワードの後の括弧で囲まれた式)なしのwhen式は、whenエントリからの条件に基づいて異なるCSBのうちの1つを評価します。
: 各 when エントリは、boolean 条件(または特殊な else 条件)とそれに対応する CSB から構成されます。
: when項目は出現順にチェックされ評価され、条件が真と評価された場合、対応するCSBが評価され、when式の値はCSBの値と同じになり、残りのすべての条件と式は評価されません。
::whenパターン式のパターンの後ろに break は不要です(フォールスルーしませんし、することはできません)。
::もし break を書くと、when式の外のループ式からの脱出になります(フォールスルーしてしまう言語には、できなかったこと)。
区切子 <code>-></code> を使った構文の左辺の条件には、以下のようなバリエーションがあります。
;when式の条件の構文:<syntaxhighlight lang="Kotlin">
値
値1, 値2... , 値n
in 範囲式
!in 範囲式
is 型
!is 型
else
</syntaxhighlight>
: 値は、定数である必要はなくメソッドでも構いません。
: 式は、単式i外にブロック式<code>{...}</code>でも構いません。
[TODO:境界値を省略した例、when文でループを脱出する例、enumな式が境界値に与えられた例]
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for式とコレクション ===
Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。
;構文:<syntaxhighlight lang=text>
for (ループ変数 in コレクション) 式
</syntaxhighlight>
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 範囲コレクションとforを組合せた例]:<syntaxhighlight lang="kotlin" highlight=2>
fun main(args: Array<String>) {
for (i in 1..5) println(i)
println((1..5).javaClass.kotlin)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
class kotlin.ranges.IntRange
</syntaxhighlight>
:<var>i</var>の様なループ変数は、forがスコープになります。
:ここでは、型指定を省略しているので、型推論されコレクションの要素型になります。省略せず、
::<syntaxhighlight lang="kotlin" hightlight=2>
for (i : Int in 1..5) println(i)
</syntaxhighlight>
:とすることもできます(ただし、異種コレクションだと要素型はUnion型になり宣言が複雑になるので、コードレビューの時に意図を明確にするなどの想起がない限り、型推論に任せるのが常です)。
:ループ変数は、varやvalを前置することができません。
:ループ変数には、代入できません。
==== for と等価な while ====
;for と等価な while:<syntaxhighlight lang="kotlin">
for (ループ変数 in コレクション) {
println(ループ変数)
}
// は、以下と等価
val イテレーター = コレクション.iterator()
while (イテレーター.hasNext()) {
val ループ変数 = イテレーター.next()
println(ループ変数)
}
</syntaxhighlight>
:このことから、コレクションは .iterator(), .hasNext(), .next() の3つのメソッドを持つクラスと規定できます(この様なメソッド集合をプロトコルといい、この場合は for プロトコルといいます)。
==== コレクション ====
<code>println((1..5).javaClass.kotlin)</code>の結果が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。
コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります。これは網羅していませんし、上記の forプロトコルに従ったクラスを作れば、ユーザー定義のコレクションも作成できます。
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 様々なコレクション]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
val collections = arrayOf(
1..5,
1..8 step 2,
5 downTo 1,
8 downTo 1 step 2,
'A'..'Z',
listOf(2,3,5),
setOf(7,11,13))
println("$collections(${collections.javaClass.kotlin})")
for (collection in collections) {
print(collection)
print(": ")
for (x in collection) {
print(x)
print(" ")
}
print(": ")
println(collection.javaClass.kotlin)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
class kotlin.Array
1..5: 1 2 3 4 5 : class kotlin.ranges.IntRange
1..7 step 2: 1 3 5 7 : class kotlin.ranges.IntProgression
5 downTo 1 step 1: 5 4 3 2 1 : class kotlin.ranges.IntProgression
8 downTo 2 step 2: 8 6 4 2 : class kotlin.ranges.IntProgression
A..Z: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : class kotlin.ranges.CharRange
[2, 3, 5]: 2 3 5 : class java.util.Arrays$ArrayList
[7, 11, 13]: 7 11 13 : class java.util.LinkedHashSet
</syntaxhighlight>
: 二重のforループで、外周はコレクションのコレクションで、内周は個々のコレクションの要素をイテレーションしています。
=== repeat関数 ===
Kotlinにはrepeat関数があり、定数回の繰返しが必要な時に便利です<ref>[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/repeat.html repeat - Kotlin Programming Language]</ref>。
;[https://paiza.io/projects/LHnnORcAjUhvb_qW9ysIvw?language=kotlin repeat関数]:<syntaxhighlight lang="kotlin">
fun main() {
repeat(5) {
println("it = $it")
}
repeat(3) { i ->
repeat(4) { j ->
println("(i, j) = ($i, $j)")
}
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
it = 0
it = 1
it = 2
it = 3
it = 4
(i, j) = (0, 0)
(i, j) = (0, 1)
(i, j) = (0, 2)
(i, j) = (0, 3)
(i, j) = (1, 0)
(i, j) = (1, 1)
(i, j) = (1, 2)
(i, j) = (1, 3)
(i, j) = (2, 0)
(i, j) = (2, 1)
(i, j) = (2, 2)
(i, j) = (2, 3)
</syntaxhighlight>
:<var>it</var>は、暗黙のループ変数です。
:多重ループでは、ループ変数の名前が固定では都合が悪いので、ブロックの先頭で<code>識別子名 -></code> とすることで明示的に名前をつけることができます。
=== 識別子の重複とシャドーイング ===
Kotlinでは、内側のスコープの識別子と外側のスコープの識別子が重複した場合、内側のスコープの識別子が参照されます。
;[https://paiza.io/projects/etUJhoaySpr4RcwO9VwO-g?language=kotlin コード例]:<syntaxhighlight lang="Kotlin" line highlight="2,4">
fun main() {
var i = 10
for (i in 1..3)
println("for内: i = $i")
println("for外: i = $i")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:4:10: warning: name shadowed: i
for (i in 1..3)
^
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
for内: i = 1
for内: i = 2
for内: i = 3
for外: i = 10
</syntaxhighlight>
: ループ変数 <var>i</var> と、2行目で宣言された変数 <var>i</var> の名前が衝突しいています。
: この様に名前が衝突した場合、スコープの内側のオブジェクトが参照されます。
:: 名前が衝突し、内側和のスコープの識別子に外側のスコープの識別子が隠される事を'''シャドーイング'''と呼び、コンパイラーは発見すると<code>warning: name shadowed: 識別子</code>と(エラーでなく)警告します。
多くのシャドーイングは無害ですが…
;ありがちな間違え:<syntaxhighlight lang="Kotlin" line highlight="2,3">
fun main() {
for (i in 1..3)
for (i in 1..4)
println("(i, i) = ($i, $i)")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:3:14: warning: name shadowed: i
for (i in 1..4)
^
</syntaxhighlight>
;修正例:<syntaxhighlight lang="Kotlin" line highlight="3,4">
fun main() {
for (i in 1..3)
for (j in 1..4)
println("(i, j) = ($i, $j)")
}
</syntaxhighlight>
: 行列式を扱っていると、よくやらかします。
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
2i64xc990dila53ybtpbyrwttdekc7w
205969
205968
2022-07-29T05:39:56Z
Ef3
694
/* ブロックを受取る関数 */ repeat関数もそうですが、Kotlinにはブロックを受取る関数(やメソッド)があります。
wikitext
text/x-wiki
{{Wikipedia}}
{{Pathnav|メインページ|工学|情報技術|プログラミング}}
----
Kotlin(コトリン)は、クロスプラットフォームで、静的型付けな、[[W:型推論|型推論]]を用いることが出来る[[W:汎用プログラミング言語|汎用プログラミング言語]]です。
Kotlinは、関数型プログラミング・クラス指向のオブジェクト指向型プログラミング・シェネリックプログラミングなど、複数のプログラミングパラダイムをサポートする[[W:マルチパラダイム言語|マルチパラダイム言語]]です。
Kotlinは、Javaと完全に相互運用できるように設計されており、JVM版のKotlinの標準ライブラリはJavaクラスライブラリを利用しているが、型推論によってより簡潔な構文にすることが可能です。
Kotlinは、主にJVMをターゲットとしているが、JavaScript(Reactを用いたフロントエンドのWebアプリケーションなど)やLLVMによるネイティブコード(Androidアプリとビジネスロジックを共有するiOSネイティブアプリなど)にもコンパイルできます。
言語開発のコストは、[[w:JetBrains|JetBrains]]が負担し、Kotlin FoundationがKotlin™商標を守っています。
== 目次 ==
* [[Kotlin/インストール方法]] ※ 長いので実行方法とは別の単元にします
* [[Kotlin/実行方法]]
* [[Kotlin/関数]]
* Kotlin/
== 未分類の下書き ==
※ 完成次第、サブページに移動してください。
;予備知識
現状の版では、読者に予備知識として、ある程度のC言語やJavaScriptの知識を想定しています。もし読者がこれら予備知識の言語にそこまで詳しくなければ、先に『[[C言語]]』および『[[JavaScript]]』をお読みください。
なお、Javaの知識はあるにこしたことないですが、必ずしも必要ではありません。
Javaなどにある「クラス」を Kotlin でもサポートしており、Javaと同様にKotlin でも class 宣言でクラスを作成できます。しかし、読者がまったくクラスについて知らなくても、Kotlin による開発を比較的に簡単に始めることが可能です。
=== 文法の概要 ===
==== hello world ====
Kotlinの文法は、Javaと大きく異なります。
以下に示すのはKotlinでの[[w:ハローワールド]]のコードです。
;[https://pl.kotl.in/BIeRKX0rd Hello.kt]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
このケースについてはさらに短くでき、<ref group="注">Kotlin 1.3以降: クラスの中にないmain関数はargs変数を宣言しなくても良い。</ref><ref name="13later">https://kotlinlang.org/docs/reference/whatsnew13.html</ref>
;[https://pl.kotl.in/3ztubYDuP ShortHello.kt]:<syntaxhighlight lang="Kotlin">
fun main() {
println("Hello, World!")
}
</syntaxhighlight>
と書いてもよい。
{{code|fun}}というのは、関数を定義するキーワードです。JavaScriptで言う{{code|function}}です。
printlnというのは、コマンド画面などに、文字表示をする組み込み関数のことです。<ref name="api:println">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/println.html</ref>
printlnは、文末に改行が自動で入ます。<ref name="api:println" />
JavaやC言語などと違い、文末にセミコロン ({{code|;}}) は必要ありません。
==== その他の例 ====
まずはコード例を見てみましょう。
;[https://pl.kotl.in/rXFKwaSIB コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String // (1)
mes = "テストです"
println(mes)
var num : Int // (2)
num = 5
println(num * 3)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
</syntaxhighlight>
;解説
変数を宣言するときは、
var 変数名 : 型名
という書式で宣言します。
なお、Kotlin の型名はJava同様、大文字のキャメルケースであるのが通例です。
上記のコードの (1) では、mesという{{code|kotlin.String}}型の変数を、 (2) では、numという{{code|kotlin.Int}}型の変数を宣言しています。
{{code|val}}を用いることもできるが、{{code|val}}で宣言された場合は再度代入することができません。
:var は variable (変数)の略。
:val は value (値)の略。
=== 文字表示と標準入出力の概要 ===
==== 文字の連結 ====
println関数などで2個以上の文字列を連結したい場合は、<code>+</code>演算子でつなぎあわせます。
;[https://pl.kotl.in/Qp2SYtHn3 コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var mes : String
mes = "テストです"
println(mes)
var num : Int
num = 5
println(num * 3)
println(mes + num)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
テストです
15
テストです5
</syntaxhighlight>
※ 変数 num 自体の中身は15ではなく5。
式が要求されている箇所で、{{code|kotlin.String}}'''でない'''型の変数に{{code|kotlin.String}}型の変数を、あるいは{{code|kotlin.String}}型の変数に{{code|kotlin.String}}'''でない'''型の変数を足すと、自動的に{{code|kotlin.String}}型でない変数をレシーバーとして{{code|toString()}}が暗黙的に呼ばれ<ref name="api:any_q_toString">https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/to-string.html</ref>、{{code|kotlin.String}}型同士の演算となります。
==== 二重引用符と一重引用符 ====
println("出したい文字") などの文字列をくくる引用符は、kotlinでは二重引用符(ダブル クォーテーション、{{code|"}})のみが使用できます。
Javaと同じく、{{code|"a"}}は{{code|a}}という中身の{{code|kotlin.String}}型のインスタンスとして認識されるが、{{code|'a'}}は{{code|a}}という中身の{{code|kotlin.Char}}型のインスタンスとして認識されます。
==== テンプレートリテラル ====
kotlinではプラス記号{{code|+}}で文字列を連結しなくても、下記のように文字列中に別の式を埋め込む事が出来ます。
;[https://pl.kotl.in/5SN2x2awF コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("数字は $num だ") // (1)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
数字は 5 だ
</syntaxhighlight>
;解説
Kotlinではドル記号{{code|$}}をつけて変数名を文字列の中に直接書くことができ、[[w:文字列補間|文字列テンプレート]]( ''string template'' ) と呼びます。
[[JavaScript]]では同様の機能を「[[JavaScript/文字列#テンプレート・リテラルのプレースホルダー|テンプレート・リテラルのプレースホルダー]]」と呼ばれます。
なお、(1) は回りくどく書くと以下のような意味になります。
:<syntaxhighlight lang="kotlin">
println("数字は" + num + "だ")
// あるいは
println("数字は" + num.toString() + "だ")
</syntaxhighlight>
==== ドル記号 $ をエスケープする ====
{{code|$}}そのものを文字表示したい場合は、{{code|\$num}}のように、バックスラッシュ「\」をドル記号の前につけると、直後の文字を単なる文字として認識します(他の多くの言語のように <code>$$</code> ではありません)。
これをエスケープ・シーケンスと言います。C言語など多くの言語に、類似の仕組みがあります。(なお、Windows日本語版の場合、バージョンによってはバックスラッシュが円通貨マークで表示される場合もあります。)
;[https://pl.kotl.in/_T5nEJaKL コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
var num : Int
num = 5
println("\$num は $num だ")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
$num は 5 だ
</syntaxhighlight>
==== 標準入力 ====
コンソール、ターミナル、DOSプロンプトなどから入ってくるデータをstdin、または[[w:標準入力]]と呼ぶ。
ヒューマンフレンドリに言うならば、それらのウィンドウに入力した文字列やパイプで流した文字列を標準入力と呼ぶ。
Kotlin で同じことを行うためには、<code>readLine()</code> 関数を使う。
;[https://pl.kotl.in/89uE4042d コード例]:<syntaxhighlight lang="Kotlin">
fun main() {
println("文字を入力してください")
var input = readLine()
println(input + "とあなたは入力しました")
}
</syntaxhighlight>
;実行結果の例
:※ 入力内容によって結果が異なります。下記は hhh と入力した例。
:<syntaxhighlight lang=console>
文字を入力してください
hhh
hhhとあなたは入力しました
</syntaxhighlight>
なお、Javaでは、以下のようにボイラープレートコード( boilerplate code )を都度書く必要があった:
;Java の場合:<syntaxhighlight lang="java">
import java.util.Scanner;
///
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
</syntaxhighlight>
これは{{code|Scanner}}コンストラクターにJavaの「標準」入力ストリーム{{code|System.in}}を渡し、ScanneのnextLine()メソッドの戻値を変数{{code|line}}に格納する。
== 条件分岐 ==
==== if ====
if式は、条件式に基づき分岐し、分岐先の式を評価します。
if式の値は、分岐先の式の値です。
if式の値を右辺値化した場合、else節は必須です。
;構文:<syntaxhighlight lang=ebnf>
if-expr := if '(' 条件式 ')' 式1 [ else 式2 ]
</syntaxhighlight>
:;[https://paiza.io/projects/kzILsP_EQrnNj2_LsH8wHQ?language=kotlin 条件式に整数を使うと]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i)
println("zero")
}
</syntaxhighlight>
:;コンパイルエラー:<syntaxhighlight lang=text>
Main.kt:4:9: error: type mismatch: inferred type is Int but Boolean was expected
if (i)
^
</syntaxhighlight>
:: Kotlinでは、if式に限らず、条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/L8U8HupJcIqHpOf6igxDDA?language=kotlin if式の例]:<syntaxhighlight lang=Scala line>
fun main(args: Array<String>) {
val i = 0
if (i == 0)
println("zero")
else
println("non zero")
println(
if (i == 0)
"Zero"
else
"Non zero"
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
zero
Zero
</syntaxhighlight>
=== when ===
when式を使って条件分岐をすることができます。
when 式は、when に与えられた式に最初にマッチするパターンに結ぶ付いた値を返すパターンマッチングです。
式が省略されると、パターンの条件が最初に真になるパターンに結びついた値を返します。
;when式の例:<syntaxhighlight lang="Kotlin">
fun main() {
val mes = "a"
when (mes) {
"a" -> {
print("定数で初期化しているので、")
println("mesはa")
}
"b" -> println("mesはb")
"c", "d", "e" -> println("mesはcかdかe")
else -> println("mesはそれ以外")
}
// when 式の値を使った等価なコード
println(when (mes) {
"a" -> {
print("定数で初期化しているので、")
"mesはa"
}
"b" -> "mesはb"
"c", "d", "e" -> "mesはcかdかe"
else -> "mesはそれ以外"
})
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
定数で初期化しているので、mesはa
定数で初期化しているので、mesはa
</syntaxhighlight>
: when式は、いくつかの論理条件に応じて、複数の異なる制御構造体(ケース)のうちの1つを評価することができるという点で、条件式と類似しています<ref>[https://kotlinlang.org/spec/expressions.html#when-expressions Kotlin language specification Chapter 8 Expressions 8.6 When expressions]</ref>。
: 重要な違いは、when式は複数の異なる条件とそれに対応する制御構造体(control structure bodies; CSB)を含むことができることです。
: when式には、境界値付きと境界値なしの2種類の形式があります。
: 境界値(bound value;whenキーワードの後の括弧で囲まれた式)なしのwhen式は、whenエントリからの条件に基づいて異なるCSBのうちの1つを評価します。
: 各 when エントリは、boolean 条件(または特殊な else 条件)とそれに対応する CSB から構成されます。
: when項目は出現順にチェックされ評価され、条件が真と評価された場合、対応するCSBが評価され、when式の値はCSBの値と同じになり、残りのすべての条件と式は評価されません。
::whenパターン式のパターンの後ろに break は不要です(フォールスルーしませんし、することはできません)。
::もし break を書くと、when式の外のループ式からの脱出になります(フォールスルーしてしまう言語には、できなかったこと)。
区切子 <code>-></code> を使った構文の左辺の条件には、以下のようなバリエーションがあります。
;when式の条件の構文:<syntaxhighlight lang="Kotlin">
値
値1, 値2... , 値n
in 範囲式
!in 範囲式
is 型
!is 型
else
</syntaxhighlight>
: 値は、定数である必要はなくメソッドでも構いません。
: 式は、単式i外にブロック式<code>{...}</code>でも構いません。
[TODO:境界値を省略した例、when文でループを脱出する例、enumな式が境界値に与えられた例]
== 繰り返し処理 ==
Kotlinは、while と for の2つの繰り返し構文があります。
==== while式 ====
while式は、条件式が true の間、式を評価しつづけます。
while式の値は、評価した式の値です。
;構文:<syntaxhighlight lang=ebnf>
while-expr := while '(' 条件式 ')' 式
</syntaxhighlight>
: 条件式は、Boolean 型でなければいけません。
;[https://paiza.io/projects/lpmktjJ6kNtJLcY8Mwxwrw?language=kotlin while式の例]:<syntaxhighlight lang=Scala highlight="4-7" line>
fun main(args: Array<String>) {
var i = 0
while (i < 5) {
println(i)
i += 1
}
println("last = $i")
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
0
1
2
3
4
last = 5
</syntaxhighlight>
=== for式とコレクション ===
Kotlinのfor式は[[w:foreach文]]タイプのループ構文で、C言語の for(;;) とは異なる構文です。
;構文:<syntaxhighlight lang=text>
for (ループ変数 in コレクション) 式
</syntaxhighlight>
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 範囲コレクションとforを組合せた例]:<syntaxhighlight lang="kotlin" highlight=2>
fun main(args: Array<String>) {
for (i in 1..5) println(i)
println((1..5).javaClass.kotlin)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
2
3
4
5
class kotlin.ranges.IntRange
</syntaxhighlight>
:<var>i</var>の様なループ変数は、forがスコープになります。
:ここでは、型指定を省略しているので、型推論されコレクションの要素型になります。省略せず、
::<syntaxhighlight lang="kotlin" hightlight=2>
for (i : Int in 1..5) println(i)
</syntaxhighlight>
:とすることもできます(ただし、異種コレクションだと要素型はUnion型になり宣言が複雑になるので、コードレビューの時に意図を明確にするなどの想起がない限り、型推論に任せるのが常です)。
:ループ変数は、varやvalを前置することができません。
:ループ変数には、代入できません。
==== for と等価な while ====
;for と等価な while:<syntaxhighlight lang="kotlin">
for (ループ変数 in コレクション) {
println(ループ変数)
}
// は、以下と等価
val イテレーター = コレクション.iterator()
while (イテレーター.hasNext()) {
val ループ変数 = イテレーター.next()
println(ループ変数)
}
</syntaxhighlight>
:このことから、コレクションは .iterator(), .hasNext(), .next() の3つのメソッドを持つクラスと規定できます(この様なメソッド集合をプロトコルといい、この場合は for プロトコルといいます)。
==== コレクション ====
<code>println((1..5).javaClass.kotlin)</code>の結果が示す通り、範囲リテラル<code>1..5</code>は<code>class kotlin.ranges.IntRange</code>です。
コレクションは、Ranges以外にも、Sequences・Ranges・Lists・Arrays・Sets・Mapsなどがあります。これは網羅していませんし、上記の forプロトコルに従ったクラスを作れば、ユーザー定義のコレクションも作成できます。
;[https://paiza.io/projects/zw6faeOmsjuZVF3D3WY_-g?language=kotlin 様々なコレクション]:<syntaxhighlight lang="Kotlin">
fun main(args: Array<String>) {
val collections = arrayOf(
1..5,
1..8 step 2,
5 downTo 1,
8 downTo 1 step 2,
'A'..'Z',
listOf(2,3,5),
setOf(7,11,13))
println("$collections(${collections.javaClass.kotlin})")
for (collection in collections) {
print(collection)
print(": ")
for (x in collection) {
print(x)
print(" ")
}
print(": ")
println(collection.javaClass.kotlin)
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
class kotlin.Array
1..5: 1 2 3 4 5 : class kotlin.ranges.IntRange
1..7 step 2: 1 3 5 7 : class kotlin.ranges.IntProgression
5 downTo 1 step 1: 5 4 3 2 1 : class kotlin.ranges.IntProgression
8 downTo 2 step 2: 8 6 4 2 : class kotlin.ranges.IntProgression
A..Z: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z : class kotlin.ranges.CharRange
[2, 3, 5]: 2 3 5 : class java.util.Arrays$ArrayList
[7, 11, 13]: 7 11 13 : class java.util.LinkedHashSet
</syntaxhighlight>
: 二重のforループで、外周はコレクションのコレクションで、内周は個々のコレクションの要素をイテレーションしています。
=== repeat関数 ===
Kotlinにはrepeat関数があり、定数回の繰返しが必要な時に便利です<ref>[https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/repeat.html repeat - Kotlin Programming Language]</ref>。
;[https://paiza.io/projects/LHnnORcAjUhvb_qW9ysIvw?language=kotlin repeat関数]:<syntaxhighlight lang="kotlin">
fun main() {
repeat(5) {
println("it = $it")
}
repeat(3) { i ->
repeat(4) { j ->
println("(i, j) = ($i, $j)")
}
}
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
it = 0
it = 1
it = 2
it = 3
it = 4
(i, j) = (0, 0)
(i, j) = (0, 1)
(i, j) = (0, 2)
(i, j) = (0, 3)
(i, j) = (1, 0)
(i, j) = (1, 1)
(i, j) = (1, 2)
(i, j) = (1, 3)
(i, j) = (2, 0)
(i, j) = (2, 1)
(i, j) = (2, 2)
(i, j) = (2, 3)
</syntaxhighlight>
:<var>it</var>は、暗黙のループ変数です。
:多重ループでは、ループ変数の名前が固定では都合が悪いので、ブロックの先頭で<code>識別子名 -></code> とすることで明示的に名前をつけることができます。
=== ブロックを受取る関数 ===
repeat関数もそうですが、Kotlinにはブロックを受取る関数(やメソッド)があります。
;[https://paiza.io/projects/AZT2juUGcUnyjqgDx4G85g?language=kotlin ブロックを受取る関数]:<syntaxhighlight lang="kotlin">
fun main(args: Array<String>) {
val ary = Array(5) { 2 * it + 1 }
ary.forEach{ println(it) }
println(ary.map{ it.toString() }.joinToString(" "))
println(ary.reduce{ sum, el -> sum + el })
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
1
3
5
7
9
1 3 5 7 9
25
</syntaxhighlight>
:ブロックで配列の初期化を行う場合、<var>it</var>は順位になります。
:コレクションのforEachメソッドもブロックを取ります。
:コレクションのreduceメソッドもブロックを取りますが、累算値と要素の2つを取るので、名付けが必要です。
このように、ブロックを取るメソッドを使うとコレクションに関する操作を簡素に書けます。
=== 識別子の重複とシャドーイング ===
Kotlinでは、内側のスコープの識別子と外側のスコープの識別子が重複した場合、内側のスコープの識別子が参照されます。
;[https://paiza.io/projects/etUJhoaySpr4RcwO9VwO-g?language=kotlin コード例]:<syntaxhighlight lang="Kotlin" line highlight="2,4">
fun main() {
var i = 10
for (i in 1..3)
println("for内: i = $i")
println("for外: i = $i")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:4:10: warning: name shadowed: i
for (i in 1..3)
^
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
for内: i = 1
for内: i = 2
for内: i = 3
for外: i = 10
</syntaxhighlight>
: ループ変数 <var>i</var> と、2行目で宣言された変数 <var>i</var> の名前が衝突しいています。
: この様に名前が衝突した場合、スコープの内側のオブジェクトが参照されます。
:: 名前が衝突し、内側和のスコープの識別子に外側のスコープの識別子が隠される事を'''シャドーイング'''と呼び、コンパイラーは発見すると<code>warning: name shadowed: 識別子</code>と(エラーでなく)警告します。
多くのシャドーイングは無害ですが…
;ありがちな間違え:<syntaxhighlight lang="Kotlin" line highlight="2,3">
fun main() {
for (i in 1..3)
for (i in 1..4)
println("(i, i) = ($i, $i)")
}
</syntaxhighlight>
;コンパイラーのエラー出力:<syntaxhighlight lang=text>
Main.kt:3:14: warning: name shadowed: i
for (i in 1..4)
^
</syntaxhighlight>
;修正例:<syntaxhighlight lang="Kotlin" line highlight="3,4">
fun main() {
for (i in 1..3)
for (j in 1..4)
println("(i, j) = ($i, $j)")
}
</syntaxhighlight>
: 行列式を扱っていると、よくやらかします。
== クラス ==
Kotlinは、関数型プログラミング言語であると同時に、オブジェクト指向プログラミング言語です。
より厳密に言うと、(プロトタイプベースではなく)クラスベースのオブジェクト指向プログラミング言語です。
クラス(''class'')は、オブジェクトを作る雛形で、クラスからコンストラクタを使ってオブジェクトを作ることをインスタンス化、出来たオブジェクトの事をインスタンスと呼びます。
=== クラス定義とインスタンス化とメソッド ===
;[https://paiza.io/projects/41inK-Tl-w-FIjRvurIs3Q?language=Kotlin コード例]:<syntaxhighlight lang=Kotlin highlight="2-7,9,13" line>
fun main(args: Array<String>) {
class Hello(val s: String = "world") {
override fun toString(): String {
return "Hello $s!"
}
fun print(): Unit { println(s) }
}
val hello1 = Hello()
println(hello1)
hello1.print()
val hello2 = Hello("my friend")
println(hello2);
print(
"""
Hello::class.java === ${Hello::class.java}
hello1 === ${hello1}
hello2.s = ${hello2.s}
"""
)
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello world!
world
Hello my friend!
Hello::class.java === class MainKt$main$Hello
hello1 === Hello world!
hello2.s = my friend
</syntaxhighlight>
: [[Ruby#クラス]]の例を、Kotlin に移植しました。
: 冒頭4行がクラス定義です。
: クラス定義に、他のオブジェクト指向言語ならコンストラクタに渡すような引数が渡されています。
: メンバーを公開するケースなら、この様に宣言的な引数リストを使うとメンバー定義と暗黙の初期値を与えられます。
: toString は、オブジェクトを文字列化するメソッドで、Objectの同名のメソッドをオーバーライドしています。
: print は、このクラスに独自なメソッドで、println() の値 == () == Unit を戻値型としています。
== 注釈 ==
<references group="注" />
== 出典 ==
<references />
== 外部リンク ==
* [https://kotlinlang.org/ Kotlin Programming Language] - 公式サイト
* [https://play.kotlinlang.org/ Kotlin Playground: Edit, Run, Share Kotlin Code Online]
[[Category:Kotlin|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
rdriuhg2r72eoyecl7jlzhelr9y20c2
Kotlin/実行方法
0
28987
205960
205824
2022-07-28T22:47:52Z
Ef3
694
/* GNU/Linuxの場合 */ マークアップ修正
wikitext
text/x-wiki
== 注釈 ==
Kotlinは、コンパイルのターゲットごとに大別すると
* [[JavaScript]]向けであるKotlin/JS
* [[w:Java仮想マシン]]向けのKotlin/JVM
* [[w:iOS]]、[[w:Linux]]、[[w:Mac OS]]、[[w:Windows]]、[[w:WebAssembly]]向けのKotlin/Native
がある。
それぞれのターゲットで標準ライブラリの関数が存在しない場合や、シグニチャが異なる場合があるため、疑義が生じた場合はJetBrainsのマニュアルを参照のこと。
== Kotlin/JVM ==
=== 実行方法 ===
hello.kt のように、ファイル名の末尾に拡張子{{code|.kt}}をつける。Windows版に拡張子が必要なのは当然として、Linux版kotlin用のファイルでも拡張子.kt をつける必要がある。(※ Fedora32で2020年6月に確認. Windows版kotlinも同様)
さてWindows版でもLinux版でも、コマンド
kotlinc ファイル名.kt -include-runtime -d ファイル名.jar
で[[w:.jar|jar形式]]にコンパイルできる。
たとえば、ソースコードのファイル名が hello.kt なら
kotlinc hello.kt -include-runtime -d hello.jar
になる。
Kotlin を Java仮想マシンで動作させる場合には、Java仮想マシンが解釈できるjar形式に変換する必要がある。
hello.jar を作成してから、jarファイルを実行する。
kotlin hello.jar
で実行できる。
つまり、
kotlin ファイル名.jar
である。
まとめると、
<pre>
kotlinc ファイル名.kt -include-runtime -d ファイル名.jar
kotlin ファイル名.jar
</pre>
で実行することができる。
=== シェルスクリプトで実行する場合 ===
コマンドラインの作業を、シェルスクリプトという技法を使うことで自動化できる。
Kotlinの作業の場合、コンパイルのコマンドが長くなるので、手打ちで毎回、コマンドを入力するのは、だいぶ面倒である。
(すべてのファイル名を「hello.kt」で使い回せば、コマンド手打ちの必要は無くなるが、しかし実務では管理上の問題を引き起こしかねない。そこで、シェルスクリプトが便利である。)
ただし、そのOSに付属したシェルスクリプト実行ツールが必要である。
==== GNU/Linuxの場合 ====
GNU/Linuxの場合、メジャーなLinuxディストリビューションに Bash (バッシュ)というシェルが入っているので、シェルスクリプトでBashに命令スクリプトを与えて自動化できる。
;GNU/Linuxの場合のコード例(シェルスクリプト)
<syntaxhighlight lang="bash">
#!/bin/bash
filename="hello"
kotlinc ${filename}.kt -include-runtime -d ${filename}.jar
kotlin ${filename}.jar
</syntaxhighlight>
;実行方法
コマンド
bash シェルスクリプトのファイル名.sh
<!-- シェルスクリプトの実行にsourceビルトインコマンドを使ってはいけない。なぜなら、シェル変数を汚染してしまうからである。この例で言えば filename がこれにあたる。
またはsourceコマンドを使い、
source シェルスクリプトのファイル名.sh
のように入力すればいい。
シェルには、bash以外にもzshやcshなど様々なシェルがあるので、そのようにbash以外のシェルを使う場合にはコマンド「bash」は当然、使えない。
-->
;解説
冒頭の1行目の
:<code>#!/bin/bash</code>
は[[Shebang]]といい、スクリプトを実行するインタープリタ(この場合は /bin/bash )の所在を指定する。
bash のプロンプトから、bash のスクリプトを実行する場合は、Shebangがなくても同じ様に bash で実行されるが、bash 以外のシェル(例えば、tcsh)からShebangのないbashのシェルスクリプトを実行しようとすると、tcsh のシェルスクリプトとして実行されてしまい、期待した結果は得られない。
このように、
次に、2行目
:<code>filename="hello"</code>
でシェル変数「filename」に文字列「hello」を代入している。
注意点として、けっして
:<code>filename = "hello"</code> ※ ダメな例
のようにスペースを空けてはならない(イコールの前後にスペースを空けてはいけない)。もしスペースを空けてしまうと、代入ではなくコマンド「filename」として認識してしまい、エラーメッセージ「行 2: filename: コマンドが見つかりません」のようにエラーになってしまう。
このファイル名"hello"の部分を、hello以外のファイルのコンパイルなどを自動化したい場合には、都度スクリプトファイルにハードコードされたファイル名を書き変えるのではなく、コマンドライン引数や環境変数を使ってスクリプトにファイル名を渡すべきであろう。
また、シェルスクリプトによる方法では、変更のないソースコードまでコンパイルしてしまうので、makeやantの様なビルドツールを使うことも検討に値する。
==== Windowsの場合 ====
コマンドプロンプトではバッチファイルというのが使える。
;バッチファイルのコード例
<syntaxhighlight lang="bat">
set filename=hello
call kotlinc %filename%.kt -include-runtime -d %filename%.jar
call kotlin %filename%.jar
</syntaxhighlight>
;解説
実は、Windowsにおけるkotlincコマンドおよびkotlinコマンドの正体はバッチファイルである
そして、Windowsのバッチファイルは、バッチファイルから他のバッチファイルを呼び出すと、そこで呼び出さされたバッチファイルを実行したら、標準の仕様では動作が終了してしまう仕様である。
この終了を回避するには、call キーワードを使って、バッチファイルを呼び出さなければいけない。
;注意点
代入する文字列「hello」などに引用符はつけない。
変数の呼び出しは、「%変数名%」のように「%」で囲む。
;PowerShellの方法
Windowsの場合、PowerShellというのがWindows7以降の最新バージョンには入っているので、そのPowerShellというのを使ってシェルスクリプトを書けばいいのだが、しかしセキュリティ上の理由でWindowsでは標準設定ではPowershellシェルスクリプトの実行が出来ないようになっている。
なので、バッチファイルを使うか、いっそWindowsよりもLinuxでシェルスクリプトを実行するほうが良い。
== 参考: Hello World ==
実行対象のファイルの例として、Hello World のコードを示す。(文法の単元で説明しているコードと同じ内容。)
<syntaxhighlight lang="Kotlin">
// Hello.kt
fun main(args: Array<String>) {
println("Hello, World!")
}
</syntaxhighlight>
qykm61sucfksdz8y0bnvap038enait3
小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代
0
33209
205973
205237
2022-07-29T06:28:11Z
Mtodo
450
/* 下克上の時代 */
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--戦国時代から織豊時代--><!--(カ) キリスト教の伝来,織田・豊臣の天下統一を手掛かりに,戦国の世が統一されたことを理解すること。-->
★時代区分:戦国時代(室町時代後期)、安土桃山時代</br>
★取り扱う年代:1467年(応仁の乱の開始)から1600年(関ヶ原の戦い)まで
;戦国時代
: 義政のころになると、守護大名は幕府にたよらず領地を強力におさめるようになり、そのため、各地では大名同士や国人同士での勢力争いも数多く見られるようになりました。特に、義政の後継者争いをきっかけにした'''応仁の乱'''以後は、幕府は各地の争いを止める力を失って大名間で競って領土を争うようになります。この時代を「'''戦国時代'''」と言います。
: 戦国時代にあっては、世襲の守護大名に対して、実力のある家臣などが大名の地位を乗っ取ることがしばしば見られました('''下克上''')。このように実力で大名となり、周囲の大名と争った大名を'''戦国大名'''と言います。また、長槍・投石など単純な兵器を軽装で扱う兵士('''足軽''')を大量に用いて集団でたたかうようになりました。特に、'''鉄砲伝来'''が、この戦い方に影響を与えました。
: 15世紀から、西ヨーロッパの国々、特に'''ポルトガル'''と'''スペイン'''は世界中に船を出して貿易を始めたり、新たな土地を発見したりしていました('''大航海時代''')。その中で、1543年種子島にポルトガル人が漂着し、鉄砲が伝えられました。日本への航路を発見したポルトガルとスペインは、日本では'''南蛮人'''と呼ばれ、各地の戦国大名などと貿易を行います('''南蛮貿易''')。また、'''フランシスコ・ザビエル'''が来日し、'''キリスト教'''を伝えました。
;安土桃山時代
: 実力のある戦国大名が、周囲の戦国大名などを討ち取って、各地での統一が進んでいましたが、戦乱の世の中を治め日本全体を統一に向かわせたのは'''織田信長'''です。信長は、領地の商業を盛んにし財力を拡大し<!--検地の実施(生産力の把握)、楽市楽座、貨幣経済への指向(永楽銭の旗印)-->、身分に関わりのない人材の登用、鉄砲など新たな武器の使用などで、領国の現在の愛知県から京都周辺の近畿地方一帯を統一し、将軍を追放し室町幕府を滅ぼしました。しかし、家臣の明智光秀により殺され、光秀を討った'''豊臣秀吉'''が信長の天下統一を引き継ぎます。信長は滋賀県の安土に城をきずき政治を行い、それをついだ秀吉は京都の桃山城(現在の京都市伏見区)で政治を行なったので、この時代を「'''安土桃山時代'''」と言います。政治の中心は桃山(伏見)でしたが、秀吉は、豊臣家の城として'''大坂城'''(大阪城)をきずき、城下に大名屋敷や堺などの周辺の町々の町人を集めて、'''大坂'''(大阪)の町を築いて政治・経済の中心都市としました。
: 秀吉は、中国地方の毛利氏、四国地方の長宗我部氏、九州地方の島津氏などを攻めしたがえ、関東を支配する北条氏を攻めほろぼして、天下を統一します。天下を統一した秀吉は、全国の農地の測量を行い('''検地''')、どれくらい米が収穫できるかを明らかにし('''太閤検地''')、大名の財力の基準としました('''{{ruby|石高|こくだか}}制''')。この機会に、長さ・広さ・体積の単位が統一されました。また、天下が統一され、平和になったのだから武器は必要ないであろうということで、刀などを取り上げる「'''{{ruby|刀狩|かたながり}}'''」を行いました。刀狩で、武士とそうでない民衆は明確に区別されました。
: 秀吉が、天下を統一したころには、キリスト教の信者('''キリシタン''')はかなり増えており、大名の中にも信者がいました(キリシタン大名)。しかし、各地で寺社との対立があったり、スペインなどの侵略のうわさなどもあり、宣教師(バテレン)を国外に追放し、キリスト教の布教を禁止しました。
: 晩年、秀吉は、大陸進出を望んで、全国の大名に命じて朝鮮に兵を進めました('''朝鮮出兵''': 文禄・慶長の役)。しかし、朝鮮の強い抵抗と、明の援軍にあい、侵攻が進まないなか、秀吉が死去し朝鮮出兵は撤退しました。
|}
=== 戦国時代 ===
==== 戦乱の世の始まり ====
[[File:Ounin no Ran 1467.png|thumb|300px|応仁の乱が始まった当時(1467年)<br>人名:青字が東軍、赤字が西軍<br>守護大名の領土<br>水色:東軍、黄色:西軍、黄緑:両軍伯仲]]
:銀閣を建てた第8代将軍'''{{ruby|[[小学校社会/6学年/歴史編/人物事典#足利義政(あしかがよしまさ)|義政]]|よしまさ}}'''のころになると、[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#守護大名|守護大名]]は、各国で大きな力をもち、幕府にたよらず領地を強力におさめるようになりました。日本各地では、大名同士や国人同士での勢力争いや後継者争いも数多く見られるようになりました。<span id="関東戦乱"/>特に、関東においては、関東の政治を行なっていた[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#鎌倉府|鎌倉府]]が、鎌倉公方(足利氏)と関東管領(上杉氏)と対立し、また、上杉氏の中でも争って、京都の幕府にもしたがわないなど、関東の中での争いの原因となっていて、15世紀初めから、ずっと戦乱が続き、幕府もなかなかこれを止められませんでした。
:そのような中、1467年'''{{ruby|応仁|おうにん}}の{{ruby|乱|らん}}'''が起きました。応仁の乱とは、もともと、有力な守護大名である{{ruby|畠山|はたけやま}}氏の後継者争いにはじまって、[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#管領|管領]]の{{ruby|細川勝元|ほそかわかつもと}}と数カ国の守護大名である{{ruby|山名宗全|やまなそうぜん}}が対立していたところに、義政と弟{{ruby|足利義視|あしかがよしみ}}との間で後継者争いがおき<ref>義政は将軍就任後、しばらくの間、男子が生まれず、弟義視にゆずることにしていましたが、義政に子(後の第9代将軍{{ruby|足利義尚|あしかがよしひさ}})が生まれ、その子につがせようとして争いが起きました。</ref>、義政は細川勝元をつけ(東軍)、義視は山名宗全を味方につけて(西軍)、争ったものです。おのおのに有力な守護大名がついて争い、京都が焼け野原になるなど大きな被害が出ましたが、1473年山名宗全と細川勝元が次々に亡くなると、京都だけではなく戦乱は全国に広がりました。各地方では、守護大名の一族や家臣の中でも東軍西軍に分かれて、争うこともありました。この争いは、1477年、西軍が降伏することで終わりますが、処分を受けた守護などはいなかったため、東軍・西軍のどちらが勝ったというものではありませんでした<ref>第9代将軍には{{ruby|義尚|よしひさ}}がなりましたが、義尚が若くして亡くなると、{{ruby|義視|よしみ}}の子{{ruby|足利義稙|あしかがよしたね}}が第10代将軍となっています。</ref>。また、関東では、京都での争いと関係なくずっと争いが続いていました。
:応仁の乱以後は、多くの武士は将軍にしたがわなくなり、幕府は各地の争いを止める力を失って大名間で競って領土を争うようになります。この時代を「'''戦国時代'''」と言います。
:守護や地頭が年貢の多くを横取りされたとはいえ、領主も年貢を得ていた'''荘園'''は、戦国時代に入ると京都など遠方にいる荘園領主の公家や寺社には年貢がおさめられなくなり、消滅していきます。また、おのおのの戦国大名の領地が独立国のようになり、大名の領地を離れるところに大名は関所<span id="関所"/>をもうけ、人の出入りが監視され、通行税をとったりしました。
{{-}}
==== 下克上の時代 ====
:戦国時代にあっては、世襲の守護大名に対して、'''[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#守護代|守護代]]'''など実力のある家臣が、その地の'''[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#国人|国人]]'''領主らをしたがえて、大名の地位を乗っ取ることがしばしば見られました。これを、'''{{ruby|下克上|げこくじょう}}'''といいます。また、家系は同じであっても、国人領主となっていた分家が本家を乗っ取ることも少なくありませんでした。このように実力で大名となり、周囲の大名と争った大名を'''戦国大名'''と言います。
:応仁の乱をひきいた、山名氏は{{ruby|京極|きょうごく}}氏が守護であった{{ruby|出雲|いずも}}の守護代{{ruby|尼子|あまこ}}氏<span id="尼子氏"/>にせめとられ、管領の細川氏は領土の一つであった{{ruby|阿波|あわ}}の守護代{{ruby|三好|みよし}}氏<span id="三好氏"/>に乗っ取られます。三好氏の{{ruby|三好長慶|みよしながよし}}は、畿内・近畿・四国東部を領地とし、幕府をあやつるようになります。また、関東は、戦国大名の代表である{{ruby|北条早雲|ほうじょうそううん}}があらわれ、その地方の争いをおさめます。
:戦国大名は、その武将が強かったというよりは、多数の国人領主を味方につけたという性質があります。国人領主などが共同して('''{{ruby|国一揆|くにいっき}}'''<ref name="一揆"><span id="一揆"/>この時代、複数の人々が何かの目的を持って集まって行動すること約束すること({{ruby|盟約|めいやく}})を「'''{{ruby|一揆|いっき}}'''」と言っていました。国人が一揆することで「国一揆」、これに農民も加わると「{{ruby|土一揆|つちいっき}}」、一揆の人々が一向宗の信者(「{{ruby|門徒|もんと}}」と言います。国人などの武士も農民もいました。)であると「一向一揆」と呼ばれます。時代がくだって江戸時代に、農民がまとまって武士に反抗して争うことを、「'''{{ruby|百姓一揆|ひゃくしょういっき}}'''」と呼んでいます。</ref>)、守護大名をほろぼして、国人領主どうしの話し合いで国をおさめたものもあります。特に[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#浄土真宗|浄土真宗]]の本山{{ruby|本願寺|ほんがんじ}}の一派は[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#一向宗|'''{{ruby|一向宗|いっこうしゅう}}''']]と呼ばれて、本山本願寺はこれを全国各地で応援しました。これを、'''{{ruby|一向一揆|いっこういっき}}'''<ref name="一揆"/><span id="一向一揆"/>といいます。
:戦国時代になると、戦い方も、武士が一人一人ばらばらに戦うのではなく、軽装で大量の兵士が、{{ruby|長槍|ながやり}}や{{ruby|投石|とうせき}}(石を投げること)など単純な兵器を使って、集団で戦うやり方になりました。このような軽装の兵士は、普段は貧しい農民であったりした者で'''{{ruby|足軽|あしがる}}'''<span id="足軽"/>と呼ばれました。特に、次の節でのべる'''鉄砲伝来'''が、この戦い方に影響を与えました。足軽から武士になって出世をしていく者もあらわれました。
:戦国時代は、このように、今までの身分などの{{ruby|秩序|ちつじょ}}がみだれた時代でしたが、実力により世に出ることができる時代でもありました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="下克上"/>戦国大名と下克上<small>
[[File:C1550.png|thumb|300px|戦国時代中期(1550年)の各国の守護大名や戦国大名]]
[[File:C1560.png|thumb|300px|戦国時代中期(1560年)の各国の守護大名や戦国大名<br>この「長尾氏」は上杉謙信のことです]]
:有名な戦国大名を以下にあげます。その他にも有名な戦国大名はたくさんいますが、脱線しすぎるので、ここでは、取り上げません。興味があれば、皆さんの住んでいるところで活躍した戦国大名を調べてみましょう。
:*{{ruby|北条早雲|ほうじょうそううん}}<span id="北条早雲"/>
:*:{{ruby|伊豆|いず}}国(現在の静岡県)と{{ruby|相模|さがみ}}国(現在の神奈川県)をおさめ、後に関東地方全体をおさめる{{ruby|北条|ほうじょう}}氏<ref>鎌倉時代の執権であった北条氏と区別するため「{{ruby|後北条|ごほうじょう}}氏」といいます。</ref>の初代となる戦国大名です。関東南部から{{ruby|上野|こうずけ}}国、{{ruby|越後|えちご}}国は、[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#鎌倉府|関東管領]]である上杉氏が守護をしていましたが、[[#関東戦乱|関東での戦乱]]で上杉氏の中でも対立がおこり、守護に戦乱をおさめる力はありませんでした。北条早雲は西国の出身ですが<ref>以前は、誰にもつかえていない武士({{ruby|浪人|ろうにん}})とされていましたが、最近の研究では[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#室町幕府|室町幕府の政所執事]](政所の責任者){{ruby|伊勢|いせ}}氏の一族であることが分かっています。</ref>、東国に移り住んで{{ruby|今川|いまがわ}}氏が守護をする{{ruby|駿河|するが}}国(現在の静岡県)の守護代となり、伊豆国と相模国から上杉氏の勢力を追い出し、領地としました。
:*{{ruby|斎藤道三|さいとうどうさん}}<span id="斎藤道三"/>
:*:{{ruby|美濃|みの}}国(現在の岐阜県)の戦国大名です。美濃国は、{{ruby|土岐|とき}}氏が守護をつとめていましたが、実際の政治は守護代である{{ruby|斉藤|さいとう}}氏が行い、さらに、その代官である{{ruby|長井|ながい}}氏が力を持っていました。斎藤道三は、もともと京都の油売りで、美濃で長井氏につかえ、やがて、主人の罪をせめて殺して長井新九郎をなのります<ref>最近の研究では、ここまでは、道三の父親の時代の話ではないかと言われています。</ref>。その後守護代の斉藤氏が亡くなると、斉藤新九郎利政となのって守護代になります。そして、最後に守護の土岐氏を追い出して、美濃国をおさめる戦国大名となりました。
:*{{ruby|上杉謙信|うえすぎけんしん}}<span id="上杉謙信"/>
:*:{{ruby|越後|えちご}}国(現在の新潟県)の戦国大名です。越後国の守護は上杉氏がつとめていて、守護代を{{ruby|長尾|ながお}}氏がつとめていました。謙信は、もともと長尾氏の生まれですが、力が衰えた上杉氏の養子となり、関東管領の地位もつぎました。謙信は、北関東をめぐって北条氏と戦い、{{ruby|信濃|しなの}}国(信州、現在の長野県)をめぐって{{ruby|武田信玄|たけだしんげん}}と戦いました。
:*{{ruby|武田信玄|たけだしんげん}}<span id="武田信玄"/>
:*:{{ruby|甲斐|かい}}国(現在の山梨県)の戦国大名です。{{ruby|武田|たけだ}}氏は、もともと守護大名です。信玄は、馬を使った{{ruby|戦|いくさ}}がたくみで、{{ruby|信濃|しなの}}国をめぐって上杉謙信と戦い、信濃を領地にし、{{ruby|今川|いまがわ}}氏が衰えたのち、駿河に南下し、[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#徳川家康|徳川家康]]とたたかい、家康を敗退させます<span id="三方原の戦い"/>。そのまま、西に進み、[[#織田信長|織田信長]]とたたかおうとしたところで病で亡くなりました。
:*{{ruby|今川義元|いまがわよしもと}}<span id="今川義元"/>
:*:{{ruby|駿河|するが}}国と{{ruby|遠江|とおとおみ}}国(現在の静岡県中部から西部)の戦国大名です。{{ruby|今川|いまがわ}}氏は、足利家の一族の有力な守護大名です。義元は、隣接する北条氏や信玄と争いながら、ひけをとらない強力な戦国大名で、西に隣接する{{ruby|三河|みかわ}}国の大名{{ruby|松平|まつだいら}}氏をしたがえており、松平氏であった[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#徳川家康|徳川家康]]も幼いころ人質にされていました。1560年、大軍で西に進み{{ruby|尾張|おわり}}を攻撃しようとしたところで、[[#織田信長|織田信長]]の奇襲にあってうたれました(桶狭間の戦い)。
:*{{ruby|毛利元就|もうりもとなり}}<span id="毛利元就"/>
:*:毛利元就はもともと{{ruby|安芸|あき}}国(現在の広島県)の国人領主でしたが、安芸の守護武田氏をほろぼし戦国大名となり、ついで、{{ruby|周防|すおう}}、{{ruby|長門|ながと}}国(現在の山口県)など中国地方西部を領地とした守護大名である{{ruby|大内|おおうち}}氏の内乱の機会に大内氏の領地をえて、中国地方の東部を領地とした戦国大名である[[#尼子氏|{{ruby|尼子|あまこ}}氏]]をほろぼして中国地方全体をおさめる戦国大名になりました。
</small>
|}</div>
==== 鉄砲とキリスト教の伝来 ====
[[ファイル:Arquebus.jpg|thumb|right|200px|種子島{{ruby|火縄銃|ひなわじゅう}}]]
:15世紀から、西ヨーロッパの国々、特に'''ポルトガル'''と'''スペイン'''は世界中に船を出して貿易を始めたり、新たな土地を発見したりしていました('''[[#大航海時代|大航海時代]]''')。
:その中で、1543年{{ruby|種子島|たねがしま}}にポルトガル人が漂着し、'''{{ruby|鉄砲|てっぽう}}'''が伝えられました。当時の鉄砲は、{{ruby|筒|つつ}}先から、丸い{{ruby|弾|たま}}と火薬をつめ、ねらいを定めたら、手元の火のついた縄で火薬に火をつけうつというもので'''{{ruby|火縄銃|ひなわじゅう}}'''と呼ばれています。火縄銃の弾がとどく{{ruby|距離|きょり}}は、100mほどでしたが<ref>この距離は意外と短いです。一発うつと、次のをうつのに弾と火薬を、また筒先からつめないといけないので、その間に馬などに乗った敵に近づかれてしまいます。</ref>、{{ruby|鎧|よろい}}をつらぬくほどの威力があって、おどろきをもってむかえられます。すぐに、火縄銃の製造法({{ruby|鉄砲鍛冶|てっぽうかじ}})が習得され、全国で製造されるようになって、各地の戦国大名がもちいるようになり、戦争の様子が大きく変わりました。
{{-}}
[[File:Namban-13.jpg|thumb|200px|{{Ruby|南蛮屏風|なんばんびょうぶ}}(※ 一部分)<br>南蛮貿易のようすがかかれています。日本人がえがいたものです。]]
:この漂着を機会に日本への航路を発見したポルトガルとスペインは、日本では'''{{ruby|南蛮人|なんばんじん}}'''と呼ばれ、九州の{{ruby|長崎|ながさき}}や{{ruby|平戸|ひらど}}や、大阪の{{ruby|堺|さかい}}の港などを{{ruby|訪|おとず}}れ各地の戦国大名などと貿易を行うようになります('''{{ruby|南蛮貿易|なんばんぼうえき}}'''<span id="南蛮貿易"/>)。
:南蛮貿易で、ボルトガルは、ヨーロッパから持ち込んだものではなく、日本・中国(明)・インド(ゴアという町をポルトガルの領地にしていました)・東南アジアを結んだ貿易をしていました。
::#中国から日本
::#:生糸、絹織物、金、陶磁器、{{ruby|硝石|しょうせき}}<ref>火薬の材料</ref>、薬、砂糖
::#日本から中国
::#:銀、{{ruby|硫黄|いおう}}、日本刀、{{ruby|漆器|しっき}}、{{ruby|螺鈿細工|らでんざいく}}、人(奴隷)
::#東南アジア各地から日本へ
::#:{{ruby|沈香|じんこう}}<ref>お香や薬の材料。</ref>、{{ruby|錫|すず}}、{{ruby|鉛|なまり}}など。
:その他、南蛮貿易によって、アメリカ大陸原産のカボチャ<ref>「カンボジア」がなまったものと言われています。</ref>・スイカ・トウモロコシ・ジャガイモ<ref>「ジャガタラいも」の略で、「ジャガタラ」は今のインドネシア・ジャカルタのことです。</ref>・トウガラシ・タバコが日本にもたらされました。
:また、これらの船を使って、日本人の中にも東南アジアの各地にうつり住む人々も出てきて、東南アジアには'''{{ruby|日本人町|にほんじんまち}}'''<span id="日本人町"/>もあちこちにできました。
[[File:Franciscus de Xabier.jpg|thumb|200px|フランシスコ・ザビエル]]
:1549年、スペイン人の{{ruby|宣教師|せんきょうし}}'''フランシスコ・ザビエル'''が来日し、'''[[#キリスト教|キリスト教]]'''を伝えました。キリスト教は、{{ruby|聖書|せいしょ}}にもとづいた大変わかりやすい教えで、また、当時の仏教の寺の多くが地主や大名のように振る舞っていたことへの反発、さらに、貿易の目的から保護をする大名などもいて、多くの信者('''キリシタン''')をえました。戦国大名自身がキリシタンとなった者('''キリシタン大名''')もいました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="大航海時代"/>{{ruby|大航海時代|だいこうかいじだい}}<small>
[[File:Explos.png|thumb|300px|大航海時代の主な航路を示した地図]]
:日本人にとって外国とは、朝鮮半島か中国、書物の上での{{ruby|天竺|てんじく}}(インド)くらいでしたが、鉄砲伝来の時に、はじめて、日本で、日本人がヨーロッパ人に出会うことになりました。
:日本を、ヨーロッパに初めて広めたのは、14世紀に中国の元を、[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#元寇|元寇]]のころ、おとずれた'''マルコ・ポーロ'''の書いた『{{ruby|東方見聞録|とうほうけんぶんろく}}』です。そこでは、日本を'''ジパング'''<ref>「日本国」の当時の中国語の発音からでしょう。日本語でも、「日」は「ジツ」とも読みますね。英語の"Japan"(ジャパン)など日本を表すことばの元になっています。</ref>と呼び、建物の屋根まで黄金でできた黄金の国と表現しています<ref>もちろん、これは大げさですが、当時の日本からの重要な輸出品に{{ruby|金|きん}}がありました。</ref>。
:14世紀頃までのヨーロッパの重要な輸入品に、肉のくさみを消し、長期間保存するための{{ruby|胡椒|こしょう}}がありました。胡椒はインドで栽培されたものを陸路で運んでいましたが、途中にイスラム商人やイタリア商人が入っていたため大変高価なものとなっていました。
:15世紀になると、ヨーロッパの国々で航海の能力が、格段に伸びて、陸路ではなく船で貿易をこころみるようになりました。さまざまな航路が発見され、ヨーロッパの人々は世界中に船を出し貿易をしたり、新たに見つけた土地を植民地としたりしました。この時代を、'''{{ruby|大航海時代|だいこうかいじだい}}'''といいます。
:ヨーロッパからインドまではアラビア半島沿いの{{ruby|紅海|こうかい}}を通っていけば近いのですが、当時は紅海と地中海の間は船の通行ができず<ref>今は、'''スエズ運河'''があるので通行できます。</ref>、また、イスラムの国々を通過しなければならなかったので、その経路はつかえません。そこで、大西洋アフリカ西岸を南下し、アフリカ最南端を回ってインド洋をへてインドへむかう航路が探され、1498年ポルトガル王が派遣した'''ヴァスコ・ダ・ガマ'''がその航路を発見しました。それ以降、ポルトガルがこのインド洋航路を支配して貿易を行いました。
:これと同時期、アフリカ西岸を南下するのではなく、地球は丸いのだから大西洋をずっと西に行けばインドに着くという考えを持つ人がいました。'''クリストファー・コロンブス'''という人です。コロンブスは、黄金の国ジパングにあこがれ、スペイン王の支援をえて、1492年、大西洋を西に進みました。そうすると、2ヶ月後に人の住む島を発見しました。コロンブスはインドに到着したものと思い、その島の住民などを「インドの人(インディオ、インディアン)」と呼びました。しかし、その後よく調べると、コロンブスが発見したのは、インドの一部ではなく、ヨーロッパ人が知らなかった新たな土地'''アメリカ'''<ref>この名前は、コロンブスが発見したのがインドではなく新たな土地であることを見つけた'''アメリゴ・ベスプッチ'''の名前にちなみます。</ref>であることがわかりました。
:16世紀の間、スペインは南北アメリカ大陸を植民地とし銀などの資源をヨーロッパに持ち込み、ポルトガルはアフリカ航路を利用した、アジア貿易で国がさかえました<ref name="スペイン">1465年スペインはフィリピンを植民地にし、アジア貿易に参加します。また、1480年スペインはポルトガルを併合するので、秀吉の頃は貿易など、ポルトガルではなくスペインが独占しています。</ref>。
:1453年、種子島にポルトガル人が漂着したのはこの頃です。
:ポルトガルは、中国南部のマカオを拠点として、さらに東に貿易の範囲を広げようとしていました。漂着したポルトガルの船には、中国人が乗っていて、種子島の役人とは筆談で、やりとりができました。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="キリスト教"/>キリスト教について<small>
:さすがに、キリスト教を全然知らないという方はいないでしょうが、日本の歴史では、ここで初めて出てくるので、簡単な説明と、この時代のキリスト教の状況について説明しておきます。
:キリスト教は、紀元1世紀<ref>そもそも、イエス・キリストが生まれたとされる年を紀元1年としているので当たり前ですが。</ref>、現在のイスラエルで、その地に住んでいたユダヤ人の宗教ユダヤ教を元にイエス・キリスト<ref>名前が「イエス」で、「キリスト」は「救世主」の意味です。</ref>が説き、ヨーロッパ各地に広めた宗教です。イエス・キリストの教えは、ユダヤ教の教えとともに「'''{{ruby|聖書|せいしょ}}'''」という書物<ref>もともとのユダヤ教の教えの部分を「{{ruby|旧約|きゅうやく}}聖書」、イエス・キリストが登場した後の教えの部分を「{{ruby|新約|しんやく}}聖書」といいます。「訳」ではなく「約」であることに注意してください。これは、神様との{{ruby|契'''約'''|けいやく}}・{{ruby|'''約'''束|やくそく}}ということです。</ref>になって、キリスト教は、この聖書にもとづいて説かれています。
:キリスト教は、最初はヨーロッパから中東、アフリカ北部を支配していたローマ帝国から厳しい迫害を受けましたが、4世紀にはローマ帝国の国教になります。ローマ帝国がほろびた後も、ヨーロッパ全土にキリスト教の教えは広まり、ローマ教皇を頂点とする'''カトリック教会'''(ローマ教会)が、ヨーロッパ西部において宗教的な支配者となりました<ref><span id="ギリシア正教"/>ただし、ギリシア近辺を中心としたヨーロッパの東部にはローマ帝国をつぐ国が残っていたので、その人々はローマ教会の支配に入らず、独自の信仰を続けました。この人々の宗派を'''ギリシア正教'''と言います。ギリシア正教はやがて北上し、スラブ系の民族に信仰されるようになります。</ref>。また、同時に、教会も土地やそこで働く農奴を有して、領主としてもふるまうようになりました(日本のお寺が「荘園領主」になったのと同じことです)。こうして、経済的な力も持った教会は、しばしば、国王や貴族たちと対立するようになりました。なかには、神父など聖職者であるにもかかわらず、教会のお金で贅沢な生活をするものも現れました。
:<span id="宗教改革"/>16世紀(ちょうど大航海時代の頃)になって、イエス・キリストの教えはカトリック教会からではなくて、聖書から直接学ぶことができるという考え方が現れ、カトリック教会から独立してキリスト教を信仰する動きが出てきました。この考え方を、「'''プロテスタント'''」または「'''新教'''<ref>新教に対してカトリックを「'''旧教'''」ともいいます。</ref>」といいます。プロテスタントはローマから遠いドイツやフランスの北部に広まり、ヨーロッパ各地でカトリックとプロテスタントの争い<ref>単に宗教上の論争だけではなく、各々を信仰する貴族の間での戦争です。</ref>が起こりました。
:カトリック教会でも、このようなことになったことに反省し、その使命感を持った人々が集まり<ref>キリスト教では、同じ考えに共感を持った聖職者があつまって活動する場所を{{ruby|修道院|しゅうどういん}}といい、いくつかの修道院を含んだ、そのような集まりを{{ruby|修道会|しゅうどうかい}}と言います。</ref>、新たな布教活動を始めます。フランシスコ・ザビエルが所属するイエズス会もそのひとつです。
:<span id="キリスト教宣教"/>イエズス会などは、大航海時代で、ヨーロッパ人には新たな土地である、アジアや南北アメリカ大陸の各地へ布教にでかけます。宣教師たちは、キリスト教の教えとともに算術などの各種の学術、中には文字まで伝えるなどして、ヨーロッパ文明を伝え信者を増やしました。一方で、そのようにして信者を増やして、スペインなどが植民地としやすくしたとの話もあります。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - これはちょっと覚えておいた方がいい話】<span id="ヨーロッパ"/>ヨーロッパの人々について<small>
:この時代に、日本はヨーロッパの人たちと初めて出会ったのですが、大航海時代以降世界中でヨーロッパの人たちは活躍し、その影響は、今、皆さんたちが生活している現代までに及びます。
:ただ、ヨーロッパとは言っても、その中身はさまざまです。ヨーロッパの人たちは大きくラテン系、ゲルマン系、スラブ系の人々に分かれます。このことは、小学校の学習範囲ではありませんが、世界の地理や歴史を話す際に常識になりますので、大まかなところを覚えておきましょう。
:#'''ラテン系'''の人々は、主にヨーロッパの南西部の人々です。カトリックの信者が多く、ポルトガルやスペインはこのグループに入ります。その他、フランスやイタリアが含まれます。大航海時代にスペインとポルトガルからメキシコ以南の中南米に多くの移民し、その言語や文化を伝えます。そのため中南米をラテンアメリカと言います。
:#'''ゲルマン系'''の人々は、主にヨーロッパ北西部の人たちです。プロテスタントの信者が多くなります。ポルトガルやスペインの次にやってくる、オランダやイギリスがこのグループです。その他、ドイツやデンマークなど北ヨーロッパ諸国が、ゲルマン系になります。北アメリカのアメリカ合衆国はイギリス人の移民が中心となって建国しました。
:#'''スラブ系'''の人々は、主にヨーロッパ東部の人々です。この地域では、キリスト教のうち[[#ギリシア正教|ギリシア正教]]が中心となります。このグループを代表するのがロシア人です。その他、ウクライナやポーランド、ブルガリア、セルビアなどが挙げられます。
:この3つのグループに属さないヨーロッパの民族もいくつかあります。代表的なものはギリシア人です。
:各々のグループの特徴については、数多くの例外はありますが、この3分類はヨーロッパの理解の基本として覚えておきましょう。
</small>
|}</div>
=== 安土桃山時代 ===
:1467年の応仁の乱から、約100年、戦国の世の中は、各地で有力な戦国大名が領土を拡大し各地方をまとめつつありましたが(このような状態を、{{ruby|群雄割拠|ぐんゆうかっきょ}}といいます)、[[#上杉謙信|上杉謙信]]と[[#武田信玄|武田信玄]]と[[#北条早雲|北条氏]]がお互い強力で動きが取れなくなったりして、世の中が平和になる見込みはありませんでした。そのような中、{{ruby|尾張|おわり}}(現在の愛知県の西部)に'''[[#織田信長|{{ruby|織田信長|おだのぶなが}}]]'''が現れました。信長は、尾張からはじまって約20年で[[#信長最大版図|京都をはじめとした日本の中心部]]をおさえ、天下を統一し戦国時代を終わらせるきっかけを作りました。信長は、家臣の{{ruby|明智光秀|あけちみつひで}}によって殺されますが、光秀を討った'''[[#豊臣秀吉|{{ruby|豊臣秀吉|とよとみひでよし}}]]'''が引き継いで天下を統一します。信長は滋賀県の{{ruby|安土|あづち}}に城をきずき政治を行い、それをついだ秀吉は京都の{{ruby|桃山|ももやま}}城(現在の京都市伏見区)で政治を行なったので、この時代を「'''{{ruby|安土|あづち}}{{ruby|桃山|ももやま}}時代'''<ref>別名を、「'''織'''田信長」と「'''豊'''臣秀吉」で'''{{ruby|織豊|しょくほう}}時代'''とも言います。</ref>」と言います。
==== 織田信長の登場 ====
[[File:Odanobunaga.jpg|200px|thumb|織田信長]]
:'''{{ruby|織田信長|おだのぶなが}}<span id="織田信長"/>がやったこと'''
::(ここには、ポイントだけ書きます。細かい部分は[[#信長|参考資料]]とし、小学校の範囲を超えているので、おぼえる必要はありませんが理解を深めるため、そちらをを読んでください。)
::*尾張一国の戦国大名でしたが、1560年{{ruby|桶狭間|おけはざま}}の戦いで有力な戦国大名である{{ruby|駿河|するが}}の{{ruby|今川義元|いまがわよしもと}}をたおしました。
::*領土を西に広げて行き、1569年室町幕府の第15代将軍に{{ruby|足利義昭|あしかがよしあき}}をつけました。
::*'''{{ruby|堺|さかい}}'''などの商人を保護し、'''南蛮貿易'''をはじめとする商業をさかんにしました。
::*南蛮貿易をさかんにするためなどの理由で、ポルトガル人宣教師によるキリスト教の布教を認めました。
::*将軍義昭と対立し、1573年京都から義昭を追放しました。そのため、室町幕府は滅亡しました。
::*三好氏・朝倉氏・甲斐武田氏といった有力な戦国大名をほろぼし、[[#信長最大版図|京都をはじめとした主要な土地]]を領地として、その領土に自分の家臣をおきました。
::*1576年、{{ruby|近江|おうみ}}(現在の滋賀県)に '''{{ruby|安土城|あづちじょう}}''' を築かせ、そこで政治をとりました。
::*1582年、家臣の'''{{ruby|明智光秀|あけちみつひで}}'''に{{ruby|裏|うら}}切られ、京都の{{ruby|本能寺|ほんのうじ}}でおそわれて、亡くなりました('''{{ruby|本能寺|ほんのうじ}}の{{Ruby|変|へん}}''')。
:'''信長が他の戦国大名と違うところ'''<span id="信長の政策"/>
::それまで戦国大名ができなかったことが、信長にはなぜできたのでしょう。信長がそれまでの戦国大名と違うと言われるところを以下にあげます。
::どれも、信長がはじめてやったというものではありませんが、これらのことを{{ruby|大胆|だいたん}}にできたので、信長は天下統一に手がとどいたのかもしれません。
::[[File:Battle of Nagashino word.svg|400px|thumb|長篠の戦い。左側が織田・徳川の連合軍。右側が武田軍。]]
::*'''軍事'''
::**鉄砲の活用
::**:信長は、{{ruby|戦|いくさ}}に大量の鉄砲を用いました。
::**:<span id="長篠の戦い"/>鉄砲を活用した{{ruby|戦|いくさ}}の例として、1575年、甲斐の大名{{ruby|武田勝頼|たけだかつより}}([[#武田信玄|信玄]]の子)との'''{{ruby|長篠|ながしの}}の戦い'''があります。当時、武田軍はよく訓練された騎馬部隊<ref>馬に乗った武士がおそいかかる軍隊。</ref>をもっており、日本最強とも言われていたのですが、これを、3000{{ruby|丁|ちょう}}の火縄銃でむかえうち、武田軍を圧倒しました。
::**軍団の組織化
::**:信長は、それまで武将(多くは国人領主)単位に編制されていた軍隊を鉄砲隊、槍隊、騎馬隊など機能ごとに編成しました。また、各地での連絡や移動途中の食糧の確保などを重視し、軍隊が素早く動けるよう工夫しました。
::**兵士の専門化<span id="兵農分離"/>
::**:{{ruby|戦|いくさ}}が集団戦で数が多い方が有利となり、[[#足軽|足軽]]などが増えたのですが、多くは農民をかねていて稲作の時期など思うようにあつめられず、また、鉄砲や槍といった取り扱いに訓練や経験が必要なものは、農作業のあいまにということではうまくいきませんでした。信長は、これらの足軽を城下に集め、専門の兵士としました。また、これを逆から見ると、専門の兵士でないものは農業ばかりやるようになり、生産が増えることが期待できる他、武器を持った反乱などのおそれがへるということになります。
::*:[[ファイル:Nobunaga_flag.png|thumb|180px|織田信長軍 [[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#永楽通宝|永楽銭(永楽通宝)]]の旗印]]
::*'''経済'''
::*:鉄砲を買ったり、専門の兵士として足軽を雇うためにはお金が必要です。信長は、お金をえるするためにいろいろなことをしました。
::*:信長の{{ruby|旗印|はたじるし}}は、中国の貨幣で当時日本でも共通の貨幣であった「'''[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#永楽通宝|永楽通宝]]」'''です。信長が、いかに経済を大事に考えていたかがわかります。
::**{{ruby|検地|けんち}}<span id="検地"/>
::**:信長は新たに領地となった田畑の面積や収穫量を調査し、それを検地帳にまとめました<ref>最初に検地をやったのは、[[#北条早雲|北条早雲]]ではないかと言われています。</ref>。これで、年貢の量を予想することができ、計画的にお金の使い{{ruby|途|みち}}(予算)を決めることができます。お金の出入りが計画的であれば、売ったり、貸したりする方も安心して取引ができます。
::**商業の振興
::***領地内の[[#関所|関所]]を廃止し通行税をとることをやめ、商品が安価で大量に流通するようにしました。
::***'''[[#楽市楽座|{{ruby|楽市楽座|らくいちらくざ}}]]'''といって、岐阜や安土城の城下の{{ruby|市|いち}}などで自由に物を売らせるようにし、いろいろなものが大量に取引されるようにしました。
::***日本最大の貿易港であった'''{{ruby|堺|さかい}}'''を直接おさめ、堺の商人に自由にものごとを決めさせて、'''[[#南蛮貿易|南蛮貿易]]'''などを盛んに行いました。
::*'''人材の登用'''
::*:{{ruby|豊臣秀吉|とよとみひでよし}}、{{ruby|明智光秀|あけちみつひで}}、{{ruby|滝川一益|たきがわかずます}}など、家柄や出身地にかかわらず能力のあるものを登用しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="信長"/>信長のあしあと<small>
[[File:Map Japan Genki1.png|thumb|300px|戦国時代末期(1570年)の各国の戦国大名]]
[[File:Sengoku period 1582.png|thumb|300px|<span id="信長最大版図"/>1582年本能寺の変直前の領地の様子。徳川氏は信長にしたがっているので、信長の領地と考えても良いです。]]
:{{ruby|尾張|おわり}}はもともと{{ruby|斯波|しば}}氏が守護を務める国で、{{ruby|織田|おだ}}氏は尾張の守護代の家柄でした。しかも、信長の家系は守護代の家の分家にあたりましたが、父{{ruby|織田信秀|おだのぶひで}}が戦国大名として尾張をまとめ、隣国{{ruby|美濃|みの}}[[#斎藤道三|斎藤道三]]と結ぶなどしていました。
:一国のみの大名であった信長が有力大名になるきっかけは、1560年{{ruby|桶狭間|おけはざま}}の戦い<span id="桶狭間の戦い"/>です。これは、有力な戦国大名である{{ruby|駿河|するが}}の[[#今川義元|{{ruby|今川義元|いまがわよしもと}}]]が西に進めていた軍を、奇襲して義元を討ち取ったという戦いです。この戦いで、東側からせめられる心配がなくなり、信長は西へ進みます。
:1567年、道三の孫{{ruby|斎藤龍興|さいとうたつおき}}を追放し、美濃をえて、街の名を{{ruby|岐阜|ぎふ}}と変えて尾張から移住し、翌1568年には、足利氏の一族である{{ruby|足利義昭|あしかがよしあき}}<ref>第12代将軍{{ruby|足利義晴|あしかがよしよしはる}}の子、第13代将軍{{ruby|足利義輝|あしかがよしてる}}の弟。当時、京都は、将軍義輝を殺した{{ruby|阿波|あわ}}の[[#三好氏|三好氏]]が京都を占領しており、それから逃げていました。</ref>を連れ、京都に入り、翌年第15代将軍としました。
:京都から近畿地方一帯を、自分の勢力におさめた信長は、当時、日本最大の貿易港であった{{ruby|堺|さかい}}を直接おさめ、堺の商人たちに自分たちの政治をまかせました。そうすることで、商業をさかんにし、'''南蛮貿易'''をはじめとした取引の利益を税としてえようとしました。
:また、このころ、キリスト教の{{ruby|宣教師|せんきょうし}}と初めて出会い、布教を許可しました。信長本人はキリスト教の信者ではなく、信長のねらいは、南蛮貿易のほか、宣教師のもたらす情報や、さらには当時に信長と{{ruby|敵対|てきたい}}していた仏教勢力への{{ruby|対策|たいさく}}などと言われています。
:京都近辺の訴訟や各国の争い事の調停などは将軍義昭の幕府に任せて、自分は領地の中の政治や領地の拡大につとめていましたが、幕府にはもうその力はなく、将軍にかわって信長が取り扱わなければならない例が多く出てきました。将軍義昭やその側近はそれに不満を持つようになりました。そのため、信長を囲む勢力と連絡をとって攻撃させたとも言われています。信長を囲む勢力としては、阿波の[[#三好氏|三好氏]]、北陸の{{ruby|朝倉|あさくら}}氏、{{ruby|摂津|せっつ}}の石山本願寺<ref>のちに大阪城が建てられる場所です。</ref>が指揮をとる各地の[[#一向一揆|一向一揆]]がありました。信長は、家臣を各々の方面に当てて戦いました。また、1571年には、 {{ruby|延暦寺|えんりゃくじ}}が敵対する朝倉氏の兵をかばったとして焼き{{ruby|討|う}}ちにしました<ref>当時の延暦寺は僧だけではなく、寺を守る武士やその家族も含めた一つの街になっていました。</ref>。翌1572年には、これをとがめた[[#武田信玄|武田信玄]]が西へ向かい、同盟者の[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#徳川家康|{{ruby|徳川家康|とくがわいえやす}}]]と戦い、'''[[#三方原の戦い|{{ruby|三方原|みかたがはら}}の戦い]]'''で信長と家康の同盟軍をうちやぶりますが、信玄がその途中で病死したため、武田軍は甲斐へ戻ります。
:1573年、信長は将軍義昭を追放し、室町幕府はほろび、室町時代は終わります。
:翌年、北陸地方の有力な大名であった{{ruby|朝倉|あさくら}}氏とその協力者であった近江の{{ruby|浅井|あざい}}氏をほろぼし、1575年の[[#長篠の戦い|長篠の戦い]]では、大量の火縄銃で、{{ruby|武田勝頼|たけだかつより}}がひきいる日本最強とうわさされた騎馬軍団をしりぞけました。
:1576年、{{ruby|近江|おうみ}}(現在の滋賀県)に '''{{ruby|安土城|あづちじょう}}''' を築かせ、岐阜からうつって政治をとりました。安土城は、最初に{{ruby|天守閣|てんしゅかく}}をもった城と言われています。信長は、多くの家来を安土城の城下に集め、また、取引が自由な市を安土城下におきました。
:その後、石山本願寺を打倒し、北陸方面では国境を接するようになった[[#上杉謙信|上杉謙信]]らと争い、中国地方では{{ruby|毛利|もうり}}氏と四国地方では三好氏に代わった{{ruby|長宗我部|ちょうそかべ}}氏と争います。そして、1582年には、長年敵対していた武田勝頼をほろぼします。
:同年、このような中、中国地方の毛利氏と争っていた豊臣秀吉に支援の兵を出そうとしていた時、重臣であった'''{{ruby|明智光秀|あけちみつひで}}'''が、信長の滞在する京都の{{ruby|本能寺|ほんのうじ}}に兵を向け、そこで亡くなりました('''{{ruby|本能寺|ほんのうじ}}の{{Ruby|変|へん}}''')。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="楽市楽座"/>{{ruby|楽市楽座|らくいちらくざ}}<small>。
:戦国時代に入るころには、大量の永楽通宝などが入って、ますます商業はさかんとなって、各地の交通の便の良いよいところや寺社の門前の{{ruby|市|いち}}がにぎわったほか、戦国大名などは、居城の周辺に家臣を集め住ませたことで{{ruby|刀鍛治|かたなかじ}}などの職人も集まるようになり、そのような場所にも定期的に{{ruby|市|いち}}が立つようになりました('''{{ruby|城下町|じょうかまち}}'''のはじまり)。
:そのころの{{ruby|市|いち}}では、領主などにお金を払って、商売をする場所「{{ruby|座|ざ}}」を確保していました({{ruby|市|いち}}にある「座」を「{{ruby|市座|いちざ}}」といいます。「{{ruby|店|みせ}}」のはじまりです)。座は最初は個人にあたえられていましたが、次第に同業者でまとまったりしていました。このような座に{{ruby|魚|うお}}座・{{ruby|莚|むしろ}}座・{{ruby|鋳物|いもの}}座・{{ruby|布|ぬの}}座・{{ruby|紙|かみ}}座など多数ありました。これらの座は、個々の{{ruby|市|いち}}をこえてまとまって、お金を払う代わりに寺社などの保護を受けるものもありました。
:戦国時代のなかばには、「市座」は、その{{ruby|市|いち}}で独占的に商売をすることができるようになり、だれかが新しくその仕事をはじめたり、{{ruby|値段|ねだん}}を決めたりすることがむずかしくなっていました。また、「座」があることで、新しく始めたり、値段を安くしたり、工夫をすることができなくなっていました。
:{{ruby|楽市楽座|らくいちらくざ}}は、このような制限をなくして、自由に取引ができるようにし、より良いものが、より安く、より多く取引されることを目的とした政策です。
</small>
|}</div>
==== 豊臣秀吉の天下統一 ====
[[File:Toyotomi_hideyoshi.jpg|thumb|200px|豊臣秀吉。秀吉は、もともと農民でしたが、武士になりました。そして、信長に{{Ruby|認|みと}}められ、信長の部下になりました。]]
[[File:Osaka Castle Keep tower of 「A figure of camp screen of the Osaka summer」.jpg|thumb|200px|大阪城]]
:1582年、'''{{ruby|本能寺|ほんのうじ}}の{{Ruby|変|へん}}'''のとき、'''{{ruby|豊臣秀吉|とよとみひでよし}}<span id="豊臣秀吉"/>'''<ref name="秀吉の名">秀吉は、何度も名前を変えていて、もともと、{{Ruby|木下|きのした}}{{Ruby|藤吉郎|とうきちろう}}{{Ruby|秀吉|ひでよし}}という名でしたが、この当時は、{{Ruby|羽柴|はしば}}{{Ruby|秀吉|ひでよし}}と名乗っていました。[[小学校社会/6学年/歴史編/貴族の文化-平安時代#なのり|なお、「豊臣」は「源」や「平」と同じ本姓で、苗字(名字)は「羽柴」のままです。]]</ref>は、{{ruby|備中|びっちゅう}}(現在の岡山県)で毛利氏と戦っていましたが、ただちに、戦いをやめ軍団2万人を連れて上方に引き返し、{{Ruby|明智光秀|あけちみつひで}}をうちました。
:このことで、秀吉は、信長の後継者とみとめられ、翌年、信長の有力な家臣であった{{ruby|柴田勝家|しばたかついえ}}をうって、信長の天下統一の事業を引き継ぎました。
:同年、石山本願寺のあとに大阪城を築かせ、そこを{{Ruby|本拠地|ほんきょち}}にし、安土城同様またはそれ以上に、城下に堺の商人も含め多くの人々をあつめました。
:秀吉は、以下のとおり、順々に全国を統一して行きます。
:*中国地方の毛利氏とは、毛利氏がその当時もっていた中国地方9カ国の領地をそのまま認めることで同盟を結びました。
:*1583年、{{ruby|越後|えちご}}の{{ruby|上杉景勝|うえすぎかげかつ}}([[#上杉謙信|謙信]]の後継者)とも同盟を結びました。
:*1584年、秀吉の後継に不満を持った信長の次男織田{{ruby|信雄|のぶかつ}}が[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ#徳川家康|{{ruby|徳川家康|とくがわいえやす}}]]を味方にして戦いますが、翌年には家康は秀吉に従います。
:*四国は長宗我部氏がほぼまとめていましたが、1585年、攻め入って、{{ruby|土佐|とさ}}(現在の高知県)一国のみを残し、その他を取り上げました。
:*1585年秀吉は、[[小学校社会/6学年/歴史編/貴族の文化-平安時代#摂関政治|関白]]に、翌年[[小学校社会/6学年/歴史編/天皇中心の国づくり-飛鳥時代から奈良時代#太政官|太政大臣]]となり、天皇から「豊臣」の姓<ref name="秀吉の名"/>をあたえられました。
:*1587年、その大部分を{{ruby|島津|しまづ}}氏が統一していた九州に入り、島津氏には{{ruby|薩摩|さつま}}、{{ruby|大隈|おおすみ}}(現在の鹿児島県)と{{ruby|日向|ひゅうが}}(現在の宮崎県)の一部のみを残し、九州を平定しました。
:*1590年、関東を支配していた{{ruby|北条|ほうじょう}}氏の{{ruby|小田原|おだわら}}城(現在の神奈川県小田原市)をせめ、これをほろぼします<span id="小田原攻め"/>。この時、東北を広く支配していた{{ruby|伊達政宗|だてまさむね}}は小田原まで来て、秀吉にしたがいました。こうして、秀吉に対抗する戦国大名はいなくなり、天下は統一され、戦国時代が終わりました。
:1591年秀吉は関白をやめ甥の{{ruby|秀次|ひでつぐ}}にゆずりました。それ以降、秀吉は関白をやめた人をさす「{{Ruby|太閤|たいこう}}」と呼ばれます。そして、今では「太閤」といえば、普通は豊臣秀吉のことを指すようになりました。また、1594年秀吉は京都伏見に{{ruby|桃山|ももやま}}城(伏見城)を作り、各国の大名を集め、そこで政治を行いました。
:1592年、秀吉は、大陸進出を望んで、全国の大名に命じて'''朝鮮'''に兵を進めました。翌年、'''[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#明|{{ruby|明|みん}}]]'''が援軍を入れたため、いったん、兵を引き上げ、明と交渉を続けましたがまとまらず、1597年ふたたび、朝鮮に兵を進めました。これを、'''{{ruby|朝鮮出兵|ちょうせんしゅっぺい}}'''または'''{{ruby|文禄|ぶんろく}}・{{ruby|慶長|けいちょう}}の{{ruby|役|えき}}'''<ref>1592年が文禄元年、1597年が慶長2年となるからこの名がついています。「{{ruby|役|えき}}」とは、「戦争」の意味です。</ref>といいます。朝鮮出兵は朝鮮の強い抵抗と、明の援軍にあい、侵攻が進まないなか、1598年秀吉が死去し朝鮮出兵は撤退しました。
;秀吉の政策
:秀吉は信長の政策の多くを引き継ぎました。
:*'''{{Ruby|太閤検地|たいこうけんち}}'''
:*:秀吉は、[[#検地|信長同様、新たに領地となった農地に対して検地を行いました]]。信長の時と違っているのは、信長の時は、土地の持ち主に申告させましたが、秀吉の場合、実際に役人を派遣して測量させました。この際、[[小学校社会/6学年/歴史編/天皇中心の国づくり-飛鳥時代から奈良時代#班田収授|班田収授以来使用し全国で乱れていた長さ・広さ・体積の単位]]を統一させました。これを、「{{Ruby|太閤検地|たいこうけんち}}」と呼びます。
:*:太閤検地により、土地の収穫高がわかるため、これを大名の財力の基準としました('''{{ruby|石高|こくだか}}制'''<span id="石高制"/>)<ref>「石高制」の前は、収穫した米を売ったお金を基準とする「{{ruby|貫高|かんだか}}制」でしたが、農地の把握が不確実であったことに加え、貨幣の量が十分でなく、米との交換価格が不安定であったため、検地で収穫量を明確にし安定した収入を確保することで「石高制」に変わりました。</ref>。
:*:また、その土地を耕し、年貢を納める人が明確になったので、荘園は名実ともになくなりました<ref>公家は、荘園からの収入がなくなり、武家同様、知行からの収入のみとなりました。</ref>。
:*'''{{Ruby|刀狩|かたながり}}'''<span id="刀狩"/>
:*:秀吉は、信長の「[[#兵農分離|兵士の専門化]]」をさらに進め、1588年に、天下統一が進み、世の中が平和になったということで、{{Ruby|京都|きょうと}}の{{Ruby|方広寺|ほうこうじ}}に大仏を作るので材料の鉄が必要であるという理由で、武士ではない、農民から刀や{{Ruby|鉄砲|てっぽう}}などの武器を{{Ruby|没収|ぼっしゅう}}する命令'''{{Ruby|刀狩令|かたながりれい}}'''を出しました。逆に刀などを持ち続ける場合には、武士であって、農地を手放すということです。この刀狩で、武士とそうでない民衆は明確に区別されました。
:*:また、刀狩によって、寺や神社で武器を持つことができなくなり、これ以降、寺社が武士のようにふるまうことがなくなりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''{{Ruby|刀狩令|かたながりれい}}'''
:{{Ruby|百姓|ひゃくしょう}}が刀・やり・鉄砲などの武器をもつことを禁止する。ねんぐを出ししぶり、一揆をおこすものは、{{Ruby|厳|きび}}しく{{Ruby|罰|ばっ}}する。
:とりあげた刀は、大仏をつくるためのくぎなどにするから、百姓は仏のめぐみで、この世だけでなく、あの世でも救われるだろう。
|}</div>
:*'''キリスト教の禁止'''<span id="バテレン追放令">
:*: 秀吉が、天下を統一したころには、キリスト教の信者('''キリシタン''')はかなり増えており、大名の中にも信者がいました('''キリシタン大名''')。しかし、各地で寺社との対立があったり、[[#キリスト教宣教|スペイン<ref name="スペイン"/>などの侵略のうわさ]]などもあり、1587年、宣教師('''バテレン''')を国外に追放し、キリスト教の布教を禁止しました('''バテレン追放令''' 禁教令)。この時は、個人として信じることは許されたのですが、キリシタン大名の中には信仰をやめる者や信仰を続ける代わりに大名をやめる者もありました。
:*:秀吉は、南蛮貿易を、そのまま継続したため、キリスト教の禁止はあまり徹底されませんでした。ただ、例外として、1597年京都で活動していたキリスト教徒たちを捕らえて、はじめてキリスト教を信じたということで20人日本人、4人のスペイン人宣教師、それぞれ1名のメキシコ人、ポルトガル人宣教師合計26名が処刑されました<ref>これは、古くから布教をしていたキリスト教のグループである'''イエズス会'''(ザビエルもイエズス会の一員です)は、秀吉の意を受けて目立たないように活動を続けていたのですが、新たに布教を始めた'''フランシスコ会'''というグループが禁教令を無視したふるまいをしたためにみせしめに行ったものであるとされています</ref>。この人たちは、「日本二十六{{ruby|聖人|せいじん}}」と呼ばれています。
{{-}}
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代|室町文化の誕生-室町時代]]
|[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ|江戸幕府の成立と安定した社会-江戸時代Ⅰ]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#08]]
tukqeek6vnjzkptsih7z9svvrx9wmxa
小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ
0
33212
205977
204248
2022-07-29T08:01:46Z
Mtodo
450
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--徳川幕府の成立、江戸時代初期(概ね島原の乱あたりまで)--><!--(キ) 江戸幕府の始まり,参勤交代や鎖国などの幕府の政策,身分制を手掛かりに,武士による政治が安定したことを理解すること。-->
★時代区分:江戸時代初期</br>
★取り扱う年代:1600年(関ヶ原の戦い)から1638年(島原の乱終結)まで
;江戸幕府の始まり
:秀吉死後、最も強力な大名'''徳川家康'''は、敵対する豊臣家家臣石田三成らと、東軍(家康側)と西軍(三成側)に分かれ関ヶ原で戦い('''関ヶ原の戦い''')、これに勝利します。政権は豊臣氏から徳川氏に移ります。
:関ヶ原の戦いに勝利した'''徳川家康'''は、1603年に征夷大将軍に就任し、'''江戸'''に幕府を開きます。これを「'''江戸幕府'''(または、徳川幕府)」といい、江戸に幕府があった時代を「'''江戸時代'''」と言います。家康は、大坂冬の陣・夏の陣で豊臣氏を滅ぼし、これ以降、大名同士の合戦はなくなります。
:関ヶ原の戦いの後、家康は西軍の大名の領地と豊臣氏の領土を取り上げ、東軍の大名に分け与えました。この時、大名を家康の子孫による'''親藩'''、関ヶ原の戦い前から家来である'''{{ruby|譜代|ふだい}}大名'''、関ヶ原の戦い後に従った'''{{ruby|外様|とざま}}大名'''にわけてとりあつかいました。①親藩は、将軍家の血筋が絶えた場合などに、将軍を出す役割を担った'''御三家'''・'''御三卿'''を含み、家格・官位などでは優遇されましたが、幕政に参加することはまれでした、②譜代大名は、比較的小さな石高の領土を認められ領地替えもよくありましたが、江戸や京大阪からは近くに位置したものでした。'''大老'''、'''老中'''、'''若年寄'''といった幕閣には譜代大名がつきました。③外様大名は、比較的大きな石高の領土を認められ、幕末まで領地替えはほとんどありませんでしたが、江戸や京大阪からは遠いところにありました。また、幕政に参加することはほとんどありませんでした。なお、江戸時代の大名とその家来を合わせた集団を、「'''{{ruby|藩|はん}}'''」と言っています。幕府は強力な力を持っていましたが、藩の中の政治に口を出すことはありませんでした。
;武士の政治の安定
:第3代将軍'''徳川家光'''は、大名は、妻子(正妻と後継となる子)を江戸に置き、領土との間を1年おきに行き来すること('''参勤交代''')を定めました。また、将軍の命令で、徳川氏が有する城や河川の改修などを務めなければならないこともありました。こうして、徳川将軍は大名が、戦国時代のように勝手に争うことができないようにし、安定した世の中を作り上げました。
:徳川幕府には、重要なことを決める大老、老中、若年寄の他、大名の監視を行う'''大目付'''、寺社を管理する'''寺社奉行'''、幕府の出納を管理する'''勘定奉行'''、江戸の行政や裁判を行う'''江戸町奉行'''などの役職があり、大名の他、将軍の直接の家臣である'''旗本'''がその任務につきました。
:秀吉の刀狩によって、武士の身分(士分)と民衆が明確に分けられましたが、江戸幕府はそれを引き継ぎ、「'''士農工商'''」という身分制を確立しました。<!--なお、以前は、身分がこの順にあったと言われていましたが、現在では「士分」とその他は身分差があるが、「農工商」には身分の差がなかったというのが定説となっています。-->また、人の移動は厳しく制限され、各地に関所がもうけられ、ここを通るのに通行手形が必要でした。
:キリスト教は秀吉の時代に禁じられましたが、江戸幕府においても禁じられました。一方で、ポルトガルなどとの貿易は港を限定しながらも続いており、そこで宣教師との行き来があったとされます。そんな中、九州の天草・島原で大規模なキリスト教徒による反乱('''島原の乱''')が起きました。これがきっかけとなって、幕府は、島原の乱の翌年に、貿易の相手を、キリスト教の布教には熱心でない'''オランダ'''だけに限って、さらに、長崎の'''出島'''だけでこれを認めることになりました。これを、'''{{ruby|鎖国|さこく}}'''と言います。
|}
=== 江戸幕府の始まり ===
==== 関ヶ原の戦い ====
:1598年[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#豊臣秀吉|秀吉]]が死んだ時、後継の{{Ruby|秀頼|ひでより}}はまだ5歳でした。秀吉は、秀頼が成長するまで'''{{ruby|徳川家康|とくがわいえやす}}'''・{{ruby|上杉景勝|うえすぎがげかつ}}他5人の有力な大名('''{{ruby|五大老|ごたいろう}}'''<ref>家康・景雄の他は{{ruby|前田利家|まえだとしいえ}}・{{ruby|毛利輝元|もうりてるもと}}・{{ruby|宇喜多秀家|うきたひでいえ}}です。</ref>)と秀吉が信頼する'''{{ruby|石田三成|いしだみつなり}}'''や{{ruby|浅野長政|あさのながまさ}}他5人の家臣('''{{ruby|五奉行|ごぶぎょう}}'''<ref>三成・長政の他は{{ruby|前田玄以|まえだげんい}}・{{ruby|増田長盛|ましたながもり}}・{{ruby|長束正家|なつかまさいえ}}です。</ref>)の10人で相談して政治を行うよう言い残しました。しかし、秀吉が死ぬと家康は他の大名との関係を深めるなどの動きを見せ、三成は家康が天下をねらっているのではないかとうたがいを持つようになりました。他方で、秀吉・秀頼の家臣の中で、石田三成を中心とする行政で秀吉をささえたグループと浅野長政や{{ruby|加藤清正|かとうきよまさ}}・{{ruby|福島正則|ふくしままさのり}}といった{{ruby|戦|いくさ}}で{{ruby|手柄|てがら}}を立ててきたグループの間に対立が生じてもいました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|[[File:Tokugawa_Ieyasu2.JPG|thumb|200px|徳川家康]]
;{{ruby|徳川家康|とくがわいえやす}}のこれまでの歩み<span id="徳川家康"/>
:徳川家康は、{{Ruby|三河|みかわ}}(現在の愛知県東部)の大名{{Ruby|松平|まつだいら}}氏に生まれます。松平氏は三河の国人出身の大名でしたが、隣接する{{ruby|今川|いまがわ}}氏や織田氏に比べると弱小な大名でした。家康は家を継ぐ前、{{Ruby|松平元康|まつだいらもとやす}}と言って、今川氏に人質に出されていたことがあります。
:1560年[[#桶狭間の戦い|{{ruby|桶狭間|おけはざま}}の戦い]]で[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#今川義元|今川義元]]が討ち死にし、今川氏が弱くなると、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#織田信長|信長]]と同盟し三河をとりもどします。そして、名を{{ruby|徳川家康|とくがわいえやす}}とかえ、{{Ruby|遠江|とおとおみ}}をせめとります。その後、信長の同盟国として武田氏や北条氏と隣接する信長の勢力の東南部を守り続けます。
:1572年の'''[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#三方原の戦い|{{ruby|三方原|みかたがはら}}の戦い]]'''では大敗し、命の危険もありましたが、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#武田信玄|武田信玄]]が病死し、兵は甲斐へもどったため一命をとりとめました。
:逆に、1575年の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#長篠の戦い|長篠の戦い]]では、信長との連合軍で、{{ruby|武田勝頼|たけだかつより}}に大勝し{{Ruby|駿河|するが}}をえ、1582年武田氏をほろぼして{{Ruby|甲斐|かい}}と{{Ruby|信濃|しなの}}の一部をえました。
:秀吉には、後継者争いで一時抵抗し、秀吉の軍をくだすなどしたのですが、和解し、その後はしたがいます。
:1590年、秀吉の[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#小田原攻め|小田原攻め]]に協力し北条氏を攻め滅ぼしますが、秀吉の命令によって、領地を北条氏のおさめていた関東に移され、{{Ruby|江戸|えど}}城を{{Ruby|拠城|きょじょう}}としました。
:秀吉の生前は、秀吉配下では最大の大名となっていました。
|}
;<span id="関ヶ原の戦い"/>{{Ruby|関ヶ原|せきがはら}}の戦い
:[[File:Sekigaharascreen.jpg|thumb|400px|関ヶ原の戦い<br>絵の右側にいるのが徳川軍。絵の左側にいるのが豊臣軍。]]
:1600年、五大老五奉行の{{ruby|仲違|なかたが}}いが深まり、家康は{{ruby|会津|あいづ}}の上杉景勝を攻める兵を挙げ東へ向かいます。
:三成は、家康に反対する大名たちに呼びかけ、家康を攻める兵をあげやはり東へ向かいました。これを知った家康は軍を西へ反転して、これをむかえうとうとしました。そして、{{Ruby|関ヶ原|せきがはら}}(今の岐阜県)で、家康が率いる軍(東軍)と、三成が率いる軍(西軍)がぶつかりました。これを '''関ヶ原の戦い''' といいます。これは、両軍合わせて約20万人と日本史上最大の合戦となりました。結果は、西軍の中での裏切りなどもあって東軍の勝利となりました。
:戦後、三成らは処刑され領土は没収されました。毛利氏など西軍についたもまた多くの領土を没収されました。豊臣氏も多くの領土を没収され、一地方の大名に過ぎないものとなって、家康の天下となりました。
{{-}}
==== 江戸幕府の誕生 ====
:1603年、{{Ruby|朝廷|ちょうてい}}から{{Ruby|徳川家康|とくがわいえやす}}は [[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#将軍|{{Ruby|征夷大将軍|せいいたいしょうぐん}}]]に任命されました。
:家康は{{Ruby|江戸|えど}}(現在の東京)に'''{{Ruby|幕府|ばくふ}}'''を開きました。これが'''{{Ruby|江戸幕府|えどばくふ}}'''であり、この時から'''江戸時代'''が始まりました。
:将軍の権限は、武士に[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#石高制|石高で表した領地({{ruby|知行|ちぎょう}})を与えること({{ruby|石高制|こくだかせい}})]]であり、知行が1万石以上の者を'''{{ruby|大名|だいみょう}}'''、1万石未満で、将軍に直接会うこと<ref>これを「{{ruby|御目見得|おめみえ}}」と言います。</ref>ができる者を'''{{ruby|旗本|はたもと}}'''、できない者を'''{{ruby|御家人|ごけにん}}'''<ref>多くは、戦国時代、「足軽」と呼ばれていた階層の武士です。</ref>と言っていました。
:関ヶ原の戦いの後に、家康は領地を分け与えましたが、この時、大名を家康の子孫による'''{{ruby|親藩|しんぱん}}'''、関ヶ原の戦い前から家来である'''{{ruby|譜代|ふだい}}大名'''、関ヶ原の戦い後に従った'''{{ruby|外様|とざま}}大名'''にわけてとりあつかいました。なお、江戸時代の大名とその家来を合わせた集団を、「'''{{ruby|藩|はん}}'''」と言っています<ref>ただし、この言い方は明治以降の言い方で、当時は、「○○様{{ruby|御家中|ごかちゅう}}」などの言い方を使いました。</ref>。幕府は、藩をつぶしたり({{ruby|改易|かいえき}})、領土の一部を取り上げたり({{ruby|減封|げんぽう}})、大名同士の領土を交換させる({{ruby|国替|くにがえ}}・{{ruby|転封|てんぽう}}<span id="国替"/>)など、強力な力を持っていましたが、藩の中の政治に口を出すことはありませんでした。日本国内は、幕府と藩により統治されていたので、このような政治の仕組みを「'''{{ruby|幕藩体制|ばくはんたいせい}}'''」といいます。
::;親藩
:::将軍家の血筋が絶えた場合などに、将軍を出す役割をになった'''{{ruby|御三家|ごさんけ}}'''<ref>{{ruby|尾張|おわり}}藩、{{ruby|紀州|きしゅう}}藩、{{ruby|水戸|みと}}藩の3家で、それぞれ領国をもっていました。家康のこどもで、第2代将軍{{ruby|秀忠|ひでただ}}の兄弟の子孫です。</ref>・'''御三卿'''<ref>{{ruby|田安|たやす}}家、{{ruby|一橋|ひとつばし}}家、{{ruby|清水|しみず}}家の3家で、御三家と違い領国を持っていません。江戸幕府の誕生から130年〜150年ほどのちにできた家で、第8代将軍{{ruby|吉宗|よしむね}}の子孫です。</ref>を含み、家格・官位などでは優遇されましたが、幕政に参加することはまれでした。
::;譜代大名
:::関ヶ原の戦いの前から徳川家の家来であった家系の大名です。比較的小さな石高の領土を認められ領地替えもよくありましたが、江戸や京大阪からは近くに位置したものでした。'''{{ruby|大老|たいろう}}'''、'''{{ruby|老中|ろうじゅう}}'''といった{{ruby|幕閣|ばっかく}}や'''{{ruby|若年寄|わかどしより}}'''、{{ruby|大阪城代|おおさかじょうだい}}、{{ruby|京都所司代|きょうとしょしだい}}、{{ruby|寺社奉行|じしゃぶぎょう}}といった重職には譜代大名がつきました。
::;外様大名
:::関ヶ原の戦い以降に徳川家の家来となった大名です。比較的大きな石高の領土を認められ、幕末まで領地替えはほとんどありませんでしたが、江戸や京大阪からは遠いところにありました。また、幕政に参加することはほとんどありませんでした。
:徳川幕府は、「'''{{ruby|天領|てんりょう}}'''」といって旗本などの知行とせずに直接支配する400万石に及ぶ領地ももっていました。天領には旗本や御家人から{{ruby|代官|だいかん}}を派遣し、これをおさめました。
;{{Ruby|武家諸法度|ぶけしょはっと}}
:1615年、第2代将軍徳川{{ruby|秀忠|ひでただ}}は、大名を取りしまるための法律を作りました。これを '''{{ruby|武家諸法度|ぶけしょはっと}}''' といいます。この法度に反すると、改易などの処分がなされました。
<div style="border:1px solid #000000;margin:0 2em 0 4em">
* '''武家諸法度'''(一部)
*: 一. (武士は)学問や武芸の道に、ひたすら{{Ruby|専念|せんねん}}すること。
*: 一. 新しく城を築くことは、かたく禁止する。修理する場合であっても、必ず幕府に申し出ること。
*: 一. 大名は、毎年、きめられた月に江戸に{{Ruby|参勤|さんきん}}すること([[#参勤交代|参勤交代]])。 (※)
*: 一. 大きな船を作ってはならない。(※)
*: 一. 大名は、幕府の許可なしに勝手に結婚をしてはならない。
:::::※:3代将軍 徳川家光が加えたものです。
</div>
==== 大阪の陣 ====
:このように、徳川家による支配が確立した時期にあっても、秀吉の子{{ruby|秀頼|ひでより}}は、徳川家にしたがう態度を見せませんでした。また、関ヶ原の戦い以降、領地を失った大名やその家来、主君から離れた武士などが大阪城に集まってきていました。1614年、家康<ref>この頃は、将軍ではありません。</ref>と将軍秀忠は、大阪城を攻めるのに、全国の大名に兵を出すように命じ、翌1615年豊臣氏はほろびます。これを'''{{ruby|大阪|おおさか}}の{{ruby|陣|じん}}'''<ref>詳しくは、1614年に起こった戦を「大坂冬の陣」、1615年豊臣氏がほろびた戦を「大坂夏の陣」といいます。また、この当時、大阪は「大'''坂'''」と書いていたので「大坂の陣」と書く場合もあります。</ref>と言います。
:大阪城は、徳川氏のものとなり、当時日本一商業が栄えていた大阪は幕府が直接おさめるようになります。
:戦国時代以来の、大名同士の争いはこれが最後となりました。
=== 武士の政治の安定 ===
==== 江戸幕府の仕組み ====
[[File:Iemitu Face.svg|thumb|180px|徳川家光]]
:1623年将軍となった第3代将軍'''徳川{{ruby|家光|いえみつ}}'''は、大名は、妻子(正妻と後継となる子)を江戸に置き、領土との間を1年おきに行き来すること('''{{ruby|参勤交代|さんきんこうたい}}''')<span id="参勤交代"/>を定めました。また、将軍の命令で、徳川氏が有する城や河川の改修などを務めなければならないこともありました。こうして、徳川将軍は大名が、戦国時代のように勝手に争うことができないようにし、安定した世の中を作り上げました。
:徳川幕府には、重要なことを決める大老、老中、若年寄の他、大名の監視を行う'''{{ruby|大目付|おおめつけ}}'''、寺社を管理する'''{{ruby|寺社奉行|じしゃぶぎょう}}'''、幕府の出納を管理する'''{{ruby|勘定奉行|かんじょうぶぎょう}}'''、江戸の行政や裁判を行う'''{{ruby|江戸町奉行|えどまちぶぎょう}}'''などの役職があり、大名の他、将軍の直接の家臣である'''旗本'''がその任務につきました。
<span id="江戸幕府"/><div style="font-size:100%;margin:0 2em 0 4em">
<pre style="line-height:1.5em;">
【江戸幕府の仕組み 主な役職のみ】
将軍 ━┳━ 大老(たいろう) : 将軍を補佐する最高職。臨時に置かれ、譜代大名の中でも石高の高い家の者のみなれた。
┃
┣━ 老中(ろうじゅう) : 複数による合議制で、大名の統制他、全国的なことがらについてとりあつかう。
┃ ┣━ 江戸町奉行 (えどまちぶぎょう) : 江戸の行政、治安、司法を担当する。
┃ ┣━ 勘定奉行 (かんじょうぶぎょう) : 幕府の会計な、天領の収税どを担当する。
┃ ┣━ 遠国奉行 (おんごくぶぎょう) : 大阪、京都、長崎など幕府の直轄地の行政、治安、司法を担当する。
┃ ┗━ 大目付 (おおめつけ) : 大名の動向を監視する。
┃
┣━ 側用人(そばようにん)・御側御用取次(おそばごようとりつぎ)
┃ : 将軍の側近で、将軍と老中の間をとりついだ。将軍の命令を直接受けるので、老中よりも権力があった場合もある。
┃
┣━ 若年寄(わかどしより) : 複数による合議制で、旗本・御家人の統制他、将軍家まわりのことがらについてとりあつかう。
┃ ┗━ 目付 (めつけ) : 旗本・御家人の動向を監視する。
┃
┣━ 寺社奉行 (じしゃぶぎょう) : 全国の寺と神社を統括する。
┣━ 京都所司代 (きょうとしょしだい) : 京都にいて、皇室や公家との取次と監視を行う。
┗━ 大坂城代 (おおさかじょうだい) : 将軍に代わって大阪城を預かる。
</pre>
</div>
==== 武士と庶民 ====
:秀吉の刀狩によって、武士の身分(士分)と民衆が明確に分けられましたが、江戸幕府はそれを引き継ぎ、「'''士農工商'''」という身分制を確立しました。「'''士'''」は武士、「'''農'''」は農民、「'''工'''」は大工や{{ruby|鍛冶屋|かじや}}などの職人、「'''商'''」は商人のことです。なお、以前は、身分がこの順にあったと言われていましたが、現在では「士分」とその他は身分差があるが、「農工商」の庶民には身分の差がなかったというのが定説となっています。すなわち、庶民は武士にはなれないけれども、「農工商」の間では比較的自由にその職業につけたということです。ただし、農民になるのは、農地を持たないといけませんが、それはむずかしかったので、職人や商人が農民になることはまれだったと考えられます。
:武士は、苗字を公式に名のることと刀を所持し外でさすこと(あわせて、'''{{ruby|苗字帯刀|みょうじたいとう}}'''といいます)、庶民が武士に対して失礼({{ruby|無礼|ぶれい}})な行為があったときには「{{ruby|無礼討|ぶれいう}}ち」と言ってその場で斬り殺しても良いこと({{ruby|切捨御免|きりすてごめん}}<ref>実際、そのようなことをすると、庶民の反発をまねくので、本当に「無礼」な行為があったかを証人などを呼んで裁判し、簡単に認められるものではありませんでした。</ref>)などの特権がありました。
:;農村の生活
::農村は、検地によって収穫高が明らかにされていたので、それにもとづいた{{ruby|年貢|ねんぐ}}をおさめました。年貢の割合は、収穫の4割から5割で、これを「{{ruby|四公六民|しこうろくみん}}・{{ruby|五公五民|ごこうごみん}}」と言って、各農民ではなく村を単位としておさめていました<ref>これを、{{ruby|村請|むらうけ}}といいます。</ref>。農民は、自分の土地を持った{{ruby|本百姓|ほんびゃくしょう}}と、自分の土地を持たず本百姓の農地をたがやすなどして生活する{{ruby|水呑百姓|みずのみびゃくしょう}}がありました。
::農地は、1643年{{ruby|田畑永代売買禁止令|でんぱたえいたいばいばいきんしれい}}が出され、売買が禁止され代々相続されるものとなりました。また、同年{{ruby|田畑勝手作禁止令|でんぱたかってづくりきんしれい}}が出され、米以外の作物は勝手に作ることはできませんでした。
:;町人の生活
::職人や商人は主にそこをおさめる大名やその代官の屋敷の周辺に町([[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#楽市楽座|{{ruby|城下町|じょうかまち}}]])を作り住むようになっていました。商業は、市が開かれるたびに取引を行うのではなく、定住して「店」であきなうようになりました。
::職人は、{{ruby|親方|おやかた}}に{{ruby|弟子|でし}}入りし、仕事を手伝いながら、仕事を覚え、やがて一人前になり独立するという{{ruby|徒弟制|とていせい}}になっていました。商人は、まず、{{ruby|丁稚|でっち}}として店に入り、やがて、{{ruby|手代|てだい}}・{{ruby|番頭|ばんとう}}となって、{{ruby|暖簾分|のれんわ}}けで独立するというものでした。職人も商人も、弟子や丁稚のころは、給金とかもらえず住み込みで働く{{ruby|年季奉公|ねんきぼうこう}}という形が一般的でした。
:職業の選択はこのように自由にできるものではなく、また、人の移動は厳しく制限され、各地に関所がもうけられ、ここを通るのに通行手形が必要でした。
:江戸時代になって、戦国時代や安土桃山時代に比べて、庶民の生活は安定したのですが、一方で移動の自由や職業選択の自由が失われたものとなったとも言えます。
==== キリスト教の禁止と鎖国 ====
:[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#バテレン追放令|キリスト教は秀吉の時代に禁じられました]]が、江戸幕府においてもひきつづき禁じられていました。同様に、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#南蛮貿易|ポルトガルやスペインとの南蛮貿易]]は続けられており、そこで宣教師との行き来がありました。
:1600年{{ruby|豊後|ぶんご}}(現在の大分県)に'''オランダ'''の船リーフデ号が流れつきます。ポルトガル人とスペイン人以外の初めてのヨーロッパの人たちです。家康は、流れついた人の中からオランダ人の'''ヤン・ヨーステン'''とイギリス人の'''ウィリアム・アダムス'''<ref>後に、{{ruby|三浦按針|みうらあんじん}}と名を改めます。</ref>をめしだして、外国のことを聞くようになりました。これ以降、ポルトガル人たちに加えてオランダ人などが日本に来るようになりました。オランダ人たちはポルトガル人などに比べ、キリスト教の布教には熱心ではなく、また、そのことが幕府にも伝わりました。ポルトガル人やスペイン人を南蛮人と呼ぶのに対して、オランダ人やイギリス人は{{ruby|紅毛人|こうもうじん}}とよばれました。
:家康は、秀吉同様海外貿易に熱心で、東南アジアの国々<ref>{{ruby|安南|あんなん}}(現在のベトナム)、スペイン領であったフィリピンのマニラ、カンボジア、シャム(現在のタイ)、パタニ(マレー半島中部の国、現在のマレーシア)などに派遣しました。</ref>と交流を持って、{{ruby|朱印状|しゅいんじょう}}と呼ばれる貿易の許可証<ref>日本人には日本からの出国を外国人には日本への入国を認めるもので、もともとは秀吉が始めました。</ref>を発行して貿易を認めました。朱印状を持った船を{{ruby|朱印船|しゅいんせん}}と言い、この貿易を'''朱印船貿易'''と呼びます<ref>中国(明王朝)は、日本の入国を禁止していましたし、朝鮮は、対馬の大名{{ruby|宗|そう}}氏が代表していたので、朱印船貿易の相手ではありませんでした。</ref>。
:1612年南蛮貿易をめぐって幕府の役人に{{ruby|汚職|おしょく}}事件がおこり<span id="岡本大八事件"/>、この関係者がキリシタンであったことから、幕府は大名と幕臣、江戸、京都など幕府の直轄地でのキリスト教の信仰を禁じました。1614年にはこれを全国に広げ、各地の教会を破壊し、宣教師や主だったキリスト教徒を国外に追放しました。
:その後も幕府は、中国船を含めた外国船の入港を制限したり、宣教師や信者を見せしめに処刑したりしてキリスト教の禁止を徹底しようとしましたが、宣教師が密かに来日して布教する例があとをたちませんでした。
:そんな中、1637年、現在の長崎県にある{{Ruby|島原|しまばら}}半島(現在の長崎県)から海をへだてた{{Ruby|天草|あまくさ}}諸島(現在の熊本県)にかけての一帯で、農民3万人あまりによる、大きな[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#一揆|{{Ruby|一揆|いっき}}]]が起きました。原因は、領主が領民に重い{{ruby|年貢|ねんぐ}}を課したこととキリシタンへの{{Ruby|弾圧|だんあつ}}でした。一揆の中心は、当時16才の{{Ruby|天草四郎|あまくさしろう}}という少年でした。幕府は12万人ほどの大軍を送り、4か月ほどかかってこれをしずめました。これを、「'''島原の乱'''」または「'''島原天草一揆'''」と言います。島原の乱は、戦死・処刑された農民などが2万人から3万人になり、幕府側も死傷者が8000人以上という江戸時代最大の百姓一揆で、これを最後に、これから、明治維新の戊辰戦争まで230年間、日本国内での争いことで100人をこえる死者が出ることがない、世界的にも珍しい平和な時代となりました。
[[ファイル:Plattegrond van Deshima.jpg|thumb|200px|出島を空から見た図]]
:これが決め手となって、1639年、幕府は、ポルトガルの来航を禁じ、貿易の相手を、中国以外は'''オランダ'''だけに限って、さらに、長崎の'''{{Ruby|出島|でじま}}'''だけでこれを認めることになりました。幕府は、出島に入ることのできる日本人は、幕府の役人や、許可を得た日本人のみに制限していました。これを、'''{{ruby|鎖国|さこく}}'''と言います。
:江戸幕府は長崎のオランダ{{Ruby|商館長|しょうかんちょう}}に、外国のようすを幕府に報告させるための報告書の提出を義務づけました。
:このように日本でのヨーロッパ人と日本人とのかかわりを制限していった結果、日本では、江戸幕府が貿易の利益と西洋についての情報を{{Ruby|独占|どくせん}}しました<ref>朱印状は、一部の大名にも発行されたため、その大名は直接海外との貿易ができたのですが、1631年にさらに、幕府が発行する「{{Ruby|奉書|ほうしょ}}」が必要となり、大名が海外と貿易をすることはできなくなっていました。</ref>。
{{-}}
[[Image:Jesus on cross to step on.jpg|thumb|180px|踏み絵]]
;{{ruby|宗門人別改帳|しゅうもんにんべつあらためちょう}}<span id="寺請制度"/>
:島原の乱のあと、キリスト教への取りしまりは、いっそう{{Ruby|厳|きび}}しくなりました。キリスト教をかくれて信じる人をとりしまるため、定期的に調査をして人々にイエス・キリストなどがえがかれた銅板の{{ruby|踏|ふ}}み絵を踏ませ、踏めなかった者はキリスト教徒であるとして{{Ruby|処罰|しょばつ}}しました。これを、{{ruby|宗門改|しゅうもんあらため}}といいます。
:また、寺にキリスト教徒でないことの証明書({{ruby|寺請証文|てらうけしょうもん}})を出させる代わりに、お葬式や{{ruby|供養|くよう}}をその寺だけでする{{ruby|寺請|てらうけ}}制度<ref>{{ruby|檀家|だんか}}制度とも言います。</ref>もできました。
:寺請の結果は一人一人、「{{ruby|宗門人別改帳|しゅうもんにんべつあらためちょう}}」という帳簿に残され、奉公や結婚で土地を離れる時には、寺から寺請証文を出してもらって、うつり住む土地で新たに帳簿に書き込むという習慣ができて、これが、現在の{{ruby|戸籍|こせき}}や住民基本台帳と同じ役割をはたすようになりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="オランダ"/>オランダ
[[File:LocationNetherlands.png|thumb|250px|オランダの位置]]<small>
:オランダは、ヨーロッパ中西部、ライン川というスイス、フランス、ドイツを流れヨーロッパの水運で最も重要な川の河口にある国です。「オランダ」はその中の州の名前で、正式には'''ネーデルラント'''と言います<ref>ただ、日本人がネーデルラントを「オランダ」と呼ぶことは、オランダ人も認めています。英語で「日本」を「Japan」と呼んでいるようなものです。</ref>。
:このころ、オランダはスペインの王室の支配下にあって、独立を争って戦争をしていました(オランダ独立戦争 1568年〜1648年)。オランダは、ゲルマン系オランダ人の国で、言葉や習俗はドイツやイギリスに近く、一方、スペインはイタリア・フランス・ポルトガルといったラテン系の国です。また、当時のヨーロッパでは、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#宗教改革|カトリックとプロテスタントが対立]]していて、スペインはカトリックを支持していたのに対して、オランダ人の多くはプロテスタントでした。
:独立戦争は続いていましたが、1600年頃までにスペインからほとんど独立していたオランダは、当時、ヨーロッパで最高の造船技術<ref>この時代、オランダの造船技術が高かった理由の一つに、オランダの風車を利用して製材が盛んであったことが挙げられます。</ref>をいかして海洋貿易に進出します。
:1602年オランダは、アジア貿易のために、「'''東インド会社'''<ref>世界最初の、{{ruby|株式|かぶしき}}会社と言われています。なお、1600年イギリスにも同名の会社がつくられています。</ref>」という会社を作って、それまで、この地域の貿易の中心であったポルトガルの地位をうばいました。
:オランダは、幕府に近づいて、日本の海外に対する貿易の独占的な地位を得ました。オランダとの貿易品には以下のものがあります。
:*オランダからの輸入品のほとんどは、中国産の{{Ruby|生糸|きいと}}・{{Ruby|砂糖|さとう}}・毛織物でした。ときどき、ガラスや望遠鏡や時計などの、めずらしいものも輸入されました。
:*日本からの輸出品としては、金・銀・銅などの金属や{{Ruby|陶磁器|とうじき}}などでした。陶磁器が割れないようにつめた紙くずに浮世絵があり、それがヨーロッパに浮世絵が伝わるきっかけになりました。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="日中貿易"/>中国との貿易<small>
:[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#南蛮貿易|南蛮貿易]]でもオランダ船による貿易であっても、日本が最も必要としたのは、生糸・絹織物<ref>この時代の、日本の絹は品質が悪く良いものは中国からの輸入品ばかりでした。</ref>、陶磁器といった中国で生産されるものと、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#永楽通宝|永楽通宝]]のような貨幣でした。では、中国商人が直接取引をすればよいではないかという話になりそうですが、それは、簡単な話ではありませんでした。
:明の王朝は14世紀から[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#倭寇|{{ruby|倭寇|わこう}}]]<ref>倭寇は、14世紀に[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#勘合貿易|足利義満が勘合貿易を始めた]]ことで一時収まりますが、その後、勘合貿易をまかされていた大内氏がほろびた1550年代以降、海賊がまた増え、これも倭寇と呼ばれました。ただし、16世紀になってからの倭寇は、ほとんどが中国人でした。</ref>になやまされて、海外貿易をしばしば禁止しました。
:1644年、明は国内の反乱によってほろび、その反乱軍も中国北部の国'''{{ruby|清|しん}}'''<span id="清"/>によってほろぼされます。
:清の建国に反抗して、明の家臣などが台湾にのこり{{ruby|抵抗|ていこう}}していました。清の王朝は、これを取り締まるため、清への[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#朝貢貿易|朝貢貿易]]以外は、明と同じように海外貿易を禁止しました。
:日本としては、中国の産品を手に入れにくくなったのですが、以下のとおり対応し輸入にたよらなくてもよくなりました。
:#生糸・絹織物については、江戸幕府や各藩が、改良に努め、江戸時代の中期には輸入を制限できるほど品質が上がりました。明治になると日本の代表的な輸出品になります。
:#陶磁器については、朝鮮出兵で多くの朝鮮人陶工を日本に連行し、{{ruby|有田焼|ありたやき}}・{{ruby|薩摩焼|さつまやき}}など、薄く固い陶磁器の技術を確立しました。
:#永楽通宝など貨幣については、1636年幕府は{{ruby|銭座|ぜにざ}}を開いて、'''[[小学校社会/6学年/歴史編/江戸時代の文化-江戸時代Ⅱ#寛永通宝|{{ruby|寛永通宝|かんえいつうほう}}]]'''を発行し国内の通貨だけで取引ができるようになりました。
:一方で、日本からの輸出品は、金や銀、人(奴隷、戦国時代敵国の領民をさらって売った)、海産物加工品({{ruby|干|ほ}}し{{ruby|鮑|あわび}}、干しナマコなど)でした。秀吉の天下統一以降は、奴隷の輸出はほとんどなくなり、金や銀ばかりになったのですが、日本国内でも商業が盛んになるなどして、金や銀を国外に持ち出すと貨幣が足りなくなり困るようになりました。
:こうして、江戸時代になると、中国との貿易の必要が少なくなって、江戸幕府は明が清になったのちも、朝貢貿易はやりませんでした。中国との取引は、金銀銅と言った貴金属を支払いなどに使わないようになり、長崎における、その他の取引も次第に重要なものではなくなっていきました。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="鎖国"/>鎖国までの道のり<small>
:秀吉も家康もキリスト教の布教を禁止し、ポルトガル人やスペイン人の宣教師は国外へ追放しましたが、南蛮貿易は、大きな利益をもたらしていたため、そのまま継続し、それにかかわる宣教師以外のポルトガル人などの往来は自由になされていました。そのため、幕府などに隠れて布教は進み、キリシタンの数は増えていきました。
:1609年から1612年にかけて起こったポルトガルとの貿易に関するキリシタン大名{{ruby|有馬晴信|ありまはるのぶ}}をめぐる事件からは、家康側近{{ruby|本多正純|ほんだまさずみ}}の家臣でキリシタンである{{ruby|岡本大八|おかもとだいはち}}の高額な{{ruby|賄賂|わいろ}}の受け取りや、長崎奉行{{ruby|長谷川藤広|はせがわふじひろ}}暗殺陰謀など、数々の{{ruby|不祥事|ふしょうじ}}が発覚し、ヤン・ヨーステンなどの進言もあって、家康はポルトガルとの付き合いに不信感を持つようになりました。
:1616年幕府は、明船以外の外国船との貿易を{{Ruby|長崎|ながさき}}と{{Ruby|平戸|ひらど}}のみに制限しました。
:それでも、1620年商人といつわってスペイン人宣教師が日本に入国しようとした事件があり、それをきっかけに1622年長崎でとらわれていた宣教師とキリスト教徒55人を処刑するなど、幕府はキリスト教対策に追われ、1624年、まず、スペイン人の来航を禁止しました<ref>ポルトガルとの通商が認められたのは、ポルトガルはマカオを有しており、中国との間の取引が、オランダだけでは不安だったからです。</ref>。
:幕府は、その後も規制を強め、1631年朱印状以外に老中の奉書を必要とするようにし、大名や日本人商人の朱印船をなくし、1635年には外国船の入港を長崎のみに限定、東南アジア方面への日本人が国外に出ることと[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#日本人町|東南アジアに住んでいた日本人]]の帰国を禁止しました。
:また、南蛮貿易の最大の目的である中国は、1619年以降{{ruby|女真|じょしん}}族({{ruby|満州|まんしゅう}}族、のちの[[#清|清王朝]])の南下と国内の反乱で国内が混乱し、貿易品も少なくなっていました。
:島原の乱後1639年の鎖国令によってポルトガル船の来航が禁止され、1641年オランダ商館を平戸から出島に移し、鎖国は完成しました。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="島原の乱"/>島原の乱<small>
:この地域は、海をへだてて隣接しており、島原地方は{{ruby|有馬晴信|ありまはるのぶ}}、天草地方は{{ruby|小西行長|こにしゆきなが}}と、もともとともにキリシタン大名がおさめていたところでした。天草地方は、1600年、小西行長が関ヶ原の戦いで西軍について、やぶれて処刑されたので、唐津(現在に福岡県唐津市)をおさめる{{ruby|寺沢|てらさわ}}氏の領地になっていました。一方、島原地方は、有馬晴信は、[[#岡本大八事件|1612年の幕臣汚職事件]]で処罰されたため、子孫は[[#国替|国替]]となり、かわって、{{ruby|松倉|まつくら}}氏がおさめていました。
:島原では、松倉氏が、あらたに城を作るなどのために農民から非常に重い年貢をとりたてていました。また、キリスト教徒への迫害もはげしく、{{ruby|棄教|ききょう}}<ref>キリスト教を信仰することをやめること。</ref>をするように、きびしい{{ruby|拷問|ごうもん}}をしたり、棄教しない者は処刑したりしていました。天草でも、寺沢氏が同様に農民に重い年貢をかけ、キリスト教とを迫害していました。
:島原には有馬晴信に、天草には小西行長につかえていた元武士の庶民が数多く残っていて、この人たちが集まって反乱を起こすことをくわだてました。総大将には、キリシタンの間で人気のあった当時16歳の{{Ruby|天草四郎|あまくさしろう}}(小西行長の家臣の子)をむかえました。キリシタンを総大将にしたのは、ポルトガルが応援することを期待したのではないかと言われています。
:島原と天草で、ほぼ同時に兵をあげ、天草でもいくつかの城を落としましたが、ばらばらに戦うことは不利ということで、天草の一揆の人々は、島原にうつり、有馬氏の城であった原城にこもりました。この数は27000人から37000人にのぼると言われています。
:この一揆は、領主によるきびしい政治が主な原因で、一揆の農民はキリスト教徒ばかりではなかったのですが、幕府は禁止するキリスト教徒の反乱として、九州各地の大名に兵を出すように命じこれを鎮圧しようとしました。最初は、役職の軽い大名に指揮を取らせようとしましたが、九州の大名は大大名が多くうまくいかず、幕府側は多くの死傷者をだします。幕府かこれに替えて、将軍家光の側近であった老中{{ruby|松平信綱|まつだいらのぶつな}}を総大将に派遣し、12万人の軍勢によって、原城にこもった人々は皆殺しにされ、一揆は鎮圧されました。
</small>
|}</div>
==== 江戸時代の北海道と沖縄 ====
:現在の北海道と沖縄県は戦国時代まで、朝廷の支配に服することもなく、今まで学習してきた日本の歴史と違う歴史を歩んできました。戦国時代後期になって、日本本土でもこの2つの地域との関係がもたれるようになります。江戸時代になると、北海道には、 {{Ruby|松前藩|まつまえはん}}がおかれ、沖縄は、{{ruby|薩摩|さつま}}藩を通じて本土と深く関係するようになりました。
; {{Ruby|北海道|ほっかいどう}}<span id="北海道"/>
:北海道は、日本人(和人)には、古くからそこにあることは知られていましたが、稲作かできる北の限界より北にあって、税をはじめとした、日本の生活をおくるのはむずかしい土地でした。そこには、今はアイヌ民族と呼んでいる人々が住んでいました。日本本土ではこの人々を、「'''えみし'''<ref>平安時代ころまでは東北地方で、朝廷に反抗する人々の意味で、アイヌ民族だけをさしたものではありませんでした。この当時、この人々を征服するために作られた役職が「[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#将軍|征夷大将軍]]」です。</ref>」または「'''えぞ'''」(漢字はどちらも「蝦夷」という字を当てます)と呼んで、北海道のことは「{{ruby|蝦夷地|えぞち}}」と呼んでいました。
:平安時代の末期から、北海道の最南端に和人が住みはじめました。この人たちは主にアイヌの人たちと物々交換(交易)をしていました。アイヌからは、乾燥したサケ・ニシン・クマやキツネの皮・矢羽の原料とする鷹の羽・海草・木材を、和人はそれに替えて鉄製品・漆器・米・木綿などと交換していました。
:この、居住和人を取りまとめていた豪族の中から、{{ruby|蠣崎|かきざき}}氏が有力なものとなり、秀吉に領主としての地位を認められ、1599年居城の{{ruby|松前|まつまえ}}城から{{ruby|松前|まつまえ}}氏とあらため、家康によってアイヌとの交易は松前氏が独占することが認められました。松前氏はのちに大名としてあつかわれますが、大名で唯一、米の収穫高(石高)ではなく商品の取引量で大名の格が決まる藩でした。
:17世紀に入ると中国の北部から{{ruby|樺太|からふと}}島などをとおって中国の物品が入ってきて、アイヌの人々が和人に伝えましたが、交易の条件などで対立することもあり、17世紀の中ごろの'''シャクシャイン'''の反乱のように和人とアイヌの人々の間で争いが生ずることもありました。
;沖縄 - {{Ruby|琉球|りゅうきゅう}}王国<span id="琉球王国"/>
:現在の沖縄県にあたる地域は、歴史上ずっと日本民族が居住していたところですが、朝廷や幕府などの支配にはならない地域でした。
:14世紀頃から沖縄本島に小さな国が分立し明に朝貢していましたが、15世紀に統一され、{{Ruby|琉球|りゅうきゅう}}王国が誕生しました。
:江戸時代の初めごろ、{{ruby|薩摩|さつま}}の{{ruby|島津|しまづ}}氏が攻め入って、服従させました。ただし、国の形は琉球王国のままで、毎年、薩摩藩へ{{ruby|貢納|こうのう}}を強制しました<ref>薩摩藩は、琉球王国の石高を約9万石と見積もり、年に約1万石の貢納を要求しました。琉球王国の全ての生産の1/9ということです。また、沖縄は長い川や広い平野が少なく大規模な稲作ができなかったため、薩摩藩は、代わりにサトウキビを栽培させ、砂糖をおさめさせていました。</ref>。薩摩藩が琉球王国のままとしたのは、中国との[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#朝貢貿易|朝貢貿易]]を続けさせるためした。琉球王国は、明に続いて清にも朝貢し、中国の産物を手に入れ、それを薩摩藩が日本国内に売って利益を得ていました。
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代|戦乱の世の中と日本の統一-戦国時代・安土桃山時代]]
|[[小学校社会/6学年/歴史編/江戸時代の文化-江戸時代Ⅱ|江戸時代の文化-江戸時代Ⅱ]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#09]]
jjkuvhsffaucwbul5w5bajg2a9x4dru
小学校社会/6学年/歴史編/江戸時代の文化-江戸時代Ⅱ
0
33297
205972
204250
2022-07-29T06:20:53Z
Mtodo
450
/* 江戸時代の学問 */
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--江戸時代中期−主題は文化史(元禄文化、化政文化など)--><!--(ク) 歌舞伎や浮世絵,国学や蘭学を手掛かりに,町人の文化が栄え新しい学問がおこったことを理解すること。-->
★時代区分:江戸時代中期</br>
★取り扱う年代:1638年(島原の乱終結)から1853年(ペリー来航)前まで
;江戸時代の文化
:江戸幕府の様々な政策によって世の中は安定し、人々は安心して経済活動を行えるようになって、様々な文化が武士だけでなく町人にも栄えるようになりました。
:「'''{{ruby|元禄|げんろく}}'''」は、江戸幕府ができてだいたい100年くらいの元号ですが、このころ、最初の町人文化の開花が見られました。元禄の頃の文化を「'''元禄文化'''」と言います。仮名草子・浮世草子といった出版物が市中に出回るようになり、'''人形浄瑠璃'''や'''歌舞伎'''が人々に人気を得て、'''井原西鶴'''や'''近松門左衛門'''といった劇作家がでました。
:連歌から発達した'''俳句'''(俳諧)が流行し、'''松尾芭蕉'''は、それを芸術のレベルまで高めたと言われています。
:絵画も大衆化し、このころ'''菱川師宣'''が'''浮世絵'''を創始しました。浮世絵は、版画の一種で何枚も同じ絵をすることができるので、庶民でもこれを買い求めることができました。ただし、浮世絵については、元禄から、さらに100年ほど後の「文化」「文政」といった元号の時期に最も盛んになります('''化政文化''')。'''喜多川歌麿'''や'''東洲斎写楽'''は歌舞伎役者の肖像画を、'''歌川広重'''は『東海道五十三次絵』などの風景画を、'''葛飾北斎'''は『冨嶽三十六景』など風景画のほか様々な構図の絵をあらわし、国内のみならず、オランダ貿易で持ち出されたものがフランスなどの絵画にも影響を与えました。
;江戸時代の学問
:戦国時代までの学問は主に寺院で、僧侶などにより、仏教や中国の古典が研究されていましたが、江戸時代になると、様々な階層の人々の研究が見られるようになります。
:幕府が公認していた学問は'''儒学'''のうち'''朱子学'''と言われるもので、幕府のほか各藩で教えられました。その他、中国の古典が研究されました。
:一方で、日本の古典についても研究が進み、'''国学'''が成立しました。国学の成立に大きく貢献したのが'''本居宣長'''です。国学は、のちの「'''尊王攘夷'''」の考えに影響します。
:鎖国をしているので、ヨーロッパの文化には直接触れることはできなかったのですが、オランダ語の書物を出島をとおして、手に入れることができ、これを訳して読むことで、当時急速に進みつつあったヨーロッパの科学に触れることができました。このような学問を'''蘭学'''と言います。'''杉田玄白'''らはオランダ語の医学書を翻訳して『'''解体新書'''』をあらわしました。
:'''伊能忠敬'''は、天文学や測量術を学んだ他、独自に測量方法を工夫し、日本全国を訪れ、正確な日本地図を作りました。
|}
=== 島原の乱からペリー来航まで ===
:島原の乱が終わると、日本は安定し大きな戦争などもなく、人々の生活にも変化の少ない時代が約200年続きます。
:この時代も幕府などの政治は色々と動いていて、経済も変化しているのですが、小学生の学習の範囲とはなっておらず、この時代の文化や学問の動きが学習の対象となっています。ただ、それらの文化や学問の時代背景として理解しておいた方が、理解の助けになるので、この節で簡単に述べます。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|
;この時代の歴代将軍と政治などの概要
:第4代将軍{{ruby|家綱|いえつな}}(将軍在位1651年-1680年)
:*父家光の死去に伴い、11歳で将軍に即位しました。将軍が幼くても、老中などの幕臣がしっかり支えて混乱がないなど幕府の組織がしっかりしていることをしめしました。
:第5代将軍'''{{ruby|綱吉|つなよし}}'''<span id="綱吉"/>(将軍在位1680年-1709年)
:*{{ruby|柳沢吉保|やなぎさわよしやす}}を{{ruby|側用人|そばようにん}}として用いました。
:*動物を大切にすることをさだめた「{{ruby|生類憐|しょうるいあわれ}}れみの令」という法律を出して、特に犬を大事にしたので「{{ruby|犬公方|いぬくぼう}}」として有名ですが、これは、武士のあらあらしい行動は平和な世の中にふさわしくないため、武力を日常に出すことはひかえて、学問などをおさめることにつとめるよう、さとしたものとも言われています。このような様子を「<u>『{{ruby|武断|ぶだん}}政治』から『{{ruby|文治|ぶんち}}政治』へ</u>」という言い方をします。
:*上方を中心に商業が発展した町人文化「'''{{ruby|元禄|げんろく}}文化'''」が花開きました。
:第6代将軍{{ruby|家宣|いえのぶ}}(将軍在位1709年-1712年)
:*学者の{{ruby|新井白石|あらいはくせき}}を用いて、綱吉の時代の経済が拡大したことで起こったインフレーションをしずめる政策('''{{ruby|正徳|しょうとく}}の{{ruby|治|ち}}''')を行いました。
:第7代将軍{{ruby|家継|いえつぐ}}(将軍在位1713年-1716年)
:*家宣が急死し4歳で即位したため、新井白石の政治が続きました。
:第8代将軍'''{{ruby|吉宗|よしむね}}'''<span id="吉宗"/>(将軍在位1716年-1745年 大御所:-1751年)
:*世の中が安定し、経済が発展したため、幕府の支出が増える一方で、収入源である米の価格が下がるという状況になり、幕府の財政は厳しいものとなっていました。吉宗は、倹約と増税・新田開発、米価をあげることにより幕府の財政を回復させ、また、優秀な人材を登用できるようにし、{{ruby|大岡忠相|おおおかただすけ}}などを用いました。これを'''{{ruby|享保|きょうほう}}の{{ruby|改革|かいかく}}'''と言います。
:第9代将軍{{ruby|家重|いえしげ}}(将軍在位1745年-1760年)
:*{{ruby|田沼意次|たぬまおきつぐ}}を用いて、商業を振興したり、印旛沼の開発などをして、景気を良くすることにつとめました。田沼意次が活躍した時代を「'''{{ruby|田沼|たぬま}}時代'''」といいます。
:第10代将軍{{ruby|家治|いえはる}}(将軍在位1760年-1786年)
:*田沼意次の政治が続きました。商人を利用して経済を活発にしたのですが、役人の汚職が噂されました。
:第11代将軍{{ruby|家斉|いえなり}}(将軍在位1787年-1837年 大御所:-1841年)
:*{{ruby|飢饉|ききん}}やそれにともなう百姓一揆・打ちこわし<ref>江戸や大阪といった都市の民衆が、政治などに不満を持った大きな商人などの店を集団でこわすことを言います。都市における百姓一揆みたいなものです。</ref>が増え、また、幕府の財政が再び悪化したため、田沼意次はやめさせられました。それに代わって{{ruby|松平定信|まつだいらさだのぶ}}が老中{{ruby|筆頭|ひっとう}}に任命され、倹約などをすすめることで、幕府の財政の立て直しをはかりました。これを、これを'''{{ruby|寛政|かんせい}}の{{ruby|改革|かいかく}}'''と言います。
:*経済活動が、上方中心から江戸へと移ってきて、江戸の町民文化が盛んになりました。これを「'''{{ruby|化政|かせい}}文化'''」といいます。
:第12代将軍{{ruby|家慶|いえよし}}(将軍在位1837年-1853年)
:*幕府財政がまた悪化してきたため、大老となった{{ruby|水野忠邦|みずのただくに}}が改革政策である'''{{ruby|天保|てんぽう}}の{{ruby|改革|かいかく}}'''を行いました。
|}</div>
=== 江戸時代の文化 ===
;元禄文化
[[File:ChikamatsuM.jpg|180px|thumb|近松門左衛門]]
:「'''{{ruby|元禄|げんろく}}'''」は、江戸幕府ができてだいたい100年くらいの元号です。このころ、大阪を中心に最初の町人文化の開花が見られました。元禄の頃の文化を「'''元禄文化'''」と言います。仮名草子・浮世草子といった出版物が市中に出回るようになり、'''{{ruby|人形浄瑠璃|にんぎょうじょうるり}}'''や'''歌舞伎'''が庶民に人気を得て、'''{{ruby|井原西鶴|いはらさいかく}}'''や'''[[小学校社会/6学年/歴史編/人物事典#近松門左衛門|{{ruby|近松門左衛門|ちかまつもんざえもん}}]]'''といった小説家・劇作家がでました。
:[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#連歌|連歌]]から発達した'''俳句'''(俳諧)が流行し、'''{{ruby|松尾芭蕉|まつおばしょう}}'''は、それを芸術のレベルまで高めたと言われています。
:絵画も大衆化し、このころ'''{{Ruby|菱川師宣|ひしかわもろのぶ}}'''が'''{{Ruby|浮世絵|うきよえ}}'''を創始しました。浮世絵は、版画の一種で何枚も同じ絵をすることができるので、庶民でもこれを買い求めることができました。
;化政文化
:江戸は幕府が開かれた当時は、全国から武士のみが集まる都市でしたが、元禄から、100年ほど後の「'''{{ruby|文化|ぶんか}}'''」「'''{{ruby|文政|ぶんせい}}'''」といった元号の時期には、武士以外の商人や職人なども増えて、町人文化が見られるようになりました。これを、「文'''化'''」「文'''政'''」から、「'''{{ruby|化政|かせい}}文化'''」といいます。
:'''{{Ruby|喜多川歌麿|きたがわうたまろ}}'''や'''{{Ruby|東洲斎写楽|とうしゅうさいしゃらく}}'''は歌舞伎役者の肖像画を、'''{{Ruby|歌川広重|うたがわひろしげ}}'''は『東海道五十三次絵』などの風景画を、'''{{Ruby|葛飾北斎|かつしかほくさい}}'''は『冨嶽三十六景』など風景画のほか様々な構図の絵をあらわしました。
{| class="wikitable" style="width:100%"
|
<gallery heights="200px" widths="200px">
ファイル:Beauty looking back.jpg|thumb|『見返り美人図』菱川師宣
ファイル:Nihonbashi bridge in Edo.jpg|葛飾北斎『{{ruby|富嶽三十六景|ふがくさんじゅうろっけい}}』 1. {{Ruby|江戸日本橋|えどにほんばし}}
ファイル:Lightnings below the summit.jpg|『富嶽三十六景』 32. {{Ruby|山下白雨|さんかはくう}}
ファイル:Red Fuji southern wind clear morning.jpg|『富嶽三十六景』 33. {{Ruby|凱風快晴|がいふうかいせい}}
File:東海道五十三次之内 川崎 六郷渡舟-Ferry Boat Crossing the Rokugo River MET DP122176.jpg|200px|歌川広重『{{ruby|東海道五十三次|とうかいどうごじゅうさんつぎ}}』
</gallery>
|}
:浮世絵は、国内のみならず、オランダ貿易で持ち出されたもの<ref>もともとは、美術品として持ち出されたものではなく、陶器の輸出に詰め物として使われた屑紙として伝わったものと言われています。</ref>がフランスなどの絵画にも影響を与えました。
{| class="wikitable" style="width:100%"
|
<gallery heights="200px" widths="200px">
画像:Hiroshige Van Gogh 2.JPG|300px|歌川広重の絵(左)と、ゴッホの{{Ruby|模写|もしゃ}}(右)
Van Gogh - Portrait of Pere Tanguy 1887-8.JPG |ゴッホの作品。人物の後ろに、浮世絵がえがかれている。
</gallery>
|}
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="江戸期の商業"/>江戸時代の商業<small>
江戸時代は、それまでの時代と比べて商業が特に発達した時代でした。商業の発達によって、大阪や江戸といった都市が発達し、そこの住民に町人文化が発達しました。商家は過去に見ることのないほど大きくなりました。ここでは、江戸時代に特徴的な商業について紹介します。
*'''{{ruby|米問屋|こめどんや}}・{{ruby|米仲買|こめなかがい}}・{{ruby|札差|ふださし}}'''<span id="米問屋"/>
*:幕藩体制の基本は稲作でした。幕府や各藩は、米で年貢を受けており、農民は年貢分に合わせて、換金しやすい基礎的な商品作物として稲作を行っていました。また、幕府でも各藩でも、家臣への給与は米で支払われていました。
*:[[File:Communications by flags.jpg|thumb|200px|大阪の取引価格を伝えた「旗振り通信」]]
*:幕府や各藩は、年貢を集めると自分の領地で必要な分をのぞいて、江戸や大阪にある{{ruby|蔵屋敷|くらやしき}}と呼ばれる一種の倉庫に運びます。それを{{ruby|米問屋|こめどんや}}と呼ばれる商人に売って、現金を得ていました。米問屋は、米を買い付けるだけではなくて、年貢米を{{ruby|担保|たんぽ}}に大名などにお金の貸し付けもしていました。また、各藩の領地や農村から直接買い付けて、米問屋へ売ったり、米問屋から買って米の小売店に売る{{ruby|米仲買|こめなかがい}}という商人もあらわれました。
*:家臣への給与としての米も米商人に売ることで武士は現金をえました。江戸では旗本や御家人の米を買い取る米商人を{{ruby|札差|ふださし}}といい、米問屋が大名に対してやったのと同じように、旗本や御家人に貸し付けを行いました。
*:米の売買はこのように日本中で大規模に取引されましたが、特に大阪には、{{ruby|堂島|どうじま}}{{ruby|米会所|こめかいしょ}}という取引所ができて、ここでの取引価格が米の値段を決めていました。堂島米会所では、毎日取引がなされ、この結果は、「{{ruby|旗振|はたふ}}り通信」という旗や夜間{{ruby|松明|たいまつ}}を振って、リレーで伝える方法で、全国に伝えられました。大阪から江戸まで、2時間から8時間で伝わったそうです。
*'''{{ruby|両替|りょうがえ}}商'''<span id="両替商"/>
*:江戸時代の日常生活で使われた貨幣は、1636年に発行が開始された'''{{ruby|寛永通宝|かんえいつうほう}}'''<span id="寛永通宝">でした。寛永通宝が安定して発行されるようになったので、[[小学校社会/6学年/歴史編/室町文化の誕生-室町時代#永楽通宝|永楽通宝]]などを使用する必要はなくなりました<ref>ただし、明治になるまで、永楽通宝1000文=金1両として扱われました。</ref>。
*:しかし、大きな取引になると、寛永通宝では枚数が多くなって不便なので、商人の間の取引や職人の給金の支払いには、'''銀'''が使われました。江戸時代の初めは、銀の重さで取引をしていて、幕府が重さを保証した大型の{{ruby|丁銀|ちょうぎん}}や小型の{{ruby|豆板銀|まめいたぎん}}が流通していましたが、江戸幕府の後期に、{{ruby|一朱銀|いっしゅぎん}}・{{ruby|二朱銀|にしゅぎん}}・{{ruby|一分銀|いちぶぎん}}のような貨幣が発行されました。銀貨を{{ruby|鋳造|ちゅうぞう}}していた所を、「{{ruby|銀座|ぎんざ}}」といい、現在の東京都中央区銀座にありました。
*:大名の取引や大聖人の間の取引といった、さらに大きな取引には、金貨がつかわれました。金は{{ruby|小判|こばん}}と呼ばれる貨幣が発行され、小判1枚は1{{ruby|両|りょう}}という単位で流通しました。さらに、これを補助する通貨として4枚で1両とする{{ruby|一分金|いちぶきん}}や、4枚で1分とする{{ruby|一朱金|いっしゅきん}}が発行されました。小判など金貨を{{ruby|鋳造|ちゅうぞう}}していた所を、「{{ruby|金座|きんざ}}」といいます。金座は、現在の東京都中央区にあり、現在、そこには、日本の紙幣を発行する{{ruby|日本銀行|にほんぎんこう}}の本店があります。
*:このように、江戸時代は銭(寛永通宝)、銀、金といった3種類の貨幣が流通していたのですが、各々の流通していた量が一定ではなかったため、お互いの交換する割合は時々で変わりました。この交換({{ruby|両替|りょうがえ}})を行なったのが、'''{{ruby|両替|りょうがえ}}商'''です。
*:この時代には、{{ruby|紙幣|しへい}}(紙のお金)は発行されていませんでしたが、各藩は、借金をしてその証明書を小口にしたものを発行し、それは、お金と同じように取り扱われました。これを、{{ruby|藩札|はんさつ}}と言います。藩札も、両替商で、銭(寛永通宝)などに交換されました。
<gallery heights="100px" widths="150px">
File:Kanei-tsuho-bun.jpg|寛永通宝
File:Eiji-mameitagin.jpg|豆板銀
File:Keicho-koban2.jpg|小判
File:Hansatsu - Momme du Japon, 1850.jpg|藩札
</gallery>
*'''{{ruby|呉服|ごふく}}商'''
*:元禄の少し前、江戸の日本橋のたもとに呉服屋{{ruby|越後屋|えちごや}}を開いた{{ruby|三井高利|みついたかとし}}は、それまで、呉服の{{ruby|反物|たんもの}}は、むかしから取引のある客(得意客)に見本を見せ、値段を交渉し、1反(呉服一着分)を単位に届け、支払いは後日の{{ruby|掛払|かけばら}}い<ref>米がとれ、それを年貢に取り立てることで幕府や各藩は支払いがはじめてできます。ですから、ある程度高額なものについては、支払いがいつでもできるわけではなく、支払うためのお金を準備する期間をもうけるというのが習慣としてありました。</ref>という習慣に対して、{{ruby|現金|げんきん}}{{ruby|掛値|かけね}}無し(現金払いでの定価販売)、必要分だけ反物の切り売り、店に来た客には誰でも売るという売り方<ref>現在では一般的となった売り方です。</ref>にかえて、売りはじめました。手間などが減った分安く売ることがてきたので、大変はやり、越後屋は大きな店となりました。これが、後に{{ruby|三越|みつこし}}('''三'''井・'''越'''後屋)となり、現在の三井グループのルーツとなります。
*'''{{ruby|廻船|かいせん}}{{ruby|問屋|どんや}}'''<span id="廻船問屋"/>
*:[[File:Sailboat on Blue Water LACMA 16.16.11.jpg|thumb|180px|千石船]]
*:当時、大量の物資を運ぶために江戸と上方、さらには瀬戸内海を経由し、日本海を北上し{{ruby|出羽|でわ}}(現在の山形県)までをつなぐ、定期的な船の行き来がありました。このような船をつかって、荷物を運んだ商人を{{ruby|廻船|かいせん}}{{ruby|問屋|どんや}}と言います。
*:船は、{{ruby|千石船|せんごくぶね}}と呼ばれる大型の船が用いられました。千石船は、大型の{{ruby|帆|ほ}}が一つだけで、操作が難しく、また、甲板がなかったので、しばしば、{{ruby|難破|なんぱ}}しました。
</small>
|}</div>
=== 江戸時代の学問 ===
:戦国時代までの学問は主に寺院で、僧侶などにより、仏教や中国の古典が研究されていましたが、江戸時代になると、様々な階層の人々の研究が見られるようになります。
;{{ruby|儒学|じゅがく}}
:幕府が公認していた学問は'''儒学'''のうち'''{{ruby|朱子学|しゅしがく}}'''と言われるものでした。家康は、朱子学の学者である{{ruby|林羅山|はやしらざん}}を重く用い、幕臣に朱子学を学ばせました。[[#綱吉|第5代将軍綱吉]]は、世の中が平和になったので、それまで武士は、何かと武力で解決しようとしていた(武断政治)のを、何が正しいかを議論することや法令によって解決できるよう(文治政治)、武士に儒学を学ぶよう命じました。林羅山の子孫は、代々幕府で学問の責任者となります。羅山のころは、私的な塾で教えられていたのですが、その塾をもとに、後に幕府は{{ruby|昌平坂|しょうへいざか}}{{ruby|学問所|がくもんじょ}}をつくります。
:朱子学は、各藩でも{{ruby|藩校|はんこう}}がつくられ、そこで教えられました。
;国学<span id="国学">
:[[File:本居宣長02.jpg|thumb|180px|本居宣長]]
:この時代、日本の古典についても研究が進み、'''{{ruby|国学|こくがく}}'''が成立しました。国学の成立に大きく貢献したのが'''[[小学校社会/6学年/歴史編/人物事典#本居宣長|{{Ruby|本居宣長|もとおりのりなが}}]]'''です。国学は、のちの「'''{{ruby|尊王攘夷|そんのうじょうい}}'''」の考えなどに影響します。
{{-}}
;蘭学<span id="蘭学">
:鎖国のため、ヨーロッパの文化には直接触れることはできなかったのですが、[[#吉宗|第8代将軍吉宗]]は、キリスト教関連以外の書物に限って、オランダ語の書物の輸入を認めました。それ以降、これを訳して読むことで、当時急速に進みつつあったヨーロッパの科学に触れることができました。このような学問を'''{{Ruby|蘭学|らんがく}}'''と言います。
:医者の '''[[小学校社会/6学年/歴史編/人物事典#杉田玄白|{{Ruby|杉田玄白|すぎたげんぱく}}]]'''・'''{{Ruby|前野良沢|まえのりょうたく}}'''らはオランダ語の医学書『ターヘル・アナトミア』を見て、実際に死体の解剖を行い、それが非常に正確に記述されていることを知って感心し、これを4年かけて翻訳して、1774年『'''解体新書'''』をあらわしました。このころは、まだ、オランダ語の辞書はなく、大変苦労した話を『{{Ruby|蘭学事始|らんがくことはじめ}}』に記しました。
:杉田玄白らと同じ時代の、{{ruby|平賀源内|ひらがげんない}}<span id="平賀源内">は、オランダ語の本から、「エレキテル」と呼ばれる、静電気を発電し蓄電する機械(起電気)を製作しました。
:蘭学は、現代の日本の科学にも大きな影響を残しています。
:{{ruby|宇田川玄真|うだがわげんしん}}は、『解体新書』よりもさらに詳しい医学書を翻訳し、それまで日本語の名前のなかった臓器である「{{ruby|膵臓|すいぞう}}」や「{{ruby|腺|せん}}(体液を出す器官)」について、「膵」や「腺」という漢字を新しく作ってなづけました。玄真の養子である{{ruby|宇田川榕菴|うだがわようあん}}は、「化学」を紹介し、翻訳で「水素」、「酸素」、「窒素」、「元素」、「酸化」、「細胞」、「圧力」、「温度」、「結晶」、「沸騰」など現在でも使われている言葉を数多く作りました。
:関学は、こうして、当時急速に進んだヨーロッパの科学技術を日本に伝え、幕末には、新しい知識を持った人たちを送り出すのですが、これを研究する人はまだ少数で、世の中を変えるまでの影響はありませんでした。また、18世紀から19世紀にかけての「[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|{{ruby|産業革命|さんぎょうかくめい}}]]」にオランダは少し遅れてとりくんだため、蒸気機関などその成果はほとんど入りませんでした。
<div style="margin:0 4em 0 8em">
{| class="wikitable" style="width:90%"
|
<gallery heights="200px" widths="200px">
Sugita_Genpaku.jpg|thumb|杉田玄白
Kaitai shinsyo01.jpg|right|thumb|『解体新書』。とびら絵は『ターヘル・アナトミア』のとびら絵とはまったく{{Ruby|異|こと}}なっている。
Ontleedkundige Tafelen replica.jpg|thumb|『ターヘル・アナトミア』(複製)。
Elekiter replica.jpg|thumb|right|平賀源内作のエレキテル(複製)
</gallery>
|}
</div>
;学問の実践
:'''[[小学校社会/6学年/歴史編/人物事典#伊能忠敬|{{ruby|伊能忠敬|いのうただたか}}]]'''は、天文学や測量術を学んだ他、独自に測量方法を工夫し、日本全国を訪れ、正確な日本地図『{{Ruby|大日本沿海輿地全図|だいにほんえんかいよちぜんず}}』を作りました。
:{{ruby|華岡青洲|はなおかせいしゅう}}は、独自に{{ruby|麻酔薬|ますいやく}}の研究をし、1804年世界で初めて、全身麻酔での外科手術を成功させました。
;教育
:[[File:Bungaku-Bandai_no-Takara-Terakoya-School-by-Issunshi-Hanasato.png|thumb|right|寺子屋のようす。]]
:農民や町民などの{{Ruby|庶民|しょみん}}は、'''{{Ruby|寺子屋|てらこや}}'''で文字の読み書きやそろばんなどを学びました。
{{-}}
<div style="margin:0 2em 0 4em">
{| style="border:2px solid #aabbdd; width:95%; border-radius: 4px;" cellspacing=0
|style="background: #aabbdd; font-size: 115%; padding: 0.2em 0.2em 0.3em;"|'''コラム'''
|-
|style="padding: 0.5em; background: #fafafc;"|伊能忠敬
[[ファイル:Ino Tadataka stamp.jpg|thumb|180px|伊能忠敬がえがかれた切手]]
:伊能忠敬は、50才のときに、天文学や測量のための勉強をはじめました。そして、55才のときに、自費で北海道の南岸の測量を行いました。56才のとき、地図づくりのための測量を、幕府に願いでました。幕府は、忠敬の地図づくりの才能を{{Ruby|認|みと}}め、忠敬に地図づくりの許可を出しました。
:それから17年間、忠敬は、地図づくりのため、日本の全国各地を歩きました。忠敬が歩いた{{ruby|距離|きょり}}は3万km以上になります。
:地図の完成の前に、71才で忠敬は{{Ruby|亡|な}}くなりましたが、弟子たちが、日本全国の地図を完成させました。
:そして、忠敬の弟子たちにより、とても正確な日本地図が、できあがりました。
[[File:Land-Surveyors-Edo-Period-Katsushika-Hokusai.png|thumb|350px|left|江戸時代の測量のようす]]
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="儒学"/>儒学・儒教<small>
:{{ruby|儒学|じゅがく}}は、中国で紀元前6世紀から5世紀に{{ruby|孔子|こうし}}という人が始めた教えです。宗教としての性格もあるので{{ruby|儒教|じゅきょう}}とも言います。
:儒学は、紀元前2世紀からずっと、中国の王朝で正統とされた学問です。内容を伝えることは、簡単ではありませんが、この教えの特徴をよく伝える『{{ruby|礼記|らいき}}<ref>儒学の重要な書物の一つです。</ref>』の言葉「{{ruby|修身|しゅうしん}}、{{ruby|斉家|せいか}}、{{ruby|治国|ちこく}}、{{ruby|平天下|へいてんか}}」をあげておきましょう。意味は、「自分の行動を正しくし、家族がばらばらではなく、国がおさまるようであれば、世界には争いがなくなる」という意味です。このように、儒学の目標は天下が平和におさまることですが、そのためには、各個人が正しい行いをしていかなければならないというものです。
:儒学は、日本にも中国との交流とともに伝わりました。[[小学校社会/6学年/歴史編/歴史の始まり#漢字伝来|漢字の伝来]]の時に、王仁は儒教で最も重要な書物である『{{ruby|論語|ろんご}}』を『{{ruby|千字文|せんじもん}}』という書物とともに伝えたとされています。奈良時代から平安時代にかけての律令制の時代にも、儒教の学校がありました。また、鎌倉時代から室町時代にかけては、主に禅宗の寺院で、中国からの書物を使って研究がされていました。
:江戸時代になると、仏教から独立し学問として研究されるようになります。
:儒学の中でも、江戸時代に中心となったのは、13世紀に{{ruby|朱熹|しゅき}}が完成した{{ruby|朱子学|しゅしがく}}という学問です。朱子学は、国や社会の秩序を重んずるという特徴があり、明や清の国の学問となっていました。中国からの儒教に関する書物も朱子学のもので、また、朱子学は、家庭では親を大切にすること({{ruby|孝|こう}} - 「{{ruby|親'''孝'''行|おやこうこう}}」の「孝」です)と、主君にはさからわずつかえること({{ruby|忠|ちゅう}})が大事であるとといたので、下克上の世の中が終わって、安定した江戸時代の社会に合っていたのです。
:朱子学は、このように、江戸時代の学問の中心になったのですが、朱子学は形式ばった学問という特徴があって、{{ruby|実践|じっせん}}を重要と考えた{{ruby|陽明学|ようめいがく}}なども広く受け入れられました。
</small>
|}</div>
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/江戸幕府の成立と安定した社会-江戸時代Ⅰ|江戸幕府の成立と安定した社会-江戸時代Ⅰ]]
|[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代|明治維新と近代国家日本の成立-幕末・明治時代]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#10]]
4kkmse5owbpc45yoezksnsc7izuhhhu
ガリア戦記 第3巻/注解
0
33824
205949
205394
2022-07-28T13:18:16Z
Linguae
449
/* 各節注解 */
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;background-color:#fff0ff;">C・IVLII・CAESARIS・COMMENTARIORVM・BELLI・GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;background-color:#fff0ff;">LIBER・TERTIVS</div>
<span style="font-size:13pt;">『<span style="background-color:#ffc;">[[ガリア戦記 第3巻]]</span>』の単語や構文を詳しく読み解く <span style="background-color:#fc8;font-size:15pt;">'''[[ガリア戦記/注解編|注解編]]'''</span> の目次。</span>
{| id="toc" style="border:0px #ddf; align:left;clear:all;" align="center" cellpadding="5"
|-
! style="background:#ccf; text-align:center;" colspan="10"| ガリア戦記 第3巻 注解
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/10節|10節]]
<!--
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/11節|11節]]
|[[/12節|12節]]
|[[/13節|13節]]
|[[/14節|14節]]
|[[/15節|15節]]
|[[/16節|16節]]
|[[/17節|17節]]
|[[/18節|18節]]
|[[/19節|19節]]
|[[/20節|20節]]
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/21節|21節]]
|[[/22節|22節]]
|[[/23節|23節]]
|[[/24節|24節]]
|[[/25節|25節]]
|[[/26節|26節]]
|[[/27節|27節]]
|[[/28節|28節]]
|[[/29節|29節]]
|[[/30節|30節]]
| colspan="6" |
|- style="background:#f8f8ff; text-align:right; font-size: 0.85em;"
|[[/1節|1節]]
|[[/2節|2節]]
|[[/3節|3節]]
|[[/4節|4節]]
|[[/5節|5節]]
|[[/6節|6節]]
|[[/7節|7節]]
|[[/8節|8節]]
|[[/9節|9節]]
|[[/0節|0節]]
-->
|-
| style="background:#f5fefe; text-align:left; font-size: 0.8em;" colspan="10"|
[[ガリア戦記 第1巻/注解|'''注解''' 第1巻]] |
[[ガリア戦記 第2巻/注解|第2巻]] |
[[ガリア戦記 第3巻/注解|第3巻]] <!--|
[[ガリア戦記 第4巻/注解|第4巻]] |
[[ガリア戦記 第5巻/注解|第5巻]] |
[[ガリア戦記 第6巻/注解|第6巻]] |
[[ガリア戦記 第7巻/注解|第7巻]] |
[[ガリア戦記 第8巻/注解|第8巻]]-->
|}
<br style="clear:both;" />
__notoc__
== 各節注解 ==
[[画像:Gaule -56.png|thumb|right|150px|ガリア戦記 第3巻の情勢図(BC56年)。<br>黄色の領域がローマ領。桃色が同盟部族領。]]
===アルプス・オクトードゥールスの戦い===
*<span style="background-color:#fff;">[[/1節]] {{進捗|00%|2022-04-24}}</span> (144語)
*<span style="background-color:#fff;">[[/2節]] {{進捗|00%|2022-05-05}}</span> (127語)
*<span style="background-color:#fff;">[[/3節]] {{進捗|00%|2022-05-05}}</span> (104語)
*<span style="background-color:#fff;">[[/4節]] {{進捗|00%|2022-05-30}}</span> (97語) 短い節
*<span style="background-color:#fff;">[[/5節]] {{進捗|00%|2022-05-29}}</span> (108語)
*<span style="background-color:#fff;">[[/6節]] {{進捗|00%|2022-06-06}}</span> (130語)
===大西洋岸ウェネティー族の造反===
{{Wikipedia|モルビアン湾の海戦|モルビアン湾の海戦}}
[[画像:Map of Aremorican tribes (Latin).svg|thumb|right|400px|[[w:アルモリカ|アルモリカ]](<span style="font-family:Times New Roman;font-size:13pt;">''[[w:en:Armorica|Armorica]]''</span> )の部族分布図。]]
*<span style="background-color:#fff;">[[/7節]] {{進捗|00%|2022-06-12}}</span> (98語) 短い節
*<span style="background-color:#fff;">[[/8節]] {{進捗|00%|2022-06-20}}</span> (147語)
*<span style="background-color:#fff;">[[/9節]] {{進捗|00%|2022-06-19}}</span> (220語)
*<span style="background-color:#fff;">[[/10節]] {{進捗|00%|2022-07-02}}</span> (79語) 短い節
*<span style="background-color:#fff;">[[/11節]] {{進捗|00%|2022-07-03}}</span> (112語)
*<span style="background-color:#fff;">[[/12節]] {{進捗|00%|2022-07-09}}</span> (116語)
*<span style="background-color:#fff;">[[/13節]] {{進捗|00%|2022-07-18}}</span> (193<!--?-->語)
*<span style="background-color:#fff;">[[/14節]] {{進捗|00%|2022-07-17}}</span> (205語)
*<span style="background-color:#fff;">[[/15節]] {{進捗|00%|2022-07-28}}</span> (94語) 短い節
*<span style="background-color:#fff;">[[/16節]] {{進捗|00%|2022-07-28}}</span>
<!--【ポン】
*<span style="background-color:#fff;">[[/34節]] {{進捗|00%|2022-04-06}}</span> (37語) 短い節
*<span style="background-color:#fff;">[[/54節]] {{進捗|00%|2021-08-26}}</span> (59語) 短い節
*<span style="background-color:#fff;">[[/22節]] {{進捗|00%|2022-01-19}}</span> (65語) 短い節
*<span style="background-color:#fff;">[[/16節]] {{進捗|00%|2021-12-15}}</span> (76節) 短い節
*<span style="background-color:#fff;">[[/30節]] {{進捗|00%|2022-03-05}}</span> (80語) 短い節
*<span style="background-color:#fff;">[[/7節]] {{進捗|00%|2021-09-23}}</span> (84節) 短い節
*<span style="background-color:#fff;">[[/45節]] {{進捗|00%|2021-06-23}}</span> (86語) 短い節
*<span style="background-color:#fff;">[[/13節]] {{進捗|00%|2021-11-13}}</span> (92節) 短い節
*<span style="background-color:#fff;">[[/51節]] {{進捗|00%|2021-08-11}}</span> (95語) 短い節
*<span style="background-color:#fff;">[[/4節]] {{進捗|00%|2022-05-16}}</span> (97語) 短い節
*<span style="background-color:#fff;">[[/46節]] {{進捗|00%|2021-07-03}}</span> (104語)
*<span style="background-color:#fff;">[[/42節]] {{進捗|00%|2021-05-27}}</span> (182語)
*<span style="background-color:#fff;">[[/43節]] {{進捗|00%|2021-06-02}}</span> (217語)
*<span style="background-color:#fff;">[[/44節]] {{進捗|00%|2021-06-03}}</span> (362語) 長い節
-->
== 固有名詞 ==
<!--
*<span style="background-color:#ffd;">[[/地名]] {{進捗|00%|2020-06-11}}</span>
*<span style="background-color:#ffd;">[[/部族名]] {{進捗|00%|2020-06-11}}</span>
*<span style="background-color:#ffd;">[[/人名]] {{進捗|00%|2020-07-12}}</span>
-->
== 関連項目 ==
*<span style="background-color:#ffd;">[[ガリア戦記]]</span><!--【2006年4月23日起稿】-->
**<span style="background-color:#ffd;">[[ガリア戦記/注解編]]</span><!--(2020-03-27)-->
***<span style="background-color:#ffd;">[[ガリア戦記/注解編/写本と校訂版]] {{進捗|00%|2020-04-17}}</span><!--(2020-04-17)-->
**<span style="background-color:#ffd;">[[ガリア戦記/用例集]] {{進捗|00%|2020-03-29}}</span><!--(2020-03-29)-->
**[[ガリア戦記/内容目次]]:巻・章・節の内容を記した目次 {{進捗|75%|2011-04-02}}
**[[ガリア戦記/参照画像一覧]]:本文で参照した画像一覧 {{進捗|75%|2011-04-16}}
<br><div style="font-size:20pt;"> Ā Ē Ī Ō Ū ā ē ī ō ū Ă Ĕ Ĭ Ŏ Ŭ ă ĕ ĭ ŏ ŭ </div>
<div style="font-size:13pt;">
<math>\overline{\mbox{VIIII}} </math>
</div><!-- [[w:Help:数式の表示]] -->
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;"></span>
<!--
*<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">† : </span>校訂者が、テクストが壊れていると判断した部分をこの記号で囲んでいる。
-->
<!--
<ruby><rb>●漢字●</rb><rp>(</rp><rt>●ルビ●</rt><rp>)</rp></ruby>
-->
<!--
*<span style="background-color:#ffd;">[[/注解/3節]] {{進捗|00%|2022-07-02}}</span>
-->
<!--
**:<span style="color:#009900;">(訳注:
**:<span style="color:#009900;font-family:Times New Roman;">(訳注:
-->
== 関連記事 ==
{{Wikisource|la:Commentarii de bello Gallico/Liber III|ガリア戦記 第3巻(ラテン語)}}
*ウィキソース
**<span style="font-family:Times New Roman;">[[s:la:Commentarii de bello Gallico/Liber III]] (第3巻 ラテン語)</span>
**<span style="font-family:Times New Roman;">[[s:en:Commentaries on the Gallic War/Book 3]] (第3巻 英訳)</span>
**<span style="font-family:Times New Roman;">[[s:fr:La Guerre des Gaules/Livre III]] (第3巻 仏訳)</span>
----
{{Commons|Category:Battles of Caesar's Gallic Wars|Battles of Caesar's Gallic Warsのカテゴリ}}
*<span style="font-family:Times New Roman;font-size:13pt;">[[wikt:fr:Catégorie:Mots en latin issus d’un mot en gaulois]]</span>
----
*第3巻の登場人物
**Galba (副官)
***[[w:セルウィウス・スルピキウス・ガルバ (紀元前54年法務官)]]
***[[w:en:Servius Sulpicius Galba (praetor 54 BC)]]
***[[w:fr:Servius Sulpicius Galba (préteur en -54)]]
**Baculus
***[[w:la:Publius Sextius Baculus]]
**Volusenus
***[[w:en:Gaius Volusenus]]
***[[w:fr:Caius Volusenus]]
**Crassus
***[[w:プブリウス・リキニウス・クラッスス]]
***[[w:la:Publius Licinius Crassus]]
***[[w:en:Publius Licinius Crassus (son of triumvir)]]
***[[w:fr:Publius Crassus]]
**Labienus (副官)
***[[w:ティトゥス・ラビエヌス]]
***[[w:la:Titus Labienus]]
***[[w:en:Titus Labienus]]
***[[w:fr:Titus Labienus]]
**Sabinus (副官)
***[[w:クィントゥス・ティトゥリウス・サビヌス]]
***[[w:en:Quintus Titurius Sabinus]]
***[[w:fr:Quintus Titurius Sabinus]]
**Brutus
***[[w:デキムス・ユニウス・ブルトゥス・アルビヌス]]
***[[w:la:Decimus Iunius Brutus Albinus]]
***[[w:en:Decimus Junius Brutus Albinus]]
***[[w:fr:Decimus Junius Brutus Albinus]]
<br>
<hr><!--【第3巻の関連記事】-->
{{Commons|Category:Armorica|Armorica}}
<span style="font-family:Times New Roman;font-size:13pt;">
*[[c:Category:Armorica]]
**[[c:Category:Maps of the Antiquity of Bretagne]]
*[[c:Category:Ancient Roman ships]]
*[[c:Category:Steering oars]]
*[[w:la:Vicipaedia:Glossarium nauticum]]
<br>
*[[w:en:Battle of Octodurus]]
</span>
<span style="font-family:Times New Roman;font-size:13pt;"></span>
== 外部リンク ==
*[[ガリア戦記/注解編#外部リンク]] を参照。
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;">
; Eastman, Frederick Carlos., D'Ooge, Benjamin L. 1860-1940.(1917)
*[https://catalog.hathitrust.org/Record/001058370 Catalog Record: Caesar in Gaul and selections from the third... | HathiTrust Digital Library] (catalog.hathitrust.org)
:[https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=7&skin=2021 #7 - Caesar in Gaul and selections from the third book of the Civil ... - Full View | HathiTrust Digital Library] (babel.hathitrust.org)
:II.35./BOOK III [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=383&skin=2021 #383 ]
:III.2,3,4 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=384&skin=2021 #384 ]
:III.5,-8 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=385&skin=2021 #385 ]
:III.9 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=386&skin=2021 #386 ]
:III.10,11,12 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=387&skin=2021 #387 ]
:III.13, 14 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=388&skin=2021 #388 ]
:III.15,-17 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=389&skin=2021 #389 ]
:III.18,-21 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=390&skin=2021 #390 ]
:III.22,-24 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=391&skin=2021 #391 ]
:III.25,-29 [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=392&skin=2021 #392 ]
:BOOK IV. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=393&skin=2021 #393 ]
<!--
:II.1. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=367&skin=2021 #367 ]
:II.10. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=372&skin=2021 #372 ]
:II.20. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=377&skin=2021 #377 ]
:II.21. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=378&skin=2021 #378 ]
:II.23. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=379&skin=2021 #379 ]
:II.25. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=380&skin=2021 #380 ]
:II.28. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=381&skin=2021 #381 ]
:II.30. [https://babel.hathitrust.org/cgi/pt?id=hvd.hn5cnb&view=1up&seq=382&skin=2021 #382 ]
-->
</span>
<span style="font-family:Times New Roman;font-style:normal;font-size:13pt;"></span>
[[Category:ガリア戦記 第3巻|*#]]
sijxy0kw35z0hngl1m8dtbs7mffzwqs
小学校社会/6学年/歴史編/国際社会に進み出す日本-明治末期から大正時代
0
33920
205970
205852
2022-07-29T05:56:33Z
Mtodo
450
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--1889年前後から「国際的地位が向上」(1920年国際連盟成立 常任理事国入り)まで--><!--(コ) 大日本帝国憲法の発布,日清・日露の戦争,条約改正,科学の発展などを手掛かりに,我が国の国力が充実し国際的地位が向上したことを理解すること。-->
★時代区分:明治時代後期、大正時代</br>
★取り扱う年代:1889年(大日本帝国憲法の発布)から1925年(昭和改元)まで
; 大日本帝国憲法の制定
: 明治維新の改革は、五箇条の御誓文の方針によりなされましたが、改革が進み近代文明国としての形がひととおり整ってきたところ、さらに政治の形を確かなものとし、人々の権利を明らかにするため、'''憲法'''の制定と選挙によって選ばれた議員による議会を開くことが求められました。'''板垣退助'''や'''大隈重信'''は国会の開設を求めて、政党をつくりました。'''伊藤博文'''を中心とした明治政府は欧米諸国の憲法を研究し、1885年に'''内閣制度'''が創設され、1889年に'''大日本帝国憲法'''が発布されました。翌年憲法の精神に基づいて、初めて総選挙が行われ'''帝国議会'''(国会)が召集されました。
; 日清戦争と日露戦争
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、遼東半島を占領するなど戦いを有利に進め、翌年、'''陸奥宗光'''外務大臣と清の提督である李鴻章が交渉し、清の日本への賠償や台湾・遼東半島の割譲などを定めた下関条約が締結され講和が結ばれました(日本の勝利)。
: 遼東半島はロシア、ドイツ、フランスが反対したので割譲は取りやめとなりましたが(三国干渉)、そこにロシアが進出し、それを警戒する日本と対立しました。1904年日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や中国東北部(満州)で戦いました。日本は多くの犠牲者を出しましたが、'''東郷平八郎'''がロシアのバルチク艦隊をやぶるなどして有利な位置となり、翌年、'''小村寿太郎'''外務大臣とロシアのウィッテが交渉し、ロシアの中国からの撤退、南満州鉄道の譲渡、南樺太の割譲などを定めたポーツマス条約が締結され講和が結ばれました(日本の勝利)。
; 条約改正と国際社会での地位の向上
: 幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。まず、政府は、国内の法整備を進め、公正な裁判が行われることを示し、日清戦争終結後の1899年治外法権を撤廃しました。そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、1911年関税自主権も回復しました。
: 1912年大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年にヨーロッパの国々を二分した'''第一次世界大戦'''が始まりました。日本は、イギリスやフランスの属する連合国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。1919年戦争は連合国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: このころになると、日本の科学技術の水準も世界的なものになり、'''野口英世'''のように国際的な研究者がでてくるようになりました。
|}
=== 世界の変化2 - 市民革命 ===
:日本が鎖国をしている間、ヨーロッパやそれを受けたアメリカ大陸では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|産業革命]]ともうひとつの大きな社会変革が起こっていました。
;市民革命以前のヨーロッパ
:ヨーロッパの国々も長い間、生まれながら身分によって職業などが決められ、多くの人々は農民や職人として土地(荘園)の領主(「{{ruby|封建|ほうけん}}領主」といいます)や都市の貴族などに服従する社会でした。また、この時代は、ローマ教皇を頂点とする'''カトリック教会'''が、強い影響力や荘園を持っていたというのは、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#キリスト教|前にお話ししたとおり]]です。この時代を{{ruby|封建|ほうけん}}制<ref>土地(領地)を間に介して、主従関係を結ぶ制度を言います。日本でも、[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#封建制|鎌倉時代の「'''ご恩と奉公'''」の関係]]はこれにあたりますし、安土桃山時代から江戸時代にかけての[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#石高制|石高制]]も封建制の一種です。</ref>の時代と言います。
:14世紀くらいになると、都市を中心に商業が発展してきて、豊かな財産を持って、荘園領主よりも強い影響力を持つようになる者もでてきました。15世紀「[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#大航海時代|大航海時代]]」になると、さらに、貿易や植民地からの収益で都市の商人などは勢力を強くしました。また、繊維工業などを中心に、人を集めて工場などを経営する人たちもあらわれました。これらの、封建領主や貴族ではない階層の人たちを、「{{ruby|市民|しみん}}階級」といいます。これらの、市民階級の経済力を背景に、ヨーロッパの各地で強い力を持った国王が誕生し、伝統的な荘園領主などを圧倒しました。これを、{{ruby|絶対王政|ぜったいおうせい}}の時代といいます。絶対王政の王国は、政治を行う政府は専門の役人をおき、戦争に備えて軍隊を平時から常設するようになりました<ref>封建制の時代は、国王でも自分の荘園をおさめられる程度の役人がいればよく、戦争などでは、その都度、封建領主に命令して軍隊(騎士)を集めていました。</ref>。
;市民革命と近代国家
:市民階級が台頭してくると、封建制度以来の身分制度に対して、生まれながらの身分にかかわらず人間は'''平等'''であり、'''自由'''に発言や経済活動をする'''権利'''('''人権''')を持っているという考え方が広がってきました。また、封建制の時代はおさめている荘園の収穫から政治を行っていましたが、絶対王政の政府は、市民階級からの税金で成り立っていたのですが、税金を取られる市民たちは国王の都合だけで徴税されることに不満を持ち始めました。こうして、17世紀以降、市民階級は絶対王政と対立するようになります。市民階級は代表を出して、政治に参加するようになります。'''議会'''('''国会''')の始まりです。さらには、国王の圧政に対しては、市民階級が集まって武力をもって王政を倒したりしました。これを「'''{{ruby|市民革命|しみんかくめい}}'''」と言います。
:市民革命は、17世紀のイギリスに始まりました ('''清教徒革命'''など)。ひきつづいて、北アメリカ大陸のイギリス植民地が、独立を求めて戦争を起こしアメリカ合衆国が成立しました ('''アメリカ独立戦争''')。そして、1789年代表的市民革命である'''フランス革命'''が起こります。市民革命は、フランスの'''ナポレオン'''が、フランスの革命政府を打ち倒そうとする周辺の国々を逆にせめた戦争によってヨーロッパ各地に広がります。
:市民革命自体は、各国の状況によって様々な結果を生みました。革命後に王政が復活した国もあります。しかし、市民革命で国の政治に身分によらない一般の市民が参加できるようになって、広く国全体から資金を集める仕組みができたこと、また、兵隊に国民が動員されるようになったこと('''[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#徴兵制|徴兵制]]''')から、数が多く強力な軍隊を持つようになり、それまでの、封建的な国や絶対王政の国を圧倒するようになりました。これらの古い体制の国々も、市民階級を国の政治に参加させるように、国の仕組みを変えるようになりました。まず、国民の権利を保障し、国民の代表が参加する'''議会'''を設置して国の政治に参加できるようにしました。そして、そのことを'''憲法'''という、強い力を持った法律に定めるようになりました。
:国が、国王などの所有物ではなく、そこに住む国民によって成立するという近代国家('''国民国家''')の誕生です。
=== 大日本帝国憲法の制定 ===
[[File:Taisuke ITAGAKI.jpg|thumb|125px|板垣退助]]
[[File:OKUMA_Shigenobu.jpg|thumb|125px|大隈重信]]
[[file:Itō Hirobumi.jpg|thumb|125px|伊藤博文]]
:明治になって、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#四民平等|身分制度がなくなり]]<ref name="華族">実際は、公家や大名、明治政府に大きな貢献のあった人たちについては、{{ruby|公爵|こうしゃく}}・{{ruby|侯|こう}}爵・{{ruby|伯|はく}}爵・{{ruby|子|し}}爵・{{ruby|男|だん}}爵といった貴族の爵位が与えられ、その一族は「{{ruby|華族|かぞく}}」と呼ばれました。華族には、いくつかの特権が認められましたが、華族の数は比較的少ないうえ、江戸時代ほど極端に大きな差ではありませんでしたし、社会的な貢献をすることで、誰でも華族となる機会はありました。また、「士族」と「平民」の間で異なる取り扱いは一切ありませんでした。</ref>、人々は才覚や努力によって、どのような職業に就くこともできるようになりました。人々は、学業をはじめとしたさまざまな努力をして、いろいろな分野で活躍するようになりました。
:明治政府は、さまざまな改革を強引に進めたため民衆と対立することも少なくありませんでした。このような民衆の不満は、[[#士族の反乱|士族の反乱]]の後は、こうした近代思想を取り入れて政治参加を求める{{ruby|自由民権|じゆうみんけん}}運動につながります。自由民権運動は、憲法の制定と、民衆が政治に参加できる選挙を通じた国会の開設をもとめるようになります。自由民権運動は、征韓論で下野した'''[[小学校社会/6学年/歴史編/人物事典#板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]]'''と1881年(明治14年)に'''[[小学校社会/6学年/歴史編/人物事典#伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]]'''らと対立して政府を離れた'''[[小学校社会/6学年/歴史編/人物事典#大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]]'''らに主導されました。
:大隈や板垣が主導する自由民権運動の主張は、国民の自由と権利を保障する憲法の制定とそれに基づく国民の選挙による議会(民選議会)の開設及び議会による政府の統制でした。伊藤博文ら明治政府を主導する人たちは、自由民権運動の考えをそのまま受け入れると、政策を政府が思うとおりに進めることができず、富国強兵などの改革政策に差しさわりがあると考え、この運動を弾圧しました。一方で各地の有力者や、新たな産業の成功者が登場してきており、明治政府はこれらの人々の支持を受けたいと思っていました。また、欧米諸国から見ると、民選議会が政治を進めない国は遅れているとの意識があり、不平等条約改正にあたっても説得させることができない理由の一つとなっていました。
:1881年(明治14年)明治政府は、明治天皇名で「国会開設の勅諭」を下し、1889年(明治22年)に国会を開設することを国民に約束しました。これを受けて、自由民権運動の活動家は政党を結成し、同年には自由党が板垣退助を中心として、翌1882年(明治15年)立憲改進党が大隈重信らによって結成されました。
:一方、伊藤は、1882年(明治15年)、憲法制定・国会開設の模範を研究するためためにヨーロッパを視察しました。そこで、伊藤は議会が発達したイギリスや、人権思想が進んでいたフランスではなく、ドイツ帝国の憲法を模範にすることとしました<ref>この頃のドイツは、日本が藩に分かれていたのと同様に、多くの王国・貴族領に分かれていたものを、各地で統一の要望が上がり、その中で有力となったプロイセン国王を皇帝とするドイツ帝国が成立していました。ドイツ帝国は、イギリスやフランスよりも、皇帝(それを受けた行政機関)の権限が強く、議会の力はおさえられていました。ドイツは、英仏に比べ工業化などが遅れていたために、それを推進するために、強い行政の力が必要であったためです。また、各個人の人権についても制限がありました。伊藤が、英仏ではなく、ドイツを国の形の模範としたのは、このように、日本と状況が似ていたためです。</ref>。帰国した伊藤は憲法制定の準備をはじめ、1885年(明治18年)に内閣総理大臣を長とする'''内閣制度'''が創設され、1889年(明治22年)に'''大日本帝国憲法'''(明治憲法<span id="明治憲法"/>)が発布されました。翌1890年(明治23年)7月1日憲法の精神に基づいて<ref>明治憲法が、実際に有効となる(施行される)のは、1890年(明治23年)11月29日なので、まだ、憲法の下の選挙・国会の招集ではありませんでした。</ref>、初めて総選挙が行われ、11月25日'''帝国議会'''(国会)が召集されました。
:明治憲法は以下のことを定めています。
:#天皇は、日本の統治者とされます。
:#国会は、天皇に「協賛」して法律や予算を定める機関とされます。
:#*法律や予算を決めるのは天皇であって、国会は、その補助をしているに過ぎないという考えを表しています。
:#*緊急と認められる時には、天皇<ref>実際は、行政府である政府の仕事です。</ref>は国会の議決によらず、法律に代わる勅令を出すことができました。
:#国会は、貴族院と衆議院により成り立ち、衆議院は選挙によって選ばれた議員により構成され、貴族院は皇族・華族<ref name="華族"/>及び勅命<ref>天皇の命令。実際は、その時の行政府による指名。</ref>で任名された議員により構成されます<ref>ただし、このような議会の成り立ちは、世界的に見ても珍しいものではありませんでした。明治憲法の元になったドイツ帝国の議会が貴族院と衆議院で成り立っていましたし、そもそも、議会政治の模範とされるイギリスも世襲貴族による「貴族院」と選挙で選ばれた議員による「庶民院」で構成されていて、現在もその伝統が残ります。このことで、身分で選ばれた議員による議会を「上院」、選挙で選ばれた議員による議会を「下院」という習慣ができました。アメリカ合衆国には独立当時から貴族制度はありませんでしたが、上院は各州の代表(元々は州議会が選出していましたが、現在は州民の選挙によります)、下院は州にかかわらず選挙で選ばれた議員による議会と、上院と下院で性質を変えていたりします。時代が下るにつれ、選挙で選ばれた議員の決めることが優先されるという政治習慣(下院優先の原則)が有力になります。</ref>。
:#*衆議院の優位などの定めはなく、各議院で議決されなければ法律などは成立しませんでした。
:#*<span id="制限選挙"/>衆議院議員の選挙権は、憲法を定めた当時は、一定以上の税金を納めた者にのみ認められていました。
:#国務大臣は天皇を{{ruby|輔弼|ほひつ}}(助言し助ける)すると定められます。また、内閣総理大臣についての定めはありません。
:#*<span id="内閣総理大臣"/>内閣総理大臣は、天皇が指名する建前でしたが、実際には、元老といわれる人達<ref>元老には、最初は伊藤博文など維新の功臣が、後代には長期に首相を務めた者がなりました。</ref>が協議したり、後には首相経験者などで構成する重臣会議で決議して天皇に{{ruby|推薦|すいせん}}して決まるものでした。
:#軍隊(陸海軍)は天皇が直接まとめひきいるとされました。また、国民には徴兵に応じる義務がありました。
:#*軍隊は、国会や内閣の命令を聞く必要がないと解釈されるようになります。
:#様々な国民の人権が認められましたが、それは、法律の範囲内で認められるものとされました。
:#*例えば、女性には選挙権は認められることはありませんでした。また、民法で家族や相続は家制度によったため、女性は不利な取り扱いを受けました。
:#*後に制定される治安維持法は、政治思想(特に[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで#社会主義と共産主義|社会主義思想・共産主義思想]])を取り締まる法律でした。
=== 日清戦争と日露戦争 ===
==== 日清戦争 ====
[[File:《马关条约》签字时的情景.jpg|thumb|right|200px|none|下関条約の調印の様子。 向かって左に着席するのが日本の伊藤全権、右が清国の李全権]]
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします<ref>「急激な近代化に成功した日本」と書きましたが、これは、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|前の章の『産業革命』の節]]に書いた「欧米各国は、産業革命で経済力が大きくなりましたが、さらにそれを大きくするため、国内で生産する工業製品の{{ruby|市場|しじょう}}と原材料となる農産物や鉱物資源を欧米諸国の外に求めるようになりました。」の部分を日本に当てはめたものです。しかし、この頃の日本の工業力はまだ近代化が始まったばかりで、外国に市場を求めるまで成長していません。</ref>。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年(明治27年)朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、黄海沿岸の軍事拠点を攻撃し、遼東半島を占領するなど戦いを有利に進め、翌1895年(明治28年)、'''[[小学校社会/6学年/歴史編/人物事典#陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]]<span id="陸奥宗光"/>'''外務大臣と清の提督である{{ruby|李鴻章|りこうしょう}}が交渉し、以下の事項などを定めた'''下関条約'''が締結され講和が結ばれました(日本の勝利)。
:#清は、朝鮮の独立を認める。
:#清は、日本へ台湾と{{ruby|遼東|<small>りょうとう/リャオトン</small>}}半島<ref name="中国地名">中国の地名については、日本語の音読みで読む方法と現代の中国語に近い音で読む方法があります。後者は、「音読みだと日本人にしか通じない」と言う配慮から現代の中国語に近い音を当てると言う意図なのかもしれませんが、実際の発音とは異なっているので中国人にも伝わらないでしょう。ですから、ここでは、原則として音読みで音をふりますが、{{ruby|北京|ペキン}}、{{ruby|上海|シャンハイ}}のように現代中国語音に似せた言い方が一般的になったものもありますので、それらは、よく使う言い方をカタカナで表記します。</ref>を割譲する。
:#清は、日本へ賠償金2億両<ref>1両は銀37.3gで、当時の日本円に換算して約3億円。これは、政府の年間予算の約3倍にあたります。</ref>を支払う。
:#*日本は、この賠償金を資金として大規模な製鉄所を福岡県に作りました('''{{ruby|八幡|やはた}}製鉄所''')。
:清はそれまでも、イギリスやフランスと争って負けてはいましたが、欧米諸国は、それでも清国は世界最大の人口をかかえる巨大な国<ref>当時、3億人を超える程度の人口があったものとされています。</ref>であって、実力を発揮すれば欧米諸国であっても勝てるものではないと思われていた<ref>これを、「清国は『眠れる獅子』だ」という言い方をします。</ref>ので中国本土への進出はおさえられていましたが、近代化後間もない日本に敗れたため、欧米諸国は清国への進出を強め、中国大陸の多くの地域で欧米諸国の半植民地と言ってよい状態になりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうして清国に勝てたのでしょう<small>
:戦争の勝敗の原因は、様々な要素があって、簡単に決めることができるものではありませんが、その時代の当事国の違いを比較することで、国の体制などの特徴を理解することができます。ここでは、なぜ、清国はやぶれ、日本は勝つことができたのかを考えてみましょう。
:戦争の勝敗を決める要素の第一は双方の国の規模です。大きな国の方が当然有利です。このころ、日本の人口はようやく4千万人程度のところ、清国の人口は3億人を超えていました。農業に適した広大な国土を有しており、近代化が遅れていたとは言え、税収などは日本よりもはるかに大きかったと考えられます。日清戦争の前も、世界最大級の軍艦をドイツから購入していたりします。相手の政権を倒すまでの全面戦争と言われる戦争であれば、日本は、勝つことは難しかったでしょう。
:一方で、清国は皇帝の軍隊は{{ruby|八旗|はっき}}・{{ruby|緑営|りょくえい}}と言われる17世紀の軍隊のままで、これは、日本の武士同様将兵が生まれながらの家柄で決まっている軍隊でしたが、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#アヘン戦争|アヘン戦争]]以後の近代的戦争や民衆の反乱<ref>銃器などを欧米の商人から買っていました。</ref>では対応できなくなっていました。そこで、地方に派遣された高官は地元の有力者に呼びかけ、その地方の税を流用するなどして、地元の若者を集め、私的に軍隊を組織していました。一種の義勇兵ですが、実際は金を払って集めた{{ruby|傭兵|ようへい}}も少なくなかった言われています。
:また、清国は皇帝が独裁する事が建前であったため、外交と軍事がばらばらの動きをし、軍事も統一的な動きはできていませんでした。
:日本の場合、中央政府が全国民から国の制度として兵を集め、政府の予算で設備をそろえ、組織だった訓練を実施した軍隊を有していました。また、「天皇の軍隊」「日本国の軍隊」としての『国民』意識も高く、これが、士気につながりました。
:このような違いから、黄海およびその沿岸での戦闘という局地的な戦争では、国の規模の違いにかかわらず勝つことができたということです。
</small>
|}</div>
==== 日露戦争 ====
[[画像:Location-of-Liaodong-Peninsula.png|thumb|150px|left|遼東半島]]
[[ファイル:Kisaburō Ohara, Europe and Asia Octopus Map, 1904 Cornell CUL PJM 1145 01.jpg|thumb|300px|right|1904年当時、日本人がロシアにもったイメージを伝える風刺地図。]]
:下関条約で、日本は、台湾などとともに中国本土の遼東半島の割譲を受けましたが、ロシア、ドイツ、フランスが反対し('''{{ruby|三国干渉|さんごくかんしょう}}'''<ref>「干渉」とは、「他のものの動きに影響を与える」という元々の意味から、このような場合、「他国の政治に口を出す」という意味で使われています。</ref>)、遼東半島の割譲は取りやめとなりました。ところが、その遼東半島にはロシアが進出し、{{ruby|大連|だいれん}}、{{ruby|旅順|りょじゅん}}<ref name="中国地名"/>といった都市を建設し始めました。
:ロシアは、ユーラシア大陸を横断する鉄道('''シベリア鉄道''')を建築し、ヨーロッパとアジアの間の物流をおさえようとしていました<ref>日本からイギリスやフランスまで、船ならば45日〜50日かかったところを、シベリア鉄道を使えば15日程度で移動できました。</ref>。シベリア鉄道は、もともと、ロシア領内をウラジオストックまでのものですが、ロシアは遼東半島支配に伴って、大連まで{{ruby|東清|とうしん}}鉄道を建設し、その途中である{{ruby|満州|まんしゅう}}地域<ref>現在は、中国東北部と呼ばれる地域です。もともと、「満州(満洲)」とは清王朝をおこした民族(女真族)の名前で地名ではありませんが、「満洲族が起こった土地」と言うことで通称として用いられるようになりました。このころから、1945年頃まで、満州は日本にとって歴史上重要な土地となります。</ref>を実質的に植民地とするなど支配を強めます。そして、満州に接する朝鮮(日清戦争後、{{ruby|大韓帝国|だいかんていこく}})の政治にも介入するなどしはじめました<ref>ロシア進出の背景には、大韓帝国の王室のメンバーや{{ruby|両班|ヤンバン}}と呼ばれる高級官僚らが、朝鮮の政治・経済に段々影響を強めてくる日本を警戒して、それに対抗するため、ロシアと通じていたということもあります。</ref>。
:日本は、ロシアの動きに対して警戒しました。ロシアが満州地域でやっていることは、他のヨーロッパ諸国がアジアやアフリカでやっていて、日清戦争後に中国本土で進められている植民地化であって、そのままでは、満州地域だけでなく、朝鮮半島も、さらには日本までもが、植民地となってしまうのではないかと考えました<ref>これは、大げさな話ではなく、アフリカの植民地化はこの時期に進み、19世紀末には独立国は、エジプト周辺、エチオピア、リベリアだけになっていましたし、アジアも1887年にフランスがベトナムを植民地にするなどして、独立を保っていたのはシャム王国(現在のタイ王国)くらいになっていました。</ref>。
:日本政府では、伊藤博文に代表される日露の衝突を外交努力などで避けるべきとするグループがあった一方で、陸軍に対して大きな影響を持った'''[[小学校社会/6学年/歴史編/人物事典#山県有朋|{{ruby|山県|やまがた}}(山縣){{ruby|有朋|ありとも}}]]'''や首相の{{ruby|桂太郎|かつらたろう}}、外交官出身の外務大臣'''[[小学校社会/6学年/歴史編/人物事典#小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]]<span id="小村寿太郎"/>'''らは、戦争は避けられないので、それに向けての準備をするという態度に出ました。日本国内では、戦争に向け軍艦を整備したり新たな兵器の開発を行う一方で、ロシアの中央アジアからインドへの南下などを警戒するイギリスと同盟を結び、ロシアとの戦争に備えました。
[[file:Nichirojp.png|thumb|300px|日露戦争の経過]]
:1904年(明治37年)日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や満州で戦いました。ロシアは、モスクワなどから遠い極東に兵や兵器・軍馬・食料などを送るには、シベリア鉄道に頼るしかないので、すぐに戦場で攻撃の体制を作ることはできません。一方で、日本も、兵などを送るには日本海を渡らなければならないので、この地域の{{ruby|制海|せいかい}}権<ref>ある地域を自由に航行できるということ。</ref>を握る必要がありました。海軍はロシアの太平洋側の主力艦隊である旅順艦隊をせめ有利な立場になりますが、旅順艦隊は、援軍である世界最大級の艦隊バルチック艦隊<ref>「バルト海」で行動する艦隊なのでバルチック艦隊といいます。</ref>が到着するまで、旅順港に待機することになりました。日本陸軍は遼東半島南端から東進鉄道沿いに北上、朝鮮国境からの軍とあわせ、ロシア軍を満州地域北部までおしもどしました。また、旅順に引き込んだ艦隊がバルチック艦隊と合流すると制海権が危うくなるので、'''{{ruby|乃木希典|のぎまれすけ}}'''<ref>死後、乃木神社にまつられます。乃木坂などの地名にも残っています。</ref>が率いる陸軍の軍団が、要塞となった旅順を攻撃します。この旅順を囲む戦いは、日露戦争の中でも多くの日本兵の犠牲を出しましたが1905年(明治38年)1月に降伏し、バルチック艦隊のみを迎えうつことになりました。そうして、5月に'''[[小学校社会/6学年/歴史編/人物事典#東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]]'''がひきいる日本海軍は日本海海戦でバルチック艦隊をやぶり、日本海の制海権を安定したものにしました。
:日本は、戦争を有利に進めたとことで、アメリカ合衆国大統領'''セオドア・ルーズベルト'''に講和の仲介を依頼し、日本からは'''[[#小村寿太郎|小村寿太郎]]'''が、ロシアからは'''ウィッテ'''(前蔵相、のちに初代首相)が、米国のポーツマスに出向き、講和会議が開かれました。1905年9月5日、以下の事項を決めた条約('''ポーツマス条約''')が結ばれ、ロシアは中国から撤退し、日露戦争は日本の勝利で終わりました。
:# ロシアは日本の朝鮮半島における優越権を認める。
:# 日露両国の軍隊は、鉄道警備隊を除いて満州から撤退する。
:# ロシアは樺太の北緯50度以南の領土を永久に日本へ譲渡する。
:# ロシアは東清鉄道の内、旅順-長春間の南満洲支線と、付属地の炭鉱の{{ruby|租借|そしゃく}}<ref>土地などを、借り受けるという意味ですが、実質的な支配が行われ、「租借地」というのは、「植民地」とほぼ同義語になります。</ref>権を日本へ譲渡する。
:#*この路線は、「南満州鉄道」と改称され、日本の満洲進出の基礎となります。
:# ロシアは関東州(旅順・大連を含む遼東半島南端部)の租借権を日本へ譲渡する。
:# ロシアは沿海州沿岸の漁業権を日本人に与える。
:ポーツマス条約では下関条約と異なり賠償金の支払いはありませんでした。一部の日本国民はこれを不満に思って、暴動をおこすものもありました。しかし、国民には知らされていませんでしたが、戦争を有利に進めていたとはいえ、これ以上は財政上ほとんど無理な状態になっていて、すぐにでも戦争をやめなければならない状態になっていました。ロシアはそれを見越して、敗戦国でありながら、比較的有利な条件で講和条約を結んだといえます。
:しかし、この結果、満州や朝鮮半島に対するロシアの脅威は去りましたので、日本は、この地域への進出を高めます。特に、満州は石炭や鉄鉱石の地下資源が豊かな地域であったため鉱山開発を盛んに行いました。
:韓国については、政治的な不安定を理由に日本の属国化が進められ、1905年12月には統監府が設置され、伊藤博文が初代統監に就任しました。
:1909年 (明治42年)、伊藤博文はロシアとの外交交渉のため満州のハルビンに出向きましたが、そこで、朝鮮民族主義者に暗殺されます。それまで、韓国に対しては朝鮮民族に対し強硬的に望む人たちと、穏健に進めるべきという人たち(伊藤博文もその意見でした)が対立していたのですが、伊藤博文が暗殺されたことで、強硬派の勢いを増し、1910年(明治43年)8月に、日本は大韓帝国を併合しました('''{{ruby|韓国併合|かんこくへいごう}}''')。
:<span id="辛亥革命"/>日露戦争は、日本とロシアの戦争でしたが、その戦いは清国の領土でなされました。清国は、もはやそれを止める力を失っていました。中国の人々は、外国に国土を侵される不安が高まり、中国の人々が政治参加をする国をつくるため、1911年{{ruby|孫文|そんぶん}}が主導者となって革命を起こしました('''{{ruby|辛亥革命|しんがいかくめい}}''')。翌1912年清王朝は滅ぼされ、アジアにおいて史上初の独立した共和制国家である{{ruby|中華民国|ちゅうかみんこく}}が誕生しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="南下政策"/>ロシアの南下政策<small>
:ロシアは、ヨーロッパの国の中では最も東にあって、17世紀にシベリアを征服し太平洋に達する領土を持つ大きな国ではあったのですが、ヨーロッパ中心部から離れていたので産業革命などはおくれてつたわりました。また、国土の多くが北にあったため、冬にほとんどの港が凍結するなどして、通商などにも支障が出るため、南へ勢力を伸ばす政策をとっていました。これを、「『{{ruby|不凍港|ふとうこう}}』を求めての南下」と言ったりします。19世紀、{{ruby|黒海|こっかい}}を勢力におさめようと、1853年トルコ(オスマン帝国)の領土であったバルカン半島などで戦争(クリミヤ戦争<ref>ロシアは、バルカン半島を南下しようとしたのですが、イギリス・フランスの参戦により押し戻され、クリミア半島が主要な戦場となりました。クリミヤ半島は、現在(2022年4月)、ロシアの侵攻で話題になっているウクライナの黒海地域です。</ref>)を起こしましたが、トルコをイギリスやフランスが支援し、この戦争ではロシアは敗北します<ref>クリミア戦争で、戦傷者の救護を組織的に行い、看護師による近代看護を確立したのが、フローレンス・'''ナイチンゲール'''です。</ref>。その後のバルカン半島の各民族の独立運動に合わせ、1877年オスマン帝国と戦争(露土戦争)をし、これに勝利しバルカン半島を経由したロシアの南下路が開けます。しかし、軍事的な勝利を収めたロシアの勢力拡大に対して欧州各国が警戒感が広がったため、ドイツ帝国の首相ビスマルクが主導し、1878年ベルリン会議を開き、ロシアの南下政策を止め、ロシアはバルカン半島方面の南下を一旦断念します。
:そこで、ロシアは、ヨーロッパ方面から世界へ出ることをあきらめ、東側のシベリアを経由して中央アジアや太平洋への進出をもくろみます。その結果のひとつが、三国干渉及びそれに続く遼東半島への進出です。
:しかし、日露戦争に敗れたため、ロシアは、ふたたび西へ目を向けます。そこで、バルカン半島から東に勢力を伸ばそうとしていたドイツとぶつかります。これが、第一次世界大戦の原因の一つとなります。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうしてロシアに勝てたのでしょう<small>
:ここでは、なぜ、ロシアはやぶれ、日本は勝つことができたのかを考えてみましょう。
:双方の国の規模ですが、日本とロシアでは、人口で3倍、国家予算で10倍、常備軍で5倍という、大きな差がありました。また、清国と違い、ロシアの軍隊はロシア皇帝の下に組織された近代的な軍隊でした。実際、戦没者はロシアが81千人程度のところ、日本は88千人と日本の方が被害が大きかったりしています<ref>当時は、戦場の衛生環境などが悪く、病気になって亡くなる兵士も少なくありませんでした。日露とも、戦没者の1/4が病没者で。特に日本の病没の原因としては、ビタミンB欠乏症の「{{ruby|脚気|かっけ}}」が目立っていて、これは、日本陸軍の医療関係者が、当時新興の栄養学を軽視したためとも言われています。この医療関係者には、小説家の森鴎外もいました。</ref>。
:このように、日本に大きな被害が出た戦争であっても、ロシアが強気に出られなかったのは、サンクトペテルブルクやモスクワなどがある本拠地であるヨーロッパから、鉄道で10日以上かかる遠隔の地で兵隊を送ろうとしても、1日に数千人程度が限界だったからでしょう<ref>戦争において装備に大きな差がなければ、数の違いは大きく影響します。</ref>。ロシアにとっては、バルチック艦隊が日本海の制海権をにぎって、日本が大陸に兵隊や物資を送れなくすることで逆転をもくろんだのですが、日本海海戦でその希望もなくなり、ロシアは戦争の継続をあきらめたのだと思われます。
:バルチック艦隊は強力な艦隊でしたが、日英同盟により、インドなどイギリス植民地への寄港<ref>当時の軍艦の動力は蒸気機関であっったため、石炭と真水を大量に積み込む必要がありました。</ref>が拒否されたため、大西洋から、アフリカの南を回ってインド洋経由で7ヶ月もの航海ののちの到着でした。また、ロシアは身分制が残っており、士官は貴族階級など上流階級の出身者が多く、それに対して、水兵などは農民出身の者や都市の労働者などが多く、航海での待遇の差もあり、航海中から対立も生じていました。
:この上流階級と庶民階級の対立は、海軍だけでなく、陸軍でも見られました。なにより、ロシア国内の一般的な生活でも見られたのです。いくら国の規模が大きいとはいえ、戦争は国民生活に商品不足・インフレーションの影響を与えます。もともと、民衆からの不満がみられ、革命運動もあったところ、日露戦争によるインフレーションと数々の戦いで敗戦したとの知らせで民衆の間に暴動が頻発し、1905年には革命と言っていい状態になっていました。このような国内の不安定さから、ロシア政府は講和を急ぐようになり、日本の勝利につながったといえます。
</small>
|}</div>
=== 条約改正と国際社会での地位の向上 ===
[[File:Chikamatsu Kiken buto no ryakuke.jpg|thumb|300px|鹿鳴館における舞踏会を描いた浮世絵]]
;不平等条約改正の歩み
:幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。
:明治政府は、文明開化が進んで欧米並みの文明国になったことを示すため、さまざまなアピールをします。たとえば、1883年(明治16年)に外務卿{{ruby|井上馨|いのうえかおる}}は、'''{{ruby|鹿鳴館|ろくめいかん}}'''という、外国からの重要な来訪者や外交官を接待するための社交場を建設し、舞踏会を開いたりしていました。鹿鳴館での舞踏会などには、政府高官の夫人や娘なども参加しましたが、当時はドレスなどの洋装、欧米風の応対のマナーやエチケット、また、ダンスなどは全く一般的ではなく、必死の訓練などがあったと言われています。しかし、このような取り組みは、欧米人には「{{ruby|滑稽|こっけい}}」と感じられたと言う記録も残っており、あまりうまくいきませんでした。
:一方で、政府は、まず[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#治外法権|治外法権]](領事裁判権)の撤廃のため、国内の法整備を進め、公正な裁判が行われることを諸外国に示そうとしました。領事裁判権の裁判は犯罪に関するものなので、法律に関するフランス人の[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#お雇い外国人|お雇い外国人]]ボアソナードが指導してフランスの法律をもとにして、1880年(明治13年)に犯罪とその刑罰に関する刑法<span id="刑法"/>と刑事手続と裁判を定めた治罪法<ref>後に、刑事訴訟法に改正されます。</ref>が制定され、1882年(明治15年)施行されました。1889年(明治22年)には、[[#明治憲法|明治憲法]]が発布され法制度が欧米並みに整理されたことが、国際的に示されました。外務大臣'''[[#陸奥宗光|陸奥宗光]]'''は、各国と粘り強く交渉し、まず、1897年(明治30年)イギリスとの間で治外法権を撤廃する条約を結び、日清戦争終結後の1899年(明治32年)すべての国との間で治外法権を撤廃しました。
:そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、外務大臣'''[[#小村寿太郎|小村寿太郎]]'''が主導し、1911年(明治44年)関税自主権も回復しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】大津事件<small>
:1891年(明治24年)、日本を訪問中のロシア帝国皇太子ニコライ(後の皇帝ニコライ2世)が、滋賀県大津市で警備中の警察官に突然サーベルで切りつけられケガを負うと言う事件がありました。
:驚いた日本政府は、すぐに明治天皇自身が見舞いに駆けつけるよう手配し、日本を離れる際も自身で見送りました。大国ロシアの皇太子に対して小国日本の国民しかも警察官が暗殺{{ruby|未遂|みすい}}<ref>殺そうとした相手が死ななかったことを言います。</ref>をおかしたということで、ロシアが攻めてくるかもしれない、そして、当時の日本ではロシアに勝てるはずがないということで、日本国内は、大騒ぎになりました。
:明治政府は、犯人を死刑に処してロシア政府に対して謝罪の意も示そうとしました。
:ところが、当時の[[#刑法|刑法]]では、殺人未遂の最高刑は無期{{ruby|徒刑|とけい}}<ref>現在の言い方では「無期{{ruby|懲役|ちょうえき}}」、一生、刑務所に入れられる刑です。</ref>で、死刑とすることはできません。そこで、政府は、天皇や皇室に暴行などを加え死傷させた場合に適用される{{ruby|大逆|たいぎゃく}}罪を適用するよう裁判所に要請しました。しかし、これは「法律に定められていること以外を罪としてはならない」という近代法の原則「{{ruby|罪刑|ざいけい}}{{ruby|法定|ほうてい}}主義」に反します。大審院院長<ref>現在の最高裁判所長官に相当します。</ref>{{ruby|児島惟謙|こじまいけん}}は、事件の裁判所に、法律に従って判決を下すよう指示し、その結果、死刑ではなく無期徒刑の判決となりました。
:このことは、ロシアとの外交関係を難しくさせるおそれがありましたが、欧米諸国に対しては、「日本は、法律を厳格に守る国である」ということが印象付けられ、条約改正に向けても信用を得ることができました。
</small>
|}</div>
;<span id="国際社会"/>国際社会での地位の向上
: 1912年(明治45年・大正元年)大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年(大正3年)にヨーロッパの国々を二分した'''[[#全世界を巻き込む戦争 - 第一次世界大戦|第一次世界大戦]]'''が始まりました<ref>第一次世界大戦については[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|次の章]]で詳しく説明します。</ref>。日本は、イギリスやフランスの属する協商国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}<ref name="中国地名"/>や南太平洋の島々を占領しました。1919年戦争は協商国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: 第一次世界大戦は、今までに見られなかったほどの大規模な戦争で、戦場が全国土に広がり多くの工場設備なども失われ、工業生産が止まってしまったりしました。しかし、主な戦場はヨーロッパで、日本への被害はほとんどなかったため、日本は、ヨーロッパの工業生産に代わって、綿糸や綿布といった繊維製品や化学肥料など、さまざまな工業製品を輸出しました。また、日本へのヨーロッパからの輸入が止まったため、それにかわる重工業などが起こるきっかけにもなり、国際取引においても機械など高度な工業製品を輸出できる国となりました。第一次世界大戦の影響で日本の経済は急速に成長しました。
;明治後期から大正にかけての人々の生活や文化と学問
:明治維新後、さまざまな[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#殖産興業|殖産興業]]の取り組みによって、経済的余裕ができ、国民生活は向上し、さまざまな近代文化の進展が見られました。また、欧米から伝わった工業的な製紙法と活版印刷は安価で大量の印刷を可能として、新聞や雑誌が広く普及します。これら新聞や出版業の発達したことと、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|学校制度]]が定着し教育水準が上がったことで、国民の政治参加の意識も高まりました。
:さらに、日清戦争・日露戦争といった戦争で、納税額が多いかどうか、つまり財産が多いかどうかにかかわらず、国民として平等に生命を犠牲にするということが意識され、納税額による選挙権の制限([[#制限選挙|制限選挙]])をやめて、成人であれば誰にでも選挙権が与えられる「普通選挙」を求めた社会運動('''普選運動''')がおこり、1925年(大正14年)すべての男性が選挙権を有する普通選挙法が成立しました。このような、民主化の動きを「'''大正デモクラシー'''」と言います。しかし、まだ女性には選挙権は認められていませんでした。
:<span id="政党政治"/>このように、国民の政治への関心が高まると、選挙で選ばれた国会議員による衆議院の発言力が強まり、[[#内閣総理大臣|内閣総理大臣なども衆議院の意向を受けて選び出されることもありました]]。しかし、一方で議会での議論においては、政党同士の争いもあって、無駄な議論がなされるように見えることもありました。また、政策に関しての、議員の{{ruby|汚職|おしょく}}なども発生するようになりました。
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#文明開化|文明開化]]を受けて、日本には西洋風の文化が広く普及し、明治20年(1887年)代以降になると、それを受けた独自の文化が育ってきました。
:新聞や出版業の発達は上で述べたとおり人々の政治への意識を高めたところですが、そこには、政治的な考えなどだけではなく、人々の娯楽としての小説なども掲載されるようになりました。明治も初めのうちは、歌舞伎の演目などを題材としたものが多かったのですが、1885年(明治18年)、{{ruby|坪内逍遥|つぼうちしょうよう}}は、『{{ruby|小説神髄|しょうせつしんずい}}』をあらわし、人々の普段の生活に近い題材をとりあげる、いわゆる近代文学を提唱しました。またその中で、話し言葉と書き言葉の間の大きな違いから、もっと平易で話し言葉に近い言葉を使うよう進められました。これを{{ruby|言文一致|げんぶんいっち}}運動といいます<ref>ただし、今でも話し言葉と書き言葉は同じものではありません。</ref>。このような動きのなかで、多くの近代文学というものが生まれました。その中には、1895年(明治28年)に『たけくらべ』を書いた{{ruby|樋口一葉|ひぐちいちよう}}のような女性もいました。その後、{{ruby|森鴎外|もりおうがい}}や{{ruby|夏目漱石|なつめそうせき}}があらわれ、近代文学が確立します。特に、夏目漱石が1905年(明治38年)に初めて書いた小説『{{ruby|吾輩|わがはい}}は猫である』はユーモアに富んだ内容と落語にヒントを得たとされる平易な語り口調で広く普及し、日本語の書き言葉の元になったとも言われています。
:美術の分野では、写実的な西洋絵画や彫刻が日本でも制作されるようになりました。政府は1887年(明治20年)、「東京美術学校<ref name="芸大">「東京美術学校」と「東京音楽学校」は、のちに合併し「東京{{ruby|藝術|げいじゅつ}}大学」となります。</ref>」を設立し、西洋絵画の製作者や指導者を育てました。
:また、音楽の分野でも西洋音楽の受け入れが進み、1890年(明治23年)、演奏家・作曲家や指導者を育てる「東京音楽学校<ref name="芸大"/>」が開校しました。
:学問の分野では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|大学教育]]が定着し、日本の科学技術の水準も世界的なものになってきました。物理学では原子のモデルを提唱した{{ruby|長岡半太郎|ながおかはんたろう}}、数学の分野では{{ruby|高木貞治|たかぎていじ}}といった世界的に評価される研究者も登場するようになりました。
:特に、人々の生活に密着した医学の分野では、世界的に進みつつあった細菌学の分野で多くの成果が見られ、破傷風の治療法の研究やペスト菌の発見をおこなった'''[[小学校社会/6学年/歴史編/人物事典#北里柴三郎|{{ruby|北里柴三郎|きたざとしばさぶろう}}]]'''、{{ruby|赤痢|せきり}}菌を発見した{{ruby|志賀潔|しがきよし}}、黄熱病や梅毒の研究で知られ、ノーベル生理学・医学賞の授賞候補ともなった'''[[小学校社会/6学年/歴史編/人物事典#野口英世|{{ruby|野口英世|のぐちひでよ}}]]'''のように国際的な研究者がでてくるようになりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|[[ファイル:Noguchi Hideyo.jpg|thumb|120px|right]]
'''【脱線 - 覚えなくてもいい話】<span id="野口英世"/>野口英世<small>
:本文に書いたとおり、野口英世は、国際的に活躍した細菌学者で、現在、その肖像が1000円札に使われている人です。子供の頃から大変苦労して勉強して、多くの業績を残した人で、皆さんの中で、野口英世の伝記を読んだことのある人も少なくないでしょう。ここでは、野口英世の生涯について簡単に紹介して、なぜ彼が偉人とされているかをお話ししたいと思います。
:1876年(明治9年)、英世<ref>元の名は「清作」で「英世」は22歳になって改名したものですが、ここでは、「英世」で統一します。</ref>は福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)に生まれます。貧しいというほどではありませんが、決して余裕のある家の生まれではありませんでした。英世は1歳の時に{{ruby|囲炉裏|いろり}}に落ち、左手に大{{ruby|火傷|やけど}}を負います。ただれた皮膚で指がくっついて開かなくなるというひどいものでした。英世は、学校に上がるようになると、このことでいじめられました。しかし、英世の学校の成績はとても素晴らしいものでした。英世の家計では、上級の学校に出すのは難しく、普通は小学校を出て働きに出るとことだったのですが、これを惜しんだ教師や地域の人がお金を出し合って、上の学校へ進ませました。また、火傷あとが不便であろうと、やはりお金を出し合って、まだ珍しかった西洋医術による手術を受けさせ、左手を使えるようにしました。英世はこの手術の成功に感激したことがきっかけで医師を目指すこととなりました。
:1896年(明治29年)英世は上京し、医学を学びます。1900年(明治33年)米国に渡り、研究を始めます。そして、アメリカを拠点として基礎医学の分野で数々の業績をあげ世界的な名声を得て、何回かノーベル生理学・医学賞の候補者ともなりました。
:1918年(大正7年)以降は{{ruby|黄熱|おうねつ}}病の研究に打ち込み、黄熱病の流行地域である南アメリカ各国やアフリカに渡って研究を続けます。しかし、黄熱病の研究中に自身もその病にかかり、1928年(昭和3年)アフリカのイギリス植民地ゴールド・コースト(現:ガーナ共和国) アクラで亡くなります。
:野口英世が偉人とされるのは、
:*庶民の出身であるにもかかわらず、高い能力で医者・研究者の地位についた<ref>大学以上の高等教育を受けさせることは当時の庶民にはめったにないことでした。また、英世の出身地会津は、戊辰戦争で官軍に抵抗し、政府などに関係者も少なく、薩長などの出身者より不利なところもありました。</ref>。
:*体に受けたハンディキャップにも負けず、努力して勉強した<ref>当時、家が貧しくても、軍隊に入って勉強するという方法もありましたが、英世の場合、このやり方は難しかったと考えられます。</ref>。
:*能力を世に出そうと、周囲の人が協力した。
:*日本ではなく、国外の研究所を拠点として国際的な活躍をした。
:というところにあると思います。野口英世の業績自体は、その後の医学の発展によって否定されたものも少なくはありませんが、目標に向けて努力する姿には見習うものがあると思います。
</small>
|}</div>
:日本の経済力が大きくなることにともなって、人々の暮らしもだんだん豊かなものになっていきましたが、この時期に、大きな災害に見舞われてもいます。
:まず、<span id="スペインかぜ"/>1918年(大正7年)から1920年(大正9年)にかけて世界中で流行した'''スペインかぜ'''といわれるインフルエンザの大流行です。当時は第一次世界大戦の交戦中であったため、軍人を中心に広く行き来し世界中で流行しました。全世界で30%にあたる5億人が感染し、少なくとも1700万人の死者がでたものと推定されています。日本においてもこの3年間で約40万人程度の死者が出ました<ref>最近のコロナ禍で、2020年から2022年7月現在の死者の累計数が約3万人であることと比較してみてください。</ref>。
:もう一つは、<span id="関東大震災"/>1923年(大正12年)9月1日、南関東一円を襲った'''関東大震災'''です。マグニチュード7.9〜8.3と推定される大地震<ref>1000年に1度と言われる2011年東日本大震災のマグニチュードは9.0で特別ですが、1995年阪神淡路大地震のマグニチュードは7.3くらいです。</ref>で、約1万人が倒れた建物の下敷きになって亡くなり、約9万人が、地震ののちに発生した火災で亡くなりました。
== 世界の変化3 ==
:'''この節は、小学校で学習する範囲を超えていますが、昭和以後の日本の歴史に大きく関わる第二次世界大戦がなぜ起きたのか、その後、「世界」はどうなったのかということを理解できていないと、昭和以降の日本の歴史を深く理解することはできません。'''
:'''この節では、「ナショナリズム」「社会主義・共産主義」「資本主義」とはなにかということについては理解しておいてください。ここでは細かいところを覚えるのではなく、大きな流れを頭のかたすみに置けるようにし、次の章を読み進めてください。'''
=== ナショナリズムと社会主義・共産主義 ===
==== 20世紀初めの世界 ====
:[[File:World 1898 empires colonies territory.png|thumb|650px|1898年の世界<br>国旗は上から、イギリス、フランス、スペイン、ポルトガル、オランダ、ドイツ、トルコ、ベルギー、ロシア、日本、清、オーストリア、デンマーク、スウェーデン、アメリカ、イタリアの順です。]]
:18世紀から19世紀にかけて、ヨーロッパや北アメリカを中心に[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|'''産業革命'''が起こって経済を工業が大きく動かす社会になりました]]。また、[[#世界の変化2_-_市民革命|欧米の'''市民革命'''をきっかけに経済力を持った市民が国の政治に参加するようになり、国民全員が国の活動に参加する'''国民国家'''が誕生しました]]。日本も、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#明治維新と武士の社会の終わり|明治維新で一つの国民国家になり、富国強兵・殖産興業をスローガンとして、国内経済の近代工業化を進めました]]。
:一方、国民国家をつくりあげ、産業革命で大きな経済力を得た欧米の各国(ここでは、『{{ruby|先進国|せんしんこく}}』と呼んでおきましょう。)は、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#帝国主義|各国の工業製品の材料と{{ruby|市場|しじょう}}を求め、アフリカやアジアの、まだ、国民国家としてまとまっていない国や地域に進出し、ほとんどの地域を植民地にしていました]]。
==== ナショナリズム(民族運動) ====
:近代的な工業は、先進国を中心に進みましたが、やがて、製品を各地に売るため、また、原材料を輸送するため鉄道が各地に伸びて、近代社会は世界各地に広がり人々の生活を変えていきました。植民地となった地域でも近代的な教育が行われ、自由や平等といった人権の考え方が普及します。また、新聞などの出版物により人々のさまざまな考えが、広く伝わるようになります。
:植民地となっている地域で、このような知識の高まりが広がると、人々の中に、「どうして、私たちは、言葉や生活習慣の違う人たちに支配されなければならないのか」「私たちの作ったものは、安く買われて、先進国のものを高く買わないといけないのか」という考えが起こってきて、「独立して、自分たちの国を作ろう」という主張が芽生えます。この考えやこの考えに基づく運動を「'''ナショナリズム'''(民族主義・民族運動<ref>「ナショナリズム(Nationalism)」は、「ナショナル(National; ネイション(Nation; 国民・民族)の)」+「イズム(ism; 主義)」という意味です。国民主義とも訳されます。</ref>)」といいます。
:ナショナリズムは、最初、西ヨーロッパに隣接するオーストリア=ハンガリー帝国(「オーストリア帝国」と略します)やオスマン帝国の領土<ref>オーストリア帝国は、もともとヨーロッパの中でも最も強力な国の一つで、プロシアを中心としたドイツ帝国の成立まではドイツ民族の中心でした。この時代においても、中部ヨーロッパに広い領土を持つ国です。また、オスマン帝国は、15世紀に起こったトルコ民族が中心の国で、中東から北アフリカにかけてのイスラム世界を広くおさめ、ヨーロッパもバルカン半島まで領土としていた大国です。両国とも、19世紀にあっても広い領域を支配していましたが、近代化が遅れていました。</ref>であった中部ヨーロッパや東ヨーロッパ('''バルカン半島'''と呼ばれる地域を含みます)で盛んとなり、これが、第一次世界大戦の大きな原因となります。
:第一次世界大戦終結後は、アジア・アフリカの各地に広がり、世界各地で独立運動が展開されます。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="バルカン半島"/>バルカン半島<small>
[[File:Karte Suedosteuropa 03 01.png|thumb|200px|太線でかこまれた地域がバルカン半島です。色の濃い地域が民族や宗教が入り混じっている地域になります。]]
:バルカン半島は、ヨーロッパ中部、ドナウ川より南のアドリア海と黒海にはさまれた地域で、南は狭い海峡を隔ててアナトリア半島に面しています。歴史的には、古代ギリシア文明が栄えた地域であり、それに引き続いて古代ローマの文化が栄え、アナトリア半島との海峡のそばには、中世まで栄えた東ローマ帝国の首都コンスタンティノープル(ビザンティウム)が建設され、後にオスマン帝国の首都イスタンブールとなります。
:バルカン半島は、このように西にドイツやイタリアなどの西ヨーロッパ社会、東にロシアなどのスラブ社会、南にトルコなどのイスラム社会にかこまれ、東西ヨーロッパと西アジアを結ぶ交通の重要な地域であったため、それらの大きな勢力が波のように寄せたり引いたりする地域でした。また、この地域は山がちで、盆地が多く、各盆地ごとに生活する社会ができあがり、大変複雑な状態になっていました。スラブ系民族が多かったのですが、それに、ラテン系民族や、ギリシア系民族が混ざり、一部にはアジア系の民族もいました。また宗教もカトリックとギリシア正教にイスラム教の三大勢力が入り組んでいました。
:19世紀以降、人々がナショナリズムをとなえはじめ、各地で独立運動が起こります。この独立運動も運動の中での対立もあって、まとまることがなく、過激な行動も見られるようになりました。こうして、バルカン半島は『ヨーロッパの火薬庫』と呼ばれるようになりました。
</small>
|}</div>
==== 社会主義と共産主義 ====
:[[File:Marx7.jpg|thumb|150px|カール・マルクス]]
:<span id="労働運動"/>先進国国内にあっては、工業が発展するにつれて多くの{{ruby|労働者|ろうどうしゃ}}が生まれました。工場では工場労働者、石炭の炭鉱や鉄鉱石の鉱山では鉱山労働者、港で貨物の積み下ろしをする港湾労働者などです。産業革命前は、たとえば職人などは技術を長年にわたって習得する必要がある反面、技術を習得した職人は、代わりになる人を探すのが難しいという特徴がありましたが、産業革命以降の労働者の多くは単純な作業が多く、それができる人は数多いので経営者の都合で雇うこともクビにすることも簡単にできるようになりました。そのため、経営者など(労働者に対して{{ruby|資本家|しほんか}}という言い方をします)に比べて、多くの労働者は非常に貧しい生活となることが一般的でした。労働者は、自分たちの待遇(安定して雇われること、十分な賃金をもらえることや安全な労働環境など)を改善するために'''{{ruby|労働組合|ろうどうくみあい}}'''を結成し、集団で経営者と交渉したり、場合によっては'''ストライキ'''を起こすなどして資本家に対抗したりしました('''{{ruby|労働運動|ろうどううんどう}}''')。そのように、社会が変わっていくのを受けて、自由な経済活動を制限してでも、人々の平等な生活が送れる社会をめざすべきであるという'''{{ruby|社会主義|しゃかいしゅぎ}}'''の考えが生まれます。[[#世界の変化2 - 市民革命|市民革命]]は、国王や世襲の貴族といった身分社会から「自由」に活動できる権利を求める社会の変化でしたが、この自由には、工場を作ったり、物を取引する経済的な自由を含みます。自由な経済活動の結果、貧富の差が生じることについて、これをしかたがないことと認める考え方を、社会主義者は批判して、'''{{ruby|資本主義|しほんしゅぎ}}'''と名づけました。さらに、社会主義の中から、19世紀の半ばドイツ生まれの経済学者'''カール・マルクス'''は『{{ruby|資本論|しほんろん}}』を書いて、一層過激な'''{{ruby|共産主義|きょうさんしゅぎ}}'''をとなえました。
:<span id="共産主義"/>共産主義とは、簡単にいうと、農地や工場といった経済的な価値を生み出すものは、人々の共有にしてしまって、全ての人たちが働くことからのみ収入を得る<ref>この考えは、「働かざる者食うべからず」というスローガンに現れています。これは、働かないで怠けているものは食べるべきでない(=生きるべきでない)ととらえられがちですが、第一には、たとえば、地主が土地を小作人に貸したり、財産の利子や配当収入だけで生活できるような資本家を攻撃した言葉です。</ref>平等な社会を目指すという考え方です。それを実現するためには、資本家が持っている財産をうばって、分けあたえるということが必要になります。これは、革命であって、共産主義は、目指す社会を実現させるためには、革命が必要だと主張しました。この考え方は、世界中の多くの労働者の支持を得た一方で、ほとんどの資本家や、資本家が強く関わっている当時の各国の政府を強く警戒させました。また、社会主義や共産主義は、全ての人民が平等という考えが根本にありますから、君主制や民族主義とはあいいれないもので、<span id="反社会主義"/>王国や天皇制に親しみのある人たちや同じ民族だけで助け合おうとする人たちと敵対しましたし、また、平等な社会を作るためには、各個人の自由は多少制限されても仕方がないという考えであるため、人としての自由な行動を大事に思う人たちとも対立しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="イノベーション"/>新たな科学・技術の発展<small>
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|人々のくらしが「産業革命」で大きく変わったことは、前にお話ししたとおりですが]]、1860年頃から1910年くらいまでの間に、「産業革命」と同じくらい、またはそれ以上の科学技術上の大きな発展が見られ、さらに人々の生活を大きく変えます<ref>歴史学者の一部では、これを「'''第二次産業革命'''」と呼びます</ref>。
#'''新たな動力の発明''' - 「産業革命」において、中心となった動力は、主に石炭を使用した蒸気機関でしたが、19世紀半ば以降、これに、新たな動力源が加わります。
#;{{ruby|内燃機関|ないねんきかん}}
#:内燃機関とは、ガスまたは霧状にした燃料を爆発させ、それによって急激にふくらむ力を動力にする装置です。皆さんがよく知っているところでは、自動車のガソリンエンジンやディーゼルエンジンが代表的なものです。
#:蒸気機関の発明は主にイギリスでなされましたが、内燃機関はドイツで発展しました。1880年代、ゴットリープ・ダイムラーとカール・ベンツは各々で実用的なガソリンエンジンを発明し、それに少し遅れて、ルドルフ・ディーゼルがディーゼルエンジンを発明します。内燃機関は、蒸気機関に比べて小型化が容易なので、これを動力とした自動車が誕生しました<ref>ゴットリープ・ダイムラーとカール・ベンツは、各々で自動車の会社を作ります。1926年それらの会社が合併しダイムラー・ベンツができます。現在のメルセデス・ベンツ・グループ(「メルセデス」はダイムラー社製の車の愛称です)です。</ref>。蒸気機関は石炭に加え水が必要でしたが、内燃機関は燃料だけで足りるため、船舶などの動力は早期に内燃機関に切り替わりました。
#:<span id="飛行機"/>また、小型で高出力という特徴を活かして、1903年アメリカで'''ライト兄弟'''がガソリンエンジンを動力とした'''飛行機'''を飛ばすことに成功しました。
#:このように、内燃機関は小型にでき利用できる範囲も広いということで蒸気機関に取って代わっていきました。そのため、石油が資源としての重要性を大きく増すことになりました。
#;{{ruby|電動機|でんどうき}}(モーター)・発電機
#:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#電気|電気が長い間研究されていたことは、前々章に書いたとおりです]]。
#:電気を研究しているうちに、電気を通すことで磁石の力(磁力)が生じることが発見されました。すなわち、「電流」を通すと、「磁力」が発生し、鉄などが電磁石にくっつく(=「運動」する)ということです。1831年ファラデーは、これをまとめた、電気と磁気と運動の関係を発見します。この発見をもとに工夫して、電流を流して連続した回転運動を得る電動機(モーター)が発明されました。
#:逆に磁力のあるところで電線を運動させると、電線に電流が生じます。これを、応用して発電機が発明されました<ref>モーターに力を加えて回すことで電流を得ることができます。</ref>。電力は、それまで、化学反応を使った電池によって得ていましたが、大量に得ることは困難でした。発電機の発明によって、大量の電力を連続で安定的に得ることができるようになり、次に述べる「電気の実用化」が可能になります。
#'''電気の実用化'''
#:こうして、大量の電気が供給されるようになると、産業や生活に大きな変化がもたらされます。
#:産業の面では、電気を使うことでメッキや化学産業などが起こりました。また、精錬するのに電気を必要とするアルミニウムが実用化になりました。
#:生活の面では、1880年頃に'''トーマス・エジソン'''が電球を発明するなど、身近な家庭電化製品が発明されていきました。また、同じ時期に'''アレクサンダー・グラハム・ベル'''が実用的な電話を発明しています。
#:1900年頃、音声を電波<ref>何もない空間を電気の変化を伝える性質である電波は、1887年に発見されました。</ref>を使って無線で飛ばす技術が開発され、それを応用して、1920年、'''ラジオ放送'''が開始しました。
#'''化学工業'''
#:植物が育つには{{ruby|窒素|ちっそ}}が必要ですが、空気中の窒素は、豆類の根につく細菌類が化学合成し物質として固定するのを待つしかありませんでした。1909年にドイツで完成されたハーバー・ボッシュ法によって、空気中の窒素から直接、化学肥料の材料となるアンモニアを合成できるようになりました。効果的な化学肥料を製造できるようになり、農作物の収穫が格段と大きくなりました。これは、「水と石炭と空気からパンを作る方法」と言われました。
#:また、従来は火薬(黒色火薬)の原料として{{ruby|硝石|しょうせき}}が使われていて、地下資源として採掘するなど、容易に入手できるものではありませんでしたが、アンモニアが大量に手に入るようになったことと、黒色火薬より強力な窒素系の火薬が開発されたことで<ref>代表的なものは、ニトログリセリンです。これを安全に取り扱えるようダイナマイトを発明したアルフレッド・ノーベルは、莫大な遺産でノーベル賞を創設しました。</ref>、火薬製造は原料の輸入に頼らず、強力な火薬が大量に製造できるようになりました。
</small>
|}</div>
=== 全世界を巻き込む戦争 - 第一次世界大戦 ===
==== 先進国の間の対立 ====
:[[File:3goku kyosho & 3goku domei.png|thumb|250px|三国同盟と三国協商]]
:先進国のうちでも、イギリスやフランスは、いち早く近代的な国家の仕組みを整え、産業革命も世界に先がけて成しとげていました。そのため、国内では余る生産力を海外に向けるためアフリカやアジアの多くの地域を植民地として、綿花など原材料の生産地として、そして製品の市場としていました。19世紀半ば頃から他のヨーロッパの他の国も近代工業化がすすんできました。特に、1871年に北部のドイツを統一してできたドイツ帝国では、[[#イノベーション|科学技術のめざましい発展]]が見られ、国の経済力は、すでにフランスを圧倒し、イギリスと肩を並べるものになっていました。しかし、イギリスやフランスは国外にも多くの植民地をはじめとした国際的な市場を持っていたのですが、近代化の遅れたドイツは植民地をあまり持っておらず、国外への展開に困難がありました。
:ドイツ帝国は、同じドイツ系のオーストリア帝国、隣国のイタリア王国と同盟し('''三国同盟'''<ref name="イタリア">'''イタリア王国'''もドイツと同じように市民革命ののちに封建諸国でばらばらであったイタリア民族を統一した王国で、イギリス、フランスを追いかけていた国の一つです。このような共通点から、ドイツと同盟を結びますが、オーストリアとの間に領土問題が存在したため、最初は参戦せず、後に、協商国側で参戦します。</ref>)、オスマン帝国とはかって、バルカン半島からトルコを経由して中東までの鉄道を敷設し、この地域の経済を有利に進めようともくろみました。ドイツから中東までを独占し、さらに、そこからアジア・アフリカに進もうとする考えです。
:この考えに、アジアやアフリカを大きな市場としていたイギリスやフランスは警戒します。
:また、東にあるロシアは、バルカン半島での[[#南下政策|南下政策]]がクリミア戦争で{{ruby|挫折|ざせつ}}した後、極東に目を向けていたのですが、[[#日露戦争|日露戦争]]に敗れたため、再び、クリミヤ半島からの南下に政策を変えます。今度は直接攻め入るのではなくバルカン半島のスラブ国家や独立運動家を支援しオーストリア帝国やオスマン帝国に対抗させる形での介入です。イギリスとフランスは、ドイツを{{ruby|牽制|けんせい}}<ref>相手に自分の行動を見せつけ、勝手な行動をとれなくすること。</ref>するため、ロシアとの間に{{ruby|協商|きょうしょう}}条約<ref>「協商」は「相談をする」と言う意味で、「協商条約」は外交にあたって相談をするということを約束した条約です。「商業」と直接の関係はありません。</ref>を結びます('''三国協商'''<ref>英仏・仏露・英露、各々の協商条約などを合わせたものです。イギリスとロシアは日露戦争までは敵対していましたが、ロシアが敗戦したことをきっかけに、同盟関係を結びます。</ref>)。
:こうして、バルカン半島を中心に、ドイツ・オーストリア・オスマン帝国とその東西の国との緊張が高まってきました。
==== 初めての『世界大戦』 ====
:バルカン半島中西部のボスニア・ヘルツェゴビナは、長い間、オスマン帝国の領土で、住民もイスラム教に改宗した人々(ボスニア人)が多い地域でしたが、19世紀後半以降オーストリア帝国が支配する領域となっていました。
:1914年6月28日、オーストリア皇太子がボスニア・ヘルツェゴビナのサラエボを訪問した際、隣国セルビア王国のボスニア系の独立運動家に暗殺されました('''サラエボ事件''')。これが、きっかけとなって、7月28日オーストリア帝国はセルビア王国に宣戦布告し、セルビアを支援するロシアも参戦、これを受けてオーストリアと同盟を組むドイツが参戦、そして、ドイツと敵対するフランスとイギリスが参戦し全ヨーロッパにおける戦争『'''第一次世界大戦'''<ref>これから、25年後、次の世界中を巻き込んだ大きな戦争が起こり、それを『'''第二次'''世界大戦』と呼ぶため、この戦争を『'''第一次'''世界大戦』とよびます。この当時は、『世界戦争』・『大戦争』と呼んでいました。</ref>』が始まりました。なお、以下、ドイツ・オーストリア側を「'''同盟国'''<ref name="イタリア"/>」、イギリス・フランス・ロシア側を「'''協商国'''」と言うこととします。
:第一次世界大戦はそれまでの戦争とことなって『'''国家総力戦'''(または、'''総力戦''')』と言われます。それまでの戦争は、あくまでも軍隊と軍隊の戦いで、軍事拠点をめぐっての争いや、双方の主力部隊がある戦場で戦う(会戦)もので成り立っていて、そのような場所以外が戦火の被害を受けることは少なく、また、軍人以外で戦争で死傷する人は限られていました。しかし、第一次世界大戦になると、戦争は軍人以外の国民も巻き込んだものとなります。兵士は国民の中から徴兵されたものですし、銃砲や砲弾・銃弾、それに用いる火薬といった兵器の製造力も国内の工業力に支えられます。兵器だけではなく、軍服や戦場に持ち込む食糧もそうです。また、兵器やその他の物資を輸入に頼るにしても、その資金は国内の工場の生産物を輸出することで得られるものです。そのため、敵対する国は、相手の軍隊を攻撃するだけではなく、相手の国の生産力を下げるため、戦闘の機会に工場や輸送に用いる鉄道・港湾・船舶を破壊するようになります。さらに、相手が戦争を継続する力を落とすために、軍隊どうしの戦場ではないところの住宅等も破壊するようになりました。総力戦になって、軍人以外の民間人の死傷者や家屋などの財産の破壊が、それ以前と比べられないほどに増大しました。
:戦争は、ヨーロッパだけでなく世界中を巻き込みました。1914年11月ロシアと対抗し、イギリスに脅威を感じていたオスマン帝国は同盟国として参戦しました。こうして戦争は北アフリカなどにも広がりました。
:日本は、日英同盟から、イギリスに要請され協商国側に参戦し、ドイツの租借地である中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。
:[[File:Cheshire Regiment trench Somme 1916.jpg|thumb|250px|第一次世界大戦の塹壕(ざんごう)]]
:第一次世界大戦では、{{ruby|塹壕|ざんごう}}という攻めてくる敵に対して地面に人が隠れられる溝を掘って<ref>フランスとドイツの間には、大西洋からスイスまでの全長700kmにわたる塹壕が両陣営でできました。</ref>、守りを固める戦法をとったため、お互い戦闘が進まず、戦争は長期化し、同盟国・協商国ともども国内経済は衰退し、国民生活はだんだん貧しいものとなっていました。一方で、当時の最先端の科学技術は次々と投入されます。化学工業の発展は火薬の力を強くしていましたし、毒ガスの開発にも応用されました。また、内燃機関を使ったトラックなどが、馬車などに代わって兵士を移動する手段となり、また、道の状態にかかわらず進むことができる、戦車なども開発されました。そして、[[#飛行機|発明されたばかりの航空機]]も戦場に投入されました。こうした、最新の科学技術の投入は、戦場をますます{{ruby|悲惨|ひさん}}なものにしていきました。
:1917年になって、状況が大きく変わります。
:アメリカ合衆国(以下、しばしば、「米国」と略します)は、もともと、「<span id="モンロー主義"/>南北アメリカ大陸のことに、ヨーロッパの国に口を出させない。その代わり、米国もヨーロッパの政治に口を出さない」という外交の方針があって、また、移民の国であるため、ドイツ系の国民も多く、中立の立場にいました。しかし、ドイツがイギリス周辺を航行する船を、軍事に関する物品を輸送する船であると潜水艦で攻撃し沈めるという作戦をとったところ、米国人を多数乗せた船を沈めると言う事件などがあって、この年に、協商国側として参戦します。米国の参戦は軍隊が増えたことに加えて、米国の工場など生産設備が無傷であったため、イギリスやフランスといった協商国には物資がどんどん補給され、協商国側に有利となりました。
:一方で、東側のロシアとの戦争も一進一退の状態でしたが、バルト海と黒海を同盟国側が封鎖したため、ロシアは輸出入がとだえ、国内の物資不足とインフレが社会問題となっており、各地でストライキや暴動が起こり、1917年2月に皇帝ニコライ2世は退位します('''ロシア革命''')。このような中、[[#共産主義|共産主義]]の運動家である'''ウラジーミル・レーニン'''らが政府を握り、同年12月にはドイツとの戦争を停止します。
:こうして、ドイツは、東側での戦争は終結したのですが、イギリス・フランスと戦う西側では、1918年になると米国の支援により優勢になり、また、[[#スペインかぜ|スペインかぜ(インフルエンザ)が大流行]]するなどして、戦闘の継続は困難なものとなり、11月ドイツ皇帝ヴィルヘルム2世はオランダへ{{ruby|亡命|ぼうめい}}<ref>国外に逃げ出すことを言います。</ref>、オーストリア皇帝カール1世も退位し、第一次世界大戦は事実上終了しました(正式な終了は講和条約が締結された翌年1919年となります)。
:同盟国であったドイツ帝国、オーストリア帝国、オスマン帝国は崩壊し、それぞれ共和国となりました<ref>オスマン帝国は、1918年に降伏し、1922年にトルコ革命により共和制となります。</ref>。
:第一次世界大戦は、協商国側の戦死者 553万人、戦傷者 1283万人、行方不明者 412万人、同盟国側の 戦死者 439万人、戦傷者 839万人、行方不明 363万人。民間人の死亡者、協商国側 360万人、同盟国側 314万人と人類が経験したことがない規模の犠牲者を出すことになりました。
==== 第一次世界大戦後の世界 ====
:1919年フランスのパリで第一次世界大戦の講和会議が開かれました。その結果、
:#敗戦国は戦勝国に賠償金を支払う。
:#領土の一部を戦勝国に割譲する。
:#オーストリア帝国、オスマン帝国が支配していた中央ヨーロッパ・バルカン半島、中東から北アフリカにかけての地域について、独立またはイギリスやフランスの保護領とする。
:#敗戦国の軍備は数年間制限する。
:などが決められました。
:また、このような戦争が2度と起こらないようにと米国大統領ウッドロウ・ウィルソンが提唱し、常設の国際的な協議機関「'''{{ruby|国際連盟|こくさいれんめい}}'''」が誕生します。国際連盟の運用は理事会が行いますが、日本は理事会の常任理事国にイギリス、フランス、イタリアと共に選ばれました。しかし、これを提唱した米国は、[[#モンロー主義|従来の国の方針]]から国内の反対があって国際連盟に加盟しませんでした。
;第一次世界大戦がもたらしたもの
:第一次世界大戦は、人類の歴史が始まって以来の大量の戦死者や戦傷者を出し、当時最も発展していたヨーロッパの国土が荒廃するなど、世界に大きな影響を与えました。その結果として以下のような変化が生じました。
:#ヨーロッパの衰退とアメリカ合衆国・日本の台頭
:#:同盟国であるドイツはもちろん協商国側のフランスは戦場として荒廃し、イギリスも大量の兵力を送り出すなどして疲弊するなど、ヨーロッパの生産力が弱まりました。代わって戦場とならなかった米国は、協商国に兵器他大量の物資を輸出した他、ヨーロッパ諸国が輸出していた地域に代わって輸出することになり、大きな経済的発展を見せることとなりました。その国力を背景に、国際政治で主導的な地位に立ちました。しかし、[[#モンロー主義|もともとの国の方針]]から、国際政治に十分に参加できませんでした。
:#:日本も、国民国家を成立させ産業革命をなしとげた世界でも数少ない国のひとつでしたが、ヨーロッパから遠く離れ、第一次世界大戦の影響を受けることはなく、米国ほどではありませんがヨーロッパの国々が輸出できない分をうめあわせるなどして経済が発展し、[[#国際社会|国際社会でも有力な国となりました]]。
:#<span id="軍縮"/>国際機関の誕生と軍縮の傾向
:#:それまでの国際外交は、国対国の関係でしたが、国際関係が複雑になると、関係する国がまとまって討議するようになりました。第一次世界大戦以前から、電気通信に関して万国電信連合(現.国際電気通信連合)がありましたが、戦後、世界平和を目標とする国際連盟が結成され、平和以外にも人権などについて各国が参加して討議されるようになりました。
:#:第一次世界大戦の{{ruby|惨状|さんじょう}}から、各国共に{{ruby|厭戦|えんせん}}<ref>戦争を嫌うこと。</ref>ムードになっていたため、軍縮に関する国際会議が何回も開かれました。
:#ナショナリズムの実現
:#:ナショナリズムの高まりは、国際的に認められるようになり、オーストリア帝国やオスマン帝国が支配した領域から、同じ民族で集まった国が数多く独立することになりました。しかし、アジアやアフリカの諸国は、まだ独立が認められず、第一次世界大戦後はアジア各地での独立運動が見られるようになります。
:#:また、先進国自身においても一種の民族主義が盛んになります。これは、国外資本が進出してくることや社会主義の民族主義を否定する動きに反発するものです。これが、のちに[[#ファシズム|ファシズム]]と呼ばれるものになります。
:#社会主義国家の誕生
:#:ロシア革命後、ロシア国内では内戦が起こり、1922年レーニンが率いる共産党が国内をまとめ、世界で初めての[[#共産主義|社会主義・共産主義]]を国の仕組みに持った'''ソビエト社会主義共和国連邦'''<ref>「ソビエト(ソヴェート)」はロシア語で「評議会」の意味で、ロシア革命前後に人々が集まって政治の方針を決めた団体が母体になっていることを意味します。「社会主義共和国」は社会主義を政治の方針とする共和国ということです。最後の「連邦」は、そのような社会主義共和国がいくつか集まって1国となっているということを言っており、ロシア・ソビエト連邦社会主義共和国、ウクライナ社会主義ソビエト共和国、白ロシア・ソビエト社会主義共和国など、いくつかのの国で構成されていました。</ref>('''ソビエト連邦'''、'''ソ連''')が誕生しました。
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代|明治維新と近代国家日本の成立-幕末・明治時代]]
|[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|戦争への道と現代の民主国家日本の誕生-昭和から現在まで]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#12]]
dgjo2th1pji8attta9qdx4soem3u9h3
205971
205970
2022-07-29T06:16:11Z
Mtodo
450
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--1889年前後から「国際的地位が向上」(1920年国際連盟成立 常任理事国入り)まで--><!--(コ) 大日本帝国憲法の発布,日清・日露の戦争,条約改正,科学の発展などを手掛かりに,我が国の国力が充実し国際的地位が向上したことを理解すること。-->
★時代区分:明治時代後期、大正時代</br>
★取り扱う年代:1889年(大日本帝国憲法の発布)から1925年(昭和改元)まで
; 大日本帝国憲法の制定
: 明治維新の改革は、五箇条の御誓文の方針によりなされましたが、改革が進み近代文明国としての形がひととおり整ってきたところ、さらに政治の形を確かなものとし、人々の権利を明らかにするため、'''憲法'''の制定と選挙によって選ばれた議員による議会を開くことが求められました。'''板垣退助'''や'''大隈重信'''は国会の開設を求めて、政党をつくりました。'''伊藤博文'''を中心とした明治政府は欧米諸国の憲法を研究し、1885年に'''内閣制度'''が創設され、1889年に'''大日本帝国憲法'''が発布されました。翌年憲法の精神に基づいて、初めて総選挙が行われ'''帝国議会'''(国会)が召集されました。
; 日清戦争と日露戦争
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、遼東半島を占領するなど戦いを有利に進め、翌年、'''陸奥宗光'''外務大臣と清の提督である李鴻章が交渉し、清の日本への賠償や台湾・遼東半島の割譲などを定めた下関条約が締結され講和が結ばれました(日本の勝利)。
: 遼東半島はロシア、ドイツ、フランスが反対したので割譲は取りやめとなりましたが(三国干渉)、そこにロシアが進出し、それを警戒する日本と対立しました。1904年日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や中国東北部(満州)で戦いました。日本は多くの犠牲者を出しましたが、'''東郷平八郎'''がロシアのバルチク艦隊をやぶるなどして有利な位置となり、翌年、'''小村寿太郎'''外務大臣とロシアのウィッテが交渉し、ロシアの中国からの撤退、南満州鉄道の譲渡、南樺太の割譲などを定めたポーツマス条約が締結され講和が結ばれました(日本の勝利)。
; 条約改正と国際社会での地位の向上
: 幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。まず、政府は、国内の法整備を進め、公正な裁判が行われることを示し、日清戦争終結後の1899年治外法権を撤廃しました。そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、1911年関税自主権も回復しました。
: 1912年大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年にヨーロッパの国々を二分した'''第一次世界大戦'''が始まりました。日本は、イギリスやフランスの属する連合国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。1919年戦争は連合国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: このころになると、日本の科学技術の水準も世界的なものになり、'''野口英世'''のように国際的な研究者がでてくるようになりました。
|}
=== 世界の変化2 - 市民革命 ===
:日本が鎖国をしている間、ヨーロッパやそれを受けたアメリカ大陸では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|産業革命]]ともうひとつの大きな社会変革が起こっていました。
;市民革命以前のヨーロッパ
:ヨーロッパの国々も長い間、生まれながら身分によって職業などが決められ、多くの人々は農民や職人として土地(荘園)の領主(「{{ruby|封建|ほうけん}}領主」といいます)や都市の貴族などに服従する社会でした。また、この時代は、ローマ教皇を頂点とする'''カトリック教会'''が、強い影響力や荘園を持っていたというのは、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#キリスト教|前にお話ししたとおり]]です。この時代を{{ruby|封建|ほうけん}}制<ref>土地(領地)を間に介して、主従関係を結ぶ制度を言います。日本でも、[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#封建制|鎌倉時代の「'''ご恩と奉公'''」の関係]]はこれにあたりますし、安土桃山時代から江戸時代にかけての[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#石高制|石高制]]も封建制の一種です。</ref>の時代と言います。
:14世紀くらいになると、都市を中心に商業が発展してきて、豊かな財産を持って、荘園領主よりも強い影響力を持つようになる者もでてきました。15世紀「[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#大航海時代|大航海時代]]」になると、さらに、貿易や植民地からの収益で都市の商人などは勢力を強くしました。また、繊維工業などを中心に、人を集めて工場などを経営する人たちもあらわれました。これらの、封建領主や貴族ではない階層の人たちを、「{{ruby|市民|しみん}}階級」といいます。これらの、市民階級の経済力を背景に、ヨーロッパの各地で強い力を持った国王が誕生し、伝統的な荘園領主などを圧倒しました。これを、{{ruby|絶対王政|ぜったいおうせい}}の時代といいます。絶対王政の王国は、政治を行う政府は専門の役人をおき、戦争に備えて軍隊を平時から常設するようになりました<ref>封建制の時代は、国王でも自分の荘園をおさめられる程度の役人がいればよく、戦争などでは、その都度、封建領主に命令して軍隊(騎士)を集めていました。</ref>。
;市民革命と近代国家
:市民階級が台頭してくると、封建制度以来の身分制度に対して、生まれながらの身分にかかわらず人間は'''平等'''であり、'''自由'''に発言や経済活動をする'''権利'''('''人権''')を持っているという考え方が広がってきました。また、封建制の時代はおさめている荘園の収穫から政治を行っていましたが、絶対王政の政府は、市民階級からの税金で成り立っていたのですが、税金を取られる市民たちは国王の都合だけで徴税されることに不満を持ち始めました。こうして、17世紀以降、市民階級は絶対王政と対立するようになります。市民階級は代表を出して、政治に参加するようになります。'''議会'''('''国会''')の始まりです。さらには、国王の圧政に対しては、市民階級が集まって武力をもって王政を倒したりしました。これを「'''{{ruby|市民革命|しみんかくめい}}'''」と言います。
:市民革命は、17世紀のイギリスに始まりました ('''清教徒革命'''など)。ひきつづいて、北アメリカ大陸のイギリス植民地が、独立を求めて戦争を起こしアメリカ合衆国が成立しました ('''アメリカ独立戦争''')。そして、1789年代表的市民革命である'''フランス革命'''が起こります。市民革命は、フランスの'''ナポレオン'''が、フランスの革命政府を打ち倒そうとする周辺の国々を逆にせめた戦争によってヨーロッパ各地に広がります。
:市民革命自体は、各国の状況によって様々な結果を生みました。革命後に王政が復活した国もあります。しかし、市民革命で国の政治に身分によらない一般の市民が参加できるようになって、広く国全体から資金を集める仕組みができたこと、また、兵隊に国民が動員されるようになったこと('''[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#徴兵制|徴兵制]]''')から、数が多く強力な軍隊を持つようになり、それまでの、封建的な国や絶対王政の国を圧倒するようになりました。これらの古い体制の国々も、市民階級を国の政治に参加させるように、国の仕組みを変えるようになりました。まず、国民の権利を保障し、国民の代表が参加する'''議会'''を設置して国の政治に参加できるようにしました。そして、そのことを'''憲法'''という、強い力を持った法律に定めるようになりました。
:国が、国王などの所有物ではなく、そこに住む国民によって成立するという近代国家('''国民国家''')の誕生です。
=== 大日本帝国憲法の制定 ===
[[File:Taisuke ITAGAKI.jpg|thumb|125px|板垣退助]]
[[File:OKUMA_Shigenobu.jpg|thumb|125px|大隈重信]]
[[file:Itō Hirobumi.jpg|thumb|125px|伊藤博文]]
:明治になって、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#四民平等|身分制度がなくなり]]<ref name="華族">実際は、公家や大名、明治政府に大きな貢献のあった人たちについては、{{ruby|公爵|こうしゃく}}・{{ruby|侯|こう}}爵・{{ruby|伯|はく}}爵・{{ruby|子|し}}爵・{{ruby|男|だん}}爵といった貴族の爵位が与えられ、その一族は「{{ruby|華族|かぞく}}」と呼ばれました。華族には、いくつかの特権が認められましたが、華族の数は比較的少ないうえ、江戸時代ほど極端に大きな差ではありませんでしたし、社会的な貢献をすることで、誰でも華族となる機会はありました。また、「士族」と「平民」の間で異なる取り扱いは一切ありませんでした。</ref>、人々は才覚や努力によって、どのような職業に就くこともできるようになりました。人々は、学業をはじめとしたさまざまな努力をして、いろいろな分野で活躍するようになりました。
:明治政府は、さまざまな改革を強引に進めたため民衆と対立することも少なくありませんでした。このような民衆の不満は、[[#士族の反乱|士族の反乱]]の後は、こうした近代思想を取り入れて政治参加を求める{{ruby|自由民権|じゆうみんけん}}運動につながります。自由民権運動は、憲法の制定と、民衆が政治に参加できる選挙を通じた国会の開設をもとめるようになります。自由民権運動は、征韓論で下野した'''[[小学校社会/6学年/歴史編/人物事典#板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]]'''と1881年(明治14年)に'''[[小学校社会/6学年/歴史編/人物事典#伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]]'''らと対立して政府を離れた'''[[小学校社会/6学年/歴史編/人物事典#大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]]'''らに主導されました。
:大隈や板垣が主導する自由民権運動の主張は、国民の自由と権利を保障する憲法の制定とそれに基づく国民の選挙による議会(民選議会)の開設及び議会による政府の統制でした。伊藤博文ら明治政府を主導する人たちは、自由民権運動の考えをそのまま受け入れると、政策を政府が思うとおりに進めることができず、富国強兵などの改革政策に差しさわりがあると考え、この運動を弾圧しました。一方で各地の有力者や、新たな産業の成功者が登場してきており、明治政府はこれらの人々の支持を受けたいと思っていました。また、欧米諸国から見ると、民選議会が政治を進めない国は遅れているとの意識があり、不平等条約改正にあたっても説得させることができない理由の一つとなっていました。
:1881年(明治14年)明治政府は、明治天皇名で「国会開設の勅諭」を下し、1889年(明治22年)に国会を開設することを国民に約束しました。これを受けて、自由民権運動の活動家は政党を結成し、同年には自由党が板垣退助を中心として、翌1882年(明治15年)立憲改進党が大隈重信らによって結成されました。
:一方、伊藤は、1882年(明治15年)、憲法制定・国会開設の模範を研究するためためにヨーロッパを視察しました。そこで、伊藤は議会が発達したイギリスや、人権思想が進んでいたフランスではなく、ドイツ帝国の憲法を模範にすることとしました<ref>この頃のドイツは、日本が藩に分かれていたのと同様に、多くの王国・貴族領に分かれていたものを、各地で統一の要望が上がり、その中で有力となったプロイセン国王を皇帝とするドイツ帝国が成立していました。ドイツ帝国は、イギリスやフランスよりも、皇帝(それを受けた行政機関)の権限が強く、議会の力はおさえられていました。ドイツは、英仏に比べ工業化などが遅れていたために、それを推進するために、強い行政の力が必要であったためです。また、各個人の人権についても制限がありました。伊藤が、英仏ではなく、ドイツを国の形の模範としたのは、このように、日本と状況が似ていたためです。</ref>。帰国した伊藤は憲法制定の準備をはじめ、1885年(明治18年)に内閣総理大臣を長とする'''内閣制度'''が創設され、1889年(明治22年)に'''大日本帝国憲法'''(明治憲法<span id="明治憲法"/>)が発布されました。翌1890年(明治23年)7月1日憲法の精神に基づいて<ref>明治憲法が、実際に有効となる(施行される)のは、1890年(明治23年)11月29日なので、まだ、憲法の下の選挙・国会の招集ではありませんでした。</ref>、初めて総選挙が行われ、11月25日'''帝国議会'''(国会)が召集されました。
:明治憲法は以下のことを定めています。
:#天皇は、日本の統治者とされます。
:#国会は、天皇に「協賛」して法律や予算を定める機関とされます。
:#*法律や予算を決めるのは天皇であって、国会は、その補助をしているに過ぎないという考えを表しています。
:#*緊急と認められる時には、天皇<ref>実際は、行政府である政府の仕事です。</ref>は国会の議決によらず、法律に代わる勅令を出すことができました。
:#国会は、貴族院と衆議院により成り立ち、衆議院は選挙によって選ばれた議員により構成され、貴族院は皇族・華族<ref name="華族"/>及び勅命<ref>天皇の命令。実際は、その時の行政府による指名。</ref>で任名された議員により構成されます<ref>ただし、このような議会の成り立ちは、世界的に見ても珍しいものではありませんでした。明治憲法の元になったドイツ帝国の議会が貴族院と衆議院で成り立っていましたし、そもそも、議会政治の模範とされるイギリスも世襲貴族による「貴族院」と選挙で選ばれた議員による「庶民院」で構成されていて、現在もその伝統が残ります。このことで、身分で選ばれた議員による議会を「上院」、選挙で選ばれた議員による議会を「下院」という習慣ができました。アメリカ合衆国には独立当時から貴族制度はありませんでしたが、上院は各州の代表(元々は州議会が選出していましたが、現在は州民の選挙によります)、下院は州にかかわらず選挙で選ばれた議員による議会と、上院と下院で性質を変えていたりします。時代が下るにつれ、選挙で選ばれた議員の決めることが優先されるという政治習慣(下院優先の原則)が有力になります。</ref>。
:#*衆議院の優位などの定めはなく、各議院で議決されなければ法律などは成立しませんでした。
:#*<span id="制限選挙"/>衆議院議員の選挙権は、憲法を定めた当時は、一定以上の税金を納めた者にのみ認められていました。
:#国務大臣は天皇を{{ruby|輔弼|ほひつ}}(助言し助ける)すると定められます。また、内閣総理大臣についての定めはありません。
:#*<span id="内閣総理大臣"/>内閣総理大臣は、天皇が指名する建前でしたが、実際には、元老といわれる人達<ref>元老には、最初は伊藤博文など維新の功臣が、後代には長期に首相を務めた者がなりました。</ref>が協議したり、後には首相経験者などで構成する重臣会議で決議して天皇に{{ruby|推薦|すいせん}}して決まるものでした。
:#軍隊(陸海軍)は天皇が直接まとめひきいるとされました。また、国民には徴兵に応じる義務がありました。
:#*軍隊は、国会や内閣の命令を聞く必要がないと解釈されるようになります。
:#様々な国民の人権が認められましたが、それは、法律の範囲内で認められるものとされました。
:#*例えば、女性には選挙権は認められることはありませんでした。また、民法で家族や相続は家制度によったため、女性は不利な取り扱いを受けました。
:#*後に制定される治安維持法は、政治思想(特に[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで#社会主義と共産主義|社会主義思想・共産主義思想]])を取り締まる法律でした。
=== 日清戦争と日露戦争 ===
==== 日清戦争 ====
[[File:《马关条约》签字时的情景.jpg|thumb|right|200px|none|下関条約の調印の様子。 向かって左に着席するのが日本の伊藤全権、右が清国の李全権]]
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします<ref>「急激な近代化に成功した日本」と書きましたが、これは、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|前の章の『産業革命』の節]]に書いた「欧米各国は、産業革命で経済力が大きくなりましたが、さらにそれを大きくするため、国内で生産する工業製品の{{ruby|市場|しじょう}}と原材料となる農産物や鉱物資源を欧米諸国の外に求めるようになりました。」の部分を日本に当てはめたものです。しかし、この頃の日本の工業力はまだ近代化が始まったばかりで、外国に市場を求めるまで成長していません。</ref>。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年(明治27年)朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、黄海沿岸の軍事拠点を攻撃し、遼東半島を占領するなど戦いを有利に進め、翌1895年(明治28年)、'''[[小学校社会/6学年/歴史編/人物事典#陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]]<span id="陸奥宗光"/>'''外務大臣と清の提督である{{ruby|李鴻章|りこうしょう}}が交渉し、以下の事項などを定めた'''下関条約'''が締結され講和が結ばれました(日本の勝利)。
:#清は、朝鮮の独立を認める。
:#清は、日本へ台湾と{{ruby|遼東|<small>りょうとう/リャオトン</small>}}半島<ref name="中国地名">中国の地名については、日本語の音読みで読む方法と現代の中国語に近い音で読む方法があります。後者は、「音読みだと日本人にしか通じない」と言う配慮から現代の中国語に近い音を当てると言う意図なのかもしれませんが、実際の発音とは異なっているので中国人にも伝わらないでしょう。ですから、ここでは、原則として音読みで音をふりますが、{{ruby|北京|ペキン}}、{{ruby|上海|シャンハイ}}のように現代中国語音に似せた言い方が一般的になったものもありますので、それらは、よく使う言い方をカタカナで表記します。</ref>を割譲する。
:#清は、日本へ賠償金2億両<ref>1両は銀37.3gで、当時の日本円に換算して約3億円。これは、政府の年間予算の約3倍にあたります。</ref>を支払う。
:#*日本は、この賠償金を資金として大規模な製鉄所を福岡県に作りました('''{{ruby|八幡|やはた}}製鉄所''')。
:清はそれまでも、イギリスやフランスと争って負けてはいましたが、欧米諸国は、それでも清国は世界最大の人口をかかえる巨大な国<ref>当時、3億人を超える程度の人口があったものとされています。</ref>であって、実力を発揮すれば欧米諸国であっても勝てるものではないと思われていた<ref>これを、「清国は『眠れる獅子』だ」という言い方をします。</ref>ので中国本土への進出はおさえられていましたが、近代化後間もない日本に敗れたため、欧米諸国は清国への進出を強め、中国大陸の多くの地域で欧米諸国の半植民地と言ってよい状態になりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうして清国に勝てたのでしょう<small>
:戦争の勝敗の原因は、様々な要素があって、簡単に決めることができるものではありませんが、その時代の当事国の違いを比較することで、国の体制などの特徴を理解することができます。ここでは、なぜ、清国はやぶれ、日本は勝つことができたのかを考えてみましょう。
:戦争の勝敗を決める要素の第一は双方の国の規模です。大きな国の方が当然有利です。このころ、日本の人口はようやく4千万人程度のところ、清国の人口は3億人を超えていました。農業に適した広大な国土を有しており、近代化が遅れていたとは言え、税収などは日本よりもはるかに大きかったと考えられます。日清戦争の前も、世界最大級の軍艦をドイツから購入していたりします。相手の政権を倒すまでの全面戦争と言われる戦争であれば、日本は、勝つことは難しかったでしょう。
:一方で、清国は皇帝の軍隊は{{ruby|八旗|はっき}}・{{ruby|緑営|りょくえい}}と言われる17世紀の軍隊のままで、これは、日本の武士同様将兵が生まれながらの家柄で決まっている軍隊でしたが、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#アヘン戦争|アヘン戦争]]以後の近代的戦争や民衆の反乱<ref>銃器などを欧米の商人から買っていました。</ref>では対応できなくなっていました。そこで、地方に派遣された高官は地元の有力者に呼びかけ、その地方の税を流用するなどして、地元の若者を集め、私的に軍隊を組織していました。一種の義勇兵ですが、実際は金を払って集めた{{ruby|傭兵|ようへい}}も少なくなかった言われています。
:また、清国は皇帝が独裁する事が建前であったため、外交と軍事がばらばらの動きをし、軍事も統一的な動きはできていませんでした。
:日本の場合、中央政府が全国民から国の制度として兵を集め、政府の予算で設備をそろえ、組織だった訓練を実施した軍隊を有していました。また、「天皇の軍隊」「日本国の軍隊」としての『国民』意識も高く、これが、士気につながりました。
:このような違いから、黄海およびその沿岸での戦闘という局地的な戦争では、国の規模の違いにかかわらず勝つことができたということです。
</small>
|}</div>
==== 日露戦争 ====
[[画像:Location-of-Liaodong-Peninsula.png|thumb|150px|left|遼東半島]]
[[ファイル:Kisaburō Ohara, Europe and Asia Octopus Map, 1904 Cornell CUL PJM 1145 01.jpg|thumb|300px|right|1904年当時、日本人がロシアにもったイメージを伝える風刺地図。]]
:下関条約で、日本は、台湾などとともに中国本土の遼東半島の割譲を受けましたが、ロシア、ドイツ、フランスが反対し('''{{ruby|三国干渉|さんごくかんしょう}}'''<ref>「干渉」とは、「他のものの動きに影響を与える」という元々の意味から、このような場合、「他国の政治に口を出す」という意味で使われています。</ref>)、遼東半島の割譲は取りやめとなりました。ところが、その遼東半島にはロシアが進出し、{{ruby|大連|だいれん}}、{{ruby|旅順|りょじゅん}}<ref name="中国地名"/>といった都市を建設し始めました。
:ロシアは、ユーラシア大陸を横断する鉄道('''シベリア鉄道''')を建築し、ヨーロッパとアジアの間の物流をおさえようとしていました<ref>日本からイギリスやフランスまで、船ならば45日〜50日かかったところを、シベリア鉄道を使えば15日程度で移動できました。</ref>。シベリア鉄道は、もともと、ロシア領内をウラジオストックまでのものですが、ロシアは遼東半島支配に伴って、大連まで{{ruby|東清|とうしん}}鉄道を建設し、その途中である{{ruby|満州|まんしゅう}}地域<ref>現在は、中国東北部と呼ばれる地域です。もともと、「満州(満洲)」とは清王朝をおこした民族(女真族)の名前で地名ではありませんが、「満洲族が起こった土地」と言うことで通称として用いられるようになりました。このころから、1945年頃まで、満州は日本にとって歴史上重要な土地となります。</ref>を実質的に植民地とするなど支配を強めます。そして、満州に接する朝鮮(日清戦争後、{{ruby|大韓帝国|だいかんていこく}})の政治にも介入するなどしはじめました<ref>ロシア進出の背景には、大韓帝国の王室のメンバーや{{ruby|両班|ヤンバン}}と呼ばれる高級官僚らが、朝鮮の政治・経済に段々影響を強めてくる日本を警戒して、それに対抗するため、ロシアと通じていたということもあります。</ref>。
:日本は、ロシアの動きに対して警戒しました。ロシアが満州地域でやっていることは、他のヨーロッパ諸国がアジアやアフリカでやっていて、日清戦争後に中国本土で進められている植民地化であって、そのままでは、満州地域だけでなく、朝鮮半島も、さらには日本までもが、植民地となってしまうのではないかと考えました<ref>これは、大げさな話ではなく、アフリカの植民地化はこの時期に進み、19世紀末には独立国は、エジプト周辺、エチオピア、リベリアだけになっていましたし、アジアも1887年にフランスがベトナムを植民地にするなどして、独立を保っていたのはシャム王国(現在のタイ王国)くらいになっていました。</ref>。
:日本政府では、伊藤博文に代表される日露の衝突を外交努力などで避けるべきとするグループがあった一方で、陸軍に対して大きな影響を持った'''[[小学校社会/6学年/歴史編/人物事典#山県有朋|{{ruby|山県|やまがた}}(山縣){{ruby|有朋|ありとも}}]]'''や首相の{{ruby|桂太郎|かつらたろう}}、外交官出身の外務大臣'''[[小学校社会/6学年/歴史編/人物事典#小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]]<span id="小村寿太郎"/>'''らは、戦争は避けられないので、それに向けての準備をするという態度に出ました。日本国内では、戦争に向け軍艦を整備したり新たな兵器の開発を行う一方で、ロシアの中央アジアからインドへの南下などを警戒するイギリスと同盟を結び、ロシアとの戦争に備えました。
[[file:Nichirojp.png|thumb|300px|日露戦争の経過]]
:1904年(明治37年)日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や満州で戦いました。ロシアは、モスクワなどから遠い極東に兵や兵器・軍馬・食料などを送るには、シベリア鉄道に頼るしかないので、すぐに戦場で攻撃の体制を作ることはできません。一方で、日本も、兵などを送るには日本海を渡らなければならないので、この地域の{{ruby|制海|せいかい}}権<ref>ある地域を自由に航行できるということ。</ref>を握る必要がありました。海軍はロシアの太平洋側の主力艦隊である旅順艦隊をせめ有利な立場になりますが、旅順艦隊は、援軍である世界最大級の艦隊バルチック艦隊<ref>「バルト海」で行動する艦隊なのでバルチック艦隊といいます。</ref>が到着するまで、旅順港に待機することになりました。日本陸軍は遼東半島南端から東進鉄道沿いに北上、朝鮮国境からの軍とあわせ、ロシア軍を満州地域北部までおしもどしました。また、旅順に引き込んだ艦隊がバルチック艦隊と合流すると制海権が危うくなるので、'''{{ruby|乃木希典|のぎまれすけ}}'''<ref>死後、乃木神社にまつられます。乃木坂などの地名にも残っています。</ref>が率いる陸軍の軍団が、要塞となった旅順を攻撃します。この旅順を囲む戦いは、日露戦争の中でも多くの日本兵の犠牲を出しましたが1905年(明治38年)1月に降伏し、バルチック艦隊のみを迎えうつことになりました。そうして、5月に'''[[小学校社会/6学年/歴史編/人物事典#東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]]'''がひきいる日本海軍は日本海海戦でバルチック艦隊をやぶり、日本海の制海権を安定したものにしました。
:日本は、戦争を有利に進めたとことで、アメリカ合衆国大統領'''セオドア・ルーズベルト'''に講和の仲介を依頼し、日本からは'''[[#小村寿太郎|小村寿太郎]]'''が、ロシアからは'''ウィッテ'''(前蔵相、のちに初代首相)が、米国のポーツマスに出向き、講和会議が開かれました。1905年9月5日、以下の事項を決めた条約('''ポーツマス条約''')が結ばれ、ロシアは中国から撤退し、日露戦争は日本の勝利で終わりました。
:# ロシアは日本の朝鮮半島における優越権を認める。
:# 日露両国の軍隊は、鉄道警備隊を除いて満州から撤退する。
:# ロシアは樺太の北緯50度以南の領土を永久に日本へ譲渡する。
:# ロシアは東清鉄道の内、旅順-長春間の南満洲支線と、付属地の炭鉱の{{ruby|租借|そしゃく}}<ref>土地などを、借り受けるという意味ですが、実質的な支配が行われ、「租借地」というのは、「植民地」とほぼ同義語になります。</ref>権を日本へ譲渡する。
:#*この路線は、「南満州鉄道」と改称され、日本の満洲進出の基礎となります。
:# ロシアは関東州(旅順・大連を含む遼東半島南端部)の租借権を日本へ譲渡する。
:# ロシアは沿海州沿岸の漁業権を日本人に与える。
:ポーツマス条約では下関条約と異なり賠償金の支払いはありませんでした。一部の日本国民はこれを不満に思って、暴動をおこすものもありました。しかし、国民には知らされていませんでしたが、戦争を有利に進めていたとはいえ、これ以上は財政上ほとんど無理な状態になっていて、すぐにでも戦争をやめなければならない状態になっていました。ロシアはそれを見越して、敗戦国でありながら、比較的有利な条件で講和条約を結んだといえます。
:しかし、この結果、満州や朝鮮半島に対するロシアの脅威は去りましたので、日本は、この地域への進出を高めます。特に、満州は石炭や鉄鉱石の地下資源が豊かな地域であったため鉱山開発を盛んに行いました。
:韓国については、政治的な不安定を理由に日本の属国化が進められ、1905年12月には統監府が設置され、伊藤博文が初代統監に就任しました。
:1909年 (明治42年)、伊藤博文はロシアとの外交交渉のため満州のハルビンに出向きましたが、そこで、朝鮮民族主義者に暗殺されます。それまで、韓国に対しては朝鮮民族に対し強硬的に望む人たちと、穏健に進めるべきという人たち(伊藤博文もその意見でした)が対立していたのですが、伊藤博文が暗殺されたことで、強硬派の勢いを増し、1910年(明治43年)8月に、日本は大韓帝国を併合しました('''{{ruby|韓国併合|かんこくへいごう}}''')。
:<span id="辛亥革命"/>日露戦争は、日本とロシアの戦争でしたが、その戦いは清国の領土でなされました。清国は、もはやそれを止める力を失っていました。中国の人々は、外国に国土を侵される不安が高まり、中国の人々が政治参加をする国をつくるため、1911年{{ruby|孫文|そんぶん}}が主導者となって革命を起こしました('''{{ruby|辛亥革命|しんがいかくめい}}''')。翌1912年清王朝は滅ぼされ、アジアにおいて史上初の独立した共和制国家である{{ruby|中華民国|ちゅうかみんこく}}が誕生しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="南下政策"/>ロシアの南下政策<small>
:ロシアは、ヨーロッパの国の中では最も東にあって、17世紀にシベリアを征服し太平洋に達する領土を持つ大きな国ではあったのですが、ヨーロッパ中心部から離れていたので産業革命などはおくれてつたわりました。また、国土の多くが北にあったため、冬にほとんどの港が凍結するなどして、通商などにも支障が出るため、南へ勢力を伸ばす政策をとっていました。これを、「『{{ruby|不凍港|ふとうこう}}』を求めての南下」と言ったりします。19世紀、{{ruby|黒海|こっかい}}を勢力におさめようと、1853年トルコ(オスマン帝国)の領土であったバルカン半島などで戦争(クリミヤ戦争<ref>ロシアは、バルカン半島を南下しようとしたのですが、イギリス・フランスの参戦により押し戻され、クリミア半島が主要な戦場となりました。クリミヤ半島は、現在(2022年4月)、ロシアの侵攻で話題になっているウクライナの黒海地域です。</ref>)を起こしましたが、トルコをイギリスやフランスが支援し、この戦争ではロシアは敗北します<ref>クリミア戦争で、戦傷者の救護を組織的に行い、看護師による近代看護を確立したのが、フローレンス・'''ナイチンゲール'''です。</ref>。その後のバルカン半島の各民族の独立運動に合わせ、1877年オスマン帝国と戦争(露土戦争)をし、これに勝利しバルカン半島を経由したロシアの南下路が開けます。しかし、軍事的な勝利を収めたロシアの勢力拡大に対して欧州各国が警戒感が広がったため、ドイツ帝国の首相ビスマルクが主導し、1878年ベルリン会議を開き、ロシアの南下政策を止め、ロシアはバルカン半島方面の南下を一旦断念します。
:そこで、ロシアは、ヨーロッパ方面から世界へ出ることをあきらめ、東側のシベリアを経由して中央アジアや太平洋への進出をもくろみます。その結果のひとつが、三国干渉及びそれに続く遼東半島への進出です。
:しかし、日露戦争に敗れたため、ロシアは、ふたたび西へ目を向けます。そこで、バルカン半島から東に勢力を伸ばそうとしていたドイツとぶつかります。これが、第一次世界大戦の原因の一つとなります。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうしてロシアに勝てたのでしょう<small>
:ここでは、なぜ、ロシアはやぶれ、日本は勝つことができたのかを考えてみましょう。
:双方の国の規模ですが、日本とロシアでは、人口で3倍、国家予算で10倍、常備軍で5倍という、大きな差がありました。また、清国と違い、ロシアの軍隊はロシア皇帝の下に組織された近代的な軍隊でした。実際、戦没者はロシアが81千人程度のところ、日本は88千人と日本の方が被害が大きかったりしています<ref>当時は、戦場の衛生環境などが悪く、病気になって亡くなる兵士も少なくありませんでした。日露とも、戦没者の1/4が病没者で。特に日本の病没の原因としては、ビタミンB欠乏症の「{{ruby|脚気|かっけ}}」が目立っていて、これは、日本陸軍の医療関係者が、当時新興の栄養学を軽視したためとも言われています。この医療関係者には、小説家の森鴎外もいました。</ref>。
:このように、日本に大きな被害が出た戦争であっても、ロシアが強気に出られなかったのは、サンクトペテルブルクやモスクワなどがある本拠地であるヨーロッパから、鉄道で10日以上かかる遠隔の地で兵隊を送ろうとしても、1日に数千人程度が限界だったからでしょう<ref>戦争において装備に大きな差がなければ、数の違いは大きく影響します。</ref>。ロシアにとっては、バルチック艦隊が日本海の制海権をにぎって、日本が大陸に兵隊や物資を送れなくすることで逆転をもくろんだのですが、日本海海戦でその希望もなくなり、ロシアは戦争の継続をあきらめたのだと思われます。
:バルチック艦隊は強力な艦隊でしたが、日英同盟により、インドなどイギリス植民地への寄港<ref>当時の軍艦の動力は蒸気機関であっったため、石炭と真水を大量に積み込む必要がありました。</ref>が拒否されたため、大西洋から、アフリカの南を回ってインド洋経由で7ヶ月もの航海ののちの到着でした。また、ロシアは身分制が残っており、士官は貴族階級など上流階級の出身者が多く、それに対して、水兵などは農民出身の者や都市の労働者などが多く、航海での待遇の差もあり、航海中から対立も生じていました。
:この上流階級と庶民階級の対立は、海軍だけでなく、陸軍でも見られました。なにより、ロシア国内の一般的な生活でも見られたのです。いくら国の規模が大きいとはいえ、戦争は国民生活に商品不足・インフレーションの影響を与えます。もともと、民衆からの不満がみられ、革命運動もあったところ、日露戦争によるインフレーションと数々の戦いで敗戦したとの知らせで民衆の間に暴動が頻発し、1905年には革命と言っていい状態になっていました。このような国内の不安定さから、ロシア政府は講和を急ぐようになり、日本の勝利につながったといえます。
</small>
|}</div>
=== 条約改正と国際社会での地位の向上 ===
[[File:Chikamatsu Kiken buto no ryakuke.jpg|thumb|300px|鹿鳴館における舞踏会を描いた浮世絵]]
;不平等条約改正の歩み
:幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。
:明治政府は、文明開化が進んで欧米並みの文明国になったことを示すため、さまざまなアピールをします。たとえば、1883年(明治16年)に外務卿{{ruby|井上馨|いのうえかおる}}は、'''{{ruby|鹿鳴館|ろくめいかん}}'''という、外国からの重要な来訪者や外交官を接待するための社交場を建設し、舞踏会を開いたりしていました。鹿鳴館での舞踏会などには、政府高官の夫人や娘なども参加しましたが、当時はドレスなどの洋装、欧米風の応対のマナーやエチケット、また、ダンスなどは全く一般的ではなく、必死の訓練などがあったと言われています。しかし、このような取り組みは、欧米人には「{{ruby|滑稽|こっけい}}」と感じられたと言う記録も残っており、あまりうまくいきませんでした。
:一方で、政府は、まず[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#治外法権|治外法権]](領事裁判権)の撤廃のため、国内の法整備を進め、公正な裁判が行われることを諸外国に示そうとしました。領事裁判権の裁判は犯罪に関するものなので、法律に関するフランス人の[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#お雇い外国人|お雇い外国人]]ボアソナードが指導してフランスの法律をもとにして、1880年(明治13年)に犯罪とその刑罰に関する刑法<span id="刑法"/>と刑事手続と裁判を定めた治罪法<ref>後に、刑事訴訟法に改正されます。</ref>が制定され、1882年(明治15年)施行されました。1889年(明治22年)には、[[#明治憲法|明治憲法]]が発布され法制度が欧米並みに整理されたことが、国際的に示されました。外務大臣'''[[#陸奥宗光|陸奥宗光]]'''は、各国と粘り強く交渉し、まず、1897年(明治30年)イギリスとの間で治外法権を撤廃する条約を結び、日清戦争終結後の1899年(明治32年)すべての国との間で治外法権を撤廃しました。
:そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、外務大臣'''[[#小村寿太郎|小村寿太郎]]'''が主導し、1911年(明治44年)関税自主権も回復しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】大津事件<small>
:1891年(明治24年)、日本を訪問中のロシア帝国皇太子ニコライ(後の皇帝ニコライ2世)が、滋賀県大津市で警備中の警察官に突然サーベルで切りつけられケガを負うと言う事件がありました。
:驚いた日本政府は、すぐに明治天皇自身が見舞いに駆けつけるよう手配し、日本を離れる際も自身で見送りました。大国ロシアの皇太子に対して小国日本の国民しかも警察官が暗殺{{ruby|未遂|みすい}}<ref>殺そうとした相手が死ななかったことを言います。</ref>をおかしたということで、ロシアが攻めてくるかもしれない、そして、当時の日本ではロシアに勝てるはずがないということで、日本国内は、大騒ぎになりました。
:明治政府は、犯人を死刑に処してロシア政府に対して謝罪の意も示そうとしました。
:ところが、当時の[[#刑法|刑法]]では、殺人未遂の最高刑は無期{{ruby|徒刑|とけい}}<ref>現在の言い方では「無期{{ruby|懲役|ちょうえき}}」、一生、刑務所に入れられる刑です。</ref>で、死刑とすることはできません。そこで、政府は、天皇や皇室に暴行などを加え死傷させた場合に適用される{{ruby|大逆|たいぎゃく}}罪を適用するよう裁判所に要請しました。しかし、これは「法律に定められていること以外を罪としてはならない」という近代法の原則「{{ruby|罪刑|ざいけい}}{{ruby|法定|ほうてい}}主義」に反します。大審院院長<ref>現在の最高裁判所長官に相当します。</ref>{{ruby|児島惟謙|こじまいけん}}は、事件の裁判所に、法律に従って判決を下すよう指示し、その結果、死刑ではなく無期徒刑の判決となりました。
:このことは、ロシアとの外交関係を難しくさせるおそれがありましたが、欧米諸国に対しては、「日本は、法律を厳格に守る国である」ということが印象付けられ、条約改正に向けても信用を得ることができました。
</small>
|}</div>
;<span id="国際社会"/>国際社会での地位の向上
: 1912年(明治45年・大正元年)大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年(大正3年)にヨーロッパの国々を二分した'''[[#全世界を巻き込む戦争 - 第一次世界大戦|第一次世界大戦]]'''が始まりました<ref>第一次世界大戦については[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|次の章]]で詳しく説明します。</ref>。日本は、イギリスやフランスの属する協商国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}<ref name="中国地名"/>や南太平洋の島々を占領しました。1919年戦争は協商国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: 第一次世界大戦は、今までに見られなかったほどの大規模な戦争で、戦場が全国土に広がり多くの工場設備なども失われ、工業生産が止まってしまったりしました。しかし、主な戦場はヨーロッパで、日本への被害はほとんどなかったため、日本は、ヨーロッパの工業生産に代わって、綿糸や綿布といった繊維製品や化学肥料など、さまざまな工業製品を輸出しました。また、日本へのヨーロッパからの輸入が止まったため、それにかわる重工業などが起こるきっかけにもなり、国際取引においても機械など高度な工業製品を輸出できる国となりました。第一次世界大戦の影響で日本の経済は急速に成長しました。
;明治後期から大正にかけての人々の生活や文化と学問
:明治維新後、さまざまな[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#殖産興業|殖産興業]]の取り組みによって、経済的余裕ができ、国民生活は向上し、さまざまな近代文化の進展が見られました。また、欧米から伝わった工業的な製紙法と活版印刷は安価で大量の印刷を可能として、新聞や雑誌が広く普及します。これら新聞や出版業の発達したことと、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|学校制度]]が定着し教育水準が上がったことで、国民の政治参加の意識も高まりました。
:さらに、日清戦争・日露戦争といった戦争で、納税額が多いかどうか、つまり財産が多いかどうかにかかわらず、国民として平等に生命を犠牲にするということが意識され、納税額による選挙権の制限([[#制限選挙|制限選挙]])をやめて、成人であれば誰にでも選挙権が与えられる「普通選挙」を求めた社会運動('''普選運動''')がおこり、1925年(大正14年)すべての男性が選挙権を有する普通選挙法が成立しました。このような、民主化の動きを「'''大正デモクラシー'''」と言います。しかし、まだ女性には選挙権は認められていませんでした。
:<span id="政党政治"/>このように、国民の政治への関心が高まると、選挙で選ばれた国会議員による衆議院の発言力が強まり、[[#内閣総理大臣|内閣総理大臣なども衆議院の意向を受けて選び出されることもありました]]。しかし、一方で議会での議論においては、政党同士の争いもあって、無駄な議論がなされるように見えることもありました。また、政策に関しての、議員の{{ruby|汚職|おしょく}}なども発生するようになりました。
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#文明開化|文明開化]]を受けて、日本には西洋風の文化が広く普及し、明治20年(1887年)代以降になると、それを受けた独自の文化が育ってきました。
:新聞や出版業の発達は上で述べたとおり人々の政治への意識を高めたところですが、そこには、政治的な考えなどだけではなく、人々の娯楽としての小説なども掲載されるようになりました。明治も初めのうちは、歌舞伎の演目などを題材としたものが多かったのですが、1885年(明治18年)、{{ruby|坪内逍遥|つぼうちしょうよう}}は、『{{ruby|小説神髄|しょうせつしんずい}}』をあらわし、人々の普段の生活に近い題材をとりあげる、いわゆる近代文学を提唱しました。またその中で、話し言葉と書き言葉の間の大きな違いから、もっと平易で話し言葉に近い言葉を使うよう進められました。これを{{ruby|言文一致|げんぶんいっち}}運動といいます<ref>ただし、今でも話し言葉と書き言葉は同じものではありません。</ref>。このような動きのなかで、多くの近代文学というものが生まれました。その中には、1895年(明治28年)に『たけくらべ』を書いた{{ruby|樋口一葉|ひぐちいちよう}}のような女性もいました。その後、{{ruby|森鴎外|もりおうがい}}や{{ruby|夏目漱石|なつめそうせき}}があらわれ、近代文学が確立します。特に、夏目漱石が1905年(明治38年)に初めて書いた小説『{{ruby|吾輩|わがはい}}は猫である』はユーモアに富んだ内容と落語にヒントを得たとされる平易な語り口調で広く普及し、日本語の書き言葉の元になったとも言われています。
:美術の分野では、写実的な西洋絵画や彫刻が日本でも制作されるようになりました。政府は1887年(明治20年)、「東京美術学校<ref name="芸大">「東京美術学校」と「東京音楽学校」は、のちに合併し「東京{{ruby|藝術|げいじゅつ}}大学」となります。</ref>」を設立し、西洋絵画の製作者や指導者を育てました。
:また、音楽の分野でも西洋音楽の受け入れが進み、1890年(明治23年)、演奏家・作曲家や指導者を育てる「東京音楽学校<ref name="芸大"/>」が開校しました。
:学問の分野では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|大学教育]]が定着し、日本の科学技術の水準も世界的なものになってきました。物理学では原子のモデルを提唱した{{ruby|長岡半太郎|ながおかはんたろう}}、数学の分野では{{ruby|高木貞治|たかぎていじ}}といった世界的に評価される研究者も登場するようになりました。
:特に、人々の生活に密着した医学の分野では、世界的に進みつつあった細菌学の分野で多くの成果が見られ、破傷風の治療法の研究やペスト菌の発見をおこなった'''[[小学校社会/6学年/歴史編/人物事典#北里柴三郎|{{ruby|北里柴三郎|きたざとしばさぶろう}}]]'''、{{ruby|赤痢|せきり}}菌を発見した{{ruby|志賀潔|しがきよし}}、黄熱病や梅毒の研究で知られ、ノーベル生理学・医学賞の授賞候補ともなった'''[[小学校社会/6学年/歴史編/人物事典#野口英世|{{ruby|野口英世|のぐちひでよ}}]]'''のように国際的な研究者がでてくるようになりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|[[ファイル:Noguchi Hideyo.jpg|thumb|120px|right]]
'''【脱線 - 覚えなくてもいい話】<span id="野口英世"/>野口英世<small>
:本文に書いたとおり、野口英世は、国際的に活躍した細菌学者で、現在、その肖像が1000円札に使われている人です。子供の頃から大変苦労して勉強して、多くの業績を残した人で、皆さんの中で、野口英世の伝記を読んだことのある人も少なくないでしょう。ここでは、野口英世の生涯について簡単に紹介して、なぜ彼が偉人とされているかをお話ししたいと思います。
:1876年(明治9年)、英世<ref>元の名は「清作」で「英世」は22歳になって改名したものですが、ここでは、「英世」で統一します。</ref>は福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)に生まれます。貧しいというほどではありませんが、決して余裕のある家の生まれではありませんでした。英世は1歳の時に{{ruby|囲炉裏|いろり}}に落ち、左手に大{{ruby|火傷|やけど}}を負います。ただれた皮膚で指がくっついて開かなくなるというひどいものでした。英世は、学校に上がるようになると、このことでいじめられました。しかし、英世の学校の成績はとても素晴らしいものでした。英世の家計では、上級の学校に出すのは難しく、普通は小学校を出て働きに出るとことだったのですが、これを惜しんだ教師や地域の人がお金を出し合って、上の学校へ進ませました。また、火傷あとが不便であろうと、やはりお金を出し合って、まだ珍しかった西洋医術による手術を受けさせ、左手を使えるようにしました。英世はこの手術の成功に感激したことがきっかけで医師を目指すこととなりました。
:1896年(明治29年)英世は上京し、医学を学びます。1900年(明治33年)米国に渡り、研究を始めます。そして、アメリカを拠点として基礎医学の分野で数々の業績をあげ世界的な名声を得て、何回かノーベル生理学・医学賞の候補者ともなりました。
:1918年(大正7年)以降は{{ruby|黄熱|おうねつ}}病の研究に打ち込み、黄熱病の流行地域である南アメリカ各国やアフリカに渡って研究を続けます。しかし、黄熱病の研究中に自身もその病にかかり、1928年(昭和3年)アフリカのイギリス植民地ゴールド・コースト(現:ガーナ共和国) アクラで亡くなります。
:野口英世が偉人とされるのは、
:*庶民の出身であるにもかかわらず、高い能力で医者・研究者の地位についた<ref>大学以上の高等教育を受けさせることは当時の庶民にはめったにないことでした。また、英世の出身地会津は、戊辰戦争で官軍に抵抗し、政府などに関係者も少なく、薩長などの出身者より不利なところもありました。</ref>。
:*体に受けたハンディキャップにも負けず、努力して勉強した<ref>当時、家が貧しくても、軍隊に入って勉強するという方法もありましたが、英世の場合、このやり方は難しかったと考えられます。</ref>。
:*能力を世に出そうと、周囲の人が協力した。
:*日本ではなく、国外の研究所を拠点として国際的な活躍をした。
:というところにあると思います。野口英世の業績自体は、その後の医学の発展によって否定されたものも少なくはありませんが、目標に向けて努力する姿には見習うものがあると思います。
</small>
|}</div>
:日本の経済力が大きくなることにともなって、人々の暮らしもだんだん豊かなものになっていきましたが、この時期に、大きな災害に見舞われてもいます。
:まず、<span id="スペインかぜ"/>1918年(大正7年)から1920年(大正9年)にかけて世界中で流行した'''スペインかぜ'''といわれるインフルエンザの大流行です。当時は第一次世界大戦の交戦中であったため、軍人を中心に広く行き来し世界中で流行しました。全世界で30%にあたる5億人が感染し、少なくとも1700万人の死者がでたものと推定されています。日本においてもこの3年間で約40万人程度の死者が出ました<ref>最近のコロナ禍で、2020年から2022年7月現在の死者の累計数が約3万人であることと比較してみてください。</ref>。
:もう一つは、<span id="関東大震災"/>1923年(大正12年)9月1日、南関東一円を襲った'''関東大震災'''です。マグニチュード7.9〜8.3と推定される大地震<ref>1000年に1度と言われる2011年東日本大震災のマグニチュードは9.0で特別ですが、1995年阪神淡路大地震のマグニチュードは7.3くらいです。</ref>で、約1万人が倒れた建物の下敷きになって亡くなり、約9万人が、地震ののちに発生した火災で亡くなりました。
== 世界の変化3 ==
:'''この節は、小学校で学習する範囲を超えていますが、昭和以後の日本の歴史に大きく関わる第二次世界大戦がなぜ起きたのか、その後、「世界」はどうなったのかということを理解できていないと、昭和以降の日本の歴史を深く理解することはできません。'''
:'''この節では、「ナショナリズム」「社会主義・共産主義」「資本主義」とはなにかということについては理解しておいてください。ここでは細かいところを覚えるのではなく、大きな流れを頭のかたすみに置けるようにし、次の章を読み進めてください。'''
=== ナショナリズムと社会主義・共産主義 ===
==== 20世紀初めの世界 ====
:[[File:World 1898 empires colonies territory.png|thumb|650px|1898年の世界<br>国旗は上から、イギリス、フランス、スペイン、ポルトガル、オランダ、ドイツ、トルコ、ベルギー、ロシア、日本、清、オーストリア、デンマーク、スウェーデン、アメリカ、イタリアの順です。]]
:18世紀から19世紀にかけて、ヨーロッパや北アメリカを中心に[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|'''産業革命'''が起こって経済を工業が大きく動かす社会になりました]]。また、[[#世界の変化2_-_市民革命|欧米の'''市民革命'''をきっかけに経済力を持った市民が国の政治に参加するようになり、国民全員が国の活動に参加する'''国民国家'''が誕生しました]]。日本も、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#明治維新と武士の社会の終わり|明治維新で一つの国民国家になり、富国強兵・殖産興業をスローガンとして、国内経済の近代工業化を進めました]]。
:一方、国民国家をつくりあげ、産業革命で大きな経済力を得た欧米の各国(ここでは、『{{ruby|先進国|せんしんこく}}』と呼んでおきましょう。)は、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#帝国主義|各国の工業製品の材料と{{ruby|市場|しじょう}}を求め、アフリカやアジアの、まだ、国民国家としてまとまっていない国や地域に進出し、ほとんどの地域を植民地にしていました]]。
==== ナショナリズム(民族運動) ====
:近代的な工業は、先進国を中心に進みましたが、やがて、製品を各地に売るため、また、原材料を輸送するため鉄道が各地に伸びて、近代社会は世界各地に広がり人々の生活を変えていきました。植民地となった地域でも近代的な教育が行われ、自由や平等といった人権の考え方が普及します。また、新聞などの出版物により人々のさまざまな考えが、広く伝わるようになります。
:植民地となっている地域で、このような知識の高まりが広がると、人々の中に、「どうして、私たちは、言葉や生活習慣の違う人たちに支配されなければならないのか」「私たちの作ったものは、安く買われて、先進国のものを高く買わないといけないのか」という考えが起こってきて、「独立して、自分たちの国を作ろう」という主張が芽生えます。この考えやこの考えに基づく運動を「'''ナショナリズム'''(民族主義・民族運動<ref>「ナショナリズム(Nationalism)」は、「ナショナル(National; ネイション(Nation; 国民・民族)の)」+「イズム(ism; 主義)」という意味です。国民主義とも訳されます。</ref>)」といいます。
:ナショナリズムは、最初、西ヨーロッパに隣接するオーストリア=ハンガリー帝国(「オーストリア帝国」と略します)やオスマン帝国の領土<ref>オーストリア帝国は、もともとヨーロッパの中でも最も強力な国の一つで、プロシアを中心としたドイツ帝国の成立まではドイツ民族の中心でした。この時代においても、中部ヨーロッパに広い領土を持つ国です。また、オスマン帝国は、15世紀に起こったトルコ民族が中心の国で、中東から北アフリカにかけてのイスラム世界を広くおさめ、ヨーロッパもバルカン半島まで領土としていた大国です。両国とも、19世紀にあっても広い領域を支配していましたが、近代化が遅れていました。</ref>であった中部ヨーロッパや東ヨーロッパ('''バルカン半島'''と呼ばれる地域を含みます)で盛んとなり、これが、第一次世界大戦の大きな原因となります。
:第一次世界大戦終結後は、アジア・アフリカの各地に広がり、世界各地で独立運動が展開されます。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="バルカン半島"/>バルカン半島<small>
[[File:Karte Suedosteuropa 03 01.png|thumb|200px|太線でかこまれた地域がバルカン半島です。色の濃い地域が民族や宗教が入り混じっている地域になります。]]
:バルカン半島は、ヨーロッパ中部、ドナウ川より南のアドリア海と黒海にはさまれた地域で、南は狭い海峡を隔ててアナトリア半島に面しています。歴史的には、古代ギリシア文明が栄えた地域であり、それに引き続いて古代ローマの文化が栄え、アナトリア半島との海峡のそばには、中世まで栄えた東ローマ帝国の首都コンスタンティノープル(ビザンティウム)が建設され、後にオスマン帝国の首都イスタンブールとなります。
:バルカン半島は、このように西にドイツやイタリアなどの西ヨーロッパ社会、東にロシアなどのスラブ社会、南にトルコなどのイスラム社会にかこまれ、東西ヨーロッパと西アジアを結ぶ交通の重要な地域であったため、それらの大きな勢力が波のように寄せたり引いたりする地域でした。また、この地域は山がちで、盆地が多く、各盆地ごとに生活する社会ができあがり、大変複雑な状態になっていました。スラブ系民族が多かったのですが、それに、ラテン系民族や、ギリシア系民族が混ざり、一部にはアジア系の民族もいました。また宗教もカトリックとギリシア正教にイスラム教の三大勢力が入り組んでいました。
:19世紀以降、人々がナショナリズムをとなえはじめ、各地で独立運動が起こります。この独立運動も運動の中での対立もあって、まとまることがなく、過激な行動も見られるようになりました。こうして、バルカン半島は『ヨーロッパの火薬庫』と呼ばれるようになりました。
</small>
|}</div>
==== 社会主義と共産主義 ====
:[[File:Marx7.jpg|thumb|150px|カール・マルクス]]
:<span id="労働運動"/>先進国国内にあっては、工業が発展するにつれて多くの{{ruby|労働者|ろうどうしゃ}}が生まれました。工場では工場労働者、石炭の炭鉱や鉄鉱石の鉱山では鉱山労働者、港で貨物の積み下ろしをする港湾労働者などです。産業革命前は、たとえば職人などは技術を長年にわたって習得する必要がある反面、技術を習得した職人は、代わりになる人を探すのが難しいという特徴がありましたが、産業革命以降の労働者の多くは単純な作業が多く、それができる人は数多いので経営者の都合で雇うこともクビにすることも簡単にできるようになりました。そのため、経営者など(労働者に対して{{ruby|資本家|しほんか}}という言い方をします)に比べて、多くの労働者は非常に貧しい生活となることが一般的でした。労働者は、自分たちの待遇(安定して雇われること、十分な賃金をもらえることや安全な労働環境など)を改善するために'''{{ruby|労働組合|ろうどうくみあい}}'''を結成し、集団で経営者と交渉したり、場合によっては'''ストライキ'''を起こすなどして資本家に対抗したりしました('''{{ruby|労働運動|ろうどううんどう}}''')。そのように、社会が変わっていくのを受けて、自由な経済活動を制限してでも、人々の平等な生活が送れる社会をめざすべきであるという'''{{ruby|社会主義|しゃかいしゅぎ}}'''の考えが生まれます。[[#世界の変化2 - 市民革命|市民革命]]は、国王や世襲の貴族といった身分社会から「自由」に活動できる権利を求める社会の変化でしたが、この自由には、工場を作ったり、物を取引する経済的な自由を含みます。自由な経済活動の結果、貧富の差が生じることについて、これをしかたがないことと認める考え方を、社会主義者は批判して、'''{{ruby|資本主義|しほんしゅぎ}}'''と名づけました。さらに、社会主義の中から、19世紀の半ばドイツ生まれの経済学者'''カール・マルクス'''は『{{ruby|資本論|しほんろん}}』を書いて、一層過激な'''{{ruby|共産主義|きょうさんしゅぎ}}'''をとなえました。
:<span id="共産主義"/>共産主義とは、簡単にいうと、農地や工場といった経済的な価値を生み出すものは、人々の共有にしてしまって、全ての人たちが働くことからのみ収入を得る<ref>この考えは、「働かざる者食うべからず」というスローガンに現れています。これは、働かないで怠けているものは食べるべきでない(=生きるべきでない)ととらえられがちですが、第一には、たとえば、地主が土地を小作人に貸したり、財産の利子や配当収入だけで生活できるような資本家を攻撃した言葉です。</ref>平等な社会を目指すという考え方です。それを実現するためには、資本家が持っている財産をうばって、分けあたえるということが必要になります。これは、革命であって、共産主義は、目指す社会を実現させるためには、革命が必要だと主張しました。この考え方は、世界中の多くの労働者の支持を得た一方で、ほとんどの資本家や、資本家が強く関わっている当時の各国の政府を強く警戒させました。また、社会主義や共産主義は、全ての人民が平等という考えが根本にありますから、君主制や民族主義とはあいいれないもので、<span id="反社会主義"/>王国や天皇制に親しみのある人たちや同じ民族だけで助け合おうとする人たちと敵対しましたし、また、平等な社会を作るためには、各個人の自由は多少制限されても仕方がないという考えであるため、人としての自由な行動を大事に思う人たちとも対立しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="イノベーション"/>新たな科学・技術の発展<small>
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|人々のくらしが「産業革命」で大きく変わったことは、前にお話ししたとおりですが]]、1860年頃から1910年くらいまでの間に、「産業革命」と同じくらい、またはそれ以上の科学技術上の大きな発展が見られ、さらに人々の生活を大きく変えます<ref>歴史学者の一部では、これを「'''第二次産業革命'''」と呼びます</ref>。
#'''新たな動力の発明''' - 「産業革命」において、中心となった動力は、主に石炭を使用した蒸気機関でしたが、19世紀半ば以降、これに、新たな動力源が加わります。
#;{{ruby|内燃機関|ないねんきかん}}
#:内燃機関とは、ガスまたは霧状にした燃料を爆発させ、それによって急激にふくらむ力を動力にする装置です。皆さんがよく知っているところでは、自動車のガソリンエンジンやディーゼルエンジンが代表的なものです。
#:蒸気機関の発明は主にイギリスでなされましたが、内燃機関はドイツで発展しました。1880年代、ゴットリープ・ダイムラーとカール・ベンツは各々で実用的なガソリンエンジンを発明し、それに少し遅れて、ルドルフ・ディーゼルがディーゼルエンジンを発明します。内燃機関は、蒸気機関に比べて小型化が容易なので、これを動力とした自動車が誕生しました<ref>ゴットリープ・ダイムラーとカール・ベンツは、各々で自動車の会社を作ります。1926年それらの会社が合併しダイムラー・ベンツができます。現在のメルセデス・ベンツ・グループ(「メルセデス」はダイムラー社製の車の愛称です)です。</ref>。蒸気機関は石炭に加え水が必要でしたが、内燃機関は燃料だけで足りるため、船舶などの動力は早期に内燃機関に切り替わりました。
#:<span id="飛行機"/>また、小型で高出力という特徴を活かして、1903年アメリカで'''ライト兄弟'''がガソリンエンジンを動力とした'''飛行機'''を飛ばすことに成功しました。
#:このように、内燃機関は小型にでき利用できる範囲も広いということで蒸気機関に取って代わっていきました。そのため、石油が資源としての重要性を大きく増すことになりました。
#;{{ruby|電動機|でんどうき}}(モーター)・発電機
#:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#電気|電気が長い間研究されていたことは、前々章に書いたとおりです]]。
#:電気を研究しているうちに、電気を通すことで磁石の力(磁力)が生じることが発見されました。すなわち、「電流」を通すと、「磁力」が発生し、鉄などが電磁石にくっつく(=「運動」する)ということです。1831年ファラデーは、これをまとめた、電気と磁気と運動の関係を発見します。この発見をもとに工夫して、電流を流して連続した回転運動を得る電動機(モーター)が発明されました。
#:逆に磁力のあるところで電線を運動させると、電線に電流が生じます。これを、応用して発電機が発明されました<ref>モーターに力を加えて回すことで電流を得ることができます。</ref>。電力は、それまで、化学反応を使った電池によって得ていましたが、大量に得ることは困難でした。発電機の発明によって、大量の電力を連続で安定的に得ることができるようになり、次に述べる「電気の実用化」が可能になります。
#'''電気の実用化'''
#:こうして、大量の電気が供給されるようになると、産業や生活に大きな変化がもたらされます。
#:産業の面では、電気を使うことでメッキや化学産業などが起こりました。また、精錬するのに電気を必要とするアルミニウムが実用化になりました。
#:生活の面では、1880年頃に'''トーマス・エジソン'''が電球を発明するなど、身近な家庭電化製品が発明されていきました。また、同じ時期に'''アレクサンダー・グラハム・ベル'''が実用的な電話を発明しています。
#:1900年頃、音声を電波<ref>何もない空間を電気の変化を伝える性質である電波は、1887年に発見されました。</ref>を使って無線で飛ばす技術が開発され、それを応用して、1920年、'''ラジオ放送'''が開始しました。
#'''化学工業'''
#:植物が育つには{{ruby|窒素|ちっそ}}が必要ですが、空気中の窒素は、豆類の根につく細菌類が化学合成し物質として固定するのを待つしかありませんでした。1909年にドイツで完成されたハーバー・ボッシュ法によって、空気中の窒素から直接、化学肥料の材料となるアンモニアを合成できるようになりました。効果的な化学肥料を製造できるようになり、農作物の収穫が格段と大きくなりました。これは、「水と石炭と空気からパンを作る方法」と言われました。
#:また、従来は火薬(黒色火薬)の原料として{{ruby|硝石|しょうせき}}が使われていて、地下資源として採掘するなど、容易に入手できるものではありませんでしたが、アンモニアが大量に手に入るようになったことと、黒色火薬より強力な窒素系の火薬が開発されたことで<ref>代表的なものは、ニトログリセリンです。これを安全に取り扱えるようダイナマイトを発明したアルフレッド・ノーベルは、莫大な遺産でノーベル賞を創設しました。</ref>、火薬製造は原料の輸入に頼らず、強力な火薬が大量に製造できるようになりました。
</small>
|}</div>
=== 全世界を巻き込む戦争 - 第一次世界大戦 ===
==== 先進国の間の対立 ====
:[[File:3goku kyosho & 3goku domei.png|thumb|250px|三国同盟と三国協商]]
:先進国のうちでも、イギリスやフランスは、いち早く近代的な国家の仕組みを整え、産業革命も世界に先がけて成しとげていました。そのため、国内では余る生産力を海外に向けるためアフリカやアジアの多くの地域を植民地として、綿花など原材料の生産地として、そして製品の市場としていました。19世紀半ば頃から他のヨーロッパの他の国も近代工業化がすすんできました。特に、1871年に北部のドイツを統一してできたドイツ帝国では、[[#イノベーション|科学技術のめざましい発展]]が見られ、国の経済力は、すでにフランスを圧倒し、イギリスと肩を並べるものになっていました。しかし、イギリスやフランスは国外にも多くの植民地をはじめとした国際的な市場を持っていたのですが、近代化の遅れたドイツは植民地をあまり持っておらず、国外への展開に困難がありました。
:ドイツ帝国は、同じドイツ系のオーストリア帝国、隣国のイタリア王国と同盟し('''三国同盟'''<ref name="イタリア">'''イタリア王国'''もドイツと同じように市民革命ののちに封建諸国でばらばらであったイタリア民族を統一した王国で、イギリス、フランスを追いかけていた国の一つです。このような共通点から、ドイツと同盟を結びますが、オーストリアとの間に領土問題が存在したため、最初は参戦せず、後に、協商国側で参戦します。</ref>)、オスマン帝国とはかって、バルカン半島からトルコを経由して中東までの鉄道を敷設し、この地域の経済を有利に進めようともくろみました。ドイツから中東までを独占し、さらに、そこからアジア・アフリカに進もうとする考えです。
:この考えに、アジアやアフリカを大きな市場としていたイギリスやフランスは警戒します。
:また、東にあるロシアは、バルカン半島での[[#南下政策|南下政策]]がクリミア戦争で{{ruby|挫折|ざせつ}}した後、極東に目を向けていたのですが、[[#日露戦争|日露戦争]]に敗れたため、再び、クリミヤ半島からの南下に政策を変えます。今度は直接攻め入るのではなくバルカン半島のスラブ国家や独立運動家を支援しオーストリア帝国やオスマン帝国に対抗させる形での介入です。イギリスとフランスは、ドイツを{{ruby|牽制|けんせい}}<ref>相手に自分の行動を見せつけ、勝手な行動をとれなくすること。</ref>するため、ロシアとの間に{{ruby|協商|きょうしょう}}条約<ref>「協商」は「相談をする」と言う意味で、「協商条約」は外交にあたって相談をするということを約束した条約です。「商業」と直接の関係はありません。</ref>を結びます('''三国協商'''<ref>英仏・仏露・英露、各々の協商条約などを合わせたものです。イギリスとロシアは日露戦争までは敵対していましたが、ロシアが敗戦したことをきっかけに、同盟関係を結びます。</ref>)。
:こうして、バルカン半島を中心に、ドイツ・オーストリア・オスマン帝国とその東西の国との緊張が高まってきました。
==== 初めての『世界大戦』 ====
:バルカン半島中西部のボスニア・ヘルツェゴビナは、長い間、オスマン帝国の領土で、住民もイスラム教に改宗した人々(ボスニア人)が多い地域でしたが、19世紀後半以降オーストリア帝国が支配する領域となっていました。
:1914年6月28日、オーストリア皇太子がボスニア・ヘルツェゴビナのサラエボを訪問した際、隣国セルビア王国のボスニア系の独立運動家に暗殺されました('''サラエボ事件''')。これが、きっかけとなって、7月28日オーストリア帝国はセルビア王国に宣戦布告し、セルビアを支援するロシアも参戦、これを受けてオーストリアと同盟を組むドイツが参戦、そして、ドイツと敵対するフランスとイギリスが参戦し全ヨーロッパにおける戦争『'''第一次世界大戦'''<ref>これから、25年後、次の世界中を巻き込んだ大きな戦争が起こり、それを『'''第二次'''世界大戦』と呼ぶため、この戦争を『'''第一次'''世界大戦』とよびます。この当時は、『世界戦争』・『大戦争』と呼んでいました。</ref>』が始まりました。なお、以下、ドイツ・オーストリア側を「'''同盟国'''<ref name="イタリア"/>」、イギリス・フランス・ロシア側を「'''協商国'''」と言うこととします。
:第一次世界大戦はそれまでの戦争とことなって『'''国家総力戦'''(または、'''総力戦''')』と言われます。それまでの戦争は、あくまでも軍隊と軍隊の戦いで、軍事拠点をめぐっての争いや、双方の主力部隊がある戦場で戦う(会戦)もので成り立っていて、そのような場所以外が戦火の被害を受けることは少なく、また、軍人以外で戦争で死傷する人は限られていました。しかし、第一次世界大戦になると、戦争は軍人以外の国民も巻き込んだものとなります。兵士は国民の中から徴兵されたものですし、銃砲や砲弾・銃弾、それに用いる火薬といった兵器の製造力も国内の工業力に支えられます。兵器だけではなく、軍服や戦場に持ち込む食糧もそうです。また、兵器やその他の物資を輸入に頼るにしても、その資金は国内の工場の生産物を輸出することで得られるものです。そのため、敵対する国は、相手の軍隊を攻撃するだけではなく、相手の国の生産力を下げるため、戦闘の機会に工場や輸送に用いる鉄道・港湾・船舶を破壊するようになります。さらに、相手が戦争を継続する力を落とすために、軍隊どうしの戦場ではないところの住宅等も破壊するようになりました。総力戦になって、軍人以外の民間人の死傷者や家屋などの財産の破壊が、それ以前と比べられないほどに増大しました。
:戦争は、ヨーロッパだけでなく世界中を巻き込みました。1914年11月ロシアと対抗し、イギリスに脅威を感じていたオスマン帝国は同盟国として参戦しました。こうして戦争は北アフリカなどにも広がりました。
:日本は、日英同盟から、イギリスに要請され協商国側に参戦し、ドイツの租借地である中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。
:[[File:Cheshire Regiment trench Somme 1916.jpg|thumb|250px|第一次世界大戦の塹壕(ざんごう)]]
:第一次世界大戦では、{{ruby|塹壕|ざんごう}}という攻めてくる敵に対して地面に人が隠れられる溝を掘って<ref>フランスとドイツの間には、大西洋からスイスまでの全長700kmにわたる塹壕が両陣営でできました。</ref>、守りを固める戦法をとったため、お互い戦闘が進まず、戦争は長期化し、同盟国・協商国ともども国内経済は衰退し、国民生活はだんだん貧しいものとなっていました。一方で、当時の最先端の科学技術は次々と投入されます。化学工業の発展は火薬の力を強くしていましたし、毒ガスの開発にも応用されました。また、内燃機関を使ったトラックなどが、馬車などに代わって兵士を移動する手段となり、また、道の状態にかかわらず進むことができる、戦車なども開発されました。そして、[[#飛行機|発明されたばかりの航空機]]も戦場に投入されました。こうした、最新の科学技術の投入は、戦場をますます{{ruby|悲惨|ひさん}}なものにしていきました。
:1917年になって、状況が大きく変わります。
:アメリカ合衆国(以下、しばしば、「米国」と略します)は、もともと、「<span id="モンロー主義"/>南北アメリカ大陸のことに、ヨーロッパの国に口を出させない。その代わり、米国もヨーロッパの政治に口を出さない」という外交の方針があって、また、移民の国であるため、ドイツ系の国民も多く、中立の立場にいました。しかし、ドイツがイギリス周辺を航行する船を、軍事に関する物品を輸送する船であると潜水艦で攻撃し沈めるという作戦をとったところ、米国人を多数乗せた船を沈めると言う事件などがあって、この年に、協商国側として参戦します。米国の参戦は軍隊が増えたことに加えて、米国の工場など生産設備が無傷であったため、イギリスやフランスといった協商国には物資がどんどん補給され、協商国側に有利となりました。
:一方で、東側のロシアとの戦争も一進一退の状態でしたが、バルト海と黒海を同盟国側が封鎖したため、ロシアは輸出入がとだえ、国内の物資不足とインフレが社会問題となっており、各地でストライキや暴動が起こり、1917年2月に皇帝ニコライ2世は退位します('''ロシア革命''')。このような中、[[#共産主義|共産主義]]の運動家である'''ウラジーミル・レーニン'''らが政府を握り、同年12月にはドイツとの戦争を停止します。
:こうして、ドイツは、東側での戦争は終結したのですが、イギリス・フランスと戦う西側では、1918年になると米国の支援により優勢になり、また、[[#スペインかぜ|スペインかぜ(インフルエンザ)が大流行]]するなどして、戦闘の継続は困難なものとなり、11月ドイツ皇帝ヴィルヘルム2世はオランダへ{{ruby|亡命|ぼうめい}}<ref>国外に逃げ出すことを言います。</ref>、オーストリア皇帝カール1世も退位し、第一次世界大戦は事実上終了しました(正式な終了は講和条約が締結された翌年1919年となります)。
:同盟国であったドイツ帝国、オーストリア帝国、オスマン帝国は崩壊し、それぞれ共和国となりました<ref>オスマン帝国は、1918年に降伏し、1922年にトルコ革命により共和制となります。</ref>。
:第一次世界大戦は、協商国側の戦死者 553万人、戦傷者 1283万人、行方不明者 412万人、同盟国側の 戦死者 439万人、戦傷者 839万人、行方不明 363万人。民間人の死亡者、協商国側 360万人、同盟国側 314万人と人類が経験したことがない規模の犠牲者を出すことになりました。
==== 第一次世界大戦後の世界 ====
:1919年フランスのパリで第一次世界大戦の講和会議が開かれました。その結果、
:#敗戦国は戦勝国に賠償金を支払う。
:#領土の一部を戦勝国に割譲する。
:#オーストリア帝国、オスマン帝国が支配していた中央ヨーロッパ・バルカン半島、中東から北アフリカにかけての地域について、独立またはイギリスやフランスの保護領とする。
:#敗戦国の軍備は数年間制限する。
:などが決められました。
:また、このような戦争が2度と起こらないようにと米国大統領ウッドロウ・ウィルソンが提唱し、常設の国際的な協議機関「'''{{ruby|国際連盟|こくさいれんめい}}'''」が誕生します。国際連盟の運用は理事会が行いますが、日本は理事会の常任理事国にイギリス、フランス、イタリアと共に選ばれました。しかし、これを提唱した米国は、[[#モンロー主義|従来の国の方針]]から国内の反対があって国際連盟に加盟しませんでした。
;第一次世界大戦がもたらしたもの
:第一次世界大戦は、人類の歴史が始まって以来の大量の戦死者や戦傷者を出し、当時最も発展していたヨーロッパの国土が荒廃するなど、世界に大きな影響を与えました。その結果として以下のような変化が生じました。
:#ヨーロッパの衰退とアメリカ合衆国・日本の台頭
:#:同盟国であるドイツはもちろん協商国側のフランスは戦場として荒廃し、イギリスも大量の兵力を送り出すなどして疲弊するなど、ヨーロッパの生産力が弱まりました。代わって戦場とならなかった米国は、協商国に兵器他大量の物資を輸出した他、ヨーロッパ諸国が輸出していた地域に代わって輸出することになり、大きな経済的発展を見せることとなりました。その国力を背景に、国際政治で主導的な地位に立ちました。しかし、[[#モンロー主義|もともとの国の方針]]から、国際政治に十分に参加できませんでした。
:#:日本も、国民国家を成立させ産業革命をなしとげた世界でも数少ない国のひとつでしたが、ヨーロッパから遠く離れ、第一次世界大戦の影響を受けることはなく、米国ほどではありませんがヨーロッパの国々が輸出できない分をうめあわせるなどして経済が発展し、[[#国際社会|国際社会でも有力な国となりました]]。
:#<span id="軍縮"/>国際機関の誕生と軍縮の傾向
:#:それまでの国際外交は、国対国の関係でしたが、国際関係が複雑になると、関係する国がまとまって討議するようになりました。第一次世界大戦以前から、電気通信に関して万国電信連合(現.国際電気通信連合)がありましたが、戦後、世界平和を目標とする国際連盟が結成され、平和以外にも人権などについて各国が参加して討議されるようになりました。
:#:第一次世界大戦の{{ruby|惨状|さんじょう}}から、各国共に{{ruby|厭戦|えんせん}}<ref>戦争を嫌うこと。</ref>ムードになっていたため、軍縮に関する国際会議が何回も開かれました。
:#ナショナリズムの実現
:#:ナショナリズムの高まりは、国際的に認められるようになり、オーストリア帝国やオスマン帝国が支配した領域から、同じ民族で集まった国が数多く独立することになりました。しかし、アジアやアフリカの諸国は、まだ独立が認められず、第一次世界大戦後はアジア各地での独立運動が見られるようになります。
:#:また、先進国自身においても一種の民族主義が盛んになります。これは、国外資本が進出してくることや社会主義の民族主義を否定する動きに反発するものです。これが、のちに[[戦争への道と現代の民主国家日本の誕生-昭和から現在まで#ファシズム|ファシズム]]と呼ばれるものになります。
:#社会主義国家の誕生
:#:ロシア革命後、ロシア国内では内戦が起こり、1922年レーニンが率いる共産党が国内をまとめ、世界で初めての[[#共産主義|社会主義・共産主義]]を国の仕組みに持った'''ソビエト社会主義共和国連邦'''<ref>「ソビエト(ソヴェート)」はロシア語で「評議会」の意味で、ロシア革命前後に人々が集まって政治の方針を決めた団体が母体になっていることを意味します。「社会主義共和国」は社会主義を政治の方針とする共和国ということです。最後の「連邦」は、そのような社会主義共和国がいくつか集まって1国となっているということを言っており、ロシア・ソビエト連邦社会主義共和国、ウクライナ社会主義ソビエト共和国、白ロシア・ソビエト社会主義共和国など、いくつかのの国で構成されていました。</ref>('''ソビエト連邦'''、'''ソ連''')が誕生しました。
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代|明治維新と近代国家日本の成立-幕末・明治時代]]
|[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|戦争への道と現代の民主国家日本の誕生-昭和から現在まで]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#12]]
7yu01ryz2okg9ixk8d17n35r8davvpb
205980
205971
2022-07-29T08:12:13Z
Mtodo
450
/* 社会主義と共産主義 */
wikitext
text/x-wiki
{{Nav}}
{{Pathnav|メインページ|小学校・中学校・高等学校の学習|小学校の学習|小学校社会|6学年|歴史編|frame=1}}
{| class="wikitable" style="width:100%"
|+ この章の概要
|<!--1889年前後から「国際的地位が向上」(1920年国際連盟成立 常任理事国入り)まで--><!--(コ) 大日本帝国憲法の発布,日清・日露の戦争,条約改正,科学の発展などを手掛かりに,我が国の国力が充実し国際的地位が向上したことを理解すること。-->
★時代区分:明治時代後期、大正時代</br>
★取り扱う年代:1889年(大日本帝国憲法の発布)から1925年(昭和改元)まで
; 大日本帝国憲法の制定
: 明治維新の改革は、五箇条の御誓文の方針によりなされましたが、改革が進み近代文明国としての形がひととおり整ってきたところ、さらに政治の形を確かなものとし、人々の権利を明らかにするため、'''憲法'''の制定と選挙によって選ばれた議員による議会を開くことが求められました。'''板垣退助'''や'''大隈重信'''は国会の開設を求めて、政党をつくりました。'''伊藤博文'''を中心とした明治政府は欧米諸国の憲法を研究し、1885年に'''内閣制度'''が創設され、1889年に'''大日本帝国憲法'''が発布されました。翌年憲法の精神に基づいて、初めて総選挙が行われ'''帝国議会'''(国会)が召集されました。
; 日清戦争と日露戦争
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、遼東半島を占領するなど戦いを有利に進め、翌年、'''陸奥宗光'''外務大臣と清の提督である李鴻章が交渉し、清の日本への賠償や台湾・遼東半島の割譲などを定めた下関条約が締結され講和が結ばれました(日本の勝利)。
: 遼東半島はロシア、ドイツ、フランスが反対したので割譲は取りやめとなりましたが(三国干渉)、そこにロシアが進出し、それを警戒する日本と対立しました。1904年日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や中国東北部(満州)で戦いました。日本は多くの犠牲者を出しましたが、'''東郷平八郎'''がロシアのバルチク艦隊をやぶるなどして有利な位置となり、翌年、'''小村寿太郎'''外務大臣とロシアのウィッテが交渉し、ロシアの中国からの撤退、南満州鉄道の譲渡、南樺太の割譲などを定めたポーツマス条約が締結され講和が結ばれました(日本の勝利)。
; 条約改正と国際社会での地位の向上
: 幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。まず、政府は、国内の法整備を進め、公正な裁判が行われることを示し、日清戦争終結後の1899年治外法権を撤廃しました。そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、1911年関税自主権も回復しました。
: 1912年大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年にヨーロッパの国々を二分した'''第一次世界大戦'''が始まりました。日本は、イギリスやフランスの属する連合国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。1919年戦争は連合国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: このころになると、日本の科学技術の水準も世界的なものになり、'''野口英世'''のように国際的な研究者がでてくるようになりました。
|}
=== 世界の変化2 - 市民革命 ===
:日本が鎖国をしている間、ヨーロッパやそれを受けたアメリカ大陸では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|産業革命]]ともうひとつの大きな社会変革が起こっていました。
;市民革命以前のヨーロッパ
:ヨーロッパの国々も長い間、生まれながら身分によって職業などが決められ、多くの人々は農民や職人として土地(荘園)の領主(「{{ruby|封建|ほうけん}}領主」といいます)や都市の貴族などに服従する社会でした。また、この時代は、ローマ教皇を頂点とする'''カトリック教会'''が、強い影響力や荘園を持っていたというのは、[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#キリスト教|前にお話ししたとおり]]です。この時代を{{ruby|封建|ほうけん}}制<ref>土地(領地)を間に介して、主従関係を結ぶ制度を言います。日本でも、[[小学校社会/6学年/歴史編/武家社会の始まり-鎌倉時代#封建制|鎌倉時代の「'''ご恩と奉公'''」の関係]]はこれにあたりますし、安土桃山時代から江戸時代にかけての[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#石高制|石高制]]も封建制の一種です。</ref>の時代と言います。
:14世紀くらいになると、都市を中心に商業が発展してきて、豊かな財産を持って、荘園領主よりも強い影響力を持つようになる者もでてきました。15世紀「[[小学校社会/6学年/歴史編/戦乱の世の中と日本の統一-戦国時代・安土桃山時代#大航海時代|大航海時代]]」になると、さらに、貿易や植民地からの収益で都市の商人などは勢力を強くしました。また、繊維工業などを中心に、人を集めて工場などを経営する人たちもあらわれました。これらの、封建領主や貴族ではない階層の人たちを、「{{ruby|市民|しみん}}階級」といいます。これらの、市民階級の経済力を背景に、ヨーロッパの各地で強い力を持った国王が誕生し、伝統的な荘園領主などを圧倒しました。これを、{{ruby|絶対王政|ぜったいおうせい}}の時代といいます。絶対王政の王国は、政治を行う政府は専門の役人をおき、戦争に備えて軍隊を平時から常設するようになりました<ref>封建制の時代は、国王でも自分の荘園をおさめられる程度の役人がいればよく、戦争などでは、その都度、封建領主に命令して軍隊(騎士)を集めていました。</ref>。
;市民革命と近代国家
:市民階級が台頭してくると、封建制度以来の身分制度に対して、生まれながらの身分にかかわらず人間は'''平等'''であり、'''自由'''に発言や経済活動をする'''権利'''('''人権''')を持っているという考え方が広がってきました。また、封建制の時代はおさめている荘園の収穫から政治を行っていましたが、絶対王政の政府は、市民階級からの税金で成り立っていたのですが、税金を取られる市民たちは国王の都合だけで徴税されることに不満を持ち始めました。こうして、17世紀以降、市民階級は絶対王政と対立するようになります。市民階級は代表を出して、政治に参加するようになります。'''議会'''('''国会''')の始まりです。さらには、国王の圧政に対しては、市民階級が集まって武力をもって王政を倒したりしました。これを「'''{{ruby|市民革命|しみんかくめい}}'''」と言います。
:市民革命は、17世紀のイギリスに始まりました ('''清教徒革命'''など)。ひきつづいて、北アメリカ大陸のイギリス植民地が、独立を求めて戦争を起こしアメリカ合衆国が成立しました ('''アメリカ独立戦争''')。そして、1789年代表的市民革命である'''フランス革命'''が起こります。市民革命は、フランスの'''ナポレオン'''が、フランスの革命政府を打ち倒そうとする周辺の国々を逆にせめた戦争によってヨーロッパ各地に広がります。
:市民革命自体は、各国の状況によって様々な結果を生みました。革命後に王政が復活した国もあります。しかし、市民革命で国の政治に身分によらない一般の市民が参加できるようになって、広く国全体から資金を集める仕組みができたこと、また、兵隊に国民が動員されるようになったこと('''[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#徴兵制|徴兵制]]''')から、数が多く強力な軍隊を持つようになり、それまでの、封建的な国や絶対王政の国を圧倒するようになりました。これらの古い体制の国々も、市民階級を国の政治に参加させるように、国の仕組みを変えるようになりました。まず、国民の権利を保障し、国民の代表が参加する'''議会'''を設置して国の政治に参加できるようにしました。そして、そのことを'''憲法'''という、強い力を持った法律に定めるようになりました。
:国が、国王などの所有物ではなく、そこに住む国民によって成立するという近代国家('''国民国家''')の誕生です。
=== 大日本帝国憲法の制定 ===
[[File:Taisuke ITAGAKI.jpg|thumb|125px|板垣退助]]
[[File:OKUMA_Shigenobu.jpg|thumb|125px|大隈重信]]
[[file:Itō Hirobumi.jpg|thumb|125px|伊藤博文]]
:明治になって、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#四民平等|身分制度がなくなり]]<ref name="華族">実際は、公家や大名、明治政府に大きな貢献のあった人たちについては、{{ruby|公爵|こうしゃく}}・{{ruby|侯|こう}}爵・{{ruby|伯|はく}}爵・{{ruby|子|し}}爵・{{ruby|男|だん}}爵といった貴族の爵位が与えられ、その一族は「{{ruby|華族|かぞく}}」と呼ばれました。華族には、いくつかの特権が認められましたが、華族の数は比較的少ないうえ、江戸時代ほど極端に大きな差ではありませんでしたし、社会的な貢献をすることで、誰でも華族となる機会はありました。また、「士族」と「平民」の間で異なる取り扱いは一切ありませんでした。</ref>、人々は才覚や努力によって、どのような職業に就くこともできるようになりました。人々は、学業をはじめとしたさまざまな努力をして、いろいろな分野で活躍するようになりました。
:明治政府は、さまざまな改革を強引に進めたため民衆と対立することも少なくありませんでした。このような民衆の不満は、[[#士族の反乱|士族の反乱]]の後は、こうした近代思想を取り入れて政治参加を求める{{ruby|自由民権|じゆうみんけん}}運動につながります。自由民権運動は、憲法の制定と、民衆が政治に参加できる選挙を通じた国会の開設をもとめるようになります。自由民権運動は、征韓論で下野した'''[[小学校社会/6学年/歴史編/人物事典#板垣退助|{{ruby|板垣退助|いたがきたいすけ}}]]'''と1881年(明治14年)に'''[[小学校社会/6学年/歴史編/人物事典#伊藤博文|{{ruby|伊藤博文|いとうひろぶみ}}]]'''らと対立して政府を離れた'''[[小学校社会/6学年/歴史編/人物事典#大隈重信|{{ruby|大隈重信|おおくましげのぶ}}]]'''らに主導されました。
:大隈や板垣が主導する自由民権運動の主張は、国民の自由と権利を保障する憲法の制定とそれに基づく国民の選挙による議会(民選議会)の開設及び議会による政府の統制でした。伊藤博文ら明治政府を主導する人たちは、自由民権運動の考えをそのまま受け入れると、政策を政府が思うとおりに進めることができず、富国強兵などの改革政策に差しさわりがあると考え、この運動を弾圧しました。一方で各地の有力者や、新たな産業の成功者が登場してきており、明治政府はこれらの人々の支持を受けたいと思っていました。また、欧米諸国から見ると、民選議会が政治を進めない国は遅れているとの意識があり、不平等条約改正にあたっても説得させることができない理由の一つとなっていました。
:1881年(明治14年)明治政府は、明治天皇名で「国会開設の勅諭」を下し、1889年(明治22年)に国会を開設することを国民に約束しました。これを受けて、自由民権運動の活動家は政党を結成し、同年には自由党が板垣退助を中心として、翌1882年(明治15年)立憲改進党が大隈重信らによって結成されました。
:一方、伊藤は、1882年(明治15年)、憲法制定・国会開設の模範を研究するためためにヨーロッパを視察しました。そこで、伊藤は議会が発達したイギリスや、人権思想が進んでいたフランスではなく、ドイツ帝国の憲法を模範にすることとしました<ref>この頃のドイツは、日本が藩に分かれていたのと同様に、多くの王国・貴族領に分かれていたものを、各地で統一の要望が上がり、その中で有力となったプロイセン国王を皇帝とするドイツ帝国が成立していました。ドイツ帝国は、イギリスやフランスよりも、皇帝(それを受けた行政機関)の権限が強く、議会の力はおさえられていました。ドイツは、英仏に比べ工業化などが遅れていたために、それを推進するために、強い行政の力が必要であったためです。また、各個人の人権についても制限がありました。伊藤が、英仏ではなく、ドイツを国の形の模範としたのは、このように、日本と状況が似ていたためです。</ref>。帰国した伊藤は憲法制定の準備をはじめ、1885年(明治18年)に内閣総理大臣を長とする'''内閣制度'''が創設され、1889年(明治22年)に'''大日本帝国憲法'''(明治憲法<span id="明治憲法"/>)が発布されました。翌1890年(明治23年)7月1日憲法の精神に基づいて<ref>明治憲法が、実際に有効となる(施行される)のは、1890年(明治23年)11月29日なので、まだ、憲法の下の選挙・国会の招集ではありませんでした。</ref>、初めて総選挙が行われ、11月25日'''帝国議会'''(国会)が召集されました。
:明治憲法は以下のことを定めています。
:#天皇は、日本の統治者とされます。
:#国会は、天皇に「協賛」して法律や予算を定める機関とされます。
:#*法律や予算を決めるのは天皇であって、国会は、その補助をしているに過ぎないという考えを表しています。
:#*緊急と認められる時には、天皇<ref>実際は、行政府である政府の仕事です。</ref>は国会の議決によらず、法律に代わる勅令を出すことができました。
:#国会は、貴族院と衆議院により成り立ち、衆議院は選挙によって選ばれた議員により構成され、貴族院は皇族・華族<ref name="華族"/>及び勅命<ref>天皇の命令。実際は、その時の行政府による指名。</ref>で任名された議員により構成されます<ref>ただし、このような議会の成り立ちは、世界的に見ても珍しいものではありませんでした。明治憲法の元になったドイツ帝国の議会が貴族院と衆議院で成り立っていましたし、そもそも、議会政治の模範とされるイギリスも世襲貴族による「貴族院」と選挙で選ばれた議員による「庶民院」で構成されていて、現在もその伝統が残ります。このことで、身分で選ばれた議員による議会を「上院」、選挙で選ばれた議員による議会を「下院」という習慣ができました。アメリカ合衆国には独立当時から貴族制度はありませんでしたが、上院は各州の代表(元々は州議会が選出していましたが、現在は州民の選挙によります)、下院は州にかかわらず選挙で選ばれた議員による議会と、上院と下院で性質を変えていたりします。時代が下るにつれ、選挙で選ばれた議員の決めることが優先されるという政治習慣(下院優先の原則)が有力になります。</ref>。
:#*衆議院の優位などの定めはなく、各議院で議決されなければ法律などは成立しませんでした。
:#*<span id="制限選挙"/>衆議院議員の選挙権は、憲法を定めた当時は、一定以上の税金を納めた者にのみ認められていました。
:#国務大臣は天皇を{{ruby|輔弼|ほひつ}}(助言し助ける)すると定められます。また、内閣総理大臣についての定めはありません。
:#*<span id="内閣総理大臣"/>内閣総理大臣は、天皇が指名する建前でしたが、実際には、元老といわれる人達<ref>元老には、最初は伊藤博文など維新の功臣が、後代には長期に首相を務めた者がなりました。</ref>が協議したり、後には首相経験者などで構成する重臣会議で決議して天皇に{{ruby|推薦|すいせん}}して決まるものでした。
:#軍隊(陸海軍)は天皇が直接まとめひきいるとされました。また、国民には徴兵に応じる義務がありました。
:#*軍隊は、国会や内閣の命令を聞く必要がないと解釈されるようになります。
:#様々な国民の人権が認められましたが、それは、法律の範囲内で認められるものとされました。
:#*例えば、女性には選挙権は認められることはありませんでした。また、民法で家族や相続は家制度によったため、女性は不利な取り扱いを受けました。
:#*後に制定される治安維持法は、政治思想(特に[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで#社会主義と共産主義|社会主義思想・共産主義思想]])を取り締まる法律でした。
=== 日清戦争と日露戦争 ===
==== 日清戦争 ====
[[File:《马关条约》签字时的情景.jpg|thumb|right|200px|none|下関条約の調印の様子。 向かって左に着席するのが日本の伊藤全権、右が清国の李全権]]
: 急激な近代化に成功した日本は、国内で拡大した産業の新たな市場を求め大陸に進出しようとします<ref>「急激な近代化に成功した日本」と書きましたが、これは、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1 - 産業革命|前の章の『産業革命』の節]]に書いた「欧米各国は、産業革命で経済力が大きくなりましたが、さらにそれを大きくするため、国内で生産する工業製品の{{ruby|市場|しじょう}}と原材料となる農産物や鉱物資源を欧米諸国の外に求めるようになりました。」の部分を日本に当てはめたものです。しかし、この頃の日本の工業力はまだ近代化が始まったばかりで、外国に市場を求めるまで成長していません。</ref>。朝鮮は中国の帝国'''{{ruby|清|しん}}'''の属国でしたが、その影響で近代化が進んでおらず、朝鮮国内の近代化を求める人々は日本と協力して清の影響から逃れようとしました。朝鮮国内の清に従う保守派と改革派の争いに日本と清はそれぞれ兵を出すなどして緊張が高まり、1894年(明治27年)朝鮮半島西岸における両国海軍の接触をきっかけに'''日清戦争'''が始まりました。日本は清の北洋海軍を壊滅させ、黄海沿岸の軍事拠点を攻撃し、遼東半島を占領するなど戦いを有利に進め、翌1895年(明治28年)、'''[[小学校社会/6学年/歴史編/人物事典#陸奥宗光|{{ruby|陸奥宗光|むつむねみつ}}]]<span id="陸奥宗光"/>'''外務大臣と清の提督である{{ruby|李鴻章|りこうしょう}}が交渉し、以下の事項などを定めた'''下関条約'''が締結され講和が結ばれました(日本の勝利)。
:#清は、朝鮮の独立を認める。
:#清は、日本へ台湾と{{ruby|遼東|<small>りょうとう/リャオトン</small>}}半島<ref name="中国地名">中国の地名については、日本語の音読みで読む方法と現代の中国語に近い音で読む方法があります。後者は、「音読みだと日本人にしか通じない」と言う配慮から現代の中国語に近い音を当てると言う意図なのかもしれませんが、実際の発音とは異なっているので中国人にも伝わらないでしょう。ですから、ここでは、原則として音読みで音をふりますが、{{ruby|北京|ペキン}}、{{ruby|上海|シャンハイ}}のように現代中国語音に似せた言い方が一般的になったものもありますので、それらは、よく使う言い方をカタカナで表記します。</ref>を割譲する。
:#清は、日本へ賠償金2億両<ref>1両は銀37.3gで、当時の日本円に換算して約3億円。これは、政府の年間予算の約3倍にあたります。</ref>を支払う。
:#*日本は、この賠償金を資金として大規模な製鉄所を福岡県に作りました('''{{ruby|八幡|やはた}}製鉄所''')。
:清はそれまでも、イギリスやフランスと争って負けてはいましたが、欧米諸国は、それでも清国は世界最大の人口をかかえる巨大な国<ref>当時、3億人を超える程度の人口があったものとされています。</ref>であって、実力を発揮すれば欧米諸国であっても勝てるものではないと思われていた<ref>これを、「清国は『眠れる獅子』だ」という言い方をします。</ref>ので中国本土への進出はおさえられていましたが、近代化後間もない日本に敗れたため、欧米諸国は清国への進出を強め、中国大陸の多くの地域で欧米諸国の半植民地と言ってよい状態になりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうして清国に勝てたのでしょう<small>
:戦争の勝敗の原因は、様々な要素があって、簡単に決めることができるものではありませんが、その時代の当事国の違いを比較することで、国の体制などの特徴を理解することができます。ここでは、なぜ、清国はやぶれ、日本は勝つことができたのかを考えてみましょう。
:戦争の勝敗を決める要素の第一は双方の国の規模です。大きな国の方が当然有利です。このころ、日本の人口はようやく4千万人程度のところ、清国の人口は3億人を超えていました。農業に適した広大な国土を有しており、近代化が遅れていたとは言え、税収などは日本よりもはるかに大きかったと考えられます。日清戦争の前も、世界最大級の軍艦をドイツから購入していたりします。相手の政権を倒すまでの全面戦争と言われる戦争であれば、日本は、勝つことは難しかったでしょう。
:一方で、清国は皇帝の軍隊は{{ruby|八旗|はっき}}・{{ruby|緑営|りょくえい}}と言われる17世紀の軍隊のままで、これは、日本の武士同様将兵が生まれながらの家柄で決まっている軍隊でしたが、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#アヘン戦争|アヘン戦争]]以後の近代的戦争や民衆の反乱<ref>銃器などを欧米の商人から買っていました。</ref>では対応できなくなっていました。そこで、地方に派遣された高官は地元の有力者に呼びかけ、その地方の税を流用するなどして、地元の若者を集め、私的に軍隊を組織していました。一種の義勇兵ですが、実際は金を払って集めた{{ruby|傭兵|ようへい}}も少なくなかった言われています。
:また、清国は皇帝が独裁する事が建前であったため、外交と軍事がばらばらの動きをし、軍事も統一的な動きはできていませんでした。
:日本の場合、中央政府が全国民から国の制度として兵を集め、政府の予算で設備をそろえ、組織だった訓練を実施した軍隊を有していました。また、「天皇の軍隊」「日本国の軍隊」としての『国民』意識も高く、これが、士気につながりました。
:このような違いから、黄海およびその沿岸での戦闘という局地的な戦争では、国の規模の違いにかかわらず勝つことができたということです。
</small>
|}</div>
==== 日露戦争 ====
[[画像:Location-of-Liaodong-Peninsula.png|thumb|150px|left|遼東半島]]
[[ファイル:Kisaburō Ohara, Europe and Asia Octopus Map, 1904 Cornell CUL PJM 1145 01.jpg|thumb|300px|right|1904年当時、日本人がロシアにもったイメージを伝える風刺地図。]]
:下関条約で、日本は、台湾などとともに中国本土の遼東半島の割譲を受けましたが、ロシア、ドイツ、フランスが反対し('''{{ruby|三国干渉|さんごくかんしょう}}'''<ref>「干渉」とは、「他のものの動きに影響を与える」という元々の意味から、このような場合、「他国の政治に口を出す」という意味で使われています。</ref>)、遼東半島の割譲は取りやめとなりました。ところが、その遼東半島にはロシアが進出し、{{ruby|大連|だいれん}}、{{ruby|旅順|りょじゅん}}<ref name="中国地名"/>といった都市を建設し始めました。
:ロシアは、ユーラシア大陸を横断する鉄道('''シベリア鉄道''')を建築し、ヨーロッパとアジアの間の物流をおさえようとしていました<ref>日本からイギリスやフランスまで、船ならば45日〜50日かかったところを、シベリア鉄道を使えば15日程度で移動できました。</ref>。シベリア鉄道は、もともと、ロシア領内をウラジオストックまでのものですが、ロシアは遼東半島支配に伴って、大連まで{{ruby|東清|とうしん}}鉄道を建設し、その途中である{{ruby|満州|まんしゅう}}地域<ref>現在は、中国東北部と呼ばれる地域です。もともと、「満州(満洲)」とは清王朝をおこした民族(女真族)の名前で地名ではありませんが、「満洲族が起こった土地」と言うことで通称として用いられるようになりました。このころから、1945年頃まで、満州は日本にとって歴史上重要な土地となります。</ref>を実質的に植民地とするなど支配を強めます。そして、満州に接する朝鮮(日清戦争後、{{ruby|大韓帝国|だいかんていこく}})の政治にも介入するなどしはじめました<ref>ロシア進出の背景には、大韓帝国の王室のメンバーや{{ruby|両班|ヤンバン}}と呼ばれる高級官僚らが、朝鮮の政治・経済に段々影響を強めてくる日本を警戒して、それに対抗するため、ロシアと通じていたということもあります。</ref>。
:日本は、ロシアの動きに対して警戒しました。ロシアが満州地域でやっていることは、他のヨーロッパ諸国がアジアやアフリカでやっていて、日清戦争後に中国本土で進められている植民地化であって、そのままでは、満州地域だけでなく、朝鮮半島も、さらには日本までもが、植民地となってしまうのではないかと考えました<ref>これは、大げさな話ではなく、アフリカの植民地化はこの時期に進み、19世紀末には独立国は、エジプト周辺、エチオピア、リベリアだけになっていましたし、アジアも1887年にフランスがベトナムを植民地にするなどして、独立を保っていたのはシャム王国(現在のタイ王国)くらいになっていました。</ref>。
:日本政府では、伊藤博文に代表される日露の衝突を外交努力などで避けるべきとするグループがあった一方で、陸軍に対して大きな影響を持った'''[[小学校社会/6学年/歴史編/人物事典#山県有朋|{{ruby|山県|やまがた}}(山縣){{ruby|有朋|ありとも}}]]'''や首相の{{ruby|桂太郎|かつらたろう}}、外交官出身の外務大臣'''[[小学校社会/6学年/歴史編/人物事典#小村寿太郎|{{ruby|小村寿太郎|こむらじゅたろう}}]]<span id="小村寿太郎"/>'''らは、戦争は避けられないので、それに向けての準備をするという態度に出ました。日本国内では、戦争に向け軍艦を整備したり新たな兵器の開発を行う一方で、ロシアの中央アジアからインドへの南下などを警戒するイギリスと同盟を結び、ロシアとの戦争に備えました。
[[file:Nichirojp.png|thumb|300px|日露戦争の経過]]
:1904年(明治37年)日本とロシアは開戦し('''日露戦争''')、日本とロシアは、ロシアが植民地としていた遼東半島や満州で戦いました。ロシアは、モスクワなどから遠い極東に兵や兵器・軍馬・食料などを送るには、シベリア鉄道に頼るしかないので、すぐに戦場で攻撃の体制を作ることはできません。一方で、日本も、兵などを送るには日本海を渡らなければならないので、この地域の{{ruby|制海|せいかい}}権<ref>ある地域を自由に航行できるということ。</ref>を握る必要がありました。海軍はロシアの太平洋側の主力艦隊である旅順艦隊をせめ有利な立場になりますが、旅順艦隊は、援軍である世界最大級の艦隊バルチック艦隊<ref>「バルト海」で行動する艦隊なのでバルチック艦隊といいます。</ref>が到着するまで、旅順港に待機することになりました。日本陸軍は遼東半島南端から東進鉄道沿いに北上、朝鮮国境からの軍とあわせ、ロシア軍を満州地域北部までおしもどしました。また、旅順に引き込んだ艦隊がバルチック艦隊と合流すると制海権が危うくなるので、'''{{ruby|乃木希典|のぎまれすけ}}'''<ref>死後、乃木神社にまつられます。乃木坂などの地名にも残っています。</ref>が率いる陸軍の軍団が、要塞となった旅順を攻撃します。この旅順を囲む戦いは、日露戦争の中でも多くの日本兵の犠牲を出しましたが1905年(明治38年)1月に降伏し、バルチック艦隊のみを迎えうつことになりました。そうして、5月に'''[[小学校社会/6学年/歴史編/人物事典#東郷平八郎|{{ruby|東郷平八郎|とうごうへいはちろう}}]]'''がひきいる日本海軍は日本海海戦でバルチック艦隊をやぶり、日本海の制海権を安定したものにしました。
:日本は、戦争を有利に進めたとことで、アメリカ合衆国大統領'''セオドア・ルーズベルト'''に講和の仲介を依頼し、日本からは'''[[#小村寿太郎|小村寿太郎]]'''が、ロシアからは'''ウィッテ'''(前蔵相、のちに初代首相)が、米国のポーツマスに出向き、講和会議が開かれました。1905年9月5日、以下の事項を決めた条約('''ポーツマス条約''')が結ばれ、ロシアは中国から撤退し、日露戦争は日本の勝利で終わりました。
:# ロシアは日本の朝鮮半島における優越権を認める。
:# 日露両国の軍隊は、鉄道警備隊を除いて満州から撤退する。
:# ロシアは樺太の北緯50度以南の領土を永久に日本へ譲渡する。
:# ロシアは東清鉄道の内、旅順-長春間の南満洲支線と、付属地の炭鉱の{{ruby|租借|そしゃく}}<ref>土地などを、借り受けるという意味ですが、実質的な支配が行われ、「租借地」というのは、「植民地」とほぼ同義語になります。</ref>権を日本へ譲渡する。
:#*この路線は、「南満州鉄道」と改称され、日本の満洲進出の基礎となります。
:# ロシアは関東州(旅順・大連を含む遼東半島南端部)の租借権を日本へ譲渡する。
:# ロシアは沿海州沿岸の漁業権を日本人に与える。
:ポーツマス条約では下関条約と異なり賠償金の支払いはありませんでした。一部の日本国民はこれを不満に思って、暴動をおこすものもありました。しかし、国民には知らされていませんでしたが、戦争を有利に進めていたとはいえ、これ以上は財政上ほとんど無理な状態になっていて、すぐにでも戦争をやめなければならない状態になっていました。ロシアはそれを見越して、敗戦国でありながら、比較的有利な条件で講和条約を結んだといえます。
:しかし、この結果、満州や朝鮮半島に対するロシアの脅威は去りましたので、日本は、この地域への進出を高めます。特に、満州は石炭や鉄鉱石の地下資源が豊かな地域であったため鉱山開発を盛んに行いました。
:韓国については、政治的な不安定を理由に日本の属国化が進められ、1905年12月には統監府が設置され、伊藤博文が初代統監に就任しました。
:1909年 (明治42年)、伊藤博文はロシアとの外交交渉のため満州のハルビンに出向きましたが、そこで、朝鮮民族主義者に暗殺されます。それまで、韓国に対しては朝鮮民族に対し強硬的に望む人たちと、穏健に進めるべきという人たち(伊藤博文もその意見でした)が対立していたのですが、伊藤博文が暗殺されたことで、強硬派の勢いを増し、1910年(明治43年)8月に、日本は大韓帝国を併合しました('''{{ruby|韓国併合|かんこくへいごう}}''')。
:<span id="辛亥革命"/>日露戦争は、日本とロシアの戦争でしたが、その戦いは清国の領土でなされました。清国は、もはやそれを止める力を失っていました。中国の人々は、外国に国土を侵される不安が高まり、中国の人々が政治参加をする国をつくるため、1911年{{ruby|孫文|そんぶん}}が主導者となって革命を起こしました('''{{ruby|辛亥革命|しんがいかくめい}}''')。翌1912年清王朝は滅ぼされ、アジアにおいて史上初の独立した共和制国家である{{ruby|中華民国|ちゅうかみんこく}}が誕生しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="南下政策"/>ロシアの南下政策<small>
:ロシアは、ヨーロッパの国の中では最も東にあって、17世紀にシベリアを征服し太平洋に達する領土を持つ大きな国ではあったのですが、ヨーロッパ中心部から離れていたので産業革命などはおくれてつたわりました。また、国土の多くが北にあったため、冬にほとんどの港が凍結するなどして、通商などにも支障が出るため、南へ勢力を伸ばす政策をとっていました。これを、「『{{ruby|不凍港|ふとうこう}}』を求めての南下」と言ったりします。19世紀、{{ruby|黒海|こっかい}}を勢力におさめようと、1853年トルコ(オスマン帝国)の領土であったバルカン半島などで戦争(クリミヤ戦争<ref>ロシアは、バルカン半島を南下しようとしたのですが、イギリス・フランスの参戦により押し戻され、クリミア半島が主要な戦場となりました。クリミヤ半島は、現在(2022年4月)、ロシアの侵攻で話題になっているウクライナの黒海地域です。</ref>)を起こしましたが、トルコをイギリスやフランスが支援し、この戦争ではロシアは敗北します<ref>クリミア戦争で、戦傷者の救護を組織的に行い、看護師による近代看護を確立したのが、フローレンス・'''ナイチンゲール'''です。</ref>。その後のバルカン半島の各民族の独立運動に合わせ、1877年オスマン帝国と戦争(露土戦争)をし、これに勝利しバルカン半島を経由したロシアの南下路が開けます。しかし、軍事的な勝利を収めたロシアの勢力拡大に対して欧州各国が警戒感が広がったため、ドイツ帝国の首相ビスマルクが主導し、1878年ベルリン会議を開き、ロシアの南下政策を止め、ロシアはバルカン半島方面の南下を一旦断念します。
:そこで、ロシアは、ヨーロッパ方面から世界へ出ることをあきらめ、東側のシベリアを経由して中央アジアや太平洋への進出をもくろみます。その結果のひとつが、三国干渉及びそれに続く遼東半島への進出です。
:しかし、日露戦争に敗れたため、ロシアは、ふたたび西へ目を向けます。そこで、バルカン半島から東に勢力を伸ばそうとしていたドイツとぶつかります。これが、第一次世界大戦の原因の一つとなります。
</small>
|}</div>
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話&考えてみましょう】日本は、どうしてロシアに勝てたのでしょう<small>
:ここでは、なぜ、ロシアはやぶれ、日本は勝つことができたのかを考えてみましょう。
:双方の国の規模ですが、日本とロシアでは、人口で3倍、国家予算で10倍、常備軍で5倍という、大きな差がありました。また、清国と違い、ロシアの軍隊はロシア皇帝の下に組織された近代的な軍隊でした。実際、戦没者はロシアが81千人程度のところ、日本は88千人と日本の方が被害が大きかったりしています<ref>当時は、戦場の衛生環境などが悪く、病気になって亡くなる兵士も少なくありませんでした。日露とも、戦没者の1/4が病没者で。特に日本の病没の原因としては、ビタミンB欠乏症の「{{ruby|脚気|かっけ}}」が目立っていて、これは、日本陸軍の医療関係者が、当時新興の栄養学を軽視したためとも言われています。この医療関係者には、小説家の森鴎外もいました。</ref>。
:このように、日本に大きな被害が出た戦争であっても、ロシアが強気に出られなかったのは、サンクトペテルブルクやモスクワなどがある本拠地であるヨーロッパから、鉄道で10日以上かかる遠隔の地で兵隊を送ろうとしても、1日に数千人程度が限界だったからでしょう<ref>戦争において装備に大きな差がなければ、数の違いは大きく影響します。</ref>。ロシアにとっては、バルチック艦隊が日本海の制海権をにぎって、日本が大陸に兵隊や物資を送れなくすることで逆転をもくろんだのですが、日本海海戦でその希望もなくなり、ロシアは戦争の継続をあきらめたのだと思われます。
:バルチック艦隊は強力な艦隊でしたが、日英同盟により、インドなどイギリス植民地への寄港<ref>当時の軍艦の動力は蒸気機関であっったため、石炭と真水を大量に積み込む必要がありました。</ref>が拒否されたため、大西洋から、アフリカの南を回ってインド洋経由で7ヶ月もの航海ののちの到着でした。また、ロシアは身分制が残っており、士官は貴族階級など上流階級の出身者が多く、それに対して、水兵などは農民出身の者や都市の労働者などが多く、航海での待遇の差もあり、航海中から対立も生じていました。
:この上流階級と庶民階級の対立は、海軍だけでなく、陸軍でも見られました。なにより、ロシア国内の一般的な生活でも見られたのです。いくら国の規模が大きいとはいえ、戦争は国民生活に商品不足・インフレーションの影響を与えます。もともと、民衆からの不満がみられ、革命運動もあったところ、日露戦争によるインフレーションと数々の戦いで敗戦したとの知らせで民衆の間に暴動が頻発し、1905年には革命と言っていい状態になっていました。このような国内の不安定さから、ロシア政府は講和を急ぐようになり、日本の勝利につながったといえます。
</small>
|}</div>
=== 条約改正と国際社会での地位の向上 ===
[[File:Chikamatsu Kiken buto no ryakuke.jpg|thumb|300px|鹿鳴館における舞踏会を描いた浮世絵]]
;不平等条約改正の歩み
:幕末に欧米各国と結ばれた通商条約(不平等条約)の改正は日本政府の悲願でした。
:明治政府は、文明開化が進んで欧米並みの文明国になったことを示すため、さまざまなアピールをします。たとえば、1883年(明治16年)に外務卿{{ruby|井上馨|いのうえかおる}}は、'''{{ruby|鹿鳴館|ろくめいかん}}'''という、外国からの重要な来訪者や外交官を接待するための社交場を建設し、舞踏会を開いたりしていました。鹿鳴館での舞踏会などには、政府高官の夫人や娘なども参加しましたが、当時はドレスなどの洋装、欧米風の応対のマナーやエチケット、また、ダンスなどは全く一般的ではなく、必死の訓練などがあったと言われています。しかし、このような取り組みは、欧米人には「{{ruby|滑稽|こっけい}}」と感じられたと言う記録も残っており、あまりうまくいきませんでした。
:一方で、政府は、まず[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#治外法権|治外法権]](領事裁判権)の撤廃のため、国内の法整備を進め、公正な裁判が行われることを諸外国に示そうとしました。領事裁判権の裁判は犯罪に関するものなので、法律に関するフランス人の[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#お雇い外国人|お雇い外国人]]ボアソナードが指導してフランスの法律をもとにして、1880年(明治13年)に犯罪とその刑罰に関する刑法<span id="刑法"/>と刑事手続と裁判を定めた治罪法<ref>後に、刑事訴訟法に改正されます。</ref>が制定され、1882年(明治15年)施行されました。1889年(明治22年)には、[[#明治憲法|明治憲法]]が発布され法制度が欧米並みに整理されたことが、国際的に示されました。外務大臣'''[[#陸奥宗光|陸奥宗光]]'''は、各国と粘り強く交渉し、まず、1897年(明治30年)イギリスとの間で治外法権を撤廃する条約を結び、日清戦争終結後の1899年(明治32年)すべての国との間で治外法権を撤廃しました。
:そして、日露戦争の勝利は、世界に驚きをもってむかえられ、国際的地位も上がったことをうけて、外務大臣'''[[#小村寿太郎|小村寿太郎]]'''が主導し、1911年(明治44年)関税自主権も回復しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】大津事件<small>
:1891年(明治24年)、日本を訪問中のロシア帝国皇太子ニコライ(後の皇帝ニコライ2世)が、滋賀県大津市で警備中の警察官に突然サーベルで切りつけられケガを負うと言う事件がありました。
:驚いた日本政府は、すぐに明治天皇自身が見舞いに駆けつけるよう手配し、日本を離れる際も自身で見送りました。大国ロシアの皇太子に対して小国日本の国民しかも警察官が暗殺{{ruby|未遂|みすい}}<ref>殺そうとした相手が死ななかったことを言います。</ref>をおかしたということで、ロシアが攻めてくるかもしれない、そして、当時の日本ではロシアに勝てるはずがないということで、日本国内は、大騒ぎになりました。
:明治政府は、犯人を死刑に処してロシア政府に対して謝罪の意も示そうとしました。
:ところが、当時の[[#刑法|刑法]]では、殺人未遂の最高刑は無期{{ruby|徒刑|とけい}}<ref>現在の言い方では「無期{{ruby|懲役|ちょうえき}}」、一生、刑務所に入れられる刑です。</ref>で、死刑とすることはできません。そこで、政府は、天皇や皇室に暴行などを加え死傷させた場合に適用される{{ruby|大逆|たいぎゃく}}罪を適用するよう裁判所に要請しました。しかし、これは「法律に定められていること以外を罪としてはならない」という近代法の原則「{{ruby|罪刑|ざいけい}}{{ruby|法定|ほうてい}}主義」に反します。大審院院長<ref>現在の最高裁判所長官に相当します。</ref>{{ruby|児島惟謙|こじまいけん}}は、事件の裁判所に、法律に従って判決を下すよう指示し、その結果、死刑ではなく無期徒刑の判決となりました。
:このことは、ロシアとの外交関係を難しくさせるおそれがありましたが、欧米諸国に対しては、「日本は、法律を厳格に守る国である」ということが印象付けられ、条約改正に向けても信用を得ることができました。
</small>
|}</div>
;<span id="国際社会"/>国際社会での地位の向上
: 1912年(明治45年・大正元年)大正天皇が即位し、元号が「'''大正'''」となりました。
: 1914年(大正3年)にヨーロッパの国々を二分した'''[[#全世界を巻き込む戦争 - 第一次世界大戦|第一次世界大戦]]'''が始まりました<ref>第一次世界大戦については[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|次の章]]で詳しく説明します。</ref>。日本は、イギリスやフランスの属する協商国に参加し、敵対する同盟国の一つであるドイツが租借する中国の{{ruby|青島|チンタオ}}<ref name="中国地名"/>や南太平洋の島々を占領しました。1919年戦争は協商国の勝利に終わり、翌年、平和を維持するための'''国際連盟'''が設立、日本は英仏などとともに常任理事国の一つとなりました。
: 第一次世界大戦は、今までに見られなかったほどの大規模な戦争で、戦場が全国土に広がり多くの工場設備なども失われ、工業生産が止まってしまったりしました。しかし、主な戦場はヨーロッパで、日本への被害はほとんどなかったため、日本は、ヨーロッパの工業生産に代わって、綿糸や綿布といった繊維製品や化学肥料など、さまざまな工業製品を輸出しました。また、日本へのヨーロッパからの輸入が止まったため、それにかわる重工業などが起こるきっかけにもなり、国際取引においても機械など高度な工業製品を輸出できる国となりました。第一次世界大戦の影響で日本の経済は急速に成長しました。
;明治後期から大正にかけての人々の生活や文化と学問
:明治維新後、さまざまな[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#殖産興業|殖産興業]]の取り組みによって、経済的余裕ができ、国民生活は向上し、さまざまな近代文化の進展が見られました。また、欧米から伝わった工業的な製紙法と活版印刷は安価で大量の印刷を可能として、新聞や雑誌が広く普及します。これら新聞や出版業の発達したことと、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|学校制度]]が定着し教育水準が上がったことで、国民の政治参加の意識も高まりました。
:さらに、日清戦争・日露戦争といった戦争で、納税額が多いかどうか、つまり財産が多いかどうかにかかわらず、国民として平等に生命を犠牲にするということが意識され、納税額による選挙権の制限([[#制限選挙|制限選挙]])をやめて、成人であれば誰にでも選挙権が与えられる「普通選挙」を求めた社会運動('''普選運動''')がおこり、1925年(大正14年)すべての男性が選挙権を有する普通選挙法が成立しました。このような、民主化の動きを「'''大正デモクラシー'''」と言います。しかし、まだ女性には選挙権は認められていませんでした。
:<span id="政党政治"/>このように、国民の政治への関心が高まると、選挙で選ばれた国会議員による衆議院の発言力が強まり、[[#内閣総理大臣|内閣総理大臣なども衆議院の意向を受けて選び出されることもありました]]。しかし、一方で議会での議論においては、政党同士の争いもあって、無駄な議論がなされるように見えることもありました。また、政策に関しての、議員の{{ruby|汚職|おしょく}}なども発生するようになりました。
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#文明開化|文明開化]]を受けて、日本には西洋風の文化が広く普及し、明治20年(1887年)代以降になると、それを受けた独自の文化が育ってきました。
:新聞や出版業の発達は上で述べたとおり人々の政治への意識を高めたところですが、そこには、政治的な考えなどだけではなく、人々の娯楽としての小説なども掲載されるようになりました。明治も初めのうちは、歌舞伎の演目などを題材としたものが多かったのですが、1885年(明治18年)、{{ruby|坪内逍遥|つぼうちしょうよう}}は、『{{ruby|小説神髄|しょうせつしんずい}}』をあらわし、人々の普段の生活に近い題材をとりあげる、いわゆる近代文学を提唱しました。またその中で、話し言葉と書き言葉の間の大きな違いから、もっと平易で話し言葉に近い言葉を使うよう進められました。これを{{ruby|言文一致|げんぶんいっち}}運動といいます<ref>ただし、今でも話し言葉と書き言葉は同じものではありません。</ref>。このような動きのなかで、多くの近代文学というものが生まれました。その中には、1895年(明治28年)に『たけくらべ』を書いた{{ruby|樋口一葉|ひぐちいちよう}}のような女性もいました。その後、{{ruby|森鴎外|もりおうがい}}や{{ruby|夏目漱石|なつめそうせき}}があらわれ、近代文学が確立します。特に、夏目漱石が1905年(明治38年)に初めて書いた小説『{{ruby|吾輩|わがはい}}は猫である』はユーモアに富んだ内容と落語にヒントを得たとされる平易な語り口調で広く普及し、日本語の書き言葉の元になったとも言われています。
:美術の分野では、写実的な西洋絵画や彫刻が日本でも制作されるようになりました。政府は1887年(明治20年)、「東京美術学校<ref name="芸大">「東京美術学校」と「東京音楽学校」は、のちに合併し「東京{{ruby|藝術|げいじゅつ}}大学」となります。</ref>」を設立し、西洋絵画の製作者や指導者を育てました。
:また、音楽の分野でも西洋音楽の受け入れが進み、1890年(明治23年)、演奏家・作曲家や指導者を育てる「東京音楽学校<ref name="芸大"/>」が開校しました。
:学問の分野では、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#学校|大学教育]]が定着し、日本の科学技術の水準も世界的なものになってきました。物理学では原子のモデルを提唱した{{ruby|長岡半太郎|ながおかはんたろう}}、数学の分野では{{ruby|高木貞治|たかぎていじ}}といった世界的に評価される研究者も登場するようになりました。
:特に、人々の生活に密着した医学の分野では、世界的に進みつつあった細菌学の分野で多くの成果が見られ、破傷風の治療法の研究やペスト菌の発見をおこなった'''[[小学校社会/6学年/歴史編/人物事典#北里柴三郎|{{ruby|北里柴三郎|きたざとしばさぶろう}}]]'''、{{ruby|赤痢|せきり}}菌を発見した{{ruby|志賀潔|しがきよし}}、黄熱病や梅毒の研究で知られ、ノーベル生理学・医学賞の授賞候補ともなった'''[[小学校社会/6学年/歴史編/人物事典#野口英世|{{ruby|野口英世|のぐちひでよ}}]]'''のように国際的な研究者がでてくるようになりました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|[[ファイル:Noguchi Hideyo.jpg|thumb|120px|right]]
'''【脱線 - 覚えなくてもいい話】<span id="野口英世"/>野口英世<small>
:本文に書いたとおり、野口英世は、国際的に活躍した細菌学者で、現在、その肖像が1000円札に使われている人です。子供の頃から大変苦労して勉強して、多くの業績を残した人で、皆さんの中で、野口英世の伝記を読んだことのある人も少なくないでしょう。ここでは、野口英世の生涯について簡単に紹介して、なぜ彼が偉人とされているかをお話ししたいと思います。
:1876年(明治9年)、英世<ref>元の名は「清作」で「英世」は22歳になって改名したものですが、ここでは、「英世」で統一します。</ref>は福島県耶麻郡三ッ和村(現:耶麻郡猪苗代町)に生まれます。貧しいというほどではありませんが、決して余裕のある家の生まれではありませんでした。英世は1歳の時に{{ruby|囲炉裏|いろり}}に落ち、左手に大{{ruby|火傷|やけど}}を負います。ただれた皮膚で指がくっついて開かなくなるというひどいものでした。英世は、学校に上がるようになると、このことでいじめられました。しかし、英世の学校の成績はとても素晴らしいものでした。英世の家計では、上級の学校に出すのは難しく、普通は小学校を出て働きに出るとことだったのですが、これを惜しんだ教師や地域の人がお金を出し合って、上の学校へ進ませました。また、火傷あとが不便であろうと、やはりお金を出し合って、まだ珍しかった西洋医術による手術を受けさせ、左手を使えるようにしました。英世はこの手術の成功に感激したことがきっかけで医師を目指すこととなりました。
:1896年(明治29年)英世は上京し、医学を学びます。1900年(明治33年)米国に渡り、研究を始めます。そして、アメリカを拠点として基礎医学の分野で数々の業績をあげ世界的な名声を得て、何回かノーベル生理学・医学賞の候補者ともなりました。
:1918年(大正7年)以降は{{ruby|黄熱|おうねつ}}病の研究に打ち込み、黄熱病の流行地域である南アメリカ各国やアフリカに渡って研究を続けます。しかし、黄熱病の研究中に自身もその病にかかり、1928年(昭和3年)アフリカのイギリス植民地ゴールド・コースト(現:ガーナ共和国) アクラで亡くなります。
:野口英世が偉人とされるのは、
:*庶民の出身であるにもかかわらず、高い能力で医者・研究者の地位についた<ref>大学以上の高等教育を受けさせることは当時の庶民にはめったにないことでした。また、英世の出身地会津は、戊辰戦争で官軍に抵抗し、政府などに関係者も少なく、薩長などの出身者より不利なところもありました。</ref>。
:*体に受けたハンディキャップにも負けず、努力して勉強した<ref>当時、家が貧しくても、軍隊に入って勉強するという方法もありましたが、英世の場合、このやり方は難しかったと考えられます。</ref>。
:*能力を世に出そうと、周囲の人が協力した。
:*日本ではなく、国外の研究所を拠点として国際的な活躍をした。
:というところにあると思います。野口英世の業績自体は、その後の医学の発展によって否定されたものも少なくはありませんが、目標に向けて努力する姿には見習うものがあると思います。
</small>
|}</div>
:日本の経済力が大きくなることにともなって、人々の暮らしもだんだん豊かなものになっていきましたが、この時期に、大きな災害に見舞われてもいます。
:まず、<span id="スペインかぜ"/>1918年(大正7年)から1920年(大正9年)にかけて世界中で流行した'''スペインかぜ'''といわれるインフルエンザの大流行です。当時は第一次世界大戦の交戦中であったため、軍人を中心に広く行き来し世界中で流行しました。全世界で30%にあたる5億人が感染し、少なくとも1700万人の死者がでたものと推定されています。日本においてもこの3年間で約40万人程度の死者が出ました<ref>最近のコロナ禍で、2020年から2022年7月現在の死者の累計数が約3万人であることと比較してみてください。</ref>。
:もう一つは、<span id="関東大震災"/>1923年(大正12年)9月1日、南関東一円を襲った'''関東大震災'''です。マグニチュード7.9〜8.3と推定される大地震<ref>1000年に1度と言われる2011年東日本大震災のマグニチュードは9.0で特別ですが、1995年阪神淡路大地震のマグニチュードは7.3くらいです。</ref>で、約1万人が倒れた建物の下敷きになって亡くなり、約9万人が、地震ののちに発生した火災で亡くなりました。
== 世界の変化3 ==
:'''この節は、小学校で学習する範囲を超えていますが、昭和以後の日本の歴史に大きく関わる第二次世界大戦がなぜ起きたのか、その後、「世界」はどうなったのかということを理解できていないと、昭和以降の日本の歴史を深く理解することはできません。'''
:'''この節では、「ナショナリズム」「社会主義・共産主義」「資本主義」とはなにかということについては理解しておいてください。ここでは細かいところを覚えるのではなく、大きな流れを頭のかたすみに置けるようにし、次の章を読み進めてください。'''
=== ナショナリズムと社会主義・共産主義 ===
==== 20世紀初めの世界 ====
:[[File:World 1898 empires colonies territory.png|thumb|650px|1898年の世界<br>国旗は上から、イギリス、フランス、スペイン、ポルトガル、オランダ、ドイツ、トルコ、ベルギー、ロシア、日本、清、オーストリア、デンマーク、スウェーデン、アメリカ、イタリアの順です。]]
:18世紀から19世紀にかけて、ヨーロッパや北アメリカを中心に[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|'''産業革命'''が起こって経済を工業が大きく動かす社会になりました]]。また、[[#世界の変化2_-_市民革命|欧米の'''市民革命'''をきっかけに経済力を持った市民が国の政治に参加するようになり、国民全員が国の活動に参加する'''国民国家'''が誕生しました]]。日本も、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#明治維新と武士の社会の終わり|明治維新で一つの国民国家になり、富国強兵・殖産興業をスローガンとして、国内経済の近代工業化を進めました]]。
:一方、国民国家をつくりあげ、産業革命で大きな経済力を得た欧米の各国(ここでは、『{{ruby|先進国|せんしんこく}}』と呼んでおきましょう。)は、[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#帝国主義|各国の工業製品の材料と{{ruby|市場|しじょう}}を求め、アフリカやアジアの、まだ、国民国家としてまとまっていない国や地域に進出し、ほとんどの地域を植民地にしていました]]。
==== ナショナリズム(民族運動) ====
:近代的な工業は、先進国を中心に進みましたが、やがて、製品を各地に売るため、また、原材料を輸送するため鉄道が各地に伸びて、近代社会は世界各地に広がり人々の生活を変えていきました。植民地となった地域でも近代的な教育が行われ、自由や平等といった人権の考え方が普及します。また、新聞などの出版物により人々のさまざまな考えが、広く伝わるようになります。
:植民地となっている地域で、このような知識の高まりが広がると、人々の中に、「どうして、私たちは、言葉や生活習慣の違う人たちに支配されなければならないのか」「私たちの作ったものは、安く買われて、先進国のものを高く買わないといけないのか」という考えが起こってきて、「独立して、自分たちの国を作ろう」という主張が芽生えます。この考えやこの考えに基づく運動を「'''ナショナリズム'''(民族主義・民族運動<ref>「ナショナリズム(Nationalism)」は、「ナショナル(National; ネイション(Nation; 国民・民族)の)」+「イズム(ism; 主義)」という意味です。国民主義とも訳されます。</ref>)」といいます。
:ナショナリズムは、最初、西ヨーロッパに隣接するオーストリア=ハンガリー帝国(「オーストリア帝国」と略します)やオスマン帝国の領土<ref>オーストリア帝国は、もともとヨーロッパの中でも最も強力な国の一つで、プロシアを中心としたドイツ帝国の成立まではドイツ民族の中心でした。この時代においても、中部ヨーロッパに広い領土を持つ国です。また、オスマン帝国は、15世紀に起こったトルコ民族が中心の国で、中東から北アフリカにかけてのイスラム世界を広くおさめ、ヨーロッパもバルカン半島まで領土としていた大国です。両国とも、19世紀にあっても広い領域を支配していましたが、近代化が遅れていました。</ref>であった中部ヨーロッパや東ヨーロッパ('''バルカン半島'''と呼ばれる地域を含みます)で盛んとなり、これが、第一次世界大戦の大きな原因となります。
:第一次世界大戦終結後は、アジア・アフリカの各地に広がり、世界各地で独立運動が展開されます。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="バルカン半島"/>バルカン半島<small>
[[File:Karte Suedosteuropa 03 01.png|thumb|200px|太線でかこまれた地域がバルカン半島です。色の濃い地域が民族や宗教が入り混じっている地域になります。]]
:バルカン半島は、ヨーロッパ中部、ドナウ川より南のアドリア海と黒海にはさまれた地域で、南は狭い海峡を隔ててアナトリア半島に面しています。歴史的には、古代ギリシア文明が栄えた地域であり、それに引き続いて古代ローマの文化が栄え、アナトリア半島との海峡のそばには、中世まで栄えた東ローマ帝国の首都コンスタンティノープル(ビザンティウム)が建設され、後にオスマン帝国の首都イスタンブールとなります。
:バルカン半島は、このように西にドイツやイタリアなどの西ヨーロッパ社会、東にロシアなどのスラブ社会、南にトルコなどのイスラム社会にかこまれ、東西ヨーロッパと西アジアを結ぶ交通の重要な地域であったため、それらの大きな勢力が波のように寄せたり引いたりする地域でした。また、この地域は山がちで、盆地が多く、各盆地ごとに生活する社会ができあがり、大変複雑な状態になっていました。スラブ系民族が多かったのですが、それに、ラテン系民族や、ギリシア系民族が混ざり、一部にはアジア系の民族もいました。また宗教もカトリックとギリシア正教にイスラム教の三大勢力が入り組んでいました。
:19世紀以降、人々がナショナリズムをとなえはじめ、各地で独立運動が起こります。この独立運動も運動の中での対立もあって、まとまることがなく、過激な行動も見られるようになりました。こうして、バルカン半島は『ヨーロッパの火薬庫』と呼ばれるようになりました。
</small>
|}</div>
==== 社会主義と共産主義 ====
:[[File:Marx7.jpg|thumb|150px|カール・マルクス]]
:<span id="労働運動"/>先進国国内にあっては、工業が発展するにつれて多くの{{ruby|労働者|ろうどうしゃ}}が生まれました。工場では工場労働者、石炭の炭鉱や鉄鉱石の鉱山では鉱山労働者、港で貨物の積み下ろしをする港湾労働者などです。産業革命前は、たとえば職人などは技術を長年にわたって習得する必要がある反面、技術を習得した職人は、代わりになる人を探すのが難しいという特徴がありましたが、産業革命以降の労働者の多くは単純な作業が多く、それができる人は数多いので経営者の都合で雇うこともクビにすることも簡単にできるようになりました。そのため、経営者など(労働者に対して{{ruby|資本家|しほんか}}という言い方をします)に比べて、多くの労働者は非常に貧しい生活となることが一般的でした。労働者は、自分たちの待遇(安定して雇われること、十分な賃金をもらえることや安全な労働環境など)を改善するために'''{{ruby|労働組合|ろうどうくみあい}}'''を結成し、集団で経営者と交渉したり、場合によっては'''ストライキ'''を起こすなどして資本家に対抗したりしました('''{{ruby|労働運動|ろうどううんどう}}''')。そのように、社会が変わっていくのを受けて、自由な経済活動を制限してでも、人々の平等な生活が送れる社会をめざすべきであるという'''{{ruby|社会主義|しゃかいしゅぎ}}'''の考えが生まれます。[[#世界の変化2 - 市民革命|市民革命]]は、国王や世襲の貴族といった身分社会から「自由」に活動できる権利を求める社会の変化でしたが、この自由には、工場を作ったり、物を取引する経済的な自由を含みます。自由な経済活動の結果、貧富の差が生じることについて、これをしかたがないことと認める考え方を、社会主義者は批判して、'''{{ruby|資本主義|しほんしゅぎ}}'''と名づけました。さらに、社会主義の中から、19世紀の半ばドイツ生まれの経済学者'''カール・マルクス'''は『{{ruby|資本論|しほんろん}}』を書いて、一層過激な'''{{ruby|共産主義|きょうさんしゅぎ}}'''をとなえました。
:<span id="共産主義"/>共産主義とは、簡単にいうと、農地や工場といった経済的な価値を生み出すものは、人々の共有にしてしまって、全ての人たちが働くことからのみ収入を得る<ref>この考えは、「働かざる者食うべからず」というスローガンに現れています。これは、働かないで怠けているものは食べるべきでない(=生きるべきでない)ととらえられがちですが、第一には、たとえば、地主が土地を小作人に貸したり、財産の利子や配当収入だけで生活できるような資本家を攻撃した言葉です。</ref>平等な社会を目指すという考え方です。それを実現するためには、資本家が持っている財産をうばって、分けあたえるということが必要になります。これは、革命であって、共産主義は、目指す社会を実現させるためには、革命が必要だと主張しました。この考え方は、世界中の多くの労働者の支持を得た一方で、ほとんどの資本家や、資本家が強く関わっている当時の各国の政府を強く警戒させました。また、社会主義や共産主義は、全ての人民が平等という考えが根本にありますから、君主制や民族主義とはあいいれないもので、<span id="反社会主義"/>王国や天皇制に親しみのある人たちや同じ民族だけで助け合おうとする人たちと敵対しましたし、また、平等な社会を作るためには、各個人の自由は多少制限されても仕方がないという考えであるため、人としての自由な行動を大事に思う人たちとも対立しました。
<div style="margin:0 2em 0 4em">
{| class="wikitable" style="width:100%"
|'''【脱線 - 覚えなくてもいい話】<span id="イノベーション"/>新たな科学・技術の発展<small>
:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#世界の変化1_-_産業革命|人々のくらしが「産業革命」で大きく変わったことは、前にお話ししたとおりですが]]、1860年頃から1910年くらいまでの間に、「産業革命」と同じくらい、またはそれ以上の科学技術上の大きな発展が見られ、さらに人々の生活を大きく変えます<ref>歴史学者の一部では、これを「'''第二次産業革命'''」と呼びます</ref>。
#'''新たな動力の発明''' - 「産業革命」において、中心となった動力は、主に石炭を使用した蒸気機関でしたが、19世紀半ば以降、これに、新たな動力源が加わります。
#;{{ruby|内燃機関|ないねんきかん}}
#:内燃機関とは、ガスまたは霧状にした燃料を爆発させ、それによって急激にふくらむ力を動力にする装置です。皆さんがよく知っているところでは、自動車のガソリンエンジンやディーゼルエンジンが代表的なものです。
#:蒸気機関の発明は主にイギリスでなされましたが、内燃機関はドイツで発展しました。1880年代、ゴットリープ・ダイムラーとカール・ベンツは各々で実用的なガソリンエンジンを発明し、それに少し遅れて、ルドルフ・ディーゼルがディーゼルエンジンを発明します。内燃機関は、蒸気機関に比べて小型化が容易なので、これを動力とした自動車が誕生しました<ref>ゴットリープ・ダイムラーとカール・ベンツは、各々で自動車の会社を作ります。1926年それらの会社が合併しダイムラー・ベンツができます。現在のメルセデス・ベンツ・グループ(「メルセデス」はダイムラー社製の車の愛称です)です。</ref>。蒸気機関は石炭に加え水が必要でしたが、内燃機関は燃料だけで足りるため、船舶などの動力は早期に内燃機関に切り替わりました。
#:<span id="飛行機"/>また、小型で高出力という特徴を活かして、1903年アメリカで'''ライト兄弟'''がガソリンエンジンを動力とした'''飛行機'''を飛ばすことに成功しました。
#:このように、内燃機関は小型にでき利用できる範囲も広いということで蒸気機関に取って代わっていきました。そのため、石油が資源としての重要性を大きく増すことになりました。
#;{{ruby|電動機|でんどうき}}(モーター)・発電機
#:[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代#電気|電気が長い間研究されていたことは、前章に書いたとおりです]]。
#:電気を研究しているうちに、電気を通すことで磁石の力(磁力)が生じることが発見されました。すなわち、「電流」を通すと、「磁力」が発生し、鉄などが電磁石にくっつく(=「運動」する)ということです。1831年ファラデーは、これをまとめた、電気と磁気と運動の関係を発見します。この発見をもとに工夫して、電流を流して連続した回転運動を得る電動機(モーター)が発明されました。
#:逆に磁力のあるところで電線を運動させると、電線に電流が生じます。これを、応用して発電機が発明されました<ref>モーターに力を加えて回すことで電流を得ることができます。</ref>。電力は、それまで、化学反応を使った電池によって得ていましたが、大量に得ることは困難でした。発電機の発明によって、大量の電力を連続で安定的に得ることができるようになり、次に述べる「電気の実用化」が可能になります。
#'''電気の実用化'''
#:こうして、大量の電気が供給されるようになると、産業や生活に大きな変化がもたらされます。
#:産業の面では、電気を使うことでメッキや化学産業などが起こりました。また、精錬するのに電気を必要とするアルミニウムが実用化になりました。
#:生活の面では、1880年頃に'''トーマス・エジソン'''が電球を発明するなど、身近な家庭電化製品が発明されていきました。また、同じ時期に'''アレクサンダー・グラハム・ベル'''が実用的な電話を発明しています。
#:1900年頃、音声を電波<ref>何もない空間を電気の変化を伝える性質である電波は、1887年に発見されました。</ref>を使って無線で飛ばす技術が開発され、それを応用して、1920年、'''ラジオ放送'''が開始しました。
#'''化学工業'''
#:植物が育つには{{ruby|窒素|ちっそ}}が必要ですが、空気中の窒素は、豆類の根につく細菌類が化学合成し物質として固定するのを待つしかありませんでした。1909年にドイツで完成されたハーバー・ボッシュ法によって、空気中の窒素から直接、化学肥料の材料となるアンモニアを合成できるようになりました。効果的な化学肥料を製造できるようになり、農作物の収穫が格段と大きくなりました。これは、「水と石炭と空気からパンを作る方法」と言われました。
#:また、従来は火薬(黒色火薬)の原料として{{ruby|硝石|しょうせき}}が使われていて、地下資源として採掘するなど、容易に入手できるものではありませんでしたが、アンモニアが大量に手に入るようになったことと、黒色火薬より強力な窒素系の火薬が開発されたことで<ref>代表的なものは、ニトログリセリンです。これを安全に取り扱えるようダイナマイトを発明したアルフレッド・ノーベルは、莫大な遺産でノーベル賞を創設しました。</ref>、火薬製造は原料の輸入に頼らず、強力な火薬が大量に製造できるようになりました。
</small>
|}</div>
=== 全世界を巻き込む戦争 - 第一次世界大戦 ===
==== 先進国の間の対立 ====
:[[File:3goku kyosho & 3goku domei.png|thumb|250px|三国同盟と三国協商]]
:先進国のうちでも、イギリスやフランスは、いち早く近代的な国家の仕組みを整え、産業革命も世界に先がけて成しとげていました。そのため、国内では余る生産力を海外に向けるためアフリカやアジアの多くの地域を植民地として、綿花など原材料の生産地として、そして製品の市場としていました。19世紀半ば頃から他のヨーロッパの他の国も近代工業化がすすんできました。特に、1871年に北部のドイツを統一してできたドイツ帝国では、[[#イノベーション|科学技術のめざましい発展]]が見られ、国の経済力は、すでにフランスを圧倒し、イギリスと肩を並べるものになっていました。しかし、イギリスやフランスは国外にも多くの植民地をはじめとした国際的な市場を持っていたのですが、近代化の遅れたドイツは植民地をあまり持っておらず、国外への展開に困難がありました。
:ドイツ帝国は、同じドイツ系のオーストリア帝国、隣国のイタリア王国と同盟し('''三国同盟'''<ref name="イタリア">'''イタリア王国'''もドイツと同じように市民革命ののちに封建諸国でばらばらであったイタリア民族を統一した王国で、イギリス、フランスを追いかけていた国の一つです。このような共通点から、ドイツと同盟を結びますが、オーストリアとの間に領土問題が存在したため、最初は参戦せず、後に、協商国側で参戦します。</ref>)、オスマン帝国とはかって、バルカン半島からトルコを経由して中東までの鉄道を敷設し、この地域の経済を有利に進めようともくろみました。ドイツから中東までを独占し、さらに、そこからアジア・アフリカに進もうとする考えです。
:この考えに、アジアやアフリカを大きな市場としていたイギリスやフランスは警戒します。
:また、東にあるロシアは、バルカン半島での[[#南下政策|南下政策]]がクリミア戦争で{{ruby|挫折|ざせつ}}した後、極東に目を向けていたのですが、[[#日露戦争|日露戦争]]に敗れたため、再び、クリミヤ半島からの南下に政策を変えます。今度は直接攻め入るのではなくバルカン半島のスラブ国家や独立運動家を支援しオーストリア帝国やオスマン帝国に対抗させる形での介入です。イギリスとフランスは、ドイツを{{ruby|牽制|けんせい}}<ref>相手に自分の行動を見せつけ、勝手な行動をとれなくすること。</ref>するため、ロシアとの間に{{ruby|協商|きょうしょう}}条約<ref>「協商」は「相談をする」と言う意味で、「協商条約」は外交にあたって相談をするということを約束した条約です。「商業」と直接の関係はありません。</ref>を結びます('''三国協商'''<ref>英仏・仏露・英露、各々の協商条約などを合わせたものです。イギリスとロシアは日露戦争までは敵対していましたが、ロシアが敗戦したことをきっかけに、同盟関係を結びます。</ref>)。
:こうして、バルカン半島を中心に、ドイツ・オーストリア・オスマン帝国とその東西の国との緊張が高まってきました。
==== 初めての『世界大戦』 ====
:バルカン半島中西部のボスニア・ヘルツェゴビナは、長い間、オスマン帝国の領土で、住民もイスラム教に改宗した人々(ボスニア人)が多い地域でしたが、19世紀後半以降オーストリア帝国が支配する領域となっていました。
:1914年6月28日、オーストリア皇太子がボスニア・ヘルツェゴビナのサラエボを訪問した際、隣国セルビア王国のボスニア系の独立運動家に暗殺されました('''サラエボ事件''')。これが、きっかけとなって、7月28日オーストリア帝国はセルビア王国に宣戦布告し、セルビアを支援するロシアも参戦、これを受けてオーストリアと同盟を組むドイツが参戦、そして、ドイツと敵対するフランスとイギリスが参戦し全ヨーロッパにおける戦争『'''第一次世界大戦'''<ref>これから、25年後、次の世界中を巻き込んだ大きな戦争が起こり、それを『'''第二次'''世界大戦』と呼ぶため、この戦争を『'''第一次'''世界大戦』とよびます。この当時は、『世界戦争』・『大戦争』と呼んでいました。</ref>』が始まりました。なお、以下、ドイツ・オーストリア側を「'''同盟国'''<ref name="イタリア"/>」、イギリス・フランス・ロシア側を「'''協商国'''」と言うこととします。
:第一次世界大戦はそれまでの戦争とことなって『'''国家総力戦'''(または、'''総力戦''')』と言われます。それまでの戦争は、あくまでも軍隊と軍隊の戦いで、軍事拠点をめぐっての争いや、双方の主力部隊がある戦場で戦う(会戦)もので成り立っていて、そのような場所以外が戦火の被害を受けることは少なく、また、軍人以外で戦争で死傷する人は限られていました。しかし、第一次世界大戦になると、戦争は軍人以外の国民も巻き込んだものとなります。兵士は国民の中から徴兵されたものですし、銃砲や砲弾・銃弾、それに用いる火薬といった兵器の製造力も国内の工業力に支えられます。兵器だけではなく、軍服や戦場に持ち込む食糧もそうです。また、兵器やその他の物資を輸入に頼るにしても、その資金は国内の工場の生産物を輸出することで得られるものです。そのため、敵対する国は、相手の軍隊を攻撃するだけではなく、相手の国の生産力を下げるため、戦闘の機会に工場や輸送に用いる鉄道・港湾・船舶を破壊するようになります。さらに、相手が戦争を継続する力を落とすために、軍隊どうしの戦場ではないところの住宅等も破壊するようになりました。総力戦になって、軍人以外の民間人の死傷者や家屋などの財産の破壊が、それ以前と比べられないほどに増大しました。
:戦争は、ヨーロッパだけでなく世界中を巻き込みました。1914年11月ロシアと対抗し、イギリスに脅威を感じていたオスマン帝国は同盟国として参戦しました。こうして戦争は北アフリカなどにも広がりました。
:日本は、日英同盟から、イギリスに要請され協商国側に参戦し、ドイツの租借地である中国の{{ruby|青島|チンタオ}}や南太平洋の島々を占領しました。
:[[File:Cheshire Regiment trench Somme 1916.jpg|thumb|250px|第一次世界大戦の塹壕(ざんごう)]]
:第一次世界大戦では、{{ruby|塹壕|ざんごう}}という攻めてくる敵に対して地面に人が隠れられる溝を掘って<ref>フランスとドイツの間には、大西洋からスイスまでの全長700kmにわたる塹壕が両陣営でできました。</ref>、守りを固める戦法をとったため、お互い戦闘が進まず、戦争は長期化し、同盟国・協商国ともども国内経済は衰退し、国民生活はだんだん貧しいものとなっていました。一方で、当時の最先端の科学技術は次々と投入されます。化学工業の発展は火薬の力を強くしていましたし、毒ガスの開発にも応用されました。また、内燃機関を使ったトラックなどが、馬車などに代わって兵士を移動する手段となり、また、道の状態にかかわらず進むことができる、戦車なども開発されました。そして、[[#飛行機|発明されたばかりの航空機]]も戦場に投入されました。こうした、最新の科学技術の投入は、戦場をますます{{ruby|悲惨|ひさん}}なものにしていきました。
:1917年になって、状況が大きく変わります。
:アメリカ合衆国(以下、しばしば、「米国」と略します)は、もともと、「<span id="モンロー主義"/>南北アメリカ大陸のことに、ヨーロッパの国に口を出させない。その代わり、米国もヨーロッパの政治に口を出さない」という外交の方針があって、また、移民の国であるため、ドイツ系の国民も多く、中立の立場にいました。しかし、ドイツがイギリス周辺を航行する船を、軍事に関する物品を輸送する船であると潜水艦で攻撃し沈めるという作戦をとったところ、米国人を多数乗せた船を沈めると言う事件などがあって、この年に、協商国側として参戦します。米国の参戦は軍隊が増えたことに加えて、米国の工場など生産設備が無傷であったため、イギリスやフランスといった協商国には物資がどんどん補給され、協商国側に有利となりました。
:一方で、東側のロシアとの戦争も一進一退の状態でしたが、バルト海と黒海を同盟国側が封鎖したため、ロシアは輸出入がとだえ、国内の物資不足とインフレが社会問題となっており、各地でストライキや暴動が起こり、1917年2月に皇帝ニコライ2世は退位します('''ロシア革命''')。このような中、[[#共産主義|共産主義]]の運動家である'''ウラジーミル・レーニン'''らが政府を握り、同年12月にはドイツとの戦争を停止します。
:こうして、ドイツは、東側での戦争は終結したのですが、イギリス・フランスと戦う西側では、1918年になると米国の支援により優勢になり、また、[[#スペインかぜ|スペインかぜ(インフルエンザ)が大流行]]するなどして、戦闘の継続は困難なものとなり、11月ドイツ皇帝ヴィルヘルム2世はオランダへ{{ruby|亡命|ぼうめい}}<ref>国外に逃げ出すことを言います。</ref>、オーストリア皇帝カール1世も退位し、第一次世界大戦は事実上終了しました(正式な終了は講和条約が締結された翌年1919年となります)。
:同盟国であったドイツ帝国、オーストリア帝国、オスマン帝国は崩壊し、それぞれ共和国となりました<ref>オスマン帝国は、1918年に降伏し、1922年にトルコ革命により共和制となります。</ref>。
:第一次世界大戦は、協商国側の戦死者 553万人、戦傷者 1283万人、行方不明者 412万人、同盟国側の 戦死者 439万人、戦傷者 839万人、行方不明 363万人。民間人の死亡者、協商国側 360万人、同盟国側 314万人と人類が経験したことがない規模の犠牲者を出すことになりました。
==== 第一次世界大戦後の世界 ====
:1919年フランスのパリで第一次世界大戦の講和会議が開かれました。その結果、
:#敗戦国は戦勝国に賠償金を支払う。
:#領土の一部を戦勝国に割譲する。
:#オーストリア帝国、オスマン帝国が支配していた中央ヨーロッパ・バルカン半島、中東から北アフリカにかけての地域について、独立またはイギリスやフランスの保護領とする。
:#敗戦国の軍備は数年間制限する。
:などが決められました。
:また、このような戦争が2度と起こらないようにと米国大統領ウッドロウ・ウィルソンが提唱し、常設の国際的な協議機関「'''{{ruby|国際連盟|こくさいれんめい}}'''」が誕生します。国際連盟の運用は理事会が行いますが、日本は理事会の常任理事国にイギリス、フランス、イタリアと共に選ばれました。しかし、これを提唱した米国は、[[#モンロー主義|従来の国の方針]]から国内の反対があって国際連盟に加盟しませんでした。
;第一次世界大戦がもたらしたもの
:第一次世界大戦は、人類の歴史が始まって以来の大量の戦死者や戦傷者を出し、当時最も発展していたヨーロッパの国土が荒廃するなど、世界に大きな影響を与えました。その結果として以下のような変化が生じました。
:#ヨーロッパの衰退とアメリカ合衆国・日本の台頭
:#:同盟国であるドイツはもちろん協商国側のフランスは戦場として荒廃し、イギリスも大量の兵力を送り出すなどして疲弊するなど、ヨーロッパの生産力が弱まりました。代わって戦場とならなかった米国は、協商国に兵器他大量の物資を輸出した他、ヨーロッパ諸国が輸出していた地域に代わって輸出することになり、大きな経済的発展を見せることとなりました。その国力を背景に、国際政治で主導的な地位に立ちました。しかし、[[#モンロー主義|もともとの国の方針]]から、国際政治に十分に参加できませんでした。
:#:日本も、国民国家を成立させ産業革命をなしとげた世界でも数少ない国のひとつでしたが、ヨーロッパから遠く離れ、第一次世界大戦の影響を受けることはなく、米国ほどではありませんがヨーロッパの国々が輸出できない分をうめあわせるなどして経済が発展し、[[#国際社会|国際社会でも有力な国となりました]]。
:#<span id="軍縮"/>国際機関の誕生と軍縮の傾向
:#:それまでの国際外交は、国対国の関係でしたが、国際関係が複雑になると、関係する国がまとまって討議するようになりました。第一次世界大戦以前から、電気通信に関して万国電信連合(現.国際電気通信連合)がありましたが、戦後、世界平和を目標とする国際連盟が結成され、平和以外にも人権などについて各国が参加して討議されるようになりました。
:#:第一次世界大戦の{{ruby|惨状|さんじょう}}から、各国共に{{ruby|厭戦|えんせん}}<ref>戦争を嫌うこと。</ref>ムードになっていたため、軍縮に関する国際会議が何回も開かれました。
:#ナショナリズムの実現
:#:ナショナリズムの高まりは、国際的に認められるようになり、オーストリア帝国やオスマン帝国が支配した領域から、同じ民族で集まった国が数多く独立することになりました。しかし、アジアやアフリカの諸国は、まだ独立が認められず、第一次世界大戦後はアジア各地での独立運動が見られるようになります。
:#:また、先進国自身においても一種の民族主義が盛んになります。これは、国外資本が進出してくることや社会主義の民族主義を否定する動きに反発するものです。これが、のちに[[戦争への道と現代の民主国家日本の誕生-昭和から現在まで#ファシズム|ファシズム]]と呼ばれるものになります。
:#社会主義国家の誕生
:#:ロシア革命後、ロシア国内では内戦が起こり、1922年レーニンが率いる共産党が国内をまとめ、世界で初めての[[#共産主義|社会主義・共産主義]]を国の仕組みに持った'''ソビエト社会主義共和国連邦'''<ref>「ソビエト(ソヴェート)」はロシア語で「評議会」の意味で、ロシア革命前後に人々が集まって政治の方針を決めた団体が母体になっていることを意味します。「社会主義共和国」は社会主義を政治の方針とする共和国ということです。最後の「連邦」は、そのような社会主義共和国がいくつか集まって1国となっているということを言っており、ロシア・ソビエト連邦社会主義共和国、ウクライナ社会主義ソビエト共和国、白ロシア・ソビエト社会主義共和国など、いくつかのの国で構成されていました。</ref>('''ソビエト連邦'''、'''ソ連''')が誕生しました。
== 脚注 ==
以下は学習の参考ですので覚える必要はありません。<small>
<references/></small>
----
{{前後
|type=章
|[[小学校社会/6学年/歴史編]]
|[[小学校社会/6学年/歴史編/歴史の流れをつかもう|日本の歴史の流れ]]
|[[小学校社会/6学年/歴史編/明治維新と近代国家日本の成立-幕末・明治時代|明治維新と近代国家日本の成立-幕末・明治時代]]
|[[小学校社会/6学年/歴史編/戦争への道と現代の民主国家日本の誕生-昭和から現在まで|戦争への道と現代の民主国家日本の誕生-昭和から現在まで]]
}}
[[Category:社会|しようかつこうしやかい6]]
[[Category:小学校社会|6ねん]]
[[Category:小学校社会 歴史|#12]]
lu4op8olh8fk6ivxxxmk74yz2kprork
ガリア戦記 第3巻/注解/15節
0
35225
205948
205393
2022-07-28T13:10:52Z
Linguae
449
/* 原文テキスト */
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C・IVLII・CAESARIS・COMMENTARIORVM・BELLI・GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER・TERTIVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第3巻/注解|第3巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第3巻/注解/14節|14節]] |
[[ガリア戦記 第3巻/注解/15節|15節]] |
[[ガリア戦記 第3巻/注解/16節|16節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref> 15.
<!--❶--><sup>1</sup>Disiectis<!--Deiectis--><!--,--> ut diximus<!--,--> antemnis, cum singulas binae ac ternae naves circumsteterant, milites summa vi transcendere in hostium naves contendebant. <!--❷--><sup>2</sup>Quod postquam barbari fieri animadverterunt, expugnatis compluribus navibus, cum ei rei nullum reperiretur auxilium, fuga salutem petere contenderunt. <!--❸--><sup>3</sup>Ac iam conversis in eam partem navibus quo ventus ferebat, tanta subito malacia ac tranquillitas exstitit ut se ex loco commovere<!--movere--> non possent. <!--❹--><sup>4</sup>Quae quidem res ad negotium conficiendum maxime<!--maximae--> fuit opportuna<!--oportunitati-->: nam singulas nostri consectati expugnaverunt, ut perpaucae ex omni numero noctis interventu ad terram pervenerint<!--pervenirent-->, cum ab hora fere quarta<!--IIII--> usque ad solis occasum pugnaretur. </div>
<span style="background-color:#ffc;"></span>
----
;テキスト引用についての注記
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:accommodatae|accommodātae]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:collatis|collātīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:colloquium#Latin|colloquium]], complūrīs, [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:montis|montīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllōs, [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:subeuntis|subeuntīs]], trīs, [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adcommodatae|adcommodātae]], [[wikt:de:Atuatuci|Atuatucī]], Atuatucōs, Haeduī, [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第3巻#15節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第3巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
[[Category:ガリア戦記 第3巻|15節]]
pcpymcpzbctbo9w4rhn5chfe0tezldr
205950
205948
2022-07-28T13:43:18Z
Linguae
449
/* 原文テキスト */
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C・IVLII・CAESARIS・COMMENTARIORVM・BELLI・GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER・TERTIVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第3巻/注解|第3巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第3巻/注解/14節|14節]] |
[[ガリア戦記 第3巻/注解/15節|15節]] |
[[ガリア戦記 第3巻/注解/16節|16節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref> 15.
<!--❶--><sup>1</sup>Disiectis<!--Deiectis--><!--,--> ut diximus<!--,--> antemnis, cum singulas binae ac ternae naves circumsteterant, milites summa vi transcendere in hostium naves contendebant. <!--❷--><sup>2</sup>Quod postquam barbari fieri animadverterunt, expugnatis compluribus navibus, cum ei rei nullum reperiretur auxilium, fuga salutem petere contenderunt. <!--❸--><sup>3</sup>Ac iam conversis in eam partem navibus quo ventus ferebat, tanta subito malacia ac tranquillitas exstitit ut se ex loco commovere<!--movere--> non possent. <!--❹--><sup>4</sup>Quae quidem res ad negotium conficiendum maxime<!--maximae--> fuit opportuna<!--oportunitati-->: nam singulas nostri consectati expugnaverunt, ut perpaucae ex omni numero noctis interventu ad terram pervenerint<!--pervenirent-->, cum ab hora fere quarta<!--IIII--> usque ad solis occasum pugnaretur. </div>
<span style="background-color:#ffc;"></span>
----
;テキスト引用についての注記
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:accommodatae|accommodātae]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:collatis|collātīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:colloquium#Latin|colloquium]], complūrīs, [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:montis|montīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllōs, [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:subeuntis|subeuntīs]], trīs, [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adcommodatae|adcommodātae]], [[wikt:de:Atuatuci|Atuatucī]], Atuatucōs, Haeduī, [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第3巻#15節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第3巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
[[Category:ガリア戦記 第3巻|15節]]
gpf5g9m56yes56i3kgbqpb2u83o51zt
Crystal
0
35227
205956
205904
2022-07-28T21:51:59Z
Ef3
694
/* Rangeオブジェクト */
wikitext
text/x-wiki
{{Pathnav|メインページ|工学|情報技術|プログラミング|frame=1}}
{{Wikipedia|Crystal (プログラミング言語)}}
本書は、[[w:Crystal (プログラミング言語)|Crystal]]のチュートリアルです。
'''Crystal'''は、Ary Borenszweig、Juan Wajnerman、Brian Cardiffと300人以上の貢献者によって設計・開発された汎用オブジェクト指向プログラミング言語です<ref>{{Cite web
|url=https://github.com/crystal-lang/crystal/graphs/contributors
|title=Contributors
|accessdate=2022-07-18
|website=github.com
}}</ref>。[[Ruby]] にヒントを得た構文を持ち、[[W:静的型付け|静的型付け]]な[[w:コンパイル型言語|コンパイル型言語]]ですが、変数やメソッドの引数の型は一般には不要です。型は高度なグローバル[[型推論]]アルゴリズムによって解決されます。<ref>{{Cite web
|url=http://crystal-lang.org/2013/09/23/type-inference-part-1.html
|title=Type inference part 1
|last=Brian J.
|first=Cardiff
|date=2013-09-09
|accessdate=2022-07-18
|website=crystal-lang.org
}}</ref>Crystalは[[W:Apache License|Apache License]]バージョン2.0のもと、[[W:FOSS|FOSS]]としてリリースされています。
__TOC__
== Hello, World! ==
お約束の[[W:Hello world|Hello_world]]ですが、ここではRubyとの比較も兼ねて、[[Ruby#Hello, World!]]をそのまま実行してみます。
''hello.cr''を用意します<ref>Crystalのソースファイルの拡張子は''.cr'' です</ref>。
;hello.cr:<syntaxhighlight lang=Crystal>
puts 'Hello, World!'
</syntaxhighlight>
;コマンドラインでの操作:<syntaxhighlight lang="console">
% cat hello.cr
puts 'Hello, World!'
% crystal hello.cr
In hello.cr:1:6
1 | puts 'Hello, World!'
^
Error: unterminated char literal, use double quotes for strings
% sed -i -e "s@'@Q@g" -e 's@Q@"@g' hello.cr
% cat hello.cr
puts "Hello, World!"
% crystal hello.cr
Hello, World!
</syntaxhighlight>
: Crystalでは、文字列の場合は二重引用符(")を使用するので、' を " に sed で置換えました。
:: 修正後の hello.cr も問題なく ruby で実行できます。
== プログラミング環境 ==
Crystalのプログラムを作り、コンパイル・実装するには、「オンライン実行環境を使う」・「エディト・コンパイル・実行環境を用意してそれを使う」の2通りの方法があります。
=== オンライン実行環境 ===
公式のオンライン実行環境、 https://play.crystal-lang.org/ があります。
まずは、これを使って本書に例示されているコードを実行してみることをお勧めします。
=== エディト・コンパイル・実行環境 ===
エディタについては本書では触れませんが、プログラミング時間の大半はエディタの操作に費やされるため、良いエディタを選択することが重要です。
Crystal の言語処理系は、 https://crystal-lang.org/install/ から入手します。
自分の、OSやGNU/Linuxであればディストリビューションに合わせてインストールしてください。
また、FreeBSDのように crystal と shards が別パッケージとなっていることもあるので、その場合は shards も追加インストールします。
多くの場合、インストールされた crystal はスタティック リンクされているので、ダイナミック リンク版の crystal を入手するには、スタティック リンク版の実行ファイルとソースコードを入手し、スタティック リンク版でソースから crystal をコンパイル・インストールする必要があります。また、interactive Crystalを有効にするためにも、コンパイル・インストールが必要です。コンパイル・インストールには、Chromebook(メモリー4GB, Celeron N4020, OS Version: octopus-release/R103-14816.131.0, Chromebrew version: `1.24.0`, llvm-14.0.6)で約30分かかりました。
=== crystal コマンド ===
crystal コマンドは Crystal のコンパイラであると同時に、ビルドツールなどを含んだツールチェインです(プログラミング言語のCrystalは、先頭を大文字、コマンドのcrystalは、先頭を小文字にして区別します)。
[TODO: コマンドラインツール crystal の解説。 crystal ファイル名 は crystal run ファイル名 の短縮形で、インタープリタ的な実行…ではなく、内部ビルドツールでコンパイル・実行を行う]
== Ruby との違い ==
Crystalは、Rubyに触発された構文を持つものの、Rubyとの互換性をゴールに定めては'''いません'''。
このため、細部を見ると仕様に差異があり、Rubyのソースコードをcrystalに掛けても前節の 'Hello World' の様にコンパイルに失敗することがあります。
また、コンパイルできても実行結果に違いが出ることがあります。
ここでは、Ruby との違いについて実際のコードと双方の結果を比較することで、差異についての理解を深めていきます。
=== 整数型の特性 ===
;大きな整数:<syntaxhighlight lang=Crystal>
p 2 ** 999
p (2 ** 999).class
</syntaxhighlight>
;rubyの実行結果:<syntaxhighlight lang="console">
5357543035931336604742125245300009052807024058527668037218751941851755255624680612465991894078479290637973364587765734125935726428461570217992288787349287401967283887412115492710537302531185570938977091076523237491790970633699383779582771973038531457285598238843271083830214915826312193418602834034688
Integer
</syntaxhighlight>
;crystalの実行結果:<syntaxhighlight lang="console">
Unhandled exception: Arithmetic overflow (OverflowError)
from /usr/local/share/crystal/share/crystal/src/int.cr:295:9 in '**'
from pow.cr:1:1 in '__crystal_main'
from /usr/local/share/crystal/share/crystal/src/crystal/main.cr:115:5 in 'main_user_code'
from /usr/local/share/crystal/share/crystal/src/crystal/main.cr:101:7 in 'main'
from /usr/local/share/crystal/share/crystal/src/crystal/main.cr:127:3 in 'main'
from /usr/local/lib64/libc.so.6 in '__libc_start_main'
from /usr/local/.cache/crystal/crystal-run-pow.tmp in '_start'
from ???
</syntaxhighlight>
: Ruby の整数は、桁あふれが起こると自動的に多倍長整数に型変換されるので、継ぎ目なしに大きな数を扱うアルゴルズムが使えます。
: Crystal の整数は、固定長です(大きさについては[[#リテラルと型|後述]])。なので大きな答えになる式を評価すると桁あふれが生じます。桁あふれが生じますが、C言語のように寡黙に処理を続けるのではなく、実行時に例外(OverflowError)が上がるので、例外を捕捉し然るべき処置を施すことが可能です。
==== BigInt ====
<code>big</code> を <code>require</code> すると <code>BigInt</code> が使えるようになります。
;BigInt:<syntaxhighlight lang=Crystal>
require "big"
p BigInt.new(2) ** 999
p (BigInt.new(2) ** 999).class
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="console">
5357543035931336604742125245300009052807024058527668037218751941851755255624680612465991894078479290637973364587765734125935726428461570217992288787349287401967283887412115492710537302531185570938977091076523237491790970633699383779582771973038531457285598238843271083830214915826312193418602834034688
BigInt
</syntaxhighlight>
: BigIntはプリミティブではなので、リテラル表現はありません。また、
::<syntaxhighlight lang=Crystal>
n : BigInt = 2
</syntaxhighlight>
::<syntaxhighlight lang=console>
Error: type must be BigInt, not Int32
</syntaxhighlight>
:: のように型アノテーションすることも出来ません。
=== リテラルと型 ===
;様々なリテラルと型:<syntaxhighlight lang=Crystal>
[nil, false, true, 42, 2.73, 'Q', "string", [1,2,3], {a:1, b:2}].each{|x|
p [x, x.class]
}
</syntaxhighlight>
;rubyの実行結果:<syntaxhighlight lang="console">
[nil, NilClass]
[false, FalseClass]
[true, TrueClass]
[42, Integer]
[2.73, Float]
["Q", String]
["string", String]
[[1, 2, 3], Array]
[{:a=>1, :b=>2}, Hash]
</syntaxhighlight>
;crystalの実行結果:<syntaxhighlight lang="console">
[nil, Nil]
[false, Bool]
[true, Bool]
[42, Int32]
[2.73, Float64]
['Q', Char]
["string", String]
[[1, 2, 3], Array(Int32)]
[{a: 1, b: 2}, NamedTuple(a: Int32, b: Int32)]
</syntaxhighlight>
: Crystal の整数は Int32、浮動小数点数は Float64 です。
;サイズを指定した数リテラル:<syntaxhighlight lang=Crystal>
[1_i64, 2_u32, 3_u64, 4_i32, 5_i16, 6_u8, 7_i128, 8_u128, 3.14_f32, 1.44_f64].each{|x|
p [x, x.class]
}
</syntaxhighlight>
;ruby:Rubyでは、サーフィックスの付いた数値リテラルは無効
;crystalの実行結果:<syntaxhighlight lang="console">
[1, Int64]
[2, UInt32]
[3, UInt64]
[4, Int32]
[5, Int16]
[6, UInt8]
[7, Int128]
[8, UInt128]
[3.14, Float32]
[1.44, Float64]
</syntaxhighlight>
: Crystal では、数値リテラルに _ で始まるサーフィックスを付け { i:符号付き整数, u:符号なし整数, f:浮動小数点数 } と { 8,16,32,64,128 } のビット幅の組合せです<ref>[https://crystal-lang.org/reference/1.5/syntax_and_semantics/literals/ Literals]</ref>。
=== for式がない ===
Crystal には、Ruby にはある for式がありません。
;Rubyのfor式の構文:<syntaxhighlight lang="ruby">
for 変数 in コレクション
文
end
</syntaxhighlight>
:コレクションは Range, Array, Hash など内部構造を持つオブジェクトです。
:for式は、最後に評価した値を返すので、for'''式'''です。
;for式のeachメソッドによる置換え:<syntaxhighlight lang="ruby">
for x in [ 2, 3, 5, 7, 11 ] do
p x
end
# ↓
[ 2, 3, 5, 7, 11 ].each do | x |
p x
end
</syntaxhighlight>
: の様にコレクションの each メソッドで置換え可能なので、Rubyからの移植でも小規模な書換えで済みます<ref>[https://github.com/crystal-lang/crystal/issues/830 "For" Loop support #830]</ref>(後述のマクロで実装できないかと思いましたが、いまのところ無理のようです)。
また loop 式もありませんが while true; … end で間に合います。Ruby では while 式の条件の次に do が置けますが、Crystal では置けません。
==== 自作のforメソッド ====
Rubyのforに似せるという縛りがなければ、(マクロを使うまでもなく)簡単に実装できます。
偶然ですが、[[Scala]]のforメソッドに似てしまいました(あれも、イテレーション メソッドに展開されるのである程度は必然)。Scalaと同じ様にジェネレターと組合わせて多次元に拡張することもできそうです。
;自作のforメソッド:<syntaxhighlight lang=crystal>
def for(collection)
collection.each do |elm|
yield(elm)
end
end
for [1,2,3,4] do |x|
p! x * x
end
for ({3,4,5,6}) do |x|
p! x + x
end
for (1...999) do |x|
p! x - 1
break if x > 5
end
for (9999.times) do |x|
p! x ** 3
break if x > 7
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
x * x # => 1
x * x # => 4
x * x # => 9
x * x # => 16
x + x # => 6
x + x # => 8
x + x # => 10
x + x # => 12
x - 1 # => 0
x - 1 # => 1
x - 1 # => 2
x - 1 # => 3
x - 1 # => 4
x - 1 # => 5
x ** 3 # => 0
x ** 3 # => 1
x ** 3 # => 8
x ** 3 # => 27
x ** 3 # => 64
x ** 3 # => 125
x ** 3 # => 216
x ** 3 # => 343
x ** 3 # => 512
</syntaxhighlight>
=== eval()がない ===
Crystal には eval() はありません。
Crystalはコンパイル型言語ですので、無理もないことです。
もし、Crystal で eval() を実装しようとすると、Common Lisp の様にインタープリターを丸ごとランタイムに含む必要があります。
これはリーズナブルな選択ではありません。
Crystal では、eval() が必要なケースに(限定的ですが)マクロを使うことで実現出来る可能性があります。
=== マクロ ===
Crystalには、Rubyにはないマクロがあります<ref>[https://crystal-lang.org/reference/1.5/syntax_and_semantics/macros/ Macros - Crystal]</ref>。Rubyは実行時にすべてのオブジェクトにアクセス出来て、メソッド生やし放題なのでマクロは必要ありませんが、Crystalはコンパイル時に型やメソッドを確定する必要があり、特にメソッドジェネレターとしてのマクロにニーズがあります。また、テンプレート言語的なマクロなので、環境変数による条件分岐や、コンテナを渡し繰返し処理する構文もあります(面白いことにマクロには for 文があり、反対にマクロの中では、eachメソッドは使えません)。マクロには <code><nowiki>{{</nowiki>attr.id}}</code> の様にASTへのアクセス手順が用意されており、半ば言語を拡張するようなアプローチを取ることも出来ます。
[TODO:ASTについての解説;コラム向き?]
;マクロを使ったattr_accessorのイミュレーション:<syntaxhighlight lang=crystal>
class Point
def initialize(@x : Int32, @y : Int32)
end
# macro定義
macro attr_accessor(*attrs)
{% for attr in attrs %}
def {{attr.id}}() @{{attr.id}} end
def {{attr.id}}=(var) @{{attr.id}} = var end
{% end %}
end
# macro呼出し
attr_accessor :x, :y
end
pt = Point.new(20, 30)
p [pt.x, pt.y]
t = pt.x
pt.x = pt.y
pt.y = t
p [pt.x, pt.y]
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
[20, 30]
[30, 20]
</syntaxhighlight>
: Ruby には、attr_accessor と言う「クラスのメンバーのアクセサーを自動生成するメソッド」がありますが、Crystalにはないようなので、マクロで実装しました。
:: attr_accessor :name からは
::<syntaxhighlight lang=ruby>
def name() @name end
def name=(val) @name = val end
</syntaxhighlight>相当のコードが生成されます。
[TODO:マクロの機能と構文の説明 *の付いた引数、 <nowiki>{{</nowiki>引数}}、{% … %} 構文]
==== マクロ p! ====
メソッド p は、与えられた「式」の inspaect() の返す値を puts しますが、マクロ p! は、それに先んじて(評価前の)「式」を表示します<ref>[https://crystal-lang.org/api/1.5.0/Crystal/Macros.html#p%21%28%2Aexpressions%29%3ANop-instance-method def p!(*expressions) : Nop]</ref>。
;p!の例:<syntaxhighlight lang=crystal>
x, y = true, false
p! x,y,x && y, x || y, x ^ y, !x, x != y, x == y
ary = [ 1, 2, 3 ]
p! ary
p! ary.map(&. << 1)
p! ary.map(&.to_f)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
x # => true
y # => false
x && y # => false
x || y # => true
x ^ y # => true
!x # => false
x != y # => true
x == y # => false
ary # => [1, 2, 3]
ary.map(&.<<(1)) # => [2, 4, 6]
ary.map(&.to_f) # => [1.0, 2.0, 3.0]
</syntaxhighlight>
===== 入れ子のp! =====
マクロ p! は入れ子に出来ます。また、一旦ASTに変換してから再度ソースコードに変換するので、等価な別の構文に変換されることがあります。
;入れ子のp!:<syntaxhighlight lang=crystal>
p! (
100.times{|i|
p! i
break i if i > 12
}
)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
(100.times do |i|
p!(i)
if i > 12
break i
end
end) # => i
# => 0
i # => 1
i # => 2
i # => 3
i # => 4
i # => 5
i # => 6
i # => 7
i # => 8
i # => 9
i # => 10
i # => 11
i # => 12
i # => 13
13
</syntaxhighlight>
=== クラス ===
==== シンプルなクラス ====
;シンプルなクラス:<syntaxhighlight lang=crystal highlight="2" line>
class Hello
def initialize(@name : String = "World")
end
def greeting
puts "Hello #{@name}!"
end
end
hello = Hello.new()
hello.greeting
universe = Hello.new("Universe")
universe.greeting
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Hello World!
Hello Universe!
</syntaxhighlight>
:;初期化メソッド
:: <syntaxhighlight lang=crystal line start=4>
def initialize(@name : String = "World")
end
</syntaxhighlight>
::Rubyであれば
:: <syntaxhighlight lang=ruby line start=4>
def initialize(name = "World")
@name = name
end
</syntaxhighlight>
::とするところですが、Crystalでは、型アノテーション <code> : String</code> を使い、引数の型を限定しました。
::また、(@ 付きの)アトリビュート名を仮引数にすると、そのままアトリビュート(a.k.a. インスタンス変数)に仮引数が代入されます。
::これは、C++のコンストラクターのメンバー初期化リストと同じアイディアですが、Crystalではインスタンス変数に @ が前置されるので、仮引数に @ が出現すればインスタンス変数の初期値だと自明で、聡明な選択です。
==== 都市間の大圏距離 ====
[[Ruby#ユーザー定義クラス]]の都市間の大圏距離を求めるメソッドを追加した例を、Crystalに移植しました。
;都市間の大圏距離:<syntaxhighlight lang=crystal highlight=”2,7,12” line>
class GeoCoord
getter :longitude, :latitude
def initialize(@longitude : Float64, @latitude : Float64)
end
def to_s(io)
ew, ns = "東経", "北緯"
long, lat = @longitude, @latitude
ew, long = "西経", -long if long < 0.0
ns, lat = "南緯", -lat if lat < 0.0
io << "(#{ew}: #{long}, #{ns}: #{lat})"
end # https://github.com/crystal-lang/crystal/issues/259
def distance(other)
i, r = Math::PI / 180, 6371.008
Math.acos(Math.sin(@latitude*i) * Math.sin(other.latitude * i) +
Math.cos(@latitude*i) * Math.cos(other.latitude * i) * Math.cos(@longitude * i - other.longitude * i)) * r
end
end
# メソッドの先頭を大文字に出来ないのでクラス名のメソッドは作ることが出来ない
# def GeoCoord(lng : Float64, lat : Float64)
# GeoCoord.new(lng, lat)
# end
Sites = {
"東京駅": GeoCoord.new(139.7673068, 35.6809591),
"シドニー・オペラハウス": GeoCoord.new(151.215278, -33.856778),
"グリニッジ天文台": GeoCoord.new(-0.0014, 51.4778),
}
Sites.each { |name, gc|
puts "#{name}: #{gc}"
}
puts ""
keys, len = Sites.keys, Sites.size
keys.each_with_index { |x, i|
y = keys[(i + 1) % len]
puts "#{x} ⇔ #{y}: #{Sites[x].distance(Sites[y])} [km]"
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
東京駅: (東経: 139.7673068, 北緯: 35.6809591)
シドニー・オペラハウス: (東経: 151.215278, 南緯: 33.856778)
グリニッジ天文台: (西経: 0.0014, 北緯: 51.4778)
東京駅 ⇔ シドニー・オペラハウス: 7823.269299386704 [km]
シドニー・オペラハウス ⇔ グリニッジ天文台: 16987.2708377249 [km]
グリニッジ天文台 ⇔ 東京駅: 9560.546566490015 [km]
</syntaxhighlight>
:Crystal には、<syntaxhighlight lang=ruby inline> attr_accessor </syntaxhighlight> はありませんが、標準ライブラリーのマクロに <syntaxhighlight lang=crystal inline> getter </syntaxhighlight>があるので
:: <syntaxhighlight lang=crystal line start=2>
getter :longitude, :latitude
</syntaxhighlight>
::としました。
::将来、<syntaxhighlight lang=ruby inline> attr_accessor </syntaxhighlight> が実装される可能性はありますが、姉妹品の<syntaxhighlight lang=crystal inline> setter </syntaxhighlight> との併用が下位互換性を考えると確実です。
: to_s は、Ruby ならば
:: <syntaxhighlight lang=ruby line start=7>
def to_s()
</syntaxhighlight>
:: <syntaxhighlight lang=ruby line start=12>
"(#{ew}: #{long}, #{ns}: #{lat})"
</syntaxhighlight>
:: ですが、Crystalでは追加の引数 <var>io</var> が必要で
:: <syntaxhighlight lang=ruby line start=7>
def to_s(io)
</syntaxhighlight>
:: <syntaxhighlight lang=ruby line start=12>
io << "(#{ew}: #{long}, #{ns}: #{lat})"
</syntaxhighlight>
: Ruby にはクラス名と同じ名前のメソッドで .new を呼出す文化があるのですが、Crystalはメソッドの先頭を大文字に出来ないので、これは見送りました。
==== 包含と継承 ====
[[JavaScript/クラス#包含と継承]]を、Rubyに移植した[[Ruby#包含と継承]]を、Crystalに移植しました。
;包含と継承の例:<syntaxhighlight lang=crystal line>
class Point
def initialize(@x = 0, @y = 0)
end
def inspect(io)
io << "x:#{@x}, y:#{@y}"
end
def move(dx = 0, dy = 0)
@x, @y = @x + dx, @y + dy
self
end
end
class Shape
def initialize(x = 0, y = 0)
@location = Point.new(x, y)
end
def inspect(io)
@location.inspect(io)
end
def move(x, y)
@location.move(x, y)
self
end
end
class Rectangle < Shape
def initialize(x = 0, y = 0, @width = 0, @height = 0)
super(x, y)
end
def inspect(io)
super(io)
io << ", width:#{@width}, height:#{@height}"
end
end
rct = Rectangle.new(12, 32, 100, 50)
p! rct,
rct.is_a?(Rectangle),
rct.is_a?(Shape),
rct.is_a?(Point),
rct.move(11, 21)
(END)</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
rct # => x:12, y:32, width:100, height:50
rct.is_a?(Rectangle) # => true
rct.is_a?(Shape) # => true
rct.is_a?(Point) # => false
rct.move(11, 21) # => x:23, y:53, width:100, height:50
</syntaxhighlight>
;crystal tool hierarchy:<syntaxhighlight lang=console>
% crystal tool hierarchy inclusion-and-inheritance.cr -e Shape
- class Object (4 bytes)
|
+- class Reference (4 bytes)
|
+- class Shape (16 bytes)
. @location : Point (8 bytes)
|
+- class Rectangle (24 bytes)
@width : Int32 (4 bytes)
@height : Int32 (4 bytes)
</syntaxhighlight>
: crystal の tool hierarchy サブコマンドで、クラスの継承関係がわかります。
===== superclass と subclasses =====
Crystal には、RubyのClassにあるメソッド superclass と subclasses がないので、マクロで実装しました。
;superclass と subclasses:<syntaxhighlight lang=crystal line>
class Class
def self.superclass
{{ @type.superclass }}
end
def self.subclasses : Array(self.class)
{{ @type.subclasses }}.map(&.as(self.class))
end
def self.all_subclasses : Array(self.class)
{% begin %}
[{{ @type.all_subclasses.join(",").id }}] of self.class
{% end %}
end
end
class A end
class AA < A end
class AAA < AA end
class AAB < AA end
class AB < A end
p! A,
A.subclasses,
A.all_subclasses,
AAA.superclass,
A.superclass
c = AAA
while !c.is_a? Nil
p! c.superclass
c = c.superclass
end</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
A # => A
A.subclasses # => [AA, AB]
A.all_subclasses # => [AA, AAA, AAB, AB]
AAA.superclass # => AA
A.superclass # => Reference
c.superclass # => AA
c.superclass # => A
c.superclass # => Reference
c.superclass # => Object
c.superclass # => nil
</syntaxhighlight>
==== 抽象クラス ====
[[Java/抽象クラス]]を、Crystalに移植しました。
;抽象クラスの宣言:<syntaxhighlight lang=Java>
abstract class クラス名
#
end
</syntaxhighlight>
: このクラス名は、 .new でインスタンス化出来ません。
:: Error: can't instantiate abstract class クラス名
: となります。
:インスタンス化することは出来ませんが、抽象クラスを別のクラスが継承する事は出来ます。
:また、抽象クラスを <code>super()</code> を使うことでメソッドを呼び出せるので、抽象メソッドではないメソッド(具象メソッド)を持つことも、インスタンス変数も持つことも出来ます。
:'''抽象クラスの例'''では、Shapeのinitializeメソッドが抽象クラスの具象メソッドとなっています。
;抽象メソッドの宣言:<syntaxhighlight lang=Java>
abstract def メソッド名
</syntaxhighlight>
: 派生先のクラスで、「メソッド名」を定義(def)し忘れると
:: Error: abstract `def クラス名#メソッド名()` must be implemented by クラス名
: となります
;抽象クラスの例:<syntaxhighlight lang=crystal line>
abstract class Shape
def initialize(@x = 0.0, @y = 0.0)
end
abstract def to_s(io)
abstract def area
end
class Square < Shape
def initialize(x, y, @wh = 0.0)
super(x, y)
end
def to_s(io)
io << "Square(#{@x}, #{@y}, #{@wh})"
end
def area
@wh * @wh
end
end
abstract class Shape
def initialize(@x = 0.0, @y = 0.0)
end
abstract def to_s(io)
abstract def area
end
class Square < Shape
def initialize(x, y, @wh = 0.0)
super(x, y)
end
def to_s(io)
io << "Square(#{@x}, #{@y}, #{@wh})"
end
def area
@wh * @wh
end
end
class Recrangle < Shape
def initialize(x, y, @w = 0.0, @h = 0.0)
super(x, y)
end
def to_s(io)
io << "Rectanle(#{@x}, #{@y}, #{@w}, #{@h})"
end
def area
@w * @h
end
end
class Circle < Shape
def initialize(x, y, @r = 0.0)
super(x, y)
end
def to_s(io)
io << "Circle(#{@x}, #{@y}, #{@r})"
end
def area
3.1425926536 * @r * @r
end
end
shapes = [
Square.new(5.0, 10.0, 15.0),
Recrangle.new(13.0, 23.0, 20.0, 10.0),
Circle.new(3.0, 2.0, 20.0),
] of Shape
shapes.each do |shape|
puts("#{shape}: #{shape.area}")
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
Square(5.0, 10.0, 15.0): 225.0
Rectanle(13.0, 23.0, 20.0, 10.0): 200.0
Circle(3.0, 2.0, 20.0): 1257.03706144
</syntaxhighlight>
;crystal tool hierarchy:<syntaxhighlight lang=console>
% crystal tool hierarchy abstract.cr -e Shape
- class Object (4 bytes)
|
+- class Reference (4 bytes)
|
+- class Shape (24 bytes)
. @x : Float64 (8 bytes)
. @y : Float64 (8 bytes)
|
+- class Circle (32 bytes)
| @r : Float64 (8 bytes)
|
+- class Recrangle (40 bytes)
| @w : Float64 (8 bytes)
| @h : Float64 (8 bytes)
|
+- class Square (32 bytes)
@wh : Float64 (8 bytes)
</syntaxhighlight>
: crystal の tool hierarchy サブコマンドで、クラスの継承関係がわかります。
: 「包含と継承の例」と比べると、ShapeとRectangleが同じ階層にあることがわかると思います。
[TODO:virtual class::いい例がない]
== キーワード ==
Crystalのキーワード( ''keywords'' ) は、以下の通り。
<code>abstract</code> <code>alias</code> <code>as</code> <code>asm</code> <code>begin</code> <code>break</code> <code>case</code> <code>class</code> <code>def</code> <code>do</code> <code>else</code> <code>elsif</code> <code>end</code> <code>ensure</code> <code>enum</code> <code>extend</code> <code>for</code> <code>fun</code> <code>if</code> <code>include</code> <code>instance_sizeof</code> <code>lib</code> <code>macro</code> <code>module</code> <code>next</code> <code>of</code> <code>out</code> <code>pointerof</code> <code>private</code> <code>protected</code> <code>rescue</code> <code>return</code> <code>require</code> <code>select</code> <code>sizeof</code> <code>struct</code> <code>super</code> <code>then</code> <code>type</code> <code>typeof</code> <code>uninitialized</code> <code>union</code> <code>unless</code> <code>until</code> <code>when</code> <code>while</code> <code>with</code> <code>yield</code>
<!--
<code>__DIR__</code> <code>__END_LINE__</code> <code>__FILE__</code> <code>__LINE__</code>
-->
== 演算子 ==
Crystalは、1つ、2つ、または3つのオペランドを持つ数多くの演算子をサポートしています<ref>[https://crystal-lang.org/reference/1.5/syntax_and_semantics/operators.html Operators]access-date:2022-07-22</ref>。
演算子式は、実際にはメソッド呼び出しとしてパースされます。例えば、<code>a + b</code> は <code>a.+(b)</code> と意味的に同じで、引数 b を持つ a のメソッド + を呼び出すことになります。
{| class="wikitable"
|+ 演算子の優先度
!種類
!演算子
|-
|インデックス アクセサー
|<code>[]</code>, <code>[]?</code>
|-
|単項
|<code>+</code>, <code>&+</code>, <code>-</code>, <code>&-</code>, <code>!</code>, <code>~</code>
|-
|指数
|<code>**</code>, <code>&**</code>
|-
|乗除
|<code>*</code>, <code>&*</code>, <code>/</code>, <code>//</code>, <code>%</code>
|-
|加減
|<code>+</code>, <code>&+</code>, <code>-</code>, <code>&-</code>
|-
|シフト
|<code><<</code>, <code>>></code>
|-
|ビット間 AND
|<code>&</code>
|-
|ビット間 OR/XOR
|<code><nowiki>|</nowiki></code>,<code>^</code>
|-
|等値
|<code>==</code>, <code>!=</code>, <code>=~</code>, <code>!~</code>, <code>===</code>
|-
|比較
|<code><</code>, <code><=</code>, <code>></code>, <code>>=</code>, <code><=></code>
|-
|論理 AND
|<code>&&</code>
|-
|論理 OR
|<code><nowiki>||</nowiki></code>
|-
|Range
|<code>..</code>, <code>...</code>
|-
|条件
|<code>?:</code>
|-
|代入
|<code>=</code>, <code>[]=</code>, <code>+=</code>, <code>&+=</code>, <code>-=</code>, <code>&-=</code>, <code>*=</code>, <code>&*=</code>, <code>/=</code>, <code>//=</code>, <code>%=</code>, <code><nowiki>|=</nowiki></code>, <code>&=</code>,<code>^=</code>,<code>**=</code>,<code><<=</code>,<code>>>=</code>, <code><nowiki>||=</nowiki></code>, <code>&&=</code>
|-
|スプラット
|<code>*</code>, <code>**</code>
|}
== 制御構造 ==
'''[[w:制御構造|制御構造]]'''(せいぎょこうぞう、''control flow'')とは、「順次」「分岐」「反復」という基本的な処理のことを言います。
{{コラム|Crystalの真理値|2=
制御構造は「条件式」が真であるか偽であるかによって分岐や反復の振る舞いが変わります。
では「条件式」が真・偽はどの様に決まるのでしょう?
Crystalでは <code>false</code> あるいは <code>nil</code> であると偽、それ以外が真です。
なので <code>0</code> も <code>[]</code>(空のArray) も <code>{}</code>(空のNamedTuple)も真です。
}}
=== 条件分岐 ===
Crystalの条件分岐には、[[#if|if]], [[#until|until]] と [[#case|case]]の3つの構文があります。
==== if ====
'''[[w:if|if]]'''は条件式によって実行・否を切り替える構造構文で、評価した式の値を返すので条件演算子でもあります。
;ifの例:<syntaxhighlight lang=crystal line>
a = 0.0 / 0.0
if a < 0
puts "minus"
elsif a > 0
puts "plus"
elsif a == 0
puts "zero"
else
puts a
end
p! (
if a < 0
"minus"
elsif a > 0
"plus"
elsif a == 0
"zero"
else
a
end
)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
NaN
(if a < 0
"minus"
else
if a > 0
"plus"
else
if a == 0
"zero"
else
a
end
end
end) # => NaN
</syntaxhighlight>
:; elsif節:ifは、オプショナルな elsif 節を設け、条件式が偽であった時に別の条件に合致した処理を実行させることが出来ます。
:; else節:ifは、オプショナルな else 節を設け、条件式が偽であった時に処理を実行させることが出来ます。
: ifは値を返すので、メソッドの実引数に使うことが出来ますし、代入演算の右辺にも使えます。
==== 後置のif ====
Crystalには、RubyやPerlのような後置のifがあります。
;後置のifの例:<syntaxhighlight lang=crystal>
n = 0
puts "nは0" if n == 0
puts "nは1" if n == 1
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
nは0
</syntaxhighlight>
==== unless====
'''unless'''(アンレス)は条件式によって実行・否を切り替える構造構文ですが、ifとは条件式に対する挙動が逆です。
;unless文の例:<syntaxhighlight lang=crystal line>
a = 0.0 / 0.0
unless a == 0
puts "Non-zero"
else
puts a
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Non-zero
</syntaxhighlight>
:; else節 : unless文は、オプショナルな else 節を設け、条件式が真であった時に処理を実行させることが出来ます。
::また、unless文は elsif 節は持てません。
==== 後置のunless ====
Crystalには、RubyやPerlのような後置のunlessがあります。
;後置のunlessの例:<syntaxhighlight lang=crystal>
n = 0
puts "nは0" unless n == 0
puts "nは1" unless n == 1
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
nは1ではない
</syntaxhighlight>
==== case ====
caseは、複数の条件式によって処理を降る分ける用途の為に用意されています。
;caseの例:<syntaxhighlight lang=crystal line>
n = 2
case n
when 1
puts "one"
when 2
puts "two"
when 3
puts "three"
else
puts "other"
end
p! (
case n
when 1
"one"
when 2
"two"
when 3
"three"
else
"other"
end
)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
two
(case n
when 1
"one"
when 2
"two"
when 3
"three"
else
"other"
end) # => "two"</syntaxhighlight>
:C言語系のswitch文に慣れた人はbreakがないことに気がつくと思います。Crystalのcaseはfall throughしませんし、fall throughさせる方法もありません。
===== when節が定数でなく式を受付けます =====
[[#if|if]]を使ったコードをcaseに書き換えてみましょう。
;case の式の省略:<syntaxhighlight lang=crystal line>
a = 0.0 / 0.0
case
when a < 0
puts "minus"
when a > 0
puts "plus"
when a == 0
puts "zero"
else
puts a
end
p! (
case true
when a < 0
"minus"
when a > 0
"plus"
when a == 0
"zero"
else
a
end
)
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
NaN
(case true
when a < 0
"minus"
when a > 0
"plus"
when a == 0
"zero"
else
a
end) # => NaN
</syntaxhighlight>
このコードは when 節の式の値とcaseの式を <code>===</code> で比較し、最初に一致した when に対応する式が実行される事を利用しています。
===== 型による分岐 =====
when 節が式ではなく型であった場合、caseの式を <code>is_a?</code> で評価し、最初に一致した when に対応する式が実行されます。
;型による分岐:<syntaxhighlight lang=crystal line>
p! 0.class,
0.is_a?(Object),
0.is_a?(Int32),
0.is_a?(Number),
0.is_a?(String)
case 0
when String
puts "String"
when Number
puts "Number"
when Int32
puts "Int32"
when Object
puts "Object"
else
puts "Unknown"
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
0.class # => Int32
0.is_a?(Object) # => true
0.is_a?(Int32) # => true
0.is_a?(Number) # => true
0.is_a?(String) # => false
Number
</syntaxhighlight>
暗黙のオブジェクト構文を使うと
:<syntaxhighlight lang=crystal line>
case 0
when .is_a?(String)
puts "String"
when .is_a?(Number)
puts "Number"
when .is_a(Int32)
puts "Int32"
when .is_a(Object)
puts "Object"
else
puts "Unknown"
end
</syntaxhighlight>
:と書くことが出来ます。
:: メソッドは、.is_a? に限定しないので、 .odd? .even? .include? など Bool を返すメソッドなら何でも使えます。
when に対応する式は、1つのことが珍しくないので、その場合は省略可能な then を補うと、1行で書けます。
:<syntaxhighlight lang=crystal line>
case 0
when String then puts "String"
when Number then puts "Number"
when Int32 then puts "Int32"
when Object then puts "Object"
else puts "Unknown"
end
</syntaxhighlight>
[TODO:タプルとダミー識別子 _ ]
===== 網羅性の検査 =====
when の代わりに in を使用すると、exhaustive case 式が作成されます。exhaustive case では、必要な in 条件を省略するとコンパイル時にエラーとなります。exhaustive case 式では、when 節と else 節を含むことはできません。
;Enumの網羅性チェック(網羅不完全):<syntaxhighlight lang=crystal line highlight=11>
enum Colours
Red
Green
Blue
end
colour : Colours = Colours::Red
q = case colour
in Colours::Red then "赤"
in .green? then "緑"
# in .blue? then "青"
end
p q
</syntaxhighlight>
;コンパイルエラー:<syntaxhighlight lang="text">
Showing last frame. Use --error-trace for full trace.
In enumcase.cr:8:5
8 | q = case colour
^
Error: case is not exhaustive for enum Colours.
Missing members:
- Blue
</syntaxhighlight>
: case - in 式の in が列挙型の要素を網羅していないと、コンパイル時にこの様にエラーになります。
:: Colours::Red と .red? は同義です(enum では、要素名を小文字にし最後に ? が付いたメソッドが生えてきます)。
;Enumの網羅性チェック(網羅完全):<syntaxhighlight lang=crystal line highlight=11>
enum Colours
Red
Green
Blue
end
colour : Colours = Colours::Red
q = case colour
in Colours::Red then "赤"
in .green? then "緑"
in .blue? then "青"
end
p q
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
"赤"
</syntaxhighlight>
[TODO:短絡評価 && || ]
=== 繰返し ===
Crystalには、他のプログラミング言語のような[[#繰返し構文|繰返し構文]]と、[[#イテレーターメソッド|イテレーターメソッド]]があります。
==== 繰返し構文 ====
Crystalの繰返し構文には、while と untilの2つがあります<ref>for も do-while も loop もありません。</ref>。
===== while =====
while(ホワイル)は条件が'''真'''である間、式を実行しつづけます。
;構文:<syntaxhighlight lang=crystal>
while 条件式
式1
式2
:
式n
end
</syntaxhighlight>
: Rubyと違い、条件式の後ろに <code>do</code> をつけることは出来ません。
;while文のコード例:<syntaxhighlight lang=crystal line>
i = 0
p! (
while i < 10
p! i
i += 1
break i if i > 5
end
)
</syntaxhighlight>
: 2行目の <code>i < 5</code>が真の間、次の2行を繰返します。
: 4行目の <code>i += 1</code> は <code>i = i + 1</code> の構文糖
;実行結果:<syntaxhighlight lang="text">
(while i < 10
p!(i)
i = i + 1
if i > 5
break i
end
end)# =>
i # => 0
i # => 1
i # => 2
i # => 3
i # => 4
i # => 5
6
</syntaxhighlight>
===== until =====
until(アンティル)は条件が'''偽'''である間、式を実行しつづけます。whileとは条件に対する挙動が逆です。
;構文:<syntaxhighlight lang=crystal>
until 条件式 [ do ]
文1
文2
:
文n
end
</syntaxhighlight>
: <code>do</code> は省略できます。
;untilのコード例:<syntaxhighlight lang=crystal line>
i = 0
until i == 3
puts i
i += 1
end
</syntaxhighlight>
: 2行目の <code>i == 3</code>が偽の間、次の2行を繰返します。
;実行結果:<syntaxhighlight lang="text">
0
1
2
</syntaxhighlight>
===== for =====
Crystalにはforがありませんが、コレクションのイテレーションメソッドを使うことで繰返しを簡素に実現出来ます。
==== Rangeオブジェクト ====
Rangeオブジェクトは、整数の区間を表し範囲演算子 <code>開始 .. 終了</code> や <code>開始 ... 終了</code> で生成します。
範囲演算子の終了は省略でき、その場合は数学の半開区間(半閉区間)となり、例えば、<code>1 ..</code>は自然数となります(ただし、日本的な0を自然数に含まない場合)。
;コード:<syntaxhighlight lang=crystal>
rng = 1..3
puts rng.class
rng.each do | n |
puts "#{n}番";
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Range(Int32, Int32)
1番
2番
3番
</syntaxhighlight>
==== Arrayオブジェクト ====
Arrayオブジェクトは、任意の Crystal オブジェクトを要素として持つことができます。
配列式<code>[ 要素1, 要素2, … 要素n ]</code> で生成します。
;コード:<syntaxhighlight lang=crystal>
animals = [ "ネコ", "金魚", "ハムスター" ]
puts animals.class
animals.each do | animal |
puts "動物 #{animal}"
end
p! ([ "イヌ", *animals , "イグアナ" ])
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Array(String)
動物 ネコ
動物 金魚
動物 ハムスター
(["イヌ", *animals, "イグアナ"]) # => ["イヌ", "ネコ", "金魚", "ハムスター", "イグアナ"]
</syntaxhighlight>
==== Tupleオブジェクト ====
Tupleオブジェクトは、任意の Crystal オブジェクトを要素として持つことができます。
配列式<code>{ 要素1, 要素2, … 要素n }</code> で生成します。
;コード:<syntaxhighlight lang=crystal>
animals = { "ネコ", "金魚", "ハムスター" }
puts animals.class
animals.each do | animal |
puts "動物 #{animal}"
end
p! ({ "イヌ", *animals , "イグアナ" })
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Tuple(String, String, String)
動物 ネコ
動物 金魚
動物 ハムスター
({"イヌ", *animals, "イグアナ"}) # => {"イヌ", "ネコ", "金魚", "ハムスター", "イグアナ"}
</syntaxhighlight>
==== Setオブジェクト ====
Setオブジェクトは集合です。任意の Crystal オブジェクトを要素として持つことができますが、1つの値は重複して持てません。
Set.newに配列式<code>{ 要素1, 要素2, … 要素n }</code> などを渡し初期化します。
;コード:<syntaxhighlight lang=crystal>
animals = Set.new({ "ネコ", "金魚", "ハムスター" })
puts animals.class
animals.each do | animal |
puts "動物 #{animal}"
end
p! animals,
animals.includes?("ネコ"),
animals.includes?("イヌ")
animals.delete "ネコ"
animals.add "イヌ"
p! animals,
animals.includes?("ネコ"),
animals.includes?("イヌ")
animals = Set.new({ "ネコ", "イヌ", "金魚", "ハムスター", "カナリヤ", "クサガメ" })
mammals = Set.new({ "ネコ", "イヌ", "ハムスター" })
p! animals , mammals,
animals & mammals,
animals | mammals,
animals + mammals,
animals ^ mammals,
animals - mammals,
mammals - animals
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Set(String)
動物 ネコ
動物 金魚
動物 ハムスター
animals # => Set{"ネコ", "金魚", "ハムスター"}
animals.includes?("ネコ") # => true
animals.includes?("イヌ") # => false
animals # => Set{"金魚", "ハムスター", "イヌ"}
animals.includes?("ネコ") # => false
animals.includes?("イヌ") # => true
animals # => Set{"ネコ", "イヌ", "金魚", "ハムスター", "カナリヤ", "クサガメ"}
mammals # => Set{"ネコ", "イヌ", "ハムスター"}
animals & mammals # => Set{"ネコ", "イヌ", "ハムスター"}
animals | mammals # => Set{"ネコ", "イヌ", "金魚", "ハムスター", "カナリヤ", "クサガメ"}
animals + mammals # => Set{"ネコ", "イヌ", "金魚", "ハムスター", "カナリヤ", "クサガメ"}
animals ^ mammals # => Set{"金魚", "カナリヤ", "クサガメ"}
animals - mammals # => Set{"金魚", "カナリヤ", "クサガメ"}
mammals - animals # => Set{}
</syntaxhighlight>
==== NamedTupleオブジェクト ====
NamedTupleオブジェクトは、任意の Crystal オブジェクトをキーに、任意の Crystal オブジェクトを値に持つことができる連想配列です。
NamedTuple式<code>{キー1 => 値1, キー2 => 値2, キーn => 値n}</code> で生成します。
また、キーが Symbol の場合
NamedTuple式<code>{キー1: 値1, キー2: 値2, キーn: 値n}</code> で生成することが出来ます。
;コード:<syntaxhighlight lang=crystal>
animals = {cat: "ネコ", gold_fish: "金魚", hamster: "ハムスター"}
puts animals.class
animals.each do | en, animal |
puts "動物 #{en}: #{animal}"
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
NamedTuple(cat: String, gold_fish: String, hamster: String)
動物 cat: ネコ
動物 gold_fish: 金魚
動物 hamster: ハムスター
</syntaxhighlight>
このように、Crystalではforがなくてもコレクションのメソッドで同様の処理を実現できます。
==== loop ====
loop ありません。
while true で代用します。
;loopの代用コード例:<syntaxhighlight lang=crystal line>
i = 1
while true
puts "0b%b" % i
i <<= 1
break if i > 2**8
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
0b1
0b10
0b100
0b1000
0b10000
0b100000
0b1000000
0b10000000
0b100000000
</syntaxhighlight>
:5行目の、<code>break if i > 2**8</code>でループを脱出するようにしています。この様に break や return あるいは例外が上がらないとループは永久に終わりません。
:このコードは、Crystalにはない do-while文を模倣する例にもなっています。
==== イテレーターメソッド ====
===== Integer#times =====
Integer#timesは与えられたブロックをオブジェクトの示す整数値回くりかえします。
:コード<syntaxhighlight lang=crystal>
3.times{ puts "Hello, world!" }
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Hello, world!
Hello, world!
Hello, world!
</syntaxhighlight>
;ループ変数を使た例:<syntaxhighlight lang=crystal>
3.times do |i|
puts "#{i}の倍は#{2 * i}"
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
0の倍は0
1の倍は2
2の倍は4
</syntaxhighlight>
;ブロックを伴わないtimesメソッド:<syntaxhighlight lang=crystal>
iter = 3.times
puts iter.class
p! iter.next
p! iter.next
p! iter.next
p! iter.next
p! iter.next
p! iter.next
# puts iter.next # `next': StopIteration: iteration reached an end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text">
Int::TimesIterator(Int32)
iter.next # => 0
iter.next # => 1
iter.next # => 2
iter.next # => #<Iterator::Stop:0x7fb5bedd7fe0>
iter.next # => #<Iterator::Stop:0x7fb5bedd7fe0>
iter.next # => #<Iterator::Stop:0x7fb5bedd7fe0>
</syntaxhighlight>
: Integer#times にブロックを渡さないと、Int::TimesIterator([T])オブジェクトが返ります。
: Int::TimesIterator([T])オブジェクトは外部イテレーターと呼ばれnextメソッドで反復を行えます。
== オブジェクト ==
Crystal では、全てがオブジェクトです。
=== オブジェクトのリテラルとクラス ===
;オブジェクトのリテラルとクラス:<syntaxhighlight lang=crystal>
[nil, false, true, 1, 3.14, "abc", :abc, 1..10, 1...10, 1..,
[1, 2_u8, 3_i128],
[1, 2, 3], [1, "abc"],
{1, 2, 3}, {1, "abc"},
{"a" => 1, "b" => 2},
{a: 1, b: 2},
Set.new([:a, :bc, :def]),
->(x : Int32) { 2 * x },
100.times,
(1..).each,
[1, 2, 3].each,
{1, 2, 3}.each,
{"a" => 1, "b" => 2}.each,
# {a:1, b:2}.each, # Error: 'NamedTuple(a: Int32, b: Int32)#each' is expected to be invoked with a block, but no block was given
].each do |obj|
p [obj, obj.class]
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text" style="overflow: scroll;height:12em">
[nil, Nil]
[false, Bool]
[true, Bool]
[1, Int32]
[3.14, Float64]
["abc", String]
[:abc, Symbol]
[1..10, Range(Int32, Int32)]
[1...10, Range(Int32, Int32)]
[1.., Range(Int32, Nil)]
[[1, 2, 3], Array(Int128 | Int32 | UInt8)]
[[1, 2, 3], Array(Int32)]
[[1, "abc"], Array(Int32 | String)]
[{1, 2, 3}, Tuple(Int32, Int32, Int32)]
[{1, "abc"}, Tuple(Int32, String)]
[{"a" => 1, "b" => 2}, Hash(String, Int32)]
[{a: 1, b: 2}, NamedTuple(a: Int32, b: Int32)]
[Set{:a, :bc, :def}, Set(Symbol)]
[#<Proc(Int32, Int32):0x5a6c0ffabcf0>, Proc(Int32, Int32)]
[#<Int::TimesIterator(Int32):0x7e2b4be59e80 @n=100, @index=0>, Int::TimesIterator(Int32)]
[#<Range::ItemIterator(Int32, Nil):0x7e2b4be5dfc0 @range=1.., @current=1, @reached_end=false>, Range::ItemIterator(Int32, Nil)]
[#<Indexable::ItemIterator(Array(Int32), Int32):0x7e2b4be58da0 @array=[1, 2, 3], @index=0>, Indexable::ItemIterator(Array(Int32), Int32)]
[#<Indexable::ItemIterator(Tuple(Int32, Int32, Int32), Int32):0x7e2b4be5dfa0 @array={1, 2, 3}, @index=0>, Indexable::ItemIterator(Tuple(Int32, Int32, Int32), Int32)]
[#<Hash::EntryIterator(String, Int32):0x7e2b4be58d80 @hash={"a" => 1, "b" => 2}, @index=0>, Hash::EntryIterator(String, Int32)]
</syntaxhighlight>
=== Rubyのオブジェクトのリテラルとクラス ===
;Rubyのオブジェクトのリテラルとクラス:<syntaxhighlight lang=ruby>
require 'set'
[nil, false, true, 1, 3.14, "abc", :abc, 1..10, 1...10, 1..,
# [1, 2_u8, 3_i128],
[1, 2, 3], [1, "abc"],
# {1, 2, 3}, {1, "abc"},
{"a" => 1, "b" => 2},
{a: 1, b: 2},
Set.new([:a, :bc, :def]),
->(x) { 2 * x },
100.times,
(1..).each,
[1, 2, 3].each,
# {1, 2, 3}.each,
{"a" => 1, "b" => 2}.each,
# {a:1, b:2}.each, # Error: 'NamedTuple(a: Int32, b: Int32)#each' is expected to be invoked with a block, but no block was given
].each do |obj|
p [obj, obj.class]
end
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text" style="overflow: scroll;height:12em">
[nil, NilClass]
[false, FalseClass]
[true, TrueClass]
[1, Integer]
[3.14, Float]
["abc", String]
[:abc, Symbol]
[1..10, Range]
[1...10, Range]
[1.., Range]
[[1, 2, 3], Array]
[[1, "abc"], Array]
[{"a"=>1, "b"=>2}, Hash]
[{:a=>1, :b=>2}, Hash]
[#<Set: {:a, :bc, :def}>, Set]
[#<Proc:0x000014af26147eb0 Main.rb:10 (lambda)>, Proc]
[#<Enumerator: 100:times>, Enumerator]
[#<Enumerator: 1..:each>, Enumerator]
[#<Enumerator: [1, 2, 3]:each>, Enumerator]
[#<Enumerator: {"a"=>1, "b"=>2}:each>, Enumerator]
</syntaxhighlight>
== メソッド ==
オブジェクトの値や機能を呼び出すためには、メソッドを使います(多くの演算子もメソッドです)。
=== クラスのメソッド一覧 ===
Crystal には、Objectクラスにmethodsメソッドがないので、マクロで実装しました。
;RubyのObject#methods:<syntaxhighlight lang=crystal>
p Object.methods.sort,
Integer.methods.sort,
Float.methods.sort,
Array.methods.sort,
Range.methods.sort
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text" style="overflow: scroll;height:12em">
[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__, :__send__, :alias_method, :allocate, :ancestors, :attr, :attr_accessor, :attr_reader, :attr_writer, :autoload, :autoload?, :class, :class_eval, :class_exec, :class_variable_defined?, :class_variable_get, :class_variable_set, :class_variables, :clone, :const_defined?, :const_get, :const_missing, :const_set, :const_source_location, :constants, :define_method, :define_singleton_method, :deprecate_constant, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, :include, :include?, :included_modules, :inspect, :instance_eval, :instance_exec, :instance_method, :instance_methods, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :itself, :kind_of?, :method, :method_defined?, :methods, :module_eval, :module_exec, :name, :new, :nil?, :object_id, :prepend, :private_class_method, :private_constant, :private_instance_methods, :private_method_defined?, :private_methods, :protected_instance_methods, :protected_method_defined?, :protected_methods, :public_class_method, :public_constant, :public_instance_method, :public_instance_methods, :public_method, :public_method_defined?, :public_methods, :public_send, :remove_class_variable, :remove_instance_variable, :remove_method, :respond_to?, :send, :singleton_class, :singleton_class?, :singleton_method, :singleton_methods, :subclasses, :superclass, :taint, :tainted?, :tap, :then, :to_enum, :to_s, :trust, :undef_method, :untaint, :untrust, :untrusted?, :yield_self]
[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__, :__send__, :alias_method, :allocate, :ancestors, :attr, :attr_accessor, :attr_reader, :attr_writer, :autoload, :autoload?, :class, :class_eval, :class_exec, :class_variable_defined?, :class_variable_get, :class_variable_set, :class_variables, :clone, :const_defined?, :const_get, :const_missing, :const_set, :const_source_location, :constants, :define_method, :define_singleton_method, :deprecate_constant, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, :include, :include?, :included_modules, :inspect, :instance_eval, :instance_exec, :instance_method, :instance_methods, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :itself, :kind_of?, :method, :method_defined?, :methods, :module_eval, :module_exec, :name, :nil?, :object_id, :prepend, :private_class_method, :private_constant, :private_instance_methods, :private_method_defined?, :private_methods, :protected_instance_methods, :protected_method_defined?, :protected_methods, :public_class_method, :public_constant, :public_instance_method, :public_instance_methods, :public_method, :public_method_defined?, :public_methods, :public_send, :remove_class_variable, :remove_instance_variable, :remove_method, :respond_to?, :send, :singleton_class, :singleton_class?, :singleton_method, :singleton_methods, :sqrt, :subclasses, :superclass, :taint, :tainted?, :tap, :then, :to_enum, :to_s, :trust, :try_convert, :undef_method, :untaint, :untrust, :untrusted?, :yield_self]
[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__, :__send__, :alias_method, :allocate, :ancestors, :attr, :attr_accessor, :attr_reader, :attr_writer, :autoload, :autoload?, :class, :class_eval, :class_exec, :class_variable_defined?, :class_variable_get, :class_variable_set, :class_variables, :clone, :const_defined?, :const_get, :const_missing, :const_set, :const_source_location, :constants, :define_method, :define_singleton_method, :deprecate_constant, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, :include, :include?, :included_modules, :inspect, :instance_eval, :instance_exec, :instance_method, :instance_methods, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :itself, :kind_of?, :method, :method_defined?, :methods, :module_eval, :module_exec, :name, :nil?, :object_id, :prepend, :private_class_method, :private_constant, :private_instance_methods, :private_method_defined?, :private_methods, :protected_instance_methods, :protected_method_defined?, :protected_methods, :public_class_method, :public_constant, :public_instance_method, :public_instance_methods, :public_method, :public_method_defined?, :public_methods, :public_send, :remove_class_variable, :remove_instance_variable, :remove_method, :respond_to?, :send, :singleton_class, :singleton_class?, :singleton_method, :singleton_methods, :subclasses, :superclass, :taint, :tainted?, :tap, :then, :to_enum, :to_s, :trust, :undef_method, :untaint, :untrust, :untrusted?, :yield_self]
[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :[], :__id__, :__send__, :alias_method, :allocate, :ancestors, :attr, :attr_accessor, :attr_reader, :attr_writer, :autoload, :autoload?, :class, :class_eval, :class_exec, :class_variable_defined?, :class_variable_get, :class_variable_set, :class_variables, :clone, :const_defined?, :const_get, :const_missing, :const_set, :const_source_location, :constants, :define_method, :define_singleton_method, :deprecate_constant, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, :include, :include?, :included_modules, :inspect, :instance_eval, :instance_exec, :instance_method, :instance_methods, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :itself, :kind_of?, :method, :method_defined?, :methods, :module_eval, :module_exec, :name, :new, :nil?, :object_id, :prepend, :private_class_method, :private_constant, :private_instance_methods, :private_method_defined?, :private_methods, :protected_instance_methods, :protected_method_defined?, :protected_methods, :public_class_method, :public_constant, :public_instance_method, :public_instance_methods, :public_method, :public_method_defined?, :public_methods, :public_send, :remove_class_variable, :remove_instance_variable, :remove_method, :respond_to?, :send, :singleton_class, :singleton_class?, :singleton_method, :singleton_methods, :subclasses, :superclass, :taint, :tainted?, :tap, :then, :to_enum, :to_s, :trust, :try_convert, :undef_method, :untaint, :untrust, :untrusted?, :yield_self]
[:!, :!=, :!~, :<, :<=, :<=>, :==, :===, :=~, :>, :>=, :__id__, :__send__, :alias_method, :allocate, :ancestors, :attr, :attr_accessor, :attr_reader, :attr_writer, :autoload, :autoload?, :class, :class_eval, :class_exec, :class_variable_defined?, :class_variable_get, :class_variable_set, :class_variables, :clone, :const_defined?, :const_get, :const_missing, :const_set, :const_source_location, :constants, :define_method, :define_singleton_method, :deprecate_constant, :display, :dup, :enum_for, :eql?, :equal?, :extend, :freeze, :frozen?, :hash, :include, :include?, :included_modules, :inspect, :instance_eval, :instance_exec, :instance_method, :instance_methods, :instance_of?, :instance_variable_defined?, :instance_variable_get, :instance_variable_set, :instance_variables, :is_a?, :itself, :kind_of?, :method, :method_defined?, :methods, :module_eval, :module_exec, :name, :new, :nil?, :object_id, :prepend, :private_class_method, :private_constant, :private_instance_methods, :private_method_defined?, :private_methods, :protected_instance_methods, :protected_method_defined?, :protected_methods, :public_class_method, :public_constant, :public_instance_method, :public_instance_methods, :public_method, :public_method_defined?, :public_methods, :public_send, :remove_class_variable, :remove_instance_variable, :remove_method, :respond_to?, :send, :singleton_class, :singleton_class?, :singleton_method, :singleton_methods, :subclasses, :superclass, :taint, :tainted?, :tap, :then, :to_enum, :to_s, :trust, :undef_method, :untaint, :untrust, :untrusted?, :yield_self]
</syntaxhighlight>
;Crystalに実装したmethodsマクロ:<syntaxhighlight lang=crystal>
class Object
macro methods
{{ @type.methods.map(&.name.stringify).sort.uniq }}
end
end
p! Object.methods,
Reference.methods,
Array.methods,
Box.methods,
Channel.methods,
Deque.methods,
Dir.methods,
Exception.methods,
ArgumentError.methods,
DivisionByZeroError.methods,
IndexError.methods,
InvalidByteSequenceError.methods,
Fiber.methods,
Hash.methods,
IO.methods,
File.methods,
Mutex.methods,
PrettyPrint.methods,
Process.methods,
Regex.methods,
String.methods,
Thread.methods,
Bool.methods,
Int32.methods,
Float64.methods,
Proc.methods
</syntaxhighlight>
;実行結果:<syntaxhighlight lang="text" style="overflow: scroll;height:12em">
Object.methods # => ["!=", "!~", "==", "===", "=~", "class", "crystal_type_id", "dup", "hash", "in?", "inspect", "itself", "not_nil!", "pretty_inspect", "pretty_print", "tap", "to_s", "try", "unsafe_as"]
Reference.methods # => ["==", "dup", "exec_recursive", "exec_recursive_clone", "hash", "inspect", "object_id", "pretty_print", "same?", "to_s"]
Array.methods # => ["&", "*", "+", "-", "<<", "<=>", "==", "[]", "[]=", "[]?", "calculate_new_capacity", "check_needs_resize", "check_needs_resize_for_unshift", "clear", "clone", "compact", "compact!", "concat", "delete", "delete_at", "dup", "each_repeated_permutation", "fill", "first", "flatten", "increase_capacity", "increase_capacity_for_unshift", "index", "initialize", "insert", "inspect", "internal_delete", "last", "map", "map_with_index", "needs_resize?", "pop", "pop?", "pretty_print", "product", "push", "reject!", "remaining_capacity", "repeated_permutations", "replace", "reset_buffer_to_root_buffer", "resize_if_cant_insert", "resize_to_capacity", "resize_to_capacity_for_unshift", "reverse", "root_buffer", "rotate", "rotate!", "select!", "shift", "shift?", "shift_buffer_by", "shift_when_not_empty", "shuffle", "size", "size=", "skip", "sort", "sort!", "sort_by", "sort_by!", "to_a", "to_lookup_hash", "to_s", "to_unsafe", "to_unsafe_slice", "transpose", "truncate", "uniq", "uniq!", "unsafe_fetch", "unsafe_put", "unshift", "unstable_sort", "unstable_sort!", "unstable_sort_by", "unstable_sort_by!", "|"]
Box.methods # => ["initialize", "object"]
Channel.methods # => ["close", "closed?", "dequeue_receiver", "dequeue_sender", "initialize", "inspect", "pretty_print", "receive", "receive?", "receive_impl", "receive_internal", "receive_select_action", "receive_select_action?", "send", "send_internal", "send_select_action"]
Deque.methods # => ["+", "<<", "==", "buffer", "clear", "clone", "concat", "delete", "delete_at", "dup", "each", "halfs", "increase_capacity", "initialize", "insert", "inspect", "internal_delete", "pop", "pop?", "pretty_print", "push", "reject!", "rotate!", "select!", "shift", "shift?", "size", "size=", "to_s", "unsafe_fetch", "unsafe_put", "unshift"]
Dir.methods # => ["children", "close", "each", "each_child", "entries", "initialize", "inspect", "path", "pretty_print", "read", "rewind", "to_s"]
Exception.methods # => ["backtrace", "backtrace?", "callstack", "callstack=", "cause", "initialize", "inspect", "inspect_with_backtrace", "message", "to_s"]
ArgumentError.methods # => ["initialize"]
DivisionByZeroError.methods # => ["initialize"]
IndexError.methods # => ["initialize"]
InvalidByteSequenceError.methods # => ["initialize"]
Fiber.methods # => ["cancel_timeout", "dead?", "enqueue", "initialize", "inspect", "makecontext", "name", "name=", "next", "next=", "previous", "previous=", "push_gc_roots", "resumable?", "resume", "resume_event", "run", "running?", "stack_bottom", "stack_bottom=", "timeout", "timeout_event", "timeout_select_action", "timeout_select_action=", "to_s"]
Hash.methods # => ["==", "[]", "[]=", "[]?", "add_entry_and_increment_size", "clear", "clear_entries", "clear_impl", "clear_indices", "clone", "compact", "compact!", "compare_by_identity", "compare_by_identity?", "compute_indices_bytesize", "delete", "delete_entry", "delete_entry_and_update_counts", "delete_impl", "delete_linear_scan", "dig", "dig?", "do_compaction", "double_indices_size", "dup", "each", "each_entry_with_index", "each_key", "each_value", "empty?", "entries", "entries_capacity", "entries_full?", "entries_size", "entry_matches?", "fetch", "find_entry", "find_entry_with_index", "find_entry_with_index_linear_scan", "first_entry?", "first_key", "first_key?", "first_value", "first_value?", "fit_in_indices", "get_entry", "get_index", "has_key?", "has_value?", "hash", "indices_malloc_size", "indices_size", "initialize", "initialize_clone", "initialize_clone_entries", "initialize_compare_by_identity", "initialize_copy_non_entries_vars", "initialize_default_block", "initialize_dup", "initialize_dup_entries", "inspect", "invert", "key_for", "key_for?", "key_hash", "keys", "last_entry?", "last_key", "last_key?", "last_value", "last_value?", "malloc_entries", "malloc_indices", "merge", "merge!", "merge_into!", "next_index", "pretty_print", "proper_subset_of?", "proper_superset_of?", "put", "realloc_entries", "realloc_indices", "rehash", "reject", "reject!", "resize", "select", "select!", "set_entry", "set_index", "shift", "shift?", "size", "subset_of?", "superset_of?", "to_a", "to_a_impl", "to_h", "to_s", "transform_keys", "transform_values", "transform_values!", "update", "update_linear_scan", "upsert", "values", "values_at"]
IO.methods # => ["<<", "check_open", "close", "closed?", "decoder", "each_byte", "each_char", "each_line", "encoder", "encoding", "flush", "getb_to_end", "gets", "gets_peek", "gets_slow", "gets_to_end", "has_non_utf8_encoding?", "peek", "peek_or_read_utf8", "peek_or_read_utf8_masked", "pos", "pos=", "print", "printf", "puts", "read", "read_at", "read_byte", "read_bytes", "read_char", "read_char_with_bytesize", "read_fully", "read_fully?", "read_line", "read_string", "read_utf8", "read_utf8_byte", "rewind", "seek", "set_encoding", "skip", "skip_to_end", "tell", "tty?", "utf8_encoding?", "write", "write_byte", "write_bytes", "write_string", "write_utf8"]
File.methods # => ["delete", "initialize", "inspect", "path", "read_at", "size", "truncate"]
Mutex.methods # => ["initialize", "lock", "lock_slow", "synchronize", "try_lock", "unlock"]
PrettyPrint.methods # => ["break_outmost_groups", "breakable", "comma", "current_group", "fill_breakable", "flush", "group", "group_queue", "group_sub", "indent", "initialize", "list", "nest", "newline", "surround", "text"]
Process.methods # => ["channel", "close", "close_io", "copy_io", "ensure_channel", "error", "error?", "exists?", "finalize", "initialize", "input", "input?", "output", "output?", "pid", "signal", "stdio_to_fd", "terminate", "terminated?", "wait"]
Regex.methods # => ["+", "==", "===", "=~", "capture_count", "clone", "dup", "finalize", "hash", "initialize", "inspect", "internal_matches?", "match", "match_at_byte_index", "matches?", "matches_at_byte_index?", "name_table", "options", "source", "to_s"]
String.methods # => ["%", "*", "+", "<=>", "==", "=~", "[]", "[]?", "ascii_only?", "blank?", "byte_at", "byte_at?", "byte_delete_at", "byte_index", "byte_index_to_char_index", "byte_slice", "byte_slice?", "bytes", "bytesize", "calc_excess_left", "calc_excess_right", "camelcase", "capitalize", "center", "char_at", "char_bytesize_at", "char_index_to_byte_index", "chars", "check_no_null_byte", "chomp", "clone", "codepoint_at", "codepoints", "compare", "count", "delete", "delete_at", "downcase", "dump", "dump_char", "dump_hex", "dump_or_inspect", "dump_or_inspect_char", "dump_or_inspect_unquoted", "dump_unquoted", "dup", "each_byte", "each_byte_index_and_char_index", "each_char", "each_char_with_index", "each_codepoint", "each_grapheme", "each_grapheme_boundary", "each_line", "empty?", "encode", "ends_with?", "find_start_and_end", "grapheme_size", "graphemes", "gsub", "gsub_append", "gsub_ascii_char", "has_back_references?", "hash", "hexbytes", "hexbytes?", "includes?", "index", "insert", "insert_impl", "inspect", "inspect_char", "inspect_unquoted", "just", "lchop", "lchop?", "lines", "ljust", "lstrip", "match", "matches?", "partition", "presence", "pretty_print", "rchop", "rchop?", "remove_excess", "remove_excess_left", "remove_excess_right", "reverse", "rindex", "rjust", "rpartition", "rstrip", "scan", "scan_backreferences", "scrub", "single_byte_optimizable?", "size", "size_known?", "split", "split_by_empty_separator", "split_single_byte", "squeeze", "starts_with?", "strip", "sub", "sub_append", "sub_index", "sub_range", "succ", "titleize", "to_f", "to_f32", "to_f32?", "to_f64", "to_f64?", "to_f?", "to_f_impl", "to_i", "to_i128", "to_i128?", "to_i16", "to_i16?", "to_i32", "to_i32?", "to_i64", "to_i64?", "to_i8", "to_i8?", "to_i?", "to_s", "to_slice", "to_u128", "to_u128?", "to_u16", "to_u16?", "to_u32", "to_u32?", "to_u64", "to_u64?", "to_u8", "to_u8?", "to_unsafe", "to_unsigned_info", "to_utf16", "tr", "underscore", "unicode_delete_at", "unsafe_byte_at", "unsafe_byte_slice", "unsafe_byte_slice_string", "upcase", "valid_encoding?"]
Thread.methods # => ["detach", "event_base", "gc_thread_handler", "gc_thread_handler=", "initialize", "join", "main_fiber", "next", "next=", "previous", "previous=", "scheduler", "stack_address", "start", "to_unsafe"]
Bool.methods # => ["!=", "&", "==", "^", "clone", "hash", "to_s", "to_unsafe", "|"]
Int32.methods # => ["!=", "&", "&*", "&+", "&-", "*", "+", "-", "/", "<", "<=", "==", ">", ">=", "^", "clone", "leading_zeros_count", "popcount", "to_f", "to_f!", "to_f32", "to_f32!", "to_f64", "to_f64!", "to_i", "to_i!", "to_i128", "to_i128!", "to_i16", "to_i16!", "to_i32", "to_i32!", "to_i64", "to_i64!", "to_i8", "to_i8!", "to_u", "to_u!", "to_u128", "to_u128!", "to_u16", "to_u16!", "to_u32", "to_u32!", "to_u64", "to_u64!", "to_u8", "to_u8!", "trailing_zeros_count", "unsafe_chr", "unsafe_div", "unsafe_mod", "unsafe_shl", "unsafe_shr", "|"]
Float64.methods # => ["!=", "*", "**", "+", "-", "/", "<", "<=", "==", ">", ">=", "ceil", "clone", "fdiv", "floor", "next_float", "prev_float", "round_away", "round_even", "to_f", "to_f!", "to_f32", "to_f32!", "to_f64", "to_f64!", "to_i", "to_i!", "to_i128", "to_i128!", "to_i16", "to_i16!", "to_i32", "to_i32!", "to_i64", "to_i64!", "to_i8", "to_i8!", "to_s", "to_u", "to_u!", "to_u128", "to_u128!", "to_u16", "to_u16!", "to_u32", "to_u32!", "to_u64", "to_u64!", "to_u8", "to_u8!", "trunc"]
Proc.methods # => ["==", "===", "arity", "call", "clone", "closure?", "closure_data", "hash", "internal_representation", "partial", "pointer", "to_s"]</syntaxhighlight>
== 脚註 ==
<references />
== 外部リンク ==
* [https://crystal-lang.org/ The Crystal Programming Language] {{---}} 公式サイト
** [https://crystal-lang.org/reference/1.5/ ドキュメント]
*** [https://crystal-lang.org/api/1.5.0/ APIマニュアル]
** [https://play.crystal-lang.org/#/cr Compile & run code in Crystal] {{---}} playground
[[Category:Crystal|*]]
[[Category:プログラミング言語]]
{{NDC|007.64}}
8z4txsx5aa0puvggy2k7vkzz6escipt
ガリア戦記 第3巻/注解/16節
0
35258
205947
2022-07-28T13:02:56Z
Linguae
449
16節
wikitext
text/x-wiki
<div style="font-family:Arial Black;font-style:normal;font-size:15pt;color:#990033;text-align:center;">C・IVLII・CAESARIS・COMMENTARIORVM・BELLI・GALLICI</div>
<div style="font-family:Arial Black;font-style:normal;font-size:30pt;color:#990033;text-align:center;">LIBER・TERTIVS</div>
<br>
{| id="toc" style="align:center;clear:all;" align="center" cellpadding="5"
|-
! style="background:#bbf; text-align:center;" | [[ガリア戦記/注解編|ガリア戦記 注解編]]
| style="background:#ccf; text-align:center;" | [[ガリア戦記 第3巻/注解|第3巻]]
| style="background:#eef; text-align:center;"|
[[ガリア戦記 第3巻/注解/15節|15節]] |
[[ガリア戦記 第3巻/注解/16節|16節]] |
[[ガリア戦記 第3巻/注解/17節|17節]]
|}
__notoc__
== 原文テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>原文テキストについては[[ガリア戦記/注解編#原文テキスト]]を参照。</ref>
</div>
<span style="background-color:#ffc;"></span>
----
;テキスト引用についての注記
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:bold;font-size:15pt;"></span>
== 整形テキスト ==
<div style="font-family:Times New Roman;font-style:normal;font-size:15pt;color:#333;text-align:left;"><ref>整形テキストについては[[ガリア戦記/注解編#凡例]]を参照。</ref>
</div>
<span style="color:#800;"></span>
----
;注記
<!--
*原文の <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:accommodatae|accommodātae]], [[wikt:en:Aduatuci|Aduatucī]], [[wikt:en:Aduatucos|Aduatucōs]], [[wikt:en:Aedui#Latin|Aeduī]], [[wikt:en:Alpis#Latin|Alpīs]], [[wikt:en:appropinquabat|appropinquābat]], [[wikt:en:appropinquare#Latin|appropinquāre]], [[wikt:en:appulso#Latin|appulsō]], [[wikt:en:auxili#Latin|auxilī]], [[wikt:en:cedentis|cēdentīs]], [[wikt:en:cohortis|cohortīs]], [[wikt:en:coicere|coicere]], [[wikt:en:coiecerunt|coiēcērunt]], [[wikt:en:coiecisse|coiēcisse]], [[wikt:en:collatis|collātīs]], [[wikt:en:collocabant|collocābant]], [[wikt:en:collocandis|collocandīs]], [[wikt:en:collocarat|collocārat]], [[wikt:en:collocare#Latin|collocāre]], [[wikt:en:collocaret|collocāret]], [[wikt:en:collocari|collocārī]], [[wikt:en:colloquium#Latin|colloquium]], complūrīs, [[wikt:en:conantis|cōnantīs]], [[wikt:en:consili|cōnsilī]], [[wikt:en:eis#Latin|eīs]], [[wikt:en:finis#Latin|fīnīs]], [[wikt:en:hostis#Latin|hostīs]], [[wikt:en:imperi#Latin|imperī]], [[wikt:en:irridere#Latin|irrīdēre]], [[wikt:en:montis|montīs]], [[wikt:en:navis#Latin|nāvīs]], [[wikt:en:negoti|negōtī]], nōn nūllōs, [[wikt:en:omnis#Latin|omnīs]], [[wikt:en:partis#Latin|partīs]], [[wikt:en:proeli|proelī]], proficīscentīs, [[wikt:en:resistentis|resistentīs]], [[wikt:en:subeuntis|subeuntīs]], trīs, [[wikt:en:vectigalis#Latin|vectīgālīs]] </span> などは、<br>それぞれ <span style="font-family:Times New Roman;font-style:normal;font-size:15pt;">[[wikt:en:adcommodatae|adcommodātae]], [[wikt:de:Atuatuci|Atuatucī]], Atuatucōs, Haeduī, [[wikt:en:Alpes#Latin|Alpēs]], [[wikt:en:adpropinquabat|adpropinquābat]], [[wikt:en:adpropinquare|adpropinquāre]], [[wikt:en:adpulso|adpulsō]], [[wikt:en:auxilii|auxiliī]], [[wikt:en:cedentes#Latin|cēdentēs]], [[wikt:en:cohortes#Latin|cohortēs]], [[wikt:en:conicere|conicere]], [[wikt:en:coniecerunt|coniēcērunt]], [[wikt:en:coniecisse|coniēcisse]], [[wikt:en:conlatis|conlātīs]], [[wikt:en:conlocabant|conlocābant]], [[wikt:en:conlocandis|conlocandīs]], [[wikt:en:conlocarat|conlocārat]], [[wikt:en:conlocare|conlocāre]], [[wikt:en:conlocaret|conlocāret]], [[wikt:en:conlocari|conlocārī]], [[wikt:en:conloquium#Latin|conloquium]], [[wikt:en:complures#Latin|complūrēs]], [[wikt:en:conantes|cōnantēs]], [[wikt:en:consilii|cōnsiliī]], [[wikt:en:iis#Latin|iīs]], [[wikt:en:fines#Latin|fīnēs]], [[wikt:en:hostes#Latin|hostēs]], [[wikt:en:imperii#Latin|imperiī]], [[wikt:en:inridere|inrīdēre]], [[wikt:en:montes#Latin|montēs]], [[wikt:en:naves#Latin|nāvēs]], [[wikt:en:negotii|negōtiī]], [[wikt:en:nonnullos|nōnnūllōs]], [[wikt:en:omnes#Latin|omnēs]], [[wikt:en:partes#Latin|partēs]], [[wikt:en:proelii|proeliī]], [[wikt:en:proficiscentes|proficīscentēs]], [[wikt:en:resistentes#Latin|resistentēs]], [[wikt:en:subeuntes|subeuntēs]], [[wikt:en:tres#Latin|trēs]], [[wikt:en:vectigales|vectīgālēs]] </span> などとした。
-->
<span style="font-family:Times New Roman;font-style:normal;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-style:oblique;font-size:15pt;"></span>
<span style="color:#b00;"></span>
<span style="color:#800;"></span>
<span style="font-size:10pt;"></span>
<span style="background-color:#ff0;"></span>
== 注解 ==
=== 1項 ===
<span style="font-family:Times New Roman;font-size:20pt;"></span>
;語釈
<span style="font-family:Times New Roman;font-size:15pt;background-color:#fff;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="font-family:Times New Roman;font-size:15pt;"></span>
<span style="background-color:#ccffcc;"></span>
<!--
;対訳
《 》 内は、訳者が説明のために補った語。<span style="font-family:Times New Roman;font-size:30pt;">{</span> <span style="font-family:Times New Roman;font-size:30pt;">}</span> 内は関係文。
<span style="font-family:Times New Roman;font-size:15pt;"></span>
-->
== 訳文 ==
*<span style="background-color:#dff;">訳文は、[[ガリア戦記_第3巻#16節]]</span>
== 脚注 ==
{{Reflist}}
== 解説 ==
<!--
{| class="wikitable" style="text-align:center"
|- style="height:23em;"
|
|
|}
-->
== 関連項目 ==
*[[ガリア戦記]]
**[[ガリア戦記/注解編]]
***[[ガリア戦記 第3巻/注解]]
**[[ガリア戦記/用例集]]
== 関連記事 ==
== 外部リンク ==
[[Category:ガリア戦記 第3巻|16節]]
ozjmjdund15q8d95nydsupmu1v9jgom