プログラミング言語Javaでカップ焼きそばの作り方を書いてみた


Java 8の練習がてら書いてみました。

## 元ネタ

もしも村上春樹が『算数の問題』や『カップ焼きそばの説明』を書いたら→文体の絶妙なウザさが笑えると好評 - Togetterまとめ
http://togetter.com/li/975455

## ソース

```java
import java.util.*;
    
class PackedContent {
    public String 中身;
    public boolean パック入り;
    
    PackedContent(String 中身, boolean パック入り) {
        this.中身 = 中身;
        this.パック入り = パック入り;
    }
}
    
public class CupYakisoba {
    static List<PackedContent> 容器;
    static List<PackedContent> 手元;
    
    static PackedContent ソース;
    static PackedContent ふりかけ;
    static PackedContent かやく;
    static PackedContent スパイス;
    static PackedContent 麺;
    static PackedContent お湯;
    
    public static void main(String[] args){
        
        ソース = new PackedContent("ソース", true);
        ふりかけ = new PackedContent("ふりかけ", true);
        かやく = new PackedContent("かやく", true);
        スパイス = new PackedContent("スパイス", true);
        麺 = new PackedContent("麺", false);
        お湯 = null;
    
        容器 = new ArrayList<PackedContent>();
        容器.add(ソース);
        容器.add(ふりかけ);
        容器.add(かやく);
        容器.add(スパイス);
        容器.add(麺);
        手元 = new ArrayList<PackedContent>();
        
        // チェック
        System.out.println("【作る前】");
        System.out.println("容器の中身:");
        for(PackedContent e : 容器) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("手元にあるもの:");
        for(PackedContent e : 手元) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("");
        
        // ①ソース、ふりかけ、スパイスを取り出しておき、かやくを麺の上にあけ熱湯を注ぐ。
        容器.remove(ソース);
        手元.add(ソース);
        容器.remove(ふりかけ);
        手元.add(ふりかけ);
        容器.remove(スパイス);
        手元.add(スパイス);
        
        容器.remove(かやく);
        かやく.パック入り = false;
        容器.add(かやく);
        
        お湯 = new PackedContent("お湯", false);
        容器.add(お湯);
    
        // チェック
        System.out.println("【①ソース、ふりかけ、スパイスを取り出しておき、かやくを麺の上にあけ熱湯を注ぐ。】");
        System.out.println("容器の中身:");
        for(PackedContent e : 容器) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("手元にあるもの:");
        for(PackedContent e : 手元) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("");
    
        // ②3分たったら両手でフタを押さえ、湯出口よりお湯を捨てる。
        try{
            Thread.sleep(180000); // 3分 = 60 * 3 * 1000 ミリ秒
            容器.remove(お湯);
        } catch(Exception e) {}
    
        // チェック
        System.out.println("【②3分たったら両手でフタを押さえ、湯出口よりお湯を捨てる。】");
        System.out.println("容器の中身:");
        for(PackedContent e : 容器) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("手元にあるもの:");
        for(PackedContent e : 手元) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("");
        
        // ③ソースを麺によく混ぜ合わせ、ふりかけ・スパイスをふりかけて出来上がり。
        手元.remove(ソース);
        ソース.パック入り = false;
        容器.add(ソース);
        // TODO 混ぜるメソッドは面倒なので省略。誰か書いて。
        
        手元.remove(ふりかけ);
        ふりかけ.パック入り = false;
        容器.add(ふりかけ);
        
        手元.remove(ソース);
        ソース.パック入り = false;
        容器.add(ソース);
        
        手元.remove(スパイス);
        スパイス.パック入り = false;
        容器.add(スパイス);
        
        // チェック
        System.out.println("【作った後】");
        System.out.println("容器の中身:");
        for(PackedContent e : 容器) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
        System.out.println("手元にあるもの:");
        for(PackedContent e : 手元) {
            System.out.println(e.中身 + ", " + e.パック入り);
        }
    }
}
```

## 実行結果
注意：実際に実行するときはタイマーがウザいので、`Thread.sleep()`の数字を適当に小さくしてください。

     $ java CupYakisoba
    【作る前】
    容器の中身:
    ソース, true
    ふりかけ, true
    かやく, true
    スパイス, true
    麺, false
    手元にあるもの:
    
    【①ソース、ふりかけ、スパイスを取り出しておき、かやくを麺の上にあけ熱湯を注ぐ。】
    容器の中身:
    麺, false
    かやく, false
    お湯, false
    手元にあるもの:
    ソース, true
    ふりかけ, true
    スパイス, true
    
    【②3分たったら両手でフタを押さえ、湯出口よりお湯を捨てる。】
    容器の中身:
    麺, false
    かやく, false
    手元にあるもの:
    ソース, true
    ふりかけ, true
    スパイス, true
    
    【作った後】
    容器の中身:
    麺, false
    かやく, false
    ソース, false
    ふりかけ, false
    ソース, false
    スパイス, false
    手元にあるもの:
    


## 動作環境
Java 8で動作確認。コンパイルも成功しました。

    $ java -version
    java version "1.8.0_45"
    Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
    $ javac -version
    javac 1.8.0_45

## 補足

* 細かいネタを入れたかったですが、力尽きました。
* バグがあればコメント欄かプルリクで。
* ネタ的なツッコミがあったら、各自修正して書いてください。
* 他言語でのネタ歓迎。

以上です。