投稿

7月, 2026の投稿を表示しています

#18 C#で学ぶ日付と時刻の扱いの基本

C#の日付操作は、`DateTime`という型を使い、分かりやすいメソッド名で操作できるのが特徴です。この記事では、C#における日付の基本的な扱い方と、実務でハマりやすいポイントを解説します。 DateTimeを使う DateTime now = DateTime.Now; Console.WriteLine(now); `DateTime.Now`は実行環境のローカル時刻を返します。サーバーとクライアントで環境が違うアプリでは、後述する`DateTimeOffset`や`DateTime.UtcNow`との使い分けが重要になります。 日付を文字列にする Console.WriteLine(now.ToString("yyyy年MM月dd日")); Console.WriteLine(now.ToString("HH:mm:ss")); `ToString`の引数に渡す書式指定子を変えることで、表示形式を自由にカスタマイズできます。`yyyy`は西暦4桁、`MM`は月(2桁)、`dd`は日(2桁)を表します。よく使う組み合わせは覚えておくと便利です。 文字列から日付に変換する 逆に、文字列を`DateTime`に変換したい場合は`DateTime.Parse`や`DateTime.TryParse`を使います。 string input = "2026-08-18"; if (DateTime.TryParse(input, out DateTime result)) { Console.WriteLine(result); } `Parse`は変換に失敗すると例外を投げますが、`TryParse`は失敗時に`false`を返すだけなので、ユーザー入力のように形式が保証されていない値を扱う場合は`TryParse`を使うのが安全です。 日付を計算する DateTime threeDaysLater = now.AddDays(3); DateTime lastMonth = now.AddMonths(-1); TimeSpan diff = threeDaysLater - now; `AddDays`や`AddMonths`は負の値を渡すことで過去方向への計算も...

#17 C++で学ぶモジュールとパッケージの基本

C++のファイル整理は、伝統的な「ヘッダーファイル」という仕組みに加え、比較的新しい「名前空間」も使われます。この記事では、C++におけるファイル分割の基本を解説します。 ヘッダーファイルと実装ファイル C++では、関数の宣言を`.h`ファイルに、中身を`.cpp`ファイルに分けて書くのが伝統的な方法です。 // utils.h void greet(std::string name); // main.cpp #include "utils.h" greet("太郎"); namespaceという仕組み C#と同じく、C++にも`namespace`という仕組みがあり、名前の衝突を防ぐために使われます。 namespace utils { void greet(std::string name) { ... } } utils::greet("太郎"); C++ならではの注意点 比較的新しいC++では「モジュール」という、ヘッダーファイルに代わる新しい仕組みも導入され始めていますが、まだ広く普及しているとは言えません。学習を始めたばかりの段階では、まずヘッダーファイルと`.cpp`ファイルを分ける伝統的な方法から慣れていくのがおすすめです。 まとめ C++のファイル分割はヘッダーファイルが伝統的な方法で、`namespace`で名前の衝突を防ぎます。新しい「モジュール」の存在も頭の片隅に置いておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#17 C#で学ぶモジュールとパッケージの基本

C#のファイル整理は「名前空間(namespace)」という仕組みで行います。この記事では、C#における名前空間の基本を解説します。 namespaceの宣言 namespace MyProject.Utils { public class Greeter { public static void Greet(string name) { Console.WriteLine($"こんにちは、{name}さん"); } } } 他の名前空間から使う using MyProject.Utils; Greeter.Greet("太郎"); C#ならではの注意点 C#の`namespace`は、Javaの`package`のようにフォルダ構造と厳密に一致させる必要はありません。とはいえ、多くのプロジェクトではフォルダ構造と名前空間を揃えるのが慣習になっており、Visual Studioも新しいファイルを作る際に自動でこの慣習に沿った名前空間を提案してくれます。 まとめ C#のファイル整理は`namespace`と`using`が基本です。フォルダ構造との対応は厳密ではありませんが、慣習として揃えるのが一般的です。 本ページはプロモーションを含みます。 参考書籍(PR) C#をもっと学びたい方には「 確かな力が身につくC#「超」入門 第2版 」がおすすめです。

#16 C++で学ぶ辞書型(マップ)の基本

C++で名前と値の組み合わせを扱うには、`std::map`という仕組みを使います。この記事では、C++における辞書に相当する使い方を解説します。 mapを作ってみる #include <map> std::map<std::string, int> scores; scores["太郎"] = 90; 値を取り出す 存在しないキーで直接アクセスすると、その型のデフォルト値が新しく作られてしまうことがあるため、`find()`を使って事前に確認するのが安全です。 auto it = scores.find("太郎"); if (it != scores.end()) { std::cout << it->second << std::endl; } 全てのキーと値を順に処理する for (const auto& pair : scores) { std::cout << pair.first << ": " << pair.second << std::endl; } C++ならではの注意点 `std::map`は、内部でキーが自動的に並べ替えられて管理されるという特徴があります。順序を気にしない場合は、`std::unordered_map`というより高速な仕組みを使う選択肢もあります。用途に応じて使い分けましょう。 まとめ C++の辞書は`std::map`が基本で、`find()`を使って安全にキーを確認します。順序が不要なら`unordered_map`も検討しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#16 C#で学ぶ辞書型(マップ)の基本

C#で名前と値の組み合わせを扱うには、`Dictionary`というクラスを使います。この記事では、C#における辞書の使い方を解説します。 Dictionaryを作ってみる var scores = new Dictionary<string, int>(); scores["太郎"] = 90; 値を取り出す 存在しないキーで直接アクセスすると例外が発生するため、`TryGetValue`という安全な取り出し方がよく使われます。 if (scores.TryGetValue("太郎", out int score)) { Console.WriteLine(score); } 全てのキーと値を順に処理する foreach (var pair in scores) { Console.WriteLine($"{pair.Key}: {pair.Value}"); } C#ならではの注意点 `TryGetValue`は、値の取得に成功したかどうかを`bool`で返しつつ、`out`というキーワードを使って結果を同時に受け取れる、C#らしい書き方です。最初は独特に感じるかもしれませんが、安全にキーの存在確認と値の取得を同時に行える便利な仕組みです。 まとめ C#の辞書は`Dictionary`が基本で、`TryGetValue`を使うと安全に値を取り出せます。積極的に活用しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C#をもっと学びたい方には「 確かな力が身につくC#「超」入門 第2版 」がおすすめです。

#6 Dartで学ぶループの基本

Dartのループは、C言語系の言語に共通する標準的な書き方が基本です。この記事では、Dartにおけるループの基本を解説します。 for文の基本 for (int i = 0; i for-in文でリストの中身を処理する リストの中身を1つずつ処理したい場合は、`for...in`を使います。 var fruits = ["りんご", "みかん", "ぶどう"]; for (var fruit in fruits) { print(fruit); } forEachメソッド Dartには、リストに対して直接`forEach`を呼び出す書き方もあります。 fruits.forEach((fruit) { print(fruit); }); while文 int count = 0; while (count Dartならではの注意点 Flutterでリスト表示の画面を作る際は、こうした基本的なループをそのまま使うのではなく、`ListView.builder`のような専用の仕組みを使うのが一般的です。基本のループはあくまで土台となる考え方として押さえておき、Flutter特有の書き方は別途学んでいくとよいでしょう。 まとめ Dartのループは`for`・`for...in`・`while`が基本で、`forEach`という書き方も使えます。Flutter開発ではさらに専用の仕組みも登場することを覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#5 Dartで学ぶ条件分岐の基本

Dartの条件分岐は、C言語系の言語に共通する標準的な書き方に加えて、null安全と組み合わせた便利な書き方が用意されています。この記事では、Dartにおける条件分岐の基本を解説します。 if文の基本 int age = 20; if (age >= 18) { print("成人です"); } else { print("未成年です"); } switch文 候補が多い場合は`switch`を使います。 switch (day) { case 1: print("月曜日"); break; default: print("その他"); } null安全と組み合わせた書き方 Dartには、値がnullでないことを確認しつつ処理を進める`if (value != null)`という書き方に加えて、`??`を使った簡潔な書き方もよく使われます。 String displayName = nickname ?? "名無しさん"; Dartならではの注意点 Dartのswitch文は、比較的新しいバージョンで「パターンマッチング」という、より柔軟な条件分岐の書き方が追加されています。学習を進める中で情報を調べる際は、参照している資料がどのバージョンのDartを前提にしているか、少し気にしておくとよいでしょう。 まとめ Dartの条件分岐は基本的な`if`・`switch`に加え、null安全を意識した`??`などの書き方が特徴です。Flutter開発でも頻繁に登場するので、慣れておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#4 Dartで学ぶ標準入力の基本

Dartにおける標準入力は、主にコマンドラインツールを作る際に使う機能です。この記事では、Dartで利用者からの入力を受け取る基本的な方法を解説します。 stdin.readLineSync()を使う Dartでは、`dart:io`というライブラリを読み込むことで、標準入力を扱えるようになります。 import 'dart:io'; print("名前を入力してください: "); String? name = stdin.readLineSync(); `readLineSync()`の結果は、Kotlinと同じように「値が入っていないかもしれない(null許容型)」として扱われます。 数値として受け取る 数値として使いたい場合は、`int.parse()`や、失敗してもエラーにならない`int.tryParse()`を使って変換します。 int age = int.tryParse(stdin.readLineSync() ?? "") ?? 0; 「入力がなければ空文字を使い、数値に変換できなければ0を使う」という安全な処理を1行で表しています。 Dartならではの注意点 Dartの標準入力はFlutterアプリの開発では基本的に使いません。Flutterでは、画面上のテキスト入力欄(ウィジェット)を通じて利用者からの入力を受け取ります。標準入力はあくまで、コマンドラインで動くDartプログラムを書く場合の機能だと理解しておきましょう。 まとめ Dartの標準入力は`stdin.readLineSync()`を使い、null許容型を意識しながら扱うのが基本です。Flutter開発とは別の文脈の機能であることも覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#3 Dartで学ぶ演算子の基本

Dartの演算子は、基本的な計算に加えて、null(値がない状態)を安全に扱うための演算子が充実しているのが特徴です。この記事では、Dartの基本的な演算子について解説します。 算術演算子・比較演算子 Dartでは、次のような演算子を使います。 + - * / % 算術演算子 == != > < 比較演算子 && || ! 論理演算子 整数同士の割り算で商だけを求めたい場合は、専用の`~/`という演算子を使います。 print(10 ~/ 3); // 3 Null対応の演算子 Dartには、null安全という仕組みに対応した便利な演算子が用意されています。 ?? 値がnullのとき、代わりの値を使う ??= 値がnullのときだけ、新しい値を代入する ?. 値がnullでなければ処理を続ける nickname ??= "名無しさん"; Dartならではの注意点 整数の割り算の商を求める`~/`という演算子は、他の言語ではあまり見かけない独特な記号です。普通の割り算`/`と混同しやすいので、「商が欲しいときは`~/`」と意識的に覚えておくとよいでしょう。 まとめ Dartの演算子は基本的な計算に加え、`~/`による商の計算と、`??`をはじめとしたnull安全のための演算子が特徴です。Flutter開発でも頻繁に登場するので、早いうちに慣れておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#2 Dartで学ぶ変数とデータ型の基本

Dartの変数には、`var`・`final`・`const`という3種類のキーワードがあります。この記事では、Dartにおける変数の作り方と、代表的なデータ型について解説します。 var・final・constの使い分け Dartでは、値を変更できる変数には`var`、後から変更できない変数には`final`または`const`を使います。 var age = 20; final name = "太郎"; `final`と`const`はどちらも「変更不可」を表しますが、`const`はプログラムを書いている時点で値が決まっている場合に、`final`は実行してみるまで値がわからない場合に使う、という違いがあります。 代表的なデータ型 Dartの基本的なデータ型には、次のようなものがあります。 整数(int) 浮動小数点数(double) 文字列(String) 真偽値(bool) Dartにも型推論があるため、`var`を使うだけで代入する値から型を自動的に判断してくれます。 null安全という仕組み 近年のDartには「null安全」という仕組みが導入されています。通常の型は「値が必ず入っている」ことが保証されており、値が入らない可能性を許したい場合は、型の後ろに「?」を付ける必要があります。 String? nickname; この仕組みにより、「値がないかもしれない」ことをうっかり見落とすミスを、実行前の段階で防げるようになっています。 Dartならではの注意点 DartはFlutterと組み合わせて使われることが多い言語ですが、変数やデータ型そのものの考え方は、Kotlinやモダンな言語と共通する部分が多くあります。他の言語の経験がある人ほど、スムーズに学習を進められるでしょう。 まとめ Dartの変数は`var`・`final`・`const`を使い分けるのが基本です。null安全という仕組みも合わせて理解しておくと、安全なコードが書けるようになります。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#1 Dartで学ぶ環境構築の基本

Dartは、Googleが開発した言語で、スマートフォンアプリ開発フレームワーク「Flutter」の登場によって一気に知名度が上がりました。この記事では、Dartを学ぶための環境構築を、実際につまずきやすいポイントやエラーメッセージへの対処法も含めて詳しく解説します。 Dart単体でのインストール Dartだけを学びたい場合は、公式サイト(dart.dev)からDart SDKをインストールします。Windowsならインストーラーやパッケージマネージャー(Chocolateyなど)、Macなら Homebrew を使う方法が一般的です。インストール後、次のコマンドでバージョンを確認しましょう。 dart --version ここで「Dart SDK version: 3.x.x」のような表示が出れば成功です。もし何も表示されずエラーになる場合は、次の「よくあるエラー」を確認してください。 よくあるエラーとその対処法 環境構築でつまずく人の多くは、SDK自体のインストールに失敗しているのではなく、「インストールはできているのに、ターミナルからコマンドが認識されない」という状態にはまっています。代表的な例を挙げます。 Windowsで「'dart' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」と出る これは、Dart SDKをインストールしたフォルダの中の bin ディレクトリ(例: C:\dart-sdk\bin )が、OSの「PATH」という設定に登録されていないために起きます。PATHとは、OSが「コマンドを打ったときにどのフォルダの中を探しにいくか」を記録したリストのようなものです。インストーラーによっては自動でPATHに追加してくれますが、手動で解凍しただけの場合は自分でPATHに追加する必要があります。追加後は、開いていたターミナル(コマンドプロンプトやPowerShell)を一度閉じて開き直すのがポイントです。開きっぱなしのターミナルには新しいPATH設定が反映されません。 MacやLinuxで「dart: command not found」と出る 理屈はWindowsと同じで、PATHが通っていない状態です。Homebrewでインストールした場合は...

#4 Goで学ぶ標準入力の基本

Goにおける標準入力の扱いは、シンプルさを重視するGoらしく、比較的わかりやすい書き方が用意されています。この記事では、Goで利用者からの入力を受け取る基本的な方法を解説します。 fmt.Scanを使う Goで標準入力を扱うもっとも手軽な方法は、`fmt`パッケージにある`Scan`という機能を使うことです。 var name string fmt.Print("名前を入力してください: ") fmt.Scan(&name) 読み込んだ内容を入れたい変数の前に`&`という記号を付けるのが特徴です。これは、値そのものではなく「変数の場所」を教えるための書き方です。 bufioを使ったもう1つの方法 `fmt.Scan`は単語の区切り(スペース)までしか読み取れないため、スペースを含む文章をまるごと受け取りたい場合は、`bufio`という別のパッケージを使う方法が一般的です。 数値として受け取る `fmt.Scan`は、変数の型に合わせて自動的に変換を試みてくれます。 var age int fmt.Scan(&age) ただし、数字ではない文字が入力された場合はエラーになるため、実際のプログラムではエラーの確認も合わせて行います。 Goならではの注意点 変数の前に付ける`&`という記号は、Goを学び始めたばかりの人にとって最初は意味がわかりにくいポイントです。これは「この変数の場所に、読み込んだ値を書き込んでください」とGoに伝えるための書き方だと理解しておくと納得しやすくなります。 まとめ Goの標準入力は`fmt.Scan`で手軽に扱えますが、スペースを含む入力には`bufio`を使う必要があります。`&`の意味を理解しておくと、エラーにも落ち着いて対応できます。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#7 Goで学ぶ配列の基本

Goには、複数の値をまとめて扱うためのデータ構造として、「配列」と「スライス」という2種類の仕組みがあります。この記事では、それぞれの違いと基本的な使い方を解説します。 配列(固定長) Goの配列は、大きさがあらかじめ決まっていて、後から変更できません。 var fruits [3]string = [3]string{"りんご", "みかん", "ぶどう"} スライス(可変長) 実際の開発では、大きさを自由に変えられる「スライス」を使うのが一般的です。 fruits := []string{"りんご", "みかん", "ぶどう"} fruits = append(fruits, "メロン") 配列の宣言と似ていますが、大きさの数字を書かない点が違いです。値を追加するには`append()`という関数を使います。 要素にアクセスする 配列・スライスどちらも、0から始まる添字でアクセスします。 fmt.Println(fruits[0]) Goならではの注意点 Goの`append()`は、Pythonの`append()`のように直接中身を追加するのではなく、「追加された新しいスライスを返す」という書き方をします。そのため、`fruits = append(fruits, "メロン")`のように、必ず結果を元の変数に代入し直す必要があります。この代入を忘れると、追加した値が反映されないので注意しましょう。 まとめ Goには固定長の「配列」と可変長の「スライス」があり、実用上はスライスを使う場面が多くなります。`append()`の結果を代入し直す、という書き方の癖を覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#6 Goで学ぶループの基本

Goのループには、他の言語のように複数の種類が存在せず、`for`だけですべての繰り返しを表現するという、シンプルな設計思想があります。この記事では、Goにおけるループの基本を解説します。 forだけですべて表現する Goには`while`という単語が存在せず、条件による繰り返しも`for`で書きます。 count := 0 for count C言語風の書き方も可能 もちろん、初期値・条件・更新をまとめて書く、なじみのある書き方もできます。 for i := 0; i rangeを使った繰り返し 配列やスライス(可変長のリストのようなもの)の中身を順番に処理したい場合は、`range`という書き方を使います。 fruits := []string{"りんご", "みかん", "ぶどう"} for i, fruit := range fruits { fmt.Println(i, fruit) } `range`は、位置(添字)と値の両方を同時に取り出せるのが特徴です。 Goならではの注意点 他の言語の経験がある人は、「whileはどこにあるのか」と探してしまいがちですが、Goでは条件だけを書いた`for`がその役割を兼ねています。「繰り返しはすべてfor」という考え方を最初に理解しておくと、混乱を避けられます。 まとめ Goのループは`for`ひとつに統一されています。書き方のバリエーション(条件のみ・3要素・range)を状況に応じて使い分けましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#5 Goで学ぶ条件分岐の基本

Goの条件分岐は、Rustと同じく、条件を囲むかっこが不要なすっきりとした書き方が特徴です。この記事では、Goにおける条件分岐の基本を解説します。 if文の基本 age := 20 if age >= 18 { fmt.Println("成人です") } else { fmt.Println("未成年です") } 条件をかっこで囲む必要がなく、すっきりとした見た目になります。 if文の中で変数を作る Goには、if文の条件を書く前に、その場限りの変数を用意できるという独自の書き方があります。 if age := 20; age >= 18 { fmt.Println("成人です") } この`age`という変数は、このif文(とelseブロック)の中だけで使える一時的な変数になります。エラーの確認処理などで、このパターンがよく使われます。 Goならではの注意点 Goでは、if文の条件も必ず真偽値(bool型)である必要があります。他の言語で見られるような「0や空文字を条件として扱う」書き方はできません。また、`elif`という単語は存在せず、`else if`と2単語で書く点も、他の言語との違いとして覚えておきましょう。 まとめ Goの条件分岐はかっこ不要のすっきりした書き方が特徴で、if文の中で一時的な変数を用意できる独自の仕組みも持っています。`else if`という書き方の違いにも注意しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#3 Goで学ぶ演算子の基本

Goの演算子は、シンプルさを重視するGoらしく、余計な機能を持たないすっきりとした設計になっています。この記事では、Goの基本的な演算子について解説します。 算術演算子・比較演算子 Goでも、なじみのある演算子を使います。 + - * / % 算術演算子 == != > < 比較演算子 && || ! 論理演算子 異なる型同士は計算できない Goでは、Rustと同様に型の扱いが厳格です。整数型と浮動小数点型の変数を、そのまま計算しようとするとエラーになります。計算したい場合は、明示的に型を変換する必要があります。 var a int = 5 var b float64 = 2.5 result := float64(a) + b インクリメント演算子の制限 多くの言語には、値を1増やす`i++`という書き方がありますが、Goにも同様の書き方があります。ただし、Goの`i++`は「文」として扱われ、他の言語のように`x = i++`のような形で式の中に組み込むことはできません。必ず単独の行として書く必要があります。 Goならではの注意点 Goは言語仕様をシンプルに保つという方針のもと、他の言語にある複雑な演算子の使い方(例えば三項演算子など)をあえて採用していません。慣れた言語に三項演算子がある人ほど「Goには無いのか」と驚くことがありますが、これはコードの読みやすさを優先したGoの設計思想によるものです。 まとめ Goの演算子は基本的なものに絞られており、シンプルさを重視した設計になっています。型の厳格さと`i++`の制限を押さえておけば、大きくつまずくことはないでしょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#2 Goで学ぶ変数とデータ型の基本

Goの変数の作り方には、書き方が2種類あるという特徴があります。この記事では、Goにおける変数の作り方と、代表的なデータ型について解説します。 varを使った書き方 1つ目は、`var`というキーワードを使う書き方です。 var age int = 20 変数名、型、値の順に書きます。型を省略して、値から自動的に判断させることもできます。 var age = 20 :=を使った書き方 2つ目は、`:=`という記号を使う、より簡潔な書き方です。 age := 20 `var`とは書かずに、いきなり変数名と値を`:=`でつなぎます。関数の中で手軽に変数を作りたいときによく使われる書き方です。 代表的なデータ型 Goの基本的なデータ型には、次のようなものがあります。 整数(int) 浮動小数点数(float64) 文字列(string) 真偽値(bool) 「ゼロ値」という考え方 Goには「ゼロ値」という独特の仕組みがあります。これは、変数を値なしで宣言した場合に、型に応じた初期値が自動的に入るというものです。例えば整数型なら0、文字列型なら空文字、真偽値型ならfalseが自動で入ります。 var count int // countには自動的に0が入る 「変数が初期化されていない」という状態が存在しないため、意図しない不具合を防ぎやすくなっています。 Goならではの注意点 Goでは、宣言したのに一度も使っていない変数があると、実行前の段階でエラーになります。他の言語ではただの警告で済むことが多いため、Goを学び始めた人が最初に戸惑いやすいポイントです。使わない変数はきちんと削除する癖をつけましょう。 まとめ Goの変数は`var`と`:=`という2つの書き方があり、関数の中では`:=`が好まれる傾向にあります。「ゼロ値」という仕組みと、未使用変数を許さない厳格さが、Goらしい特徴と言えるでしょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#1 Goで学ぶ環境構築の基本

Go(Golang)は、Googleが開発したシンプルさと実行速度を両立した言語です。文法が読みやすく整理されているため、学習の最初でつまずきにくい言語のひとつと言われています。とはいえ、実際に手を動かしてみると「コマンドが見つからない」「go.modってどこに置くの?」といった小さなつまずきは誰にでも起こります。この記事では、Goの環境構築の手順に加えて、実際によく遭遇するエラーとその対処法、初心者が疑問に思いやすいポイントまで、少し踏み込んで紹介します。 Goのインストール 公式サイト(go.dev)からインストーラーをダウンロードして実行するだけで、環境構築が完了します。インストール後、ターミナルで次のコマンドを実行し、正しく入っているか確認しましょう。 go version ここでバージョン番号(例: go version go1.22.0 windows/amd64 )が表示されれば成功です。もし何も表示されずエラーになった場合は、次の「よくあるエラー」で原因を確認してみてください。 プロジェクトを作って実行する Goでは、プロジェクトごとに`go.mod`という管理ファイルを作るのが基本です。フォルダを作成したら、その中で次のコマンドを実行します。 go mod init サンプル あとは`.go`という拡張子のファイルにコードを書き、次のコマンドで実行するだけです。 go run ファイル名.go コンパイルして実行ファイルを作る `go run`はその場で実行するコマンドですが、配布用の実行ファイルを作りたい場合は次のコマンドを使います。 go build ファイル名.go 実行するたびにコンパイルし直す必要がなく、生成されたファイルをそのまま他のパソコンでも動かせるのがGoの強みです。 実際によく出会うエラーと対処法 ここからは、Go初心者が実際の画面でよく目にするエラーメッセージを取り上げます。エラー文をそのまま検索窓に貼り付けて調べる癖をつけると、原因の切り分けが早くなります。 「go: command not found」「'go' は、内部コマンドまたは外部コマンド...」 インストール自体は成功しているのに、ターミナルを開き直すと`go`コマンドが反応しないことがあります。これは...

#7 Javaで学ぶ配列の基本

Javaには、複数の値をまとめて扱うデータ構造として、「配列」と「ArrayList」という2種類の仕組みがあります。この記事では、それぞれの違いと基本的な使い方を解説します。 配列(固定長) Javaの配列は、大きさがあらかじめ決まっていて、後から変更できません。 String[] fruits = {"りんご", "みかん", "ぶどう"}; ArrayList(可変長) 大きさを自由に変えたい場合は、`ArrayList`というクラスを使います。 import java.util.ArrayList; ArrayList<String> fruits = new ArrayList<>(); fruits.add("りんご"); fruits.add("みかん"); 値の追加には`add()`、削除には`remove()`を使います。 要素にアクセスする 配列は`fruits[0]`のように角かっこで、`ArrayList`は`fruits.get(0)`のように専用のメソッドでアクセスします。この書き方の違いは、Java初心者が混同しやすいポイントです。 Javaならではの注意点 配列は基本的なデータ型(intなど)も直接格納できますが、`ArrayList`は基本的に`Integer`のような「オブジェクト版」の型しか扱えません。用途に応じて、固定長で高速な配列を使うか、柔軟な`ArrayList`を使うかを選びましょう。 まとめ Javaには固定長の配列と可変長の`ArrayList`があり、アクセスの書き方がそれぞれ異なります。値を追加・削除する可能性があるなら`ArrayList`を選ぶのが基本です。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#6 Javaで学ぶループの基本

Javaのループは、C言語系の言語に共通する標準的な書き方に加えて、配列やリストを扱いやすい拡張for文が用意されています。この記事では、Javaにおけるループの基本を解説します。 for文の基本 for (int i = 0; i 拡張for文 配列やリストの中身を1つずつ処理したい場合は、拡張for文(for-eachとも呼ばれる)が便利です。 String[] fruits = {"りんご", "みかん", "ぶどう"}; for (String fruit : fruits) { System.out.println(fruit); } 添字を管理する必要がなく、簡潔に書けます。 while文 int count = 0; while (count Javaならではの注意点 拡張for文は読みやすい反面、ループの途中で今何番目の要素を処理しているかという「添字」の情報を直接扱えません。添字が必要な処理では、従来のfor文を使う必要があります。目的に応じてどちらを使うか判断しましょう。 まとめ Javaのループは基本のfor文・while文に加えて、拡張for文が配列やリストの処理を簡潔にしてくれます。添字が必要かどうかで使い分けましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#5 Javaで学ぶ条件分岐の基本

Javaの条件分岐は、C言語系の言語に共通する標準的な書き方を採用しています。この記事では、Javaにおける条件分岐の基本を解説します。 if文の基本 int age = 20; if (age >= 18) { System.out.println("成人です"); } else { System.out.println("未成年です"); } else ifで分岐を増やす if (age >= 65) { System.out.println("高齢者です"); } else if (age >= 18) { System.out.println("成人です"); } else { System.out.println("未成年です"); } switch文という選択肢 条件の候補が多い場合、Javaには`switch`という書き方もあります。1つの値に対して、複数の候補のどれに当てはまるかを判定したいときに便利です。 switch (day) { case 1: System.out.println("月曜日"); break; default: System.out.println("その他"); } 各`case`の最後に`break`を書き忘れると、次の`case`の処理までそのまま実行されてしまう(フォールスルーと呼ばれる)ため、注意が必要です。 Javaならではの注意点 Javaのif文の条件は、必ず真偽値(boolean型)である必要があります。C言語の経験がある人は、数値を条件としてそのまま使う書き方に慣れているかもしれませんが、Javaではそれはできません。 まとめ Javaの条件分岐は`if`・`else if`・`else`に加え、候補が多い場合は`switch`も選択肢になります。`break`の書き忘れには特に注意しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJav...

#4 Javaで学ぶ標準入力の基本

Javaにおける標準入力の扱いは、決まった書き方さえ覚えてしまえば、あとはほぼ同じパターンの繰り返しで対応できます。この記事では、Javaで利用者からの入力を受け取る基本的な方法を解説します。 Scannerクラスを使う Javaで標準入力を扱う際によく使われるのが、`Scanner`という機能です。 import java.util.Scanner; Scanner scanner = new Scanner(System.in); System.out.print("名前を入力してください: "); String name = scanner.nextLine(); 最初に`Scanner`を使う準備をしたあと、`nextLine()`で1行分の入力を受け取る、という流れになります。 数値として受け取る 数値をそのまま受け取りたい場合は、`nextInt()`のような専用の機能を使います。 int age = scanner.nextInt(); Pythonのように文字列を後から変換するのではなく、最初から「数値として読み込む」という指示を出せるのがJavaの特徴です。 Javaならではの注意点 `Scanner`は毎回`import`文を書いて準備する必要があり、Pythonの`input()`のような手軽さはありません。しかし、書き方自体はいつも同じパターンなので、一度テンプレートとして覚えてしまえば、あとはどんなプログラムでも同じように使い回せます。 まとめ Javaの標準入力は`Scanner`を使うのが基本です。`nextLine()`と`nextInt()`の使い分けを覚えておけば、多くの場面に対応できます。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#3 Javaで学ぶ演算子の基本

Javaの演算子は、多くのプログラミング言語の元になった、標準的な書き方を採用しています。この記事では、Javaの基本的な演算子と、初心者がつまずきやすいポイントを解説します。 算術演算子・比較演算子 Javaでは、次のような演算子を使います。 + - * / % 算術演算子 == != > < 比較演算子 && || ! 論理演算子 整数の割り算は切り捨てになる Javaで特に注意したいのが、整数型(int)同士の割り算です。小数点以下は自動的に切り捨てられます。 int result = 10 / 3; // 結果は3 小数の結果が欲しい場合は、どちらかの値をdouble型にする必要があります。 double result = 10.0 / 3; // 結果は3.333... 文字列の比較には注意が必要 Javaでは、文字列(String)同士を比べる際に`==`を使うと、意図しない結果になることがあります。`==`は「同じ実体かどうか」を比べる演算子であり、文字の中身が同じかどうかを調べたい場合は`equals()`というメソッドを使う必要があります。 if (name.equals("太郎")) { ... } Javaならではの注意点 数値の比較には`==`をそのまま使えますが、文字列の比較にだけは`equals()`が必要という違いは、Java初心者が非常につまずきやすいポイントです。「if文の条件が思った通りに動かない」と感じたら、文字列を`==`で比較していないか、まず確認してみましょう。 まとめ Javaの演算子自体はシンプルですが、整数の割り算の切り捨てと、文字列比較における`equals()`の必要性という2点は、特に意識しておきたいポイントです。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#2 Javaで学ぶ変数とデータ型の基本

Javaでは、変数を使う前に必ず「型」を明示する必要があります。この記事では、Javaにおける変数の宣言方法と、代表的なデータ型について解説します。 型を明示して変数を作る Javaの変数は、型・変数名・値の順に書きます。 int age = 20; Pythonのように型を省略することはできません。最初は少し窮屈に感じるかもしれませんが、この明示的な書き方が、大きなプログラムを安全に保つ助けになります。 代表的なデータ型 Javaでよく使う基本的なデータ型(プリミティブ型)には、次のようなものがあります。 整数(int) 浮動小数点数(double) 真偽値(boolean) 1文字(char) 複数の文字を扱う「文字列」は、これらとは別に`String`という特別な型を使います。 String name = "太郎"; varによる型推論(Java 10以降) 近年のJavaでは、`var`というキーワードを使うことで、型の記述を省略できるようになりました。 var age = 20; 代入する値からJavaが型を自動的に判断してくれますが、変数の型自体は決まったまま変わらない点はこれまでと同じです。読みやすさを優先したいときは、型を明示する従来の書き方も広く使われています。 finalという変更不可の指定 値を後から変更されたくない変数には、`final`というキーワードを付けます。 final int MAX = 100; 設定値など、プログラム中で書き換わってほしくない値に使うと、うっかりミスを防げます。 Javaならではの注意点 Javaの変数名は、複数の単語からなる場合、2つ目以降の単語の頭文字を大文字にする「キャメルケース」で書くのが慣習です。例えば「ユーザー名」なら`userName`のように書きます。Pythonのスネークケースとは異なる慣習なので、言語を切り替える際は注意しましょう。 まとめ Javaの変数は型を明示するのが基本ですが、`var`を使えば記述を簡略化できます。`final`による変更禁止の指定も、安全なコードを書くうえで覚えておきたい機能です。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学び...

#1 Javaで学ぶ環境構築の基本

Javaは、長年にわたって企業システムや業務アプリケーションで使われ続けている定番の言語です。学習を始める人向けの教材も多く、環境構築の手順自体もパターンが確立されています。ただし、いざ自分のパソコンで試してみると、「コマンドが見つからない」「動くはずなのにエラーが出る」といった壁にぶつかる人が非常に多いのも事実です。この記事では、Javaを動かすための準備を、実際に出くわしやすいエラーメッセージも交えながら、じっくり解説していきます。 JDKのインストール Javaのプログラムを書いたり実行したりするには、「JDK(Java Development Kit)」というソフトウェアをインストールする必要があります。JDKには、プログラムを実行可能な形に変換する「コンパイラ」や、実際にプログラムを動かす「実行環境」などがまとめて入っています。 OracleやAmazon(Amazon Corretto)、Eclipse(Eclipse Temurin)など、複数の団体・企業が無料でJDKを配布しています。中身の仕組みはほぼ共通しているので、どれを選んでも学習には支障がありません。迷った場合は、ライセンス周りがわかりやすく個人利用でも安心して使える「Eclipse Temurin」がおすすめです。バージョンは、サポート期間が長い「LTS版」(記事執筆時点では21など)を選んでおくと、後から情報を探すときも困りにくいでしょう。 環境変数の設定 Javaの環境構築で多くの人がつまずくのが、「JAVA_HOME」という環境変数の設定です。環境変数とは、パソコン全体で共有される「設定の一覧」のようなものです。JDKをインストールした場所を、この環境変数に登録しておくことで、どのフォルダからでもJavaのコマンドが使えるようになります。 設定できたか確認するには、ターミナルで次のコマンドを実行します。 java --version ここで、実際によく表示されるエラーとその原因を具体的に見ていきましょう。 「'java' は、内部コマンドまたは外部コマンドとして認識されていません」 Windowsで java --version を実行したときに出る代表的なエラーです。これは、JDKのインストール自体はできていても、そのインストール先が「PA...

#15 Goで学ぶデバッグの基本

Goのデバッグは、シンプルさを重視する言語らしく、標準機能だけでも十分に対応できます。この記事では、Goにおけるデバッグの基本的な方法を解説します。 fmt.Println()でその場の状態を確認する fmt.Println("ageの中身:", age) 構造体の詳しい中身を確認したい場合は、`%+v`という書式を使います。 fmt.Printf("%+v\n", person) エラーを必ず確認する 以前の記事でも触れた通り、Goでは`if err != nil`によるエラーの確認が徹底されます。バグの多くは、このエラー確認を省略してしまった箇所に隠れていることが多いため、まずエラーがきちんと確認されているかを見直すのが効果的です。 delveというデバッガー Goには「delve」という専用のデバッガーツールがあり、VSCodeなどのエディタと連携させることで、ブレークポイントを使った本格的なデバッグができます。 Goならではの注意点 Goのシンプルな文法は、コード自体が読みやすく、`fmt.Println`によるデバッグだけでも原因を見つけやすい傾向にあります。複雑な処理を追いたい場合にだけ、delveのような専用ツールを使うとよいでしょう。 まとめ Goのデバッグは`fmt.Println`・`fmt.Printf`が基本で、エラー確認の見直しが特に効果的です。本格的な調査にはdelveも活用しましょう。

#16 Rustで学ぶ辞書型(マップ)の基本

Rustで名前と値の組み合わせを扱うには、`HashMap`という仕組みを使います。この記事では、Rustにおける辞書に相当する使い方を解説します。 HashMapを作ってみる use std::collections::HashMap; let mut person = HashMap::new(); person.insert("name", "太郎"); 値を取り出す Rustでは、キーが存在しない可能性を考慮し、`get()`は`Option`型という「値があるかないか」を表す型を返します。 match person.get("name") { Some(name) => println!("{}", name), None => println!("見つかりません"), } 全てのキーと値を順に処理する for (key, value) in &person { println!("{}: {}", key, value); } Rustならではの注意点 他の言語のように、存在しないキーに直接アクセスしてエラーメッセージだけを表示する、ということはRustではできません。`get()`の結果が`Some`か`None`かを必ず確認する必要があり、この一手間が、存在しないキーへのアクセスによるバグを未然に防いでいます。 まとめ Rustの辞書は`HashMap`が基本で、`get()`の結果は`Option`型として安全に扱います。`Some`・`None`の確認を忘れずに行いましょう。

#17 TypeScriptで学ぶモジュールとパッケージの基本

TypeScriptのモジュールは、JavaScriptと同じ`export`・`import`の仕組みをそのまま使います。この記事では、TypeScriptにおけるモジュールの基本を解説します。 exportとimportの基本 // utils.ts export function greet(name: string): void { console.log(`こんにちは、${name}さん`); } // main.ts import { greet } from './utils'; greet("太郎"); 型だけをエクスポートする TypeScriptには、型定義だけを他のファイルと共有する`export type`という書き方もあります。 export type Person = { name: string; age: number }; TypeScriptならではの注意点 複数のファイルに分かれたプロジェクトでは、型の定義を専用のファイルにまとめておくと、プロジェクト全体で同じ型を安心して使い回せます。ファイルを分ける際は、機能だけでなく型の置き場所も意識しておくとよいでしょう。 まとめ TypeScriptのモジュールはJavaScriptと同じ`export`・`import`が基本です。型専用のエクスポートも活用し、プロジェクト全体で型を共有しましょう。

#18 JavaScriptで学ぶ日付と時刻の扱いの基本

JavaScriptの日付操作は、伝統的な`Date`オブジェクトに加え、近年新しい標準機能も登場しています。この記事では、JavaScriptにおける日付と時刻の基本的な扱い方を解説します。 Dateオブジェクトを使う const now = new Date(); console.log(now); 日付の一部を取得する console.log(now.getFullYear()); // 年 console.log(now.getMonth()); // 月(0から始まる点に注意) 日付を計算する JavaScriptの`Date`には、Pythonの`timedelta`のような便利な計算機能がなく、ミリ秒単位で自分で計算する必要があります。 const threeDaysLater = new Date(now.getTime() + 3 * 24 * 60 * 60 * 1000); JavaScriptならではの注意点 `getMonth()`は、1月が`0`、12月が`11`として返される点が、初心者が非常につまずきやすいポイントです。表示する際は`+1`することを忘れないようにしましょう。日付の計算が複雑になる場合は、`day.js`のような専用のライブラリを使うのもよい選択です。 まとめ JavaScriptの日付操作は`Date`オブジェクトが基本です。月が0から始まる点に注意し、複雑な計算にはライブラリの活用も検討しましょう。

#17 PHPで学ぶモジュールとパッケージの基本

PHPのファイル整理は、以前の記事で触れたComposerと「名前空間」を組み合わせて行うのが現代的な方法です。この記事では、PHPにおけるファイル分割の基本を解説します。 ファイルを読み込む基本 // utils.php function greet($name) { echo "こんにちは、{$name}さん"; } // main.php require_once 'utils.php'; greet("太郎"); namespaceという仕組み namespace App\Utils; function greet($name) { echo "こんにちは、{$name}さん"; } use App\Utils; Utils\greet("太郎"); PHPならではの注意点 以前の記事で触れたComposerの`autoload`機能を使うと、`require`を1つずつ書かなくても、名前空間に沿ったファイルを自動的に見つけて読み込んでくれます。プロジェクトが大きくなったら、手動の`require`から、Composerによる自動読み込みへの移行を検討しましょう。 まとめ PHPのファイル整理は`require`が基本ですが、`namespace`とComposerの`autoload`を組み合わせるのが現代的な方法です。 本ページはプロモーションを含みます。 参考書籍(PR) PHPをもっと学びたい方には「 10日でおぼえるPHP入門教室 第4版 」がおすすめです。

#15 Scalaで学ぶデバッグの基本

Scalaのデバッグは、JVM言語らしくJavaと共通するツールを活用できます。この記事では、Scalaにおけるデバッグの基本的な方法を解説します。 println()でその場の状態を確認する println(s"ageの中身: $age") IntelliJ IDEAのデバッガー ScalaもIntelliJ IDEAとの相性がよく、Javaと同じようにブレークポイントを設定してデバッグできます。 関数型プログラミング特有の注意点 Scalaでは、複数の処理を`.map`や`.filter`のようにつなげて書くことが多く、途中経過を確認しづらいことがあります。そのような場合は、途中に`.map { x => println(x); x }`のような一時的なコードを挟んで、途中の値を確認する方法がよく使われます。 Scalaならではの注意点 処理をつなげて書くスタイルに慣れないうちは、一度に多くのことをやろうとせず、`val`を使って途中の結果を一旦変数に入れ、`println`で確認しながら組み立てていくと、原因を見つけやすくなります。 まとめ Scalaのデバッグは`println`とIntelliJ IDEAのデバッガーが基本です。処理をつなげて書くスタイルでは、途中経過の確認方法も工夫しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Scalaをもっと学びたい方には「 実践Scala入門 」がおすすめです。

#18 TypeScriptで学ぶ日付と時刻の扱いの基本

TypeScriptの日付操作は、JavaScriptの`Date`オブジェクトをそのまま使いますが、型があることで扱い方がより明確になります。この記事では、TypeScriptにおける日付の基本的な扱い方を解説します。 Dateオブジェクトを使う const now: Date = new Date(); console.log(now.getFullYear()); 関数の引数に日付の型を使う function formatDate(date: Date): string { return `${date.getFullYear()}年${date.getMonth() + 1}月`; } 引数の型を`Date`と明示しておくことで、日付ではない値を誤って渡そうとした際に、実行前の段階でエラーとして教えてもらえます。 TypeScriptならではの注意点 JavaScriptと同様、`getMonth()`が0から始まる点には変わらず注意が必要です。型があってもこの仕様自体が変わるわけではないため、月を表示する処理では`+1`を忘れないようにしましょう。 まとめ TypeScriptの日付操作はJavaScriptと同じ`Date`が基本です。型を明示することで、関数の使い方をより安全にできます。 本ページはプロモーションを含みます。 参考書籍(PR) TypeScriptをもっと学びたい方には「 プロを目指す人のためのTypeScript入門 」がおすすめです。

#18 Rustで学ぶ日付と時刻の扱いの基本

Rustの標準ライブラリには、日付を手軽に扱う機能があまり用意されておらず、`chrono`という外部ライブラリ(クレート)を使うのが一般的です。この記事では、Rustにおける日付の基本的な扱い方を解説します。 chronoを使う 以前の記事で触れた`Cargo.toml`に、`chrono`を追加します。 use chrono::Local; let now = Local::now(); println!("{}", now); 日付を文字列にする println!("{}", now.format("%Y年%m月%d日")); Rustならではの注意点 実行速度と安全性を重視するRustは、標準ライブラリに何でも詰め込むのではなく、必要な機能は外部ライブラリとして提供するという設計方針を取っています。日付操作もその一例で、`chrono`のような信頼されているクレートを使うのが一般的な流れです。 まとめ Rustの日付操作は、標準では最小限しか用意されておらず、`chrono`のような外部クレートを使うのが基本です。以前の記事で触れたクレートの導入方法とあわせて活用しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rustをもっと学びたい方には「 実践Rust入門[言語仕様から開発手法まで] 」がおすすめです。

#14 Scalaで学ぶ外部ライブラリの基本

Scalaの外部ライブラリは、以前の記事で触れた`sbt`という管理ツールを使って導入します。この記事では、Scalaにおける外部ライブラリの使い方の基本を解説します。 build.sbtに追加する `build.sbt`という設定ファイルに、使いたいライブラリを書き加えます。 libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.0" ライブラリを使う import play.api.libs.json._ val json = Json.obj("name" -> "太郎") ScalaもJavaのライブラリを利用できる ScalaはJVM上で動くため、Maven Centralで公開されているJava向けのライブラリも、多くの場合そのまま利用できます。Scala専用のライブラリが見つからない場合は、Java向けのライブラリを探してみるのもよい方法です。 Scalaならではの注意点 `libraryDependencies += "組織名" %% "ライブラリ名" % "バージョン"`という書き方は、Scala独自の記法です。`%%`という記号は、使っているScalaのバージョンに合わせて自動的に適切なライブラリを選んでくれる、便利な仕組みを表しています。 まとめ Scalaの外部ライブラリは`build.sbt`に書き加えて導入します。Java向けライブラリもそのまま使えることを覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Scalaをもっと学びたい方には「 実践Scala入門 」がおすすめです。

#18 Kotlinで学ぶ日付と時刻の扱いの基本

Kotlinの日付操作は、Javaの`java.time`パッケージをそのまま利用できます。この記事では、Kotlinにおける日付の基本的な扱い方を解説します。 LocalDateTimeを使う import java.time.LocalDateTime val now = LocalDateTime.now() println(now) 日付を文字列にする import java.time.format.DateTimeFormatter val formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日") println(now.format(formatter)) 日付を計算する val threeDaysLater = now.plusDays(3) Kotlinならではの注意点 KotlinにはJava向けの`java.time`をより簡潔に扱える`kotlinx-datetime`という専用のライブラリもあります。基本はJavaの機能をそのまま使えますが、マルチプラットフォーム(Kotlin Multiplatform)を意識したプロジェクトでは、こうした専用ライブラリの利用も検討されます。 まとめ Kotlinの日付操作はJavaの`java.time`がそのまま使えます。プロジェクトに応じて`kotlinx-datetime`のような専用ライブラリも視野に入れましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Kotlinをもっと学びたい方には「 やさしいKotlin入門 」がおすすめです。

#17 Rustで学ぶモジュールとパッケージの基本

Rustのモジュールは、`mod`というキーワードを使って管理する、少し独特な仕組みを持っています。この記事では、Rustにおけるモジュールの基本を解説します。 modでモジュールを定義する mod utils { pub fn greet(name: &str) { println!("こんにちは、{}さん", name); } } utils::greet("太郎"); 関数の前に`pub`を付けないと、モジュールの外から使えません。 別ファイルに分ける 実際のプロジェクトでは、`mod utils;`と書くことで、`utils.rs`という別ファイルの中身をモジュールとして読み込めます。 クレートとモジュールの関係 以前の記事で触れた「クレート」(外部ライブラリ)は、それぞれが独自のモジュール構造を持っています。自分のプロジェクトも、大きくなるにつれて複数のモジュールに整理していくことになります。 Rustならではの注意点 Rustでは、デフォルトで全てが「非公開」として扱われます。以前の記事のクラスの記事でも触れた考え方と同じく、公開したい部分には明示的に`pub`を付ける必要がある点を覚えておきましょう。 まとめ Rustのモジュールは`mod`で定義し、公開する部分には`pub`を付けます。デフォルトが非公開である設計を意識しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rustをもっと学びたい方には「 実践Rust入門[言語仕様から開発手法まで] 」がおすすめです。

#17 JavaScriptで学ぶモジュールとパッケージの基本

JavaScriptでファイルを分けて整理する仕組みは、比較的新しいバージョンで統一され、以前より扱いやすくなりました。この記事では、JavaScriptにおけるモジュールの基本を解説します。 exportとimportの基本 // utils.js export function greet(name) { console.log(`こんにちは、${name}さん`); } // main.js import { greet } from './utils.js'; greet("太郎"); `export`を付けた機能だけが、他のファイルから読み込めるようになります。 デフォルトエクスポート 1つのファイルにつき1つだけ、`export default`を使った特別な書き方もあります。 export default function greet(name) { ... } JavaScriptならではの注意点 以前の記事でも触れましたが、JavaScriptには`require`を使う古い形式(CommonJS)と、`import`を使う新しい形式(ES Modules)が混在しています。`import`文を使ったのに動かない場合は、実行環境の設定(`package.json`の`type`フィールドなど)がES Modulesに対応しているか確認しましょう。 まとめ JavaScriptのモジュールは`export`・`import`が基本です。2つの形式が混在している点に注意しながら進めましょう。 本ページはプロモーションを含みます。 参考書籍(PR) JavaScriptをもっと学びたい方には「 改訂新版JavaScript本格入門 」がおすすめです。

#18 PHPで学ぶ日付と時刻の扱いの基本

PHPの日付操作は、Webサイトの投稿日時表示など、実務でも頻繁に使われる機能です。この記事では、PHPにおける日付と時刻の基本的な扱い方を解説します。 date()関数を使う echo date("Y年m月d日"); PHPには、日付を扱う手軽な`date()`関数が標準で用意されています。 DateTimeクラスを使う より柔軟に日付を扱いたい場合は、`DateTime`というクラスを使います。 $now = new DateTime(); echo $now->format("Y年m月d日"); 日付を計算する $now->modify("+3 days"); `"+3 days"`のように、人間が読める形で計算内容を指定できるのがPHPらしい特徴です。 PHPならではの注意点 手軽な`date()`関数と、より高機能な`DateTime`クラスのどちらを使うべきか迷うことがあります。単純に表示するだけなら`date()`、日付の計算や比較まで行うなら`DateTime`、という基準で選ぶとよいでしょう。 まとめ PHPの日付操作は`date()`関数と`DateTime`クラスが基本です。`modify()`を使った柔軟な計算方法も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) PHPをもっと学びたい方には「 10日でおぼえるPHP入門教室 第4版 」がおすすめです。

#16 Pythonで学ぶ辞書型(マップ)の基本

名前と値の組み合わせでデータを管理できる仕組みを「辞書」と呼びます。この記事では、Pythonにおける辞書の基本的な使い方を解説します。 辞書を作ってみる Pythonでは波かっこ`{}`を使って辞書を作ります。 person = {"name": "太郎", "age": 20} 「キー」(名前)と「値」を`:`で結び、複数の組をカンマで区切って並べます。 値を取り出す・追加する print(person["name"]) # 太郎 person["job"] = "学生" 角かっこの中にキーを書くだけで値を取り出せます。存在しないキーに値を代入すると、新しい組が追加されます。 キーが存在するか確認する 存在しないキーにそのままアクセスするとエラーになります。`in`を使って事前に確認するか、`get()`を使うと安全です。 print(person.get("email", "未設定")) `get()`は、キーが存在しない場合に指定した既定値を返してくれます。 全てのキーと値を順に処理する for key, value in person.items(): print(key, value) Pythonならではの注意点 辞書のキーには文字列だけでなく、数値やタプルなど「変更できないデータ」であれば使えます。逆にリストのような「変更できるデータ」はキーにできない、というルールを覚えておきましょう。 まとめ Pythonの辞書は`{}`で作り、キーで値を管理します。`get()`を使った安全な取り出し方も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Pythonをもっと学びたい方には「 スッキリわかるPython入門 第2版 」がおすすめです。

#17 Kotlinで学ぶモジュールとパッケージの基本

Kotlinのパッケージは、Javaと同じ考え方を引き継ぎながら、少し柔軟なルールになっています。この記事では、Kotlinにおけるパッケージの基本を解説します。 パッケージの宣言 package com.example.utils fun greet(name: String) { println("こんにちは、${name}さん") } 他のパッケージから使う import com.example.utils.greet greet("太郎") Javaより柔軟なルール Kotlinでは、Javaのような「1つのファイルに1つの公開クラス」「ファイル名とクラス名の一致」といった厳格なルールがありません。1つのファイルに複数の関数やクラスを自由に書くことができ、ファイル名も内容に合わせて自由に付けられます。 Kotlinならではの注意点 Java経験者は、Kotlinの自由度の高さに最初は戸惑うかもしれません。とはいえ、読みやすさのために「関連するクラスや関数はまとめて1つのファイルに書く」という慣習に沿って整理するのがおすすめです。 まとめ Kotlinのパッケージ宣言はJavaと似ていますが、ファイル分割のルールはより自由です。読みやすさを意識して整理しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Kotlinをもっと学びたい方には「 やさしいKotlin入門 」がおすすめです。

#15 PHPで学ぶデバッグの基本

PHPのデバッグは、`echo`や`var_dump`を使った手軽な方法から、`Xdebug`という本格的なツールまで、幅広い選択肢があります。この記事では、PHPにおけるデバッグの基本的な方法を解説します。 echoやvar_dumpでその場の状態を確認する echo "ageの中身: {$age}"; var_dump($person); `var_dump`は、変数の型や構造まで詳しく表示してくれる便利な機能です。 エラー表示を有効にする PHPの設定によっては、エラーが起きても画面に何も表示されないことがあります。開発中は、エラー表示を有効にする設定を確認しておくと、問題に気づきやすくなります。 Xdebugという本格的なツール `Xdebug`という拡張機能をインストールすると、VSCodeなどのエディタと連携して、ブレークポイントを使った本格的なデバッグができるようになります。 PHPならではの注意点 Webサーバーと連携して動くPHPは、エラーがブラウザの画面ではなく、サーバーのログファイルにだけ記録されていることがあります。「画面には何も表示されないのに動かない」と感じたら、サーバーのエラーログを確認してみましょう。 まとめ PHPのデバッグは`echo`・`var_dump`が手軽で、本格的にはXdebugが使われます。エラーログの場所も確認しておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) PHPをもっと学びたい方には「 10日でおぼえるPHP入門教室 第4版 」がおすすめです。

#17 Swiftで学ぶモジュールとパッケージの基本

Swiftのファイル整理は、他の言語に比べて手軽なのが特徴です。この記事では、Swiftにおけるモジュールの考え方を解説します。 同じモジュール内は自動的に使える Swiftでは、同じプロジェクト(モジュール)の中にあるファイルであれば、`import`を書かなくても、他のファイルの関数やクラスをそのまま使えます。 // Utils.swift func greet(name: String) { print("こんにちは、\(name)さん") } // main.swift greet(name: "太郎") // importなしで使える 外部のモジュールを読み込む 以前の記事で触れた外部ライブラリなど、別のモジュールの機能を使う場合は`import`が必要です。 import Foundation アクセス制御という仕組み Swiftには`private`・`internal`・`public`など、以前のクラスの記事で触れた以上に細かいアクセス制御の仕組みがあります。モジュールの外に公開したい機能には`public`を付けます。 Swiftならではの注意点 「同じプロジェクト内ならimport不要」という仕様は、Java・Kotlinなどの経験がある人ほど意外に感じるポイントです。ファイルを分けても、特別な準備なしにそのまま使い合えるのがSwiftの手軽さです。 まとめ Swiftは同じモジュール内であれば`import`なしでファイルをまたいで使えます。外部モジュールや公開範囲の制御も合わせて理解しておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Swiftをもっと学びたい方には「 これからつくる iPhoneアプリ開発入門 」がおすすめです。

#15 Kotlinで学ぶデバッグの基本

Kotlinのデバッグは、Javaと同じくIntelliJ IDEAのデバッガー機能を活用するのが基本です。この記事では、Kotlinにおけるデバッグの基本的な方法を解説します。 println()でその場の状態を確認する println("ageの中身: $age") IntelliJ IDEAのデバッガー KotlinはIntelliJ IDEAとの相性がよく、ブレークポイントを設定して処理を一時停止し、変数の中身を確認する、というJavaと同じデバッグ手順がそのまま使えます。 null許容型のエラーに注意する Kotlinでよく遭遇するエラーに「NullPointerException」があります。null許容型を扱っている箇所で、値の確認を怠っていないかを重点的に見直すと、原因が見つかりやすいです。 Kotlinならではの注意点 Kotlinはコンパイルの段階でnullの扱いを厳しくチェックしてくれるため、Javaに比べるとNullPointerExceptionが発生する場面は少なくなります。それでも発生した場合は、Javaのライブラリとやり取りしている箇所を疑ってみるとよいでしょう。 まとめ Kotlinのデバッグは`println()`とIntelliJ IDEAのデバッガーが基本です。null関連のエラーが出たら、Javaとのやり取りの部分を確認しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Kotlinをもっと学びたい方には「 やさしいKotlin入門 」がおすすめです。

#17 Rubyで学ぶモジュールとパッケージの基本

Rubyのファイル整理は「モジュール」という仕組みが中心で、クラスとは少し違う役割を持っています。この記事では、Rubyにおけるモジュールの基本を解説します。 ファイルを分けて読み込む # utils.rb def greet(name) puts "こんにちは、#{name}さん" end # main.rb require_relative 'utils' greet("太郎") moduleという仕組み Rubyの`module`は、関連する機能をひとまとめにする点でクラスに似ていますが、インスタンスを作ることはできません。名前の衝突を防ぐための「名前空間」として使われることが多い機能です。 module Utils def self.greet(name) puts "こんにちは、#{name}さん" end end Utils.greet("太郎") Rubyならではの注意点 Rubyの`module`は、クラスに機能を「混ぜ込む」(ミックスイン)という、Rubyらしい応用的な使い方もできます。最初はファイル分割や名前空間としての役割から理解し、慣れてきたらミックスインという発展的な使い方も学んでいくとよいでしょう。 まとめ Rubyのファイル整理は`require_relative`で読み込み、`module`で名前空間を作ります。クラスとの違いを意識しておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rubyをもっと学びたい方には「 プロを目指す人のためのRuby入門[改訂2版] 」がおすすめです。

#15 Dartで学ぶデバッグの基本

Dartのデバッグは、Flutterアプリの開発と密接に関わっており、専用の便利なツールが用意されています。この記事では、Dartにおけるデバッグの基本的な方法を解説します。 print()でその場の状態を確認する print("ageの中身: $age"); DevToolsという専用のツール FlutterおよびDartには「DevTools」という専用のデバッグツールがあり、画面の見た目の構造(ウィジェットツリー)を確認したり、変数の値を調べたりできます。 ホットリロードとの組み合わせ Flutterには、コードを保存するとすぐに画面に変更が反映される「ホットリロード」という機能があります。`print()`での確認とホットリロードを組み合わせることで、素早く試行錯誤しながら原因を調査できます。 Dartならではの注意点 Flutterのエラーは、画面が赤くなって詳細なエラー情報が表示される「レッドスクリーン」という形で現れることがあります。エラーメッセージの内容をよく読むと、どのウィジェットで問題が起きているかが分かることが多いので、慌てず内容を確認しましょう。 まとめ Dartのデバッグは`print()`とDevToolsが基本です。ホットリロードを活用しながら、効率よく試行錯誤していきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#16 PHPで学ぶ辞書型(マップ)の基本

PHPで名前と値の組み合わせを扱う仕組みは、以前の記事で触れた「連想配列」です。この記事では、PHPにおける辞書に相当する使い方を、改めて詳しく解説します。 連想配列を作ってみる $scores = ["太郎" => 90, "次郎" => 85]; 値を取り出す・追加する echo $scores["太郎"]; $scores["三郎"] = 78; キーが存在するか確認する if (array_key_exists("三郎", $scores)) { echo $scores["三郎"]; } 全てのキーと値を順に処理する foreach ($scores as $name => $score) { echo "{$name}: {$score}"; } PHPならではの注意点 PHPの配列は、以前の記事で触れた通り、単純なリストと連想配列を同じ`array`という型で扱います。今使っている配列がどちらの用途なのかを意識しながらコードを読み書きすることが、PHPのコードを理解する上で重要です。 まとめ PHPの辞書は連想配列として扱い、`array_key_exists`で安全にキーを確認できます。単純な配列との使い分けを意識しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) PHPをもっと学びたい方には「 10日でおぼえるPHP入門教室 第4版 」がおすすめです。

#16 Javaで学ぶ辞書型(マップ)の基本

Javaで名前と値の組み合わせを扱うには、`HashMap`というクラスを使います。この記事では、Javaにおける辞書に相当する使い方を解説します。 HashMapを作ってみる import java.util.HashMap; HashMap<String, Integer> scores = new HashMap<>(); scores.put("太郎", 90); 値を取り出す int score = scores.get("太郎"); 存在しないキーを`get()`で取得しようとすると`null`が返るため、あらかじめ`containsKey()`で確認するのが安全です。 if (scores.containsKey("次郎")) { // 処理 } 全てのキーと値を順に処理する for (String key : scores.keySet()) { System.out.println(key + ": " + scores.get(key)); } Javaならではの注意点 `HashMap<String, Integer>`のように、キーと値の型を必ず指定する必要があります。プリミティブ型(int など)はそのまま使えず、`Integer`のような「オブジェクト版」の型を使う点も、以前のArrayListの記事と同様の注意点です。 まとめ Javaの辞書は`HashMap`が基本で、型を明示して使います。`containsKey()`で安全にキーの存在を確認しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#18 Rubyで学ぶ日付と時刻の扱いの基本

Rubyの日付操作は、標準ライブラリの`Time`や`Date`を使い、直感的な書き方ができます。この記事では、Rubyにおける日付と時刻の基本的な扱い方を解説します。 Timeを使う now = Time.now puts now 日付を文字列にする puts now.strftime("%Y年%m月%d日") この`strftime`という名前と書式は、Pythonの`datetime`とよく似ています。 日付を計算する Rubyでは、秒数を表す数値をそのまま足すことで、簡単に日付を計算できます。 three_days_later = now + 3 * 24 * 60 * 60 Rubyならではの注意点 Rubyには`Time`のほかに`Date`・`DateTime`というクラスもあり、それぞれ得意な用途が少し異なります。時刻まで必要なら`Time`、日付だけを扱いたいなら`Date`、というように使い分けるとよいでしょう。 まとめ Rubyの日付操作は`Time`が基本で、`strftime`での文字列変換が便利です。用途に応じて`Date`との使い分けも意識しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rubyをもっと学びたい方には「 プロを目指す人のためのRuby入門[改訂2版] 」がおすすめです。

#17 Pythonで学ぶモジュールとパッケージの基本

プログラムが大きくなると、1つのファイルに全てを書くのではなく、複数のファイルに分けて整理したくなります。この記事では、Pythonにおけるモジュールとパッケージの基本を解説します。 モジュールとは Pythonでは、1つの`.py`ファイルがそのまま「モジュール」として扱われます。別のファイルの機能を使いたいときは`import`を使います。 # utils.py def greet(name): print(f"こんにちは、{name}さん") # main.py import utils utils.greet("太郎") 特定の機能だけを読み込む from utils import greet greet("太郎") パッケージという考え方 複数のモジュールをまとめたフォルダを「パッケージ」と呼びます。フォルダの中に`__init__.py`という特別なファイルを置くことで、そのフォルダがパッケージとして認識されます。 Pythonならではの注意点 `import utils`のように名前だけを書いてモジュールを読み込む場合、Pythonがそのファイルを探せる場所(パス)にあるかどうかが重要です。「モジュールが見つかりません」というエラーが出たら、ファイルの場所や実行しているフォルダを確認しましょう。 まとめ Pythonのモジュールは`.py`ファイル単位で、`import`を使って読み込みます。パッケージという仕組みで、より大きな単位に整理できます。 本ページはプロモーションを含みます。 参考書籍(PR) Pythonをもっと学びたい方には「 スッキリわかるPython入門 第2版 」がおすすめです。

#17 Dartで学ぶモジュールとパッケージの基本

Dartのファイル整理は、シンプルな`import`の仕組みで行います。この記事では、Dartにおけるファイル分割の基本を解説します。 ファイルを分けて読み込む // utils.dart void greet(String name) { print("こんにちは、$name さん"); } // main.dart import 'utils.dart'; void main() { greet("太郎"); } 外部パッケージを読み込む 以前の記事で触れた外部パッケージ(pub.devで公開されているもの)は、`package:`という特別な形式で読み込みます。 import 'package:http/http.dart' as http; asを使った名前の衝突回避 複数のファイルで同じ名前の関数がある場合、`as`を使って別名を付けることで、名前の衝突を避けられます。 import 'utils.dart' as myUtils; myUtils.greet("太郎"); Dartならではの注意点 Dartの`import`文は、自分のファイル(相対パス)と外部パッケージ(`package:`形式)で書き方が異なります。Flutterプロジェクトでは特に外部パッケージを扱う機会が多いため、この2つの書き方の違いに早めに慣れておくとよいでしょう。 まとめ Dartのファイル整理は`import`が基本で、外部パッケージには`package:`形式を使います。`as`による名前の衝突回避も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#15 Javaで学ぶデバッグの基本

Javaのデバッグは、開発環境(IDE)に統合された強力なデバッガー機能を使うのが一般的です。この記事では、Javaにおけるデバッグの基本的な方法を解説します。 System.out.println()でその場の状態を確認する System.out.println("ageの中身: " + age); スタックトレースを読む Javaで例外が発生すると、「スタックトレース」という、どのメソッドを経由してエラーが起きたかを示す情報が表示されます。一番上に書かれた行が、実際にエラーが発生した場所です。 IDEのデバッガー機能 IntelliJ IDEAやEclipseといったJava向けの開発環境には、強力なデバッガー機能が統合されています。ブレークポイントを設定して処理を一時停止させ、その時点の変数の中身を確認しながら、1行ずつ処理を進められます。 Javaならではの注意点 Javaの開発では、`System.out.println`によるデバッグよりも、IDEのデバッガー機能を使うことが強く推奨されます。特に複雑なクラス同士のやり取りを追う際は、デバッガーを使ったほうが圧倒的に効率的です。 まとめ Javaのデバッグはスタックトレースの読解と、IDEのデバッガー機能の活用が基本です。積極的にデバッガーの使い方に慣れていきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#14 Dartで学ぶ外部ライブラリの基本

Dartの外部ライブラリは「パッケージ」と呼ばれ、`pub`というツールと`pubspec.yaml`という設定ファイルで管理します。この記事では、Dartにおける外部ライブラリの使い方の基本を解説します。 pubspec.yamlに追加する `pubspec.yaml`という設定ファイルに、使いたいパッケージを書き加えます。 dependencies: http: ^1.0.0 保存すると、多くのエディタが自動的にパッケージをダウンロードしてくれます。手動で行う場合は次のコマンドを使います。 dart pub get ライブラリを使う import 'package:http/http.dart' as http; var response = await http.get(Uri.parse('https://example.com')); pub.devという公式の置き場 Dartのパッケージの多くは「pub.dev」という公式サイトで公開されており、Flutter向けのパッケージも数多く公開されています。 Dartならではの注意点 Flutter向けのパッケージには、対応しているプラットフォーム(iOS・Android・Webなど)が限定されているものもあります。pub.devのパッケージページで、対応プラットフォームを確認してから導入すると安心です。 まとめ Dartの外部ライブラリ(パッケージ)は`pubspec.yaml`に書き加えて導入します。pub.devで対応プラットフォームも確認しておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#16 Swiftで学ぶ辞書型(マップ)の基本

Swiftで名前と値の組み合わせを扱うには、`Dictionary`という、そのままの名前の仕組みを使います。この記事では、Swiftにおける辞書の使い方を解説します。 辞書を作ってみる var scores = ["太郎": 90, "次郎": 85] 値を取り出す Swiftの辞書から値を取り出した結果は、キーが存在しない可能性を考慮して、オプショナル型になります。 if let score = scores["太郎"] { print(score) } 値を追加・変更する scores["三郎"] = 78 全てのキーと値を順に処理する for (name, score) in scores { print("\(name): \(score)") } Swiftならではの注意点 辞書から取り出した値がオプショナル型になるのは、以前の記事で触れた「値がないかもしれない」ことを型で表現するSwiftの一貫した設計思想の表れです。`if let`で安全に取り出す習慣を、辞書でも同じように意識しましょう。 まとめ Swiftの辞書は`Dictionary`型で、取り出した値はオプショナル型として安全に扱います。`if let`との組み合わせを忘れずに。 本ページはプロモーションを含みます。 参考書籍(PR) Swiftをもっと学びたい方には「 これからつくる iPhoneアプリ開発入門 」がおすすめです。

#16 Goで学ぶ辞書型(マップ)の基本

Goで名前と値の組み合わせを扱うには、`map`という仕組みを使います。この記事では、Goにおける辞書に相当する使い方を解説します。 mapを作ってみる person := map[string]string{"name": "太郎"} 値を取り出す 存在しないキーにアクセスしても、Goではエラーにならず、その型の「ゼロ値」(以前の記事で触れた仕組み)が返ってきます。 value, ok := person["email"] if !ok { fmt.Println("見つかりません") } 2つ目の戻り値`ok`を確認することで、値が実際に存在したかどうかを判断できます。 全てのキーと値を順に処理する for key, value := range person { fmt.Println(key, value) } Goならではの注意点 「存在しないキーにアクセスしてもエラーにならない」という仕様は、Goを学び始めた人が誤解しやすいポイントです。値が本当に存在するかを確認したい場合は、必ず2つ目の戻り値`ok`を確認する癖をつけましょう。 まとめ Goの辞書は`map`が基本で、キーの存在確認には2つ目の戻り値を使います。ゼロ値との違いを意識して安全に扱いましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#15 Swiftで学ぶデバッグの基本

Swiftのデバッグは、Xcodeに統合された強力なデバッガー機能を使うのが基本です。この記事では、Swiftにおけるデバッグの基本的な方法を解説します。 print()でその場の状態を確認する print("ageの中身: \(age)") Xcodeのデバッガー Xcodeには、ブレークポイントを使ったデバッガーが統合されており、処理を一時停止して変数の中身を確認できます。画面下部の「デバッグエリア」に、変数の値がわかりやすく表示されます。 オプショナル関連のエラーに注意する Swiftで頻発するエラーに、オプショナル型の値が実は空(nil)だったのに、無理やり値を取り出そうとしてクラッシュする、というものがあります。以前の記事で触れた`if let`などの安全な取り出し方を使っているか、確認するとよいでしょう。 Swiftならではの注意点 「Unexpectedly found nil」というエラーメッセージは、Swiftを学ぶ人が頻繁に遭遇するものです。このメッセージが出たら、まずオプショナル型を無理やり取り出している箇所(`!`が付いた部分)を探してみましょう。 まとめ Swiftのデバッグは`print()`とXcodeのデバッガーが基本です。オプショナル型関連のクラッシュには特に注意しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Swiftをもっと学びたい方には「 これからつくる iPhoneアプリ開発入門 」がおすすめです。

#18 Goで学ぶ日付と時刻の扱いの基本

Goの日付操作は、標準ライブラリの`time`パッケージだけで、かなり多くのことができます。この記事では、Goにおける日付と時刻の基本的な扱い方を解説します。 timeパッケージを使う now := time.Now() fmt.Println(now) 日付を文字列にする Goの日付の書式指定は、他の言語のような`%Y`のような記号ではなく、「基準となる日時」を使った独特な書き方をします。 fmt.Println(now.Format("2006年01月02日")) この「2006年1月2日」は、Goの基準日として決められた特別な日付です。 日付を計算する threeDaysLater := now.Add(3 * 24 * time.Hour) Goならではの注意点 Goの日付の書式指定は、他の言語の経験があるとかえって混乱しやすいポイントです。「2006-01-02 15:04:05」という基準日時さえ覚えてしまえば、あとは同じパターンで様々な形式を指定できます。 まとめ Goの日付操作は`time`パッケージが基本で、独特な書式指定に慣れることが重要です。基準日時「2006-01-02 15:04:05」を覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#18 Swiftで学ぶ日付と時刻の扱いの基本

Swiftの日付操作は、`Date`という型と、それを扱うための専用の仕組みを組み合わせて行います。この記事では、Swiftにおける日付の基本的な扱い方を解説します。 Dateを使う let now = Date() print(now) 日付を文字列にする let formatter = DateFormatter() formatter.dateFormat = "yyyy年MM月dd日" print(formatter.string(from: now)) 日付を計算する let threeDaysLater = Calendar.current.date(byAdding: .day, value: 3, to: now) `Calendar`という仕組みを使うことで、日をまたぐ計算も正確に行えます。 Swiftならではの注意点 Swiftの日付計算は、単純に秒数を足すのではなく、`Calendar`を経由することが推奨されています。これは、夏時間の切り替えなど、単純な秒数計算では対応できない複雑なケースを正しく扱うための仕組みです。 まとめ Swiftの日付操作は`Date`・`DateFormatter`・`Calendar`の組み合わせが基本です。日付の計算には`Calendar`を使う習慣をつけましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Swiftをもっと学びたい方には「 これからつくる iPhoneアプリ開発入門 」がおすすめです。

#15 Rubyで学ぶデバッグの基本

Rubyのデバッグは、`puts`を使った手軽な方法に加えて、`pry`という便利なツールがよく使われます。この記事では、Rubyにおけるデバッグの基本的な方法を解説します。 putsでその場の状態を確認する puts "ageの中身: #{age}" pというさらに詳しい表示方法 `puts`より詳しい情報を表示したい場合は、`p`という機能を使います。 p person pry / debugというツール Rubyには`pry`や`debug`といったツールがあり、コードの途中に1行差し込むだけで、その場で処理を一時停止し、対話的に変数の中身を確認できます。 require 'debug' binding.break Rubyならではの注意点 `binding.break`(または`binding.pry`)を差し込む方法は、`print`によるデバッグよりもはるかに効率的に原因を調査できます。Rubyでの本格的な開発では、早い段階でこうしたツールの使い方に慣れておくとよいでしょう。 まとめ Rubyのデバッグは`puts`・`p`が手軽ですが、`pry`や`debug`を使った対話的な調査がより効率的です。積極的に活用してみましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rubyをもっと学びたい方には「 プロを目指す人のためのRuby入門[改訂2版] 」がおすすめです。

#18 Scalaで学ぶ日付と時刻の扱いの基本

Scalaの日付操作は、JVM言語らしくJavaの`java.time`パッケージをそのまま利用できます。この記事では、Scalaにおける日付の基本的な扱い方を解説します。 LocalDateTimeを使う import java.time.LocalDateTime val now = LocalDateTime.now() println(now) 日付を文字列にする import java.time.format.DateTimeFormatter val formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日") println(now.format(formatter)) 日付を計算する val threeDaysLater = now.plusDays(3) Scalaならではの注意点 Scalaでは、Javaの`java.time`をより関数型らしく扱える`squants`のようなライブラリも利用されることがあります。基本はJavaと共通する部分を押さえつつ、プロジェクトの方針に応じて専用ライブラリの採用も検討されます。 まとめ Scalaの日付操作はJavaの`java.time`がそのまま使えます。関数型らしい扱いをしたい場合は専用ライブラリも視野に入れましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Scalaをもっと学びたい方には「 実践Scala入門 」がおすすめです。

#16 JavaScriptで学ぶ辞書型(マップ)の基本

JavaScriptで名前と値の組み合わせを扱う仕組みには、「オブジェクト」と「Map」という2つの選択肢があります。この記事では、JavaScriptにおける辞書に相当する使い方を解説します。 オブジェクトを使う方法 const person = { name: "太郎", age: 20 }; console.log(person.name); // 太郎 person.job = "学生"; ドット記法または角かっこで値にアクセスできます。 Mapという専用の仕組み 比較的新しいJavaScriptには、辞書専用の`Map`という機能もあります。 const person = new Map(); person.set("name", "太郎"); console.log(person.get("name")); キーが存在するか確認する if ("email" in person) { console.log(person.email); } `Map`の場合は`has()`というメソッドを使います。 全てのキーと値を順に処理する for (const [key, value] of Object.entries(person)) { console.log(key, value); } JavaScriptならではの注意点 オブジェクトは手軽ですが、キーは基本的に文字列に限られます。数値や他のオブジェクトをキーにしたい場合や、追加・削除が多い場面では、`Map`のほうが適しています。用途に応じて使い分けましょう。 まとめ JavaScriptの辞書はオブジェクトが手軽ですが、`Map`という専用の仕組みも用意されています。キーの種類や用途に応じて選びましょう。 本ページはプロモーションを含みます。 参考書籍(PR) JavaScriptをもっと学びたい方には「 改訂新版JavaScript本格入門 」がおすすめです。

#17 Goで学ぶモジュールとパッケージの基本

Goのファイル整理の仕組みは「パッケージ」が中心で、以前の記事で触れた`go.mod`とも深く関わっています。この記事では、Goにおけるパッケージの基本を解説します。 パッケージという単位 Goでは、同じフォルダにあるファイルは、まとめて1つの「パッケージ」として扱われます。ファイルの先頭に、そのパッケージの名前を宣言します。 package utils func Greet(name string) { fmt.Println("こんにちは、" + name + "さん") } 他のパッケージから使う import "myproject/utils" utils.Greet("太郎") 公開・非公開のルール 以前の記事でも触れた通り、Goでは関数名の先頭が大文字だと公開、小文字だと非公開になります。`Greet`(大文字)は他のパッケージから使えますが、`greet`(小文字)は同じパッケージの中でしか使えません。 Goならではの注意点 Goのパッケージ名は、フォルダ名と一致させるのが慣習です。また、公開・非公開の区別が「大文字・小文字」というシンプルなルールで決まる点は、他の言語の`public`・`private`のようなキーワードとは大きく異なる、Goらしい特徴です。 まとめ Goはパッケージ単位でファイルを整理し、大文字・小文字で公開範囲を決めます。フォルダ名とパッケージ名を一致させる慣習も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Goをもっと学びたい方には「 Go言語入門 」がおすすめです。

#18 Javaで学ぶ日付と時刻の扱いの基本

Javaの日付操作は、比較的新しいバージョンで整備された`java.time`パッケージを使うのが現在の標準です。この記事では、Javaにおける日付の基本的な扱い方を解説します。 LocalDateTimeを使う import java.time.LocalDateTime; LocalDateTime now = LocalDateTime.now(); System.out.println(now); 日付を文字列にする import java.time.format.DateTimeFormatter; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日"); System.out.println(now.format(formatter)); 日付を計算する LocalDateTime threeDaysLater = now.plusDays(3); Javaならではの注意点 Javaには、今回紹介した`java.time`より前に存在した`Date`や`Calendar`という、扱いにくいことで知られる古いクラスもあります。現在では`java.time`パッケージの使用が強く推奨されているため、古い教材で`Date`クラスの使い方を見かけても、新しいコードでは`LocalDateTime`を使うようにしましょう。 まとめ Javaの日付操作は`java.time`パッケージの`LocalDateTime`が基本です。古い`Date`クラスとの違いを意識しておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#15 TypeScriptで学ぶデバッグの基本

TypeScriptのデバッグは、JavaScriptと同じツールを使いますが、型のチェック自体がデバッグの手助けになるという特徴があります。この記事では、TypeScriptにおけるデバッグの基本的な方法を解説します。 console.log()と開発者ツール TypeScriptはコンパイルされてJavaScriptになるため、デバッグの方法自体はJavaScriptと同じです。`console.log()`やブラウザの開発者ツールがそのまま使えます。 型チェックによる早期発見 TypeScriptの大きな利点は、実行する前の段階で、多くの間違いに気づけることです。「実行してみたらエラーだった」という状況になる前に、エディタが赤い波線でミスを教えてくれるため、デバッグの手間そのものを減らせます。 ソースマップという仕組み TypeScriptのコードは一度JavaScriptに変換されるため、そのままではデバッグ時に元のTypeScriptのコードが表示されません。「ソースマップ」という仕組みを設定しておくことで、変換後のコードではなく、実際に書いたTypeScriptのコード上でデバッグできるようになります。 TypeScriptならではの注意点 ソースマップの設定を忘れると、ブラウザの開発者ツールに変換後の読みにくいJavaScriptが表示されてしまいます。開発環境のセットアップの際に、ソースマップが有効になっているか確認しておきましょう。 まとめ TypeScriptのデバッグはJavaScriptと同じツールを使いますが、型チェックによって多くの間違いを事前に防げます。ソースマップの設定も忘れずに行いましょう。 本ページはプロモーションを含みます。 参考書籍(PR) TypeScriptをもっと学びたい方には「 プロを目指す人のためのTypeScript入門 」がおすすめです。

#18 Pythonで学ぶ日付と時刻の扱いの基本

プログラムの中で「今日の日付」や「経過時間」を扱う場面は数多くあります。この記事では、Pythonにおける日付と時刻の基本的な扱い方を解説します。 datetimeモジュールを使う Pythonでは`datetime`という標準モジュールを使います。 from datetime import datetime now = datetime.now() print(now) 日付を文字列にする `strftime`という機能を使うと、決まった形式の文字列に変換できます。 print(now.strftime("%Y年%m月%d日")) 日付同士を計算する `timedelta`という機能を使うと、日付に対して「3日後」のような計算ができます。 from datetime import timedelta three_days_later = now + timedelta(days=3) Pythonならではの注意点 日付や時刻には「タイムゾーン」という、世界のどの地域の時刻かという情報が関わってきます。`datetime.now()`はパソコンの設定に依存した時刻を返すため、複数の地域で使われるプログラムでは、タイムゾーンを意識した扱いが必要になります。 まとめ Pythonの日付操作は`datetime`モジュールが基本です。`strftime`での文字列変換、`timedelta`での計算を覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Pythonをもっと学びたい方には「 スッキリわかるPython入門 第2版 」がおすすめです。

#16 Dartで学ぶ辞書型(マップ)の基本

Dartで名前と値の組み合わせを扱うには、`Map`という仕組みを使います。この記事では、Dartにおける辞書の使い方を解説します。 Mapを作ってみる var scores = {"太郎": 90, "次郎": 85}; 値を取り出す・追加する print(scores["太郎"]); scores["三郎"] = 78; キーが存在するか確認する if (scores.containsKey("三郎")) { print(scores["三郎"]); } 全てのキーと値を順に処理する scores.forEach((name, score) { print("$name: $score"); }); Dartならではの注意点 Dartの`Map`から存在しないキーを取り出そうとすると、null安全の仕組みにより結果はnull許容型として扱われます。値を使う前に`containsKey`で確認するか、null許容型であることを前提にしたコードを書くようにしましょう。 まとめ Dartの辞書は`Map`が基本で、`containsKey`を使って安全にキーを確認します。null安全の考え方とあわせて扱いましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#17 Scalaで学ぶモジュールとパッケージの基本

Scalaのパッケージは、JVM言語らしくJavaと同じ考え方を引き継いでいます。この記事では、Scalaにおけるパッケージの基本を解説します。 パッケージの宣言 package com.example.utils object Greeter { def greet(name: String): Unit = { println(s"こんにちは、$name さん") } } 他のパッケージから使う import com.example.utils.Greeter Greeter.greet("太郎") objectという独自の仕組み Scalaのコード例に出てきた`object`は、インスタンスを1つだけ持つ特別な仕組みです。Javaの`static`メソッドに近い役割を、より整理された形で実現しています。 Scalaならではの注意点 ScalaはJavaと同じパッケージの仕組みを使えるため、Java向けの慣習(ドメイン名を逆にした命名など)がそのまま通用します。一方で`object`のような、Scala特有の書き方も合わせて理解しておく必要があります。 まとめ Scalaのパッケージ管理はJavaと共通していますが、`object`というScala独自の仕組みも組み合わせて使われます。 本ページはプロモーションを含みます。 参考書籍(PR) Scalaをもっと学びたい方には「 実践Scala入門 」がおすすめです。

#16 TypeScriptで学ぶ辞書型(マップ)の基本

TypeScriptの辞書に相当する仕組みは、JavaScriptと同じですが、キーと値の型をあらかじめ決めておけるのが特徴です。この記事では、TypeScriptにおける辞書の扱い方を解説します。 型付きのオブジェクト interface Person { name: string; age: number; } const person: Person = { name: "太郎", age: 20 }; キーの型が決まっていない辞書 キーの名前が事前に決まっていない辞書のような使い方をしたい場合は、次のように書きます。 const scores: { [key: string]: number } = {}; scores["太郎"] = 90; Mapを使う場合 const person = new Map<string, string>(); person.set("name", "太郎"); `Map<string, string>`のように、キーと値それぞれの型を指定できます。 TypeScriptならではの注意点 型付きのオブジェクト(`interface`)を使うと、存在しないキーにアクセスしようとした際に、実行前の段階でエラーとして教えてもらえます。データの形が決まっている場合は、キーが自由な辞書よりも`interface`を使うほうが安全です。 まとめ TypeScriptの辞書は、形が決まっているなら`interface`、自由なキーを扱うなら`{ [key: string]: 型 }`や`Map`を使います。用途に応じて型の付け方を選びましょう。 本ページはプロモーションを含みます。 参考書籍(PR) TypeScriptをもっと学びたい方には「 プロを目指す人のためのTypeScript入門 」がおすすめです。

#16 Kotlinで学ぶ辞書型(マップ)の基本

Kotlinで名前と値の組み合わせを扱うには、`Map`というJavaと似た仕組みを、より簡潔な書き方で使えます。この記事では、Kotlinにおける辞書に相当する使い方を解説します。 Mapを作ってみる val scores = mapOf("太郎" to 90, "次郎" to 85) `to`という単語を使って、キーと値を組み合わせるのがKotlinらしい書き方です。`mapOf`は変更できないMapを作ります。 変更できるMap val scores = mutableMapOf<String, Int>() scores["太郎"] = 90 値を取り出す val score = scores["太郎"] 存在しないキーを指定した場合、結果はnull許容型として返されます。 全てのキーと値を順に処理する for ((key, value) in scores) { println("$key: $value") } Kotlinならではの注意点 以前の記事で触れた`List`と`MutableList`の関係と同じように、Kotlinでは変更できない`Map`(`mapOf`)と変更できる`MutableMap`(`mutableMapOf`)を使い分けます。基本は変更できない`Map`を使うのがKotlinらしい書き方です。 まとめ Kotlinの辞書は`mapOf`・`mutableMapOf`で作り、`to`を使ってキーと値を組み合わせます。変更の要不要で使い分けましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Kotlinをもっと学びたい方には「 やさしいKotlin入門 」がおすすめです。

#15 JavaScriptで学ぶデバッグの基本

JavaScriptのデバッグは、ブラウザに標準で搭載されている「開発者ツール」を使うと非常に効率的に行えます。この記事では、JavaScriptにおけるデバッグの基本的な方法を解説します。 console.log()でその場の状態を確認する console.log("ageの中身:", age); ブラウザの開発者ツール(F12キーなどで開く画面)の「コンソール」タブに、この内容が表示されます。 開発者ツールのデバッガー機能 ブラウザの開発者ツールには、コードの特定の行で処理を一時停止させる「ブレークポイント」という機能があります。処理を止めた状態で、その時点の変数の中身を自由に確認できます。 debuggerという特別な命令 コードの中に`debugger;`という1行を書いておくと、開発者ツールを開いた状態でそこを通過した際に、自動的に処理が一時停止します。 function calculate(a, b) { debugger; return a + b; } JavaScriptならではの注意点 `console.log()`はブラウザだけでなく、Node.js環境でも同じように使えます。一方`debugger;`は、開発者ツールが開かれていないと何も起こらないため、まず開発者ツールを開く習慣をセットで身につけましょう。 まとめ JavaScriptのデバッグは`console.log()`と開発者ツールのブレークポイント機能が基本です。`debugger;`という便利な命令も活用してみましょう。 本ページはプロモーションを含みます。 参考書籍(PR) JavaScriptをもっと学びたい方には「 改訂新版JavaScript本格入門 」がおすすめです。

#17 Javaで学ぶモジュールとパッケージの基本

Javaのファイル整理の仕組みは「パッケージ」が中心で、フォルダの構造とそのまま対応しているのが特徴です。この記事では、Javaにおけるパッケージの基本を解説します。 パッケージの宣言 Javaでは、ファイルの先頭でそのファイルが属するパッケージを宣言します。 package com.example.utils; public class Greeter { public static void greet(String name) { System.out.println("こんにちは、" + name + "さん"); } } 他のパッケージから使う import com.example.utils.Greeter; Greeter.greet("太郎"); パッケージ名はフォルダ構造と一致する `com.example.utils`というパッケージ名は、`com/example/utils`というフォルダの構造とそのまま対応している必要があります。以前の記事で触れた「ファイル名とクラス名の一致」に加えて、この「パッケージ名とフォルダ構造の一致」もJavaの厳格なルールです。 Javaならではの注意点 パッケージ名には、`com.example`のように、組織のドメイン名を逆にした形式を使うのが世界的な慣習です。これは、異なる会社が作ったパッケージ同士で名前が衝突しないようにするための工夫です。 まとめ Javaのパッケージはフォルダ構造と一致させて管理します。ドメイン名を逆にした命名慣習も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Javaをもっと学びたい方には「 スッキリわかるJava入門 第4版 」がおすすめです。

#16 Rubyで学ぶ辞書型(マップ)の基本

Rubyで名前と値の組み合わせを扱うには、「ハッシュ」と呼ばれる仕組みを使います。この記事では、Rubyにおける辞書に相当する使い方を解説します。 ハッシュを作ってみる scores = { "太郎" => 90, "次郎" => 85 } キーがシンボル(以前の記事で触れた`:name`のような値)の場合は、より簡潔に書けます。 person = { name: "太郎", age: 20 } 値を取り出す puts scores["太郎"] puts person[:name] 存在しないキーへの対応 存在しないキーにアクセスすると`nil`が返ります。`fetch`を使うと、存在しない場合にエラーにするか、既定値を指定するかを選べます。 puts scores.fetch("三郎", 0) 全てのキーと値を順に処理する scores.each do |name, score| puts "#{name}: #{score}" end Rubyならではの注意点 文字列のキー(`"name" => `)とシンボルのキー(`name: `)は、見た目は似ていますが別のものとして扱われます。`person["name"]`と`person[:name]`は異なる結果になるため、どちらのキーで作ったハッシュかを意識しましょう。 まとめ Rubyのハッシュ(辞書)は`{}`で作り、文字列またはシンボルをキーにできます。2つのキーの書き方の違いに注意しましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Rubyをもっと学びたい方には「 プロを目指す人のためのRuby入門[改訂2版] 」がおすすめです。

#16 Scalaで学ぶ辞書型(マップ)の基本

Scalaで名前と値の組み合わせを扱うには、`Map`という、変更しないことを基本とする仕組みを使います。この記事では、Scalaにおける辞書に相当する使い方を解説します。 Mapを作ってみる val scores = Map("太郎" -> 90, "次郎" -> 85) `->`という記号を使って、キーと値を組み合わせます。 値を取り出す Scalaの`Map`から値を取り出した結果は、Rustの`Option`に似た`Option`型として返されます。 scores.get("太郎") match { case Some(score) => println(score) case None => println("見つかりません") } 全てのキーと値を順に処理する scores.foreach { case (name, score) => println(s"$name: $score") } Scalaならではの注意点 Scalaの`Map`も、以前の記事で触れた`List`と同じく、変更しないことが基本です。値を追加したい場合は、`scores + ("三郎" -> 78)`のように、新しい`Map`を作る形になります。元の`scores`自体は変わらない点を覚えておきましょう。 まとめ Scalaの辞書は`Map`が基本で、`Option`型を使って安全に値を取り出します。値の追加は新しい`Map`を作る形になる点も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Scalaをもっと学びたい方には「 実践Scala入門 」がおすすめです。

#15 Pythonで学ぶデバッグの基本

プログラムが思った通りに動かないとき、原因を探して修正する作業を「デバッグ」と呼びます。この記事では、Pythonにおけるデバッグの基本的な方法を解説します。 print()でその場の状態を確認する 最も手軽なデバッグ方法は、`print()`を使って変数の中身を確認することです。 print(f"ageの中身: {age}") 怪しいと思う箇所の前後に`print()`を挟んでいくことで、どこで想定と違う値になっているかを絞り込めます。 エラーメッセージを読む Pythonのエラーメッセージ(トレースバック)には、どのファイルの何行目で、どんな種類のエラーが起きたかが書かれています。エラーが出たら、まず一番下に書かれているエラーの種類とメッセージを読むことから始めましょう。 デバッガーという専用のツール VSCodeなどのエディタには、プログラムを1行ずつ実行しながら変数の中身を確認できる「デバッガー」という機能が用意されています。`print()`をたくさん挟むより効率的に原因を探せます。 Pythonならではの注意点 `print()`によるデバッグは手軽ですが、確認が終わったコードにデバッグ用の`print()`を消し忘れると、実行結果に余計な表示が混ざってしまいます。デバッグが終わったら、使った`print()`を整理する習慣をつけましょう。 まとめ Pythonのデバッグは`print()`とエラーメッセージの読解が基本です。慣れてきたらデバッガーも活用し、効率よく原因を探せるようになりましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Pythonをもっと学びたい方には「 スッキリわかるPython入門 第2版 」がおすすめです。

#15 Rustで学ぶデバッグの基本

Rustのデバッグは、コンパイラの丁寧なエラーメッセージを活用することが、他の言語以上に重要になります。この記事では、Rustにおけるデバッグの基本的な方法を解説します。 println!でその場の状態を確認する println!("ageの中身: {}", age); 変数の詳しい構造まで確認したい場合は、`{:?}`という書き方を使います。 println!("{:?}", person); コンパイラのエラーメッセージを信頼する 以前の記事でも触れた通り、Rustのコンパイラは非常に丁寧で、多くの場合「こう直すとよいかもしれません」という具体的な提案まで表示してくれます。実行前の段階でメモリ関連の重大なバグの多くを防いでくれるため、実行してから原因を探すデバッグの機会自体が、他の言語より少ない傾向にあります。 dbg!という便利なマクロ Rustには`dbg!`という、変数の値とその場所のファイル名・行数を一緒に表示してくれる便利な機能があります。 let age = dbg!(20); Rustならではの注意点 Rustでは、コンパイルさえ通れば、他の言語で頻発するような「実行中に突然クラッシュする」種類のバグがかなり少なくなります。その分、コンパイル時のエラーメッセージとじっくり向き合うことが、Rustにおける最も重要なデバッグ作業だと言えます。 まとめ Rustのデバッグは`println!`・`dbg!`が基本ですが、何よりコンパイラのエラーメッセージを丁寧に読むことが重要です。 本ページはプロモーションを含みます。 参考書籍(PR) Rustをもっと学びたい方には「 実践Rust入門[言語仕様から開発手法まで] 」がおすすめです。

#18 Dartで学ぶ日付と時刻の扱いの基本

Dartの日付操作は、`DateTime`という型を使って行います。この記事では、Dartにおける日付と時刻の基本的な扱い方を解説します。 DateTimeを使う var now = DateTime.now(); print(now); 日付を文字列にする Dart単体では書式指定の機能が少ないため、`intl`という公式のパッケージがよく使われます。 import 'package:intl/intl.dart'; var formatter = DateFormat('yyyy年MM月dd日'); print(formatter.format(now)); 日付を計算する var threeDaysLater = now.add(Duration(days: 3)); Dartならではの注意点 Dart標準の`DateTime`だけでは、日本語を含む柔軟な書式指定が難しいため、実際のFlutterアプリ開発では`intl`パッケージを導入するのがほぼ前提になっています。以前の記事で触れた外部パッケージの導入方法とあわせて、早めに使い方を覚えておくとよいでしょう。 まとめ Dartの日付操作は`DateTime`が基本で、書式指定には`intl`パッケージを使うのが一般的です。`Duration`を使った計算も覚えておきましょう。 本ページはプロモーションを含みます。 参考書籍(PR) Dartをもっと学びたい方には「 ゼロから学ぶFlutterアプリ開発 」がおすすめです。

#6 C#で学ぶループの基本

C#のループは、Javaとよく似た書き方に加えて、コレクションを扱いやすいforeach文が用意されています。この記事では、C#におけるループの基本を解説します。 for文の基本 for (int i = 0; i foreach文 配列やリストの中身を1つずつ処理したい場合は、`foreach`を使います。 string[] fruits = {"りんご", "みかん", "ぶどう"}; foreach (string fruit in fruits) { Console.WriteLine(fruit); } Javaの拡張for文にあたる書き方で、`foreach`という専用のキーワードが用意されているのがC#の特徴です。 while文 int count = 0; while (count C#ならではの注意点 `foreach`はコレクションの中身を順番に取り出すだけの書き方のため、添字が必要な処理(例えば「3番目の要素だけ特別扱いしたい」など)には向いていません。そのような場合は従来の`for`を使いましょう。 まとめ C#のループは`for`・`while`・`foreach`の3種類が基本です。コレクションの中身をシンプルに処理したいときは`foreach`を積極的に使いましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C#をもっと学びたい方には「 確かな力が身につくC#「超」入門 第2版 」がおすすめです。

#5 C#で学ぶ条件分岐の基本

C#の条件分岐は、Javaとよく似た書き方に加えて、簡潔に書けるいくつかの便利な機能が用意されています。この記事では、C#における条件分岐の基本を解説します。 if文の基本 int age = 20; if (age >= 18) { Console.WriteLine("成人です"); } else { Console.WriteLine("未成年です"); } switch文とswitch式 C#にも`switch`がありますが、近年のC#では、より簡潔に書ける「switch式」という新しい書き方も使えます。 string result = score switch { >= 90 => "優", >= 70 => "良", _ => "可" }; `break`を書く必要がなく、1行で条件と結果の対応を表現できるのが特徴です。 三項演算子 簡単な条件分岐であれば、三項演算子を使って1行で書くこともできます。 string message = age >= 18 ? "成人です" : "未成年です"; C#ならではの注意点 従来の`switch`文と、新しい「switch式」は書き方が大きく異なります。学習中の教材が古いか新しいかによって説明されている書き方が違うことがあるので、混乱したら「switch文」と「switch式」のどちらの話をしているのか区別してみましょう。 まとめ C#の条件分岐は基本の`if`・`else`に加え、switch式や三項演算子といった簡潔な書き方が充実しています。状況に応じて使い分けましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C#をもっと学びたい方には「 確かな力が身につくC#「超」入門 第2版 」がおすすめです。

#5 C++で学ぶ条件分岐の基本

C++の条件分岐は、C言語系の言語に共通する標準的な書き方が基本です。この記事では、C++における条件分岐の基本を解説します。 if文の基本 int age = 20; if (age >= 18) { std::cout << "成人です" << std::endl; } else { std::cout << "未成年です" << std::endl; } switch文 候補が多い場合は`switch`を使います。 switch (day) { case 1: std::cout << "月曜日"; break; default: std::cout << "その他"; } Javaと同じく、`break`を書き忘れると次の`case`まで処理が続けて実行されてしまいます。 三項演算子 簡単な条件分岐は、三項演算子で1行にまとめられます。 std::string message = age >= 18 ? "成人です" : "未成年です"; C++ならではの注意点 C++のif文の条件には、真偽値だけでなく数値をそのまま書くこともできます。この場合、0は「偽」、0以外の数値は「真」として扱われます。この仕様は歴史的な経緯によるもので、意図せず数値を条件に使ってしまうと、想定外の分岐をしてしまうことがあるため注意しましょう。 まとめ C++の条件分岐は`if`・`switch`・三項演算子が基本です。数値をそのまま条件として使える仕様には注意しながら、明確な比較の書き方を心がけましょう。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#1 C++で学ぶ環境構築の基本

C++は、ゲーム開発や組み込み機器、金融システムのバックエンドなど、実行速度が重視される分野で今も広く使われている言語です。歴史が長く情報も豊富にある一方、「環境構築の最初の一歩でつまずきやすい言語」としても知られています。実際、プログラミング学習の挫折理由を調べると、C++やCでは「コードを書く前に力尽きた」という声が他の言語より目立ちます。この記事では、なぜC++の環境構築が難しく感じられるのかを整理しながら、つまずきやすいポイントとその対処法を具体的に解説します。 C++にはコンパイラが必要 PythonやJavaScriptと違い、C++にはパソコンにあらかじめ実行環境が入っていません。書いたコードを機械が理解できる形式に変換する「コンパイラ」というソフトウェアを、自分でインストールする必要があります。この「まず自分でコンパイラを用意する」というステップこそが、C++の環境構築を難しく感じさせる最大の理由です。PythonであればインストーラーをダウンロードしてすぐにREPL(対話的にコードを試せる画面)が使えますが、C++では「コンパイラを選ぶ→インストールする→パスを通す→動作確認する」という複数の工程を経て、ようやくスタートラインに立てます。 OSごとのインストール方法 Windowsの場合 「MinGW」というツール一式を使うか、Microsoft公式の「Visual Studio」をインストールする方法が一般的です。初心者のうちは、エディタとデバッグ機能がセットになったVisual Studio(Community版は無料)を使うと迷いにくいでしょう。Visual Studioは「統合開発環境(IDE)」と呼ばれるソフトで、コードを書く画面・コンパイル・実行・デバッグ(不具合を見つける作業)までが一つのアプリの中で完結するのが特徴です。 一方、MinGWは「コンパイラ本体だけ」を提供するツールで、エディタは別途VS CodeなどをあわせてWindowsに使う形になります。手軽さを求めるならVisual Studio、軽量な環境を好むならMinGW+VS Codeという住み分けで考えるとよいでしょう。 macOS・Linuxの場合 macOSでは「Xcode Command Line Tools」、Linuxでは`g++`というコ...

#2 C++で学ぶ変数とデータ型の基本

C++は、コンピュータのメモリを細かく意識できる言語のため、変数やデータ型の扱いにも独自の考え方があります。この記事では、C++における変数の作り方と、代表的なデータ型について解説します。 型を明示して変数を作る C++の変数は、Javaと同様に型を明示して作ります。 int age = 20; 代表的なデータ型 C++の基本的なデータ型には、次のようなものがあります。 整数(int) 浮動小数点数(double) 1文字(char) 真偽値(bool) 複数の文字を扱う「文字列」は、`std::string`という型を使うのが現代的な書き方です。 std::string name = "太郎"; autoによる型推論 C++にも、代入する値から型を自動で判断してくれる`auto`というキーワードがあります。 auto age = 20; 長くて複雑な型名を毎回書く手間を省けるため、現代的なC++のコードでは積極的に使われています。 変更を禁止するconst 値を後から変更されたくない変数には、`const`というキーワードを付けます。 const int MAX = 100; C++ならではの注意点 C++の変数は、宣言しただけでは決まった初期値が入るとは限らず、意図しない値(ゴミ値)が入っていることがあります。これは、実行速度を重視するC++ならではの仕様です。変数を宣言するときは、なるべく同時に初期値を代入しておく癖をつけると、思わぬバグを防げます。 まとめ C++の変数は型を明示するのが基本ですが、`auto`を使えば記述を簡略化できます。宣言時に初期値を必ず入れる習慣が、C++で安全にコードを書くコツです。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#6 C++で学ぶループの基本

C++のループは、C言語系の言語に共通する標準的な書き方に加えて、現代的な範囲for文も使えるようになっています。この記事では、C++におけるループの基本を解説します。 for文の基本 for (int i = 0; i 範囲for文(C++11以降) 比較的新しいC++では、配列やベクター(可変長のリストのようなもの)の中身を1つずつ処理する、簡潔な書き方が使えます。 std::vector<std::string> fruits = {"りんご", "みかん", "ぶどう"}; for (const auto& fruit : fruits) { std::cout << fruit << std::endl; } `auto`を使うことで、型を書く手間を省きながら、簡潔にループを書けます。 while文 int count = 0; while (count C++ならではの注意点 C++には昔ながらの書き方と、新しく追加された書き方が混在しています。範囲for文は比較的新しい機能のため、古い教材や環境では使えないことがあります。学習中のC++のバージョンを意識しておくとよいでしょう。 まとめ C++のループは伝統的な`for`・`while`に加え、範囲for文によって配列の処理がより簡潔に書けるようになっています。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#7 C++で学ぶ配列の基本

C++には、複数の値をまとめて扱うデータ構造として、伝統的な「配列」と、現代的な「vector」という2種類の仕組みがあります。この記事では、それぞれの違いと基本的な使い方を解説します。 配列(固定長) C++の伝統的な配列は、大きさがあらかじめ決まっていて、後から変更できません。 std::string fruits[3] = {"りんご", "みかん", "ぶどう"}; vector(可変長) 大きさを自由に変えたい場合は、`std::vector`を使うのが現代的な書き方です。 #include <vector> std::vector<std::string> fruits = {"りんご", "みかん", "ぶどう"}; fruits.push_back("メロン"); 値を追加するには`push_back()`を使います。 要素にアクセスする 配列・vectorどちらも、角かっこ`[]`を使って0から始まる添字でアクセスします。 std::cout << fruits[0]; C++ならではの注意点 C++の伝統的な配列は、範囲外の添字を指定してもエラーにならず、意図しないメモリを読み書きしてしまうことがあります。これは重大なバグの原因になりやすいため、特別な理由がない限り、安全性の高い`vector`を使うことが強く推奨されています。 まとめ C++には固定長の配列と可変長の`vector`があり、現代的な開発では`vector`を使うのが基本です。安全性の面からも、まずは`vector`に慣れることをおすすめします。 本ページはプロモーションを含みます。 参考書籍(PR) C++をもっと学びたい方には「 新・明解C++入門編 」がおすすめです。

#8 C++で学ぶ文字列操作の基本

C++の文字列操作は、`std::string`という型を使うのが現代的な基本の書き方です。この記事では、C++における文字列操作の基本と、注意しておきたい落とし穴を解説します。 文字列を連結する std::string greeting = "こんにちは、" + name + "さん"; `std::string`同士であれば、`+`を使った連結がそのまま使えます。既存の文字列に追加する場合は`+=`や`append`メソッドも使えます。 greeting += "。よろしくお願いします。"; よく使う文字列操作 name.length() 文字数を調べる(バイト数であることに注意、後述) name.substr(0, 3) 一部分を取り出す(開始位置と長さを指定) name.find("A") 特定の文字の位置を探す(見つからなければ`std::string::npos`) name.replace(0, 2, "XX") 一部分を置き換える 文字列を数値に変換する 文字列を数値に変換したい場合は`std::stoi`(整数)や`std::stod`(小数)、逆に数値を文字列にしたい場合は`std::to_string`を使います。 int num = std::stoi("123"); std::string s = std::to_string(456); 文字列を分割する C++の標準ライブラリには、他言語の`split`のような文字列分割の関数が長らく用意されていませんでした。`std::stringstream`を使うのが伝統的な方法です。 #include <sstream> std::stringstream ss("a,b,c"); std::string item; while (std::getline(ss, item, ',')) { std::cout << item << std::endl; } C++ならではの注意点 C++には、古くからある`char`の配列を...