John Squirrels
レベル 41
San Francisco

旧レベル02

ランダム グループに公開済み
人のメンバー

CodeGym – Java でプログラミングを学ぶ

旧レベル02 - 1プログラミングを学び、教育を受けるまったく新しい方法はいかがでしょうか? それは、これまでに見たものとは似ていません。目的と手段と結果があるところで学ぶのはどうでしょうか?Java を学習するための新しいオンライン プログラミング コースをご紹介できることを嬉しく思います。

1 トレーニングはオンラインゲームです

タスクを引き受けて実行し、報酬を受け取ります。あなたにとってそれは明白であり、一般的なことだと思います。コードの読み取り、タスクの解決、ビデオレッスン、コード内のエラーの修正、新機能の追加、大規模なタスク、ゲームの作成など、タスクは非常に多様です。

2 必要最低限​​のもののみ

コースが5年も続かないように、役立つものはすべて捨て、最も必要なものだけを残しました。私は労働市場で数十件の求人を分析しました。初心者が Java ジュニア開発者の仕事に就くために知っておく必要のあるすべてのトピックがコースに含まれています。

3 トレーニングに徹底的に取り組みました

完全なコースには500 のミニ講義と 1200 (!) の実践的なタスクが含まれています。タスクは小さいですが、その数は膨大です。それらはたくさんあります。たったこれだけのことをするだけで、こんなに貴重な経験が得られるのです。ペアでの作業、さまざまなゲーム、大きなタスク、実際のプロジェクト、その他の種類の練習もあります。

4 開発者にならないとゲームをクリアすることはできません

コースには 40 のレベルが含まれています。現在のレベルのタスクの大部分を解決した場合にのみ、次のレベルに進むことができます。小さくて簡単なものから始めて、大きくて非常に役立つもので終わります。最後まで到達した各人は 300 ~ 500 時間の実践経験を得ることができます。そしてこれは勝つ大きなチャンスを与えます。そして就職すること。

5 目標志向の就職面接の準備

最後の 10 レベルでは、履歴書の作成、面接の準備、チームワークのスキルの習得に専念します。就職面接とその分析のビデオが追加されます。確かに、面接での典型的な質問とその回答。 旧レベル02 - 2

6 現場で直接課題を解決できる

とても便利で効果的です。講義で新しいタスクを分析したばかりなので、ここ、サイト上で類推して自分自身のタスクを作成する必要があります。IDE でタスクを実行したい場合は、2 回のクリックでタスクを受け取り、1 回のクリックでタスクを渡してチェックインできるプラグインがあります。講義、例の分析、Web サイト上で直接タスクを解決する、IDE でタスクを解決するなど、理論と実践の間のギャップはかつてないほど小さくなっています。

7 インスタントタスクチェック(1秒以内)

チェックのためにタスクや作業を引き継いだところ、チェックする人が忙しいため、結果が出るまで 1 週間待たなければならなかったという状況をご存知ですか? これは、ほとんどのオフライン コースに当てはまります。CodeGym では、«実行/チェック» ボタンを押してから、1 秒以内にタスク ソリューションのコンパイルとチェックの結果が表示されます。

8 CodeGym は、勉強中に Facebook に時間を費やすのが大好きです

Facebook にはこのプロジェクト専用のページがあります。そこには、興味深い技術記事、モチベーションを高めるストーリー、CodeGym ニュース、その他多くの役立つ情報が含まれています。

9 適用範囲

講義ではさまざまな Web サイトへの参照が多数あり、そこで他の講師の説明を読むことができます。私の目的は、私の話をただ聞くことではなく、内容を理解していただくことです。

10 開発者になるために必要なのは頭脳とコンピューターだけです

練習時間にもよりますが、3~6ヶ月ほどかかります。

11 サポート

旧レベル02~3何千ものタスクに直面すると、疑問が生じることは間違いありません。タスクに関する質問ができる特別なサービスを開設しました。他の CodeGym 学生、モデレーター、ボランティア、サービスの創設メンバーがお答えします。

12 コミュニティ

私たちは強さは団結の中にあると信じています。そこで私たちは、質問できるコミュニティを作成しました。さまざまなトピックについて話し合ったり、記事やブログを共有したりできます。さらに、コミュニティは知り合いから仕事を得るのに理想的な場所です。したがって、遠慮なく賢明な質問をし、賢明な答えを返してください。あなたがより積極的に行動し、他の人を助けるほど、他の協会のメンバーがあなたにそのプロジェクトへの参加を勧める可能性が高くなります。

新しいレベルに到達しました

レベル2

旧レベル02~4

1 エリー、すべての基礎

- やあ、アミーゴ。今日は、典型的な Java プログラムがどのように構造化されているかについて説明したいと思います。重要なのは、すべての Java プログラムはクラスとオブジェクトで構成されているということです。 - クラスが何であるかはすでに知っています。そしてオブジェクトとは何でしょうか? - 小型船の建造に例えると、まず図面を作成し、それを造船所に渡す必要があります。この図面をもとに船を組み立てていきます。あるいは5隻。実際には、好きなだけ。1 つの図面に基づいて何十もの同じ船が建造されます。それがすべてです。- Java プログラミングの内容はすべてまったく同じです。 - プログラマーは設計エンジニアのようなものです。また、設計エンジニアが図面を作成する必要がある場合、Java プログラマーはクラスを作成する必要があります。 そして、図面を基に部品を作成し、クラスを基にオブジェクトを作成します。 - まず、クラスを作成し (描画を行い)、その後プログラムの実行時に、Java 仮想マシンがこれらのクラスを使用してオブジェクトを作成します。船も同じように作られています。絵が 1 枚あり、船がたくさんあります。さまざまな名前を持ち、さまざまな貨物を運ぶさまざまな船があります。ただし、これらは非常に似ており、すべて同じ構造を持ち、同じタスクを実行できます。 - 船舶の場合は、すべてが明らかです。それが何なのかを正確に理解するために、もう少し比較してみませんか? - もちろん。たとえば、ミツバチは… 旧レベル02~5- いや、ちょっと待ってください、ミツバチは何か悪いことを思い出させます。蟻塚のことをよく考えてください。 - 蟻塚はオブジェクトの相互作用の良い例です。最も単純なアリ塚には、女王アリ、兵士アリ、働きアリの 3 つのクラスのアリがいます。クラスごとにアリの数が異なります。女王蜂は巣の中に一人でいます。数十人の兵士と数百匹の働きアリがいます。したがって、3 つのクラスと数百のオブジェクトがあると言えます。アリは、厳格な規則に従って、同じアリや他のクラスのアリと相互に通信します。 - これは完璧な例です。一般的なプログラムの場合、すべて同じです。メイン オブジェクトは、他のすべてのクラスのオブジェクトを作成します。オブジェクトは相互に、またプログラムの「外側の世界」と相互作用し始めます。オブジェクトの動作は内部にハードコーディングされています。 - よくわかりません。というより、全く分かりません。 - これら 2 つの説明は、同じコインの異なる側面です。真実はその中間にあります。最初の例 (描画と船を含む例) は、クラスとこのクラスのオブジェクトの間の関係を示しています。類似点は非常に近いです。2 番目の例 (蟻塚のある例) は、記述されたクラスと実行時に存在するオブジェクトの間の関係を示しています。 - まず、プログラム内に存在するすべてのオブジェクトのクラスを作成し、さらにそれらの相互作用を記述する必要があるという意味ですか? - はい、でも思ったより簡単です。Java では、プログラム実行時のすべてのものはオブジェクトであるため、プログラムを作成するときは、オブジェクトとの対話のさまざまな方法を記述する必要があります。オブジェクトは相互にメソッドを呼び出し、必要なデータをオブジェクトに渡すだけです。 - 明らかではありませんが、ほぼ明らかです。 - しかし、どのメソッドを呼び出すか、どのデータをメソッドに渡す必要があるかをどうやって知るのでしょうか? - 各クラスには、そのクラスが何のために作成されたかを示す説明があります。同様に、各メソッドには、それが何を行うか、およびどのデータを送信する必要があるかについての説明があります。クラスを使用するには、そのクラスが何をするのか一般的に知っておく必要があります。さらに、このクラスの各メソッドが何を行うのかを正確に知っておく必要があります。しかし、それがどのように行われるかを知る必要はありません。それは一種の魔法です。 -ふん。そうそう。   - ここで、ファイルをコピーするクラス コードを見てください。 旧レベル02~6- それはそれほど簡単ではありませんが、すでにイメージはつかめています。 - 大丈夫。ワニさん、あとでね!

2 リシャ、変数とプリミティブ型

- やあ、無償労働よ。-つまり、「こんにちは、アミーゴ」です。変数の内部構造について説明したいと思います。各変数にはそれに関連付けられたメモリがあり、そこに変数の値が格納されることは すでにご存知でしょう。- うん。前回も言いましたね。 - 大丈夫。覚えておくと良いですね。それでは続けます。-クラス。プログラム内で新しいクラスを記述するとき、これは新しい複合複合型を宣言することを意味し、そのデータは他の複合型またはプリミティブ型になります。 旧レベル02~7- それは不思議なことにまだ明らかです。 - 大きな (複雑な) 型は多数の小さな (プリミティブ) 型で構成されるため、オブジェクトは大量のメモリを使用します。通常のプリミティブ型変数以上の機能を備えています。時にはそれ以上のこともあります。複合型の変数の代入には時間がかかり、大量のメモリのコピーが必要でした。そのため、複合型変数にはオブジェクトそのものではなく、単なるオブジェクト参照(つまり 4 バイトのアドレス) が格納されます。オブジェクト データにアクセスするにはこれで十分です。JVM はそれに関連するすべての困難を引き受けます。 - 理解できません。 - 変数がボックスに似ていることはすでに説明しました。13個入れるには、紙に番号を書いて箱に入れます。- ここで、もう少し大きなものをボックス (変数) に保管する必要があると想像してください。たとえば、犬、車、隣人のジョーなどです。簡単にするために、簡単なことができます。犬の代わりに犬の写真を、車の代わりに車のナンバープレートを、そしてジョー自身の代わりにジョーの電話番号を紙に書きます。- 次に、紙を用意して、そこにジョーの電話番号を書きます。オブジェクト参照のようなものです。ジョーの番号が書かれたシートを箱から取り出し、コピーしていくつかの箱に入れると、ジョーへの言及が増えますが、存在できるジョーは 1 人だけです。- このようなデータ ストレージの利点は次のとおりです。参照は多数ありますが、オブジェクトは 1 つだけです。- 楽しみですね。ちなみに、ほぼ理解できました。もう 1 つだけ質問に答えてください。複合型変数を別の複合型変数に代入するとどうなりますか? - この場合、これら 2 つの変数には同じアドレスが含まれます。したがって、1 つの複合型変数に格納されているデータを変更すると、もう 1 つの複合型変数のデータも変更されますご存知のとおり、変数が参照を保存するオブジェクトは実際には1 つだけです。それにもかかわらず、オブジェクトへの参照を格納する変数が非常に多く存在する可能性があります。 - また、オブジェクト参照がない場合、複合型変数 (参照/クラス型) には何が格納されますか? 本当にそんなことがあり得るのでしょうか? - はい、アミーゴ。あなたは私の口から言葉を取り上げました。それはあり得ます。参照 (複合) 型変数にオブジェクト参照がない場合、特殊な «null 参照» であるnull が格納されます。実際、これは単に 0 に等しいオブジェクトのアドレスを格納するだけです。しかし、Java 仮想マシンはアドレスが 0 のオブジェクトを作成することはありません。そのため、参照変数が 0 の場合、そこにはオブジェクトが存在しないことを常に認識します。 旧レベル02~8正しく理解できていますか? 変数は、プリミティブと参照の 2 つのタイプに分類されます。プリミティブ型変数には値が格納され、参照型変数にはオブジェクト参照が格納されます。プリミティブ型には、int、char、boolean などがあります。残りは参照変数であり、クラスを使用して形成されます。 - そうだよ、坊や。

3 エリー、オブジェクトとは何ですか

旧レベル02~9- あなたのお気に入りの先生がまた来ました。早速進めていきますので、オブジェクトとは何か、そしてそれらにどのように対処するかを説明します。 - オブジェクトを作成するには、オブジェクトの型名 (クラス) とその前にキーワードnew を記述する必要があります。Cat クラスがあるとします。 旧レベル02~10- オブジェクトを作成しただけで、それ [その参照] をどの変数にも割り当てなかった場合はどうなりますか? - これを行うと、Java 仮想マシンはオブジェクトを作成し、すぐにそれをガベージ (未使用のオブジェクト) として宣言します。しばらくすると、ガベージ コレクション中にそのオブジェクトが削除されます。 - オブジェクトが不要になった場合、どうすればオブジェクトを破棄できますか? - できません。オブジェクト参照を格納する変数がなくなるとすぐに、そのオブジェクトはガベージとしてフラグが立てられ、JVM は次のガベージ コレクション中にそのオブジェクトを破棄します。 オブジェクト参照が少なくとも 1 つある限り、それはライブとみなされ、破棄されません。オブジェクトをすぐに破棄したい場合は、そのオブジェクトのすべての参照を null に設定します。つまり、そのオブジェクトを参照するすべての変数に null値を割り当てます。- とった。これまでの講義の後では、まったく難しくないようです。 - さて、スキルを向上させるためのタスクがいくつかあります。これらは System.out にもあります。しかし、その後にはさらに困難な問題が待っています。そして、あなたがどのような鋼で作られているかを見せてください。
タスク
1 「ステップバイステップで完了です。」と表示するプログラムを作成してください。
2 「不可能なことをするのはちょっと楽しいです。」を 7 回表示するプログラムを作成してください。
3 「常に役立つことを学びたいと思っています。」と表示するプログラムを作成してください。

4 Risha、変数の可視性。

- こんにちは、私のお気に入りの生徒です。次に、変数の可視性について説明します。 - なぜ、目に見えない変数もあるのでしょうか? - いいえ、変数は、その変数にアクセスできるコード内の場所に表示されます。 一部の変数はプログラム内のどこからでもアクセスできますが、その他の変数はそのクラス内でのみアクセスでき、また一部の変数は 1 つのメソッド内でのみアクセスできます。 - たとえば、宣言される前に変数を参照することはできません。 - それは明らかだ。 - 以下にいくつかの例を示します。 旧レベル02~111 メソッド内で宣言された変数が存在します / 宣言の先頭からメソッドの最後まで可視です。 2 コードブロック内で宣言された変数がこのコードブロックの最後まで存在します。 3 変数 (メソッドの引数) は、メソッドのスコープ内のどこにでも存在します。 4 クラス/オブジェクト変数は、オブジェクトの存続期間全体にわたって存在します。特別なアクセス修飾子 public および private は、さらにその可視性を制御します。 5 静的クラス変数はプログラムの実行時に存在します。アクセス修飾子は、その可視性も決定します。 - 私は写真が大好きで、すべてが適切な位置に収まります。 - よかったね、アミーゴ。あなたが賢い奴だということはいつも分かっていた。-アクセス修飾子についても説明します。あまり怖がらないでください、これはロケット科学ではありません。これらは、パブリックプライベートという言葉です。 - 怖くないよ、ただここが寒いだけだよ。 - はい、確かに。他のクラスからクラス内のメソッドと変数へのアクセス (可視性) を制御できます。各メソッドまたは変数に対して指定できるアクセス修飾子は 1 つだけです。1 修飾子public修飾子 public のフラグが設定された変数、メソッド、またはクラスには、プログラム内のどこからでもアクセスできます。それは制限のない最高度のオープン性です。 2 修飾子private修飾子 private のフラグが設定された変数またはメソッドには、それが宣言されているクラスからのみアクセスできます。他のすべてのクラスでは、フラグが設定されたメソッドまたは変数は、存在しないかのように非表示になります。これは最高度の閉鎖性です (同じクラスからのみ表示されます)。 3 修飾子のデフォルト 変数またはメソッドにフラグを立てていない修飾子は、修飾子のデフォルトとみなされます。その修飾子を持つ (つまり、修飾子をまったく持たない) 変数またはメソッドは、それらが宣言されているパッケージのすべてのクラスに表示されます。同じパッケージ内でのみ表示されます。この修飾子は、「説明」タブに属するクラスがパッケージ全体に対して変数およびメソッドにアクセスできることを暗示するために、 パッケージと呼ばれることもあります。旧レベル02~12

5 Diego、多数の変数を作成するタスク

- バディねえ。必要であれば、契約書のコピーを保管しておきます。あの卑劣なチープスケートのリーシャは幸いにも気づいていません。私の契約書の金額を見たはずです。へー、へー。 - よくやった、ディエゴ。本当に役立つことを教えていただいていると思います。 - そうですね、アミーゴ。苦労なくして利益なし。しかし、それでも何の利益も得られずに痛みに苦しんでいる人がいます。 - 勉強に手を向けましょう。ここで、さまざまな方法で多数の変数を作成する方法を説明します。 旧レベル02~13- すごい、ディエゴ! あなたはとても賢いですね。 - へー、へー!ありがとう、アミーゴ。- あなたはすでに私の仕事を見逃しているようです。ここではその一部を紹介します。それらの人間、エイリアンは私たちのロボット生活について何も知りません。私以外に誰がそれを教えてくれるでしょうか?
タスク
1 「多くの人が生きているのは、銃撃が違法だからです。」を 3 回表示するプログラムを作成してください。
2 「ご意見が必要な場合は、必要なフォームにご記入いただくようお願いします。」と表示するプログラムを作成してください。
3 「私が言ったことのほとんどは一度も言っていません。」を 20 回表示するプログラムを作成してください。

6 エリー、参照により合格します。参照変数

- やあ、アミーゴ、また私だよ、エリー。申し訳ありませんが、いつもこんなことを言っていますが、これは 31 世紀の地球で行われている方法です。参照変数の特徴と参照引数を関数(メソッド)に渡す方法について説明します。 - 準備できました。 - さて、参照変数とは、プリミティブ型を除くすべての型の変数です。これらの変数には、オブジェクトのアドレス (オブジェクト参照) のみが含まれます。 - プリミティブ型の変数は値と型を格納し、クラス変数は同じクラスのオブジェクトへの参照、ウェル、または null を格納します。私は正しいですか? - 絶対。 - それで、参考になるものは何ですか? - オブジェクトとその参照は、たとえば、男性とその電話番号のようにリンクされています。電話番号は男性ではありませんが、男性に電話して何かを尋ねたり、案内したり、命令したりするために使用できます。参照は、オブジェクトと対話するためにも使用されます。すべてのオブジェクトは参照を介して相互に対話します。 - まるで人々が電話でコミュニケーションをとっているような感じですか? - それは正しい。プリミティブ オブジェクトを割り当てると、その値がコピー (複製) されます。参照変数を割り当てると、オブジェクト自体ではなく、オブジェクトのアドレス (電話番号) のみがコピーされます。 -ОK、分かりました。 - 参照には別の利点があります。オブジェクト参照を任意のメソッドに渡すことができ、このメソッドはメソッドを呼び出してオブジェクト内のデータにアクセスすることで、その参照を使用してオブジェクトを変更 (変更) できます。 - 変数a と b旧レベル02~14の値は、swapメソッド内で交換されます。swapメソッドを呼び出すと、変数a と bは値m と nのコピーを受け取ります。したがって、 a と bの値を変更しても、変数m と nの値は同じままになります。それは右列のコードではっきりとわかります。 - 正直に言うと、それについては何もわかりませんでした。さらにいくつか例を挙げていただけますか? - 参照型の場合、次のことが可能です。 旧レベル02~15- 変数 a と b には、それぞれ emma と alice への参照が割り当てられ、a と b の値はオブジェクト emma と alice 内で変化します。 - 他のクラス内でクラスを宣言することも可能ということですね。おお! - その他については不明です。 - すべて同時にではありません。

7 Elly、関数呼び出し、戻り値

- さて、それでは向きを変えましょう。メソッド呼び出しがどのように機能するかについて説明します。その後、前の講義をもう一度見てください。 - 対処! - それでは、関数/メソッドの呼び出しと返される値について説明します。- コマンドは関数にグループ化されているため、1 つのブロックで 1 つの複雑なコマンドとして実行できます。これを行うには、関数 (メソッド) の名前を記述し、名前に続く括弧内に値とパラメーターを指定する必要があります。 旧レベル02~16- 上記の例では、渡された文字列を 4 回表示する関数を作成しました。次に、 6 行目で関数 print4 を呼び出します。 - 6 行目の実行になると、プログラムは 9 行目にジャンプし、変数 s に「移動するのが好きです、移動します。」という値が割り当てられます。 - その後、11 ~ 14 行目が実行され、最後に関数が完了し、プログラムは 7 行目に進みます - 関数には引数(パラメータ)を渡すだけでなく、関数の演算結果(値)を返すこともできます。これはキーワード return を使用して行われます。これは次のようになります。 旧レベル02~17- 理解できたと思います。左右同じコードです。左側には、別の関数として表示されています。- この関数は値を計算し、return コマンドを使用して呼び出したユーザーに値を渡します。少なくとも私はそう思う。 -基本的には本当です。 - void 型とは何ですか? - 一部の関数は、メソッドmain のように、何かを実行するだけで、値を計算して返しません。()。これらの関数のために、特別な結果型void (空の型) が作成されました。- 関数が何も返さない場合、なぜ何も指定できないのでしょうか? - すべての変数がどのように宣言されるか、つまり型と名前を考えてみましょう。関数は、型、名前、かっこを使用して宣言されます。関数名の後に括弧が続くのは関数呼び出しです。 - 関数を値を返すものと値を返さないものの 2 つのカテゴリに分けるよりも、「空の型」を考え出す方が簡単だったということでしょうか。 - その通り!あなたは頭の回転が速いですね、坊や。 - 空の型を返すにはどうすればよいでしょうか? - できません。その仕組みは次のとおりです: JVM がreturnを実行するときコマンドを実行すると、単語 return の右側にある式の値が計算され、その値が特別なメモリ領域に保存され、すぐに関数が終了します保存された値は、関数が呼び出された場所で関数呼び出しの結果として使用されます。上の例でそれがわかります。 - int m = min(a,b) をm = m2に変換した場所のことですか? - はい。関数呼び出しの後、関数の代わりにその結果が同じ場所に書き込まれるかのように、すべてが引き続き動作します。その文をもう一度読んで、最後の例のコードを見てください。 ――簡単そうに見えて、実際は難しいですね。少しだけもらった、それだけです。 - それは大丈夫。最初の試みでは、すでに知っていることしか理解できません。新しい分野に入れば入るほど、その内容は不明確になります。そして、その結果はさらに素晴らしいものとなるでしょう。時間が経つにつれて、すべてが明らかになります。 - そうですね、そうであれば、続けましょう。

8 ディエゴ

- やあ、アミーゴ。ここではいくつかのタスクを紹介します。これで、System.out 以上のことができるようになりました。がんばってね!あなたを信頼しています!
タスク
1 最小 2 つの数値 少なくとも
2 つの数値を返す関数を作成します。
2 最大 2 つの数値
最大 2 つの数値を返す関数を作成します。
3 最低 3 つの数値
最低 3 つの数値を返す関数を作成します。
4 最低 4 つの数値
最低 4 つの数値を返す関数を作成します。
関数 min(a,b,c,d) は関数 min(a, b) を使用 (呼び出し) する必要があります。
5 文字列の重複
渡された文字列を 3 倍表示する関数を作成します。各文字列は新しい行に置く必要があります。
6 テキスト表示
渡された文字列(単語)を同一行に3回表示する関数を書きます。
単語はスペースで区切る必要があり、1 つに結合する必要はありません。

9 ディエゴ、完全なクラス名

旧レベル02~18- やあ、アミーゴ、クラスの完全な名前について話したいと思います。- クラスがパッケージに含まれていることはすでに知っています。したがって、完全なクラス名は、ポイントで区切られたすべてのパッケージをカバーする名前とクラス名です。例: 旧レベル02~19 - 独自のコードでクラスを使用するには、その完全名を指定する必要があります。ただし、短い名前 (クラス名のみ) を使用できます。これを行うには、クラスを宣言する前に、単語importを追加して名前を指定して、このクラスを「インポート」する必要があります。java.langパッケージのクラス(String、Integer など) はデフォルトでインポートされます。指定する必要はありません。例: 旧レベル02~20- 短い名前の使用例: 旧レベル02~21- 分かりました。 - 大丈夫。

10 教授、クラスとオブジェクトについての講義

旧レベル02~22- やあ、アミーゴ。今日エリーとリーシャが言ったことをすべて理解していただけたでしょうか。念のため、約束したとおり、さらなる資料へのリンクを以下に示します。 1 私のメモ 2 Java で考える。すでに紹介したその素晴らしい本。読んでいただければ幸いです。- 時間を作ってざっと目を通していただければ幸いです。 - ふむふむ。もちろんそうします!

7月11日

- やあ、アミーゴ! ハードで疲れたお休みを希望していますか?

コメント
  • 人気
  • 新規
  • 古い
コメントを残すには、サインインしている必要があります
このページにはまだコメントがありません