HMDT Blog

ブログではご無沙汰していましたのと、新しいお仕事を始めたいです


ブログではご無沙汰しております。まだHMDT株式会社、存続しております。最近は、TwitterやFacebookばっかりで、こっち更新してなかったですね。


最近の活動なんですけど、何度か報告してましたけど、DropTalkっていうアプリをかなり力を入れてやってました。これは障害児向けのAACアプリ、特にVOCAアプリなんですけど、っていっても障害児教育に知識ある人じゃないと分からないですよね。私も、初めは訳も分からずやってました。ですが、全国の特別支援学校にお邪魔したり、障害を持つ子たちの保護者の方にお会いしたりするうちに、少しずつ分かってきました。今は、DropTalkを必要としている子がいるならば、なんとか頑張って継続して開発していきたいです。まぁ、お金の面も含めて、なかなかに難しいんですが、どうにか知恵を絞ります。

もう一つ、9月の末に『本郷レコード』っていうアプリをリリースしました。これは完全に私の趣味のアプリで、アプリを使って仮想のレコード屋さんを作ってやろう、というコンセプトです。技術的に言うと、Apple Musicのプレイリスト共有アプリなんですがね。そのまま作ってもつまらないので、東京都文京区本郷にある、クラシック専門のレコード店『本郷レコード』を再現しています。頑固な老店主がいまして、自分の好きなアルバムを並べた棚を混成込めて作っているんですよ。この棚の並び順とか、それぞれにつけたポップのウンチクとかが売りです。このアプリは、開発よりもその後の運営の方が大事になるタイプなので、日々コツコツとアルバム並べたり、ポップを書いたりしています。ま、これが最高に楽しいんですけどね。趣味ですから。

そんな訳で、DropTalkと本郷レコードという自社製品を集中して作ってたんですが、どうやらひと段落つきました。つきましては、また何か新しいお仕事を始めようと考えています。もしなにかお仕事をご一緒できる方がいましたら、ぜひご連絡ください(mkino@hmdt.jp、または、@mkino)。弊社は、iPhone、Android、macOS、Windows向けのアプリを開発している会社です。iPhoneは10年以上、macOSは15年以上の開発経験があります。特にiPhoneは、最初のSDKが公開される前から開発を開始しており(JailBreakでやってた)、その技術やApp Storeの変遷を、ずっと最前線で体得してきました。携わったアプリの数は200を超え、分野は多種多様に渡ります。ゲーム以外はほとんどすべてやってきたんではないか、と自負しています。

そのうち、DropTalkと本郷レコードの技術的なバックグラウンドを解説する記事を書こうかと考えています。期待しないで待っててください。

『中日・日中辞典【第3版】1.0.8』をリリースしました


iOSアプリ『中日・日中辞典【第3版】1.0.8』をリリースしました。お使いの方は、アップデートをお願いします。

語釈表示画面に、ツールバーを追加しました

語釈表示画面では、画面上部のナビゲーションバーにあるアクションボタンから、各種操作が行えました。これに加えて、画面下部にツールバーを追加しました。ツールバーからワンアクションで、お気に入りやブックマークの追加ができます。

ブックマークの追加時に、ブックマーク情報画面を表示するようにしました

ブックマークに項目を追加する場合、今まではブックマークのルートフォルダに追加した後、ブックマーク画面で情報画面を開き、適時必要なフォルダに移動していました。

これを、ブックマークを追加するときに、情報画面を開いてその場でフォルダ移動を行えるよう変更しました。

追加時に情報画面を開くというアクションを起こしたくないときは、お気に入りに追加を使ってください。

ブックマーク情報画面に、見出し語が表示されないことのある問題を修正しました

ブックマーク情報画面において、表示領域の高さがわずかに足りないため、見出し語が表示されない問題がありましたので、これを修正しました。

『中日・日中辞典【第3版】1.0.7』をリリースしました


iOSアプリ『中日・日中辞典【第3版】1.0.7』をリリースしました。お使いの方は、アップデートをお願いします。

表示するフォントサイズが大きい時、付録でコラム一覧が表示されない問題を修正しました

付録画面では、コラムの一覧を確認することができます。このとき、画面に表示するフォントサイズを大きめに設定しているとき、コラムのタイトルが表示されない問題がありました。これは、タイトルの表示領域が、フォントサイズの大きさを変更してもそれにあわせて広がらないことが原因でした。

タイトル表示領域を、フォントサイズにあわせて拡大することで、修正しました。

語釈中の「動作動詞」など、コラムへのリンクをタップしてもコラムに遷移しない問題を修正しました

語釈の文中に、関連するコラムへのリンクが埋め込まれている項目があります。このとき、リンクをタップしてもコラムの項目へと移動しませんでした。これは、コラムを表すリンクのアドレスを、適切に処理していなかったことが原因でした。

これを適切に解釈することで、修正しました。

『中日・日中辞典 3.1.2』をリリースしました


『中日・日中辞典 3.1.2』をリリースしました。新アプリではなく、旧版の方です。お使いの方は、アップデートをお願いします。

検索結果に語釈の一部を表示するオプションを追加しました

新アプリを使った方から、旧版でも検索結果と語釈の同時表示機能が欲しい、という要望がありましたので、対応しました。設定画面のオプションをオンにすると、語釈の一部が表示されるようになります。

『中日・日中辞典【第3版】1.0.6』をリリースしました


iOSアプリ『中日・日中辞典【第3版】1.0.6』をリリースしました。お使いの方は、アップデートをお願いします。

安定性を向上しました

中日・日中辞典では、検索と表示の際にユーザ操作の妨げにならないように、多くのスレッドを並列に動作させています。スレッド間で排他処理を行うために、いくつかの箇所でバッファを用意しているのですが、その一部でスレッド情報の取り扱いに不具合がありました。その結果、見出し検索と用例検索を、30回程度切り替えながら検索すると、クラッシュするという問題が発生していました。これを修正しました。

「検索結果に語釈を同時に表示」をオフにしているとき、ブックマーク画面の表示が乱れる問題を修正しました

「検索結果に語釈を同時に表示」の設定をオフにしているとき、ブックマーク画面に見出し語が表示されない問題がありました。これを修正しました。

語釈の詳細表示画面で、ナビゲーションバーにタイトルが表示されないことがある問題を修正しました

詳細表示画面のタイトルが適切に表示されるように修正しました。

iOSアプリをWindowsに移植してみた


何度もここに書いてるけど、HMDTはDropTalkっていうアプリにかなり力を入れてやっています。もう、7年目になるのかな。最初はiPhone向けに開発して、iPadに移植してプチブレイクした。去年はAndroidにも移植したけど、これはぜんぜんダウンロード数伸びなかったねー。iPadの1/10以下で、誤差の範囲内でした。

で、今年はWindowsに移植しました。ずっと要望は多かったんですよ。ようやく出せました、という感じです。先週あたりからMicrosoftストアにも登場しています。ダウンロード数伸びてくれるといいんだけど。

今回、初めてiOSアプリをWindowsに移植してみたんで、そのときの技術的な話を書いてみたいです。

マシンと開発環境の整備

Windowsへの移植を始めたのは、ちょうど一年前くらいかな。2016年の12月あたりからです。まずヨドバシカメラにWindowsマシンを買いに行くことから始めました。個人で使うWindowsマシンを買うのは、初めての体験だった。キャーキャー言いながら悩んで、ASUSのノートPCに決めました。安かったから。15万くらいだったかな。一緒に行った社員の人は、Surface選んでました。

入っていたOSは、Windows 10。この年はWindows 10への無料アップグレードが終わるとかで、その告知が執拗に出てくることがニュースになってたので、噂では知ってたけど、触るのは初めてでした。これが10か、と感動することしきり。そういや、その前に触ったWindowsはなんだっけ? と、思い出してみたら、Vistaでした。Vista以来のWindowsになります。

続いて開発環境を整えます。IDEは、Visual Studioで決まり。フレームワークは何使えばいいのかな、と検索してみたら、なんかいっぱいあるのね。Win32とか、Windows Formとか、WFPとか、UWPとか。どれがどれで、何が何よ?! 調べれば調べるほどわからなくなるので、こっちの条件を羅列してみました。

  • 新規に作る(レガシーコードはない)
  • いわゆるネイティブアプリにする
  • ストアで配布したい
  • タブレットPCで動かしたい(タッチ必須)

以上の条件から絞り込むと、どうやらUWPになるらしいです。この中ではいちばんモダンになるのかな。Windows 10より前では動かないみたいだけど、うーん、まぁいいやということで決めました。ほんとは、DropTalkのターゲットは教育市場なので、Windows 10への移行はものすごく遅れているのでちょっと厳しいです。でも、これから5年とか10年とかサポートし続けていくものなので、中途半端なレガシーは切り捨てることにしました。

ちなみに、Xamarinは最初から選択肢に入ってませんでした。クロスプラットフォームは幻想だと確信してるので。

プログラミング言語

プログラミング言語は、C#にしました。ずっとC言語由来の言語ばっかり触っているので、C#も30分程度勉強したら書き始めることできました。印象としては、モダンさの度合いとしては、Objective-C以上Swift以下ってとこですか。ラムダ式とかLINQとか使い出したら楽しくなってきた。でも余計な記述が多くなって、言語全体が古臭くなって来ている感は否めないですね。そろそろ、後継言語が欲しいです。SwiftやKotlinレベルのものを。C##とかいう名前になるのか。それか、KotlinをUWPに対応させた方が速いのかも。

UWP

GUIフレームワークとしてのUWPは、最初はとにかくXAMLにとまどいました。ユーザインタフェースは、XMLベースのXAMLっていうフォーマットで記述します。Visual Studioに付属するビジュアルエディタを使おうとしたのが失敗でしたね。Interface Builderみたいなものかと期待したけど、ぜんぜんダメだった。XML直接手書きに切り替えてからは、サクサクと開発進むようになりました。

あと、見た目のカスタマイズが厄介ですね。UWPでは、見た目のかなりの部分まで、XAMLで記述されています。だから、このXAMLを変更することにより、柔軟に、そしてコーディングなしでカスタマイズできる、ってのが売りです。でも、なんでもできるってことは、やらなきゃいけないこともたくさんある、ってことにつながります。ちょっとした変更をするにも、なかなかに記述量が多くて大変でした。

もうひとつとまどったのは、View Model。UWPは全体的に、データはView Modelの形式で与えることになってます。Cocoaでいうと、Bindingみたいなもんですね。モデルを管理すれば、ビューの更新は自動的に行われる、素晴らしい仕組みです。でもこれ、便利なのはその仕組みの枠内だけで使っているときだけなんですよ。ビューの表示の仕方をちょっと変えようとすると、とたんにイバラの道が待っています。できないわけじゃないんだけど、書き換えないといけないところが多すぎる。これだったら、View Model使わないで、ベタにViewを触った方が圧倒的に速いよ、ってのがしょっちゅう出てくる。

というわけで、UWPはXAMLとかView Modelとか、かなり洗練されたアーキテクチャを備えるんだけど、その仕組みから外れると途端に使いにくくなります。UWPの枠内で、素早く簡単なアプリを作りたいときにはこれでいいんですよ。でも正直なところ、それで収まるアプリなんてほとんどないです。結局、XAMLやView Modelの枠に縛られないようにプログラムを書いていきました。なんだかなー。高度に統合されたものよりも、緩やかに連携するものの方が、アプリ作る上では使いやすいんだよね。

AFTERWARD

そんなことで、どうにかリリースできるものを作り上げました。思ったより楽しかったです。違う世界を体験すると知見が広がるので、iOSアプリを作っている人もトライしてみるといいと思います。

ただね、いまどきWindows PCで何かやりたい人は、かなり少数派だよね。iPhoneとiPadの方が高機能で高効率になっちゃったから。DropTalkは、いまだ教育分野ではWindows PCを使っているという背景があるから移植したけど、それ以外の分野では必然性が薄いよね。そこがいちばんの問題かな。

『中日・日中辞典【第3版】1.0.4』をリリースしました


iOSアプリ『中日・日中辞典【第3版】1.0.4』をリリースしました。お使いの方は、アップデートをお願いします。

関連語としてコラムが表示される時、操作不能になることがある問題を修正しました

中日・日中辞典では、検索した語句の詳細を表示する時、関連語句も同時にその下に続けて表示します。これにより、説明文内部にあるリンクを一つずつタップしなくとも、一目で確認することができます。

この関連項目にコラムが含まれている時、1.0.3では操作が不能になる不具合が確認されていました。これは、コラムの項目を検索する際に不具合があり、検索が永遠に繰り返されるために発生していたものでした。コラムの検索に関する不具合に対応することで、修正を行いました。

関連語としてコラムが表示される時、表示領域が意図したものよりも大きくなることがある問題を修正しました

上述のように、中日・日中辞典では関連語句をまとめて表示するのですが、これは開始の数行を抜粋した形で行なっています。多くの項目をまとめて閲覧できるようにするためです。

ですが、1.0.3ではコラムの関連項目で、意図したものより大きく表示されることがありました。これは、画像を含むコラムで発生していました。画像を含むテキストに対して、抜粋の処理に不具合があったためです。これを修正しました。

ピンイン入力時に、一部の音節で声調が適切に表示されないことがある問題を修正しました

中日・日中辞典では、ピインイン入力を補助するために、音節ごとに声調を指定することができます。音節は400以上あるのですが、この区切りに一部不適切なものがありました。具体的には、次の音節となります。

  • ao
  • ou
  • rua
  • tui
  • tong
  • xiao

これを修正しました。

量詞を表すアイコンを追加しました

見出し語に対して量詞が使われる場合は、これを記述しています。この量詞に対して、アイコンを付加して見やすくしました。

ちなみにこの量詞のアイコンは、フォントとして実装されています。新規にグリフをデザインして、本文中に組み込んでいます。画像ファイルではないので、大きさや色を自在に変更できるのが利点です。

『中日・日中辞典【第3版】1.0.3』をリリースしました


iOSアプリ『中日・日中辞典【第3版】1.0.3』をリリースしました。お使いの方は、アップデートをお願いします。

キーボードアクセサリによるピンインの声調の入力を、音節区分に変更しました

中日・日中辞典では、キーボード上部のキーボードアクセサリと呼ばれる領域で、ピンイン入力を補助するために声調を指定できるようになっています。1声(ā)とか2声(á)とかいうあれです。この声調の入力を、音節ごとに指定するよう変更しました。

たとえば、キーボードから「xi」と入力すると、次のように「xī」「xí」「xǐ」「xì」が指定できます。

または、キーボードから「pao」と入力すれば、「pāo」「páo」「pǎo」「pào」を指定できます。中国語の発音規則に従い、3文字目の「o」ではなく、2文字目の「a」に声調がつくようにしています。

旧来の数字で入力するスタイルとは異なり、声調をより自然な形で指定できるようになっています。

ピンイン入力の際に、数字による声調の入力に対応しました

旧来の数字入力による声調の入力にも対応しました。キーボードから「xi1」や「pao3」と入力することで、検索ができます。

安定性を向上させました

検索中に、突然アプリが終了する問題がありましたので、これを修正しました。

中日・日中辞典では、語句の検索/結果の表示を、ユーザの方にストレスを与えずに行うため、高度に処理を並列化しています。複数の処理を並列に走らせるには、スレッドプログラミングと呼ばれる技術に対応させる必要があります。

中日・日中辞典では、いくつかのオープンソースソフトウェアを利用しているのですが、その中に今回の使い方ではスレッドプログラミングに対応していないものがあります。具体的には、グローバル変数と呼ばれるどこからでもアクセスできる変数領域があり、これに複数スレッドから明確な制御なしにアクセスするため、問題が発生していました。開発の段階で、この問題に対応してスレッド化を行ったのですが、まだ抜けがあったことが分かりました。その修正を含めました。

『中日・日中辞典【第3版】』リリースおよび不具合に関しまして


『中日・日中辞典【第3版】』バージョン1.0をリリースしました。最新のユーザインタフェースと辞書データを備えた、次世代の中国語辞書です。

現在、バージョン1.0で、アプリ内課金の購入結果が、次回起動時に反映されないことがある不具合が確認されています。回避策として、購入画面で「購入履歴の復元」を選択してください。仮に、再度購入を選択してしまっても、二重課金が行われることはありません。

この不具合の修正を行なった、バージョン1.0.1を申請中です。ご迷惑をおかけしますが、いましばらくお待ちください。

iOSアプリ「中日・日中辞典【第3版】」もうすぐリリース!


HMDTで開発/配信しているiOSアプリ「中日・日中辞典」を、もうすぐ大幅アップデートします! リリース日は、8/22の予定。

アップデートの内容をざっくり紹介すると、最新辞書データである「第3版」に対応したのと、ユーザインタフェースがまったく新しい見た目に生まれ変わりました。

辞書データは小学館さんから提供してもらっており、収録語数が大幅に増えた第3版のデータが到着しましたので、それを組み込みました。中日辞典は収録語数10万語! 日中辞典は収録語数95,000語! 小学館さんと北京の商務印書館さんとの共同編集で、高信頼です。

ユーザインタフェースについては、正直なところ、いままでのが古すぎたんですね。本に似せたデザインで、とてもよく作り込んで好きだったんだけど、iOS 7以降のデザイントレンドから取り残されちゃってました。

さらに、iOSがアップデートするにしたがってiPadが本格的にマルチタスク対応していく中、柔軟性に欠けたものになっちゃってました。そんな問題を払拭する、大幅アップデートです。

このリリースにあわせて、Webページもリニューアルしました。詳しい説明は、そちらも見てください。Webページのデザインは、トラムさんにお願いしました。うちの事務所の近くにあるサイト制作会社さんです。

一週間後のリリースなので、よろしくお願いします。あ、もちろん、既存ユーザの方は無償でアップデートできますよ。