実践!手を動かして学ぶAngular演習問題
実践!手を動かして学ぶAngular演習問題
こんにちは。私は会社が最近フロントエンドフレームワークであるAngularを採用したためAngularの勉強をしています。
ある程度自分でアプリを構築できるようになってきたため、やはり実際にアプリを作るほうが習得が早いなと思うのと、こういった環境を提供したい気持ちもあったので今回Angularの演習問題を作成してみました!
この演習は、家計簿アプリケーションを題材にしており、基本的なデータ表示からインタラクティブな機能追加まで、段階的に実装を進めていく形式です。
Angularの基礎文法やコンセプトを学んだ後、「次に何をすれば良いかわからない」「実際に手を動かしてみたい」という方に最適な内容となっています。ぜひチャレンジしてみてください!
演習問題の始め方
演習を始めるには、まずご自身の開発環境にプロジェクトをクローンする必要があります。
-
リポジトリのクローン
下記のコマンドを実行して、演習問題用のブランチ(exercise-start
)をクローンします。git clone -b exercise-start https://github.com/flying-YT/kakeibo-app.git
-
プロジェクトディレクトリへ移動
cd kakeibo-app
-
依存パッケージのインストール
プロジェクトに必要なライブラリをインストールします。npm install
-
開発サーバーの起動
下記のコマンドでアプリケーションをビルドし、ローカルサーバーを起動します。ng serve
ブラウザで http://localhost:4200/ にアクセスすると、演習開始前のアプリケーションが表示されます。ここから、下記の演習問題に取り組んでいきましょう。
演習問題
問題1: 取引履歴の金額表示を動的に調整する
BalanceComponentの取引履歴テーブルにおいて、金額表示が取引のタイプ(収入または支出)に応じて色と符号が変化するように修正してください。
- 収入(income)の場合:金額の前に+を付け、CSSクラスincomeを適用して青色で表示する。
- 支出(expense)の場合:金額の前に-を付け、CSSクラスexpenseを適用して赤色で表示する。
問題2:取引登録フォームのカテゴリ選択肢を動的に変更する
TransactionFormComponentにおいて、取引タイプ(収入または支出)が変更された際に、カテゴリの選択肢が適切に更新されるように実装してください。
- typeフォームコントロールの値がincomeに変わった場合、カテゴリはincomeCategoriesの中から選択されるようにする。
- typeフォームコントロールの値がexpenseに変わった場合、カテゴリはexpenseCategoriesの中から選択されるようにする。
- 初期表示時も、typeの初期値(expense)に基づいて適切なカテゴリが選択されていることを確認する
問題3:新しい取引を登録するロジックを実装する
TransactionServiceのaddTransactionメソッドは、新しい取引をリストに追加し、日付でソートする役割を担っています。このメソッドの具体的なロジックを実装してください。
- 受け取ったtransactionDataに、現在時刻に基づくユニークなidを追加して新しいTransactionオブジェクトを作成する。
- transactionsStateシグナルを更新し、新しい取引を既存の取引リストに追加する。
- 追加後、取引リストを日付の新しい順(降順)にソートする。
問題4:支出分類グラフにデータを表示する
TransactionServiceのgetSpendingByCategoryメソッドは、支出カテゴリごとの合計金額を計算し、グラフ表示に適した形式でデータを返す役割を担っています。このメソッドの具体的なロジックを実装してください。
- まず、全てのexpenseCategoriesについて初期値0を持つMapを準備する。
- this.transactions()から全ての取引を取得し、その中から支出(expense)タイプのみを対象とする。
- 各支出取引について、そのカテゴリの合計金額を集計する。
- 最終的に、集計されたデータをラベル(カテゴリ名の配列)とデータ(対応する金額の配列)のオブジェクトとして返す。
問題は以上です。なお、問題についてはREADMEにも記載しているので参考にしてください。
解答例について
問題が解けなかった場合や、自分の実装と比較したい場合は、下記の解答例ブランチをご確認ください。
さいごに
もし「Angular自体が初めて」という方や、「基礎からもう一度復習したい」という方がいらっしゃいましたら、下記の記事でAngularの概要や特徴をまとめていますので、ぜひご覧ください。
参考ブログ記事:
Angularとは?フルスタックなフレームワークを徹底解説!
この演習問題が、あなたのAngularスキルアップの一助となれば幸いです。
もし、こういう機能を付けて問題にしたほうが良いなどあれば、ぜひご意見をください。
今回はこのへんで、ではまた!
コメント
コメントを投稿