投稿

6月, 2021の投稿を表示しています

難しいアプリ利用者の視点

イメージ
ホーム ブログ Firebase情報 難しいアプリ利用者の視点 2021年6月30日 難しいアプリ利用者の視点 アプリの開発で、利用者の視点はとても重要です。言うまでもなく開発に際して利用者の視点で考えてアプリの仕様を決めていくのは広く行われています。 しかし、利用者の視点で考えることは、想像以上に難しい物です。この記事では、利用者の視点でみるソフトウエア開発についてまとめてみました。 利用者の要望を見つけるのは難しい! 最初に、アプリと利用者の関係を考えてみます。 利用者は、アプリから見ると、「お客様(=顧客)」です。お客様のニーズに合ったアプリの設計はとても大切だということは説明するまでもなく、誰もが考える大きな要素です。 お客様のニーズを掴むために、アンケートなどを実施して利用者に直接聞いたりして、必要な要望を見極めて開発に取り入れて行くというのは良く利用される手法です。 ところが、そのように作っても実際にアプリを完成させて、利用者に提供しても思ったような反響を得られない場合がたくさんあります。 理由は簡単で、殆どの利用者は「本当に何を求めているのかわからない」からです。 もちろん、ハッキリと欲しいものを表現できる利用者もいらっしゃいますが、全体から見ると少数派といえます。 そこで、調査を行う場合には、予め候補となるような「サンプル」を示して、「どうですか?」と聞く場合が殆どです。 それを聞いて良さそうならば「Yes」、あまり魅力を感じなければ「No」という答えになります。 この方法の方が確実に回答をもらえるので、こうしたスタイルでの調査が多くなります。 例えば、ランニングシューズを考えてみてください。 ある程度のレベルの競技者になると、特定の要望が有る程度決まっていて、靴の重さや、ソールの硬さ、衝撃の吸収性などいろいろな要求を持っている場合も多くなります。 ところが、市民ランナーで特に走り始めたばかりの場合は、どんな靴を買えば良いのか分からない場合が殆どです。 そうすると、お店に行って、店員にお勧

プログラマの視点

イメージ
ホーム ブログ Firebase情報 プログラマの視点 2021年6月29日 プログラマの視点 プログラマ、つまりプログラムを書く人の視点でソフトウエア開発をみる場合には基本的にプログラムをどのように書くかが中心になります。それ以外にも幾つかポイントがあるのでまとめてみました。 プログラマの視点もいろいろ! 前回は、ソフトウエアの開発を色々な視点で見てみるという事を紹介しました。 実は、プログラマの視点でも、色々な視点があります。より多くの視点を持ってプログラムを開発すると、より良いプログラムを開発する事ができます。 このあたりが、優秀なプログラマと、普通のプログラマの差になります。 いろいろありますが、この記事では3つの視点について紹介します。 「プログラムを書く」という視点 「プログラムをテスト」するという視点 「プログラムを管理」するという視点 です。殆どのプログラムは作るだけという事はほとんどありません。 作った後は、必ず動作確認(テスト・検証)を行ってプログラムが思い描いたように動作するか確認する必要があります。よく言われる事ですが、基本的に「バグ」のないプログラムはないと言われています。プログラム学習の例題のようなシンプルな物はバグのないプログラムもあるかと思いますが、ある程度の規模になると、完全に検証するのが難しくなるので、何らかの「想定外」の動きをするケースがある物です。従って、いかに上手く動作確認を行うかは、プログラム開発では重要な要素の一つです。 また、作ったプログラムに機能を追加したり、実際に利用していて見つかった不具合を修正したり、性能の改善をしたり、色々な管理作業が発生します。こうした、管理作業を行う立場で見るとまた違った形でプログラムを見ることになります。 プログラムを書く場合に気にする事は? では、最初にプログラムを各立場で考えてみます。「プログラムを書く」場合に考えることは、どのプログラミング言語で書くか、どのように機能を実現するかなどが中心になります。さらに、殆どの場合は

ソフトウエアエンジニアの視点

イメージ
ホーム ブログ Firebase情報 ソフトウエアエンジニアの視点 2021年6月28日 ソフトウエアエンジニアの視点 少し早い夏休みを頂いてハワイにバケーションに行っていました。 この連載も10日余りお休みを頂いておりましたが、今日からまた再開します! 連載再開の第一弾はソフトウエアエンジニアの視点について何回かに分けて紹介します。 バケーションで行ったハワイのオワフ島には有名な観光スポットのダイヤモンドヘッドと呼ばれる場所があります。行ったことのある方も多いと思いますが、このスポットを違う視点から見てソフトウエア開発に通じるものがあると感じたので紹介します。 違う視点で見ると新しい発見がある! オワフ島でホテルやお店が立ち並ぶワイキキのビーチからダイヤモンドヘットのある丘が見えます。美しいビーチとは対照的に聳えるダイヤモンドヘッドはワイキキからの景観には欠かせないものです。今回の休みでも、実際にダイヤモンドの上に行こうと思って車で出かけましたが、駐車場は小さく限りもあるので、朝早く行ったにもかかわらず実際に上まで登ってみる事はできませんでした。実際にダイヤモンドヘッドの丘に行って見えるものは、遠くから望む景色とは全く別なものです。実際に上までは言っていませんが、周りに高いものがないので周囲のビーチを一望できる場所で人気のスポットというのも納得です。山の一角という感じでした。 実は、このダイヤモンドヘッドは、火山の火口です。ワイキキの東側の丘の一角のようですが、実は小さな火山です。これは、飛行機で上空からみると一目瞭然です。外輪山に囲まれた火山の一角であることがよくわかります。 こうしたことは、観光ガイドやインターネットを使って調べればわかることですが、実際に空から見ると見事な丸い火口がハッキリと見えます。しかし、ワイキキのビーチからみたり、実際に現地に言ってもなかなかそれを実感することができません。 空というか上空からの視点で見ることで、特徴的な姿を見ることができます。 しかし、現地に行けば土やそこに

Anydeskを使ってリモートアクセス

イメージ
ホーム ブログ Firebase情報 Anydeskを使ってリモートアクセス 2021年6月17日 Anydesk を使ってリモートアクセス 6 月も後半に入りましたが、アメリカでは既に多くの学校が夏休みに入っています。 私も来週1週間はお休みを頂いて家族と過ごす予定です。休みになると、外出することが多くなりますが、仕事の緊急な連絡が入ったりして作業しないといけない場合も少なくありません。そんな時に便利なのが Anydesk です。 Anydesk とは? Anydesk はリモートアクセスのアプリケーションです。 便利なのは、インターネットに直接接続されていない、家庭内の PC でも外部からアクセスする事ができる事です。 殆どの家庭のインターネットは、インターネットプロバイダに WiFi ルーターを通して接続している場合が多く、直接 PC をインターネットに接続しているケースは余りありません。 この場合、外出先から家の PC にアクセスしようと思うと少し面倒なことをしないと接続するのが難しくなります。しかし、Anydesk を利用すると、簡単に家にある PC に接続することが可能になります。 基本的な機能は無料版でも利用できます。インターネットから ダウンロード してインストールするだけで、Window、Mac、Linux で簡単に利用できます。 両方の端末にインストールする Anydesk を利用するためには、両方の端末にインストールする必要があります。つまり、家にある PC と外出先で利用する端末(ラップトップ PC やタブレット、スマホなど)の両方でインストールする必要があります。 Windows の場合は、お試し版は、ダウンロードしたファイルをダブルクリックすると利用できます。本格的に使う段階になったらインストールして利用します。インストールしないと幾つかの制限事項もあります。 Anydesk を立ち上げると、ID 番号が割り当てられるのでこれを元にアクセスを行います。家の PC などを外から利

プログラムのテストのためのスキル

イメージ
ホーム ブログ Firebase情報 プログラムのテストのためのスキル 2021年6月16日 プログラムのテストのためのスキル 開発したプログラムはテストをして問題がないか確認する必要があります。プログラムのテストをするにもスキルが必要です。この記事はプログラムのためのテストのスキルの話です。 ホワイトボックステストとブラックボックステスト プログラムのテストの方法として、ホワイトボックステストとブラックボックステストがよく利用されます。 ホワイトボックステストは、プログラムの中身を中心に全ての場所が実行されるようにして行うテストです。ブラックボックステストは、プログラムの中身ではなく、プログラムの中身を見ないで、プログラムの入力と出力(いわゆるインターフェース)に着目してテストを行う方法です。 言葉での説明はこんな感じになりますが、何かわかりにくいですよね? この2つのテストを実行するのに必要なスキルは結構大きく違います。 ブラックボックステストはプログラムの知識がそれほどなくてもある程度実行することはできます。しかし、ホワイトボックステストは、プログラムの知識は必須になります。複雑なプログラムを作成するスキルを身につけるのに、テストから始めて高度なプログラムを学ぶというのは企業などでは人材育成の一部になっている場合もあります。 ### ブラックボックステストとは? ブラックボックステストの定義は説明した通りです。もう少しわかりやすい例を挙げると、電化製品のテストに例えるとわかりやすくなります。 例えば、テレビのテストをする場合を考えてみてください。ブラックボックステストは、利用者が操作できる部分を使って行うテストです。テレビの内側は、利用者はアクセスできないのでブラックボックステストでは触りません。 外からアクセスできるところ、つまりインターフェースです。プログラムの中身はテレビの箱の中に相当します。 つまり、電源が入るかとか、チャンネルが変えられるか、音量が変えられるかなどです。他にも色の調整ができ

Firebaseのイベント機能

イメージ
ホーム ブログ Firebase情報 Firebaseのイベント機能 2021年6月15日 Firebase のイベント機能 Firebase にはイベントを検出して処理する機能がサポートされています。上手く利用すると便利です。 よく利用されるのは、Cloud Firestore の「onSnapshot()」などがあります。ユーザー認証機能(Authentication)の「onAuthStateChange()」などもよく利用されます。 この記事では、簡単にイベント検出機能の利用例を紹介します。 イベントの検出機能 Firebase の「onXXX」機能は基本的にイベントを検出する機能です。 この機能をどう使うかというと、簡単に説明すると「イベントの検出」と「イベントの処理」をペアで実装します。 Firebase はイベントを検出 そのイベントに対応した処理を行う という感じで利用します。 イベントの処理の多くはアプリケーションの機能によって実装します。 例えば、Cloud Firestore の「onSnapshot()」の場合は、指定したデータベースのデータが更新されると、この処理が呼ばれる仕組みです。Web サイトのあるページで Firebase のデータのリストを表示している場合、データが更新された場合、表示するデータも更新するような用途で利用します。こうすることで、表示しているデータは常に最新のデータにすることができます。 onSnapShot の利用 具体的な実装例です。Cloud Firestore の「users」のドキュメントのデータが更新されると Firebase のデータベースからデータを読み込んで React のステートのデータを更新します。データが更新されると、表示している一覧を更新する仕組みです。 import * as React from "react"; import firebase from "./firebase"; in

エラーの原因特定

イメージ
ホーム ブログ Firebase情報 エラーの原因特定 2021年6月14日 エラーの原因特定 プログラムの実行中にエラーが発生した場合やプログラムに問題がある場合、その原因を特定する事が重要です。 一つのプログラムの場合には殆どの場合、そのプログラムの中に問題があると考えるのが一般的です。 しかし、Web サービスなどの場合は、フロントエンドとバックエンドで別々のプログラムを動かす場合も多いので原因の特定が難しくなる場合が殆どです。この記事では、Web サービスでの問題の見つけ方を簡単に紹介します。 プログラムを取り巻く環境 プログラムを作成して実行して問題が発生した場合、その原因の殆どはプログラムその物にある事が多くなります。 しかし、実際にプログラムが動く仕組みを考えると問題の発生は、そのプログラム事態以外にも要因があることがあります。 例えば、ある PC 上で実行できるプログラムを作った場合でも、作成したプログラムは、実行している「システム」という観点から考えると極一部です。 どういう事かというと、作成したプログラムを動かすために必要になる要素にはいろいろな物が含まれています。 実行するコンピュータ(スマホや PC) プログラムを実行する OS(オペレーティングシステム) プログラムが利用しているライブラリや外部のモジュール 作成したプログラム 実際にプログラムを実行するには、これらの要素が必要になるので、どの部分にも問題がある可能性があります。 さらに、一般的な Web サービスのプログラムになるとさらに別の要素が増えるのはこれまで紹介してきた通りです。 Web サーバー(ホスティングをする、サーバーから、OS、HTTP のサービスなど) ネットワーク バックエンドのプログラム データベースを利用している場合はデータベース などと、要素はさらに増えていきます。 一番怪しいのは、「新規に作った部分」 どの要素にも問題がある可能性がありますが、一番怪しいとされるのは、「新しく作った部分」です。 つま

タイムアウト

イメージ
ホーム ブログ Firebase情報 タイムアウト 2021年6月13日 タイムアウト ネットワークのアクセスの課題 ネットワーク経由のデータアクセスの場合、データにアクセスできない要因が幾つもあります。 良くあるのは、ネットワークの障害、アクセス先のサーバー(コンピュータ)が稼働していない、アクセス先の間違いなどの要因です。さらに、細かくいうと、アクセスのやり方(API やプロトコル)の食い違いなども要因になります。 これに対して、同じコンピュータのドライブ(HDD や SSD)へのデータアクセスの場合は、アクセスするファイルのパスや名前を間違えない場合以外は、通常は問題なくアクセスできるのが普通です。エラーの場合でも、ファイルが存在しないなどのエラーは事前にチェックもできますし、エラーもすぐにわかる場合がほとんどです。 ネットワークのアクセスは時間がかかる ネットワークのアクセスと言ってもいろいろあります。 同じオフィス(建物)と、別の建物では違いますし、インターネットを利用すれば海外のサーバーにも簡単にアクセスができます。 インターネットを経由して、例えば海外のサーバーにアクセスする場合、いろいろな経路を辿ってアクセスします。従って、同じ建物や同じ家の中のコンピュータにアクセスするよりはかなり多くの時間がかかる場合もあります。また、いろいろなネットワークを経由するので、相手がきちんと動いているのか(稼働中か)や、途中の経路(いろいろなネットワーク)が正常に動いているのかは、殆どの場合事前にはわかりません。また、直前までアクセスができていても、突然アクセスができなくなる事も頻繁に起こります。 つまり、「やってみるまでわからない」というのがネットワーク経由のアクセスの特徴です。 やってみないとわからない!? やってみないとわからないという意味を、もう少し詳しく考えると、考えられる結果は幾つか考えられます。 普通にアクセスできる(正常アクセス) アクセスの応答がエラーになる 応答がない が通常考えられるア

Javascriptでのネットワークアクセス

イメージ
ホーム ブログ Firebase情報 Javascriptでのネットワークアクセス 2021年6月10日 Javascriptでのネットワークアクセス どこからデータを入手するかで変わる処理 プログラムの基本動作はデータ処理かイベント処理に大きく分けられます。データ処理の場合は、受け取ったデータに処理を加え流処理になります。イベント処理は、ボタンをクリックするなどのUIの操作などで発生したイベントに対応した処理を行うものです。エラーなどの処理もイベント処理に入ります。 WebアプリやWebサービスの場合、データをネットワークを経由して取得する場合が多くなります。ネットワークから取得するという事は、別のコンピュータからデータを受け取るという事になります。この場合、コンピュータが応答できない場合や、コンピュータ自体が稼働していない事があります。この場合、データを受け取れない事になります。 一方で、同じコンピュータからデータを入手する場合、この場合は、コンピュータのドライブ(HDDやSSD)やメモリからデータを取得することになります。このデータは殆どの場合問題なく取得できる場合が多く、プログラムを書く上では問題にならない場合が殆どです。 ネットワーク経由のデータはいつ届くかわからない! さて、ネットワーク経由でデータを取得する場合に問題となるのは、いつデータが来るか予想できない点です。 幾つか可能性があって、ネットワークが混んでいる(負荷が高い)場合は、ネットワーク上の「相手」が稼働している場合でも、データが届くまでに時間がかかる場合が多くなります。また、ネットワークに障害があるとデータが届かない場合もあります。さらに、ネットワーク上の相手のコンピュータが稼働していない場合にも、データは届きません。 プログラムを書く際にはこうした事を予め考慮したプログラムを書く必要があります。 こうした問題は、プログラムが動作しているコンピュータのリソースからデータを取得する場合には余り考えなくても大きな問題にならない事が多く