お仕事・制作日記

Sony Eマウント フルサイズ対応のカメラレンズを収集するページを作ってみた

Sony Eマウント フルサイズ対応のカメラレンズを集めてみた。

サンプル:https://sample.simplesimplesdesign.com/sonyalpha/lens.php

なせ、そんなページを作ったのか

最近、立て続けに新しいカメラレンズが発売された。そもそも現在発売されているレンズがどのくらいあるのか気になったので調査することにした。各主要レンズメーカーでレンズごとの詳細を見ていたが、気になるスペック情報だけ集めた一覧ページがあればいいなと思って、そんなページを作ることにした。

というわけで、仕様策定からデータ収集、デザイン、コーディング、API制作、プログラミングまで、フルスクラッチで作ってみた。制作期間は3日間(実質20時間ほど)。

(ちなみに、より実用性あるものにブラッシュアップするとしたら、デバック、検証、修正、最適化を何回か回す必要あるので、あと3, 4日は必要になると思う。ただし、このページは、企業案件ではなく、自分のためのページなので、バグ以外は深追いしない)

こだわり

レンズのスペックだけではなく、常に最安値を表示するようにしたり、気になる条件で絞り込みができたら、利用価値が高くなるのではと考えた。

実装する際の思想としては、フレームワークを使わずに、利用者にとって使いやすい、コーダー・開発者にとって使いやすい、運用者にとって使いやすい、それぞれの視点になってUI/UXに配慮している。

データ収集

まず、調べたいメーカーをピックアップ。メーカーごとにレンズページから知りたいスペック情報をWebスクレイピングで抽出してGoogleスプレッドシートに記載する(これらの情報は、公式サイトより価格コムのスペック情報から収集すればラクだった...)。

続いて、レンズごとにそのレンズの価格が掲載されている詳細ページのURLを取得してリスト化。その後、Webスクレイピングで最安値を抽出してGoogleスプレッドシートに記載する。タイマーを設置して、定時間ごとに最新情報に更新するようにした。

参考:商品ごとの最安値を価格コムから参照して、スプレッドシートに記入。毎日、自動更新で。

API制作

非常にシンプルなJSONファイルを作成。
GoogleスプレッドシートのCSVファイルをWeb公開して、そのデータをJSON形式で保存する。さらに、このシンプルな構成にすることで、Googleスプレッドシート自体が仕様書の変わりも果たすことになる。

ページを表示するたびに、Googleスプレッドシートを参照してしまうと、ページ表示速度に影響を及ぼすので、Cronを設定してもよかったが、今回はファイル保存日時と現在時刻を比較して、ファイルが古いと判断したときのみ、Googleスプレッドシートを参照してファイル更新し、通常はローカル保存したファイルを参照するようにした。

データ件数は100件、どんなに増えても1000件も満たないことを踏まえ、アクセス時には一括して全データを取得する。

参考:cronっぽいことをPHPでjsonとして実装する

UI/UXデザイン

  • 横幅サイズに合わせて、4段階のデザイン調整(レスポンシブWebデザイン)
  • (横幅小さい場合)検索エリアと結果画面を切り替えるボタンを下部に設置し、iOSのデフォルト挙動に干渉しないよう配置に配慮。また、タップ時にアクションを付与することで、このボタンを押すことで開閉ができることを暗示
  • (スマホの場合)基本的にデザインガイドラインに配慮した上で、デザイン性を優先したUI設計
  • (iOSの場合)スクロールした際、惰性が効かなくなる不具合対応
  • (Androidの場合)コンテンツ上部でスクロールした際、自動更新(Pull to Refresh)しないよう配慮

また、検索だけでもいろいろケアしている。

  • 項目ごとのクリアする方法を統一することで、学習コストを下げるように配慮
  • 検索条件を変更するたびに、即時検索
  • 数字入力時のHTMLによるアシスト(最低数値設定、仮想キーボード設定、上下幅設定)
  • 検索結果が変更されたことを認知するため、わざと一瞬データを非表示にする(非表示にした際、iOSでデザイン崩れがないようにコンテンツ領域を保持、また、並び替えの場合は検索結果のみ非表示)
  • ちなみに検索条件の一括クリア、並び替えの一括クリア、全ての条件クリアを用意していたが、不要と判断し削除することで、よりシンプル設計

コーディング

  • 開発言語は、PHP + jQuery + Sass(HTML5 + CSS3.1 + JavaScript ES6)
  • CSS設計としてはBEMを採用
  • タスクランナー Gulp(ファイル結合、Sassのコンパイル、CSS最少化、JSのES5化、JS難読化)
  • Googleガイドライン準拠が基本
  • アイコンはicomoonを利用

参考:JavaScriptスタイルガイド

運用

  • レンズが増えても、Googleスプレッドシートに追加するだけで画面反映(強制的にAPIファイルを生成できるように設計)
  • メーカーが増えても、自動で画面反映されるようにマークアップ

対応しなかったこと

  • 画像関連の処理(画像のローカルコピー、画面の表示時直前呼び出し)
  • 検索条件の保持(LocalStorageとHistory APIの利用)
  • 検索条件を設定した場合に検索結果数のアフォーダンス(横幅が小さい場合)
  • 検索条件を設定した場合にその箇所のハイライト
  • お気に入りレンズ登録(ローカル保存)
  • レンズ別にAmazonへのリンクボタン(全部対応するには時間がかかるので、少しずつ対応するかもです)
  • 多ブラウザ・多デバイス検証(バグ出しは完全に行っていないため、不具合やデータ不備にお気づきの場合、お手数ですがコメントいただけると嬉しいです)

と長々と書き連ねましたが、あらためてページを見ていただけるとめっちゃ嬉しいです。ご意見やご感想などありましたら、ぜひコメントください。お待ちしております。

サンプル:https://sample.simplesimplesdesign.com/sonyalpha/lens.php

何かお困りではありませんか?

さいごまで記事を読んでいただき、ありがとうございます!
何かお困りなことはありませんか?
当方、ホームページ制作・改修/WordPress構築/Webデザイン/UI・UXデザイン/Webディレクション/広告運用/ブランディング/マーケティング/撮影・レタッチ/動画撮影・編集/プロトタイプ制作、幅広く対応しておりますので、まずはお気軽にご相談いただけると嬉しいです!ご連絡お待ちしております。
Stay Safe.
詳細 » 案件、承っております

最近の記事

「やりたいことを全部やってみる」を読んで

2019年9月に書いたレビューがあったので、ここに転載。--- タイトル「やりたいことを全部やってみる ストレスフリーな生き方を叶える・・・

起業向け情報

「世界一やさしいブログxYouTubeの教科書1年生」を読んで

2019年1月に書いたレビュー(2年以上前!)が残っていたので、ここに転載。当時YouTubeをやろうとしていた頃を思い出す。今でもYouTube更新しようと・・・

知識編

「図解モチベーション大百科」を読んで

書籍「図解モチベーション大百科」。主に行動経済学、実験心理学を扱った国内外の文献から、編著者なりの解釈で紹介された本。ここでは備忘録として書・・・

マーケティング・ブランディング

ローカル環境(MAMP)でgmailからメール送信できるようにする

MAMPにWordPressを入れてテストをしていると、ユーザー作成時やら何かとメール送信が必要になるタイミングがる。何も設定をしていないとローカル環境のWo・・・

MAMP

ユーザビリティと機能はどちらが上?

先日、「iOS Safariで絶対配置(position:fixed)して惰性スクロールしてもロックしない、フリーズ回避方法」という記事を書いたときに、エンジ・・・

デザイン思考

ビジネスカードとショップカード

以前にブランディングページを用意させてもらった、Sunny Side Accessory(サニーサイド アクセサリー)さんのビジネスカードとショップカードを制・・・

お仕事・制作日記

DtoC におけるプロモーションと広告運用

公開が2020年7月ということで、もう少しで1年経つのかぁ。「最終回 株式会社北の達人コーポレーション 木下勝寿社長 DMM MARKETING CAMP x・・・

マーケティング・ブランディング

スタバに学ぶ。PART 2

以前、スタバに学ぶ。という記事を書いたが、そのときに記事にし忘れていたことがある。企業ミッションについて、だ。何より大事なことなので後でしっかり書こうとしたき・・・

起業向け情報

自主出版したい熱は消えない

学生の頃から、物書きや写真を撮るのが好きで、いつか自主出版してみたいと思いながら、映画館では必ず観た作品のパンフレットを購入したり、フリーペーパー冊子を集め続・・・

Web本・デザイン本

行動経済学

数年前に読んだ本だが、ノートに書き写していたものを備忘録として書き起こし。行動経済学は、心理現象を背景に、人間の意思決定に関する メカニズム・・・

マーケティング・ブランディング

人気の記事

WP_Queryを使って絞り込み検索するのにコレは便利!

めっちゃ参考になるページを見つけた。 絞り込みをするたびに色々ググっていたが、これがあればほとんどのことが解決できそうな気がする。 参考: これは便利!Word・・・

WordPress

overflowをautoにした要素のスクロール位置を変更する → scrollTop scrollLeft

まずはサンプル。 これは、overflowをautoにした要素のスクロール位置を変更するサンプルです。 これは、overflowをautoにした要素のスクロ・・・

JavaScript

http://localhost:8888/ → http://localhost/

http://localhost:8888/ での参照ではなく、http://localhost/ で参照できるようにします。 MAMPの設定を変更する M・・・

MAMP

iframeの高さを自動調整する

iframeで呼び出した際、iframe自体はスクロールさせずに高さを取得してiframe全体を表示させます。 サンプル:iframeの高さを自動調整するデモ・・・

JavaScript

イラストレーターでレイヤーごとにPNGで書き出す

【2020年07月13日】 macOS Catalina(10.15.5) / Adobe iLLustrator 2020(24.2.1) にて動作確認済・・・

Illustorator

WordPressのカテゴリー一覧ページでカテゴリー名とスラッグを取得する → get_queried_object()

やりたいこと カテゴリー一覧ページで、そのカテゴリー一覧ページに属する記事一覧を取得するためにループさせるのとは別に、タイトルやカテゴリー別にデザインを変・・・

WordPress

アーカイブページでカスタムフィールドやタクソノミーで絞り込みした状態でリスト表示する

<?php $args = array( 'paged' => 1, 'posts_per_page' => 20, 'post・・・

WordPress

MAMP を 5.7 から 6.2 にアップデートした

5年以上前と比べると、アップデートが簡単で驚く。とくに記事にするまでもないと思いつつ、一応備忘録。 インストールすると、既存のディレクトリはそのままに別・・・

MAMP

管理画面のカスタム投稿一覧で並び順を変更する

WordPressの管理画面。「投稿」や「固定ページ」の一覧は、公開日順に並んでいる。ところが、カスタム投稿を追加した場合、公開順ではなく名前順に並んでいること・・・

WordPress

カウントアップ、カウントダウンするJavaScript

ポイントを使ったり、増やしたりしたときに、結果のポイント数に差し替えるのではなくて、カウントアップしたり、カウントダウンして動的に動かそうと思って作ってみた。・・・

JavaScript

コメントありの記事

jQueryでformを操る【nameの値を取得する/クリアする】

「「値をクリアする」を追加しました。チェックボックスやラジオボタンの値を何も選択していない状態に戻すときについて触れています。」

JavaScript

iframeの高さを自動調整する

「>匿名さん コメントありがとうございます。 サンプルでは、beforeは何も処理していないので期待する表示にならない、で正解です。 クリックした後が、対応・・・」

JavaScript

Instagram API を使ってインスタに投稿した画像データを取得する

「コメントに嬉しいお言葉、ありがとうございます!」

API

MAMPでMySQL Serverが突然起動しなくなった時 → ログファイル削除

「(匿名)さん コメントありがとうございます。何も設定変更していないのに、それまで使用できていたサーバーが突然使えなくなるのは辛いですよね、、。 ここで紹介したや・・・」

MAMP

イラストレーターでレイヤーごとにPNGで書き出す

「コメントありがとうございます! そもそもできるかはわかりませんが、ソースを書き換える必要はあります。 下記記事などが参考になるかもしれません。 illustra・・・」

Illustorator

05_各種キーワードツール

「公開から14年振りの更新w デッドリンクを削除しました。ツール系は「SEO対策に役立つ便利ツール」に集約します。」

SEO

WP_Queryを使って絞り込み検索するのにコレは便利!

「「特定の「タイプ」に関連付けられた投稿を表示する場合」を一つの場合を追記し、複数の場合と分けました。」

WordPress

ホーム画面からの起動か判別する

「コメントありがとうございます。 この記事で紹介している機能は、記事内のサンプル「ホーム画面からの起動か判別する」というリンクをクリックすることで確認できます。 ・・・」

JavaScript

Javascriptでカレンダーを作ってみた

「JWOLさん> 祝日名を追加されるとのこと、いいですね!コメント&参考にしていただきありがとうございます!」

JavaScript

WordPressで記事の数を取得する → wp_count_posts() か found_posts

「絞り込み検索した場合の記事数の取得方法を追記しました。 $my_query->found_posts;」

WordPress

運用情報お仕事・制作日記Sony Eマウント フルサイズ対応のカメラレンズを収集するページを作ってみた | シンプルシンプルデザイン