SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

UWPアプリ開発の最前線

Windows電卓の中はどうなっているのだろう?(後編)
~オープンソースのコードを改造してみよう

UWPアプリ開発の最前線 第14回

 取得してきたソースコードがちゃんとビルドできて動作すると確認できたので、簡単な機能を1つ追加してみましょう。以降の解説は、2019年8月28日に取得したソースコードを基にしています。

面積コンバーターに「坪」を追加してみる

 「電卓」アプリには、単位を変換する機能が備わっています。例えば、面積では次の画像に見えるような単位を相互に変換できます。

「電卓」アプリの面積コンバーター機能で、変換したい単位を選ぶドロップダウンを開いたところ
「電卓」アプリの面積コンバーター機能で、変換したい単位を選ぶドロップダウンを開いたところ

 この面積コンバーターの選択肢に「坪」を追加してみましょう。

 アプリが変更しやすい作りになっていれば、選択肢と変換する定数を追加するだけで終わるかもしれません。あまり上手ではない作りだと、あっちこっちのロジックまで修正するはめになるかもしれません。この「電卓」アプリはどうでしょうか? やってみましょう。

画面の選択肢を用意しているコードを探す

 まず、画面に表示される選択肢の定義場所を探します。上の画像で「平方ミリメートル」という単位が見えていますね。その「平方ミリメートル」という文字列をソリューション全体から検索してみると、日本語リソースのResources.reswに見つかります(次の画像)。

「平方ミリメートル」の定義箇所
「平方ミリメートル」の定義箇所(日本語のResources.resw

 今度は、「平方ミリメートル」の定義名「UnitName_SquareMillimeter」(上の画像に見えています)を使っているところを検索します。この定義名は多数のリソースファイルに定義されているので、ひとつひとつ検索結果を見ていくのは大変です。次の画像のように検索中に[すべて検索]に切り替えるか、あるいは、メニュー[編集]-[検索と置換]-[フォルダーを指定して検索]を使って、すべての検索結果を出すようにすると楽です。

1件ずつ検索している途中で[すべて検索]に切り替える
1件ずつ検索している途中で[すべて検索]に切り替える

 すると、定義名「UnitName_SquareMillimeter」を使っている箇所はリソースファイル以外に1つだけあって、/CalcViewModel/DataLoaders/UnitConverterDataLoader.cppに見つかります(次の画像)。

「UnitName_SquareMillimeter」の使用箇所
「UnitName_SquareMillimeter」の使用箇所(View ModelのUnitConverterDataLoader.cpp

 ここでは、文字列リソースとして定義名「UnitName_SquareMillimeter」の他に、その次の行で「UnitAbbreviation_SquareMillimeter」を使っています。また、その前の行では、定数「UnitConverterUnits::Area_SquareMillimeter」を使っています。これら3つの「平方ミリメートル」の定義、すなわち、文字列リソース「UnitName_SquareMillimeter」・「UnitAbbreviation_SquareMillimeter」と定数「UnitConverterUnits::Area_SquareMillimeter」が定義されているところに、「坪」の定義を追加すればよさそうです。

 また、上のコードでやっていることは、vectorコレクションの変数areaUnitsを用意して、そのpush_backメソッドを順に呼び出すことです。push_backメソッドに与える引数は、上述の3つの定義から作ったOrderedUnitオブジェクトになっています。どうやら、ここで画面に表示する選択肢のデータを作っているようです。ということは、これを真似して「坪」のデータを追加するpush_backメソッドを書き加えればよさそうです。

次のページ
「坪」の定義を追加する

関連リンク

この記事は参考になりましたか?

UWPアプリ開発の最前線連載記事一覧

もっと読む

この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11706 2019/09/24 11:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー