-
MySQLテーブル設計の基本!phpMyAdminで最初のテーブルを作成しよう
データベースを作成しただけでは、まだデータを保存することはできません。データベースという大きな「ファイルキャビネット」の中に、具体的な情報を整理して入れるための「仕切り付きの棚」、すなわち「テーブル」を作成する必要があります。 このテーブ... -
PHPとデータベース連携入門!phpMyAdminで最初のMySQLデータベースを作ろう
ブログの投稿、ECサイトの商品情報、SNSのユーザーアカウントなど、多くのWebサイトは大量の情報を「記憶」しています。PHPプログラムで単にデータを画面に表示するだけでは、その情報は一時的なもので、すぐに消えてしまいます。 この「記憶」の役割を担... -
PHPでtextareaの改行を反映!nl2br()とhtmlspecialchars()の正しい使い方
お問い合わせフォームの「詳細内容」や、SNSの投稿文など、ユーザーが複数行にわたる文章を入力する場面では<textarea>タグが使われます。しかし、フォームから送信されたテキストをそのままPHPで表示させると、せっかくの改行がすべて無視され、読... -
PHPで入力値をチェック!is_numeric()とnumber_format()の使い方
Webフォームで「予算」や「金額」といった数字を入力してもらう場面は非常に多いですが、ユーザーは時に数字以外の文字(例:「1000円」や「abc」)を入力してしまう可能性があります。 もしプログラム側で「これは数字である」と決めつけて処理を進め... -
PHPの条件分岐「if文」をマスター!入力値を分かりやすく表示する方法
Webフォームでは、ユーザーの選択を効率化するために、セレクトメニューやラジオボタンがよく使われます。このとき、プログラム側では「和食」や「洋食」といった文字列そのものではなく、「1」や「2」といった数値やコードでデータを受け取ることが一般的... -
PHPセキュリティの第一歩!htmlspecialcharsでXSS攻撃を防ごう
ユーザーが情報を投稿できるフォームやコメント欄は、Webサイトをインタラクティブにするための重要な機能です。しかし、ユーザーが入力した内容をそのまま画面に表示する処理には、深刻なセキュリティ上のリスクが潜んでいます。 今回は、すべてのPHP開発... -
PHPの基本!変数と配列を理解してデータを自在に操ろう
PHPプログラミングを学ぶ上で、誰もが最初にマスターすべき最も重要な概念が「変数」と「配列」です。 これらは、プログラムの中でさまざまな情報(数値、文字列など)を扱ったり、整理したりするための基本的な道具です。この仕組みを理解すれば、PHPでで... -
HTMLフォームからPHPへ!データの送受信の基本とセキュリティ対策を徹底解説
Webサイト制作において、ユーザーが入力した情報を受け取り、表示する「フォーム」機能は欠かせません。お問い合わせフォーム、会員登録、検索ボックスなど、あらゆる場面でこの技術が使われています。 この裏側では、ユーザーが操作するHTMLと、サーバー... -
PHPのバージョンは何を使ってる?PHP 5, 7, 8の進化と最新版を使うべき理由
PHPは、世界中の多くのWebサイトで利用されている人気のプログラミング言語ですが、定期的にバージョンアップを重ね、常に進化を続けていることをご存知でしょうか。 古いバージョンを使い続けることには、実は多くのリスクが潜んでいます。今回は、PHPが... -
PHPを動かそう!MAMPで簡単ローカル開発環境の作り方【Mac & Win対応】
HTMLやCSSの学習を終え、いよいよPHPを学ぼうとした時、多くの人が最初の壁にぶつかります。それは「実行環境の準備」です。 HTMLファイルはダブルクリックすればブラウザで表示できましたが、PHPはそれだけでは動きません。PHPは「サーバー」と呼ばれる特... -
HTMLとは?Webサイト制作の基本となる書き方と必須タグを解説
Webサイト制作の世界に足を踏み入れると、誰もが最初に出会うのが「HTML」です。プログラミングと聞くと難しそうに感じるかもしれませんが、HTMLは厳密にはプログラミング言語ではなく、比較的シンプルなルールで構成されています。 この記事では、「HTML... -
PHPとHTMLの違いとは?セットで使う理由を初心者向けに解説
Webサイト制作の学習を始めると、必ず出会うのが「HTML」と「PHP」です。 「どちらもWebページを作るものみたいだけど、何が違うの?」 「どうやって使い分けるの?」 このような疑問を感じる方も多いのではないでしょうか。 結論から言うと、HTMLとPHPは... -
【PHP】プログラミングの基本的な考え方とは?文系でも分かる3つのポイント
プログラミングと聞くと、「黒い画面に謎の英語がたくさん…」「理系の専門知識が必要そう…」といったイメージから、難しく感じてしまうかもしれません。 しかし、実はプログラミングの基本的な考え方は、私たちが日常生活で行っている判断や手順と非常によ... -
PHPとは?Web開発でできることを初心者向けにわかりやすく解説
Webサイト制作やプログラミングに興味を持ち始めると、「PHP」という言葉を耳にする機会が多いのではないでしょうか。 「WebサイトはHTMLで作るんじゃないの?」 「PHPを学ぶと何ができるようになるの?」 といった疑問をお持ちの方もいらっしゃるかもしれ... -
【C++】データ型の種類を徹底解説(基本型からポインタ、構造体まで)
はじめに C++プログラミングの根幹をなすのが「型」の概念です。全ての変数やオブジェクトは、必ず何らかの型を持ち、その型によって、どのような値を保持できるか、どのような操作が可能かが決まります。 この記事では、C++の型システムを構成する主要な... -
【C++】constとvolatileの使い分け | cv修飾子を徹底解説
はじめに C++で変数を宣言する際、int x; のように型を指定するだけでなく、const や volatile といった修飾子を付け加えることができます。これらは、その変数がどのように扱われるべきかをコンパイラとプログラマに伝えるための重要なキーワードです。 c... -
【C++】型の別名を付けるtypedefとusingの違いと使い方
はじめに C++で、unsigned long long や関数ポインタ void (*)(int) のように、型名が長くて複雑になることがあります。このような型を何度も記述するのは、コードを読みにくくし、typoの原因にもなります。 この問題を解決するのが「型の別名宣言(タイプ... -
【C++】autoとdecltype | 型の自動推論と取得の方法を解説
はじめに C++で、std::vector<std::string>::iterator のように、非常に長くて複雑な型名を手で書くのは、面倒で、typoの原因にもなります。 C++11では、このような問題を解決し、コードをより簡潔で読みやすくするために、型の自動推論の仕組みが導... -
【C++17】構造化束縛の使い方 | pair, tuple, structを分解して受け取る方法
はじめに C++で、std::pairやstd::tupleを返す関数を扱う際、従来はその戻り値を一度変数に受け取り、.firstやget<0>を使って個々の要素にアクセスする必要があり、少し冗長でした。 C++17で導入された構造化束縛は、この問題をエレガントに解決しま... -
【C++】4種類のキャストを徹底解説 (static_cast, dynamic_cast 等)
はじめに C++には、intからdoubleへ、あるいは親クラスのポインタから子クラスのポインタへ、といった**明示的な型変換(キャスト)**を行うための、4つの異なるキャスト演算子が用意されています。これらは、古いC言語スタイルのキャスト (type)value よ... -
【C++】newとdeleteによる動的なメモリ確保・解放を徹底解説
はじめに C++では、通常の変数は宣言されたスコープを抜けると自動的に破棄されます。しかし、プログラムの実行時まで必要なサイズが分からない配列や、関数のスコープを超えて存在し続けるオブジェクトを扱いたい場合、ヒープと呼ばれる特別なメモリ領域... -
【C++】sizeof, alignof等 | 型のサイズとアライメントを扱う方法
はじめに C++でパフォーマンスを意識したプログラミングや、ハードウェアに近い低レベルなデータ操作を行う際、オブジェクトがメモリ上で「どれくらいの領域を占めるか(サイズ)」や、「どのようなアドレスに配置されるべきか(アライメント)」を正確に... -
【C++】右辺値参照とムーブセマンティクス入門 | 不要なコピーをなくし高速化
はじめに C++で、大量のデータを格納したvectorやstringを関数から返したり、別の変数に代入したりすると、内部のデータが全てコピーされ、大きなパフォーマンス上のオーバーヘッドが発生していました。 例えば、巨大なデータが入ったvectorを返す関数があ... -
【C++】リテラルとは?数値、文字、文字列などの定数の書き方を徹底解説
はじめに C++でプログラムを書く際、私たちは様々な「値」を直接コードに記述します。これらの、ソースコード上に直接表現される固定値のことをリテラルと呼びます。 C++には、扱うデータの種類に応じて、様々なリテラルの記述方法が用意されています。こ... -
【C++】文とは?if, for, whileなど主要な制御文をまとめて解説
はじめに C++のプログラムは、セミコロン(;)で終わる文(statement)を上から下へ順番に実行していくことで成り立っています。C++には、単純な計算を行う文から、条件によって処理の流れを変える(制御する)ための制御文まで、様々な種類の文があります... -
【C++】スコープとは?グローバル、名前空間、ローカルスコープの違いを解説
はじめに C++で変数を宣言する際、その「宣言された場所」によって、その変数がプログラムのどこから見えるかが決まります。この「名前が見える範囲」のことをスコープと呼びます。 スコープを正しく理解することは、意図しない変数の上書きを防ぎ、プログ... -
【第2部】 Listをそのまま使わない。「ファーストクラスコレクション」で実現する、安全で凝集度の高いコード設計
この記事は、保守性の高いコード設計シリーズの一部です。前回の記事「【第1部】 forループのネストから脱却しよう。Stream APIと早期リターンで実現する、読みやすいコレクション処理」では、ループ処理をクリーンにする方法を学びました。 こんにちは。... -
【第1部】 forループのネストから脱却しよう。Stream APIと早期リターンで実現する、読みやすいコレクション処理
この記事は、保守性の高いコード設計シリーズの一部です。これまでの記事では、条件分岐を整理するための様々なデザインパターンを解説しました。今回は、多くの条件分岐が潜む「コレクションのループ処理」に焦点を当て、ネストを解消し、可読性を高める... -
【第3部】 複雑な条件分岐を賢く解決。ポリモーフィズムで実現する柔軟なルールエンジン設計
この記事は、保守性の高いコード設計シリーズの一部です。これまでの記事で、ifのネストを解消する「ガード節」や、switchの重複をなくす「ストラテジーパターン」を学びました。今回は、さらに複雑な条件分岐をエレガントに解決するための応用的なデザイ... -
【第2部】 switch文の増殖はバグの温床。ストラテジーパターンで条件分岐を撲滅する
この記事は、保守性の高いコード設計シリーズの一部です。前回の記事「【第1部】 ifのネストはもうやめよう。ガード節で可読性を劇的に改善するテクニック」では、ガード節を使ってif文のネストを解消する方法を学びました。 こんにちは。条件分岐には、if...