FuruiTweet「Unityで学ぶC#入門」の連載第10回は「配列の使い方を学ぶ」でした。第11回の今回はアクセス修飾子の使い方を学びます。アクセス修飾子を学ぶことでプログラムの単純なミスや、不正なアクセスを防ぐことができるようになります。今回は入門記事ですので基本的なアクセス修飾子である「public」と「private」の違いに着目して解説していきます。クラスの考え方を学ぶ前に知っておくと、後々役に立ちますのでぜひこ参考ください。まとめアクセス修飾子とはアクセス修飾子とは、クラス(現状スクリプトという認識で構いません)や、そのクラス内のメソッド、変数がどこからアクセス(値の変更や参照)をすることができるかを決定するものです。↓アクセス修飾子イメージこれによって、他のオブジェクトからアクセスして欲しくない変数やメソッドを決定することができます。誤って他のオブジェクトから変数の値を操作してしまう処理を記述したときに、アクセス修飾子を記述しておけばエラーを吐き出すため修正することができます。アクセス修飾子を記述していないと、どこが間違っているのか発見するのに時間がかかってしまうこともあります。このような問題を改善するためにも普段からアクセス制御を意識してプログラムを書くことをおすすめします。アクセス修飾子の種類C#のアクセス修飾子の種類についてご紹介します。C#の修飾子は以下6種類の記述方法があります。=private難しい用語がたくさん出てきますが、今回はpublic,privateのみを詳しく解説していきます。そもそもアクセス修飾子は記述しないとプログラムを完成させることができないわけではなく、あくまで保守性や頑健性を高めるプログラミング技術の一つです。「internal」「protected」はクラスやアセンブリといったプログラムの構造的な仕組みを理解してから利用しないと、かえってエラーを引き起こす可能性がありますので注意してください。アクセス修飾子の使い方アクセス修飾子の使い方をご紹介します。使い方はいたってシンプルで、変数やメソッドの前に記述するだけです。method2(){//処理を記述}}このように記述するだけでアクセスを簡単に制御することができます。以下のように記述するとエラーが発生します。private;}例のようにアクセス修飾子を型宣言の後ろや、変数名の後ろに置くとエラーが発生しますのでご注意ください。変数定義に関する詳しい情報は以下記事をご参考ください。参考記事)変数の使い方を学ぶ「public」と「private」の違い「public」と「private」の違いについてご紹介します。「public」はアクセスを一切制限しません。「public」な変数はどのプログラムからでも参照、変更が可能になります。逆に「private」は記述されたスクリプト以外からのアクセスをできないように制限します。↓「public」「private」違いイメージ上記の図のように「public」な変数やメソッドは他スクリプト(他クラス)からアクセスが可能ですが、「private」な変数やメソッドは他スクリプトからアクセスができません。「public」「private」どちらの修飾子も同スクリプト内からのアクセスは可能です。このように他スクリプトからのアクセスを避けたいときに「private」を使用します。アクセス修飾子の使用例アクセス修飾子の使用例をご紹介します。ここで少しだけクラスの仕組みを利用したプログラムを記述しますが、よくわからない記述は読み流してしまって問題ありません。以下のスクリプト「Sample1」と「Sample2」を記述して、「Sample2」のみを任意のゲームオブジェクトに取り付けてください。"]");}}↓実行結果ではプログラムを確認していきます。Sample1では「private」なint型の変数と「public」なstring型の変数を定義しています。name;「private」なint型の変数「num1」と「num2」はそれぞれSample1内からのみアクセスすることができます。そこで「public」なメソッド「setNums()」「getNum1()」「getNum2()」を定義することで、他スクリプトから「num1」「num2」それぞれに値を格納、参照することができる仕組みにしています。num2;}「public」なstring型の変数「name」は、他スクリプトからアクセスすることが可能なので値を変更、参照するためのメソッドを記述する必要はありません。次にSample2を確認します。Sample2ではSample1クラスのインスタンスを生成しています。Sample1();9行目と20行目でSample1を扱うための記述をしているだけですので難しく考える必要はありません。それ以外ではアクセス制御に気をつけながら値を変更、参照しています。23行目ではSample1の変数nameを直接変更しています。"XR-Hub";対して26行目ではSample1の変数num1,num2をメソッドsetNums()を使用して間接的に変更しています。sample1.setNum(10,20);12//Sample1のnumsの値を変更するsample1.setNum(10,20);値を参照する際も同じで、nameは直接参照することができますが、num1,num2はgetter関数を用いて値を参照します。sample1.getNum2();これによって、クラス間(スクリプト間)の値の受け渡しを適切に行うことが可能になります。num1,num2の値をnameと同じように直接変更、参照しようとするとエラーが発生しますのでぜひ確認してみてください。まとめいかがでしたでしょうか。今回はC#のアクセス修飾子の使い方についてご紹介してきました。アクセス修飾子はプログラムを複数人で記述するときにとても役に立ちます。他者が記述した変数やメソッドを操作しようとしたときに、事前に制御しておくことでエラー発生を防いだり、誤作動を防ぐことができます。保守性を考えたときにアクセス修飾子はとても大切ですので、普段のプログラミングから意識して修飾子を記述するようにしましょう。gardenお問い合わせはこちらから※「XR-Hub」商標出願中CloseTwitterでAR/VRの最新情報を受け取る。