この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ionic3で計算アプリ [2017/06/18] adash333 [src/pages/home/home.htmlの変更] |
ionic3で計算アプリ [2018/10/07] (現在) |
||
---|---|---|---|
ライン 10: | ライン 10: | ||
この本の第5章「スタンドアロンアプリを作る」を、Ionic3(Angular4)で写経してみます。\\ | この本の第5章「スタンドアロンアプリを作る」を、Ionic3(Angular4)で写経してみます。\\ | ||
- | Angular4用のコードは、下記サイトで配布されています。\\ | ||
- | 『Angular2によるモダンWeb開発』ダウンロードページ | ||
- | 2017年4月10日更新\\ | ||
- | http://ec.nikkeibp.co.jp/nsp/dl/09653/index.shtml | ||
ライン 25: | ライン 21: | ||
{{:pasted:20170618-134010.png}} | {{:pasted:20170618-134010.png}} | ||
- | 今回は、ionic3を用いて、「元本」と「利息」を入力すると、1年後から10年後までの支払額が出力されるようなアプリを作成します。 | + | 今回は、ionic3を用いて、「元本」と「利息」を入力すると、10年後までの支払額が出力されるようなアプリを作成します。 |
+ | |||
+ | ソースコードは以下のリンクへ。 | ||
+ | |||
+ | https://github.com/adash333/ionic3-calculate | ||
====ionic3-calculateアプリの作成==== | ====ionic3-calculateアプリの作成==== | ||
ライン 135: | ライン 135: | ||
(変更後) | (変更後) | ||
+ | {{:pasted:20170618-151506.png}} | ||
+ | <コード解説1>\\ | ||
+ | <ion-xxx>というところは、全て、ionic特有のUI(見栄え)の表記です。ionicの公式ドキュメントを参照しつつ、入力します。 | ||
+ | <コード解説2>\\ | ||
+ | <code> | ||
+ | [(ngModel)]="initValue" | ||
+ | </code> | ||
+ | は、Angularの"双方向データバインド"を使用して、ここで入力値(元本と利息)を受け取っています。 | ||
+ | {{:pasted:20180610-185810.png}} | ||
+ | |||
+ | <コード解説3> | ||
+ | <code> | ||
+ | <ion-card *ngIf="initValue && rate"> | ||
+ | </code> | ||
+ | の部分は、Angularの"NgIfディレクティブ"であり、「initVlaueとrate両方が存在する場合に、ion-card以下の部分を表示す。」ようにしています。 | ||
+ | |||
+ | <コード解説4> | ||
+ | <code> | ||
+ | {{calc() | number}} | ||
+ | </code> | ||
+ | の部分は、Angularの"片方向データバインド"を使用して、10年後に支払額を以下の場所で表示するようにしています。\\ | ||
+ | なお、" | number"の部分は、Decimal Pipeによる数値表示の書式設定を行っており、ここでは、3桁ごとのカンマがつけられます。(筆者は詳細を理解しておりません。すみません。。。) | ||
(参考)\\ | (参考)\\ | ||
ライン 154: | ライン 176: | ||
{{:pasted:20170618-144831.png}} | {{:pasted:20170618-144831.png}} | ||
+ | ====src/pages/home/home.tsの変更==== | ||
+ | |||
+ | 元本と利息の入力を受け取り、10年後の支払額を計算して返すプログラムを記載します。home.tsを、ざっくり、下に置き換えます。 | ||
+ | |||
+ | <code> | ||
+ | import { Component } from '@angular/core'; | ||
+ | import { NavController } from 'ionic-angular'; | ||
+ | |||
+ | @Component({ | ||
+ | selector: 'page-home', | ||
+ | templateUrl: 'home.html' | ||
+ | }) | ||
+ | export class HomePage { | ||
+ | |||
+ | initValue: number; // 元本入力欄と双方向データバインド | ||
+ | rate: number; // 金利入力欄と双方向データバインド | ||
+ | |||
+ | constructor(public navCtrl: NavController) { | ||
+ | } | ||
+ | |||
+ | // 複利計算 | ||
+ | calc(): number { | ||
+ | if (isNaN(this.initValue) || isNaN(this.rate)) { | ||
+ | // 元本または利率が数字でないときはnullを返す | ||
+ | return null; | ||
+ | } | ||
+ | let answer: number = this.initValue; | ||
+ | for (let i = 0; i < 10; i++) { | ||
+ | // 金利計算を10回繰り返して複利計算 | ||
+ | answer = answer * (1 + this.rate / 100) | ||
+ | } | ||
+ | return Math.floor(answer); // 計算結果を整数に変換 | ||
+ | } | ||
+ | |||
+ | } | ||
+ | </code> | ||
+ | |||
+ | <コード解説1> | ||
+ | Typescriptなので、以下のように型定義をしっかりしておかなくてはいけません。 | ||
+ | <code> | ||
+ | initValue: number; // 元本入力欄と双方向データバインド | ||
+ | rate: number; // 金利入力欄と双方向データバインド | ||
+ | </code> | ||
+ | |||
+ | <コード解説2> | ||
+ | あとは、calc()という、initVlaueとrateから10年後の金額answerを返す関数を定義します。 | ||
+ | |||
+ | |||
+ | (変更前) | ||
+ | |||
+ | {{:pasted:20170618-152628.png}} | ||
+ | |||
+ | (変更後) | ||
+ | |||
+ | {{:pasted:20170618-153348.png}} | ||
+ | |||
+ | ブラウザの画面で、元本と金利のところに数字を入力すると、自動的に10年後の金額が表示される。 | ||
+ | |||
+ | {{:pasted:20170618-153426.png}} | ||
+ | |||
+ | |||
+ | ====明細表示の追加==== | ||
+ | |||
+ | src/pages/home/home.htmlの、最後から1行目に以下を挿入 | ||
+ | |||
+ | <code> | ||
+ | <!--明細表示--> | ||
+ | <ion-card *ngIf="initValue && rate"> | ||
+ | <table> | ||
+ | <tr | ||
+ | *ngFor="let value of calcArray(); let i = index"> | ||
+ | <td>{{i}}年目</td> | ||
+ | <td>{{value | number}}円</td> | ||
+ | </table> | ||
+ | </ion-card> | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20170618-165918.png}} | ||
+ | |||
+ | home.tsに以下を挿入 | ||
+ | |||
+ | <code> | ||
+ | // 年毎の金額計算 | ||
+ | calcArray(): number[] { | ||
+ | if (isNaN(this.initValue) || isNaN(this.rate)) { | ||
+ | // 元本または利率が数字でないときはnullを返す | ||
+ | return null; | ||
+ | } | ||
+ | let answer: number = this.initValue; | ||
+ | let ret: number[] = [answer]; | ||
+ | for (let i = 0; i < 10; i++) { | ||
+ | // 金利計算を10回繰り返して複利計算 | ||
+ | answer = answer * (1 + this.rate / 100) | ||
+ | ret.push(Math.floor(answer)); // 整数に変換 | ||
+ | } | ||
+ | return ret; | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20170618-170218.png}} | ||
+ | |||
+ | ====見栄えの変更==== | ||
+ | |||
+ | src/pages/home/home.html | ||
+ | |||
+ | (変更前) | ||
+ | |||
+ | <code> | ||
+ | <!--入力済みの場合に表示--> | ||
+ | <ion-card *ngIf="initValue && rate"> | ||
+ | </code> | ||
+ | |||
+ | (変更後) | ||
+ | <code> | ||
+ | <!--入力済みの場合に表示--> | ||
+ | <ion-card *ngIf="initValue && rate" color="primary"> | ||
+ | </code> | ||
+ | |||
+ | src/pages/home/home.scss を以下に書き換え。 | ||
+ | |||
+ | <code> | ||
+ | page-home { | ||
+ | h1,h2 { text-align: center; } | ||
+ | table { width: 100%; } | ||
+ | td {text-align: right; } | ||
+ | |||
+ | /*偶数行目の背景を着色*/ | ||
+ | div tr:nth-child(odd){ | ||
+ | background-color: cornsilk; | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | {{:pasted:20170618-172102.png}} | ||
+ | |||
+ | |||
+ | |||
+ | (参考) | ||
+ | |||
+ | 文字の左右・中央揃え【text-align】:CSS入門\\ | ||
+ | http://kumacrow.blog111.fc2.com/blog-entry-287.html | ||
+ | |||
+ | 2012-01-27 | ||
+ | CSS3で表を縞模様にする\\ | ||
+ | http://d.hatena.ne.jp/guimo/20120127/1327617371 | ||
+ | |||
+ | ====Androidアプリの作成==== | ||
+ | |||
+ | VisualStudioCodeのcmd.exeの画面で、Ctrl+C, Y, Enterでサーバを停止してから、以下のコマンドを入力。 | ||
+ | |||
+ | <code> | ||
+ | ionic cordova platform add android | ||
+ | ionic cordova build android | ||
+ | </code> | ||
+ | |||
+ | 途中、何か聞かれたら、YとしてEnter. | ||
+ | |||
+ | {{:pasted:20170618-183404.png}} | ||
+ | |||
+ | 数分かかる。 | ||
+ | |||
+ | {{:pasted:20170618-183606.png}} | ||
+ | |||
+ | どこにandroid-debug.apkファイルが作成されたのか表示される(下図の赤で囲った部分)ので、その場所に保存されているapkファイルを、自分のスマホにメールします。 | ||
+ | |||
+ | {{:pasted:20170618-183656.png}} | ||
+ | |||
+ | {{:pasted:20170618-183952.png}} | ||
+ | |||
+ | ====Androidアプリのインストール==== | ||
+ | メールしたapkファイル(約4MB)を、自分のandroidスマホにインストールします。\\ | ||
+ | 今回は、arrows M03にインストールしてみました。 | ||
+ | {{:pasted:20170618-184414.png}} | ||
+ | ====ソースコード==== | ||
+ | https://github.com/adash333/ionic3-calculate | ||
=====リンク===== | =====リンク===== | ||
前: | 前: | ||
ライン 166: | ライン 363: | ||
次: | 次: | ||
<wrap hi> | <wrap hi> | ||
- | [[github上のionic3アプリのインストール]] | + | [[ionic3でタイマーアプリ]] |
</wrap> | </wrap> |