C# IoTアプリでデータをローカル保存!初心者向けファイル書き込み・読み込み入門
生徒
「C#を使ってIoT機器を作っているのですが、取得したセンサーデータをパソコン内に保存する方法がわかりません。」
先生
「IoTアプリにおいて、取得したデータを後で見返したり分析したりするために、ローカル環境(自分のパソコンの中)に保存することは非常に重要です。C#ではテキストファイルを使って簡単に実現できますよ。」
生徒
「難しそうですが、初心者でもすぐに実装できる方法を教えてもらえますか?」
先生
「もちろんです!まずはデータの保存と読み込みの仕組みから見ていきましょう。」
1. IoT開発におけるデータ保存の役割とは
IoTとは「モノのインターネット」の略で、センサーなどが取得した情報をネットワークを通じて活用する仕組みです。その中で、一時的に取得したデータを手元のパソコンや組み込みデバイスのストレージに保存しておくことを「ローカル保存」と呼びます。例えば、部屋の温度を1分ごとに記録して後からグラフにしたり、エラーが発生した際の情報をログとして残したりする場合に必須となる技術です。データを保存することで、インターネットが切断された環境下でも情報を失わずに済みます。
2. ファイル書き込みの基本とテキストファイル
コンピュータの中にあるファイルは、本棚の本のようなものです。データを書き込むことは「ノートに記録を書くこと」、読み込むことは「ノートを開いて中身を読むこと」に例えられます。C#で最も簡単にデータを保存する方法は、テキストファイルを作成してそこに情報を書き込むことです。System.IOという部品(名前空間といいます)を使うことで、ファイル操作が驚くほど簡単になります。名前空間とは、プログラムで使える便利な機能が整理された道具箱のようなものです。
3. センサーデータをファイルに書き込んでみよう
まずは、センサーから取得した数値をファイルに保存するコードを見てみましょう。ここでは、File.WriteAllTextメソッドを使います。このメソッドは、指定したファイルに文字列を丸ごと書き込んでくれる便利な命令です。
using System;
using System.IO;
string data = "2026-07-14, 25.5度";
string filePath = "sensor_log.txt";
File.WriteAllText(filePath, data);
Console.WriteLine("データを保存しました。");
このコードを実行すると、プログラムがある場所に「sensor_log.txt」というファイルが作られます。もし既にファイルが存在する場合は、中身が上書きされるので注意してくださいね。IoTアプリでは、毎回新しいデータを追加していく形が好まれることが多いです。
4. データを追加して保存する方法
先ほどのコードでは上書きされてしまうため、過去のデータを残してどんどん追記していく方法が必要です。そのためにFile.AppendAllTextメソッドという、ファイルのお尻に文字を付け足す命令を使います。これを使うと、センサーの履歴を長期間記録していくことが可能になります。
using System;
using System.IO;
string newData = "2026-07-14 10:45, 26.0度" + Environment.NewLine;
string filePath = "sensor_log.txt";
File.AppendAllText(filePath, newData);
Console.WriteLine("データを追記しました。");
ここで出てくるEnvironment.NewLineは「改行」を意味する命令です。これを使わないと、データが横に繋がってしまい、後で読み込むときにどこが区切りか分からなくなってしまいます。プログラムでは、整理整頓がとても大切です。
5. 保存したデータを読み込んで画面に表示する
保存したデータは、もちろん読み込んで確認することもできます。File.ReadAllTextメソッドを使うと、ファイルの中身を全部一度に読み取ることができます。プログラムで読み込んだデータを、画面に表示したり計算に使ったりすることで、IoTアプリとしての機能が完成します。
using System;
using System.IO;
string filePath = "sensor_log.txt";
if (File.Exists(filePath))
{
string content = File.ReadAllText(filePath);
Console.WriteLine("ファイルの中身はこちらです:");
Console.WriteLine(content);
}
else
{
Console.WriteLine("まだファイルがありません。");
}
ここで使っているif文とFile.Existsは「ファイルが存在するかどうか」をチェックするためのものです。もしファイルが存在しないのに読み込もうとするとプログラムがエラーで止まってしまうため、確認はとても重要な作業です。これを「例外処理」の基本といいます。
6. IoT開発で役立つデータ保存のテクニック
最後に、実際の開発現場で使われる少し便利な方法を紹介します。センサーデータは、カンマで区切ったCSV形式(カンマセパレーテッドバリュー)で保存するのが一般的です。こうすることで、後からExcelで読み込んでグラフ化することが非常に楽になります。また、フォルダのパスをしっかり指定することで、保存場所を自分で管理できるようになります。
using System;
using System.IO;
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
double temperature = 24.8;
string csvLine = $"{time},{temperature}" + Environment.NewLine;
string folderPath = @"C:\IoTData";
string fullPath = Path.Combine(folderPath, "data.csv");
Directory.CreateDirectory(folderPath);
File.AppendAllText(fullPath, csvLine);
このコードでは、現在の日時を取得するDateTime.Nowや、複数のパスを安全に繋げるPath.Combineといった道具を使っています。これらはIoT開発におけるデータ収集において非常に強力なツールとなります。自分だけのログを残せるようになると、アプリを作ることがもっと楽しくなりますよ。