もっと楽しむ! プログラミング言語 「豆」談義

第8回 『なでしこ――こんにちは世界』(2)

この記事を読むのに必要な時間:およそ 2 分

バックアップ対象を選別する

List1のスクリプトでは,バックアップ対象となるディレクトリ中にある全てのディレクトリをコピーしていますが,場合によってはコピーしなくてもよいディレクトリがあったりします。そこで,先のスクリプトを改造して,バックアップ対象外のディレクトリを指定できるようにしてみます。さらにバックアップを日毎に履歴できるように日付を退避先ディレクトリ名とするように改造してみます。

リスト2 必要なディレクトリだけを,日付付きのディレクトリにコピーする

バックアップ対象は「{マイドキュメント}なでしこ」です。
バックアップ先は「c:\_backup\」です。
除外ディレクトリリストは「ツール」です。

バックアップ先に,「{今日の"/"を"\"に置換}\」を追加する。 ←―――――――①
# バックアップの対象となるディレクトリ名を取り出す
バックアップ対象からファイル名抽出し,バックアップ先にそれを追加する

もし,バックアップ先のフォルダ存在するならば,
	「バックアップ実行済みです。」と言う。
	終了する。

バックアップ対象のフォルダ列挙して,反復する
	もし,除外ディレクトリリストが対象を含むなら,続ける ←―――――――②
	保存先フォルダは,バックアップ先&"\"&対象
	対象フォルダは,バックアップ対象&"\"&対象
	「バックアップ中:{保存先フォルダ}」を表示する。
	保存先フォルダにフォルダ作成する。
	保存先フォルダに対象フォルダをフォルダコピーする
ここまで
「バックアップが完了しました。」と言う。
終了する。

●含む(listがdirを) ←―――――――――――――――――――――――――③
	listを反復する
		対象とdirを文字列比較する
		もし,それが0なら
			真で戻る
	偽で戻る

日付操作

リスト2の①では,退避先となるバックアップ実行日付に対応したディレクトリパスを作っています。⁠今日」というのは実行時の日付を"yyyy/mm/dd"形式の文字列として返す命令で,その文字列を「置換」という文字列操作命令を使って"yyyy\mm\dd"へと変換しています。そしてさらに,置換した結果を変数「バックアップ先」がポイントしている文字列に追加(append)してバックアップ先のディレクトリへのパスを作り上げています。

日付操作のための命令には,ある時点をとるための「今年」「来月」といったものや時間計算のための命令,さらには日付を和暦に直す命令までそろっています。

"1900/1/1"を和暦変換して,それを表示する。

図1 和暦変換の実行結果

図1 和暦変換の実行結果

関数定義

プログラムを作っていると自分で命令(関数)を作りたくなるケースにどうしても遭遇します。今回は,コードの見通しをよくするためにバックアップ対象のディレクトリが除外リストに含まれているかどうかを判定する処理をユーザ定義の命令としてくくりだしていますリスト2の③⁠。

なでしこでは,この「●」が命令定義の印となっています。命令の本体は,仮引数を使って処理のロジックを組んでいます。前回ふれた特別な変数「それ」は命令の本体からのリターンが代入されることになり,この場合は「真で戻る」⁠偽で戻る⁠⁠)の部分が該当して,⁠return true」に相当します。

新しく定義した命令「含む」は,リスト2の②の箇所で使っています。どうでしょう,日本語らしい表現となっているでしょうか? 命令の名前がこれに落ち着くまでは名前そのものや助詞をどうしたら日本語らしくかつわかりやすくなるかと少し試行錯誤しましたが,このように命令の名前と引数の助詞を工夫することで,プログラムをより日本語として理解しやすくすることができます。

おわりに

なでしこのコードを読み書きしていると,⁠日本語は曖昧」だとか「ロジカルな記述に向いていない」というよく言われる台詞に非常に疑問を感じるようになりました。世界中に存在するどんな言語よりも厳密で,ロジカルであるはずの「プログラミング言語」として立派に日本語は使えているのですから,問題なのは「曖昧な書き方をしている書き手」なのではないでしょうか?――そんなことを考えていると,いっそのこと仕様書をなでしこで書いてみてはどうだろうか,とも考えたりします。


『もっと楽しむ! プログラミング言語「豆」談義』としてお送りしてきた本シリーズは,今回でひとまず終了となります。

どうでしょう,皆さんのアンテナに反応する言語はあったでしょうか?

このシリーズでご紹介できた言語は世にある言語のほんの一部に過ぎませんが,それでも「へーっ」とか「ほ~」と思ってもらえたり,さらに実際に動かしてみてもらえていたり,さらにさらに,この連載が新しい言語を習得するきっかけとなっていたりしたら,最高にうれしいです。

著者プロフィール

チーム北海道

居酒屋北海道をこよなく愛するエンジニア集団(伊藤清人,江川崇,荻原利雄,長谷川裕一,吉野雅人 以上株式会社豆蔵所属)。

URLhttp://www.mamezou.com/