2021-07-19
勝山市、中学生自身が開発する校内SNSによる学校DX by PCN勝山片瀬クラブ!
校内版SNS 中学生開発へ 勝山南部 つぶやき、画像 瞬時に閲覧:日刊県民福井Web
URLインポートでESモジュールを使っていので、JavaScript / Denoですね!

IchigoJamでプログラミングの基本が分かったら、JavaScriptで遊ぶのがオススメです。ゲームやツールづくりからAI、画像処理、音声、動画まで、幅広く楽しめます。

IchigoJamで扱える記憶容量はせいぜい100KB、現代のPCのHDDはTB単位なので、ざっと1000万倍もの巨大容量が自由自在!?

とはいえ、メインメモリはGB単位なので、1GBのファイルでさえExcelで開けません。そんなときはプログラミング!行単位で分割された大容量ファイルを扱うライブラリ「line-rw」を作り、CSVReader/CSVWriterを提供する「csv-rw」と、NDJSONに行単位アクセスを追加しました。


line-rw
readLine、writeLineと行単位でアクセスします。非同期関数なので、読み込み終了を待ってほしいときは await 付きで呼び出しましょう。 読み込みバッファを超えて改行を探すところで一工夫していますが、もうちょっと改善の余地があります。


csv-rw
上記 LineReader / LineWriterをそれぞれ使ったCSVReader / CSVWriterです。 CSVはダブルクォートを使って改行付きのデータを入れられるので、1行読んで途中なら更にもう1行読む感じで1レコード取得しています。


NDJSON
ワクチン接種数オープンデータで使われているNDJSONもLineReaderで真価を発揮! CSVと比べて容量は大きくなりがちですが、1行目を読む必要がなく項目が変化しても大丈夫な柔軟なデータ形式です。

ESモジュールなので、インポートすれば即使えます。 関数を足したい、更に効率を上げたいなどの場合にも、GitHubからcloneして改造できるオープンソース。 それぞれ試しに動かせる example、deno test -A でチェックできる、test ディレクトリを付けています。

・・・改行コードの問題を忘れていました。Windowsで要確認です。
そろそろ改行はLF(=10)のみ統一したい。

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS