*
前回の続きだよ。
– 登場人物 –
万座 まりん(まんざ まりん)
小学6年生
好奇心旺盛で、何でも兄の真似をしたがるお年頃。
万座 備一(まんざ びいち)
大学1年生。
子供の時からプログラミングを勉強して、自分でいろいろと作ったりしている。
将来プログラマーになるかどうかは、まだ考えていない
(2)アプリにはライフサイクルがある

じゃあ、アプリを開発するために必要なアプリの中身について知っていこう。
まずは全体的な流れからだ。
アプリが起動してから終了するまでの流れは「ライフサイクル」と呼ばれてるよ。
ライフサイクルはアプリだけじゃなく、いろんなところで使われる言葉で、一般的には生まれてから死ぬまでの経過のことだよ。アプリの場合は起動してから終了するまでの状態変化の流れだと思っていればいいよ。
状態のことをステータスって言うこともあるかな。

えーっと、「ライフサイクル」って言うのは、アプリの始まりから終わりまでにどんな状態があるかっていうこと?

そんな感じかな。

わーい!当たったぁ!
意味はわかってないけど。

がっかり。。。

アプリのライフサイクルはこうなってるんだ。
– アプリのライフサイクル –
1.停止
アプリが動いていない状態。終了している状態。
2.非アクティブ
停止状態(もしくはバックグラウンド)とアクティブが切り替わる間の状態。この状態にある時はイベントを受け付けない。
3.アクティブ
アプリが実行されている状態。通常使っている状態。
4.バックグラウンド
アプリは動作しているけど画面上に表示されていない状態。ホーム画面だったり、他のアプリが画面に出ている状態。
5.一時停止
アプリがバックグラウンドにあるけど、動作していない状態。バックグラウンドにあるときに、自動的にこの状態に移行する。

このライフサイクルが変わるタイミングで何かしたい時があるんだ。例えば、アプリの起動が完了したタイミングでデータを初期化したいとか。バックグラウンドになったらある処理を停止したいとかだね。
そんな時にどこでどう処理をすれば良いのかってのはフレームワークなんかで変わってくるよ。どうするかってのは、あとで説明しよう。
今はアプリに状態があるってことを理解してればいいよ。

状態はわかったけど、イベントってなに?

うーん。わかりやすく言うと、何かが起こった時に知らせる通知のことだと思えばいいかな。
例えば、スマホがスリープ状態になったとか、電波が切れたとかそういうのをアプリに教えてくれるんだ。
他でもイベントっていう言葉はよく出てくるので、覚えておいてね。

はぁ〜い。
(3)表示されている画面にもライフサイクルがある

スマホアプリの場合、画面の制御がメインになるよ。表示だけでなく、操作も画面でやるからね。
アプリを使っていると画面が切り替わったりすると思うけど、そのことを画面が遷移する(画面遷移)って言うんだ。よく使う言葉だから覚えて置いてね。

アプリの画面ってなに?
スマホのディスプレイのこと?

そうだな〜、どちらかと言うと、ディスプレイに表示しているものって言う方がいいかな。
アプリがディスプレイに表示するものを用意していて、それを必要なタイミングで表示させる。
ディスプレイって言うハードウェアにアプリって言うソフトウェアが画面を表示しているんだ。
画面のことをビュー(View)とかページ(Page)とかって言うこともあるね。
– ディスプレイのイメージ –

そして、画面にもライフサイクルがあるんだ。

画面のライフサイクル。。。画面の始まりから終わりまでってこと?

そういう事だよ!正解〜
アプリが画面を生成してから削除するまでの状態の事だよ。
– 画面のライフサイクル –

ライフサイクルの状態が変わった時にアプリに通知する仕組みになっていて、それはライフサイクルイベントと呼ばれているよ。
この画面のライフサイクルイベントが発生するタイミングや名前はiPhoneとAndroidで変わってくる。
そして、Xamarin.Formsは独自のライフサイクルを持っているんだ。
OSによって違うと言うよりもフレームワークによって変わるって言う方が正しいかもな。

うう〜ん?
画面の始まりからお終いまでにライフサイクルイベントってのがあって、iPhoneとAndroidでイベントが違うっていうこと?

難しいけど、そう言うことだね。
アプリを作るときに、このイベントに合わせて処理を入れたりするんだ。
例えば、画面を作った時に初期値を入れるとか。

うーんうーん。
分かんなくなってきたよ〜
イベントに合わせて処理を入れるってどういうこと?

うーん、そうだなぁ。
これはプログラムを実際に書くとに説明するけど、フレームワークにはイベントを受け取るものが用意されているんだ。その場所にやりたいことをプログラムで書いてあげる。
そうすると、そのイベントが発生した時に、書いてあるプログラムが実行されるんだ。

ふーん。よくわかんないけど、このイベントの時はここにプログラムを書くって言う場所が用意されているってこと?

そうそう、そう言うこと!

やったー。
(4)ライフサイクルの違い

じゃあ、実際にアプリのライフサイクルがどう違うのか見てみよう。

Androidでは画面をコントロールしているものをActivity(アクティビティ)って呼んでるんだ。
トップ画面をコントロールするものをMainActivity(メインアクティビティ)と呼ぶ。
この表でActivityとなってるのはトップ画面のことだと置き換えて考えれば良いよ。

ふーん。全然違うんだね。この英語のは何?

おっと、その説明が漏れてたね。
さっき言っていた「イベントが発生した時にプログラムを書く場所」って言うのがこれなんだ。
その場所をメソッドって言うんだけど、メソッドの名前の書き方はOSというかフレームワーク、プログラミング言語によって違うんだ。
XamarinはiOSとAndroidの最大公約数的にイベントがあるので、数が少なくてシンプルだね。

じゃあ、何かしたい時は、この名前の場所に書けばいいってことなんだね。
でも、ごちゃごちゃしててよくわかんない。

そういうことだね。
そうだな〜、各OSについては必要な時に勉強するとして、今はXamarinのライフサイクルだけ見ておこう。
やっていくうちに、iPhoneの場合、Androidの場合の違いが必要になってくることもあるよ。

ふーん。
Xamarinは3つしかないから簡単だね。

そうだね、逆に細かい動作は難しくなってくるんだけど、実はなんとかできる方法はあるんだ。

そうなんだ、じゃあ安心だね!

次は画面のライフサイクルを見てみよう。

やっぱりXamarinはかなりシンプルだね。

本当だ。iPhone(iOS)はたくさんイベントがあるね。

よく見てるとWillとDidってのがあると思うんだけど、Willが状態が変化する直前、Didが変化後のイベントなんだ、一つの状態変化に2つのイベントがあるからたくさんあるように見えるんだね。

なるほどー。
Xamarinはとっても少ないけど、大丈夫なの?

そうだなー。
何を作るかにもよるけど、基本的には問題にならないかな?
必要最小限って感じだね。

ねーねー。
ライフサイクルってのを勉強したけど、これって何の意味があるの?

ん?そうだな。。。
アプリを作るにはプログラムを書くだろ?でも、このライフサイクルがわかってないと初めにどこから手をつけたらいいのかわからないよね。
ライフサイクルを知っていると、どこが最初に動作するかがわかるから、プログラムの流れを把握しやすいんだよ。

そっかー。
最初にどこから始めればわかるってことなんだね!
今回出てきた言葉のまとめ
-
- ライフサイクル
- アプリや画面が起動してから終了するまでの状態を表したもの。
- イベント
- OSやアプリの状態が変わったことを教えてくれる通知。
次はもしかするとプログラムが触れるかも!?
12月5日に更新予定!
コメント