dtn.jpトップページのニュース記事

先日、Bing News Search APIを使ってdtn.jpのトップページにニュース記事を表示してみた話をご紹介しました。

BingのWeb Search API v7に用意されているNews Search APIを使い、ニュース記事をカテゴリ別に取得して表示していますが、最新ニュース記事を無料でAPIをつかって取得できるのでとても重宝しています。

ニュース記事のリンクが壊れる

ところが、サイトに表示されたニュース記事を見てみようとリンク先に進んでみたところ、MSNニュースのエラーページが表示されておりました。

MSNニュースのエラー画面が表示された

どうやら、ほとんどのニュース記事のリンク先がこのパターンとなっており、どうやらリンクが壊れてしまっているようでした。

とはいえ、ニュース記事のタイトルは正確に表示されているので、APIからは普通にjsonのレスポンスが取れているようなので、とりあえずテストプログラムを作ってJSONデータをチェックしてみることにしました。

jsonのレスポンスデータは壊れていない

テストプログラムで取得したjsonデータから記事タイトル、URLを配列で取り出してみると、特に壊れてはいないようです。となると、サイトで表示するためにMySQLに一旦データを貯めるあたりで壊れたということのようです。

下画像の長々しいURL文字列とMySQLのINSERTで壊れたというあたりで原因が分かった方は多いと思いますが、そうです、INSERTするテーブルのカラムの文字数制限を超えてしまっていたので、URLがきちんと保存できていなかったということが原因でした。

JSONの生データのURLはきちんと表示されていた

ニュース記事のリンク先URLが変化した

2020年12月のレスポンスデータ

Bing News Search APIをを使ってニュース情報を取得し始めた先月のレスポンスデータをみると、ニュース記事は各メディアのサイトURLをそのまま返していたので、URL文字列は長くても100文字程度で収まってくれていました。

R東日本とKDDI、品川開発プロジェクトをコアとした新たな分散型 …
https://www.excite.co.jp/news/article/DigitalShiftTimes_FN201216_3/

36歳バースデーの平愛梨、夫・長友佑都からのサプライズ …
https://nlab.itmedia.co.jp/nl/articles/2012/16/news078.html

2020年12月のAPIレスポンスのニュース記事タイトル・URL

2021年1月のレスポンスデータ

エラーとなっていた直近のニュース情報のデータをみると、URLはどれもmsn.comを経由して各メディアのニュース記事を表示するといった形に変更されており、恐ろしく長いURL文字列に変化をしていました。

【共通テスト速報】作問担当者「難化したと見えるかも」
https://www.msn.com/ja-jp/news/national/e3-80-90-e5-85-b1-e9-80-9a-e3-83-86-e3-82-b9-e3-83-88-e9-80-9f-e5-a0-b1-e3-80-91-e4-bd-9c-e5-95-8f-e6-8b-85-e5-bd-93-e8-80-85-e3-80-8c-e9-9b-a3-e5-8c-96-e3-81-97-e3-81-9f-e3-81-a8-e8-a6-8b-e3-81-88-e3-82-8b-e3-81-8b

石原プロの58年に“完”裕次郎さん仏前に商号返還…舘「おもちゃ箱のようだった」
https://www.msn.com/ja-jp/news/entertainment/%E7%9F%B3%E5%8E%9F%E3%83%97%E3%83%AD%E3%81%AE%EF%BC%95%EF%BC%98%E5%B9%B4%E3%81%AB-%E5%AE%8C-%E8%A3%95%E6%AC%A1%E9%83%8E%E3%81%95%E3%82%93%E4%BB%8F%E5%89%8D%E3%81%AB%E5%95%86%E5%8F%B7%E8%BF%94%E9%82%84-%E8%88%98

2021年1月のAPIレスポンスのニュース記事タイトル・URL

どうやら、Bing News Search APIで提供するニュース情報も、しっかりmsn.comのニュースページを経由して表示するように仕様を変更していたようです。下画像のようなYahooニュースと同じようなつくりになったということのようです。

読売新聞の記事をmsnニュースで表示

テーブルのデータを見てみると、どうやら先週頃に突然仕様が変更になっていたみたいです。

URL用のカラムがvarchar(255)

一方、このニュース情報保管用に作ったテーブルをみると、記事URL用に設定したカラムはvarchar(255)で設定していたため、以前のような100文字行かない程度のURLであればうまく収まってくれていたようですが、255文字を超えるような長々しいURLばかりとなってしまったので、尻切れになってしまっていたということのようです。

なんとも情けない原因でお恥ずかしい限りです。カラムの文字制限数を増やしてあっさり解決することができました。

おわりに

ということで、無事にdtn.jpトップページのニュースも正常に戻すことができました。

メディアからニュースデータは買ってるはずなのに、Bing News Search APIでは自分のサイトも経由せずにメディアサイトの直リンクを提供しているので凄いとは思っていましたが、単にAPIを提供しているチームが細かいことを特に気にしてなかっただけだったということなのかもしれないです。

PHPが学べるおすすめプログラミングスクール

この運営ブログをみて、もしdtn.jp管理人のようにサイトをゼロから作ってみたいという思いに駆られた方は、サイト開発やプログラミングをオンラインで受講できるプログラミングスクールの活用をしてみてはいかがでしょうか。サーバ/WordPress/HTML/CSS/JS/PHP/SQLなどの基本さえ分かれば、ゼロからサイト立ち上げもポンポンできるようになって、今なら仕事や転職にも役立つのでオススメです。

PHPも学べるオンラインスクール

  • CodeCampAWS Cloud9を使ったクラウド上のIDEが用意されているので、ネットにつながればスタート開始可能というゴージャスなスクールです。講師も選べて、Webマスターコースならプログラミング経験0でも一気にフロントエンドからバックエンドまでマスターできます。
  • ウェブカツJava言語やRuby言語なんぞ教えん!という、初心者にありがちな挫折ポイントがよく分かってるスクールです。フロントエンドエンジニアに必要なスキルセット&PHPがマスターできます。
  • フリークス HTML/CSSから始まり、MySQLやLinuxからPHPの変数や分岐やループ、クラスやPDOに最後はMVCまで教えてくれるので、そこまで分かればなんでもできそうです。メンターに質問もし放題がいいですね。
  • テックアカデミー法人のIT研修もやってる業界最大手・受講者数No.1のスクールです。メンターとの定期オンライン面談やチャットサポートなどもあり、大手ならではインフラ環境がウリです。PHPと合わせてjQueryもマスターできる、PHP/Laravelとフロントエンドコースがおすすめです。

オンラインスクールのデメリット

孤独になりがちなサイト制作も、優しいメンターがそばにいてくれれば凄い楽しそうですが、もちろんデメリットもあります。お金がかかるという点です。ひたすらググって、本を読んでよりは確実にコストがかかってしまいます。とはいえ、多少の余裕があるなら、こんなご時世なので時間と労力を買った方が良いと思います。