今日のお題は『一定の規則で並んだテキストをプログラムで処理して並び替える』というものです。した処理は、定型処理によくあるものです。基本的な方法を学ぶことで、いろいろなデータに応用できます。詳しいお題を確認してみましょう。FBで実際にあった依頼なお、今回のお題は、Facebookで見つけたものです。日本のオープンソース界を大いに盛り上げているびぎねっとの宮原さんが「一杯奢る」のでプログラムを作って欲しいと書き込んでいたものです。それは、以下のようなものでした。以下のような4行でひとまとまりのデータを表すテキストファイルがあります。これを日付順(新しい順)に並び替えるプログラムを作ってください。日付1タイトル1URL1日付2タイトル2URL2日付3タイトル3URL3...これを図にしてみると、以下のようになります。筆者は「これならすぐ作れるし、いつもお世話になっているから作ろう!」と思ったのです。いつもみんなのために頑張っている宮原さんのため、あるいは「一杯奢る」の威力が凄かったため(?)、あっという間に、たくさんの方がこの問題を解いてしまっていました。言え、この手のネタは定期的にあるものです。そこで、読者の皆さんと一緒に、プログラムを作って、次回奢ってもらえる機会に備えることにしましょう!ポイントはデータを一つずつ分けて配列に入れることそもそも、手元のテキストデータを任意の順番で並び替えたいという場面は意外と多いものです。それでは、この問題をなでしこで解いていきましょう。したテキストのデータを処理する場合、だいたい一つのデータが一行になっているものが多いものです。その代表的なデータが、CSV形式のデータです。今回のお題のデータでは、四行ごと(三行のデータ+空行)で、一つのデータとなっています。この特徴を掴んで、データを二次元配列に変換して処理するとうまく処理できます。一度、配列変数に変換する理由ですが、なでしこの内部形式である配列形式にしてしまえば、並び替え(ソート)などのデータ処理が容易になるからです。手順を図にしてみると、以下のようになります。テキストデータを二次元配列変数に変換し、そこで並び替えなどの処理を行います。処理後にテキスト形式で出力するという手順です。データを一度二次元配列にすると処理しやすいただし、筆者の経験上、この手のデータは手動で作成するため、データがたくさんあると正しく四行ずつになっていることは希です。いう事かと言うと、途中に間違って入力した不完全なデータ(日付とURLだけでタイトルが抜けている、または、無駄な改行が多く含まれている)が紛れ込んでいることが多くあるからです。そのため、データの間違いをチェックする機構も一緒に作ることが多いです。今回はプログラムをシンプルにするために、多少壊れたデータでも対処できる仕組みを考えてみます。このデータの並びですが、よくよく見ると、各データの区切りに改行が二つあるという点に注目できます。そこで、改行二つを区切り記号にして区切れば、手軽にデータを分割できます。以下のプログラムを、なでしこ3Web簡易エディタに貼り付けて実行してみましょう。対象をトリムして、改行で区切る。それを結果に配列追加。(*2)「日付順関数」で結果を配列カスタムソート。