昨日の泥

けれど夕陽はお前と仲間の髑髏を映す

ギャルグラミング

最近のプログラミング言語には、変数名や関数名に日本語が使えるものがあります。たとえば、iPhoneMac のプログラムを作ることができる Swift という言語では、予約語以外なら平気で日本語が使えてしまいます。だったらギャルが書いたみたいなソースコードも作れてしまうのではないかと思ってやってみました。

先に言っておきますが、ギャル感が古くさいのは放っておいてください。

例えば、こんな構造体を用意します。

struct 山田学園のせーと {
    var なまぇ: もじ
    var がくねん: 学年
    var せーべつ: 性別
    var おかね: 金額
    var めっせーじ = [(山田学園のせーと, もじ)]()

    init(なまぇ: もじ, がくねん: 学年, せーべつ: 性別, おかね: 金額 = 0) {
        self.なまぇ = なまぇ
        self.がくねん = がくねん
        self.せーべつ = せーべつ
        self.おかね = おかね
    }
}

もじ、学年、性別は構造体の外側でこんな風に定義しておきます。

typealias 学年 = UInt8
typealias 金額 = UInt32
typealias もじ = String

enum 性別 {
    case ぢょし
    case だんし
    case ほか
    case わからない
}

学年は堅実に 8 ビットの符号なし整数を使っていますが、金額に 32 ビット使ってるあたりに欲が見えます。続いて構造体にプロパティやファンクションを追加します。

struct 山田学園のせーと {
    var なまぇ: もじ
    var がくねん: 学年
    var せーべつ: 性別
    var おかね: 金額
    var めっせーじ = [(山田学園のせーと, もじ)]()

    init(なまぇ: もじ, がくねん: 学年, せーべつ: 性別, おかね: 金額 = 0) {
        self.なまぇ = なまぇ
        self.がくねん = がくねん
        self.せーべつ = せーべつ
        self.おかね = おかね
    }

    // おかねの(ある・なし)はんてー
    var おかねないよー: Bool {
        get {
            return おかね == 0
        }
    }
    // おかねをぁげる。たりたらニコニコ、たりなかったらぶんすか
    mutating func おかねぁげる(きんがく: 金額, var 誰に: 山田学園のせーと) -> Bool {
        if おかね >= きんがく {
            おかね -= きんがく
            誰に.おかね += きんがく
            return true
        }
        else {
            return false
        }
    }
    // メッセージをもらってめっせーじ帳にかく
    mutating func にめっせーじおくる(めっせーじ: もじ, 誰から: 山田学園のせーと) {
        めっせーじ帳.append((誰から, めっせーじ))
    }
}

これを使って次のように書くことができます。

    var ぁたし = 山田学園のせーと(なまぇ: "ぁたし", がくねん: 2, せーべつ: .ぢょし)
    var かとー = 山田学園のせーと(なまぇ: "加藤", がくねん: 2, せーべつ: .わからない, おかね: 10000)

    if ぁたし.おかねないよー {
        if かとー.おかねぁげる(2000, 誰に: ぁたし) {
            かとー.にめっせーじおくる("ぁりがと", 誰から: ぁたし)
        }
        else {
            かとー.にめっせーじおくる("ちっ", 誰から: ぁたし)
        }
    }

これ、普通にビルドが通ってしまうんです。もちろん動きます。

ただ、書いてみて分かりましたが、日本語入力のオンオフが頻繁にあって面倒です。やはり実際の開発で使うのは無理があります。