最近の愚痴(プログラミングについて思うこと)
最近知ったのですが,プログラミングを始めてみようと思う世の中の人の多くがPythonから始めることを勧められているようです.理由としては「可読性が高い」,「書きやすい」,「環境構築が簡単」,「できることが多様」など挙げればきりがないでしょう...たしかにC言語などのメモリを直接触ることができるような言語に比べれば,注意するべき(意識を余儀なくされる)ポイントが少ないように思います.数年前まで私もこちらの立場だったのですが,最近はC言語から始めることを勧めてみたいなと思うようになりました.
理由としては,Pythonからプログラミングを学んだ人の多くがプログラミングのことをよく理解していないと思うからです.エラーが起こった時に「何で・どこで」エラーが起こっているのか?を理解することはプログラミングで最も重要なことなのですが,それをわかっていない.もう少し掘り下げるとプログラミングを理解するには,同時にコンピュータの仕組みを理解することも必要で,C言語から始めるとコンピュータの仕組みを嫌でも理解しないと動かないけど,Pythonはそのプロセスを無視しても動いてしまうということがあるのではないかと思います.
C言語から始めることを反対する立場からの意見としては,「初心者がつまづきやすいポイントがたくさんある」,「できることが地味でモチベーションがわかない」,「環境構築が複雑である」などの理由が散見されます.たしかに「プログラミングをかじってみたい」という人にとっては親しみやすさという点でPythonから触ってみるというのも一手という気もしますが,「プログラミングを理解して動かしてみたい」という人にはC言語の方が結果的に良いともいます.
まあプログラミングを仕事にしようと思っている人以外の「DIY家」はけっきょくのところ,ほとんどがライトユーザでPythonをなんとなく触るだけで十分なのだろう.ただAruduinoなどのマイコンを触りたい人はC言語ベースの言語が使われるケースがほとんどなので,組み込み系DIY家の人間はC言語を学ばないといけない.結論は無し.
PythonでCSVファイルを書き込みデータログをする
本題に入ります.「Pythonから導入するのはいかがなものか?」と上でさんざん述べていますが,私はセンサやモータなどのアクチュエータを触る以外は基本的にPythonで書くことが多いです.
そして,よく使うパーツの一つとしてcsvモジュールというものがあり,それを使ってセンサデータなどの時系列データをまとめることが多いです.記録したデータからグラフを作ったり,ロボットが移動した軌跡を動画化したり,とデータをまとめるのにもってこいです.csvファイルの作り方や読み込みことは他にもありますが,個人的にはcsvモジュールがお手軽かつ直感的だと思うので,ここではcsvモジュールの使い方について記載しておきます.
基本文
import csv
filename = 'data.csv'
f = open(filename, 'a', newline='')
csvWriter = csv.writer(f)
csvWriter.writerow(['data1', 'data2', 'data3'])
csvWriter.writerow([13, 26, 32])
f.close()
とりあえず,これをコピペするだけでcsvファイルを作るテストができます.実際はfor文などの反復で大量のデータを書き込んでいきます.
上から分けて簡単に説明を加えると,
import csv
filename = 'data.csv'
f = open(filename, 'a', newline='')
で書き込むcsvファイルを準備します.open()の第一引数はファイル名,第二引数はファイルオープンのモード(書き込み,読み込みなど),第三引数は行末の設定のです(厳密な話は冗長.”とすることで正しく書き込まれる).
csvWriter = csv.writer(f)
csvWriter.writerow(['data1', 'data2', 'data3'])
csvWriter.writerow([13, 26, 32])
f.close()
csv.writer()の引数に開いたファイルを代入し,csvを操作するcsvWriterというオブジェクトを作成します.そして,csvWriter.writerow()にコンマで区切られたリスト形式のデータを順に入れいていきます.満足のいくまでデータを格納できたらf.close()でファイルを閉じます.これを忘れるとファイルがコードを終了しても操作中と認識され,対象となるcsvファイルにロックがかかる場合がありますので忘れずにファイルを閉じましょう.
参考
やっぱり最高の参考書は結局のところ公式ドキュメントです.csvモジュールのドキュメントとファイルオープンの公式ドキュメントを載せておきます.csvのファイルオープンは公式ではwith openという方法を使っているようです.
最後に...
久しぶりの技術系記事でした.需要はほぼありませんが,自分にとってのメリットが結構あったりします.本当はハードウェア,電気電子回路,ソフトウェアを連載記事にして何かロボットを開発する様子を書けたら面白いななんて思っています.その類のログを残すなら動画にしてYoutubeになるのかなー
今年中にYoutuberになるかもね笑