# ANCP Examples - 実例で学ぶ圧縮記法 ## 🎯 基本パターン ### 1. シンプルなBox定義 ```nyash // Nyash (31文字) box Point { init { x, y } } // ANCP (16文字) - 48%削減! $Point{#{x,y}} ``` ### 2. メソッド付きBox ```nyash // Nyash (118文字) box Calculator { init { result } birth() { me.result = 0 } add(x, y) { me.result = x + y return me.result } } // ANCP (59文字) - 50%削減! $Calculator{#{result}b(){m.result=0}add(x,y){m.result=x+y r m.result}} ``` ### 3. 継承/デリゲーション ```nyash // Nyash (165文字) box Dog from Animal { init { name, breed } birth(name, breed) { from Animal.init(name) me.breed = breed } bark() { return "Woof! I'm " + me.name } } // ANCP (87文字) - 47%削減! $Dog@Animal{#{name,breed}b(name,breed){@Animal.init(name)m.breed=breed}bark(){r"Woof! I'm"+m.name}} ``` ## 🚀 実践的な例 ### 4. P2Pノード実装 ```nyash // Nyash (287文字) box P2PNode from NetworkBox { init { id, peers, messages } birth(id) { me.id = id me.peers = new ArrayBox() me.messages = new MapBox() } connect(peer) { me.peers.push(peer) peer.addPeer(me) return me } broadcast(msg) { local i = 0 loop(i < me.peers.length()) { me.peers.get(i).receive(msg) i = i + 1 } } } // ANCP (156文字) - 46%削減! $P2PNode@NetworkBox{#{id,peers,messages}b(id){m.id=id m.peers=n ArrayBox()m.messages=n MapBox()}connect(peer){m.peers.push(peer)peer.addPeer(m)r m}broadcast(msg){l i=0 L(i" } } ```
答え ```ancp $User{#{name,email}b(name,email){m.name=name m.email=email}toString(){r m.name+" <"+m.email+">"}} ```
### 問題2 次のANCPコードをNyashに戻してください: ```ancp $Stack{#{items}b(){m.items=n ArrayBox()}push(item){m.items.push(item)}pop(){?m.items.length()>0{r m.items.pop()}r null}} ```
答え ```nyash box Stack { init { items } birth() { me.items = new ArrayBox() } push(item) { me.items.push(item) } pop() { if me.items.length() > 0 { return me.items.pop() } return null } } ```
--- これらの例を参考に、ANCPを使いこなしてAI時代の効率的な開発を実現しましょう!