<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プログラミング | ゲームに囲まれたい生活</title>
	<atom:link href="https://gamekineki.com/category/article/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/feed/" rel="self" type="application/rss+xml" />
	<link>https://gamekineki.com</link>
	<description>ゲームを含めた自分の趣味を語ってゆくブログ</description>
	<lastBuildDate>Mon, 17 Aug 2026 01:10:09 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://gamekineki.com/wp-content/uploads/2024/02/cropped-58c0d6b17f7ea6322ea76689afd67af0-32x32.jpg</url>
	<title>プログラミング | ゲームに囲まれたい生活</title>
	<link>https://gamekineki.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>芸術分野における生成AIは現状、利よりも害が大きいんじゃない、という個人的意見</title>
		<link>https://gamekineki.com/post-1048/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Mon, 17 Aug 2026 01:10:09 +0000</pubDate>
				<category><![CDATA[記事]]></category>
		<category><![CDATA[雑談]]></category>
		<category><![CDATA[生成AI]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=1048</guid>

					<description><![CDATA[　結構、センシティブな話題ですが、個人的に思う意見について書き残しておきたかったので書いておきます。※感情的な部分もあり、法解釈素人のガバガバ部分はあるので、鵜呑みにしないでね。 生成AIの中でも特定の分野では、利よりも [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　結構、センシティブな話題ですが、個人的に思う意見について書き残しておきたかったので書いておきます。<br>※感情的な部分もあり、法解釈素人のガバガバ部分はあるので、鵜呑みにしないでね。</p>



<h3 class="wp-block-heading"><span id="toc1">生成AIの中でも特定の分野では、利よりも害が大きいんじゃない？</span></h3>



<p class="wp-block-paragraph">　昨今、話題になっていますが、<br>個人的に<strong><span class="fz-22px"><span class="fz-28px">今の特定の分野においての生成AI</span></span></strong>の状況は、<br><strong><span class="fz-28px">とてもよろこべたものじゃない</span></strong>と思っています。</p>



<p class="wp-block-paragraph">　生成AIで記事を書いたこともある筆者なので、”<strong>生成AIという技術</strong>”自体を否定するわけではありません。むしろ活かし方によっては、物事のスタート・補助として、これほどまでに活用しがいのある技術はないと思います。</p>



<p class="wp-block-paragraph">　では、なにを危惧しているのかというと、その懸念している特定の分野の縮小。<br>極端な話を言えば、ある意味での文化の消滅を意味すると考えているからです。</p>



<h3 class="wp-block-heading"><span id="toc2">芸術系（作品を公開して評価してもらう系）は、今の生成AIに緩い状態を何とかしないと新しい表現生まれにくくなるんじゃない？という懸念</span></h3>



<p class="wp-block-paragraph">　まず、特定の分野というのは上記に述べた<br><strong><span class="fz-32px">芸術系分野（<strong><span class="fz-32px">絵、楽曲、小説、ゲームなど</span></strong>）</span></strong><br>でのお話です。<br>　プログラム（もちろん著作物という面はあるのですが、どちらかと言えば特許法で守られているイメージ）や知識・教育系の活用での懸念はあまり個人的にはしていないということですね。（抜け穴的に上記の分野に干渉する点は見過ごせませんが……）</p>



<p class="wp-block-paragraph">　そして、肝心の問題点として考えているのが、</p>



<ul class="wp-block-list">
<li><strong>訴訟の労力と見合わないため、著作権保護が十分にできない・なされない。（特に個人のクリエイター）</strong><br>＝大元（大規模生成AI運営企業）を訴えられないが故、対症療法（著作権侵害された際、個別に対応）をせざるを得ないため、非常に負担がかかる。（都度、弁護士に依頼しなければならない依頼料の金銭的にも、作品に対する時間が取れなくなる時間的な損失的にも）</li>



<li><strong>新しい切り口の作品が生まれない・ソフトパワーの枯渇</strong><br>＝絵で例えると、「生成AIでいいや」という思考が増え、新規に自分の手で絵を描く人口が少なくなり、素材となる学習元が枯渇した時、AIで描かれた似通った絵が蔓延、学習も循環するようになり、その分野自体が停滞する。</li>



<li><strong>なし崩し的に著作権という権利がなくなっていく。</strong><br>＝最初は個人クリエイターから始まって、「好き勝手生成AIに読ませてしまえば、著作権ごまかして、どうにでも扱っていいよね」、という風潮が広まっていった先は既存の企業も大丈夫とかいう甘い考えではいられないのかなと。<br>それこそIPを多く抱えている会社系は特に。二番目の問題とつながっている問題かも？</li>
</ul>



<p class="wp-block-paragraph">といったことが考えられるのかなと。</p>



<p class="wp-block-paragraph">　まず、一つ目に関してですが、<strong>生成AIに学習させるまで</strong>は<strong>著作権法第30条の4の二（著作物に表現された思想又は感情の享受を目的としない利用）</strong>において合法とされてしまっています。<br>個人的にはその後、なにがしかを生成して公開した時点で<strong>著作者人格権の同一性保持権</strong>に引っかかるんじゃね？と思い続けているのですが、そういったことらしいので、ここまでは現状適法の範囲らしいです。（コラージュでの著作権侵害は認められるのに、特例にするのは正直納得できませんが……）</p>



<p class="wp-block-paragraph">　では、どこを問題にするかというと、”<strong>生成される時</strong>”、もしくは”<strong>その後</strong>”になるわけですよね。<br>個別に生成して公開された作品の<strong>類似性</strong><sup data-fn="a967010a-580b-40d9-8321-ca37620a5dbc" class="fn"><a href="#a967010a-580b-40d9-8321-ca37620a5dbc" id="a967010a-580b-40d9-8321-ca37620a5dbc-link">1</a></sup>を認識　→　作品の<strong>依拠性</strong><sup data-fn="ff297cb0-9a9f-470f-bfa9-e54912f6180e" class="fn"><a href="#ff297cb0-9a9f-470f-bfa9-e54912f6180e" id="ff297cb0-9a9f-470f-bfa9-e54912f6180e-link">2</a></sup>を<strong>著作権者側が証明</strong>しなければいけないんです。<br>　絵で例えれば、仮に作品を公開して人気になったとして、続々と似通った絵柄・構図、もしくは特定のキャラクターの出力がなされた結果、著作権侵害は親告罪なわけですから、それらすべてを個別に訴えなければいけないわけです。</p>



<p class="wp-block-paragraph">　……<strong><span class="fz-28px">きつくないですか？</span></strong></p>



<p class="wp-block-paragraph">　企業単位の法務部が著作権保護に取り組むのであればともかく、個人で自身の著作物の権利を守るのであれば、そういった著作権侵害を疑う対象を認識するたびに弁護士に相談することになります（基本的に）。そういった権利の行使がしにくい状況を生み出すことが容易に想定される中で、学習を容認する（＝大元の生成AI企業への自身の作品の学習データの削除要求が通らないor完全には消せない、で逃げられてしまう）のは如何なものかなと。</p>



<p class="wp-block-paragraph">　二つ目、三つ目に関しては、つながっている話ではあるのですが、どちらにせよ絵に限らず、自筆を執るクリエイターの新しい芽が出にくくなる　→　総合的な文化の衰退・発展の阻害になるのではないかなと。大体は上記に書いてある通りのことを懸念しています。</p>



<h3 class="wp-block-heading"><span id="toc3">では、そういった分野でどのように生成AIを活用するか</span></h3>



<p class="wp-block-paragraph">　じゃあ、そういった創作関係で生成AIを使うのはダメなのかよ！！！……という方もいらっしゃるかもしれませんが、そんなことはないと思います。</p>



<p class="wp-block-paragraph">　あくまで「<strong>他人に自身の著作物を学習されたくない人も黙認せざるを得ない状況</strong>」というのを問題視しているのであって、”通常の著作権侵害とならない利用範囲”（私的使用範囲での複製＝”外部に出さない”や教育目的など）での利用であればいいと思いますし、それに加えて、個人的な考えとしては以下のような利用範囲で他者の権利を侵害しないような利用をすればいいのではないかなと思います。</p>



<ul class="wp-block-list">
<li>芸術系の生成AIは個人（もしくは各企業などの枠組みの中）で育てていく。<br>＝本人の著作のみを学習、もしくは汎用データセット（<strong>ネットに流されているような無法なものではなく、素材集として作られたもの</strong>）含めて学習させて、その人の創作の一助にしてもらう。</li>



<li>作る前（いわゆるアイディア段階）や作り上げた後の修正であれば許容？<br>＝例えば文章であれば、設定段階のアイディア出し、言語として間違っている細かい部分の校正の指摘、描写・整合性の矛盾の指摘、書き上げた作品の批評など（あくまで指摘に留めて、変更に関しては任意にする）。<br>であれば、「思想又は感情を創作的に表現したもの」という著作物の前提も保たれるはず。</li>
</ul>



<p class="wp-block-paragraph">が個人的に思う許容できる使用範囲。<br>これなら大半のクリエイターの創作意欲を削ぐことなく、生成AIという技術の恩恵も受けることができるのかなと。</p>



<h3 class="wp-block-heading"><span id="toc4">法や行政府にやってほしいこと</span></h3>



<p class="wp-block-paragraph">　一つ目の項で著作権者を十全に守れないのでは？という懸念を示したように、法の整備が追い付いていないことが多いと感じます（この件に限らず）。</p>



<p class="wp-block-paragraph">　なので、最後に法などで整備してほしい点を挙げておきたいと思います。<br>（意見を募れば、全然これ以外もあると思いますし、この内容も異議はあると思いますが……）</p>



<ul class="wp-block-list">
<li>現在の依拠性の判断基準に加えて、モデルの学習に使用した素材の明記の義務付け（単位で言えば、イラスト一枚レベル、もしくはその更に下のレベルからでも徹底的に）<br>＝これにより自身の作品を素材として、使われたくない場合、明確に拒否する意思を示し訴えることが可能になる。ただ、あくまで生成AIモデル作成側の自己申告になるため、現在の依拠性による判断も継続したうえで追加してほしい。<br>ネットワーク上から自動収集しているところが多い以上、アドレスなどの情報は確実に記録できるためそこらあたり？</li>



<li>生成AIの学習目的であっても、通常の私的使用の範囲でとどめてほしい。<br>＝営利の生成AI企業は、著作権侵害コンテンツを作らせて、クリエイターが負う負担（訴訟含めた対応）を増やしているだけでしょ。仮に学習させるにしても個人で外部には出さない学習モデルに留めるべきでは？</li>



<li><strong>学習に使われた重みを消せない</strong>、で止めることなく、<strong>そのデータを除いて学習させ直し</strong>、ぐらいの対応にさせるべき。<br>＝例えば特許侵害した製品がそのままの構造で生産され続けることはないはず（特許料の支払いに応じた場合を除く）。</li>



<li>NPOなどの団体を税金で支援するなら、海外での著作権訴訟などを国内のクリエイターが行いやすいように支えてくれる団体に税金を使ってくれよ……と思ってしまう。<br>（無駄に税金吸ってる団体多すぎだろ……借金だなんだいうなら歳出をもっと整理しろよ……）</li>



<li>損害賠償や刑罰を本当に踏みとどまるような相応なものにしてほしい。<br>＝この分野に限らないことだが、違法に得た金額　＞　損害賠償や罰金　のように、やり得な状況を是正してほしい。</li>
</ul>



<p class="wp-block-paragraph">ということで、書きたいことはこれぐらいですかね。</p>



<p class="wp-block-paragraph">詰めに詰めましたっていう内容ではないので、粗は大いにあると思いますが、自分の思ったことの備忘録として残しておきたいと思います。</p>


<ol class="wp-block-footnotes"><li id="a967010a-580b-40d9-8321-ca37620a5dbc">作品が似ているかどうか、この時点では著作権の侵害とはみなされない。 <a href="#a967010a-580b-40d9-8321-ca37620a5dbc-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="ff297cb0-9a9f-470f-bfa9-e54912f6180e">作品が侵害した著作権元を参照して作られたかどうか。<br>SNSなどで公開されている作品の場合、侵害した側がその作品に触れられる可能性があったかなどを検証される。 <a href="#ff297cb0-9a9f-470f-bfa9-e54912f6180e-link" aria-label="脚注参照2にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>「文字コード・文字型・プレフィックス」個人的な活用法の覚書</title>
		<link>https://gamekineki.com/post-749/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Thu, 12 Mar 2026 01:37:18 +0000</pubDate>
				<category><![CDATA[記事]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=749</guid>

					<description><![CDATA[　前記事では生成AIにまとめてもらった文字コードに関わるあれこれなのですが、本記事では個人的に思った（思いついた）ことについて書いていきたいなと思います。ある種のメモ書きのようなものなので”おち”やあとがきはありません。 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　前記事では生成AIにまとめてもらった文字コードに関わるあれこれなのですが、<br>本記事では個人的に思った（思いついた）ことについて書いていきたいなと思います。<br>ある種のメモ書きのようなものなので”おち”やあとがきはありません。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">個人的な活用法の覚書</a><ol><li><a href="#toc2" tabindex="0">UTF-○○の部分は○○ビット区切りの扱いであることを覚えておくべし</a></li><li><a href="#toc3" tabindex="0">Unicodeのそれぞれの使い分けについて</a></li><li><a href="#toc4" tabindex="0">Shift_JIS(SJIS)の利点について</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">個人的な活用法の覚書</span></h2>



<h3 class="wp-block-heading"><span id="toc2">UTF-○○の部分は○○ビット区切りの扱いであることを覚えておくべし</span></h3>



<p class="wp-block-paragraph">　Unicode関連のUTF-8,UTF-16,UTF-32についてなのですが、</p>



<ul class="wp-block-list">
<li>UTF-8が１バイト(8ビット)区切りの可変長最大4バイト <br>-> つまり文字によって1バイト、2バイトだったり、3バイト、４バイトだったりする。（通常の半角英数などが１バイト、ひらがな・漢字などで3バイトのものがある）</li>



<li>UTF-16が2バイト(16ビット)区切りの可変長最大4バイト<br>-&gt; つまり2バイトか4バイトかのどちらかになるということ。UTF-8との違いとしては英数字なども2バイトとなる。多くの日本語文字も2バイト内に収まるが一部漢字は4バイトになる？</li>



<li>UTF-32が4バイトの固定長<br>-&gt; つまりどんな文字であろうとも基本的に4文字に統一される。<br>例外としては複合絵文字（複数の絵文字で一つの絵文字が作られるものなど）などは文字を作るために必要な文字数に応じたバイト数になる？</li>
</ul>



<p class="wp-block-paragraph">なので使いたい場所によって使い分けが必要です。</p>



<h3 class="wp-block-heading"><span id="toc3">Unicodeのそれぞれの使い分けについて</span></h3>



<p class="wp-block-paragraph">　Unicodeのサイズについて前述したのですが、正直どう使いこなせばいいかわかんないですよね・・・。そんなわけで簡易的に使いどころをまとめておきます。</p>



<ul class="wp-block-list">
<li>UTF-8<br>保存した際のサイズが一番小さくなるはずなので、特に理由が無ければ使うスタンダード。</li>



<li>UTF-16<br>基本的な文字がほぼ2バイト固定なため、文字列全体の大きさが把握しやすいのか、WindowsなどのOSの内部処理で使われることが多い。（widestring的なところ）</li>



<li>UTF-32<br>絵文字は微妙なところだが、基本的な文字は全て4バイトに固定されるため、局所的な例にはなるがゲームなどで文字をウィンドウに表記する際に、<br>&#8211; 元の文章情報はUTF-8で保存<br>&#8211; 表示する前段階でUTF-8-&gt;UTF-32に変換<br>&#8211; 4バイト固定なのでstd::u32stringなどの配列に入れて一文字づつ回すことが可能になる<br>といったところの使用方法が考えられる。<br>この方式の利点としては比較的リソースファイルのサイズを抑えることが出来るという点です。小規模な開発ではあまり効果はないかもしれませんが、大規模なゲームやノベルゲーム系は恩恵を受けやすいかなと思います。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">Shift_JIS(SJIS)の利点について</span></h3>



<p class="wp-block-paragraph">　前記事や前述したUnicodeの内容を見て、「ならばShift_JIS（Unicode外）の存在意義・活用場所はどこにあるんだろう」と考えると思うのですが、Unicodeとの比較でShift_JISを使う意義を見ていきたいと思います。</p>



<h4 class="wp-block-heading">日本語中心のテキストではUTF-8よりもファイルサイズが小さくなる。</h4>



<p class="wp-block-paragraph">　Shift_JISは英数・記号・半角カタカナなどの半角文字が1バイト、通常の日本語表記のひらがな・カタカナ・漢字などが2バイトの表記であらわされる可変長文字コード 。<br>-&gt; つまり最大で一文字あたり2バイト。例として全角&#8221;Ａ&#8221;は2バイト、半角&#8221;A&#8221;は1バイト<br>そのため漢字などが一文字あたり3バイト（文字によっては4バイト）ほどになってしまうUnicodeよりもファイルサイズが小さくなる傾向にあります。</p>



<h4 class="wp-block-heading">日本語環境のレガシーシステムやプログラム資産を使うときに必要になるかも？</h4>



<p class="wp-block-paragraph">　会社所属などで古くに書かれたコードなどを参照しようとしたときに文字列入力や使用する文字列引数の値として想定されていることが多いかも？<br>いずれにせよ、現代の新規プロジェクトで全体をShift_JISエンコードする必要はなく、一部でUnicode文字列などを変換して使用する仕様でいい気がしますね・・・。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Visual Studio / C++ における「文字コード・文字型・プレフィックス」の関係まとめ</title>
		<link>https://gamekineki.com/post-737/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 13:55:19 +0000</pubDate>
				<category><![CDATA[記事]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=737</guid>

					<description><![CDATA[　今回の記事は自分が右往左往したVisualStudio/C++環境下においての文字コード・文字型・プレフィックスの関係性について、ChatGPTにまとめてもらったものです。 文字関係の問題に悩む人の一助になればと思いま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　今回の記事は自分が右往左往したVisualStudio/C++環境下においての文字コード・文字型・プレフィックスの関係性について、ChatGPTにまとめてもらったものです。</p>



<p class="wp-block-paragraph">文字関係の問題に悩む人の一助になればと思います。どうぞ。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p class="wp-block-paragraph">少しお願いしたいのですが、VisualStudioおよびC++における文字コード・型の関係をブログで公開できるような形式でまとめてもらえませんか。 <br>具体的には <br>１．Unicode文字・マルチバイト文字の説明（それぞれ簡潔に1~3行程度？） <br>２. C++における文字型の解説（型ごとにそれぞれ1~5行程度？） <br>３. 文字プレフィックスの説明 <br>４. 相互にどのような関係があるのか <br>５. どういったプロジェクト・条件で使い分ければいいのか</p>
</div>



<p class="wp-block-paragraph">この記事では、Visual Studio の「Unicode / マルチバイト文字セット」と、C++ の文字型・文字列リテラル（プレフィックス）・エンコーディングが、どう噛み合っているのかを整理します。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">1. 「Unicode文字」と「マルチバイト文字」の説明（Visual Studio の設定）</a><ol><li><a href="#toc2" tabindex="0">Unicode文字セット</a></li><li><a href="#toc3" tabindex="0">マルチバイト文字セット</a></li></ol></li><li><a href="#toc4" tabindex="0">2. C++ における文字型の解説（型ごと）</a><ol><li><a href="#toc5" tabindex="0">char</a></li><li><a href="#toc6" tabindex="0">signed char / unsigned char</a></li><li><a href="#toc7" tabindex="0">wchar_t</a></li><li><a href="#toc8" tabindex="0">char16_t</a></li><li><a href="#toc9" tabindex="0">char32_t</a></li><li><a href="#toc10" tabindex="0">char8_t（C++20）</a></li></ol></li><li><a href="#toc11" tabindex="0">3. 文字列リテラルのプレフィックス（例つき）</a></li><li><a href="#toc12" tabindex="0">4. それぞれがどう関係しているか（混乱ポイントの整理）</a><ol><li><a href="#toc13" tabindex="0">4-1. 「Visual Studioの文字セット」は何を変える？</a></li><li><a href="#toc14" tabindex="0">4-2. 「ソースコードの保存形式（UTF-8など）」は別レイヤ</a></li><li><a href="#toc15" tabindex="0">4-3. Shift-JIS はプレフィックスでは作れない</a></li></ol></li><li><a href="#toc16" tabindex="0">5. どういう条件で使い分けるべきか（おすすめ運用）</a><ol><li><a href="#toc17" tabindex="0">5-1. Windows中心・今後も育てるプロジェクト（おすすめ）</a></li><li><a href="#toc18" tabindex="0">5-2. レガシー資産が Shift-JIS 前提で、短期で動かしたい</a></li><li><a href="#toc19" tabindex="0">5-3. ゲームで「1文字ずつ表示」などをしたい場合</a></li></ol></li><li><a href="#toc20" tabindex="0">最短まとめ（迷ったらこれ）</a></li><li><a href="#toc21" tabindex="0">付録：Visual Studioで「新規/保存ファイルの既定エンコーディング」をUTF-8（BOMなし）にする方法</a><ol><li><a href="#toc22" tabindex="0">方法A：Visual Studioのオプションで既定エンコーディングを指定（VS 2022 v17.13以降）</a></li><li><a href="#toc23" tabindex="0">方法B：プロジェクト単位で強制する（.editorconfig を使う）</a></li><li><a href="#toc24" tabindex="0">うまく設定できたか確認する方法</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">1. 「Unicode文字」と「マルチバイト文字」の説明（Visual Studio の設定）</span></h2>



<h3 class="wp-block-heading"><span id="toc2">Unicode文字セット</span></h3>



<p class="wp-block-paragraph">Windows API を含む多くの現代的な Windows 開発で標準的な設定です。内部的には「ワイド文字（<code>wchar_t</code>）」を使う流儀になり、Win32 API も基本的に <code>...W</code>（Wide）側を使うことになります。</p>



<h3 class="wp-block-heading"><span id="toc3">マルチバイト文字セット</span></h3>



<p class="wp-block-paragraph">いわゆる「ANSI（A）」系APIや、Shift-JIS/CP932 前提の資産に寄せた設定です。<code>TCHAR</code> が <code>char</code> 側に寄り、文字列が OS のコードページ（日本語Windowsなら CP932）依存になりやすくなります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc4">2. C++ における文字型の解説（型ごと）</span></h2>



<h3 class="wp-block-heading"><span id="toc5">char</span></h3>



<p class="wp-block-paragraph">1バイトの文字型です。<code>std::string</code> の要素型でもあり、実務では「文字」よりも「バイト列の器」として使われることが多いです。中身が UTF-8 なのか Shift-JIS なのかは運用ルール次第です。</p>



<h3 class="wp-block-heading"><span id="toc6">signed char / unsigned char</span></h3>



<p class="wp-block-paragraph">同じく1バイトですが、符号付き/符号なしが明確です。バイナリ処理やバイト配列として扱いたいときに便利で、文字コード用途というより「生のデータ」用途で登場します。</p>



<h3 class="wp-block-heading"><span id="toc7">wchar_t</span></h3>



<p class="wp-block-paragraph">ワイド文字型です。Windows では多くの場合 16bit（UTF-16 のコードユニットとして運用されがち）で、Win32 API（W系）との相性が良いです。ただし規格上「必ずUTF-16」という保証ではありません。</p>



<h3 class="wp-block-heading"><span id="toc8">char16_t</span></h3>



<p class="wp-block-paragraph">16bit固定の文字型で、UTF-16 のコードユニット列を表現するための型です。プラットフォーム差が少なく、UTF-16 を明示したいときに使います。</p>



<h3 class="wp-block-heading"><span id="toc9">char32_t</span></h3>



<p class="wp-block-paragraph">32bit固定の文字型で、UTF-32 を表現するための型です。コードポイント単位の処理がしやすい反面、サイズは大きめです。</p>



<h3 class="wp-block-heading"><span id="toc10">char8_t（C++20）</span></h3>



<p class="wp-block-paragraph">UTF-8 用の文字型です。<code>u8"..."</code> リテラルの型が <code>char8_t[]</code> になり、<code>std::u8string</code> との親和性が高いです。一方で <code>std::string</code>（<code>char</code>）と混ぜると型変換が必要になることがあります。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc11">3. 文字列リテラルのプレフィックス（例つき）</span></h2>



<p class="wp-block-paragraph">C++ の「プレフィックス」は、主に“リテラルの型”を変えます（Shift-JISなど特定コードページを直接指定する機能ではありません）。</p>



<ul class="wp-block-list">
<li><code>"text"</code>：<code>const char[]</code></li>



<li><code>L"text"</code>：<code>const wchar_t[]</code></li>



<li><code>u8"text"</code>：<code>const char8_t[]</code>（C++20以降）</li>



<li><code>u"text"</code>：<code>const char16_t[]</code></li>



<li><code>U"text"</code>：<code>const char32_t[]</code></li>
</ul>



<p class="wp-block-paragraph">また、Raw文字列（エスケープを気にしない）も組み合わせ可能です：</p>



<ul class="wp-block-list">
<li><code>R"(C:\path\file.txt)"</code></li>



<li><code>u8R"(改行\nもそのまま)"</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc12">4. それぞれがどう関係しているか（混乱ポイントの整理）</span></h2>



<p class="wp-block-paragraph">ここが一番大事です。</p>



<h3 class="wp-block-heading"><span id="toc13">4-1. 「Visual Studioの文字セット」は何を変える？</span></h3>



<p class="wp-block-paragraph">Visual Studio の「Unicode / マルチバイト文字セット」は、主に <strong>Windows API 呼び出しや <code>TCHAR</code> 系</strong>の挙動に影響します。</p>



<ul class="wp-block-list">
<li>Unicode文字セット：<code>TCHAR</code> → <code>wchar_t</code>、<code>MessageBox</code> → <code>MessageBoxW</code> のように Wide 側へ寄る</li>



<li>マルチバイト文字セット：<code>TCHAR</code> → <code>char</code>、<code>MessageBox</code> → <code>MessageBoxA</code> のように ANSI 側へ寄る</li>
</ul>



<h3 class="wp-block-heading"><span id="toc14">4-2. 「ソースコードの保存形式（UTF-8など）」は別レイヤ</span></h3>



<p class="wp-block-paragraph"><code>.cpp/.h</code> を UTF-8（BOMなし）で保存し、<code>/utf-8</code> を付けるのは、<strong>コンパイラがソースや文字リテラルをどう解釈するか</strong>に影響します。</p>



<p class="wp-block-paragraph">つまり、</p>



<ul class="wp-block-list">
<li>文字セット（Unicode/マルチバイト）＝ “実行時の文字列型やAPI側の方針”</li>



<li>ソースの文字コード（UTF-8など）＝ “ソースをどう読むか”</li>
</ul>



<p class="wp-block-paragraph">この2つは別物なので、混ぜると「どっちの話だっけ？」となりやすいです。</p>



<h3 class="wp-block-heading"><span id="toc15">4-3. Shift-JIS はプレフィックスでは作れない</span></h3>



<p class="wp-block-paragraph"><code>L""</code> や <code>u8""</code> は Unicode系のリテラルを作る仕組みです。Shift-JIS（CP932）は型ではなくコードページ変換の結果なので、必要な場合は <strong>変換関数で <code>std::string</code>（バイト列）として生成</strong>するのが一般的です。</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc16">5. どういう条件で使い分けるべきか（おすすめ運用）</span></h2>



<h3 class="wp-block-heading"><span id="toc17">5-1. Windows中心・今後も育てるプロジェクト（おすすめ）</span></h3>



<ul class="wp-block-list">
<li>Visual Studio：<strong>Unicode文字セット</strong></li>



<li>ソース：<strong>UTF-8（BOMなし）</strong> + <strong><code>/utf-8</code></strong></li>



<li>方針：普段は <strong><code>std::string</code> を UTF-8 として運用</strong>し、Windows API境界だけ <code>std::wstring</code>（UTF-16相当）へ変換</li>
</ul>



<p class="wp-block-paragraph">この運用は、教材的な <code>std::string</code> の感覚を残しつつ、Unicodeにも強くできます。</p>



<h3 class="wp-block-heading"><span id="toc18">5-2. レガシー資産が Shift-JIS 前提で、短期で動かしたい</span></h3>



<ul class="wp-block-list">
<li>既存のSJISテキスト（CSV/辞書/台詞）が大量にある</li>



<li>古いツールや資産がSJIS前提</li>
</ul>



<p class="wp-block-paragraph">この場合でも「全体SJIS化」より、</p>



<ul class="wp-block-list">
<li>I/O（読み込み/書き出し）だけSJIS</li>



<li>内部はUTF-8/UTF-16へ寄せる<br>の方が事故が少ないことが多いです。</li>
</ul>



<h3 class="wp-block-heading"><span id="toc19">5-3. ゲームで「1文字ずつ表示」などをしたい場合</span></h3>



<p class="wp-block-paragraph">UTF-8の <code>std::string</code> を使う場合、<code>1バイト=1文字</code> ではないため、</p>



<ul class="wp-block-list">
<li>UTF-8をデコードして「コードポイント」単位で進める（軽量）</li>



<li>さらに厳密にやるなら「グラフェム境界」（ICUなど）で進める<br>といった方針が必要です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><span id="toc20">最短まとめ（迷ったらこれ）</span></h2>



<ul class="wp-block-list">
<li><strong>Unicode文字セット</strong>を選ぶ（Windows開発の基本）</li>



<li>ソースは **UTF-8（BOMなし）**で統一し、必要なら <strong><code>/utf-8</code></strong></li>



<li><code>std::string</code> は “UTF-8の器” と割り切って使う</li>



<li>Windows APIやファイルパスなど OS 境界だけ <code>std::wstring</code> に変換する</li>



<li>Shift-JIS は「プレフィックス」ではなく「変換で必要なときだけ作る」</li>
</ul>



<h2 class="wp-block-heading"><span id="toc21">付録：Visual Studioで「新規/保存ファイルの既定エンコーディング」をUTF-8（BOMなし）にする方法</span></h2>



<p class="wp-block-paragraph">Visual Studioでは、ファイルの既定保存エンコーディングを指定できます。<strong>Visual Studio 2022 v17.13以降</strong>では、IDEの設定として「既定の保存エンコーディング」を明示的に選べます。</p>



<h3 class="wp-block-heading"><span id="toc22">方法A：Visual Studioのオプションで既定エンコーディングを指定（VS 2022 v17.13以降）</span></h3>



<ol class="wp-block-list">
<li><strong>Tools（ツール）> Options（オプション）</strong> を開く</li>



<li><strong>Environment（環境）> Documents（ドキュメント）</strong> を開く</li>



<li><strong>Save files with a specific encoding</strong>（特定のエンコーディングで保存）をオン</li>



<li><strong>Save encoding</strong>（保存エンコーディング）で <strong>UTF-8 without signature</strong>（UTF-8 BOMなし）を選ぶ</li>



<li>OKで確定</li>
</ol>



<p class="wp-block-paragraph">この設定を入れると、以後の保存で指定したエンコーディングに揃いやすくなります。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">補足：Microsoft Learn側でも同じ項目（Environment &gt; Documents で “Save files with a specific encoding” を有効化して “Save encoding” を選ぶ）として案内されています。</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc23">方法B：プロジェクト単位で強制する（.editorconfig を使う）</span></h3>



<p class="wp-block-paragraph">IDEの個人設定ではなく、<strong>リポジトリ/プロジェクトのルールとして固定</strong>したい場合は <code>.editorconfig</code> が便利です。Visual StudioはEditorConfigをサポートしており、<code>charset = utf-8</code> を指定できます。</p>



<p class="wp-block-paragraph">例：プロジェクト直下に <code>.editorconfig</code> を作成</p>



<pre class="wp-block-code"><code>root = true

&#91;*.{h,hpp,cpp,cxx,cc,inl,ipp}]
charset = utf-8
</code></pre>



<ul class="wp-block-list">
<li><code>charset = utf-8</code> は通常 <strong>UTF-8（BOMなし）</strong> の意図になります。</li>



<li>BOMありにしたい場合は <code>utf-8-bom</code> を使う、という指定も可能です。</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><span id="toc24">うまく設定できたか確認する方法</span></h3>



<p class="wp-block-paragraph">既存/新規ファイルを開いた状態で、Visual Studioの「エンコーディング指定で保存（Save with Encoding）」から、意図したエンコーディングになっているか確認できます（UTF-8 without signature など）。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【備忘録】VisualStudioで新規プロジェクトを始めるときの自分用設定手順【C++】</title>
		<link>https://gamekineki.com/post-727/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 23:16:43 +0000</pubDate>
				<category><![CDATA[記事]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[備忘録]]></category>
		<category><![CDATA[C++]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=727</guid>

					<description><![CDATA[　皆さんは新規プロジェクトを始めるときに、前回どんな設定をして始めたか忘れることはありませんか？特にVisualStudioだと設定項目が多く、どこにどの設定項目があるかわからなくなることがよくありますよね。 　今回は「 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　皆さんは新規プロジェクトを始めるときに、前回どんな設定をして始めたか忘れることはありませんか？特にVisualStudioだと設定項目が多く、どこにどの設定項目があるかわからなくなることがよくありますよね。</p>



<p class="wp-block-paragraph">　今回は「最初の設定に時間がとられることを無くして実際の作業に集中できる」ように、また「新しいプロジェクトを作ることを設定のめんどくささで忌避しないようにする」ことを目的として、自分がよく使うゲームプロジェクト＆C++向けの設定を備忘録として残しておきたいと思います。それではどうぞ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">ゲームプロジェクト向けVS設定手順</a><ol><li><a href="#toc2" tabindex="0">VisualStudioにて新規にプロジェクトを始める手順</a></li><li><a href="#toc3" tabindex="0">プロジェクトを作った後のVisualStudioの設定</a></li><li><a href="#toc4" tabindex="0">最後に</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">ゲームプロジェクト向けVS設定手順</span></h2>



<h3 class="wp-block-heading"><span id="toc2">VisualStudioにて新規にプロジェクトを始める手順</span></h3>



<p class="wp-block-paragraph"><strong>１．VisualStudioのスタートウィンドウにて”新しいプロジェクトの作成”を選択</strong></p>



<p class="wp-block-paragraph"><strong>２．”デスクトップウィザード”のテンプレートを選択・・・フィルターでC++を選んでいるとわかりやすい（※フレームワークの作成であれば”スタティックライブラリを選択）</strong></p>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="668" height="437" src="https://gamekineki.com/wp-content/uploads/2026/01/vs_setup1.png" alt="" class="wp-image-728" srcset="https://gamekineki.com/wp-content/uploads/2026/01/vs_setup1.png 668w, https://gamekineki.com/wp-content/uploads/2026/01/vs_setup1-500x327.png 500w, https://gamekineki.com/wp-content/uploads/2026/01/vs_setup1-300x196.png 300w" sizes="(max-width: 668px) 100vw, 668px" /></figure>



<p class="wp-block-paragraph"><strong>３．任意のディレクトリを指定（項目の一番下にあるソリューションとプロジェクトのディレクトリ配置については小規模・実験的であれば同じでもいいが、規模がそれなりになる予定または未定であればチェックは外しておいた方が無難・・・ほぼ好み）</strong></p>



<p class="wp-block-paragraph"><strong>４．その後、新しいウィンドウで”デスクトップアプリケーション”＆下の”空のプロジェクト”のチェックボックスをチェック</strong></p>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="499" height="405" src="https://gamekineki.com/wp-content/uploads/2026/01/vs_setup2.png" alt="" class="wp-image-729" srcset="https://gamekineki.com/wp-content/uploads/2026/01/vs_setup2.png 499w, https://gamekineki.com/wp-content/uploads/2026/01/vs_setup2-300x243.png 300w" sizes="(max-width: 499px) 100vw, 499px" /></figure>



<p class="wp-block-paragraph">ここまででプロジェクトの作成は完了なので、ここからはプロジェクト内の設定をしていきます。</p>



<h3 class="wp-block-heading"><span id="toc3">プロジェクトを作った後のVisualStudioの設定</span></h3>



<p class="wp-block-paragraph"><strong>※1/31手順を修正・追記</strong></p>



<p class="wp-block-paragraph"><strong>※４番までプロジェクトのプロパティ設定内で作業します。</strong></p>



<p class="wp-block-paragraph"><strong>１．プロジェクトのプロパティ設定→全般：C++言語標準を自分の使いたいバージョンに設定（C++14とかC++20とか）</strong><br>-&gt;コンパイラがどのバージョンでコードを読むかを決めるとこ？</p>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="553" src="https://gamekineki.com/wp-content/uploads/2026/01/config1-800x553.png" alt="" class="wp-image-730" srcset="https://gamekineki.com/wp-content/uploads/2026/01/config1-800x553.png 800w, https://gamekineki.com/wp-content/uploads/2026/01/config1-500x346.png 500w, https://gamekineki.com/wp-content/uploads/2026/01/config1-300x207.png 300w, https://gamekineki.com/wp-content/uploads/2026/01/config1-768x531.png 768w, https://gamekineki.com/wp-content/uploads/2026/01/config1.png 914w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph"><strong>２．詳細：文字セットの変更（特に指定が無ければUnicode文字のままでよい？）</strong><br><strong>ここに関しては後日、文字コードに関しての記事を投稿予定です。</strong></p>



<p class="wp-block-paragraph"><strong>３．<strong>C/C++→全般＆リンカー→全般：それぞれ追加のインクルードディレクトリ・追加のライブラリディレクトリに</strong>使用する外部ライブラリ＆自作フレームワークのパス（こちらはインクルードディレクトリのみでOK）を追加(もしvcpkgをユーザーにintegrateしていなかった場合はこちらにパスをいれるか、マニフェストファイル的なものを作る方法にした方が良いかも)</strong></p>



<p class="wp-block-paragraph"><strong>４．C/C++→コード生成：ランタイムライブラリを構成（プロパティウィンドウ左上のDebug/Release）に対して、それぞれ（マルチスレッド　デバッグ（/MTd）/マルチスレッド（MT））を設定する。</strong></p>



<p class="wp-block-paragraph"><strong>５．プロパティを閉じて左上の”ファイル”から”追加”→”既存のプロジェクト”で</strong><br><strong>随時更新予定の自作のライブラリのプロジェクトを選択</strong></p>



<p class="wp-block-paragraph"><strong>6.<strong>メイン側のプロジェクトを右クリックしたあと</strong></strong><br><strong>・<strong>追加→参照のところで自作ライブラリの参照にチェック</strong></strong><br><strong>・ビルドの依存関係→プロジェクトの依存関係から自作ライブラリをチェック</strong><br><strong>の二つをこなして設定完了</strong></p>



<p class="wp-block-paragraph">ここまでで設定は完了！コーディングを始めましょう！</p>



<h3 class="wp-block-heading has-text-align-left"><span id="toc4">最後に</span></h3>



<p class="has-text-align-left wp-block-paragraph">　以上が大体の設定です。<br>あとは保存ファイルの文字エンコードをどれにするかとかgit関連の設定などは残ってはいますけど、個人的にはこれら＋既存ライブラリの導入を行っていれば、小規模・個人レベルでのゲーム開発環境としては十分かと思います。<br>これを基にして、各々が快適な設定を見つけてもらえればと思います。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【初心者向け】CLI（コマンド操作）を敬遠してしまう人へ</title>
		<link>https://gamekineki.com/post-709/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Mon, 12 Jan 2026 23:33:11 +0000</pubDate>
				<category><![CDATA[記事]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初心者]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=709</guid>

					<description><![CDATA[　ということでCLI（コマンドラインインターフェイス）に最近まで馴染みが無かったわたしなのですが、先日のUbuntuMATEが契機となってコマンド操作を積極的に使うようになったので、今、”GUI操作に慣れていた時の気持ち [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　ということでCLI（コマンドラインインターフェイス）に最近まで馴染みが無かったわたしなのですが、先日のUbuntuMATEが契機となってコマンド操作を積極的に使うようになったので、<br>今、”<strong>GUI操作に慣れていた時の気持ち</strong>”と”<strong>CLIを便利に感じたとき・なにを敬遠していたのか</strong>”を言語化しやすい狭間の時期だと思ったので、本記事を書きました。</p>



<p class="wp-block-paragraph">　普段、WindowsなどのアイコンなどでのGUI操作に慣れていて、<br><strong>「CLI、コマンド操作ってなんだよ・・・。なんでわかりにくいものを使うの？」</strong><br>といった人にCLIを使う理由が少しでも伝わればいいなと思います。<br>（CLIを使いたいと考えている人に対しては全部をCLIで操作せよ！ではなく、<strong>適材適所、使いやすい場面があることを知ってもらいたいな・・・</strong>という感じです。）</p>



<p class="wp-block-paragraph">　それではどうぞ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">CLIってなんか頭に入ってこないんだよね・・・という人へ</a><ol><li><a href="#toc2" tabindex="0">そもそもGUI・CUIって何？（一応ね・・・）</a></li><li><a href="#toc3" tabindex="0">GUIに染まっている人がなぜCLIを敬遠するのか？</a></li><li><a href="#toc4" tabindex="0">それならばGUIに慣れた人にとって、CLIを使う必然性は？</a></li><li><a href="#toc5" tabindex="0">じゃあ、これを入口にしてみたらどうかな？という提案</a></li><li><a href="#toc6" tabindex="0">最後に</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">CLIってなんか頭に入ってこないんだよね・・・という人へ</span></h2>



<h3 class="wp-block-heading"><span id="toc2">そもそもGUI・CUIって何？（一応ね・・・）</span></h3>



<p class="wp-block-paragraph">　この記事を読んでいただいている時点で、この辺の区別はわかるとは思いますが、一応の概要をば。</p>



<ul class="wp-block-list">
<li>GUI（グラフィカルユーザーインターフェースの略称）<br>‐普段使っているWindowsやMacにおける、アイコンや特定領域をポインティングデバイス（マウスやタッチパッドなど）で”クリックやドラッグ操作”することによってレスポンス（操作の結果）を得るUIのこと。</li>



<li>CLI（コマンドラインインターフェースの略称）<br>‐コマンドプロンプトやWindowsPowerShell、ターミナル（Linux、Mac）のように特定のコマンドによってディレクトリやファイルなどの操作を行うインターフェースのこと。<br>似たような言葉にCUI（キャラクターユーザーインターフェース）があるが、そちらは英語圏的にはTUI（テキストベースドユーザーインターフェース）の方が近いみたいですね。<br>（つまりCLI≠CUI、CUI≒TUIみたいです。）</li>
</ul>



<h3 class="wp-block-heading"><span id="toc3">GUIに染まっている人がなぜCLIを敬遠するのか？</span></h3>



<p class="wp-block-paragraph">　私も長年、GUI（Windows）に浸かっていたのですが、プログラミングを勉強するとなると否が応にもCLIに触れなければならない場面が出てくると思うんですよね・・・。正直、そんな場面でコピペしたコマンドを使っててもピンと来てなかったのですが、ピンとこない理由って大体この辺だと思うんですよね。</p>



<ul class="wp-block-list">
<li>CLIという概念が分からない<br>↳子供のころからGUI環境に慣れ親しみ過ぎた</li>



<li>CLIの種類がよくわからない</li>



<li>コマンドの種類が分からない・アイコンを右クリックしたときのような選択肢の可視化がない</li>



<li>ディレクトリの位置が把握しきれない・ディレクトリの構造なんて覚えてらんない</li>
</ul>



<p class="wp-block-paragraph">　順に追っていきますと、最初はシンプルにCLIってなんやねんが来ると思うんですよ。<br>アイコンをクリックしてを繰り返していると、「えっ、コマンドで操作って、文字で操作ってどうやるの・・・？」って感じでそもそも想像できないんですよね。もうパソコンといえば子供のころから学校の授業含めWindowsのGUI環境だったので、キーボードが文章入力程度の役割にしかなってなかったんですよね。（Windows以前のMS-DOSとかが全盛期だったころは違うんでしょうが・・・）</p>



<p class="wp-block-paragraph">　次にCLIの種類が意味わかんないっていうところっすかね。同じWindowsでもコマンドプロンプト、PowerShellがあって「どっち使えばいいの・・・？」って初心者はなると思うんですよね。（実際にはコマンドプロンプトでできることはPowerShellでできるはず・・・だよね？）<br>さらには各ソフトウェア内にもコマンドがあって特有のCLI、コマンド操作が必要になったらさらに頭が混乱するわけですよ。</p>



<p class="wp-block-paragraph">　そしてなにより、コマンドが分からない！<br>これに関しては検索して調べればいいんですけど・・・でもCLIを使わない人がいちいちコマンドを検索してまでCLIを使うかな？となっちゃうのでそれなりに目的意識、CLIを使う必然性が求められるようになっちゃうんですよね・・・。そしてそれが初心者にはハードルになると。<br>そしてそれに通じて、GUIにてアイコンを右クリックしたときのような操作の選択肢の可視化がないのも違う点ですよね。GUIが可能な操作を表示するのに対して、CLIは自分でしたい操作を明示しなければならないという点ですね・・・。</p>



<p class="wp-block-paragraph">　最後のディレクトリ構造の把握については、慣れている人は全部を把握している（頭の中にある）人もいるのかもしれないですけど、GUIで操作していたら同階層のディレクトリは覚えていなくても表示されるので、あまり覚えきっている人は少ないのではないかなと・・・。（ある程度、どのあたりにあるか分かればいい。）<br>ゆえにいざコマンドで操作するとなった時に、半角英数でスペル間違ってないかなと思いながら（あるいは実際のディレクトリを確認しながら）、ディレクトリ名を入力しないといけないわけで、そこも少し馴染みにくいところなのかなと。</p>



<h3 class="wp-block-heading"><span id="toc4">それならばGUIに慣れた人にとって、CLIを使う必然性は？</span></h3>



<p class="wp-block-paragraph">　先の話題を受けて、「こんだけめんどくさいんだったら使わなくてよくない？」と思うことでしょう。実際、必要に迫られなければ使わなくていいと思います。通常の資料づくり（ExcelやWordなど）、アプリケーション（ゲームや既成のソフトウェア）、ブラウザ（YouTube、ウェブサイト閲覧など）などの使用であれば基本的に使用する必要はないと思います。</p>



<p class="wp-block-paragraph">　ではどこで必要になるかと言えば、”スクリプトによる特定操作手順のマクロ化”や”プログラミング周りの環境整備”、”サーバー関係”、”特定のOS環境”によるというところがパッと思いつくところですかね。<br>自分も最初に述べたようにそこまでコマンド操作に対する解像度が高いわけではないのですが、特定の操作を必要とする業務であればバッチファイルで特定の操作を行うスクリプトを作成して日々の操作を自動化できますし、プログラミングの環境（コンパイラやパッケージマネージャ等）の導入手順としてコマンド操作で行う方が便利だったりします。<br>特定のOS環境については特にLinuxになるのですが、LinuxはデスクトップOSとしてWindowsやMacと並ぶこともありますが、サーバー用途としてのシェア率が高いのは周知のことですよね？<br>サーバー用のGUIなどもあるのかもしれませんが、サーバー管理をする人って大体PCの扱いに熟達していますよね。であればコマンド操作で事足りるのにわざわざGUIを開発するコストをかける必要性はなかったということですね。（コマンド操作全盛期からそれだけでやってこれた＆受け継いできた、セキュリティの問題から汎用的なGUIが入りえなかった？のかもしれませんね）</p>



<p class="wp-block-paragraph">　というわけで比較的フレッシュな人がコマンド操作を使うことになる必然性としては</p>



<ul class="wp-block-list">
<li>Linux系デスクトップOSもしくはサーバーでやりたいことがある</li>



<li>新しいプログラミング言語を学びたい（環境が欲しい）</li>



<li>特定作業の効率化・自動化</li>
</ul>



<p class="wp-block-paragraph">なのかな・・・？<br>自分がこういうところに魅力を感じたなと思っただけなので、人によって入口にしたいところは全然違うとは思いますが・・・。（なにはともあれ、興味が湧いたら飛び込んでみよう！！！）</p>



<h3 class="wp-block-heading"><span id="toc5">じゃあ、これを入口にしてみたらどうかな？という提案</span></h3>



<p class="wp-block-paragraph">　それでは上記の必然性を考えて、コマンド操作を取り入れる実際の行動、”入口”的なものを考えてみましょうか。<br>なぜかというと「世の中、堅苦しくて理解が苦しくなる記事があふれてますけど、気楽に入れてみればいいんです・・・」というと「何かでつまって使わなくなってストレージの片隅に放置」という流れになるのであまり気楽にいえないんですよね・・・。（私も数多くの経験あり・・・）<br>なので一応の入り口は提示しておこうかな・・・ということです。</p>



<p class="wp-block-paragraph">　まず一つ目の提案が<br>CLIを使うのはディレクトリの構造を把握できる小規模なフォルダから始めてみては？<br>ということ。<br>↳苦手意識を持つ人（筆者の体験）は初めからルートディレクトリ含めて全体の管理をしようとして、ディレクトリ構造が把握できず”どこに何をおいてあるのか”が分からなくなってしまうというのがあると思うんですよね。<br>広すぎて把握しきれてないディレクトリを頑張って操作しようとするので<br>&#8220;cdコマンドなどのディレクトリ移動・操作系のコマンドで操作するよりGUIでディレクトリの中身を確認しながら操作したほうが早いんじゃね”<br>という思考になるんじゃないかなと。</p>



<p class="wp-block-paragraph">　そして二つ目が<br>ディレクトリの数が少ないであろう新規に使い始めるPC（OS）<br>または新規のプログラミングプロジェクトのディレクトリ管理で心機一転使い始める<br>ってところですかね。<br>↳上記と言っていることはほぼ同じですけど、こちらは”新しく始める”といったタイミングの問題ですかね。個人的な体験ですが、Linux（Ubuntu）の使い始めから積極的にCLIを使い始めたのですが、余分なファイルがない（デフォルトのファイルしかない）分、ディレクトリ配置が複雑化していないのでコマンド操作が使いやすかった感覚はたしかにあったのでそういった環境の変更時に触り始めるのも一手な気がする。</p>



<p class="wp-block-paragraph">　最後にこれは心得的な話なのですが、<br>コマンドのチートシートを見ながらで全然いいのよ・・・！<br>というところですね。<br>↳人間は習慣化していないことは覚えてられないに決まっていますから、最初・・・というかずっとでもいいからコマンドのチートシートを見ながら操作でいいのよ・・・！という心構えで行きましょう。日々の積み重ねが大事なのです。</p>



<p class="wp-block-paragraph">個人的に思う入口として入りやすいところはこんなところですかね・・・。</p>



<h3 class="wp-block-heading"><span id="toc6">最後に</span></h3>



<p class="wp-block-paragraph">　うーーーん、あまり初心者を後押し・参考にできるような記事になったかは微妙なところかもと思っちゃいますね・・・。あくまで私の体験を書いて同じような気持ちを抱いている人の一助・一歩踏み出す気になれればなという気持ちで書いた記事なので、内容薄いかもしれないです、ごめんなさい。</p>



<p class="wp-block-paragraph">　それでもコマンドを使い始めて、なんか作業が楽しく進められるようになったんですよね。というよりもある日を境に寝て起きたら、なんかコマンド操作の概念がスッと頭に入ってきたんですよ・・・。<br>なのでなにかに詰まって、「うおぉぉ、何もわかんねぇ」ってなった時は</p>



<p class="has-text-align-center wp-block-paragraph"><span class="fz-22px"><strong><span class="fz-28px">寝るのが一番</span></strong></span></p>



<p class="wp-block-paragraph">です。<br>そんな時間は無ぇという方が多くいらっしゃると思いますが、個人的な体感としては一番解決率が高い気がします。（寝ずに頭をひねるよりは）<br>というわけでここまでのご精読ありがとうございました。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>なぜプログラミング言語はこれほど種類が分かれたのか？</title>
		<link>https://gamekineki.com/post-482/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Wed, 21 May 2025 09:59:22 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ChatGPT]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=482</guid>

					<description><![CDATA[　毎度、ありがとうございます。皆さん、プログラミングに関心を持ったことはあるでしょうか？この記事を開いていただいた時点で少なからず、興味はあるとお見受けします。業務効率化やゲームを作りたいなど様々な理由で関心を持つ方が多 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　毎度、ありがとうございます。<br>皆さん、プログラミングに関心を持ったことはあるでしょうか？<br>この記事を開いていただいた時点で少なからず、興味はあるとお見受けします。<br>業務効率化やゲームを作りたいなど様々な理由で関心を持つ方が多くいるでしょう。<br>そんな中でこんな疑問を持ったことはありませんか？<br>「プログラミング言語の種類多すぎない（どれを使えばいいんだ）？」と。<br>今回はなぜこんなにも多くの種類のプログラミング言語が存在するかの要因について、大まかに書いていきたいと思います。どれを使ったらいいか（便利、効率的か）に密接に関わってくるので、自分の目的にはどの言語がいいのか悩んでいるプログラミング初心者の方の一助となればと思います。<br>それではどうぞ。</p>



<h3 class="wp-block-heading"><span id="toc1">私自身の挫折（読み飛ばして構いません）</span></h3>



<p class="wp-block-paragraph">※この項はこの記事を書くに至った筆者の体験です。個人ブログなので多少はね・・・。</p>



<p class="wp-block-paragraph">　私は過去に一度プログラミングを学ぼうとして挫折したんですよね。<br>というのを思い出したのがこの記事の発端です。ゲームが好きでゲームを作りたかったんですよね。<br>その時に様々な言語の選択肢を見て、「どれを学べばいいんだ・・・？」となってしまいました。<br>それでもひとまずどれでもいいからかじってみようと思い立ち、初心者向けの参考書を複数言語買って挑戦し始めました。（C++、C#、Pythonあたりだったんですかね・・・。）<br>初学者には環境構築も一苦労。やっとこさコードを書き始めたのですが、そこで気づきました。<br><strong><span class="fz-16px"><span class="fz-24px">なんかやってること同じじゃない・・・？</span></span></strong><br>多少の記法の違いはあれど書いてあることが、変数、関数の説明に始まり、for文や配列の解説など共通の基礎の基礎部分だったんですよね（当たり前なのですが・・・）。<br>結局、言語でなにが違うんだっていうことに気づけず、しばらく離れてしまったんですよね。<br>コラムなりなんなりでどういった用途に多く使われているとか触れていてほしかったなぁ・・・と。<br><br>　そういったことで、学び始めるにあたって、なぜこの言語が使われているのか、要因に触れられている解説が薄い気がするんですよね・・・。<br>検索すればもちろん出てきますが、普段多少なりともプログラミング関連の記事や動画を見たりしますが、この内容について深く掘り下げているものがあまり浮上してこない気がするんですよね（個人的な体感に基づく）。<br>そのためなるたけそういった用途、使われている理由に重点を置いて今回書かせていただきます。<br>（歴史的な部分はあまり書かないと思います・・・。）<br>また全ての言語は網羅できないので、書いていない言語に関しては、この記事を見て、どの要素に当てはまるのかご自身で調べて確認していただければと思います。</p>



<h3 class="wp-block-heading"><span id="toc2">大まかな要素について</span></h3>



<p class="wp-block-paragraph">　それでは本題に入りましょう！<br>最初にプログラミング言語を工具などと変わらない<strong>道具</strong>として見てみてください。<br>道具というのは使いたい場面によって最適化されています。例えば、同じハンマー・トンカチの形をした工具でも用途によって槌の部分の材質が違います（金属製はもちろん、傷つけない為にゴム製のものも存在しますよね）。つまりやりたいことに対する”必要性”があって道具は作られているわけですよね。プログラミング言語も同じです。<br>　特定の共通の決まり事の上で動作するものを作りたかったから、簡単にして効率よくしたかったからなど、そんな理由です。であるからこそ変数などの共通事項以外で得意なこと（目指していたこと）が出来てきます。なので言語の成り立ち・過程を知るということは、言語の得意なことを知るということにもつながってくると言えるんじゃないでしょうか？個別の事例を見てちょっとこの考えについて深めていきましょう。<br>最初はカジュアルでわかりやすいものから。</p>



<h4 class="wp-block-heading">より便利な機能を増やしたい（今の言語にない機能を増やしたい）</h4>



<p class="wp-block-paragraph">　言語を始めてみて最初に皆さん、C言語,C++,C#って何が違うの？って一度は思ったと思うんですよね。実際、ほぼ縦のつながりどころか、C++に至ってはC言語を包括<sup data-fn="76dffedc-89da-4f80-8064-a8e433220a45" class="fn"><a href="#76dffedc-89da-4f80-8064-a8e433220a45" id="76dffedc-89da-4f80-8064-a8e433220a45-link">1</a></sup>（C++の中にC言語の書き方で書いてもなんの問題もない）しています。C言語に付け足したかったものをC++（テンプレート、クラス、オブジェクト指向等）で、C++に付け足したかったものをC#<sup data-fn="277d6016-7d73-45b8-87ab-18135d41bf49" class="fn"><a href="#277d6016-7d73-45b8-87ab-18135d41bf49" id="277d6016-7d73-45b8-87ab-18135d41bf49-link">2</a></sup>（OSが違う環境でも差異を吸収して動作するように＝.netフレームワーク、GUI開発環境等）で必要になったものを追加していったわけですね。<br>　そこで一つ疑問が湧くと思います。必要になったものを追加した後発の言語を使えばいいじゃん、古いC言語とかは使わなくていいじゃん、と。残念ながらそうはいかないのです。</p>



<h5 class="wp-block-heading">ではなぜC言語は未だに使われるのか？（残っているのか？）</h5>



<p class="wp-block-paragraph">　便利な機能を追加した裏には切り捨てられた要素があるからです。C/C++とC#で言えばメモリ安全性<sup data-fn="b9940397-0f9e-41c7-adea-ece512dbd002" class="fn"><a href="#b9940397-0f9e-41c7-adea-ece512dbd002" id="b9940397-0f9e-41c7-adea-ece512dbd002-link">3</a></sup>の代わりにメモリ操作の自由を無くしました。これがどういったことかというとC/C++では自身でメモリを操作して効率的な（実行速度の速い）プログラムが書けるがメモリに関する問題（メモリリーク等）が起こりえます。≒「<strong>危険なこともできるようにする</strong>ことで表現力を得る」<br>それに対してC＃ではそういった問題が起こりにくい代わりに、実行時に無駄のある（不要な処理を挟む）プログラムになってしまうといった形ですね。≒「<strong>危険なことをできなくする</strong>ことで安全を得る」<br>これ以外にも差異はありますが、そういった差異によるメリット・デメリットが存在するがゆえに古い言語でも生き残っているんですね。<br>　それらに加えてC言語は近年まで生き残っている言語の中ではアセンブリに次ぐぐらい低レベルな言語<sup data-fn="eaeca882-ce5f-4566-99f3-1f35cbda187f" class="fn"><a href="#eaeca882-ce5f-4566-99f3-1f35cbda187f" id="eaeca882-ce5f-4566-99f3-1f35cbda187f-link">4</a></sup>なのであえて機能を追加せず最低限の機能を保つことで、できないことを増やさない≒時間や労力はかかるが大抵のことは実装できる環境を維持しています。<br>　機能を増やすことで便利になったと思えば、他の部分で融通が利かなくなってしまうんですね・・・。</p>



<h4 class="wp-block-heading">特定の分野で定められている規定のもとに作られた、<br>もしくはこの言語が主流でその言語に合わせて規定が作られたから</h4>



<p class="wp-block-paragraph">　これについては今皆さんが目にしているものですね。<br>ネットワーク関連の言語です。基準が違う言語が各所で生まれてしまえば、その言語に対応していないブラウザはサイトを表示することが出来ません。その状態は非常に不便ですよね。<br>サーバーとなるとそれなりに選択肢がありますがWebページに焦点を当てると、HTML（文体、改行等の文章情報）、CSS（文字の太さやレイアウトなどの装飾）、JavaScript（フロントエンドでHTML、CSSを操作するための言語・ECMAScriptを基準・Transpile系も含む）など、ほぼほぼ統一されているといっていいと思います。<br>こうしましょうという取り決めのもとに使われている言語ということですね。</p>



<h4 class="wp-block-heading">今まで使われてきたから（ライブラリが充実しているから）</h4>



<p class="wp-block-paragraph">　金融・大規模業務系はJava、C＃等の言語が流行して、そのシステムを保守しなければならないからその言語が主流になりました。さらにそれによってその業界でのノウハウやライブラリも充実することになったので現在もその言語での開発でいいよねという形で使われています。<br>このようにある種の時の運っていうのも流行り廃りには影響するんです。<br>新しくとってかわるのは、こういった積み重ねが必要な業界は厳しいかもしれませんね・・・。</p>



<h3 class="wp-block-heading"><span id="toc3">基礎の構文が似通っている言語はどのような差が出るのか？</span></h3>



<p class="wp-block-paragraph">　おおよそ上に述べた理由が大半かと思います。Pythonなんかもカジュアルに簡易に書きたい（人の言語に近い、読みやすい形）という設計思想のもと≒今までよりも便利にということから生まれていますから。<br>さて最後に基礎的な文法が似通っている言語の特色をChatGPTにまとめてもらったので紹介したいと思います。どういった差異があるのか確認していきましょう。</p>



<h5 class="wp-block-heading">◆ C言語：<strong>究極の低レベル汎用言語</strong></h5>



<ul class="wp-block-list">
<li><strong>設計思想</strong>：ハードウェアに近い操作を可能にしつつ、最低限の抽象化を提供する。</li>



<li><strong>強み</strong>：
<ul class="wp-block-list">
<li>メモリ操作、アドレス操作が自由（ポインタ）</li>



<li>コンパイル結果がシンプルで高速</li>



<li>OSやドライバ、組み込み機器で標準的に使用</li>
</ul>
</li>



<li><strong>苦手なこと</strong>：
<ul class="wp-block-list">
<li>型安全性がない（バグが起きやすい）</li>



<li>クラスも例外も標準では存在しない</li>



<li>巨大なプロジェクトには手間がかかる</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">◆ C++：<strong>高性能と抽象化の両立</strong></h5>



<ul class="wp-block-list">
<li><strong>設計思想</strong>：Cの性能と自由度を保ちながら、安全性と表現力を拡張する。</li>



<li><strong>強み</strong>：
<ul class="wp-block-list">
<li>オブジェクト指向（クラス・継承など）</li>



<li>テンプレートによる汎用性</li>



<li>STL（標準テンプレートライブラリ）による抽象化されたアルゴリズムとデータ構造</li>



<li>最新のC++20以降でマルチスレッド・コンセプトなど大幅進化</li>
</ul>
</li>



<li><strong>苦手なこと</strong>：
<ul class="wp-block-list">
<li>学習コストが高い</li>



<li>複雑性が管理しづらくなる</li>



<li>コンパイル時間が長くなることも</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">◆ Java：<strong>安全性と実行環境の自由さ</strong></h5>



<ul class="wp-block-list">
<li><strong>設計思想</strong>：安全で移植性が高い言語（WORA: Write Once, Run Anywhere）</li>



<li><strong>強み</strong>：
<ul class="wp-block-list">
<li>ガーベジコレクションによる自動メモリ管理</li>



<li>仮想マシン（JVM）によるクロスプラットフォーム性</li>



<li>強い型チェックと例外処理</li>



<li>大規模業務アプリケーションに適する</li>
</ul>
</li>



<li><strong>苦手なこと</strong>：
<ul class="wp-block-list">
<li>実行速度はネイティブ言語より遅め</li>



<li>ネイティブ操作やゲーム開発には不向きなことが多い</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">◆ C#：<strong>WindowsとGUI、業務アプリの親和性</strong></h5>



<ul class="wp-block-list">
<li><strong>設計思想</strong>：.NET環境との統合で、GUIや業務アプリの迅速開発</li>



<li><strong>強み</strong>：
<ul class="wp-block-list">
<li>Visual Studioによる強力なIDE支援</li>



<li>GUI、Webアプリ、ゲーム開発（Unity）に対応</li>



<li>イベント駆動設計と非同期処理が得意</li>
</ul>
</li>



<li><strong>苦手なこと</strong>：
<ul class="wp-block-list">
<li>実行環境（.NET）に依存</li>



<li>Linuxや組み込みでは使いにくい</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">◆ Python：<strong>圧倒的な表現力と手軽さ</strong></h5>



<ul class="wp-block-list">
<li><strong>設計思想</strong>：コードを“人間が読む”ことを最優先</li>



<li><strong>強み</strong>：
<ul class="wp-block-list">
<li>自然な文法（英語的）</li>



<li>豊富なライブラリ：AI、データ処理、Webなど幅広い</li>



<li>インタプリタで即実行、試行錯誤しやすい</li>
</ul>
</li>



<li><strong>苦手なこと</strong>：
<ul class="wp-block-list">
<li>実行速度が遅い（特にループ処理）</li>



<li>GIL（Global Interpreter Lock）の制約でマルチスレッドに難あり</li>



<li>型安全性が弱い（最近は型ヒントで改善中）</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h5 class="wp-block-heading">◆ 比較チャート：何に向いている？</h5>



<figure class="wp-block-table"><div class="scrollable-table"><table class="has-fixed-layout"><thead><tr><th>言語</th><th>ハード制御</th><th>ゲーム/高性能</th><th>Webアプリ</th><th>AI/データ分析</th><th>組み込み</th><th>学習難易度</th></tr></thead><tbody><tr><td>C</td><td>◎</td><td>△</td><td>×</td><td>×</td><td>◎</td><td>★★★★☆</td></tr><tr><td>C++</td><td>◎</td><td>◎</td><td>△</td><td>○</td><td>○</td><td>★★★★★</td></tr><tr><td>Java</td><td>△</td><td>○</td><td>◎</td><td>△</td><td>×</td><td>★★★☆☆</td></tr><tr><td>C#</td><td>△</td><td>◎ (Unity)</td><td>◎ (ASP.NET)</td><td>△</td><td>×</td><td>★★★☆☆</td></tr><tr><td>Python</td><td>×</td><td>△</td><td>◎ (Django)</td><td>◎</td><td>×</td><td>★★☆☆☆</td></tr></tbody></table></div></figure>



<p class="wp-block-paragraph">　荒っぽい比較かもしれませんが、こういった長所・短所が出てくるわけですよね。<br>構文を学んでいる時点では見えなかった違いも見えてくると思います。もし今後新しい言語を学ぶことがあればこういった比較をしてみると自分の目的に合った言語を選定できると思います。</p>



<h3 class="wp-block-heading"><span id="toc4">あとがき</span></h3>



<p class="wp-block-paragraph">　さてここまで読んでいただいたと思いますが、ぶっちゃけ見づらい構成でしたよね・・・？<br>書いている途中でどうにもならないなぁと自分の文章構成力の無さに嘆いてました・・・（少し前の記事も見直してると悶々とすることが・・・）。本当にすみません。伝えたいことはあるけど、伝える能力は発展途上なのです。<br>　それはさておき個人的に最強の構成だと思っているのが「C++」+「Python」の組み合わせです。<br>C++の自由度と速度、自身で組めないプログラムをPythonのライブラリで補って実行する。これを使いこなせれば私のやりたいことは大体完結するんじゃないかなと思っています。<br>これを極められるように今後も精進していきたいと思います。<br>それではまた次回お会いできる時まで。ありがとうございました。</p>


<ol class="wp-block-footnotes"><li id="76dffedc-89da-4f80-8064-a8e433220a45">C/C++という表記があるぐらいには密接な関係 <a href="#76dffedc-89da-4f80-8064-a8e433220a45-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="277d6016-7d73-45b8-87ab-18135d41bf49">C#はＣ＋＋の発展形としてＣ++++となり、プラス記号4つを一つにまとめて＃になったわけですね。 <a href="#277d6016-7d73-45b8-87ab-18135d41bf49-link" aria-label="脚注参照2にジャンプ">↩︎</a></li><li id="b9940397-0f9e-41c7-adea-ece512dbd002">ここで言う安全性はメモリリークやバッファオーバーフローなどプログラムの実行に支障をきたす動作を引き起こす可能性のこと <a href="#b9940397-0f9e-41c7-adea-ece512dbd002-link" aria-label="脚注参照3にジャンプ">↩︎</a></li><li id="eaeca882-ce5f-4566-99f3-1f35cbda187f">プログラミング言語において低レベルとはより機械の言語（マシン語）に近いかどうかといったことです。人であれば文字によって理解しますが、機械が理解するのは0・1の羅列です。<br>この0・1へのアクセス可否や書いたプログラムをどれほどの処理を挟んで機械語に変換するかによって高レベル・低レベルを判断しています。（ごめんなさい、明確な基準ってあるんですかね・・・おおよそこうじゃない？といった感覚で私も見ています。） <a href="#eaeca882-ce5f-4566-99f3-1f35cbda187f-link" aria-label="脚注参照4にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【備忘録】ブログの年齢確認表示のコードをGPTで出力</title>
		<link>https://gamekineki.com/post-468/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Mon, 28 Apr 2025 04:35:56 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[問題解決]]></category>
		<category><![CDATA[ChatGPT+]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=468</guid>

					<description><![CDATA[　皆様、ご機嫌いかがでしょうか。お久しぶりです。現在ちょっぴり人生の先行きが見えなくて気力を失っているキネキです。今回はブログのR18記事（私のエロゲ記事）の年齢確認の導入について。当ブログでは時たまR18ゲーの記事が上 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　皆様、ご機嫌いかがでしょうか。<br>お久しぶりです。現在ちょっぴり人生の先行きが見えなくて気力を失っているキネキです。<br>今回はブログのR18記事（私のエロゲ記事）の年齢確認の導入について。<br>当ブログでは時たまR18ゲーの記事が上げられているのを、ご覧になっている方もいらっしゃると思うのですが、恥ずかしながら今まで年齢確認がありませんでした。<br>それによって積極的にR18記事を作成して上げることに心理的な抵抗があったわけですが、今回いろいろ試行錯誤してついに導入したので、その経緯を後の自分のためにも記したいと思います。<br>（願わくば誰かのやくにたてばいいなとおもいつつ・・・。）</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-14" checked><label class="toc-title" for="toc-checkbox-14">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">年齢確認導入の経緯</a><ol><li><a href="#toc2" tabindex="0">なぜ今まで導入していなかったのか？</a></li><li><a href="#toc3" tabindex="0">じゃあ自分で作るしかないのでは？</a></li><li><a href="#toc4" tabindex="0">あとがき</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">年齢確認導入の経緯</span></h2>



<h3 class="wp-block-heading"><span id="toc2">なぜ今まで導入していなかったのか？</span></h3>



<p class="wp-block-paragraph">　まずは”今までなぜ導入をしていなかったのか？”から始めていきますね。<br>R18記事を書き始めた当初からプラグインでの解決を模索していました。<br>しかしながら、この手のプラグインのほとんどが</p>



<ul class="wp-block-list">
<li>海外製</li>



<li>その上設定できる（する）項目が多かった</li>



<li>自分の英語力がない</li>
</ul>



<p class="wp-block-paragraph">であり、それらの理由で少し壁が高かったのです。</p>



<p class="wp-block-paragraph">　そこで一度サブドメイン、もしくはサブディレクトリ化による別サイト化という解決策も出ました。しかしながらこちらは</p>



<ul class="wp-block-list">
<li>再度ワードプレスのインストールが必要＝再度初期設定が必要</li>



<li>一つのワードプレスでの記事管理が初心者には難しい</li>



<li>サブドメイン使用の際には、二つ目のドメイン取得が必要</li>
</ul>



<p class="wp-block-paragraph">などの理由でこちらも没に・・・。</p>



<h3 class="wp-block-heading"><span id="toc3">じゃあ自分で作るしかないのでは？</span></h3>



<p class="wp-block-paragraph">　というわけで解決策は自分でスクリプトを書くという選択肢しかないわけで、ChatGPTに頼んでPHP,JavaScript,CSSのファイルを書いてもらいました。（この時点で自分で書いてないじゃないかーいというツッコミは置いておいてください・・・ｍ（＿　＿）ｍ。）<br>まあちょこちょこその辺りのプログラミング言語についてはかじっていたので、フィックスできると踏んだうえでの判断でした。（JavaScriptとかは特に基礎文法はC++と似たり寄ったりですからね。）</p>



<p class="wp-block-paragraph">　詳しい実装要件としては</p>



<ul class="wp-block-list">
<li>投稿記事のタグに”R18”（スラッグとしては”r18”）が存在していたら年齢確認画面を表示させる</li>



<li>”はい”を選択した場合は、キャッシュに認証情報を記録してしばらくの間、認証画面を表示しないようにする処理</li>



<li>”いいえ”を選択した場合はサイトのトップページに戻る処理</li>



<li>描画部分に関しては全体をフラットに、背景にブラー（ぼかし）をかけるように。</li>
</ul>



<p class="wp-block-paragraph">といった感じですね。<br>それでは実装手順を見ていきましょう。</p>



<p class="wp-block-paragraph">　まず、自身のサーバーのファイルマネージャにて自身が使っているテーマ（子テーマの場合はそちら）のフォルダ内に以下のフォルダ・ファイルを作ります。</p>



<ul class="wp-block-list">
<li>functions.php(既存の場合は作らなくてOK！)</li>



<li>js(フォルダ)<br>->age-verification.js(”->”は先のフォルダの中にという意味)</li>



<li>css(フォルダ)<br>->age-verification.css</li>
</ul>



<p class="wp-block-paragraph">そして各ファイルの実装の中身です。（既存のコードはそのままで）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="functions.php" data-lang="PHP" data-show-lang="1"><code>// フロントエンドに年齢確認用のスクリプトを追加（タグにR18が含まれていたら年齢確認のダイアログを表示）
function add_age_verification_script() {
    if (is_single()) { // 投稿ページだけ
        $post_tags = get_the_tags();
        if ($post_tags) {
            foreach ($post_tags as $tag) {
                if ($tag-&gt;slug === &#39;r18&#39;) { // タグのスラッグが &#39;r18&#39; なら
                    wp_enqueue_script(&#39;age-verification-script&#39;, get_stylesheet_directory_uri() . &#39;/js/age-verification.js&#39;, array(&#39;jquery&#39;), &#39;1.0&#39;, true);
                    wp_enqueue_style(&#39;age-verification-style&#39;, get_stylesheet_directory_uri() . &#39;/css/age-verification.css&#39;);
                    break; // 見つかったらループ終了
                }
            }
        }
    }
}
add_action(&#39;wp_enqueue_scripts&#39;, &#39;add_age_verification_script&#39;);</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-js" data-file="age-verification.js" data-lang="JavaScript" data-show-lang="1"><code>// 年齢確認用JavaScript
jQuery(document).ready(function($) {
    // Cookieを読む関数
    function getCookie(name) {
        const value = &quot;; &quot; + document.cookie;
        const parts = value.split(&quot;; &quot; + name + &quot;=&quot;);
        if (parts.length === 2) return parts.pop().split(&quot;;&quot;).shift();
    }

    // Cookieに書く関数
    function setCookie(name, value, days) {
        const expires = new Date();
        expires.setTime(expires.getTime() + (days * 24 * 60 * 60 * 1000));
        document.cookie = name + &quot;=&quot; + value + &quot;;expires=&quot; + expires.toUTCString() + &quot;;path=/&quot;;
    }

    // すでに認証済みならスキップ
    if (getCookie(&#39;age_verified&#39;) === &#39;yes&#39;) {
        console.log(&#39;すでに年齢認証済みなのでモーダル表示スキップ&#39;);
        return;
    }

    // モーダル作成
    var modalHtml = `
        &lt;div id=&quot;age-verification-overlay&quot;&gt;
            &lt;div id=&quot;age-verification-modal&quot;&gt;
                &lt;h2&gt;18歳以上ですか？&lt;/h2&gt;
                &lt;div class=&quot;age-verification-buttons&quot;&gt;
                    &lt;button id=&quot;age-yes&quot;&gt;はい&lt;/button&gt;
                    &lt;button id=&quot;age-no&quot;&gt;いいえ&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    `;
    $(&#39;body&#39;).append(modalHtml);
    console.log(&#39;年齢確認モーダルを追加しました&#39;);

    // ボタン動作
    $(&#39;#age-yes&#39;).on(&#39;click&#39;, function() {
        setCookie(&#39;age_verified&#39;, &#39;yes&#39;, 7); // 7日間有効なCookieを保存
        $(&#39;#age-verification-overlay&#39;).fadeOut();
        console.log(&#39;「はい」を選択＆Cookie保存&#39;);
    });

    $(&#39;#age-no&#39;).on(&#39;click&#39;, function() {
        console.log(&#39;「いいえ」を選択、ホームへリダイレクト&#39;);
        window.location.href = &#39;/&#39;; // サイトのホームに飛ばす
    });
});</code></pre></div>



<div class="hcb_wrap"><pre class="prism line-numbers lang-css" data-file="age-verification.css" data-lang="CSS" data-show-lang="1"><code>#age-verification-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    backdrop-filter: blur(5px); /* ←ココで背景をぼかす！ */
    background: rgba(0, 0, 0, 0.5); /* 背景は薄めの暗さ */
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
    font-family: &#39;Helvetica Neue&#39;, &#39;Arial&#39;, sans-serif;
}

#age-verification-modal {
    background: #ffffff; /* 真っ白ベース */
    padding: 40px 30px;
    border-radius: 10px;
    text-align: center;
    color: #333; /* 文字はダークグレーで上品に */
    box-shadow: 0px 8px 30px rgba(0, 0, 0, 0.2); /* ふわっとした影 */
    max-width: 400px;
    width: 90%;
    transition: all 0.3s ease;
}

#age-verification-modal h2 {
    font-size: 24px;
    margin-bottom: 20px;
    font-weight: 600;
}

.age-verification-buttons {
    margin-top: 30px;
    display: flex;
    justify-content: center;
    gap: 20px;
}

.age-verification-buttons button {
    padding: 12px 24px;
    font-size: 16px;
    border: 2px solid #333;
    border-radius: 6px;
    background: transparent;
    color: #333;
    cursor: pointer;
    transition: background-color 0.3s ease, color 0.3s ease;
}

#age-yes:hover {
    background-color: #4CAF50; /* 緑色でGO感 */
    border-color: #4CAF50;
    color: #fff;
}

#age-no:hover {
    background-color: #f44336; /* 赤色でSTOP感 */
    border-color: #f44336;
    color: #fff;
}</code></pre></div>



<p class="wp-block-paragraph">といった感じですね。<br>コピペして使ってもらっても構いませんし用途によって細かく変えてもらっても大丈夫です。（免責事項に同意したうえでご使用ください&lt;m(__)m>。）</p>



<p class="wp-block-paragraph">　それらによってできた画面がこちらになります。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="800" height="421" src="https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-800x421.jpg" alt="" class="wp-image-473" srcset="https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-800x421.jpg 800w, https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-500x263.jpg 500w, https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-300x158.jpg 300w, https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-768x404.jpg 768w, https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73-1536x808.jpg 1536w, https://gamekineki.com/wp-content/uploads/2025/04/7b1c14ea7710191221ba353f13d88a73.jpg 1693w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p class="wp-block-paragraph">今後サイトに装飾が増えてきて雰囲気に合わなくなったら再度デザインは変更すると思いますが、<br>シンプルなデザインで個人的には満足です！</p>



<h3 class="wp-block-heading"><span id="toc4">あとがき</span></h3>



<p class="wp-block-paragraph">　ここまで見ていただいてありがとうございます！<br>やりたいことが最近ありすぎるのですが、お金がないのがネック・・・。<br>ゲームに関する記事でエンタメ精神にあふれた記事をお届けしたいところですが、次回も備忘録的なものになると思います。（おそらくaviutlを使用したボイロ実況動画作成環境についてです。）<br>つまりは・・・？</p>



<p class="wp-block-paragraph">とはいえ腰（どころかなにもかも）が重いので実際にそこまで行くのに半年以上かかると思います・・・。ブログでしか表せないこともありますが、やっぱり動画の方が直感的ですからね！</p>



<p class="wp-block-paragraph">最後に実際のページを紹介して終わりにしたいと思います。<br>記事の内容自体はグロめなので見なくても大丈夫です！（見てほしいけどね・・・。）<br>それでは次回もお待ちしております（　・∀・）ﾉｼ。</p>



<div class="wp-block-cocoon-blocks-blogcard blogcard-type bct-reference">

<a target="_blank" href="https://gamekineki.com/post-332/" title="【R18G】本当のバケモノは誰？「駄作～ヌイアワセ～」" class="blogcard-wrap internal-blogcard-wrap a-wrap cf"><div class="blogcard internal-blogcard ib-left cf"><div class="blogcard-label internal-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail internal-blogcard-thumbnail"><img loading="lazy" decoding="async" width="160" height="90" src="https://gamekineki.com/wp-content/uploads/2024/09/ggs_1026pl-160x90.jpg" class="blogcard-thumb-image internal-blogcard-thumb-image wp-post-image" alt="" srcset="https://gamekineki.com/wp-content/uploads/2024/09/ggs_1026pl-160x90.jpg 160w, https://gamekineki.com/wp-content/uploads/2024/09/ggs_1026pl-120x68.jpg 120w, https://gamekineki.com/wp-content/uploads/2024/09/ggs_1026pl-320x180.jpg 320w" sizes="(max-width: 160px) 100vw, 160px" /></figure><div class="blogcard-content internal-blogcard-content"><div class="blogcard-title internal-blogcard-title">【R18G】本当のバケモノは誰？「駄作～ヌイアワセ～」</div><div class="blogcard-snippet internal-blogcard-snippet">暑い日も終わりに近づいていますが、秋が感じられそうにない感じで過ぎ去っていきそうですね・・・。そんなわけで今回は「駄作～ヌイアワセ～」について。自分が始めてプレイしたグロゲーです。（自分の趣味的に）紹介したいけど、（いろいろな意味で）普通は...</div></div><div class="blogcard-footer internal-blogcard-footer cf"><div class="blogcard-site internal-blogcard-site"><div class="blogcard-favicon internal-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://gamekineki.com" alt="" class="blogcard-favicon-image internal-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain internal-blogcard-domain">gamekineki.com</div></div><div class="blogcard-date internal-blogcard-date"><div class="blogcard-post-date internal-blogcard-post-date">2024.11.02</div></div></div></div></a>
</div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>【C++】ゲームをコードで書くフレームワーク・ライブラリ三選</title>
		<link>https://gamekineki.com/post-424/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 03:56:06 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[C++]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=424</guid>

					<description><![CDATA[　皆様、お疲れ様です。今回はゲームプログラミング初心者向けの記事になります。題してゲームを（ほぼ）コードだけで成立させられるフレームワーク・ライブラリについてです。基本的にはゲーム開発初心者がコードで作る最初のゲームの範 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　皆様、お疲れ様です。<br>今回はゲームプログラミング初心者向けの記事になります。<br>題してゲームを（ほぼ）コードだけで成立させられるフレームワーク・ライブラリについてです。<br>基本的にはゲーム開発初心者がコードで作る最初のゲームの範囲として2Ｄまでがひとまずの目安であることを想定しています。そのため、2Ｄゲームをつくるのに十分であり日本語の解説が比較的充実していて、かつ後に3Ｄまで踏み込んだ時にそれを使い続けることもできるということを条件にして今回選ばせていただきました。<br><br>また前提としてVisualStudioで使うことを前提に書いていることをご了承ください。</p>



<p class="wp-block-paragraph">　昨今はUnrealEngineやUnityなどのゲームエンジンで比較的学習コストを低くして、ゲーム制作に取り組むことが出来て個人開発者にとっても非常にいい環境が整いつつあります。しかしながら各エンジン備え付けのコンポーネントなどの処理だけでは自分のやりたいことを実現できない・・・、なんてことも起こりえます。ゲーム開発の基礎（どのようなことが書かれているのか・どのような順序で処理されているのか等）を学ぶためにも一度コードに触れることは絶対損にはなりません！！<br>なのでよりフレキシブルに開発できるように、コードを書くことに馴染みを覚えてほしいなあと思い今回の記事を書きました。<sup data-fn="67cf400a-be0d-462b-83da-09256e73d90f" class="fn"><a href="#67cf400a-be0d-462b-83da-09256e73d90f" id="67cf400a-be0d-462b-83da-09256e73d90f-link">1</a></sup></p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-16" checked><label class="toc-title" for="toc-checkbox-16">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">各フレームワーク・ライブラリの紹介</a><ol><li><a href="#toc2" tabindex="0">そもそもフレームワーク・ライブラリって何ぞ？違いって？</a></li><li><a href="#toc3" tabindex="0">DXライブラリ</a></li><li><a href="#toc4" tabindex="0">Siv3D</a></li><li><a href="#toc5" tabindex="0">SDL</a></li><li><a href="#toc6" tabindex="0">最後に</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">各フレームワーク・ライブラリの紹介</span></h2>



<h3 class="wp-block-heading"><span id="toc2">そもそもフレームワーク・ライブラリって何ぞ？違いって？</span></h3>



<p class="wp-block-paragraph">　とまあ送り出したのですが、恐らくですが早速引っかかると思います。聞いたことはあるけど詳しい違いや内容が分からないですよね。本題とずれてしまうのでネットの海を調べていただくか下記の記事を参照して下さい。</p>




<a rel="noopener" target="_blank" href="https://zenn.dev/nameless_sn/articles/framework_and_library" title="【解説】フレームワークとライブラリの違い" class="blogcard-wrap external-blogcard-wrap a-wrap cf"><div class="blogcard external-blogcard eb-left cf"><div class="blogcard-label external-blogcard-label"><span class="fa"></span></div><figure class="blogcard-thumbnail external-blogcard-thumbnail"><img loading="lazy" decoding="async" src="https://gamekineki.com/wp-content/uploads/cocoon-resources/blog-card-cache/fcb377fe4ba8d0213053e7f083f5568c.png" alt="" class="blogcard-thumb-image external-blogcard-thumb-image" width="320" height="180" /></figure><div class="blogcard-content external-blogcard-content"><div class="blogcard-title external-blogcard-title">【解説】フレームワークとライブラリの違い</div><div class="blogcard-snippet external-blogcard-snippet"></div></div><div class="blogcard-footer external-blogcard-footer cf"><div class="blogcard-site external-blogcard-site"><div class="blogcard-favicon external-blogcard-favicon"><img loading="lazy" decoding="async" src="https://www.google.com/s2/favicons?domain=https://zenn.dev/nameless_sn/articles/framework_and_library" alt="" class="blogcard-favicon-image external-blogcard-favicon-image" width="16" height="16" /></div><div class="blogcard-domain external-blogcard-domain">zenn.dev</div></div></div></div></a>



<p class="wp-block-paragraph">　簡単に言いますと<br>・フレームワーク：プログラムの基礎の構成が既にあり、それ単体でも実行できる。この上に自身の書いたプログラムを載せて拡張するといったイメージ。<br>・ライブラリ：便利な関数（プログラム）の集まり。上記と比べて自身の書いたプログラムに必要に応じて取り入れるといった感覚をイメージしてもらえるといいと思います。<br>と頭の片隅においてもらえたらと思います。</p>



<h3 class="wp-block-heading"><span id="toc3">DXライブラリ</span></h3>



<p class="wp-block-paragraph">ホームページ<br><a rel="noopener" target="_blank" href="https://dxlib.xsrv.jp/">https://dxlib.xsrv.jp/</a>（”ダウンロードはこちら”のところから自分の環境に合わせてダウンロード）<br>リファレンス<br><a rel="noopener" target="_blank" href="https://dxlib.xsrv.jp/dxfunc.html#R1N1">https://dxlib.xsrv.jp/dxfunc.html#R1N1</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph"><strong>・特徴</strong><br>導入の方法が今回紹介する中で最も容易。<br>ー方法に関しては今回は説明しないので、他のサイトを参照してもらえればと。<br>関数ごとに用例やどういった処理をしているかの解説がリファレンスに乗っているので、初心者でも扱いやすいと思われる。<br>基本的には現在掲載しているリファレンスのページの関数のみでゲームの制作を行うことが出来る。<br>ー3D関係やLive2Dにも対応しており別ページに存在するが、それらは無理に使わずともよい（使ってもよい）。<br>・<strong>留意点</strong><br>初期化と終了処理が必須となる。<br>ーゲーム系のライブラリにはつきものだが、それぞれ一行で終わる為、容易。<br>リファレンスには掲載されていない隠し関数が存在する。<br>ー参照する際は実際のソースコードで。<br><br>以下に基本となるゲームループのコード</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="WinMain.cpp" data-lang="C++"><code>#include &quot;DXLib.h&quot;

//
// WinMain(). プログラム起動関数
//
int WINAPI WinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPSTR lpCmdLine,
	int nCmdShow
) {

    // ＤＸライブラリ初期化処理:DXライブラリの関数
    if( DxLib_Init() == -1 )
    {
         return -1;        // エラーが起きたら直ちに終了
    }

    Initialize(); // ゲーム全体の初期化処理

	// 1フレームループを組む ----------------------------------------------------------
	while (ProcessMessage() == 0)		// プログラムが終了するまでループ:DXライブラリの関数
	{
		Input(); // キーボードやパッドの入力処理
		Process(); // ゲームの計算処理（キャラがどれぐらい動いたなど）

		ClearDrawScreen();		// 画面を初期化する:DXライブラリの関数
		Render(); // 画面にキャラクターを描画
		ScreenFlip();			// 裏画面の内容を表画面に反映させる:DXライブラリの関数
	}

    // ＤＸライブラリ使用の終了処理:DXライブラリの関数
    DxLib_End() ;

	return 0;
}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc4">Siv3D</span></h3>



<p class="wp-block-paragraph">ホームページ兼リファレンス<br><a rel="noopener" target="_blank" href="https://siv3d.github.io/ja-jp/">https://siv3d.github.io/ja-jp/</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">・<strong>特徴</strong><br>よく使われる図形構造体（Rectなど）や標準ライブラリ（STL）のラッパークラスが存在し、それらを活用しやすいように整えられているフレームワーク。<br>導入した時点で初期化や終了処理を必要とせず、ファイルがインクルードされていれば各種クラス・関数を利用することが出来る。<br>現在でも開発者がSiv3Dに関する講演等を行っており、体験会なども開催されているので最寄りで開催されていた場合、参加するという手段もとれる。<br>・<strong>留意点</strong><br>既に自身で作ったプロジェクトが存在している場合、新たにSiv3Dテンプレートのプロジェクトを作り直して移植する必要がある？（自分は中途で導入するのを断念して作り直しました・・・。）<br>汎用的な命名が多いため、自身で作った関数等と命名がかぶることが往々にして発生する。<br>ーその場合はSiv3D側のネームスペース（s3d::○○）を明確に記述することで解決できる。<br>ラッパークラスも多いので本来の標準ライブラリに触れるところまでコードの内容を確かめて理解してみてほしい。<br>ー他のライブラリでは基本的にここまでラッパークラスが整備・活用されていることは多くないので、標準ライブラリを扱えるようにした方がいい気がする・・・。<br>リファレンスもまだ記述されていない項目が存在するので内部のコードをみて開発することも必要。<br><br>以下に基本となるゲームループのコード（公式サイトの例）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="main.cpp" data-lang="C++" data-show-lang="1"><code># include &lt;Siv3D.hpp&gt;

void Main()
{
	// 背景色を水色に設定する
	Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 });

	// 絵文字からテクスチャを作成する
	const Texture texture{ U&quot;&#x1f425;&quot;_emoji };

	// テクスチャを描く位置
	Vec2 pos{ 400, 300 };

	// メインループ
	while (System::Update())
	{
		// もし左クリックされたら
		if (MouseL.down())
		{
			// 描く位置を現時点でのマウスカーソルの位置に変更する
			pos = Cursor::Pos();
		}

		// テクスチャを描く
		texture.drawAt(pos);
　　　　
	}
}</code></pre></div>



<h3 class="wp-block-heading"><span id="toc5">SDL</span></h3>



<p class="wp-block-paragraph">ダウンロードページ（GitHub）<br><a rel="noopener" target="_blank" href="https://github.com/libsdl-org/SDL">https://github.com/libsdl-org/SDL</a><br>日本語リファレンス<br><a rel="noopener" target="_blank" href="https://maruhiro-ver0.github.io/sdl2manual-ja/">https://maruhiro-ver0.github.io/sdl2manual-ja/</a></p>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">・<strong>特徴</strong><br>クロスプラットフォームライブラリ<br>ー違うプラットフォーム（OS）でも動作する<br>海外で作成されたライブラリのため、ゲームの開発実績も相応に多い<br>ーそのため英語版のリファレンスが日本語より充実していると思われる<br>参考書籍も存在するのでその本に沿って学習すると吸収しやすいかも？<br>ー本項目の最後にAmazonのリンクを掲載<br>・<strong>留意点</strong><br>DXライブラリと同様に初期化と終了処理が必要となる<br>リファレンスの項目分けは初心者にとっては少し見づらいかもしれないです。<br>ー必要としている関数がどこにあるかわかりにくい<br><br>以下に基本となるゲームループのコード</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-file="main.cpp" data-lang="C++" data-show-lang="1"><code>void main()
{
 SDL_Window* gWindow; // ゲームのウィンドウ 
 bool gIsRunning = true; // ゲームを起動し続けてよいか

/////必須の初期化作業（初期化内容は必要に応じて）//
 if(SDL_Init(SDL_INIT_VIDEO) != 0){
   gIsRunning = false;
 }

 gWindow = SDL_CreateWindow(
  &quot;Game_test&quot;,　// ウィンドウのタイトル
  0,            // ウィンドウ左上隅のx座標
  0,            // ウィンドウ左上隅のy座標
  1920,         // ウィンドウの幅（Width）
  1080,         // ウィンドウの高さ（height）
  0             // フラグ（設定しない時は0） 
 );

 if(!gWindow){// もしウィンドウが作成されなかったら
   gIsRunning = false; 
 }
//////////////////////////////////////////////

 while(gIsRunning){
 // これまでと同様の入力、処理、描画のゲームループ 
   Input();
   Process();
   Render();
 }

/////必須の終了処理/////////////////////////////
 SDL_DestroyWindow(gWindow);
 SDL_Quit();
//////////////////////////////////////////////
}</code></pre></div>



<p class="is-style-bottom-margin-0em has-bottom-margin wp-block-paragraph">参考書籍</p>



<figure class="wp-block-embed is-type-rich is-provider-amazon wp-block-embed-amazon"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="ゲームプログラミングC++" type="text/html" width="1256" height="550" frameborder="0" allowfullscreen style="max-width:100%" src="https://read.amazon.com.au/kp/card?preview=inline&#038;linkCode=kpd&#038;ref_=k4w_oembed_keQcJIcYE1j1mM&#038;asin=4798157619&#038;tag=kpembed-20"></iframe>
</div></figure>



<h3 class="wp-block-heading"><span id="toc6">最後に</span></h3>



<p class="wp-block-paragraph">　ここまで紹介してきましたが、上記のいずれかを”<strong>絶対にマスターしろというわけではない</strong>”ということは言っておきますね。最初にも言いましたが、昨今は便利なゲームエンジンの台頭もあり、そちらの方が慣れれば開発効率は上だと思います。ただ内側を知っているか、自分で書けるか、で作れるものの幅は大きく変わると思います。上記を使ってゲームをつくる中で色々調べることが多くあると思います。それらを調べて自分の内に貯めていくことで、つくるゲームの世界がより広がるんじゃないかなと思います。<br>これを使った方がいいというゲームの作り方の定石はあるかもしれませんが、どの道具・方法を使えというのは決まっていません。上記でも十分、ゲームの発想とコードを書く力次第で面白いゲームは作れますので、めげずに頑張りましょう！（僕も頑張ります・・・。面白いゲームつくったら共有してね・・・。）</p>



<p class="wp-block-paragraph">最後に今回の話題とは無関係ですが、推しの作家さんの本を載せておきますね。（キャラの造形とか作者さんが書くキャラが好き・・・。）</p>



<p class="has-text-align-center wp-block-paragraph"><a rel="sponsored noopener" target="_blank" href="https://dlaf.jp/comic/dlaf/=/t/i/link/work/aid/kineki01/id/BJ183060.html"><img decoding="async" itemprop="image" src="//img.dlsite.jp/modpub/images2/work/books/BJ184000/BJ183060_img_main.jpg" alt="" border="0" class="target_type" /></a></p>


<ol class="wp-block-footnotes"><li id="67cf400a-be0d-462b-83da-09256e73d90f">初心者向けだったら、導入方法とかもっと懇切丁寧に解説したほうが良いよなぁと思いつつ・・・わからないところがあったらSNSなどでここ分からなかったを言ってください。頑張れれば答えたり記事にします・・・ごめんなさい <a href="#67cf400a-be0d-462b-83da-09256e73d90f-link" aria-label="脚注参照1にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>VisualStudioで文字コードに２,３日翻弄された話+その解決策</title>
		<link>https://gamekineki.com/post-415/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Sat, 18 Jan 2025 16:23:46 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[備忘録]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[問題解決]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=415</guid>

					<description><![CDATA[　どうも、皆様お疲れ様です。今回もプログラムに関連しての備忘録。（ゲームもしたい・・・A列車続きしたい・・・）自分が詰まったところは誰かが詰まることもあるはずということで、VisualStudioの文字コードに翻弄され続 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">　どうも、皆様お疲れ様です。<br>今回もプログラムに関連しての備忘録。（ゲームもしたい・・・A列車続きしたい・・・）<br>自分が詰まったところは誰かが詰まることもあるはずということで、VisualStudioの文字コードに翻弄され続けた末の解決策の話。<br>では本題へ。</p>



<h3 class="wp-block-heading"><span id="toc1">どのような状況だったのか。</span></h3>



<p class="wp-block-paragraph">　まず今現在自分の状況から書いていきます。<br>IDE（統合開発環境）としてVisualStudioを用いてC/C++で自身の趣味を含んだ開発を行っております。スキル・技術としては正直3流以下で、ChatGPTの助けを借りながら理想に向けて邁進しておりまます・・・！<br>そんな中で恒久的にデータを保持する手段としてSQLデータベースの利用をしようと、検討の結果思い立ったのですが、そこが地獄の始まりでした・・・。</p>



<h3 class="wp-block-heading"><span id="toc2">SQLiteを使用して導入するまでは順調だったが・・・。</span></h3>



<p class="wp-block-paragraph">　このSQLデータベースをどういう風な意図で利用しようか<sup data-fn="e76438b3-fe4d-4af2-94cf-370776ea7c6c" class="fn"><a href="#e76438b3-fe4d-4af2-94cf-370776ea7c6c" id="e76438b3-fe4d-4af2-94cf-370776ea7c6c-link">1</a></sup>というと、”SQL文というコマンドによってデータベースを操作して<strong>データベースへのアクセスを一意なものにしちゃおう</strong>”ということと”自身でガバガバなデータ管理クラスをつくって<strong>無駄なデバッグに労力を割くのをやめよう</strong>”ということを考えたわけですね。あまりピンと来てない人向けに言いますと、Excelのような表形式にできる情報<sup data-fn="e3585179-bd28-4eb2-84b5-99da0ea3362c" class="fn"><a href="#e3585179-bd28-4eb2-84b5-99da0ea3362c" id="e3585179-bd28-4eb2-84b5-99da0ea3362c-link">2</a></sup>をデータベースで管理しようということです。<br>ライブラリはsqlite3と呼ばれるライブラリを導入しました。<br>他のSQLライブラリと比べてサーバーをつくらずとも、ローカルで完結して軽量なため、小規模でもし行くところまで行ったとしても中規模が限界な自分のプロジェクトにはぴったりな選択だったと思います。<br><br>SQL自体はそこかしこで使われるようなメジャーなデータベース言語だったので、文献も豊富ですし、GPTの回答も解決策となるようなものも多く実装は順調でした。そんな中で問題が出てきます。<br>それはINSERTで”<strong>文字列</strong>”として挿入したはずの要素がBLOB型（バイナリ）として保存されていたということです。（下記はsqlite3の関数ではなくSQL文での表記）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL" data-show-lang="1"><code>INSERT INTO NounDictionary (Name, Language, PartOfSpeech, Synonyms, Antonyms, RelatedNouns, Reference, Attributes, Description, IsTopicVisible)
VALUES (&#39;犬&#39;, &#39;ja&#39;, &#39;名詞&#39;, &#39;ワンコ,ドッグ&#39;, &#39;猫&#39;, &#39;猫&#39;, &#39;res/images/dog.png&#39;, &#39;{&quot;type&quot;: &quot;名詞&quot;, &quot;category&quot;: &quot;動物&quot;, &quot;traits&quot;: [&quot;忠実&quot;, &quot;可愛い&quot;]}&#39;, &#39;犬科の哺乳類。&#39;, 1);</code></pre></div>



<p class="wp-block-paragraph">上記のようなコードにおいて日本語部分のみ挿入前の形を保てませんでした。これを直そうと思って四苦八苦・・・。解決まで2,3日かけてしまいました。（会社だったらクビですね）</p>



<h3 class="wp-block-heading"><span id="toc3">結末は単純なことで解決へと・・・。</span></h3>



<p class="wp-block-paragraph">　そんなこんなでモチベーションも下がりつつあったのですが、ChatGPTの回答に文字コードが悪いんじゃないかという話がちらほら。それらの修正は効果がなかったのですが、そういえばとVisualStudioの標準の日本語文字の文字コードってなんかいろいろ引っかかるみたいな話何だっけ・・・、という朧げな記憶を引っ張りだしたどり着きました。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-cpp" data-lang="C++" data-show-lang="1"><code>    std::map&lt;std::string, std::string&gt; newElement = {
       {u8&quot;Name&quot;, u8&quot;犬&quot;},
       {u8&quot;Language&quot;, u8&quot;ja&quot;},
       {u8&quot;PartOfSpeech&quot;, u8&quot;名詞&quot;},
       {u8&quot;Synonyms&quot;, u8&quot;ワンコ,ドッグ&quot;},
       {u8&quot;Antonyms&quot;, u8&quot;猫&quot;},
       {u8&quot;RelatedNouns&quot;, u8&quot;猫&quot;},
       {u8&quot;Reference&quot;, u8&quot;res/images/dog.png&quot;},
       {u8&quot;Attributes&quot;, u8R&quot;({&quot;type&quot;: &quot;名詞&quot;, &quot;category&quot;: &quot;動物&quot;, &quot;traits&quot;: [&quot;忠実&quot;, &quot;可愛い&quot;]})&quot;},
       {u8&quot;Description&quot;, u8&quot;犬科の哺乳類。&quot;},
       {u8&quot;IsTopicVisible&quot;, u8&quot;1&quot;}
    };</code></pre></div>



<p class="wp-block-paragraph">　上記のような挿入する要素をu8のプレフィックスを接頭に付けて<sup data-fn="ac353f82-8f52-4051-af33-48600a2ff66d" class="fn"><a href="#ac353f82-8f52-4051-af33-48600a2ff66d" id="ac353f82-8f52-4051-af33-48600a2ff66d-link">3</a></sup>文字列の扱いを”UTF-8”にすることで、INSERTで挿入しても要素の名前がBLOB型にされることがなくなりました。<br>結論としてはVisualStudioで標準で扱う文字コードが”Shift-JIS”、SQLデータベースで扱う文字コードが”UTF-8”というだけの話だったんですね・・・。SQLはそりゃそうだって話だったんですけど、VisualStudioが標準そっちだったかというのは完全に抜けていましたね・・・。<br>そんなこんなでようやく迷宮から抜けられそうなのでここから開発を加速させたいですね・・・！</p>



<p class="wp-block-paragraph">またプロジェクトやファイルごとに扱う文字コードをUTF-8に変更する方法もありますが、検索した時にたくさん見たのでたぶん自分が書くよりも詳細な説明が載っているでしょう。もしくはChatGPTに聞いてもいいと思います！<br>余談ですが最近のChatGPT、プロジェクトでやりやすくなりましたよね。・・・ファイル読み込みや古いファイルの参照に弱いのはあいも変わらずですが・・・。</p>



<h3 class="wp-block-heading"><span id="toc4">自分が使っているSQL関連のあれこれについて（2つだけですが・・・）</span></h3>



<p class="wp-block-paragraph">　では最後に今自分が使っているSQL関連の便利なあれこれを２つだけ紹介して終わります。</p>



<p class="wp-block-paragraph">一つ目はVisualStudioに導入して使っているSQLite。<br><a rel="noopener" target="_blank" href="https://www.sqlite.org/download.html">https://www.sqlite.org/download.html</a>（自分は<a rel="noopener" target="_blank" href="https://www.sqlite.org/2025/sqlite-amalgamation-3480000.zip">sqlite-amalgamation-3480000.zip</a>をつかっています。目的ごとに違うので気になる人は調べてみてください。）<br>C++のコードでSQLを簡易に使えるのでSQLデータベース初心者におススメです。<br>前述の通り、オフラインでローカルのデータベースとして扱えるので小規模の開発に向いています。<br>逆にオンラインで多数からの接続を想定している場合には他のSQLライブラリの方が向いているかも・・・？<br>もう一つはDBファイルの中身を見れるDB Browser for SQLiteです。<br><a rel="noopener" target="_blank" href="https://sqlitebrowser.org/">https://sqlitebrowser.org/</a><br>ローカルにデータベースファイルが生成されるSQLiteではDBファイルを見ることが出来ます。<br>これを用いることでデバッグや開発がはかどります！<br>また開いたデータベースファイルに対してSQL文の直接実行もできたりするので、そこもいいですね。<br>ということでこれを新たな備忘録としたいと思います。<br>また見に来ていただけたら嬉しいです。それでは。</p>


<ol class="wp-block-footnotes"><li id="e76438b3-fe4d-4af2-94cf-370776ea7c6c">SQLがどういうものかというものを断言してしまうと、いろいろと語弊を生んでしまうので今回は自分が使うに至った理由を書いています。 <a href="#e76438b3-fe4d-4af2-94cf-370776ea7c6c-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="e3585179-bd28-4eb2-84b5-99da0ea3362c">ExcelのようなGUI（グラフィックで操作する）ではなく、CUI（コンソールでコマンドで操作）なので慣れるまで時間が必要でした・・・。 <a href="#e3585179-bd28-4eb2-84b5-99da0ea3362c-link" aria-label="脚注参照2にジャンプ">↩︎</a></li><li id="ac353f82-8f52-4051-af33-48600a2ff66d">応急処置的な扱いの方がいいのかな・・・とか、思ったり思わなかったり。<br>でもファイルやソリューション単位で変更すると今までのコードでエラーを起こすので不用意に全部統一するのはご法度ですわね・・・。 <a href="#ac353f82-8f52-4051-af33-48600a2ff66d-link" aria-label="脚注参照3にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>stdio.hってなんのことっていう気持ちだったころの話</title>
		<link>https://gamekineki.com/post-412/</link>
		
		<dc:creator><![CDATA[キネキ]]></dc:creator>
		<pubDate>Tue, 14 Jan 2025 10:58:32 +0000</pubDate>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[初心者]]></category>
		<category><![CDATA[素朴な疑問]]></category>
		<category><![CDATA[C++]]></category>
		<guid isPermaLink="false">https://gamekineki.com/?p=412</guid>

					<description><![CDATA[みなさま、遅ればせながら新年あけましておめでとうございます。ただでさえ更新頻度の少ない当ブログ・・・新年一回目はプログラミングに関してです。とはいえ私もすさまじく詳しいというわけではなく、ChatGPTによる出力を主とし [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">みなさま、遅ればせながら新年あけましておめでとうございます。<br>ただでさえ更新頻度の少ない当ブログ・・・新年一回目はプログラミングに関してです。<br>とはいえ私もすさまじく詳しいというわけではなく、ChatGPTによる出力を主としてその他のリファレンスを参照してのお話となります。詳しいリファレンスなどを読むときの抵抗を少しでも軽減できればいいなと思います。</p>



<p class="wp-block-paragraph">では本題へ・・・。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-20" checked><label class="toc-title" for="toc-checkbox-20">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">stdio.hとは何ぞや？</a><ol><li><a href="#toc2" tabindex="0">最初に抱くであろう疑問</a></li><li><a href="#toc3" tabindex="0">stdio.hについて（本編）</a></li><li><a href="#toc4" tabindex="0">終わりに</a></li></ol></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">stdio.hとは何ぞや？</span></h2>



<h3 class="wp-block-heading"><span id="toc2">最初に抱くであろう疑問</span></h3>



<p class="wp-block-paragraph">　プログラミング言語を触る中で比較的ライトな層には最近Pythonが主流であるとは感じていますが、それでも少し深堀してもう少し低レベルな言語<sup data-fn="3444f7a6-3428-40d2-b73c-99a51a0d228c" class="fn"><a href="#3444f7a6-3428-40d2-b73c-99a51a0d228c" id="3444f7a6-3428-40d2-b73c-99a51a0d228c-link">1</a></sup>を学ぶ時の主流としてはやはりC言語系統（C++やC＃を含む）になってくるんじゃないかなと思います。<br>そんな中でプログラミング初心者が最初に触れるであろうHelloWorldの文字列出力がありますよね。その中で一番上に＜stdio.h＞が見えていると思います。形式的にそうなんだろう<sup data-fn="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4" class="fn"><a href="#6b7b3791-5ae8-4ba9-98b0-ba02d27142b4" id="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4-link">2</a></sup>と、ひとまず書かれたこのヘッダーファイルについて何も知らないままを今回で卒業しましょう！</p>



<h3 class="wp-block-heading"><span id="toc3">stdio.hについて（本編）</span></h3>



<p class="wp-block-paragraph">　<code>&lt;stdio.h></code> は、C言語で標準入出力を扱うためのヘッダーファイルです。名前の由来としては&#8221;standard input output&#8221;の略です。読んで字のごとくというわけですね。（自分はいろいろ理解するまで字面が似ていたVisualStudioの何かの関連なのかと思っていました・・・。）<br>このヘッダーファイルには、ファイルやコンソールを使ったデータの入出力を行うための関数が定義されています。</p>



<h4 class="wp-block-heading">主な特徴と役割</h4>



<p class="wp-block-paragraph">主な役割としては以下。</p>



<ul class="wp-block-list">
<li>標準入出力機能を提供する。</li>



<li>C言語の基本機能であり、ほぼすべてのCプログラムで使用されます。</li>



<li><strong>Standard Input（標準入力）</strong>: 通常はキーボードからの入力を指します（例: <code>scanf</code> でユーザーからの入力を受け取る）。</li>



<li><strong>Standard Output（標準出力）</strong>: 通常はコンソールへの出力を指します（例: <code>printf</code> で文字や数値を表示する）。</li>



<li><strong>Standard Error（標準エラー出力）</strong>: エラー情報を表示する出力先。通常コンソールにエラーメッセージを出力します（例: <code>perror</code>）。</li>
</ul>



<p class="wp-block-paragraph">printf（）＝画面への文字列出力の関数も当然ながらこの中に含まれているので、これを最初にincludeする必要があったんですね・・・！</p>



<h4 class="wp-block-heading">主な関数</h4>



<p class="wp-block-paragraph">以下に、<code>&lt;stdio.h></code> に含まれる代表的な関数について概要だけ示しておきます。</p>



<h5 class="wp-block-heading">コンソール入出力</h5>



<ol class="wp-block-list">
<li><strong><code>printf</code></strong>
<ul class="wp-block-list">
<li>画面に文字列や数値を表示します。</li>



<li>使用例:<br><code>printf("Hello, World!\n");</code></li>
</ul>
</li>



<li><strong><code>scanf</code></strong>
<ul class="wp-block-list">
<li>ユーザーから入力を受け取ります。</li>



<li>使用例:<br><code>int x; </code><br><code>scanf("%d", &amp;x);</code></li>
</ul>
</li>
</ol>



<h5 class="wp-block-heading">ファイル操作</h5>



<ol class="wp-block-list">
<li><strong><code>fopen</code> / <code>fclose</code></strong>
<ul class="wp-block-list">
<li>ファイルを開いたり閉じたりします。</li>



<li>使用例:<br><code>FILE *fp = fopen("example.txt", "r"); </code><br><code>fclose(fp);</code></li>
</ul>
</li>



<li><strong><code>fread</code> / <code>fwrite</code></strong>
<ul class="wp-block-list">
<li>ファイルからのデータ読み書きを行います。</li>
</ul>
</li>



<li><strong><code>fprintf</code> / <code>fscanf</code></strong>
<ul class="wp-block-list">
<li>ファイルに対して書き込みや読み取りを行います。</li>
</ul>
</li>



<li><strong><code>fseek</code> / <code>ftell</code></strong>
<ul class="wp-block-list">
<li>ファイル内の位置を操作します。</li>
</ul>
</li>
</ol>



<h5 class="wp-block-heading">その他のユーティリティ</h5>



<ol class="wp-block-list">
<li><strong><code>gets</code> / <code>puts</code></strong>
<ul class="wp-block-list">
<li>文字列の入力や出力を行います。（<code>gets</code>は非推奨）</li>
</ul>
</li>



<li><strong><code>perror</code></strong>
<ul class="wp-block-list">
<li>エラーをコンソールに表示します。</li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">重要な構造体</h4>



<ul class="wp-block-list">
<li><strong><code>FILE</code></strong>
<ul class="wp-block-list">
<li>ファイルを操作する際に使用する構造体で、<code>fopen</code> などの関数によって管理されます。</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><span id="toc4">終わりに</span></h3>



<p class="wp-block-paragraph">　本当に何も知らずに使う状態から脱出してほしい、難しいリファレンスを読むことへの足掛かりになってほしい、そんな思いがあり今回の記事を書きました。今後もプログラミングをしている中で自分が”引っかかったこと”、素朴な疑問を記事にして、今回のような備忘録という名の肥やしも当ブログで増やしていきたいと思います。</p>


<ol class="wp-block-footnotes"><li id="3444f7a6-3428-40d2-b73c-99a51a0d228c">今回のことで言えば、Pythonより低レベルの階層（ポインタ操作等）にアクセスできる言語という意味 <a href="#3444f7a6-3428-40d2-b73c-99a51a0d228c-link" aria-label="脚注参照1にジャンプ">↩︎</a></li><li id="6b7b3791-5ae8-4ba9-98b0-ba02d27142b4">実際、この部分の中身を始めたてで十全に理解するのは難しいので知らないことを減らして知識を増やしてゆくことが大事。 <a href="#6b7b3791-5ae8-4ba9-98b0-ba02d27142b4-link" aria-label="脚注参照2にジャンプ">↩︎</a></li></ol>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
