1 名前:たかし [2015/12/25(金) 18:43:55.48 .net] 先生を募集します 先生!!
467 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 21:20:18.45 .net] ... button1_click(...) { show_hand(1); } ... button2_click(...) { show_hand(2); } ... button3_click(...) { show_hand(3); } void show_hand(int player_hand) { int comp_hand = get_comp_hand(); ...手を表示する処理をここに書く... switch(hantei(player_hand, comp_hand)) { ...勝ち負けを表示... } }
468 名前:takasi mailto:sage [2016/01/11(月) 21:24:17.30 .net] ありがとうございます 分からなかったらまた聞きます 行ってきます
469 名前:takasi mailto:sage [2016/01/11(月) 22:30:37.72 .net] 今日中に終わらなそうです
470 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:32:51.24 .net] 残りは明日にするか。 どこまでできた?
471 名前:takasi mailto:sage [2016/01/11(月) 22:42:42.02 .net] 判定して結果を表示させる所まで来ました あとはあいこのループ処理と画像の表示と音声のタイミングが合ってないのでそれを直すことです
472 名前:takasi mailto:sage [2016/01/11(月) 22:46:06.33 .net] ・スタートおした時のジャンケンポンの効果音 ・判定後のスタートをリセット ・画像のサイズをあわせる まだまだありました
473 名前:takasi mailto:sage [2016/01/11(月) 22:46:37.45 .net] 明日の授業までに終わらせておきます
474 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:48:43.00 .net] PlaySyncを使うとそこで処理が動かなくなる。 画像を変えるなら再生の前にするとよい。 一方、Playは非同期で動く。 非同期再生処理のタイミングを調整したいなら、スレッドを使うことになる。
475 名前:takasi mailto:sage [2016/01/11(月) 22:51:07.18 .net] 分かりました 頭をすっきりさせるためにお風呂に入ってきます
476 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/11(月) 22:51:07.43 .net] 今日もよくがんばった。おやすみ。
477 名前:takasi mailto:sage [2016/01/11(月) 22:51:32.48 .net] 本日もありがとうございました!!おやすみなさい
478 名前:takasi mailto:sage [2016/01/12(火) 00:56:08.92 .net] >>454 なんとか完成しました 今までは一つのメソッドに処理書いていたので楽でしたが 今回はメソッド同士の値の受け渡し?などがよく分かってなくて難しかったです 数こなしてなれるしか無いですね
479 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/12(火) 11:11:05.72 .net] >>478 add, commit, pushしてから、Githubでプルリクしなさい。
480 名前:takasi mailto:sage [2016/01/12(火) 16:48:13.54 .net] おはようございます プルリクエストしてみました。ちゃんとできていますでしょうか 体調不良のため途中で離脱するかもしれません
481 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/12(火) 17:14:09.31 .net] 今日の勉強会は休みにします。
482 名前:takasi mailto:sage [2016/01/12(火) 17:20:28.56 .net] 分かりました、自習します
483 名前:仕様書無しさん mailto:sage [2016/01/12(火) 18:49:16.21 .net] 先生、たかし君のペースでいいので是非データベースとの連携もご教示ください!
484 名前:takasi mailto:sage [2016/01/13(水) 13:50:41.92 .net] 病院行こうと思ったら午前で終わってました おはようございます
485 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:10:53.68 .net] ジャンケンゲームの続きだ。 https://github.com/katahiromz/JankenGUI これを適当なフォルダにcloneしてソースを眺めてみよ。
486 名前:takasi mailto:sage [2016/01/13(水) 19:26:21.36 .net] おはようございます 始めます
487 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:32:23.31 .net] Visibleプロパティをfalseにすると非表示になる。 SoundPlayer.Stopで音を止めることができる。
488 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:37:24.49 .net] コードを読んだ感想を述べよ。
489 名前:takasi mailto:sage [2016/01/13(水) 19:47:25.22 .net] 僕のぐっちゃぐちゃなコードに比べるとすごく綺麗にまとまっていて これはどういう動作をするコードなのかひと目で分かります 条件分岐の負けの判定の仕方でelse if ((3 + player_hand - comp_hand) % 3 == 1) を見てこれはすげえと思いました 全体のコード量は少ないですが、すっきりしていて感動しました そして自分にこんな綺麗に書ける自信が無くて胃が痛くなりました
490 名前:takasi mailto:sage [2016/01/13(水) 19:49:19.08 .net] こういうやり方もあるのかと色々発見がありました 以上、小学生並みの感想文でした
491 名前:takasi mailto:sage [2016/01/13(水) 19:52:11.35 .net] あとじゃんけんゲームがなかなかおもしろいです
492 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 19:57:19.20 .net] その判定は大学数学の剰余類という概念を使っている。 多分、大学一年生で習うだろう。
493 名前:takasi mailto:sage [2016/01/13(水) 20:04:12.87 .net] 初めて聞いた単語で胃が痛くなりました とりあえず頑張ります ちなみに僕は数学は大の苦手です 数学の知識があったほうがどう考えてもいいですね
494 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:04:33.55 .net] 今日はアプリの設定データについて勉強する。 アプリを終了した後でも、データを保存しておきたい場合、 ファイルやレジストリにデータを記録することになる。 レジストリはWindowsが持っている、階層構造を持ったデータベースで あり、ファイルとは異なる。
495 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:10:02.84 .net] 二つのTextBoxをフォームに配置し、さらにOKボタンとキャンセルボタンを置く。
496 名前:takasi mailto:sage [2016/01/13(水) 20:12:34.79 .net] 置きました
497 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:18:30.96 .net] OKボタンをダブルクリックして、次のコードを追加。 var key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\Takashi\MySoftware"); key.SetValue("Text1", textBox1.Text); key.SetValue("Text2", textBox2.Text); key.Close();
498 名前:takasi mailto:sage [2016/01/13(水) 20:20:17.35 .net] 追加しました
499 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:23:26.62 .net] プログラムを実行してOKを押す。これでレジストリに書き込まれた。 Win+Rキーを押してregeditと入力してEnterキーを押す。 これでレジストリエディターが起動する。 HKEY_CURRENT_USER\Software\Takashi\MySoftwareがあることを 確認せよ。
500 名前:takasi mailto:sage [2016/01/13(水) 20:28:09.63 .net] Tkashi\Mysofrwareとレジストリを確認しました
501 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:31:55.02 .net] 次は読み込みだ。フォームのLoadイベントに次のコードを追加。 var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); textBox1.Text = key.GetValue("Text1"); textBox2.Text = key.GetValue("Text2"); key.Close();
502 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:36:28.82 .net] 文字列リテラルに@が付いているのは\によるエスケープシーケンスを解釈しないためだ。 以前、"\n"は改行を表すと言った。"\t"はタブ文字だ。このように通常、""の中の\は特殊な解釈をする。
503 名前:takasi mailto:sage [2016/01/13(水) 20:41:47.46 .net] オブジェクト型はString型に代入できないと注意されたのでConvert.ToStringしましたが大丈夫でしょうか private void Form1_Load(object sender, EventArgs e) { var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); textBox1.Text = Convert.ToString(key.GetValue("Text1")); textBox2.Text = Convert.ToString(key.GetValue("Text2")); key.Close(); }
504 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:41:56.00 .net] レジストリはシステムの資源を占有するので、サイズの大きなデータを書き込むべきではない。 大きな設定データはファイルに記録する。 ではどこに設定ファイルを書き込めばいいか? 特殊フォルダのAppDataに書き込むのがいいとされる。
505 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:45:29.99 .net] >>503 key.GetValue("Text1").ToString(); でOKだ。
506 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:49:48.52 .net] 特殊フォルダの場所を取得するには次のように書く。 var path = System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
507 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 20:57:53.42 .net] 読み込みされるか実行して確認せよ。 次にレジストリエディタでMySoftwareキーを削除してプログラムを再起動せよ。 例外が発生するはずだ。実はキーが開けないときkeyはnullになる。 nullというのは無効なデータのことだ。
508 名前:takasi mailto:sage [2016/01/13(水) 21:01:26.06 .net] 読み込まれないです! https://i.gyazo.com/f2e5ff48bd5fa2390e783ff8d86d6c9e.png Form1_Loadは初めから存在してなかったので自分で作ったのですがこれが原因でしょうか
509 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:03:06.24 .net] キーが開けないときや作れないときはkey == nullになる。 このまま書き込んだり、読み込もうとすると例外が発生してしまう。 対処法はnullチェックをすることだ。 if (key != null) { ... key.Close(); }
510 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:04:38.96 .net] >>508 それはいったん消してプロパティウィンドウ からイベントを追加せよ。カミナリのアイコンだ。
511 名前:takasi mailto:sage [2016/01/13(水) 21:12:54.68 .net] >>507 例外がスローされるのを確認して >>509n ullチェックで回避しました
512 名前:takasi mailto:sage [2016/01/13(水) 21:19:18.77 .net] あ、読み込みも問題なくできました
513 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:20:52.39 .net] 課題。ジャンケンゲームでの勝ち・負け・引き分けの回数を レジストリに記録するようにせよ。
514 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:22:48.11 .net] アプリ設定に使ったファイルやレジストリキーを消すのは、 インストーラ側で行うことが多い。
515 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 21:34:51.21 .net] 課題が出来たら、プルリクせよ。残り時間は自習とする。
516 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 22:11:34.19 .net] 質問はありませんか?
517 名前:takasi mailto:sage [2016/01/13(水) 22:19:11.11 .net] 質問はありませんが、値の受け渡しで頭がぐるぐるしてます とりあえずsave_keyメソッドとload_keyメソッドを作りぐっちゃぐちゃやってます頑張ります
518 名前:takasi mailto:sage [2016/01/13(水) 22:45:21.86 .net] えーと、やりたいことは分かっているんですが思考が迷子です 時間がかかりそうなので宿題とさせて下さい えーとプログラミング適正無しでしょうか悲しいです
519 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 23:12:37.34 .net] ヒント: アプリ側で保持するのは、回数が増えた分だ。現在の回数ではない。 レジストリへのアクセスは読み書きを一度に行う。 アプリ側の増分だけレジストリの回数を増やした後でアプリ側の増分をゼロにする。 回数を増やすのは勝敗引き分けが決まったときに行う。 回数の増分はフォーム側ではなくプログラム側で保持する。
520 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/13(水) 23:16:19.59 .net] おやすみ。身体を冷やすなよ。
521 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:36:18.94 .net] ヘイ、ヨー! 始めっぞ
522 名前:takasi mailto:sage [2016/01/14(木) 20:40:53.10 .net] おはようごじます・・・
523 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:44:14.18 .net] さあーて、どこまでできたかなっ♪
524 名前:takasi mailto:sage [2016/01/14(木) 20:50:08.39 .net] 正直に言いますとまだ出来ていません あまりの出来の悪さに悲しみに暮れ寝て起きたら今です ○にたい
525 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:54:55.82 .net] ヘイ、まずは、三つのint型のメンバー変数を追加するよぉ。 初期値はゼロだぜぃ。 int kachi_count = 0; int make_count = 0; int aiko_count = 0;
526 名前:takasi mailto:sage [2016/01/14(木) 20:56:23.94 .net] 追加しました
527 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 20:58:47.83 .net] お次は、勝敗判定の箇所を探してみよー。 hantei関数の呼び出しをしている場所があるよね。 ここで判定に応じてカウント変数を1つ加算だよお!
528 名前:takasi mailto:sage [2016/01/14(木) 21:02:23.71 .net] 加算できました
529 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:03:36.91 .net] その後にレジストリのカウント値を更新だ。 CreateSubKeyはキーがなければキーを作成してそれを開く。 あればそのまま開く。 カウント値はGetValueで取得、SetValueで設定だ。 しかしまだ値を設定していないときにGetValueしたらどうなるか?
530 名前:takasi mailto:sage [2016/01/14(木) 21:05:55.97 .net] 例外がスローされます
531 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:17:48.07 .net] >>530 ノーノー、nullが返される。 var value = key.GetValue("KachiCount"); int count = kachi_count; if (value != null) { count += Convert.ToInt32(value); } ...
532 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:20:30.78 .net] そしてcount.ToString()をSetValueしてからkachi_countをゼロにする。 他のカウント変数も同様だ。
533 名前:takasi mailto:sage [2016/01/14(木) 21:23:48.93 .net] どのタイミングでキーを作成しなければいけないのか分からないです
534 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:25:18.15 .net] カウントを表示するのは別のフォームで行う。 新しくフォームを追加だ。 その上にラベルをいくつか追加。 フォームのLoadイベントでレジストリを読み込んでラベルテキストをセット。 OKボタンでフォームを閉じるようにする。
535 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:28:59.98 .net] >>533 いつカウントを更新するかは、自由に決めることができる。 アプリが終了するときか、フォームが閉じたときか、カウンタが更新したときか。 ここではすぐに更新してほしいので、hantei関数が呼ばれた後に レジストリを更新する。
536 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:33:18.31 .net] どうだね? 作れそうかな?
537 名前:takasi mailto:sage [2016/01/14(木) 21:33:36.08 .net] >>534 は private void Form2_Load(object sender, EventArgs e) { var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); label4.Text = key.GetValue("KACHI").ToString(); label5.Text = key.GetValue("MAKE").ToString(); label6.Text = key.GetValue("AIKO").ToString(); } で大丈夫ですよね
538 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:35:57.02 .net] >>537 try/catchしないならkeyとvalueのnullチェックが必要だよ。
539 名前:takasi mailto:sage [2016/01/14(木) 21:36:07.69 .net] レジストリの更新はメソッドを新たに作成してそこでやらせたほうがいいですよね
540 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:37:03.59 .net] >>539 そうだね。
541 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:45:20.04 .net] \MySoftware のところは \JankenGUI にしておこう。
542 名前:takasi mailto:sage [2016/01/14(木) 21:46:11.30 .net] var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Takashi\MySoftware"); if (key != null) { var value_kachi = key.GetValue("KACHI"); var value_make = key.GetValue("MAKE"); var value_aiko = key.GetValue("AIKO"); if (value_kachi != null) label4.Text = key.GetValue("KACHI").ToString(); if (value_make != null) label5.Text = key.GetValue("MAKE").ToString(); if (value_aiko != null) label6.Text = key.GetValue("AIKO").ToString(); こういうことでしょうか
543 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:48:05.12 .net] if (value_kachi != null) label4.Text = key.GetValue("KACHI").ToString(); ちょっと無駄があるな。 if (value_kachi != null) label4.Text = value_kachi.ToString(); こっち。
544 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 21:57:22.37 .net] git add -a git commit -m "add counters" git push origin master
545 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:05:30.78 .net] どうだね? 何があっても、とにかく陽気に行こうぜ
546 名前:takasi mailto:sage [2016/01/14(木) 22:13:32.93 .net] もう少しで動かします
547 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:14:28.61 .net] どうした? ん?
548 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:21:25.15 .net] ブラインドタッチの特訓と基本情報の取得が必要だな。 1ヶ月以内にブラインドタッチをマスターして、 1年以内に基本情報を取得しなさい。
549 名前:takasi mailto:sage [2016/01/14(木) 22:24:31.61 .net] 上手くいきません とりあえず現時点のコードをコミットした方がいいですか
550 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:25:37.85 .net] レジストリの更新はカウント加算の後だ。
551 名前:takasi mailto:sage [2016/01/14(木) 22:27:44.43 .net] ブラインドタッチ一応できます・・・ 実質的な死刑宣告と捉えたほうが良いですか・・・
552 名前:takasi mailto:sage [2016/01/14(木) 22:29:36.69 .net] switch (hantei(player_hand, comp_hand)) { case HanteiKekka.HANTEI_KACHI: label3.Text = "あなたの勝ちです"; kachi_player.Play(); ++kachi_count; save_key("KACHI"); break; case HanteiKekka.HANTEI_MAKE: label3.Text = "あなたの負けです"; make_player.Play(); ++make_count; save_key("MAKE"); break; case HanteiKekka.HANTEI_AIKO: label3.Text = "あいこ"; aiko = true; ++aiko_count; save_key("AIKO"); break; }
553 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:30:23.51 .net] じゃあ、pushしといて。 明日見るから。
554 名前:takasi mailto:sage [2016/01/14(木) 22:31:57.33 .net] わかりましたpushしておきます
555 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/14(木) 22:32:05.26 .net] 今日はおやすみ。
556 名前:takasi mailto:sage [2016/01/14(木) 22:33:02.13 .net] すみませんでした おやすみなさい
557 名前:takasi mailto:sage [2016/01/14(木) 23:36:49.80 .net] $ git push origin master remote: Permission to katahiromz/JankenGUI.git denied to takasi-desu. fatal: unable to access 'https://github.com/katahiromz/JankenGUI/': The requested URL returned error: 403 ぐぬぬ
558 名前:仕様書無しさん mailto:sage [2016/01/15(金) 00:55:53.21 .net] transitive.info/article/git/command/remote/
559 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 01:19:31.01 .net] あ、フォーク忘れてた? ごめんね。
560 名前:takasi mailto:sage [2016/01/15(金) 02:12:03.82 .net] んぐぐぐぐぐぐぐ プスプスプスシューーーーーーーーーーー
561 名前:takasi mailto:sage [2016/01/15(金) 02:20:50.29 .net] なぜでしょうpushができません
562 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 07:48:52.11 .net] >>561 自分のリポジトリじゃないからね。 最初にforkすべきだった。 pushしなくていいよ。変更点少ないし。
563 名前:takasi mailto:sage [2016/01/15(金) 08:22:44.17 .net] 分かりました 動かして見た感じでは問題はなかったです https://gyazo.com/3d005abe029830ef80e9f69be763228f https://gyazo.com/567c6437b66c8bd4b84a6a6c8f59096c https://i.gyazo.com/dfea862fc1e257c9e54c9e28edeb757f.png
564 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 16:39:11.05 .net] いくつか注釈しておこう。 引数がゼロ個の関数を作ることができる。 save_keyは引数のない三つの関数に分けた方がいい。 記録がない場合はゼロ回として扱うべきだ。 異常な表示にならないようにすべての場合の「状態」を管理しないといけない。
565 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 19:39:31.24 .net] JankenGUIにリソースのアイコン(*.ico)を追加せよ。フリー素材で構わない。 可能ならばJankenGUIに署名を行え。 JankenGUIをReleaseビルドせよ。 Inno Setupをダウンロード&インストールせよ。
566 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 19:41:08.11 .net] Inno Setupのウィザードに従ってインストーラのスクリプト(*.iss)を試作せよ。 スクリプト中の絶対パスを相対パスにせよ。 JankenGUIが使っている.net frameworkのバージョンを確認せよ。 次のサイトを参考にインストール時に.net frameworkの有無をチェックするようにせよ。 qiita.com/bellx2/items/14ac4e02283d5c1ef12b
567 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/15(金) 20:09:15.33 .net] 今日はインストーラ作成を行う。今回の課題は英語ができないと難しいかも知れないな。 質問が有ったらお気軽に。