以下のコードは作成途中です。
参考にしてください。