2012-01-01から1年間の記事一覧

RESTfullな汎用APIサーバjsonengineで超簡単にBBSを作ってみる

iOS5よりNSJSONSerializationという標準で扱えるクラスが追加され、Objective-CとJSONは非常に相性がよくなった気がします。CoreDataも構造型ストレージ感が強いのでなんでもJSON-Object変換でという流れになりそうな予感です。サーバ側も昨今ではGraph API…

Remote Push Notification ASPサービスを試す

iOS

iOSのリモートプッシュ通知はアプリを起動していなくても能動的にユーザーに対する情報が送れるため、サービスへの動線を確保する上で非常に有効です。アプリのバージョンアップの通知に利用するだけでもユーザー離れを防ぐことができます。 リモートプッシ…

SWWDCでCoverFlowネタを発表してきました

iOS

以前のエントリーで紹介した「UITableViewでラウンドロビン的な無限スクロールCoverFlowを作る」をSWWDC(仙台iOS開発者勉強会)で発表してきました。 UITableViewで無限CoverFlowを作る from Hidetoshi Mori 今回もgdgdですがライブコーディングに比重を置い…

大学で臨時講義してきました

今年も室蘭工業大学でソフトウェア工学の臨時講義を行ってきました。毎年ご紹介いただいている佐藤さんには大変感謝しています。 今回は学部2年生対象だったので難しい内容にはあまり突っ込まず、ソフトウェア工学にほとんど関係のない内容ですが興味を引き…

UITableViewでラウンドロビン的な無限スクロールCoverFlowを作る

「UITableViewでCoverFlowを作れるか?」というネタに興味が湧いたのでちょっとやってみました。 UITableViewハックちなみに、iOSのCoverFlowについて調べてみると下記のようなframeworkが見つかりました。 FlowCover (http://www.chaosinmotion.com/flowcov…

サーバから自由にカスタマイズ可能なメニューを実装する

メニューの項目や階層構造をアプリのリリース後に自由に変更できるようにしたいことがあります。 基幹系アプリの場合によくある理由として 常時通信環境で運用するわけではない 運用してみないとよりよいメニュー構造がわからない iOS技術者ではない運用者が…

iOS6のSocial.frameworkを試してみた

iOS6からFacebook、微博(Weibo)、Twitterを統合したSocial.frameworkが追加されました。例によってAOuth認証などの面倒な手続きは全てiOS側で行なってくれるので投稿だけであれば、数行のコードで実装が可能です。 iOS5から追加されたTwitter.frameworkは廃…

スクロール追跡バナーを作ってみた

スマホに最適化されたWebサイトでよく見かけるスクロールについてくるあのバナーを、あえてネイティブで実装してみました。あくまで技術的なネタであってわざわざこういった実装をする目的はアレなので実際にAppStoreの審査でどうなるかは不明です。方法とし…

スクロール追跡バナーを作ってみた

スマホに最適化されたWebサイトでよく見かけるスクロールについてくるあのバナーを、あえてネイティブで実装してみました。あくまで技術的なネタであってわざわざこういった実装をする目的はアレなので実際にAppStoreの審査でどうなるかは不明です。方法とし…

スクロール追跡バナーを作ってみた

スマホに最適化されたWebサイトでよく見かけるスクロールについてくるあのバナーを、あえてネイティブで実装してみました。あくまで技術的なネタであってわざわざこういった実装をする目的はアレなので実際にAppStoreの審査でどうなるかは不明です。方法とし…

assetsディレクトリのストレージ展開

リソースとして管理したくないデータ(常時メモリ展開したくないデータ)をassetsにディレクトリ構成で配置して、起動時にストレージに丸ごとディレクトリコピーを実装してみましたが、AssetManagerの制約、ファイルサイズ制限等で色々と難儀したのでメモし…

暗号化zipを利用したストレージ管理

Androidアプリはapkをapktoolなどで展開できるのでasset, res内のデータは比較的簡単に覗き見ることができます。今回は配布データの隠蔽化の目的でパスワード付きzipを試してみました。 Android用のパスワード付きzipの解凍モジュールは下記のサイトのモジュ…

UITableViewをStoryboard上でStatic Cellsみたいに使ってみる

Static Cellsはコード量が極端に減り非常に有効ですが、UITableViewController上でしか使えない制限があるためカスタマイズしにくい欠点があります。UIViewControllerにUITableViewを載せてできるだけStoryboard上で定義する方法を紹介しました。 UIViewCont…

Storyboardについて発表してきました

SWWDC 仙台iOS開発者向け勉強会で Storyboard について発表してきました。 今までInterfaceBuilderすら毛嫌いして使ってこなかったのですが、他の開発者の方から便利になったと聞いて色々と試してみました。現段階ではデメリットはあるものの、メリットの部…

緊急時に10秒でマルチ送信できる無料アプリ「生存連絡」をリリースしました

東日本大震災から1年が経ちました。あらためてお亡くなりになられた方々のご冥福をお祈り申し上げます。当日、私は仙台市で務めていた会社のビル8階で地震に見舞われたのですが、今までに体験したことのないような状況でおそらく一生忘れることはないと思…

Blocksの活用法について

iphone_dev_thk 仙台iOS開発者勉強会! 2012/3/3 にて「Blocksの活用法」について発表してきました。内容はBlocksの基本的な部分の説明と下記の3つのソース解説です。 iOSコーディングスタイルを変えてしまうBlocksKitの紹介 Blockを利用し使いやすくUITabl…

ATND暦のソースコードを公開しました

ATND暦のアップデート版がApple審査が無事通過し公開されました。だいぶバグも落ち着き安定したので晴れてver1.0としました。今回のアップデートはWeb版のATNDカレンダーと同じく7日数以上続くイベントを表示しないようにしました。日数はオプションで変更…

Blockを利用し使いやすくUITableViewをカテゴリで拡張する

UITableViewについて実装の経験がある方は使いづらいと感じたことがあると思います。UITableViewDelegate、UITableViewDataSourceのデリゲートパターンのサイクルは覚えてしまえばすむ話ですが、実装後のメンテに苦労する人も多いのではないでしょうか? 下…

Dropboxを利用したOTA配布方法

開発したiOSアプリを自分以外の人にテストしてもらいたいことがあると思いますが、その際、AppStore経由インストールでなくとも起動が行えるAdHoc配布という方法を行います。AdHoc配布の前提として、インストールする実機のUDIDを事前にiOS Provisioning Por…

iOSコーディングスタイルを変えてしまうBlocksKitの紹介

iOS4からBlockが導入されました。利用目的としてはDelegateパターンと大差ないと思っていますが、処理記述が呼び出し元で記述できることで可読性が高くなります。 また、コールバック時に利用されるperformedSelectorが非常に使いづらく複数の引数となった場…

AutoUnboxingの落とし穴

久しぶりにJavaをデバッグしてて思わぬところで悩んだのでメモ。久しぶりのJavaネタです。 String s = convHoge(p.id); スタックトレースを確認するとこの行でNullPointerExceptionが発生していました。メソッド内のトレースは含まれていないので間違いなく…

アプリ内でパスワードロック機能を実現する

「アプリ内で無操作状態時にパスワードロックする」といったようなことを実装してみました。 PCで言うところのスクリーンロック機能はiOSにもありますが、基幹系システムのアプリ等の場合はセキュアなものが要求される場合があります。Webの世界ではSession…

インタラクションデザインの考察

先日、ソラコムさんの協力を得て第22回仙台スマート勉強会にて発表させていただきました。 私は絵を書けないプログラマなんですが、開発者視点で設計(デザイン)をどう考えるべきかをテーマにインタラクションデザインの考察という内容で行いました。予想…

iPhoneアプリをHTTPデバッグする方法

PC上でWeb開発する場合のHTTPデバッグ方法としては色々とあります。 例えば、FirefoxのFirebug、IEのFiddler等のブラウザプラグインを利用する方法、横取り丸等でHTTPプロキシとしての利用方法があるのですが、iPhoneアプリではネイティブで直に動作するため…

Xcodeを使わずに起動アイコンを実機で確認する方法

iPhoneの起動アイコンは114px (iPhone3GSだと57px)と解像度が小さいため、いざ実機に入れると文字がつぶれたり色が予想と違っていたりします。通常アプリとして実機に入れるにはiOSデベロッパープログラムライセンスやらXcodeが必要となり、環境を作るにもデ…