MENU

NIC BLOG

Voice of the Staff

フレームワーク開発奮闘記

フレームワーク開発奮闘記

こんにちは。NEXT事業部のMです。

私は自社製品を開発するNEXT事業部で、ACシリーズという教育向けのアプリの開発を担当しています。
ACシリーズは現在9種類を発売していますが、制作時期によるトレンドのUIや製作者の違いなどが原因で、シリーズを謳っているにも関わらず統一感にかけるという問題がありました。

そこで、UIや頻出する処理をまとめたフレームワークを開発し、ACシリーズに統一感を持たせようという目的で「ACFramework」を開発することになりました。
現在進行形で開発中なのですが、実際に使える段階になってきた現在までには様々な苦労がありました。

開発開始!と思いきや?

さて、フレームワークを開発するぞ!と意気込んで、まず初めに困ったことは
「何をフレームワークとすれば良いかわからない」
ということでした。
今までフレームワークを開発した経験などないのですから、当然です。
これまで当たり前のように使っていましたが、そもそもフレームワークとは何か?ということから再確認することになりました。

そもそもフレームワークとは?

フレームワークとは、アプリの実装時に頻出する機能や定型コードをライブラリとしてまとめたものです。
iOSの開発をしたことがある人に分かりやすくいえば、UIKitやCoreGraphicsがそれにあたります。
画面上の描画をViewという単位で簡単に描画することができたり、ベクトルの描画を複雑な計算をすることなく描画できたりするのは、全てフレームワークで難しい処理を隠蔽してくれているからです。
ACシリーズでも、別々のアプリで同じような処理を毎回作ってしまっている、という事が実際にありました。
なので、まずはACシリーズで作成した複数のアプリから同じような仕組みで動いている箇所を抽出してみることにしました。

ACシリーズのアプリから抽出した箇所

ファイル管理

ファイルとフォルダのツリーモデルの構成、複製や削除に共有といったファイル操作などは毎回作るのが大変な上、結局同じ構成になりがちです。

資料編集

PDFや画像を背景とした、拡大縮小やページングが可能な画面。
ここに手書きや自由配置のテキストといった編集機能をつけた画面も使い道が多いです。

通信系

資料編集の操作の同期や、ファイルの送受信など通信機能の仕組みを抽象的に作成しておき、手軽に実装できるようにします。

課金関連

内部的な実装方法はほぼ毎回同じなのに実装には手間がかかるため、画面ごとフレームワーク側で用意します。

Utility系

文字列操作や画像操作など、よく使う処理や便利系の処理を多く用意します。

大きく分けてこれら5つの項目をフレームワークとして実装していくことにしました。

苦労した点

フレームワークである以上、抽象的であることが何より大事です。
「資料編集機能」という機能一つとっても
・資料の表示
・ページング
・拡大縮小
・手書き線を書ける
・テキストを打てる
といった機能にわけることができます。
そして、全ての機能が必要なアプリばかりではありません。
そのためそれぞれの機能は個別で作り、自由に組み合わせることができるような仕組みを目指すことにしました。
しかし、これら一連の機能を作るのはすでに開発した経験からそれ程の難易度ではないのですが、これらを細分化して個別に扱えるように実装するというのは非常に難易度が高くなってしまいました。
通信や資料編集に関しても、この抽象化という観点から考えることで非常に作業が難航してしまいましたが、トライ&エラーの繰り返しで想定していたものができました。

実際に開発で使って気づく失敗

そんなこんなである程度形になってきたACFrameworkでしたが、実際にこれを使ってアプリを開発してみると、開発中には見えてこなかった問題点が沢山出てきました。
その中でも特に多かったのが、拡張性です。
フレームワークですので、当然そのままの機能を使うだけではなく、アプリごとに拡張して使います。
・アプリのイメージに合った色に変更する
・アイコンを別のものに差し替える
・表示される文言を差し替える
・使える色の種類を差し替える
・資料の編集機能に、アプリ独自の特殊な機能を追加する
ある程度考慮して開発していたつもりではありましたが、いざ使ってみるとこれらが非常に行いづらい!という事が次々と出てきて、現在も更新更新の日々です。

最後に

そんなACFrameworkを用いて作られた最初のアプリである「ACDiary」がリリースされました。
当初の予定とは違い、UIに関してはオリジナリティあふれるものとなっていますが、操作面や内部的な構造はACFrameworkをふんだんに利用しています。
興味のある方は、是非アプリをダウンロードしてみてください。

https://www.nicnet.co.jp/next/assistclass/products/acdiary/index.html

前の投稿 >

カテゴリ

このブログはNIC社員が定期的な(?)更新を行っています。
各担当者は普段の業務の合間をぬってブログの記事を作成していますので、日付順で表示した場合にはいろいろなカテゴリがごちゃまぜで表示されます。
カテゴリ別の表示をしていただくと、ひとつの流れとして読みやすくなると思います。

月別アーカイブ