最近のプログラミング言語には、変数名や関数名に日本語が使えるものがあります。たとえば、iPhone や Mac のプログラムを作ることができる 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 {
かとー.にめっせーじおくる("ちっ", 誰から: ぁたし)
}
}
これ、普通にビルドが通ってしまうんです。もちろん動きます。
ただ、書いてみて分かりましたが、日本語入力のオンオフが頻繁にあって面倒です。やはり実際の開発で使うのは無理があります。