WebサービスAPI利用時の注意点
インターネットは、「ベストエフォート型のサービス」がほとんどである。
一方、常に一定の通信速度や品質を保証している「ギャランティ型サービス」もあるが高価である。
WebサービスAPIなどを利用したシステム開発には、基本的には、「ベストエフォート型のサービス」を前提とした設計が不可欠である。
「ベストエフォート型のサービス」は、通信速度やサービスの質が保証されないので、通信速度の低下などで、リトライエラーが頻繁に発生して、タイムアウトに陥ることがある。
これにより、プログラムで例外が発生して、予期しないプログラム停止となる。
このような事態を防ぐには、「ベストエフォート型のサービス」という前提でシステム開発することが必須である。
プログラミング初心者が陥る落とし穴でもある。
インターネット通信は、エラーがでることを想定したプログラミングを行うことが必要になる。
例外処理で、救済するためのプログラミングが必須となる。
try:
except Exception as e:
のexcept:欄に、インターネットでのエラーを救済するためのプログラミングを施す。
この欄で、最初からやり直すための処置などを施す。
具体的には、例外が発生した日時や例外内容をログとして保存して、インターネットが復旧した段階で、メール通知するなどの処置などを行う。そして、プログラムを継続させて、矛盾がないようにする。
これにより、インターネット品質などを知ることができ、通信品質の改善を行うことができると同時にトランザクション処理も実現できる。
群馬プログラミングカレッジで開発した「複数ロボット会話システム」でもこのような救済処理が運用上必須となった。
インターネット回線を複数で共有する環境では、通信品質が低下して、しばしば、RetryMaxErrorにより、例外が生じる。
pythonのrequestsモジュールを利用して、Webサービスに接続している場合に、度々、例外が生じた。
基本は、「トランザクション処理」の実践である。
群馬プログラミングカレッジでは、pythonプログラム言語を学び、「実務経験」を行うことができます。
子ども達は、子どもプログラミング教室で、Scratchプログラム言語を学び、高学年生は、徐々に高級プログラム言語を学びます。
群馬プログラミングカレッジでは、毎月、プログラミング体験会を実施しておりますので、お気軽にご参加ください。
子どもから成人の方が、継続的にプログラミングを学ぶ場を提供いたします。
複数ロボット会話システム
案内ロボットとして、活躍しています。pythonプログラム言語、PHPプログラム言語で開発しました。
WebサービスAPIを利用して、お互いの会話の同期を制御している。