Topiqlo ロゴ

ファイル操作

公開日: 2025/06/02

ファイル操作とは?──プログラムがデータを永続的に読み書きする基本手段

はじめに

Webアプリのログ記録、設定ファイルの読み込み、CSVからのデータ抽出──
プログラミングにおいて「ファイルを扱う処理」は非常に重要です。
メモリ上の一時的なデータと違い、ファイルは永続化された情報資源です。
本記事では、ファイルの読み書き、開閉、モード指定、非同期処理との連携など、ファイル操作の基本から応用までを解説します。

基本情報・概要

ファイル操作とは、プログラムからファイルシステム上のデータを読み書き・作成・削除・更新することです。
OSが提供するファイルI/O(Input/Output)機能を通して、プログラムは外部データとやり取りします。

主な操作:

  • 開く(Open)
  • 読む(Read)
  • 書く(Write)
  • 閉じる(Close)
  • 削除・リネーム・パーミッション変更など(管理操作)

ファイル操作は「プログラムと現実世界の“記録媒体”をつなぐ入り口」です。

比較・分類・特徴の表形式まとめ(任意)

操作種別内容使用例
バイナリモードそのままのデータを読み書きする画像ファイル、圧縮ファイル
テキストモード改行や文字コード処理を含むデータ操作ログ、CSV、設定ファイルなど
同期処理処理が完了するまで待つ小規模スクリプトやCLIツールなど
非同期処理処理完了を待たずに次の処理へ進むWebサーバ、イベントドリブンアプリなど

ファイル処理は用途に応じて速度・安定性・拡張性のバランスが求められます。

深掘り解説

✅ Python における基本操作

# 書き込み
with open("example.txt", "w") as f:
    f.write("こんにちは、世界")

# 読み込み
with open("example.txt", "r") as f:
    content = f.read()
    print(content)
  • with
    構文でファイルを自動的に閉じる
  • "r"
    ,
    "w"
    ,
    "a"
    などのモード指定が重要
  • バイナリなら
    "rb"
    ,
    "wb"
    を使用

✅ Node.js の非同期ファイル操作

const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

fs.writeFile('example.txt', 'Hello, world!', (err) => {
  if (err) throw err;
  console.log('書き込み完了');
});
  • 非同期I/Oにより、他の処理をブロックせずに実行可能
  • fs.promises
    を使えば
    async/await
    スタイルも可能

✅ C言語でのファイルポインタ操作

FILE* fp = fopen("data.txt", "w");
if (fp != NULL) {
  fprintf(fp, "Hello\n");
  fclose(fp);
}
  • fopen()
    /
    fclose()
    でファイルの開閉
  • fread()
    /
    fwrite()
    /
    fscanf()
    などで細かい制御

応用・発展的な使い方

  • CSVファイルからのデータ分析
  • ログファイルのローテーション・自動管理
  • バイナリデータによるファイルシリアライズ
  • 一時ファイルの作成とクリア(OSサポートあり)
  • ファイルウォッチング(変更を検知して再読み込み)

ファイルは単なる保存場所ではなく、アプリの“入出力インターフェース”そのものです。

よくある誤解と注意点(任意)

  • 開いたら閉じる
    fclose()
    with
    による自動閉鎖が必須
  • モード間違いに注意
    "w"
    は上書き、
    "a"
    は追記、
    "x"
    は新規作成限定
  • パスの扱いに注意(Windows/Linuxで差異あり)
  • ファイル存在確認は race condition に注意
  • バイナリファイルのエンコード/デコードミスもよくあるバグの原因

正確で安全なファイル操作は「プログラムの信頼性そのもの」です。

まとめ

ファイル操作は、プログラムが外部データを読み書きするための基本機能であり、永続データとの接点を担います。
モードや非同期制御、パス・文字コードなど注意すべき点は多いですが、正しく使えば、ログ管理、設定保存、データ連携などあらゆる分野で活躍する不可欠な技術です。
初心者がつまずきやすく、上級者ほど巧みに使いこなす。そんな「基本にして実戦的」な領域と言えるでしょう。