実践!手を動かして学ぶAngular演習問題

実践!手を動かして学ぶAngular演習問題

実践!手を動かして学ぶAngular演習問題

こんにちは。私は会社が最近フロントエンドフレームワークであるAngularを採用したためAngularの勉強をしています。
ある程度自分でアプリを構築できるようになってきたため、やはり実際にアプリを作るほうが習得が早いなと思うのと、こういった環境を提供したい気持ちもあったので今回Angularの演習問題を作成してみました!
この演習は、家計簿アプリケーションを題材にしており、基本的なデータ表示からインタラクティブな機能追加まで、段階的に実装を進めていく形式です。

Angularの基礎文法やコンセプトを学んだ後、「次に何をすれば良いかわからない」「実際に手を動かしてみたい」という方に最適な内容となっています。ぜひチャレンジしてみてください!


演習問題の始め方

演習を始めるには、まずご自身の開発環境にプロジェクトをクローンする必要があります。

  1. リポジトリのクローン
    下記のコマンドを実行して、演習問題用のブランチ(exercise-start)をクローンします。
    git clone -b exercise-start https://github.com/flying-YT/kakeibo-app.git
  2. プロジェクトディレクトリへ移動
    cd kakeibo-app
  3. 依存パッケージのインストール
    プロジェクトに必要なライブラリをインストールします。
    npm install
  4. 開発サーバーの起動
    下記のコマンドでアプリケーションをビルドし、ローカルサーバーを起動します。
    ng serve

    ブラウザで http://localhost:4200/ にアクセスすると、演習開始前のアプリケーションが表示されます。ここから、下記の演習問題に取り組んでいきましょう。


演習問題

問題1: 取引履歴の金額表示を動的に調整する

BalanceComponentの取引履歴テーブルにおいて、金額表示が取引のタイプ(収入または支出)に応じて色と符号が変化するように修正してください。

  1. 収入(income)の場合:金額の前に+を付け、CSSクラスincomeを適用して青色で表示する。
  2. 支出(expense)の場合:金額の前に-を付け、CSSクラスexpenseを適用して赤色で表示する。

問題2:取引登録フォームのカテゴリ選択肢を動的に変更する

TransactionFormComponentにおいて、取引タイプ(収入または支出)が変更された際に、カテゴリの選択肢が適切に更新されるように実装してください。

  1. typeフォームコントロールの値がincomeに変わった場合、カテゴリはincomeCategoriesの中から選択されるようにする。
  2. typeフォームコントロールの値がexpenseに変わった場合、カテゴリはexpenseCategoriesの中から選択されるようにする。
  3. 初期表示時も、typeの初期値(expense)に基づいて適切なカテゴリが選択されていることを確認する

問題3:新しい取引を登録するロジックを実装する

TransactionServiceのaddTransactionメソッドは、新しい取引をリストに追加し、日付でソートする役割を担っています。このメソッドの具体的なロジックを実装してください。

  1. 受け取ったtransactionDataに、現在時刻に基づくユニークなidを追加して新しいTransactionオブジェクトを作成する。
  2. transactionsStateシグナルを更新し、新しい取引を既存の取引リストに追加する。
  3. 追加後、取引リストを日付の新しい順(降順)にソートする。

問題4:支出分類グラフにデータを表示する

TransactionServiceのgetSpendingByCategoryメソッドは、支出カテゴリごとの合計金額を計算し、グラフ表示に適した形式でデータを返す役割を担っています。このメソッドの具体的なロジックを実装してください。

  1. まず、全てのexpenseCategoriesについて初期値0を持つMapを準備する。
  2. this.transactions()から全ての取引を取得し、その中から支出(expense)タイプのみを対象とする。
  3. 各支出取引について、そのカテゴリの合計金額を集計する。
  4. 最終的に、集計されたデータをラベル(カテゴリ名の配列)とデータ(対応する金額の配列)のオブジェクトとして返す。

問題は以上です。なお、問題についてはREADMEにも記載しているので参考にしてください。


解答例について

問題が解けなかった場合や、自分の実装と比較したい場合は、下記の解答例ブランチをご確認ください。


さいごに

もし「Angular自体が初めて」という方や、「基礎からもう一度復習したい」という方がいらっしゃいましたら、下記の記事でAngularの概要や特徴をまとめていますので、ぜひご覧ください。

この演習問題が、あなたのAngularスキルアップの一助となれば幸いです。
もし、こういう機能を付けて問題にしたほうが良いなどあれば、ぜひご意見をください。
今回はこのへんで、ではまた!

コメント

このブログの人気の投稿

PowerAppsで座席表を作成する

Power Automateでファイル名から拡張子を取得

Power AutomateでTeamsのキーワードをトリガーにする