Kotlin入門

Android開発のためのKotlin入門 第6回「クラスと関数」

 

ここまでの記事はこちら
 

今回のテーマは

  • クラス
  • 関数

についてです。

クラスと関数は、Kotlin でコードを書いていくにあたって大切な考え方になります。

Android Studio を使ったアプリ開発ではクラスと関数をたくさん組み合わせて開発していくことになるので、まずは基本的な仕組みに慣れておきましょう
 


 

クラスとは?

基本的な使い方

Kotlin でコードを書く場合、必ずクラスを1つ用意する必要があります。
 

書き方は class クラス名 と書いて {} をつけるだけです。

 

これがクラスの基本型です。
 

一つ覚えていただきたいルールが「クラス名の最初の文字は大文字にすること」です。

例)Sample, Test, Animal, Car

単語の区切りも大文字にします。

例)SampleProject, TestClass, MyCar

 
 
 

クラスがどんなものなのか、ロボットを動かすプロジェクトを例にして考えてみましょう。

まずは Robot クラスを用意します。

 

このクラス内にロボットの頭・腕・足を動かすコードを書いていきますが、全て Robot クラスの中に書こうとすると以下のようになります。

 

今は文字だけで書いているので良いですが、これをコードで書いていくと何十行・何百行にもなります。

もちろんプログラムとしては動きますが、どこに何のコードを書いているのか分かりにくくなり、コードの管理が難しくなります。
 

この時に便利なのがクラスです。
 

クラスは複数作成することができるので「メインのクラスを1つ用意して、そこに補助的なクラスを組み込んでいく」という使い方ができます。

ロボットの場合は、Robot クラスとは別に

  • 頭を動かすクラス
  • 腕を動かすクラス
  • 足を動かすクラス

を作成して、これを Robot クラスと組み合わせて使うことができます。
 


 

このようにクラスを分けて書くことでコードが読みやすくなることはもちろんですが、複数人で開発する時にも役立ちます。

例えば

  • A さんは Head クラス担当
  • B さんは Arm クラス担当
  • C さんは Leg クラス担当

とクラスごとに役割分担してコードを書くことができます。

また途中で「頭を動かす機能はいらないな」と思ったら、 Head クラスだけを Robot クラスから外せば良いわけです。

クラスを上手く使うことで、効率的に開発を進めていくことができます。

具体的な使い方は実際にコードを書きながら紹介していきますが、クラスがどんなものかイメージが湧いたでしょうか?

Android Studio でのアプリ開発では、この「クラス」をたくさん使って開発していくことになります。
 
 

コメントの書き方

コードやテキストの前に // をつけることで、その行を「コメント」とすることができます。

class Sample {
  // ここにコメントを書きます。
}

 

コメントとは「プログラムには影響しないけれど書いておきたいこと」です。

プログラムに影響しないからといって何を書いて良いわけではありません。

コードを読みやすくしたり、コードの作成者や権利について書く場合にも使用します。
 

複数行のコメントを書くときは /**/ で囲みます。

class Sample {
  /*
    複数行のコメントを
    書くことができます。
  */
}

 
 

MainActivity.kt の構造

クラス

Android Studio ではどのようにクラスが作成されるのか確認してみましょう。
 

MainActivity.kt を開くと、6行目あたりに MainActivity クラス があります。

クラス名 MainActivity もルールの通り、最初の文字と単語の区切りが大文字で書かれていますね。


 
 

MainActivity の後ろに : マークがついています。

これは他のクラスを継承するために使うもので

class MainActivity : AppCompatActivity()

は「MainActivity クラスは AppCompatActivity クラスを継承する」という意味になります。
 
 

前回「Android 開発ではアクティビティで画面を作っていく」と紹介しました。

そのアクティビティに関する基本的な機能、例えば画面の開始・終了、ナビゲーションバーの作成などのコードを用意してくれているのが AppCompatActivity クラスです。

AppCompatActivity クラスを継承すると AppCompatActivity クラスにあるコードを MainActivity クラスでも使えるようになるので、自分で画面の開始・終了などのコードを自分で書く必要がなくなります。
 

継承できるクラスは AppCompatActivity クラス以外にもありますが、これはアプリを開発しながら徐々に覚えていけば問題ありません。

また MainActivity クラスをサブクラス、継承したクラスのことをスーパークラスと呼びます。


 
 

package

次は MainActivity.kt の1行目を見てみましょう。

package jp.codeforfun.sample

 

ここにはプロジェクトを作成した時のパッケージ名が表示されています。

ここを変更してしまうとプロジェクトを実行できなくなってしまうのでご注意ください。
 
 
 

import

次は MainActivity.kt の3行目です。

コードが折り畳まれていると思うので「+」を押して開いてください。


 

import

import androidx.appcompat.app.AppCompatActivity

import(インポート)は「取り込む」という意味で、先ほど継承した AppCompatActivity クラスを取り込んでいます。

AppCompatActivity クラスは androidx/appcompat/app/AppCompatActivity.java ファイルに書かれているので、androidx.appcompat.app.AppCompatActivity という書き方になっています。

4 行目の import android.os.Bundle; も同じように Bundle クラスを取り込んでいます。

Android Studio の初期設定をしたときに自動 import を有効にしましたね。この設定を有効にしておくと、他のクラスファイルが必要になったときに import 文が自動的に追加されます。
 
 
 

AppCompatActivity クラス

AppCompatActivity.java ファイルの中身を少し見てみましょう。

Windows の場合は Ctrl キー、Mac の場合は Command キーを押しながら、AppCompatActivity をクリックして下さい。


 

MainActivity と同じように class AppCompatActivity と書いてクラスが作成されていることが分かりますね。


 

メモ

AppCompatActivty のコードは Kotlin ではなく Java で書かれています。私たちが書いていくのは Kotlin のコードですが、裏で動いているコードは Java で書かれているものがたくさんあります。このように Kotlin と Java は全く関係のない言語ではなく、お互いを組み合わせてアプリを開発していきます。

 
 

関数

MainActivity クラスの中に override fun onCreate(savedInstanceState: Bundle?) というコードがあります。

クラスの中にあるこのまとまりを関数と言います。


 

funfunction(ファンクション=関数)の省略形で、これが関数であることの目印です。
 

関数は簡単に言うと「処理をまとめたもの」で

  1. 処理を行うだけの関数
  2. 処理をして結果を返す関数

の2種類があります。
 

① 処理を行うだけの関数

ここでは playSound という名前の関数を用意してみました。

fun playSound() {
    // ここに処理を書いていきます。
}

 

クラス名は MainActivity のように大文字で始めましたが、関数名は小文字で始めます。

単語の区切りはクラス名と同じように大文字にします。

例)playSound, checkName, startGame

 

関数名は「この関数を使って何をするのか」が分かりやすい名前にします。

playSound という名前だと「音を再生する関数なんだな」ということが簡単に分かると思います。

他の人がコードを見たときに、何をしている関数なのか理解しやすい名前にすることを意識してみてください。
 
 
 

② 処理をして結果を返すメソッド

処理をして結果を返す関数の場合は () の後ろに結果として返したいデータ型を書きます。

fun checkStatus(): Boolean {
    // ここに処理を書いていきます。
    return true;
}

 

データ型については次回以降詳しく紹介しますが、boolean 型は true または false の値をもつデータ型です。

結果として返す値は「戻り値」と言って return を使って返します。


 

引数

メソッド内で使いたい値がある場合は()の中に値を書くことができます。これを「引数」と言います。

fun sample(引数1: データ型, 引数2: データ型) {
    // ここに処理を書いていきます。
}

 
 

onCreate 関数

もう一度 onCreate 関数を見てみましょう。


 

() の後ろに何も書いてなく return もないので、onCreate 関数は処理をするだけの関数であることが分かります。

savedInstanceState: Bundle? が引数です。
 
 

override

onCreate 関数名の前に override と書いてあります。

override(オーバーライド)は英語で「優先する、無効化する」という意味ですが、プログラミングでは「上書きする」に近い意味で使われます。

override と書くことで「スーパークラスにある同じ名前の関数を上書きしている」ことを表しています。

MainActivity クラスは AppCompatActivity クラスを継承しているので、AppCompatActivity がスーパークラスでしたね。

複雑になってしまうのでここでは省略しますが、AppCompatActivity クラスも他のクラスを継承していて、そのクラスも他のクラスを継承して、、、となっていて、最終的には Activity クラスの onCreate 関数を override しています。
 
 

onCreate 関数の役割

onCreate 関数はアクティビティを初期化する場所で、MainActivity を呼び出した時に必ず実行されます。

例えば3行目の setContentView(R.layout.activity_main) は「activity_main.xml に書いたレイアウトを画面にセット」するコードです。

アプリ画面にテキストやボタンが表示されないと困るので、必ず実行される onCreate 関数内に書いてあります。

アクティビティを作成すると、必ずこの4行が追加されるので「onCreate 関数は初期化する場所」と覚えておいて下さい。
 
 
 

まとめ

少し盛りだくさんになってしまいましたが、いかがだったでしょうか?

関数や import の具体的な使い方はコードを書きながら覚えていくものなので「なんとなく分かるかな」くらいで大丈夫です。

現時点では

  1. クラスを必ず1つ用意する。
  2. クラス名の最初の文字と単語の区切りは大文字で書く。
  3. 関数には「処理を行うだけの関数」「処理をして結果を返す関数」がある。
  4. onCreate 関数はアクティビティを初期化する場所。

ということを覚えておいてください。
 
 
 

次に行うこと

次回は少しコードを書きながら、クラスと関数についてもう少し詳しく調べてみましょう
 

第7回「Hello Worldを書き換える」に進む
 
 
 

Android 開発のための Kotlin 入門講座

Kotlin入門講座についてはこちら

Kotlin の入門書や入門講座では「文法を学んでもそれをいつどこで使うのか分からない」「アプリ開発との関連が分からない」ということがよくあります。
 

Android 開発のための Kotlin 入門講座では「Kotlin 文法を学ぶ→アプリ開発する」を繰り返して、合計3つのアプリを開発していきます。

  • とにかく Android アプリを開発してみたい!
  • Android 開発に興味があるけれど、何から始めれば良いかわからない
  • プログラミングに挫折したことがある

という方にお勧めの講座になっています。

この講座でプログラマーへの第一歩を踏み出しましょう
 

 
 
 

ABOUT ME
Sara
「わかりやすく・シンプル」をモットーに、スマホアプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
guest

CAPTCHA


0 Comments
Inline Feedbacks
View all comments
0
この記事にコメントするx