NEXT事業部のSUZUKIです。
皆様は「電子黒板」と言うものをご存知でしょうか?
名前から想像する通り、学校の黒板を電子的に再現し、文字を書いたり図形を描いたりすることが出来るホワイトボードのことです。
平たく言ってしまえば、60インチ以上の巨大なタブレットを学校で利用する為、授業で利用しやすいようにカスタムされた電子機器になります。
こんな感じのやつです
そんな電子黒板も各メーカーから色々なOSや機能を搭載して様々な種類が発売されているのですが、今回はそんな電子黒板向けのアプリを開発する機会がありましたので、その時の苦労話でもさせて頂こうと思います。
ワン&オンリー!専用機は開発が大変!!
今回開発させて頂いた電子黒板はAndroid OSが搭載されているモデルでした。Androidと聞くと「あー、iPhone以外のスマホでしょ?」と認識されている方が多いかと思いますが、まぁそのAndroidです。但し、一般的なスマホに搭載されているAndroidと違い、この電子黒板専用にカスタムされた特別なAndroidです。
実はAndroid自体がOSS(オープンソースソフトウェア)であり、サードパーティーのベンダーが独自にカスタマイズしやすいように作られているOSだったりするので、こういった電子黒板や車のナビなど、最近では多くの場所でAndroidが採用されていたりします。(豆知識)
閑話休題。そんな電子黒板専用のカスタムAndroidでの開発を行っていくわけですが、専用機の開発というのはどこの世界でも苦労するもので、今回も例に漏れず苦労した点が多々ありました。
・苦労その1 純正のSDKやライブラリが100%使える訳ではない
純正のAndroid開発であればGoogle様の庇護のもと、豊富なSDKやライブラリが利用可能で開発がとても捗るのですが、カスタムOSの場合は全てがサポートされていない、そもそも使えない場合が多々あります。そして何より、専用OSの為にドキュメント等は一切無く、サポートされているかどうかを自前で検証するしかありません。(一応ベンダー様に問い合わせも可能ですが、ほぼ海外の為、最終手段・・・)
特にGoogleサービスを利用する部分の開発は、Googleのライブラリが利用出来ない分とても苦労させられました・・・
・苦労その2 ハードウェア互換も保証されない
とある案件で、電子黒板に外部のハードウェアを利用したい、という依頼がありました。
例えばUSBのカメラやマイクを利用したい場合、USBに挿せば使えるじゃん?と皆様は思うかもしれませんが、それはお使いのOS側でHAL(ハードウェアごとの仕様の違いを共通の方法で使えるようにするソフトウェア部品)の実装や、ハードウェア専用のドライバ(ハードを制御するソフトウェア)を用意してくれている為、特に意識すること無く利用出来るようになっています。(ドライバのインストールぐらいは経験のある人もいるかもしれません)
しかし、カスタムOSの場合はそこまで考慮されていない事が多く、ハードウェアを接続しても普通に使えない、使えたとしても一部の機能がなんらかの理由で使えない、ベンダー様しかしらない魔法の実装方法でしか動かない、と言った事がよくあります。そして大概、顧客の要望はその対応していない機能をご依頼される事が多い為、とても頭を悩ますことになります。
ソフトウェアレベルでなんとかなれば良いですが、CやC++でドライバレベルの実装をしたり、それでも駄目な場合はベンダー様に問い合わせ、OSレベルで修正をして頂く羽目になったりなどした場合は、開発時間がいくらあっても足りません。
・苦労その3 専用機能との競合
そして最後は、電子黒板専用として開発されている機能との競合です。
「電子黒板」という名の通り、黒板の機能として画面上に自由にメモを描いたり消したりする機能が標準で実装されています。そしてそれらは、アプリが起動していようがシステム設定が開かれていようが、どんな状態でも利用することが可能になっています。
とある開発で、アプリを小画面化して利用する仕様がありました。開発は順調で、動作テストも問題なく終了、顧客に動作確認を依頼して何事もなく終了・・・と思われましたが、顧客からこんなメッセージが届きました。
「小画面の上にメモ書きをしてみたのですが、メモを消そうと消しゴム機能でなぞってみたら、小画面上のなぞった部分も消えました。」
この時は電子黒板のアプリ開発経験が浅かったのもあり、完全に盲点でした。しかも、この時複数機種で開発していたのですが、消えるのは1機種のみ。
結局対策としては、開発ベンダー様から指定された方法で、消しゴムで消さない部分を指定する必要がありました。
これもベンダー様と直接お話出来たから解決出来たものの、それが出来なかったと思うとゾッとします。
いかがでしたでしょうか。
電子黒板アプリに限らず、専用機の開発はとても苦労する事が多いと思います。
しかしながら、普通の開発では絶対に身につかない知識や新しい発見、ハードウェアレベルの知見が段違いに高まるのもまた事実であり、苦労した分開発がうまく行った時の達成感は比ではありません。
なかなかやりたいと思っても出来る機会は無いと思いますが、もし当事者になるチャンスがあれば、自分への挑戦と思ってチャレンジしてみるのも悪くない選択肢の一つだと思います。
また、この記事を見て電子黒板アプリ開発に興味を持たれた方、、是非NEXT事業部までご一報ください。(宣伝)
それではまた。