Development impression

この記事は開発者の個人的感想が綴られたものです興味のある方だけお読みください


世間はiPhone6やiOS8の話題でもちきりの中やっと新しいアプリをリリースできました
正直このアプリは予想以上に難しかったです途中で開発機のMacが壊れるというハプニングがあったり他にもいろいろやりながらですが思いついてからリリースするまでに半年以上かかってしまいました

最初のきっかけは単純なものでした私自身あんまりSNSへの投稿等はしないのですが送りたい写真があってその写真の一部を外に見せたくなかったのでその部分を簡単にぼかせるアプリを探していました

すっかりアプリが充実しているiPhoneですから無料で簡単にぼかせるアプリなんてすぐ見つかるだろうついでに撮影日時とかGPS情報も削除できるといいなと思って探してみたところ・・・
ぼかし処理の使い勝手が悪くてイメージ通りにぼかせないとかぼかし編集中にいきなり全面広告が出てきて邪魔されるとかブラシ形状とかパターン選択とか機能豊富でなんでもできるんだけどどうやったらぼかしができるのかよくわからないとか編集した画像を保存してみたら元々より小さいサイズにリサイズされぼかしてない部分の画質が悪くなっているとかあと撮影日時やGPS情報は一応削除されてるんだけど元々どんな情報が入っていてどんな情報を削除したのかちっともわからないとかそんなものばかりでした

えっこんなものなの? じゃあ自分で作っちゃおうかな~指でなぞったところをぼかすだけだったら簡単じゃない?あと撮影日時やGPS情報等のExif情報も確認して削除できるようにしようこれくらいなら早くて1カ月でリリースできるかな?
And it was this development began in the wishful thinking...

in、とりあえずiPhoneのスクリーンショットを指でなぞってぼかす処理は数日でできましたおっこれならすぐできそうと思って次はiPhoneのカメラで撮影した写真をぼかそうとしたところ・・・メモリを食い過ぎてアプリが落ちるどころか端末が突然リセットする事態となりました

ここで初めてこの手のアプリの難しさを知りましたiPhoneの写真が800万画素だから1画素4バイトで32Mバイトのデータこれをタッチと同時にリアルタイムでぼかし処理して更新してたらiPhoneじゃ性能が持たないだからみんな画質を落として編集しているんだなとわかりましたみなさん「こんなものなの?」なんて言ってすみません

なら実際の画像と別に表示用の画像を前に置いてタッチ中はその表示用画像をぼかし処理し実際の画像はバックグラウンドでぼかせばいいんじゃない?ってまた軽く考えて2重レイヤ構造で実装を始めたところ処理が数倍難しくなりました(>_<)。バックグラウンドで処理するにしても一度に1Mピクセル以上のイメージ処理をするとメモリ不足で動作不安定になるのでなぞった領域を1Mピクセル面積で分解して少しずつぼかすようにしていますこの適切なサイズを求めるのに2次元方程式を解きながら処理したりして毎日数学の図形の問題を解いて、100点取るまで居残り補習の連続という感じでしたそんな感じで2カ月くらいかけてやっと満足いくチューニングができましたがちょっと疲れてしまいこの開発はしばらく寝かせていました

その後ふと思いついてぼかし処理する時にタッチ開始時の色を少し加えたら消せる感じになるんじゃないの?と思ってやってみたところいい感じで消せるので名前を「フォト消しゴム」にして仕上げをしました
仕上げというかやるべき機能はたくさん残っていてUndo/Redo機能タッチしたポイントでポップアップするメニュー、Resize function、Trim function、Exif情報表示/編集機能チュートリアル等々結局それらだけでも2カ月はかかりました他にもやりたいことはあったんですが次期回しの予定にしてなんとかiPhone6発表の1週間前にAppleにレビュー申請しましたでもこの時期はやはり申請が殺到するようで本日やっとAppleにレビューしてもらってリリースできました。(レビュー依頼から10日かかりました。)

結局画像を送付する時にプライバシー情報がないか確認して消したいだけなのにまぁいろいろ苦労してます水鳥が水面上をすいすい気持ちよく泳いでいるように見えるのに水中では必死でバランスをとりながら水を掻いている感じです

まぁそんなことは気にせず編集とかぼかしとかしなくていいので画像をどこかに送付する時にはぜひ「Photo消しゴム」を通してプライバシー情報を確認してくださいね!

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *