2022情報I 2学期
第24回 授業の振り返りより

質問より

天気を表示するところで「print(response ['description']['publicTime'])」にたいして「KeyError: 'description'」と出るのですがこの「kye error」とは何ですか。また対処法はなんですか
天気がうまく検索されていないようで、APIからの戻り値にdescriptionがなかったということのようです。
APIはどのようなところで使われているのですか。企業なども使っているのですか。
Yahooで検索することありますよね。あれ、Yahooの画面に入力した検索語をGoogleのAPIで検索してYahooの画面に表示しているんです。
今回は郵便番号を入力してその情報から住所や周辺の天気などを出力しましたが、ほかの情報を出力させたいときにはどのような情報を入力すればいいのか、逆に郵便番号を入力するだけでどれほどの情報を検索・出力できるのかが気になりました。
いろいろなAPIがあり、提供している目的に応じて入力すべきデータや回答として戻ってくるデータが変わります。郵便番号は大雑把な位置を示すことになるので、位置に関連する情報を得ることができると思います。他の情報を出力させたいなら、その情報を特定するような情報を入力する必要があるはずですよね。
100-0100(東京都大島町)を入力した際、最寄り駅がなかったので、最寄り駅のプログラミングの部分でフラグをたてて、エラーをなくしたのですが、最寄り駅はありませんと表示したあと、なぜか、最寄り駅がないのに、最寄り駅の部分から手に入る座標が手に入ったらしく、桜街道駅付近の情報が出てきました。1000100を入れると、桜街道の座標がもらえるのは、なぜですか?
うまく動かない後の変数にどのような値が入っているかはわかりません。もしかすると別のセルに書いたプログラムや、直前に実行したプログラムの結果が変数内に残っている可能性があると思います。
地名検索と、最寄り駅を出すときは変数を使って一気にできたのですが、天気のところがずっとエラーが出てしまいました。どうすれば、郵便番号だけで出せますか?
天気のプログラム、別の場所を表示できるように改造できましたか?紹介したAPIでは郵便番号で天気を表示できません。都市コードが必要です。町名検索の戻り値をみると、県コードがあります。これを元に代表的な都市コードを生成するプログラムを書けばできるのです。
どうして札幌と沖縄だけコードが違うのだろう
地域が広く、代表するものを1つに絞れないからだと思います。

感想より

相方とここ出した(プリントした)らどんな情報がもらえるかを話し合いながら、最終的に時間内に全部くっつけることが出来ました。100-0100(東京都大島町)は最寄り駅がなく、エラーが出たので、myresponse、mystationの情報をプリントでかきだして、からっぽな中身をコピーし、フラグをたて、もし中身がからっぽだったら「最寄り駅はありません。」と表示させるようにして、エラーをのりこえました。その時に、mystationの中の座標が、なぜか桜街道駅で出て、「え?どこから出たの?」となりました。また、天気で行き詰まったとき、urlを入れて検索して、町のIDを割り出すことができたのが、達成感がすごくて楽しかったです。
最寄り駅がないエラーを回避するプログラムを書いたんですね。立派です。今日の授業は、エラーが出るときもあるけどとにかくつなげるか、エラーを処理しながらつなげるかの2つの方針があります。例外処理(エラーが出るパターンを取り除く)は面倒なのですが、商用のアプリはそこを丁寧にやらないと、クレームの嵐になるんですよね。
JSONなどを予め理解していないと少し難しいような気がした。ただ、知らないまま利用するのもできてもいいのかなと思うきっかけになった。
JSONはプログラム間でデータをやり取りするときのデータの書き方ですね。JSONがわからなくても、JSONで取り出したデータからどのように必要なデータを切り出しているか、すでに書いてあるプログラムを参考に考えればできるはずです。当然、あらかじめ理解してあれば簡単だと思いますが、与えられた条件などから推測して解決するような思考力が共通テストで問われることになります。知らないまま使うのは、そのトレーニングなんです。
今回、上手くできなかったものの、たくさんのエラーを見て調べたので、少しは今後の役に立てていけるかと思う。最もたくさん見たエラーはnot definedだった。元からあるプログラムに付け加えるときは、何がどう定義されているのかをきちんと確認する必要があると思った。
not definedは「定義されていない」という意味で、呼び出している変数が定義されていないことがよくあるパターンなのですが、この授業の場合はちょっと違うかもしれません。エラーが出ている一つ前のAPIによるデータの呼び出しで失敗し、呼び出せたと思っているデータが空の可能性が高いです。空のデータから取り出そうって命令されても、そんなデータないですからnot definedなんです。
APIは大きな関数のようで、データを集め、整理し、使えるデータに変えるという面倒な作業を誰かがやってくれた成果物だ。簡単に/無償で(有償のもあるが)使わせてもらっていることに感謝し、サーバーに負荷をかけないよう、常識的かつ最低限な使用を心がけ、サーバー管理者の指示通りの実装を徹底していきたい。
今回の授業では自分が何をしたいのか、そのためには何をしたらよいのか、その動作に必要なデータはどのような物でどこからとってくるのかというように自分のしたいことを実現するためには順序立てて考える必要があることを感じた。このように順序立てて考える練習を繰り返すことで自分の望む動作を実現できるようになりたいと思った。
 APIで外部のソフトと連携させてプログラミングを行うことは実際に様々なところで使われているので、とてもわくわくした。ペアで協力して行ったところ、最寄り駅までは連結させられたが、天気が難しく、授業内では最後までできなかった。授業後、他のペアに聞いたところ、良いアドバイスがもらえたので後日もう一度やることにした。プログラミングは一人で自分の中で考えを整理することも重要だが、仲間と共に試行錯誤することで生まれる発見や、できた時の達成感がある。また、今回はプログラミングが得意な子とペアを組んだので、学ぶことも多かった。毎回異なる人と組むのも楽しいかもしれないと思った。
APIの仕組みが分かり、この仕組みが使えるようになると幅広いプログラミングができると思った。プログラムで、変数がどのような値を表しているか確認することでプログラムの意味が理解できると感じた。自分以外の人と意見を言い合って試行錯誤しながらプログラミングすることの大切さが分かった。
こういった日常の中の番号の意味は調べれば簡単に知ることができるけど、このように友達と一緒に自分でちょいちょいヒントをもらいながらその意味を考えると謎解きみたいで楽しかった。
プログラミングが得意な人とペアを組んだので、取り組む前は自分ができることは少ないかな、と正直思っていたが、できる人がどういう思考をしてたどり着いているのかを間近で見れて、自分の能力もかなり向上したと感じた。また、東北地方でエラーが出たときに都道府県番号の違いに気付くなど、自分も貢献することができて楽しかった。やはり頭の中で考えるだけではなく、声に出し、キーボードに打つ、そういった行動力が大事なのかなと思った。
プログラミングは動くプログラムをうまく活用することが大切ということがよくわかりました。サポートページにある動くプログラムをどのようにかえるとうまく一連のプログラムに変えることができるかを考えることができました。住所検索から最寄り駅まで出すことはできたが、天気を繋げることができなかったです。天気は都市番号をどうやったら求められるのかがわかりませんでした。プログラムを繋げられるように家でもやってみたいと思います。
リクエストとレスポンスの仕組みがあることは分かったが、あの短い命令文だけで別の場所に情報を求めて表示するという一連の流れができることが不思議だった。また、これまでプログラミングでは分からないところをすぐに人に聞いていたけれど、今回は、どこを修正したらエラーが直るか自分でじっくり考えたことで、以前より主体的にできたと思う。それを実行してエラーが消えた時が嬉しかった。
わかりやすいプログラムは知らない人が見てもどのような仕組みで動くかが分かった。
近道と思ったことが遠回りになったり、逆に愚直にやってみたことがいい結果をもたらすこともあるんだなと実感した。
見通しを持った試行錯誤、という言葉に納得しました。確かに試行錯誤というと、がむしゃらにやってるイメージもありますが、根拠というほどでもなくても、ちゃんと考えて試してみたい。データを使い回すのは結構楽しかった。
今回のように自分で1から書いたのではなく問題で提供されたプログラムでは、変数が何を表しているかを正確に把握しないとそのプログラムで何をしているのかが分からないので、一回その変数を単独でprintして中身を確認するのは上手く進めるコツだと思った。また、「13=東京の都道府県番号」とか、「36.…=立川高校の北緯」など、知っていればヒントになるような内容も多かったので、プログラミングをする上でも広い知識は大切だと感じた。
今回の授業なプログラミングはまだ最後までできなかったが、一度printして表示して何が書かれていて何が必要なのかを考えることができた。分からないものも自分で試行錯誤して考えてみるとそれが示していることや関係が分かり、とても面白かった。数年後に必要となってくる思考力を身につけるためにも、日頃からプログラミングなどsurfaceを活用して準備していきたいと思った。
今回はチームメイトと2人で会話を密にしたことで最終的に全て完成させることができました。言葉にすることで自分の思考も整理されて上手く進められました。
作ってあるプログラミングを自分たちでいじって音声とかつけたりできるのが面白かった。4つのプログラミングをどうくっつけたら、いいのかとかを考えるのが楽しかった。今までのペアワークで一番楽しい授業回だと私的に思った。
思考力が試されていると感じた。組まれたプログラムから原理や構造を読み取り、それを再現することは難しかった。今回はトライアンドエラーを繰り返して作れたから良かったが、共通テストでは話が変わってくる。初見でもコードから読み取れる対応力が必要だと感じた。
他の人が作ったプログラムを使うときは変数を辿ってみてどういう構造になっているか調べるのがまず大事だと思った。完璧には理解できなくても、どこで何をしていて、どんな情報が必要なのか把握できるようにするのに知識が必要だと思った。
適切なデータを代入するために、printでlistを出力させその中身に何が入っているか確認し、プログラムを作成していきました。こうすることによって、プログラミングの効率が上がり、ミスを発見しやすくなったり、apiのプログラム自体の理解が深まることにつながりました。この工夫のおかげで、無事に課題を終わらせることができました。

自己評価集計

自己評価集計

ワードクラウド

3つのキーワード

3つのキーワード
感想や気づき

感想や気づき
テキストマイニング 無料ツール by ユーザーローカル
前のページに戻る