Author Archives: 山口達雄

サイトリニューアル時に設定すべきこと(301リダイレクト)

サイトをリニューアルするとき、どのような手法をとっているでしょうか。何も対処せずにWebページのURLが変更されると、せっかくGoogleやYahooなどの検索エンジンの登録やユーザーにブックマークされた内容が無駄になってしまいます。
そんなときサーバーに設定すべきなのが、301リダイレクトです。301リダイレクトとは、RFCで定義されたHTTPステータスコードの1つで”Moved Permanently”、つまりWebページの永続的な移動を意味します。

301リダイレクト

301リダイレクト

301リダイレクトは、サーバーがブラウザに返すステータスです。ブラウザはサーバーから301リダイレクトの結果を受け取ると、自動的にその結果に含まれるURLへアクセスします。
GoogleやYahooの検索エンジンも同じ動きをするようです。保証されている訳ではありませんが、この仕掛けでSEO効果も引き継がれるはずです。実際にGoogleも公式のWebページでURLの変更時は301リダイレクトの使用を勧めています。
設定は簡単です。サーバーでApacheを使っている場合は、ドキュメントルートに.htaccessのテキストファイルを配置します。.htaccessには、1ファイルの移転に対して1行ずつ記述します。例えば次のような具合です。

redirect 301 /cfplus/security/ http://www.cmpd.jp/apps/point.html

空白で区切られた3つめのワードが移転元のWebページ。http://ドメイン名/を除いたものを記述します。4つ目のワードが移転先のWebページ。ドメインは違ってもかまいません。
上記は実際に私たちのWebサイトに登録されています。次のリンクにアクセスしてみてください。すぐにブラウザのURL表示がwww.cmpd.jpのドメイン下のURLに書き換わることが確認できます。

http://www.componentdesign.co.jp/cfplus/security/

上記は見えているとおりのURLにアクセスするリンクですが、サーバーが301リダイレクトを返します。最終的にブラウザに表示されるURLはhttp://www.cmpd.jp/apps/point.htmlです。

ディレクトリを指定した場合は、その下の全てのディレクトリ・ファイルが移転扱いになります。移転先は.htaccessの上から下に向かってサーチが行われ、該当の行が見つかったところで決定扱いになりますので、ディレクトリ内で例外がある場合は例外を先に記述することで上手く機能します。

ドメインごと移転する場合で、同一サーバーに仮想ドメインが含まれる場合は注意が必要です。
例えば、弊社のwww.componentdesign.co.jpのドメインは、リニューアルに伴いwww.cmpd.jpに移転したのですが、このとき次のような設定を行うと、同一サーバーに含まれる仮想ドメインも移転した扱いになってしまいます。

redirect 301 / http://www.cmpd.jp/

これを防ぐには、RewriteCond、RewriteRuleを記述し、リクエストにドメインが指定されていることを条件に指定します。例えば次のように記述します。

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.componentdesign\.co\.jp$
RewriteRule ^$ http://www.cmpd.jp/ [R=301,L]

ホームページ等のサイトをリニューアルするときは是非この301リダイレクトを設定してください。1ページあたりのSEO効果やユーザーのブックマークは長期間に渡って築いたものですので、設定すべき作業であることが理解できるかと思います。

PR

コンポーネントデザインでは、Webシステム開発を受託しております。どうぞお気軽にお問い合わせください。

iBeacon(アイ・ビーコン)を利用して販促する方法

 iBeaconとはアップル社がiOS7から標準搭載したBluetooth Low Energy(BLE)を使用した位置情報サービスに該当するテクノロジーです。ビーコンと呼ばれる電波を発信し続けるBLEモジュールを店舗等に配置することで、BLEモジュールに近づいたスマホアプリがこれを検知することができます。

iBeaconを使ったプッシュ通知

iBeaconを使ったプッシュ通知

※このサンプルはデモ用に用意したもので実際に動作します。デモをご希望の方はお気軽にご連絡ください。

 類似する技術で特殊な音を鳴らしておいて、これをアプリで検知する方法がありますが、この方法ではアプリをユーザーが起動する必要があったのに対し、iBeaconを使う場合は、アプリが起動していなくても、iOSがビーコンを検知してアプリを起動することができるので、来店客にプッシュ通知を送ったり、アプリ上で特定のメッセージを表示したりすることができます。

アプリで場所を検知する方法の比較

アプリで場所を検知する方法の比較

アプリで場所を検知する方法の比較


 iBeaconは複数個のビーコンを使い分けることもできます。店舗毎、フロア毎、エリア毎など個別の番号(メジャー番号、マイナー番号)を設定したビーコンを配置し、アプリからその番号を識別することができます。BLEモジュールは安価なので多数のビーコン配置も現実的です。いくつかのビーコン検知をアプリ内に記録し、特定の条件になったらメッセージを表示する等の応用も可能です。

応用例

 このiBeacon、アイディア次第でいろいろ応用できそうです。少し考えるだけでもいろいろなパターンがあることに気づかれるかと思います。

  • 入り口付近のクーポン配布
     飲食店で一定の空席があるときだけビーコンをOnにすれば、その時だけ近くを通る会員にクーポンを送ることができます。
  • スタンプラリー
     自動的にスタンプが押される。スタンプの場所をシークレットにすることも・・・
  • 商品情報表示
    エリア毎の取扱商品に合わせた商品情報を表示できます。

PR

コンポーネントデザインでは、iPhone,iPad,Android用のアプリ開発を受託しております。どうぞお気軽にお問い合わせください。

会員ランクプログラムで得意客を獲得・維持する方法

店舗の顧客対応の最たる目標は、得意客の獲得・維持といっても過言ではありません。店舗に収益をもたらす要は、新規客ではなく得意客であることは良く知られているとおりです。ところが、客数が多く顧客を特定しにくい小売業や飲食業では誰が得意客なのかを把握することは困難で、得意客を優遇する有効な手法を持っていないのが現実です。では、得意客を正しく認識し、優遇するにはどうすれば良いのでしょうか。このコラムでは航空会社の会員ランクプログラムを例に、顧客を優遇し得意客を獲得する手法を紹介します。

img50

個客を識別し、会員ランクを設定する

得意客を把握するためには、まず「個客」の識別が必要となりますが、店主が一人で対応しきれない規模の店舗では、何らかの会員システムを導入する必要があります。顧客に会員証を提示してもらうことで「個客」を識別するのです。とりわけポイントシステムは、顧客がポイントをためるために自ら会員証を提示するので、「個客」を上手に識別することができます。
このポイントシステムを拡張し、一定期間の累計ポイントをシステムでチェックすることで、会員ランクプログラムの導入が可能になります。このとき「一定期間」は顧客が理解しやすいように月か暦年にすべきで、その期間内に顧客が得た累計ポイント数に応じてランクを自動設定する仕様が理想的です。

秀逸な航空会社の会員ランクプログラム

多くの航空会社ではマイレージと呼ばれるポイントプログラムを採用しています。これは利用規模に応じて、無料の航空券や座席のアップグレード等をサービスするものです。このプログラムは得意客を優遇するものですが、特典を得るには一定の利用規模が必要なため、利用者は航空会社を1社に絞りこもうとするようになります。ただし、年に数回しか旅行しない顧客に対してはこれで効果的なのですが、1年間に数多く飛行機を利用する顧客は複数社のプログラムに参加しても効果を得られるので、得意客の囲い込みには至りません。

そこで航空会社は会員ランクの考え方を導入することで、上得意客の囲い込みを図っています。JALなら「JMB FLY ONプログラム」、ANAなら「プレミアムメンバーサービス」と呼ばれる会員プログラムがそれに該当します。これらは会員ランクを獲得、維持することを主目的に旅行に行く人がいるほど、非常に良く出来た「会員ランクプログラム」です。

航空会社の会員ランクプログラムは、どの会社も驚くほど事細かにルールが策定されており、多数の特徴があげられますが、参考にするべき特徴は次の4点です。

  • 複数のランクを用意し、それぞれに魅力的な名前を付けること
  • 顧客が喜ぶ会員特典を用意すること
  • ルールと現在の状況を明示すること
  • 基準を達成したら速やかに特典を提供すること

1.複数のランクを用意し、それぞれに魅力的な名前を付けること

多くの航空会社には複数のランクが用意されています。これはランク獲得後に他社に浮気させないためでもあり、上客のレベルに応じたよりサービスを提供するためでもあります。ランク名にはゴールド、ダイヤモンドといった貴金属や宝石の名前が使われ、顧客にプレミアム感を感じてもらいように工夫されています。

2.顧客が喜ぶ会員特典を用意すること

会員ランクの策定で最も重視されるのがこの会員特典です。航空会社では専用ラウンジの提供、特別なポイント付与率の提供、優先予約など通常では得られないサービスが用意されています。

特典は会員が「優遇されている」と強く感じるかどうかが重要なファクターとなります。小売業なら特別な割引率、特別のセールへの招待、限定品の先行販売などが検討対象となりますし、すぐに売り切れてしまうレア商品や福袋などの取り置きなども人気のサービスになるかもしれません。飲食業ならお通しの無料ランクアップや、窓際席の予約、制限時間の延長、裏メニューの提供などが効果的と考えられます。

3.ルールと現在の状況を明示すること

ランク獲得はルール化し、あとどれだけ利用すればランクアップやランクの維持ができるのかを、わかりやすく見える化すべきです。これにより、顧客はランクを獲得するために少々遠回りしてでもその店舗を選ぶようになります。
わかりやすく示すことは重要な効果をもたらします。1つ例を挙げます。数年ほど前にコンピュータのディスプレイが付いたソフトダーツが流行したのをご存じでしょうか。ゲームに利用する道具が少々異なるものの、投げ方もルールも昔からのものと同じです。流行の理由はコンピュータによる点数の「見える化」でした。「数えればわかる」と「目に入ってくる」には雲泥の差があるのです。

4.基準を達成したら速やかに特典を提供すること

会員ランクは獲得により会員が大きな満足感を得られることが大切です。一定の買い物をしたときに、しばらく先の翌年まで特典が得られない方法では、せっかくのランク獲得時の興奮が冷めてしまいますし、特典を待たせることによりストレスを感じさせてしまうリスクがあります。航空会社の例ではシステムの都合上、若干のタイムラグがあるのですが、各社のホームページでは顧客がランク獲得の条件を満たした後、早期に特典を提供することが目立つ箇所に明記されています。
会員プログラムの策定にあたっては実質的なことより、顧客の心理面に配慮して顧客本位で組み立てる必要があるのです。

ご参考: Cardfeelの会員ランク機能

※ここからは弊社プロダクトのご紹介になりますので、興味がある方のみお読みください。
弊社プロダクトのポイントシステムCardfeelでは、会員ランク機能を提供しています。この機能で上級会員を優遇して上得意客を獲得・維持する施策を実行可能です。

会員が期間内に獲得した累計ポイントに応じて、最大5段階の会員ランクを自動設定します。
ポイントの累計期間は「1年間」か「1ヶ月間」のどちらかです。
「ゴールド会員」、「ダイヤモンド会員」などのランク名と、必要ポイント数は自由に設定できます。
期間内に必要ポイントを獲得したタイミングで会員にランクが付与されます。ランクは翌期末までキープされます。
会員の画面には次ランク獲得のために、期限と必要ポイント数が表示され、会員の購買意欲を高めることが出来るようになっています。
性別、年齢、居住都道府県、会員ランクを指定したプッシュ通知が行えます。これにより、上級会員限定の特別セールのお知らせをプッシュ通知できます。このときの送信条件に20代女性などの属性を絡めることも可能です。

本機能の対象プロダクト
Cardfeel(カードフィール):共通のアプリを利用した店舗向けのプランです。
Cardfeel DX(カードフィール ディーエックス):ブランドやチェーン店向けの専用アプリを作成・提供するプランです。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

ActiveXコントロールを使い、WebシステムからFeliCaへアクセスする方法

FeliCaはActiveXコントロールを利用すれば、Webシステムで扱うことが出来ます。

felica

felica

FeliCaについて

FeliCaとはJRのSuicaやおサイフケータイ、nanacoなどで採用されている「非接触ICカード技術方式」でソニーの登録商標です。リーダーにかざすだけで読み書きができることから、広い範囲で応用されています。

カードにはIDmと呼ばれる16桁の数字によるIDがあり、同じ番号が流通しないように管理されています。このIDmはPaSoRi(パソリ)と呼ばれる3,000円程度のリーダーを通じてPCで読み出すことができます。

FeliCaはいろいろな分野で応用できます。例をいくつか挙げます。

  1. 1)Webシステムの認証(カードをかざすとログイン)
  2. 2)入退館の管理(カードで入館や退館を登録)
  3. 3)ポイントシステム(カードにポイントが貯まる)
  4. 4)会員システム(カードで会員であることを確認)

セキュリティについて

IDmは他のソフトでも簡単に読み出せますので、セキュリティは目に見えるバーコードを読み込むときと同程度です。一定以上のセキュリティが必要な場合は、他の方式と組み合わせるなどの方法をとることになります。簡単な例は以下のとおりです。

  1. 1)初回はユーザーIDとパスワードでログインする。
  2. 2)ログイン後にFeliCaから読み出したIDmをサーバーに登録し、シークレットキーをサーバーで発行する。IDmとシークレットキーはサーバーで管理する。
  3. 3)シークレットキーはブラウザのクッキーに保存する。
  4. 4)次回以降のログインでは、FeliCaをかざすことをトリガーに、読み出したIDmとクッキーのシークレットキーをサーバーに送信して認証を行う。

FeliCaをWebシステムで扱う方法

システムの管理の事を考えると、FeliCaもWebシステムで扱えると便利です。ActiveXコントロールを開発することで、これを実現できます。

実行時に必要な物

  1. 1)リーダー
    SONY 非接触ICカードリーダー/ライター PaSoRi(パソリ) USB対応 RC-S380(3,000円程度)
  2. 2)ソフトウェア開発キットに含まれるドライバ(無償)
    SONY SDK for NFC Starter Kit Ver.2.0「ICS-D010/20J」
    こちらはソニーのサイトからダウンロードできます。

使い方のイメージは以下のとおりです。

  1. 1)リーダーのPaSoRi(パソリ)をPCに接続します。
  2. 2)あらかじめドライバをインストールしておきます。
  3. 3)Webシステムを利用します。初めて当該のActiveXコントロールが含まれるWebページにアクセスした時に、そのActiveXコントロールがWebサイトからインストールされます。

HTMLとJavaScript

ActiveXコントロールはHTML上に配置したJavaScriptから行います。htmlのコードのサンプルは以下のとおりです。シンプルで簡単です。

<OBJECT ID=”FelicaCom” CLASSID=”CLSID:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx” CODEBASE=”http://xxx.xxx.com/feactx.dll#version=1,0,0,0″></OBJECT>

<script language=”javascript” type=”text/javascript”>
function StartScan() {
FelicaCom.StartScan(); // FeliCaのスキャンを開始するために、ActiveXのメソッドStartScan()を呼び出します。
}
</script>

<script language=”javascript” type=”text/javascript” for=”FelicaCom” event=”FindIDm(idm)”>
// IDmが読み込めたときのイベント処理(ActiveXから呼び出されます。)

// ここにIDmを使った処理を記述します。

alert(idm); // 例えばこの1行でIDmをアラート表示できます。
</script>

ActiveXコントロール

ActiveXコントロールを開発するために利用する開発環境、言語はVisual Studio、C++です。ライブラリはMFCではなく、ATLを利用することでコンパクトなモジュールを作成できます。以下に概要だけ説明します。専門的な内容になりますので、興味がある方のみお読みください。

ActiveXコントロールは非表示のコントロールとし、イベントを送出するために接続ポイントを実装します。接続ポイントはイベントを送出するために必要です。また、スキャンを開始するためのStartScanメソッドを実装します。このメソッドではスキャンのために別スレッドを起動します。イベントの送出は別スレッドから行いますので、この接続ポイントを別スレッドに引き渡す必要があります。スレッド間の接続ポイントの引き渡しはマーシャリングが必要です。渡す側でCoMarshalInterThreadInterfaceInStreamを使い、受け取り側でCoGetInterfaceAndReleaseStreamを使います。

別スレッドではFeliCaポートを監視します。監視はループ処理内でFeliCaポートのポーリングを繰り返すことで実現します。このポーリングには数百ミリ秒程度のスリープ処理を入れておくべきです。IDmの読み取りに成功したらイベントの送出を行います。イベントの送出コードは、ATLが自動生成してくれるFire_xxxxメソッドを参考に記述します。

FeliCaのアクセスは、FeliCaの開発キットのサンプル通りにinitialize_library、open_reader_writer_autoを呼び出し、polling_and_get_card_informationで読み出すことができます。IDmが読み取れない時と、同じIDmが連続して読み出される時は通知をせずに、新たなIDmを読み取れたときのみ、イベントの送出を行うようにします。

別スレッドを破棄するタイミングはATLが生成したFinalReleaseメソッドが適切です。このメソッドが呼ばれたタイミングで別スレッドが終了時の処理を行うようにします。

弊社ではActiveXコントロールの開発を承ります。お気軽にご相談ください。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

業務システムの将来の変更コストを抑える方法

業務システムはシステムのライフサイクルを考慮した全てのコスト、いわゆるTCO(総所有コスト)が重要とされます。TCOには、初期費用やランニング費用といった、わかりやすいコストのほかに、隠れコストとして「将来の変更コスト」が含まれます。
業務システムは業務ルールの変更や、使い勝手の見直しの必要性などから、長期間に渡り、変更が発生するものです。そのためこの「変更コスト」は総所有コストを大きく左右するのです。
この将来の変更コストを抑えるにはデータベースの構造の善し悪しが大きく影響します。

c2923691e737fd88223e48aa4489f45f_s

データベース構造が変更容易性を左右する

業務システムは一部の例外を除き、リレーショナルデータベース(以下データベースと表記します)にデータを保存します。データベースがシステムの中心に位置する構造です。画面から入力したデータはデータベースに保存しますし、画面に表示したり帳票に印字するデータはデータベースから取り出したデータ。何か情報を検索するときの操作対象もデータベースです。
そのため、データベース構造の変更はシステムの広い範囲に影響します。データベース構造に無理があると、データベースにアクセスする各種のプログラムにも無理が及ぶのです。
逆に将来の変更コストを抑えるためには、データベース構造が業務ルールに対して、自然な構造になるように設計すればよいことになります。例えば、「店舗」と「販売員」の関係が1:n(販売員は1つの店舗に所属)ではなく、n:m(販売員は複数の店舗に勤務)であるなら、データベースの「店舗」と「販売員」の関係も同じように設計するのです。

データベース設計をレビューしよう

業務システムの基本設計では、画面や帳票は「業務のプロ」によって細かくレビューされることが多いのですが、データベース設計は技術的な専門性が高いことからレビューの対象外にされがちです。
しかし、暗黙の業務ルールや将来の業務ルールの変更見込みについては、業務のプロでないと理解が難しいものです。私はデータベース設計も、業務のプロの方がレビューすることを推奨します。
データベース設計に対して、将来の変更コストを抑えるために確認すべき事項は次の2点です。

  • データがどのような種類に分類して保存されるか。(例えると販売システムでは、店舗、販売員、商品などが該当します。)
  • 保存されるデータの関連はどうなっているか。(先ほどの「店舗と販売員はn:m」などの関連性を確認してください。)

如何でしょうか。技術的な事項は解らなくてもかまいません。業務ルールに対して、データベース構造の想定が正しいかどうかを、ベンダーの説明を聞いたり質問しながら確認すればよいのです。この確認作業で将来の変更コストの肥大化を避ける事ができます。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

「後ろ向きのSE」が存在する理由と対応

困ったことなのですが、何か頼むと平気でいやな顔をしたり、しっかり対応しないSEは割と多く存在します。私はこのタイプのSEを「後ろ向きのSE」と呼んでいます。
「後ろ向きのSE」が担当すると事前に把握できるのなら、そんなベンダーと取引することは絶対にないと思いますが、発注後に一部の機能を担当するSEが このタイプであったり、一旦完成したシステムの担当者が異動して、後任のSEがこのタイプであったりすることはあり得る話です。

img40

問題行動とその対応方法

後ろ向きのSEの代表的な問題行動と、その対応方法を3つご紹介します。

1)仕様の検討をお客様に要求する

ビジネスではなく、コンピュータだけと向き合うのがSEの仕事と勘違いしているパターンです。何か課題が発生すると「仕様を決めてください」とか「どうすればよいですか?」などと連発します。仕様案の策定を自分の仕事と思っていないことが代表的な原因です。
処方箋は1つ。明確に「仕様の検討」を要求すること。それが仕事なのだと認識すると、それまでの対応の悪さから一転して対応が良くなります。

2)ビジネスのことを考えずに案を出してくる

お客様のビジネスを理解しようとせずに、技術的に出来る案をごく軽く提案するパターンです。2つの案があるとき、メリットデメリットを考慮せずに、並列に提示するのが特徴です。

SE:「この課題に対しては、A案、B案の2つが選べます。どちらがよろしいですか?」

お客様:「どちらが望ましいの?」

SE:「A案は、・・・が・・・で、・・・になっていまして、B案は・・・」

お客様:「・・・・いや、そうじゃなくって。じゃあ、A案のメリットを教えて」

SE:「A案の機能は・・・が・・・で、・・・」

お客様:「(単純にどちらが良いかを判断したいだけなのに・・・)」

本人はいたってまじめなのですが、やりとりが増えることでお客様の時間を浪費します。この場合の対応策は、メリット・デメリットを整理した案を口頭ではなく、メールや資料で提示するように指定すること。これで整理されたものが出てくるようになります。

3)何か要求するとよく考えずに出来ないと言う

最も問題があるパターンです。
「データベースの構造上出来ません」とか、「○○に影響するので、出来ないと考えてください」など、それらしい理由が付けられることが多く、どこまでが本当なのか、わかりにくいのが特徴です。
システム開発でプロジェクト実行中に課題が発生するのは当たり前のこと。その課題に対してSEは説明責任をきちんと果たすべきです。お客様が理解できるように説明出来ていないわけですから、業務怠慢と考えるべきではないでしょうか。
この問題はSEがビジネスに対しての課題を甘くみていることが主な原因です。「できない」で済むと思っていることが多いのです。課題解決が必須なら、「課題解決は必須だ」と言い切ってください。SEは答えようと努力するはずです。

なぜ後ろ向きのSEが存在するのか

お客様商売なのに、なぜ後ろ向きのSEが存在するのでしょうか。
もともとコミュニケーションが苦手だからソフトウェアの道に進んだとか、仕事でずっとコンピュータを触っているから視界が狭くなっているなどの意見も聞かれますが、私はもっと単純な理由だと思います。「お客様のビジネスの成功」がSEの目標になっていないのです。

逆に一般的なのは、納期を守ることと品質基準を守ること。この2つは、SIベンダーの社内行動基準にも明記されたりする原則的な物です。そして、「お客様のビジネスの成功」が目標になっていないSEの仕事の考え方はこうなります。

  • 依頼を受けたら、適切な見積もりを行う。
  • 発注されたら品質を確保したうえで納期を守る。
  • 納期を守るために無理しない。仕事は少ないほどよい。

新たな要求に回答することが新たなハードルを設定することに繋がるので、後ろ向きな感情が前に出てしまうのです。

SEにとって大切なこと

紹介したとおり、後ろ向きのSEと付き合うと発注者の時間が無駄に浪費されます。対応が長引くようなら、SEの交代か話ができる営業マンの同行を要求するのが良い方法です。
SEは、幅広くしっかりした技術力を確保するだけではなく、その先の対応「お客様のビジネスの成功を追求する姿勢」が大切なのは当然ですよね。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

業務システム構築におけるサードパーティ製開発ツール利用時の注意点

img30

業務システムを構築する際、何らかの開発ツールを利用しますが、これには大きく分けて2つの選択肢が存在します。1つ目は、スタンダードな製品を利用すること。具体的にはそのハードウェアやOSを製造・開発している企業が提供している開発ツール(ファーストパーティ製品)や、オープンソースなどに代表される事実上の標準に該当するもの(デファクトスタンダード)を利用することです。
これには、例えるならiPhone,iPad用のネイティブアプリ開発ならApple社が提供するXcodeが該当しますし、データベースを含めたWeb系システムではLAMP(*1)やLAPP(*1)などのオープンソースの組み合わせが該当します。

*1 Linux, Apache, MySQL / PostgreSQL, PHPの組み合わせのことです。(同じ頭文字の他のソフトウェアを指すこともあります。)

サードパーティの製品を使うことの問題点

2つ目の選択肢は、サードパーティ製の開発ツールを利用することです。ここでのサードパーティとは、OSを始めとするソフトウェアの動作環境を提供していない企業のことを指します。
サードパーティ製の開発ツールは前述のスタンダードなものに比べ、ツールの学習期間を短くすることが出来たり、より簡単に開発が行えるなど、開発コストを下げられることが多く、なかなか魅力的です。しかし、業務システムは開発終了後も業務にあわせてメンテナンスしていく必要があるため、次の2点について注意する必要があります。

1)メンテナンスする技術者は確保し続けられるか。
2)ツールそのものが廃れてしまわないか。OSのバージョンアップに対応できるのか。

1は自分一人で開発して自分一人で使うシステムでもない限り、必ずついて来る問題です。これは自社で開発する場合だけでなく、開発ベンダーに発注する場合も同様です。「信用できるベンダーが勧めているから大丈夫だろう」などと考えると危険です。
開発後に主要な開発メンバーがそのベンダーから退職してしまい、その後のメンテナンスのサービスレベルが極端に悪化するケースは実際に耳にします。この場合、採用されているツールがマイナーなことが問題の本質であるため、他ベンダーへの乗り換えも難しくなります。

2の開発ツールそのものが廃れる問題は深刻です。新しいバージョンのOSやミドルウェアへの対応が打ち切られると、せっかく開発したシステムを使い続けることが難しくなってしまいます。
一度開発した業務システムは企業の資産として考える訳ですから、使えなくなる状況はなんとしても避けるべきです。

業務システムで使う開発ツールは長期視点で選択しよう

つまるところ、業務システム構築におけるサードパーティ製の開発ツール利用の可否は「メンテナンスが困難になったら作り直せば良いと判断できるか」で決まります。本格的に採用するには慎重に検討する必要があるのです。
私がシステム化の提案をする際、サードパーティ製のツールを検討するのは、PDFの帳票データを生成したり、ブラウザ上にグラフを描画したりする場合など、局所的でリスクが少なく効果が大きい場合に限定しています。業務システムのメイン部分の開発に、サードパーティ製のツールをお勧めすることは、ほとんどありません。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

iPadのメニューやデジタルサイネージの作り方

※このコラムは弊社製品「Page Palette」のご紹介になります。

デパートなどで時々見かけるiPadのメニューやデジタルサイネージ。iPadアプリの「Page Palette(ページパレット)」を使えば簡単に作ることができます。このコラムではその作り方を紹介します。

img60

1.アプリのインストールとお申し込み

iPadでApp Storeを起動し、アプリ「Page Palette」を探してインストールします。続いてPage PaletteのサイトからPage Paletteの利用をお申し込みください。無料トライアルも利用できます。

サイネージのデータ作成にはWindows PC用のPCツールが必要です。申し込みを行うと入手できるダウンロード用URLから、PCツールをダウンロードして、setup.exeを実行してください。

PCツールはWindows XP以降に対応しています。.Net Frameworkなどのインストールは不要です。

2.グループとユーザーの作成

Page Paletteを利用するためには、最初に管理画面から「グループ」と「ユーザー」を作成します。アップロードしたドキュメントや動画などのコンテンツ は、「グループ」ごとに共有できますので、仕事を共にするチーム等の単位で「グループ」を作ると管理が楽になります。

PCまたはiPadのブラウザより管理画面にアクセスして「グループ」と「ユーザー」を作成してください。尚、「ユーザー」は複数の「グループ」に属することができます。

複数のiPadを使う場合、利用するコンテンツが完全に同じ場合は、1つのユーザーを使い回ししても大丈夫です。

3.メニューやカタログデータの作成

Windows PCで使い慣れたソフト(ExcelやPowerPoint、イラストレータ等)を使って、メニューやカタログ、パンフレットなどを仮想プリンタ 「Page Palette」に出力します。この仮想プリンタはPCツールをインストールすると印刷時に選択できるようになります。操作は紙への印刷と同じです。この 印刷操作でクラウドに資料の印刷イメージがアップロードされます。

動画をアップロードするときは、Windowsの画面右下のタスクトレイに表示されているPage Paletteアイコンをクリックして「動画のアップロード」を選び、アップロードする動画ファイルを選択してください。

4.iPadへの配信

iPadアプリPage Paletteを起動し、ログインして左上の更新ボタン(丸まった矢印のボタン)を押すと、アップロードした印刷イメージや動画がアップロードフォルダに入ります。

フォルダがサイネージの単位になります。アップロードフォルダのまま使うことも出来ますが、別のフォルダを作ってデータをコピーすることでサイネージを複数作ることが出来ます。

5.サイネージの設定

サイネージの機能を開始するには、サイネージとして使うフォルダを選んだ状態で、上部のメニューから「表示フォルダ限定モード」を選びます。

設定画面が表示されるので、スライドショー開始までの時間やページめくりの間隔、ページめくりの種類を選んでください。設定ボタンを押すと、デジタルサイネージとして使えるモードがスタートします。

このモードでは来店客が触っても大丈夫なように、スライドショーの開始やページめくりなど、ごく限られた操作だけが行えるようになります。

6.操作

設定した時間が経過すると自動的にスライドショーが始まります。

スライドショー表示時に画面を触るとスライドショーが中断され、指で左右にページをめくれるようになります。動画も静止画と同じようにめくることが出来ます。操作をせずに設定した時間が経過するとスライドショーが再開されます。

アプリを一度終了して再起動すると、パスコードの入力でこのモードから抜けることが出来ます。

7.ホームボタンのロック

iPadのホームボタンをロックすることで、来店客の他の操作を抑止できます。

ホームボタンをロックするには、iPadの設定アプリの画面左側から一般を選び、画面右側からアクセシビリティを選びます。その後アクセスガイドを選び、アクセスガイドをオンにして、パスコードを設定してください。

Page Paletteを起動し、ホームボタンを3回連続で押して、アクセスガイド画面の右上の開始ボタンを押すとホームボタンがロックされます。元に戻すには、ホームボタンを3回連続で押して、パスコードを入力してください。

終わりに

如何でしょうか。使い慣れたソフトからの印刷でサイネージが作れるので、こまめに差し替えが出来るかと思います。ネット経由で複数店舗への配信も簡単です。是非、ご活用ください。

より詳しい情報を知るには、Page Paletteのサイトをご覧ください。

PR

コンポーネントデザインでは、アプリ開発を受託致します。お気軽にお問い合わせください。

Webシステムからシリアル通信でハードウェアを制御する方法

ActiveXコントロールを使うとWebシステムからハードウェアを制御できる

Web技術が普及する前の業務システムは、「クライアントサーバー型システム」で構築されていました。「クライアントサーバー型システム」は、PCにクライアントソフトウェアのインストールが必要なので、PCの管理作業に手間が掛かっていました。
Web技術が普及した今、業務システムは「Webシステム」として構築されるようになっています。「Webシステム」はクライアント上のブラウザを利用します。これによりPCへの個別のソフトウェアインストール作業が不要になりました。
ただし、「Webシステム」はクライアント側のアプリケーションがブラウザで実行されるため、従来は簡単だった「ハードウェアの制御」が難しくなります。これはブラウザにハードウェアの制御機能がないためです。例えば以下のような機能がそれにあたります。

  • バーコードリーダーを接続して、会員証や商品のバーコードを読み込む。
  • タイムカード用の機器を接続する。
  • FeliCaで認証を行う。
※いずれもPCに接続したハードウェアを制御するアプリケ-ションをイメージしました。

ブラウザ上で動作するActiveXコントロールを利用すると、この問題を解決できます。ActiveXコントールは、ブラウザ上で動作するプロ グラムコンポーネントです。ActiveXコントロールは、ハードウェア制御が無理なく行える上、通常のWebシステムのHTML上に配置したJava ScriptやVB Scriptから、その機能を呼び出せます。

このコラムではActiveXコントロールを使って、WebベースのシステムからRS-232Cなどのシリアルポートに接続したハードウェアを制御する方法をご紹介します。

接続方法

最近のPCにはシリアルポートが省略されているため、接続するには変換ケーブルが必要になります。ドライバソフトウェア付きで数千円ほどで購入できます。

USB経由でシリアル接続

USB経由でシリアル接続

ソフトウェアの構成

ブラウザ上で動作するHTMLのobjectタグにActiveXコントロールを指定し、JavaScriptからActiveXのメソッドやプロパティを呼び出して利用します。

ActiveXコントロールでSrialポートにアクセス

ActiveXコントロールでSrialポートにアクセス

ActiveXコントロールとは

ブラウザ上で動作するプログラムコンポーネントです。OSネイティブなコードを実行できるため、ハードウェア制御も無理なく行えます。

HTMLのOBJECTタグにより起動し、JavaScriptやVB Scriptからメソッドを呼び出すことができます。

ActiveXコントロールの実態はDLLファイルです。HTMLや画像ファイルなどと同様にWebサーバーに配置します。ActiveXコント ロールのインストールは、ほぼ自動で行えます。ユーザーがインストールのために行うのは、初回実行時に表示される警告に答えるだけです。

ActiveXコントロールの開発

ActiveXコントロールは、VC++を使いネイティブコードで記述します。MFCかATLのどちらか(または両方)を利用するのが一般的ですが、ATLを利用するほうがコンパクトなモジュールを開発することができます。

開発したモジュールはコードサイニング証明書を利用して署名します。署名の際にはタイムスタンピングサービスを利用して、署名日時の情報を付加することが一般的です。コードサイニング証明書はベリサインやグローバルサインより購入します。

装置からの受信を契機に処理を行う場合

JavaScriptのsetTimeoutを利用して繰り返し処理を実装する方法が簡単です。このsetTimeoutで指定する時間は他の処理(画面の書き換えやシリアルポートへの書き込み)も動作します。

// 参考コード (Java Script)
function LoopRead() {
if (quitflg != 0) {
// 終了ボタンなどが押されたときなどのために、
// フラグを使ってループを終了すべきかチェックします。

return;
}

var readdata = SerialPort.GetData();
if (readdata != “”) {
// 受信できたら何か処理を行う。

}
setTimeout(“LoopRead()”, 100); // 100ミリ秒後以降に再実行を予約
}

複数のポートを同時に操作する場合

ActiveXは1個のコントロールを同時に複数起動することができるように設計されている技術です。ActiveXコントロールがアパートメン トモデルと呼ばれるコンポーネントオブジェクトモデルの基本どおりに作成されていれば、OBJECTタグで1つのコントロール(DLL)から複数のインス タンスを生成して同時に利用できます。

関連コラム

ActiveXコントロールを使い、WebシステムからFeliCaへアクセスする方法

PR

弊社ではActiveXコントロールの開発を承ります。お気軽にご相談ください。

要件定義の進め方

ある程度の規模がある情報システムを構築しようとする場合、「要件定義」と 呼ばれる作業フェーズを実施します。要件定義には一般的な書式や決まったルールが存在しないため、「どこから手を付けていいかわからない」や、「具体的な 成果物のイメージがつかない」といった声をよく聞きます。

このコラムでは要件定義の進め方とコツを紹介します。あわせて類似する用語である要求定義についても言及します。

97737e005c2335bd45df1c73124869c8_s

システムのあるべき姿を整理する作業

要件定義は上流工程であると言われます。その名前からなのか、「学術的にあるべき姿があり、それに従うべきだろう」と思う方も多いようです。

1つやってみないと理解が難しいのですが、要件定義の手法そのものについて難しく考える必要はありません。要件定義は要件を生み出す作業ではなく、要件を整理していく作業です。

どのようなシステムであっても要件定義を始めようとするときは、もやもやしていたり断片的であっても、システムでやりたいことや機能のイメージがあるかと思います。要件定義とはそれを整理する作業なのです。

最も重要なこと。ビジネスの成果

企業の情報システムはビジネスの成果を獲得するために開発・運用されます。ですから要件定義では最初に「獲得すべきビジネスの成果」をしっかり記述することから始めます。このシステムによって何がもたらさせるかを明確にするのです。

続いて「情報システムを使ってビジネスの成果をどのように獲得するか」を具体的に考え、整理していきます。具体的な内容が数ページにわたって書かれることが多く、大事な部分です。

この部分の検討は普段の情報収集がものを言います。たとえば、定型業務で普通のPCが使いにくい場所であれば、iPadの利用を検討できると良いかもしれませんし、大量のデータから情報収集が必要なのであれば、レスポンスを確保する手法を知っている必要があります。

ただし、すべての技術的課題をクリアできなくても大丈夫です。知識量が不足する場合は、ネットで調べて予想を立てたり、その分野に長けたベンダー に問い合わせたりして、ある程度は解決できるはずです。最後まで確証が持てない事項は、調査課題として要件定義書の中に明記し、後で解決することにしま しょう。

要件定義書の書式や構成には、特にこれといった決まりがありません。登場人物が多くアクションが流れるようにつながっているなら、ワークフローを 書きますし、単独の業務システムで画面の流れが重要なら、画面遷移図を書いたりします。いずれにしろ大事なのは、押さえるべきポイントを次々と洗い出し、 整理しきってしまうところにあります。

要求定義という罠

要件定義と類似した響きをもつ「要求定義」という言葉があります。確かに満たすべき性能を定義する必要があるときは、「要求定義」と呼ばれる作業 が必要なときもあるでしょう。大がかりなシステム構築における要求性能の定義がそれにあたります。例えば「チケットの予約システム」や「決済システム」な どです。どの部分でどのような性能が達成されるべきなのか、注意深く調べて決定していく作業を行うのです。

しかし、要求定義は要件定義の内側としてとらえた方が、私は良いと思います。システム構築と運用は、ビジネス活動の一部ですから、コストを度外視することはできません。実現方法を無視して定義してしまうと、無駄に高コストになりがちです。

繰り返しになりますが、要件定義には「情報システムを使ってビジネスの成果をどのように獲得するか」を具体的に書くべきです。欲しい物を列挙するのではありません。

何を書いて何を書かないか

要件定義を進めていくと、どこまで細かいことを書くべきかで悩むときがあるかと思います。明確な基準はありませんが、次の2つを念頭に置いてください。

1)以降の設計作業へ検討を先送りしても心配がいらない事項は記述を省略する。

2)1に該当しても、ビジネスにとって重要と思われる事項は要件定義書に記述する。

要件定義はそのあとに続く設計作業のインプット、つまり前提条件となります。ですから設計時に気にすべき事項は、要件定義書に記述しておくべきで す。あまりたくさんの内容を詰め込みすぎて、要件定義自体に許容できない日数がかかってしまうと問題ですが、そうでなければ記述する範囲は少々多めがよい と考えてください。

はじめての方にもお勧めできるコツ

前述したとおり書式に制約はありません。ドキュメントを作成するためのツールも使い慣れたもので良いと思います。文の折り返しが自動で行われるWordが良いといった意見もありますが、大事なのは書式ではなく、的確に要件を整理することです。

はじめての方にもお勧めできるコツを1つご紹介します。MicrosoftのPower Pointや、AppleのKeynoteを使い、プレゼン資料のように1ページに1つのポイントを記述する方法です。ページの並び替えが容易なので、全体の構成をしっかり考えられなくても作業を進めることができます。

最後に要件定義書を作成する際のポイントをおさらいします。是非参考にしてください。

  • 「獲得すべきビジネスの成果」が最も重要です。しっかり記述してください。
  • 実現方式も一緒に検討して整理してください。要求事項の列挙は要件定義ではありません。
  • 細かい事項で書くべきか迷ったら、書くことを選択しましょう。気になる事項はシステム要件の一部です。

    • 付録

      プレゼン資料のように要件定義書を作成した場合のページ構成の例をご紹介します。ヒントにしてください。

      例:飲食店の予約システム(インターネットで予約を受け付けるシステム)

      ・システムの目的とビジネス目標
      ・全社のシステムにおける本システムの位置づけ
      ・対象の業務とシステム化の範囲
      ・プロモーションの方法と内容
      ・予約枠の概念
      ・電話からの予約受付方法
      ・予約の重複を避ける手法
      ・予約データの分析
      ・外部システムとの連携
      ・データ分析機能
      ・システム構成
      ・システム二重化による安全性の確保について
      ・サーバー構成
      ・UIデザインに対する要求事項
      ・性能要件
      ・予算
      ・スケジュール

      PR

      コンポーネントデザインでは、システム開発を要件定義から受託致します。お気軽にお問い合わせください