75才からのモバイルアプリ作成

MIT App Inventor 2 を使ったアプリ作成

MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 2)

2024-10-16 07:20:31 | 日記

先日、2024年のノーベル平和賞が、日本被団協に授与されましたので、早速アプリ「Nobel Prize Laureates 1」で「平和賞」、「2024」で検索してみると、(アプリの対象年度に2024を追加)

                                                       

上記の通り団体の名前が表示されない。

一方、1974年の平和賞を検索すると、佐藤栄作氏とショーン・マクブライド氏の情報が表示された。

                                                       

データベースより取得したJSONデータを見てみると、対象が団体と個人の場合でキーの名前が異なっていることが判明。

平和賞は、団体に対しても授与されるが、団体が受賞した場合は、fullNameの代わりにorgNameがキーとなっていることがわかった。

                                         

また、受賞年度によっては、同じ分野の受賞対象が個人と団体双方が含まれていることもある。

アプリ実行のビデオ:

スクリーンデザイン:

以下の通り、前回と変更点なし。

                                                           

                                                  

ブロック・コード:

変更、追加部分のみ。

1. 変数laureateTypeを新規に設定。受賞の対象が団体(organization)か個人(person)を識別する。

2. 取得したJSONデータより、laureateID, fullName(団体の場合は、orgName), birthDate(団体の場合は、設立年のデータを持っている founded), category(受賞分野), awardYear(受賞年), motivation(功績), websummaryURL(受賞者/団体に関するデータをもつウエッブサイトのURL)を取り出す。

上記データは、laureate(受賞個人又は団体)ごとにJSONデータより一つのかたまりとして取り出すが、この際、fullName, birthDateについては、このかたまりの項目のキーに「orgName」が含まれているかどうかをチェックして、含まれている場合は、fullNameではなくorgNameのデータを、birthDateではなくfoundedのデータを、fullNameListとbirthDateListに追加していくこととした。(下図の赤黄点線部分)

拡大すると以下の通り。

                       

他の項目については、対象が個人、団体に関係なくキーの名前が同じなのでチェックの必要はなし。

                              ************* 以下続くが、省略。***************

3. 各項目のデータのlistから、若干体裁を整えてListViewに表示するデータを作成することとなるが、個人が生まれた年月日には「Born on」を、団体の設立年には「Founded on」をそれぞれのデータの前に表示するようにした。

この際、変数laureateTyepを利用し、対象が団体(organization)か個人(person)、どちらなのかをチェックし、「Born on」「Founded on」のいずれを表示すべきかを決めるようにした。

上記赤黄点線内を拡大表示すると以下の通り。

           

4. なお、個人と団体が同じ分野で受賞した時の例として、以下のURLをクリックすれば2022年の平和賞のJSONデータで確認することができる。(参考まで)

      https://api.nobelprize.org/2.1/laureates?nobelPrizeYear=2022&nobelPrizeCategory=pea

言うまでもないことだが、raw dataとして取得することとなり、このままでは見にくかもしれないので、JSON Formatter & Validator などの変換サイトにcopy & pasteをするか、Chromeのextension "JSON Formatter" などを利用すると見やすくなる。

                                                    ***********************************************************

今回判明した今後の課題:

前回は、「birthPlace」(生誕地)のデータも表示したが、今回は省いた。団体の場合は、個人の「birthPlace」(生誕地)に対応するのが「所在地」となる。この団体の所在地については、複数のキーが存在しており、受賞団体によって、使用されるキーが異なるようで、この対応について次回以降検討予定。対処方法が見つかればアプリに反映し、生誕地又は所在地を追加したい。

                                                    ***********************************************************

前回までのブログ:

MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 1)

 



コメントを投稿