ラベル お知らせ の投稿を表示しています。 すべての投稿を表示
ラベル お知らせ の投稿を表示しています。 すべての投稿を表示

毎日更新終了のお知らせ

2011年2月18日金曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

ブログはこの先も続けますが、今後の更新頻度は毎日ではなく不定期にします。

理由はご存知のとおり(?)、ここのところ実質毎日更新ができていないことにあります。最近は子育て他で以前に比べるとプログラミングに割ける時間がぐっと減ってしまい、ブログを書く時間もなかなか取れなくなってきました。またブログを書く為にアプリ開発に時間が取れないという本末転倒な状況に陥ってきたというのもあります。

今年の2月で毎日更新が満3年を迎えてちょうど節目を迎えたことと(*1)、毎日更新を始めた当初の目的である「Cocoaの勉強を習慣化する」というのが果たせたということもあり、このタイミングで毎日更新を終了することにしました。

ブログを続けることで SimpleCap を完成することできたし今では iPhone/iPad アプリ開発の仕事もするようになって Cocoa を使う機会も増えました。そういう意味でもブログを続けて時間を費やしてきたことは無駄じゃなかったと思ってます。


更新頻度は低くなりますが
今後もまたよろしくお願いします。

Hiroshi Hashiguchi (@xcatsan)


(*1) 2008年2月から開始、今年までに書いたエントリは 1,100ぐらい。

Cocoaの日々 - 2011年元旦

2011年1月1日土曜日 | Published in | 2 コメント

このエントリーをはてなブックマークに追加

あけましておめでとうございます。
本年もよろしくお願いします。

今年も元旦は自分のことについて思いつくままに少し書きます。


昨年


昨年は前半に妻の入院、双子の誕生と大きなイベントが続き、後半は子育てに追われてプライベートでは忙しい一年でした。一方仕事ではHTML5ベースのWEBアプリの新機能開発や初のiPhoneアプリ開発に携わることが出来てそれなりに充実した経験がつめたと思います。

このブログ執筆を含む趣味のプログラミングは、前半にSimpleCapの多言語版をリリース出来たものの、その後は成果らしい成果が出せず低調だったと反省しています。双子が生まれてからというものの完全に子育て中心の生活になった影響は大きくて、趣味のプログラミングに時間が取れないだけでなく度々ブログの更新もサボって遅れてしまう日々が続きました。昨年はホントに看板に偽り有り状態でした。。時間が取れない、更新ができないという状態はノドに刺さった小骨の様で少なからずストレスがあったかなと振り返ると思います。


朝プログラミング


ただ9~10月ごろから赤ちゃん達が育ってきて少し息がつけるようになったのと、朝プログラミングを始めるようになってから状況が改善してきた。朝プログラミングとは、毎朝出勤の1〜2時間前に会社近くのカフェへ行き朝食を食べながらMacBook Pro を開いてプログラミングすること。その分早く起きなければならず毎朝5〜6時に起きて暗いうちに出勤するという生活になりましたが、プログラミングが出来る時間が取れる!という嬉しさは何事にも代え難く大変ということは全くありませんでした。

カフェでは毎朝お決まりのモーニングを頼み、窓際のカウンター席でトーストをかじりながらニュースをチェック、その後iPhoneのRADIKOでInterFMのバラカンモーニングを聴きながらGitのブランチを切ってプログラミングを開始、なんてことが日課になった。あまり多くの事はできないので、毎回小目標を立てて達成できればコミットしてマスタへマージする。ここまでできるとその日は朝から気分がいい。出勤後の仕事も気分良く始められる。朝プログラミングが出来るようになった副産物として、帰宅した後に子供達の事、家庭の事に専念するよう気持ちの切り替えが出来るようになったこともある。こうして、ちょっとした生活スタイルの工夫だけれど、このブログと趣味プログラミングと家庭の両立を今後も続けて行く自信がついたのは昨年一年の一番の収穫かもしれない。ただ難点はMacBookProが重くて持ち運びがやや難儀なこと。Lionが出た後にAirモデルが出たら欲しい。。


カフェプログラミング


朝プログラミングとは別に、月に一度土曜日などの休日に都心へ出かけて朝から夕方まで一日中カフェでプログラミングするようになりました。カフェは1日に何件かをハシゴします。これは集中できてかなりはかどる。ただカフェは場所を選ぶのが重要。駅や繁華街から少し離れた所や休日は人の少ないオフィス界隈にあるスタバがオススメです。人が多いところは集中しずらい。場所は東京駅、秋葉原、新宿が多い。この前試した池袋のスタバは人が多くて失敗だった。それはさておき、一日休みをくれる妻に感謝!



今年の趣味プログラミングの目標


  • SimpleCap1.3と1.4をリリースする
  • 個人制作のiPhoneアプリを一本リリースする
  • Ruby On Railsを使った情報サイトを構築して公開する


最後に


今年もこのブログは毎日更新[*1]をモットーにやって行きます。これからもよろしくお願いします。
(2011年1月1日自宅にて。赤ちゃんを片腕で抱っこしつつもう一方の手で3GSを握り執筆。校正はMacBookを使用)

[*1] 実際は毎日更新ができずに後から日付だけ辻褄を合わせている時もありますがそこはご容赦を^^;


参考情報


(旧) Cocoaの日々: Cocoaの日々 - 2010年元旦

ネイリスト向けアプリ hair Concierge(ネイル・コンシェルジェ)が公開されました

2010年12月31日金曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

ネイリスト向け顧客管理 iOS 向けアプリ「hair Concierge(ネイル・コンシェルジェ)」が AppStore で公開されました。

先日公開された「hair Concierge(ネイル・コンシェルジェ)」の姉妹版となります。今回もプログラミングで参加しています。以下技術解説。


アーキテクチャ


プログラムのほとんどは前回リリースの hair Concierge と同じものを使っている。大きく違うのはマスタデータとデザイン。その他、一部のコードでそれぞれ独自の処理が入っている箇所がある。これらを Xcode に複数のターゲットを導入して一つのプロジェクトで管理するようにした。
ターゲットを切り替えることで作成するアプリを切り替えている。

デザインは構造やサイズは同じだがそれぞれのベースカラーに合わせて変えてある。これらを管理する為に、それぞれのターゲット用に Resourcesグループを用意し、実フォルダもそれぞれ作成してある。
画像ファイルのターゲットはこんな感じ。これでターゲット毎に使用する画像を切替えられる。
一部異なるインターフェイスを持つ部分は同名の Nibファイルをそれぞれ用意し、画像と同じくフォルダとターゲットを分けて管理する。


注意点など


2つのアプリを1つのプロジェクトで管理するにあたり、ファイルの名前を変えたりしたのだがそれが原因でいくつかのトラブルが発生した。詳細については以前紹介したのでそちらを参照のこと。

Cocoaの日々: [iOS] プロダクト名を変えてはいけない
Cocoaの日々: [iOS][Mac] CoreData - マイグレーション[4] モデルファイルの構成


参考情報


Cocoaの日々: 美容師向けアプリ hair Concierge(ヘア・コンシェルジェ)の技術解説


- - - - -
ブログ更新がなんとか年内に間に合った。それでは良いお年を!

[お知らせ] サンプルソースコードのライセンスについて

2010年12月21日火曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

当ブログに掲載しているソースコードのライセンスはこれまで明記してきませんでした。もともと無許可で自由に使ってもらって良いと考えていたのですが、たまに利用についての問い合わせがくるのでライセンスを明記した方が良いと思い始めました。

ライセンスの候補としては MIT ライセンスを考えています。
Open Source Initiative OSI - The MIT License:Licensing | Open Source Initiative

MIT License - Wikipedia


他のサイトから借用したコードもあるのでその扱いは個別に考えますが、基本的にこのブログで公開しているソースのライセンスは MITライセンスにしたいと思います。

後日また正式にブログで告知します。またその時以降はソースコードのコメントにもライセンス表記を付けるようにしようと思います。


何か意見やアドバイスがあれば是非教えて下さい。

では。

美容師向けアプリ hair Concierge(ヘア・コンシェルジェ)の技術解説

2010年10月11日月曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

私が開発に参加した初めての iPhoneアプリがリリースされました。美容師向けに特化した顧客管理アプリです。


知人の会社から無料アプリとして公開されています。

写真などのサンプルデータが初めから用意されているのでダウンロードすればすぐに試すことができます。美容師では無い人も無料なので良かったら試してみてください。アニメーションを使ったちょっとしたギミックが盛り込まれたアプリになっています。効果音も付いているので試すときは音も聴いてみてください。


アプリの紹介は公式サイト他に任せるとして、このブログではアプリで使った技術的な内容について紹介します。


体制と期間


  • 開発はプログラマ1人、デザイナー1人、ディレクター1人の3人体制
  • 私はプログラマとして参加
  • 期間は実質3ヶ月くらい
  • 開発の為に MacBookPro を新調し開発

以下、技術トピック。



顧客リスト



スライドアニメーション
顧客情報をタップするとボタンと詳細情報が載ったトレイがスライドして現れる。UITableView のセルの高さを変えるだけでいい具合のアニメーションができる。

検索機能
UISearchDisplayController を利用している。以下,関連記事。
Cocoaの日々: UISearchDisplayController 調査
Cocoaの日々: UISearchDisplayController と NSFetchedResultContoller を組み合わせる (3) 考察
Cocoaの日々: UISearchDisplayController で用意される UITableView を扱う上での注意点
Cocoaの日々: UISearchDisplayBar を初期状態では隠しておく

未登録時
顧客が未登録の場合、専用のカスタムセルを用意して表示している(通常のセルと同様フリックして上下に動かせる)。


顧客情報


カスタムセル
UITableView でカスタムセルを用意し外観をすべて独自のデザインにしている。


他の画面も同じカスタムセルを使ったデザインとなっている。




ヘッダの開閉


UITableView上の開閉する画像は UITableView.tableViewHeaderを使っている。UITableView.tableViewHeader は表示後に高さを変えても見た目が変化せず、アニメーションしない。それをうまくアニメーションさせて開閉しているように見せるためにダミーセルを使う。
Cocoaの日々: UITableView のヘッダの高さを変える(その2:アニメーション)


カルテ詳細


カスタムセルに、カスタムセクションヘッダを使用。


(旧) Cocoa Touch の日々: NSFetchedResultsController でグルーピング(Section分け)


カルテ情報


2ステップアニメーション
ヘッダをタップすると2ステップで開閉するアニメーションが始まる。



横並びサムネイル画像の循環スクロール

横並びサムネイル画像は以前紹介した実装が入っている。この横並び画像は指で循環スクロールし、一定時間操作が無いと自動的に横スクロールが始まる。
Cocoaの日々: 画像を横に並べたスクロールビューアの作成 [1] アイディア



カルテ設定


上段の選択状態によって「詳細設定」のドロアーが上下に開閉する。



設定 - 使用状況とエクスポート


CSV作成とZIP圧縮
CSV生成後に ZIP圧縮してメール送付する。


Cocoaの日々: Objective-Zip を使って ZIP圧縮する
Cocoaの日々: 拡張子から MIME Type を取得する
メールへファイルを添付する際に指定する MIME type を取得するのに利用。

Cocoaの日々: CoreData - 大量データを扱う場合のメモリ利用量を減らす
仕様として掲げた 6,000件のカルテデータの CSV書き出し時にメモリ不足でクラッシュした問題の対応方法。

Cocoaの日々: ファイル書き出し
Cocoaの日々: CSVの改行コードなど


オリジナルダイアログ



Cocoaの日々: 下からせり上がってくる非モーダルなカスタムダイアログを作る (2)二段構え


画像ビューア





Cocoaの日々: UIScrollView - 拡大縮小
Cocoaの日々: UIScrollView - フリックで画像(ページ)をめくる
Cocoaの日々: ステータスバー、ナビゲーションバー、ツールバーを半透明にする
Cocoaの日々: 簡易スライドビューア [1]基本動作


画面ロック


パスコード入力で3回失敗すると表示される。「ギリギリ」と音を立てながら中央のシャッターが閉まる。UIImageViewのアニメーションで実現。



画像系


Cocoaの日々: iOS4からデバイス毎・解像度毎に用意した画像を自動選択する仕組みが導入された


効果音系


Cocoaの日々: 効果音を鳴らす

Cocoaの日々: 効果音販売サイトの紹介と iTunesを使ったMP3からAIFFへの変換方法

Cocoaの日々: オーディオフォーマット変換 afconvert


UITableView


Cocoaの日々: UITableView - 編集モードで左側のアイコンを消す

Cocoaの日々: UITableView の背景に画像を表示する


日付関連


Cocoaの日々: NSCalendar - 2つの
日付間の日数を取得する



NSFetchedResultController


アプリのリスト画面はすべて NSFetchedResultController を利用している。

Cocoaの日々: NSFetchedResultsController のおさらい

Cocoaの日々: UISearchDisplayController と NSFetchedResultContoller を組み合わせる

Cocoaの日々: NSFetchedResultsControllerDelegate を使う

Cocoaの日々: -[NSFetchedResultsController performFetch:] でクラッシュ


データ


Core Data を使っている。マスタは XML で用意しバンドルしている。

Core Data 集計系
Cocoaの日々: CoreData - 最大値をもつ NSManagedObject を取得するコード見本

Cocoaの日々: CoreData - 集計関数

Core Data モデリング
Cocoaの日々: Core Data - Unidirectional Relationships(単方向関連)について

Core Data その他
Cocoaの日々: -[NSFetchedResultsController performFetch:] でクラッシュ

その他、紹介してきたすべてがノウハウとして使われている。
Cocoaの日々: Core Data
(旧) Cocoaの日々: coredata
(旧) Cocoa Touch の日々: CoreData

マスタ
XMLでバンドルしている。Category.plist のイメージ。



アニメーション


遅延実行の Blocks化は2ステップアニメーションなどで役立った。
Cocoaの日々: 遅延実行を Blocksで記述する


その他


Cocoaの日々: Xcode - Build And Analyze

Cocoaの日々: Xcode - Build And Analyze 〜 問題の例

Cocoaの日々: Subversion で @ を含むファイルを扱う

Cocoaの日々: NSUserDefaults - アプリケーション出荷時設定

Cocoaの日々: アプリのバージョン番号を取得する(メモ)


Xcodeプロジェクト構成


おまけで公開。




お世話になった本




UIKitでやりたいこと、困ったことがあればこの本が役に立つ。




最初の一歩を踏み出すのに役立った。




表題・表紙と裏腹に意外と実用的。




広く浅くだが実用的でなかなか役立つ。

サイトをリニューアルしました

2010年6月13日日曜日 | Published in | 0 コメント

このエントリーをはてなブックマークに追加

サイトをリニューアルしました。

これまでは Mac OS X プログラミングを専門に扱ってきましたが、最近は iPhoneプログラミングを仕事でやっていることもあり、どちらかというと書けるネタが iPhone寄りになってきました。さらにプライベートでの忙しさもあり、Mac OS X だけではなかなか毎日更新ができなくなってきたので、この際 iPhone情報も統合しブログを継続することにしました。ついでにデザインも変えたかったので今回サイトをリニューアルすることにしました。

旧サイト)
Cocoaの日々
Cocoa Touch の日々

旧サイトは自分でも色々と役立つので閉鎖せずに残しておきます(ただ新旧区別がつくようにタイトルに「旧」をつけておきます。


スタイルは以前と変わりませんが、当面は iPhoneプログラミング関連の話題が多くなると思います。
今後ともよろしくお願いします。
橋口

人気の投稿(過去 30日間)