一般的にプログラミングは、経験を積むにつれて読みやすく、書きやすく、理解しやすくなりますか?[閉まっている]


80

私はプログラミングの初心者であり、本を読んだり、勉強したり、記事を読んだりしています。プログラミングを学び始めてから素晴らしい結果が得られており、初心者の頃はプログラミングに関するすべてを知っていたと思っていましたが、学習するにつれて、この分野の難しさを実感しました(実際、すべての分野は難しい、しかし、それはポイントではありません)。

今日、私は機能的なソフトウェアを書き、3つの言語の基本を学び、たった1つの言語で中級です。MYSQL、OpenGLプログラミング、またはVisual Studio C ++コードなどの高度なものを見ると、頭痛の種になります。また、多くのWebサイトのHTMLソースコードを視覚化するときでも(Google Chromeで見られるWebサイトのほとんどのソースコードは、非常に乱雑で整理されていないようです) )それは私の脳の極限に私を混乱させます。最初はすべてシンプルに見えますが、これらの高度なものを見ると、どうやってそんなに学ぶことができるのかと思うようになります。

簡単に言えば、質問は、プログラマーがキャリアを進めるにつれて、これらのことがより明確になるかどうかです。上記のような複雑なトピック(OpenGL、MySQL、高度なhtmlサイト)は、学習するにつれて読みやすく、書きやすく、理解しやすくなりますか、それとも複雑になりますか?あなたがプログラミングの世界でアリであり、このようなものがあなたをつぶそうとしているという気持ちにどうやって対抗できるでしょうか?


24
これを読むことをお勧めします:norvig.com/21-days.html
ジェームズP.

他のことと同じように、はい。テクノロジーが変化するまで。:-)
MathAttack

3
あなたの「経験」が同じことを何度も読んでいない限り。新しいもので自分を伸ばします。
-JeffO

複雑なHTMLページを分析するための小さなヒントとして、FirefoxのFirebugまたはChromeのInspect Elementを使用する必要があります。
ライライアン

6
「私が初心者だったとき、プログラミングに関するすべてを知っていたと思っていました。」そこにいて、学べば学ぶほど、自分の知識がどれほど少ないかを実感します。
リーベン・キースメーカーズ

回答:


134

短い答え:いいえ。

長い答え:

はい、他の人のコードを読むのが簡単になります。しかし、読書のみ。経験とスキルを身に付けると、開発者としてのあなたの個人的な要件は大きくなります。

  • 単にコードを書きたくありません。あなたは美しいコードを書きたいです

  • コードが理想的な状態で実行されるとは思わない。コードの実行時に発生する可能性のあるすべての悪いことについて考え始め、例外を処理し、ハードウェアの問題、ネットワークの遅延について考え、スキルが成長するにつれて問題が大きくなります。

  • 知っている唯一の言語でコードを読み書きすることはありません。熟練した開発者として、この特定の問題を解決するには、関数型プログラミングの方がはるかに優れた選択肢であることがわかっているため、関数型プログラミング言語でコードを読み書きする必要があります。

  • あなたが知っているライブラリの小さなセットに自分自身を制限しないでください。C#でコーディングする場合は、.NET Frameworkの多くのライブラリのフルパワー知り、使用したいでしょう。

  • もうメモ帳は使用しません。強力なIDEが必要であり、コードを単体テストする方法、コードメトリックスとは何か、IDEが表示できる何百ものオプションとウィンドウの意味を知りたいと考えています。

  • 言語が提供する基本的なツールセットに控えめに制限したくない。C#では、ジェネリック、コードコントラクト、リフレクション、イベント駆動型開発、LINQを使用した機能面、Reactive Extensions、および学習した他の多くの機能をすべて単一のプロジェクトで使用します。コード。

  • あなたはコードを書き始めません要件の収集、アプリケーションのアーキテクチャの作成、単体テストの作成、ドキュメントの作成などに費やす時間の80〜90%を費やし、実際のコードの作成に費やす時間のわずか10〜20%を費やします

  • あなたはセキュリティに関心があります。あなたは、あなたのアプリケーションによって操作されるデータで生じるかもしれない法的問題を知っています。ITILとは何ですかISO規格をいくつか知っていて、それを毎日作業に適用しています。

はい、経験とスキルを身に付け、得られたすべての知識と知的能力で特定の問題を解決することが容易になります。しかし、あなたが解決しなければならない問題も大きくなり、プログラミングを始めたときに私が解決したレベルの問題を解決することに興奮していないだけです。

スキルを身につけながら、ソフトウェア開発の複雑さについての洞察を得て、プログラミングを学び始めたときに想像すらできなかった側面を学びます。また、毎日学習するすべてのことを適用したいのです。

要するに:

  1. プログラミングの学習を始めた最初の日、2で割り切れる1から100までのすべての数字をリストするタスクは非常に複雑です:ループを作成して画面に数字を表示する方法を学習しましたが、数値は2で割り切れます。

  2. 10年後、同じエクササイズは非常に簡単になりました。しかし、10年後、トランザクションを使用する必要があり、複数のサーバーでホストされ、サーバー間のセッション状態を適切に処理し、顧客の銀行口座の詳細を保存するアプリケーションを作成します。

  3. ...そして、「どうすればそれができるのだろうか?」10年前にループで画面に数字を表示する必要があったときとまったく同じ方法で。

ドメイン内ですべてが簡単になった場合、それはこのドメインで完璧を達成したか、もはや気にしないことを意味します。

ソフトウェア開発と同じくらい広大な領域で完璧を達成することは、あなたがどれほど賢くても不可能です。


36
両方が凍結されていれば、仕様書からソフトウェアを開発するのは簡単です(「コードを書き始めない。要件を集めるのに何ヶ月も費やす」ことは少し非現実的です)
jfs

9
「関数型プログラミングははるかに優れた代替手段です」は議論の余地があります。
jfs

15
「関数型プログラミング」のビットが、関数型プログラミングが実際に一般的な使用に適していることを意味するのではなく、「ジョブに適切なツールを使用する」単なる例であることを確かに望みます。
ベンブロッカ

7
また、開発のない「数か月の要件収集」は、基本的に理想化されたウォーターフォールモデルでのみ発生することにも注意してください。繰り返していない場合は、自分自身とプロジェクトを殺しています。
ベンブロッカ

8
「簡単になることはありません。ただ速くなります。」/グレッグ・レモン/
daGrevis

20

子供の頃、あなたは話すことを学び、それから母国語を読むことを学びます。単純な仕組みは最初は苦労しますが、ある時点で流になります。ただし、まだ読んでいない本は無限にあり、一部のトピックでは、本を理解するために最初に語彙を増やす必要があります。

コンピュータープログラミングについても同じことが言えます。ある時点で、言語自体が外国語のように感じるのをやめますが、その言語で書かれた、まだ知らないものがたくさんあります。しかし、すべてはあなたがいくらかの努力でアクセスできます。

一部のプログラミングジョブは非常に反復的であり、基本的には異なる顧客向けに非常に類似したソフトウェアを再実装します。それらの仕事では、学習のプラトーに達したように感じるかもしれません。他の仕事は常に新しい何かユニークなことをしていて、決して新しいことを学ぶのをやめません。


18

ここには本当に良い答えがいくつかありますが、もう少し短い点を追加すると思いました。

私は初心者の頃、プログラミングに関するすべてを知っていたと思っていましたが、より多くを学ぶにつれて、この分野がどれほど難しいかがわかりました

これは、Dunning-Kruger効果と呼ばれます。それは初心者プログラマーの間で、そして実際、多くの分野の初心者の間で非常に一般的です。

グーグルクロームによって見られるウェブサイト上のほとんどのソースコードは非常に乱雑で整理されていないようです

それらのWebサイトを書いた人たちは、あなたがそれらを理解できることを望んでいましたか?おそらくない。理解するのが難しいコードを持つことが彼らの利益になります。

どうしてそんなに学ぶことができるのだろうと思うだけです。

専門化することによって。私は非常に狭い分野の専門家です。C#コンパイラセマンティックアナライザーの設計と実装です。OpenGL、XML、HTML、その他何でも15年かけて勉強していたなら、私はそれについての専門家になり、セマンティックアナライザーによって謎に包まれました。しかし、私はそうしなかったので、OpenGL、XML、HTMLの非常に基本的な理解しかありません。

簡単に言えば、質問は、プログラマーがキャリアを進めるにつれて、これらのことがより明確になるかどうかです。

はい、あなたはより大きなパターンを見始めたからです。OpenGLを例にとります。おそらく「APIライブラリ」の束を見たことがあります。特定の引数を使用して名前付き関数の束を呼び出すことで、コードとインターフェイスする方法が関連する大きなコードです。また、OpenGLがAPIであることを理解するだけで、OpenGLの基本的な理解を得ることができます。

より多くの経験を積み、さまざまなプログラミング手法を見たとき、一見無関係なテクノロジー(C#のOpenGLとLINQなど)に共通性があることに気づきます。どちらも、データをパイプ処理するワークフローを構築するAPIであり、ワークフロー上でリッチで興味深い方法でオプティマイザーやその他の変換を実行できます。ツールのボックスにその概念が入ると、そのパターンを使用するAPIのすべての機能を活用するのが簡単になります。

上記のような複雑なトピック(OpenGL、MySQL、高度なhtmlサイト)は、学習するにつれて読みやすく、書きやすく、理解しやすくなりますか、それとも複雑になりますか?

それらはより簡単で複雑になります。私が言ったように、システムの設計の根底にあるより大きな思考パターンを認識し始めるため、より簡単になります。これにより、システムをより効果的に使用できます。より複雑になったのは、システムを使用してより複雑な問題を解決できるようになり、システムの制限に直面し始めるからです。

あなたがプログラミングの世界でアリであり、このようなものがあなたをつぶそうとしているという気持ちにどうやって対抗できるでしょうか?

あなたはアリです。私たちは皆アリです。しかし、それはあなたをつぶす足ではありません。それはあなたが探検し、住み、恩恵を受け、改善することができる世界です。あなた、アリ、それのほんの小さな部分を探検するだけです。あなたが本当の価値を追加し、その専門家になることができる場所を好きな部分を選んでください。


2
この答えをたくさんありがとう、それは私の質問に答えるだけでなく、特定のことに目を向けるので、他のものよりも上です。+1
バグスター

@Eric:この種のトピックで、「専門化は人間のためではなく昆虫のためです」と言っている人に何を言いますか?
ジョアンベンジ

@JoanVenge誰かがそれを言うだろうか?通常、人々は動物や昆虫と区別する必要性を感じている場合、専門性とユニークさを重視しています。
マシュー

1
Dunning-Kruger Effectとは、未熟な人が自分の能力を認識できず、自分の能力を正確に評価できないことと定義されてい ます。あなたがすべてを知らないことを認識できない場合、あなたは決して新しいことを学ぶことができません。認識できる場合、DKEではありません。

+1を選択して、本当の価値を追加し、その専門家になることができる場所を選択してください。
Akshay Khot

14

簡単な答え、はい。

時間と露出を考えると、これらのことは理解しやすくなります。

ブラウザの開発ツールからサイトを見ているとき、それらは多くの場合フレームワークによって生成されます。それを、ASP.NET、JSP、RoR、Djangoなど、何でも知っておいてください。これらのフレームワークの中には、他のフレームワークよりもクリーンなコードを生成するものがあります。

最後に...暴露は習熟度につながります。その気持ちを打ち消す方法はありません。ただ経験と学習。引っ越し、ドメインの知識を獲得し、環境で使用するスキルを習得するには時間がかかります。


1
コードを書いた人が優れた実践と、特に言語とプログラマーの両方の通常のイディオムを使用していた限り、これにはある程度の真実があります。悪いコーディングや意図的な難読化は、クロールに戻るのを遅くする可能性があります。CodeGolf.SEでドロップしてみてください。「明確な」バージョンであっても、コンテストメトリックを変更する際に優れたプラクティスが犠牲にされているため、厳しいスローイングになる可能性があります。
dmckee

@dmckee悪いコードであっても、経験を積むと非常に読みやすくなります。特にC ++でこれに気付きます(そして、多くの悪いコードを読まなければなりませんでした)。もちろん、それは極端なハードルですが、それでも、悪いデザインやよくあるエラーのパターンを見つけ始めると、ずっと簡単になります。これらはまた、あなたが学ぶことになる一種のイディオムを形成します。
コンラッドルドルフ

2

私はすでに与えられたいくつかの答えに同意しますが、それらはコードの読み取りについて議論されていない根本的なポイントでもあると思います。私が最初にいくつかのオープンソースコードを見始めたとき、それは圧倒的で巨大に見えました。しかし、何だと思いますか?常に巨大になるでしょう。ある時点で、具体的に知りたいことを抽出し、先へ進むことが上手くいくと気づきます。

あなたが与えた1つの例は、HTMLコードの束を見ていたが、しかし:

なぜHTMLコードを見ているのですか?おそらく、サイト全体のHTMLを学習したいからではありません。おそらく、あなたが拾いたいと思っている特定のトリックがあります。その場合は、firebugなどのツールを使用して関連するHTMLを見つけてください。

あなたが本当にサイト全体がどのように作られているかを学びたいなら、あなたはレンダリングされたHTMLがそれをする方法ではないことに気付きました。同様のテクノロジーを使用したオープンソースプロジェクトを見たほうがいいでしょう。ただし、プロジェクトのコード全体を学習しようとすることは、思ったほど価値がありません。退屈で時間がかかり、学んだことを忘れがちであり、最後に見せたいものは何もありません。プラグイン、機能追加、または自分のプロジェクトの足場やアドバイスとして特定の興味深い部分を使用することで、他の人のコードを際限なく読むことから学ぶことが少なくなります。

あなた自身の何かを得るために絶対的な最小値を学ぼう。立ち往生したり、特定の新しいことを学びたい場合にのみ、参照ポイントに戻ります。これは、すべてを理解する必要がある、または暗闇でプログラミングしているという従来の常識に反します。しかし最終的には、目標は不可能であることに気づき、すべてを知るという目標と、取り組んでいることを実際に終えるという目標のバランスを取ることを学びます。


2

簡単な答えはイエスですが、その多くは経験をどのように定義するかに依存します。

開発には少なくとも3つの部分があると思います。各セグメントが良くなるにつれて、特定のことが明確になります。

  1. ビジネス要件を理解する。これにより、アプリケーションの鳥瞰図が改善されます。なぜビジネスルールがそのルールであるのかを理解できれば、特定の方法が特定の方法で行われる理由をすばやく理解できます。たとえば、顧客は政府の規制Xに準拠する必要があるため、ドキュメントYを準備する必要があります。このため、この一見役に立たない情報を保存する必要があります。

  2. 技術的要件を理解する。これは、技術レベルでの理由の理解に関する詳細を除き、#1に似ています。一部のツールとテクノロジーには、特定の方法で物事が行われる理由を理解するのが難しくなる前にそれらを処理するまで、独自の癖があります。これは、レガシーシステムを扱う場合にさらに顕著になります。たとえば、アプリケーションはXMLのみを使用する特定のサービスバスを使用します。

  3. LANGUAGE要件を理解する。他の人が述べたように、言語に精通しているほど、元のコーダーが達成しようとしていたものをより早く読むことができます。それでも#1と#2がなければ、この能力の向上は非常に迅速にピークに達することがわかります。

開発の複数の側面に関与するようにしてください。これは、少なくとも数回すべての領域を完了するまで実際には簡単にならないためです。

他の人のコードの完成度(および目的)は、常に#1と#2に関連していることに注意してください。これらは、コードが現在の状態にある主な要因です。これら2つの領域を頻繁に変更することが、スパゲッティコードを常に取得する最大の理由です。そのため、ビジネス要件と技術要件を熟読していなければ、コードを読む作業は常にロイヤルPITAになります。


2

同時により簡単で複雑になります!

他人を知ることは知恵です。
自己を知ることは悟りです。
他人をマスターするには力が必要です。
自己をマスターするには強さが必要です。
自分が十分だと知っている人は金持ちです。
忍耐は意志の力のしるしです。
自分がいる場所にとどまる人は耐える。
死ぬことはなく死ぬことは永遠に存在することです。

ソフトウェア開発に翻訳

多くの技術を知ることは知恵です。(すべてはALGOLから派生し
ています)知らないことを知ることは悟りです。(LISP)
多くの言語、フレームワーク、およびプラットフォームをマスターするには、多大な労力が必要です。(Java)
知っておくべきことだけをマスターし、それだけに強さが必要です。(およびGoogleまたはstackoverflow.com)
コーディングを停止して何かを配信するタイミングを知ることは、十分な知識があるときです。(分析麻痺や金メッキなし)
あなたが達成しようとしているもので働き続ける、それは焦点を必要とし、力を発揮します。(すべてが絶えず変化し、あなたは決して終わらない)
1つまたは2つの技術に固執し、耐える。(COBOLは、Cと同様に、まだ十分に支払っています)
プログラミングをやめて管理に移行することは、永遠に存在することです。(または、FOSSソフトウェアの遺産を残し、あなたが亡くなった後でも誰もが使い続けることができるようにします)。


だから、アリになる代わりに、ゴキブリになって、それがあなたをつぶしたときに起きてください、私は正しいですか?:-P
バグスター

"Analysis Paralysis"!= "いつコーディングを停止するかを知ってください"。それは、「いつコーディングを開始するかを知る」ということです。
ベンフォークト

0

簡単に言えば、質問は、プログラマーがキャリアを進めるにつれて、これらのことがより明確になるかどうかです。上記のような複雑なトピック(OpenGL、MySQL、高度なhtmlサイト)は、学習するにつれて読みやすく、書きやすく、理解しやすくなりますか、それとも複雑になりますか?あなたがプログラミングの世界でアリであり、このようなものがあなたをつぶそうとしているという気持ちにどうやって対抗できるでしょうか?

私は、他の回答者とは少し異なるタックを取ります。実際、コードの読み取りと書き込みは、コードを実行するほど簡単になり、単純な例えで説明します。

スポーツを始めたときのことを考えてください。最初に学んだ最初のスポーツでは、最初の段階で、1つのスポーツの単純なタスクの基本的な調整はおそらく非常に困難に思えました。もう少し経験を積むにつれて、単純なタスクをマスターし始めたので、もう考える必要はありませんでした。そして、他のプレイヤーに注意を向けることができる複雑なタスクがあることに気付きました彼らの行動)。

それから、別のスポーツで手を試したとき、おそらくあなたが始めたときはそれほど遅れていないことに気付いたでしょう。バスケットボールをキャッチすることは、野球をキャッチすることとはかなり異なりますが、そのうちの1つを習得した人は、前にどちらもやったことがない人よりも、他の人を拾う方がはるかに簡単です。2番目のスポーツを練習した経験から、最初のスポーツで特定のスキルと一般的なスキルの両方が得られることがわかりました。特定のスキル(バスケットボールを捕まえる)はそのドメインでのみ役立ちますが、一般的なスキル(3次元空間で近づいてくる動きの速いオブジェクトを追跡し、それに対処する計画を作成する)は、関連するすべてのドメインであなたを良くします。


これはプログラミングと何の関係がありますか?読むコードの最初の行は、特定のルールに基づいて構築された世界にあなたをさらします。これらの規則(その言語の構文とイディオム)を特定のスキルとして学びましたが、いくつかの貴重な一般的なスキルも学びました。コンピューターが内部でどのように動作するかを理解し、コンピューターが理解できるように意図を表現する方法を学びました。学習する新しい言語はそれぞれ特定の新しいスキルを提供しますが、一般的なスキルを強化し、峡谷の壁に沿って層状に堆積した鉱物鉱床のようなすべてのコンピューター言語で撮影されたパターンを見るのにも役立ちます。いくつかの異なる言語に本当に慣れると、その言語が何で書かれているのか分からなくても、曖昧さを容赦すれば、ほとんどのコードの「形状」を認識できるようになります。

たとえば、あなたが言及した3つの言語(MYSQL、OpenGL、C ++)にはすべて、いくつかの共通の機能があります。

  • アルゴリズムの小さな部分を個別に計算し、後で完全なソリューションに構成することが可能です
  • 通常、コンピューターは特定の問題(テーブルの作成、キャンバスの初期化、または一般的なライブラリーのロード)の作業を開始する前に、ある程度の一般的な準備が必要です。
  • 以前のステートメントが優先され、後のステートメントに影響します。つまり、コンピューターはコードの先頭から開始し、その方法を実行します。

より多くのプログラミングを行うほど、ボールの形が何であっても、それはまだあなたに向かってくるボールであり、それについて何も考えずに何をすべきかを知っています。すべてのプログラミングは、コンピューターが理解できる方法で意図を表現しようとすることです。十分に学べば、コードの代わりに意図を読むことができるようになります。

PS-毎回、ようやく自分のやり方を知っているように感じ始めたとき、あなたは絶対にあなたの脳を壊し、ランク初心者のように感じさせる何かに出くわします。それが私たちがこの仕事で気に入っていることです。常に学ぶべき新しいことがあります。


0

短い回答:はい一般的に

ただし、一般化すると専門家になることはありません。スペシャリストになることは、あなたが知らないことすべてを実現することも意味します。これは圧倒的な気持ちになります。

時間を経て、経験を積むことができます。

時間の経過とともに、他の言語/パターンなどが開発と並行して開発されます。

あなたの質問に対する別の変数は、それが同じ一定の時間を移動するので、あなたが産業に関して有意義な経験を得ているかどうかです。テクノロジー業界は、移動するターゲットであり、他のほとんどの業界とは異なります。

良い質問は、特定の言語で自分をあまりにもthinせたり、太りすぎたりすることです。


0

それは不思議(および不安)の終わりのないソースであり、コンピューター言語がいくつあるか、そしてそれらが変化し続ける範囲です。それに加えて、各言語のさまざまなフレームワークの数、および各フレームワークについて、膨大な数のライブラリとプラグインが利用可能です。さらに、コードエディターとIDEの数を追加します。

これらのバリエーションはすべて、複雑さの2つの側面を持っています。

  1. 語彙と構文は異なります。
  2. サポートする抽象化(高レベルの概念)は異なります。

また、共通点が1つあります。チューリングの完全性。プログラマー側で十分な努力をすれば、すべてを使用してすべての問題を解決できます!したがって、Cのような言語(小さな語彙、複雑な構文、ほとんど抽象化されていない)から始めると、何でもできる(間違いなく正しい)感覚が得られます。

次に、CSS、HTML、Javascriptなどの「簡単なもの」に切り替え、BootstrapやReactなどのフレームワークに切り替えます。AlbertEinsteinの場合と同様に、あなたの脳は飛ぶでしょう。人々は「私はフランス語を知っているので、ドイツ語を学ぶのは簡単なはずだ」と考えています。番号!

多くのプログラミングの抽象化は、ソフトウェアパターンから学習できます。このトピック専用の書籍がいくつかあります。パターンはどこにでもあり、言語にとらわれず、一度学習して理解することができます。パターンを知っていれば、どの言語でもそれらを使用でき、言語に組み込まれたとき、より頻繁にさまざまなフレームワークに組み込まれたときにそれらを認識することができます。

ほとんどの人が新しい言語に堪能になるには1〜2年かかり、雇用主はそれを知っています。新しい従業員は言語と格闘するのに多くの時間を費やし、ビジネス上の問題を実際に解決するのに十分な時間を費やさないため、彼らは彼らの言語で経験のない人々を雇わないのです。

要約すると、コンピューターサイエンスの原則/抽象化、ソフトウェアパターン、および遭遇するビジネス上の問題の種類は、すべてゆっくりと変化します。一度学習すれば、新しい知識を段階的に蓄積できます。逆に、いわゆる「エコシステム」と呼ばれるコンピューター言語、フレームワーク、およびコンポーネントライブラリは、それらを取り巻くすべてのツールと同様に非常に急速に変化します。ここでは、学習のペースが遅く、時間がかかることを期待してください!


-1

上記のような複雑なトピック(OpenGL、MySQL、高度なhtmlサイト)は、学習するにつれて読みやすく、書きやすく、理解しやすくなりますか、それとも複雑になりますか?あなたがプログラミングの世界でアリであり、このようなものがあなたをつぶそうとしているという気持ちにどうやって対抗できるでしょうか?

進歩が見られると、私たちは以前に知っていたと思ったことを学び直し、新たに学びます。-ヘンリーデビッドソロー

禅師とあふれる茶cupの物語があります。

時々、私たちは自分自身が新しい概念を学ぶことができるように、過去からの先入観や意見を手放す必要があります。

要確認新しいコンセプトに圧倒されていると感じたら、多くの教師を探す必要があります。

最近、スクリプト言語を使用する社内ソフトウェアを更新するという割り当てを与えられたとき、私は不慣れでした。最初は非常にストレスがたまりました。しかし、態度を変えた後、構文と基本概念を説明するリソースを見つけ始めました。プロジェクトを完了し、このスクリプト言語をツールの1つとして利用して、より多くのことを成し遂げました。

あなたの態度がすべての違いを生みます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.