CSV分割ツールを自作しよう!(第1回・概要/設計編)

プログラミング入門
この記事は約3分で読めます。

今回はCSVファイルを分割するツールを開発してみましょう。

Google検索すると、フリーのツールを紹介する記事がヒットしますが、自作もそれほど難しくないので、数回に分けて、作り方を説明していきます。

今回は、その第1回目ということで、プログラムの概要と設計をしてみたいと思います。

概要を把握しよう

今回作るCSV分割プログラムの画面レイアウトは次の様になります。

レイアウトを見て頂くと分かると思いますが、分割したいファイルとヘッダ行数、分割行数(分割した1つのファイルに収める行数)を指定すれば、出力先フォルダに分割されたCSVファイルが出力されるというものです。

画面は至ってシンプルですね。

仕様を整理しよう

CSV分割ツールの仕様は以下の通りです。

  • 分割したいCSVファイル、及び出力先フォルダが指定(入力)できる
  • CSVファイルおよび出力先フォルダはダイアログでも選択できる
  • ヘッダの行数が指定できる
  • 分割する行数が指定できる
  • 文字コードはShift-JISのみ対応とする
  • 出力ファイルは元のCSVファイル名に連番を付加する

ここでダイアログというのが出てきましたが、これはWindowsでファイルを選択したり、フォルダを選択する時に表示される、おなじみのダイアログです。

<ファイル選択ダイアログの例>

<フォルダ選択ダイアログの例>

これらのダイアログは数行のコードを書くだけで、プログラムから簡単に利用できます。

フローで処理イメージをつかもう

フローチャートで処理手順を理解しておきましょう。

今回も分かりやすさを優先に処理手順(ロジック)をまとめました。

ザックリ説明すると、CSVファイルを一旦メモリに読み込んでから、ヘッダのみを別変数に退避します。

次に、メモリに読み込んだCSVのデータ部を、指定行数だけ取り出して、ファイルに出力します。

これを、取り出すデータが無くなるまで繰り返すという方法です。

この方法はフローチャートの箱1つ1つを、1つのかたまり(独立したブロック)としてプログラミングできるので、考えやすいというメリットがあります。

また、今回は扱いませんが、一旦メモリに読み込むことで様々なデータ加工が行いやすくなりますので、分割以外にも応用が効きます。

デメリットとしては、分割対象のCSVファイルを丸ごとメモリに読み込む必要があるため、ファイルサイズが巨大だとメモリー不足となり、分割することが出来ません。

それでも、パソコンに8GB程度のメモリが搭載されていれば、3.4GB(列数=200個、行数=100万行)程度のCSVファイルであれば余裕で分割可能です。

容量無制限のCSVファイルへの対応については、バージョンアップの際に解説したいと思います。

使うコントロールを決めよう

今回は画面項目がシンプルなので、Label、Button、TextBoxのコントロールだけを使います。

ファイル選択とフォルダ選択のダイアログは、コントロールとして張り付ける訳では無いので、ここには登場しません。

画面レイアウト作成の際、Label以外のコントロールには名前を付ける必要がありますが、それは次回詳しく説明します。

まとめ

ということで、今回は概要と簡単な設計を行ってみました。

次回はVisual Studio 2019 のプロジェクトを作成し、画面レイアウトと、空のイベントハンドラの作成までを行います。

タイトルとURLをコピーしました