ミウライフな1日

2012/12/08

12/7(金)はいろんなことが詰まった1日だったので、たまにはこんなブログでも。


09:00
昨日は、「英単語キッズ」のアップデート申請から1日が始まりました。ある方から報告を受けて見つかった「英単語キッズ」(※1)のバグを修正し、ほっと一安心。

※1「英単語キッズ」:onTheHammockでリリースした英単語学習ゲームアプリです。ダウンロードしてね。


10:00
12/16(日)に開催される「まちごとカルチャー@三崎」(※2)に出展したときに配布するチラシを制作。学級新聞的チラシになりました。お楽しみに!!

※2「まちごとカルチャー@三崎」:神奈川県三浦市の三崎を舞台に、ハンドメイドの作家や様々なジャンルのミュージシャンや、芸術家たちが三浦市内外から集まり、三崎をまるごと文化イベントで埋め尽くそう!というイベントです。
machical


12:00
高梨農場野菜直売所さん(※3)に行って、これまた「まちごとカルチャー@三崎」のブースに置く配布物を頂く。じゃがいも詰め合わせと黒丸大根を購入。なんと¥320!! 安いー! 店先に大根の葉っぱが入ったダンボールがあったので、「これどうするんですか?」と店長に訊くと、葉っぱをいらない人は切って置いていくという。もったいない!! 大根の葉っぱは美味いんですよ。そして店長の許可を得て、大根の葉っぱをいただきました。

※3「高梨農場野菜直売所」:三浦の有名野菜直売所。あまり見かけない珍しい野菜も売っていて面白いです。

takanashi farm


13:00
12/7にオープンした三崎の新名所「ミサキドーナツ」(※4)に初訪問!! こちらのお店はニューミサキパラダイス構想のもとに港町三崎のカフェ&バール「ミサキプレッソ」さんが開店されました。そしてドーナツはうちの近所のパン屋さん「三浦パン屋 充麦」(※5)とともに開発されたとのこと。
ドーナツはほぼ売り切れでしたが、きなこドーナツをゲット!! onTheHammockを「まちカル」に誘ってくれたIさんもランチで来てました。我々もボッサがBGMで流れる2階のイートインで美味しいコーヒーと一緒に食事。ドーナツはもっちり柔らかな驚きの食感。美味!! ちなみにMPの看板犬ミルトンの名前はブラジル音楽家ミルトン・ナシメントに由来しているそうです。センスいい!!

※4「ミサキプレッソ & ミサキドーナツ」:どちらもミサキ散歩には欠かせないお店です。MPでピザを食べながらワインを飲むのが最高!!
ミサキドーナツ

※5「三浦パン屋 充麦」:三浦で自家栽培した小麦を使ったパン屋さん。お店に入ったら、そのパンの香りにやられます。そしてバケットはしみじみ美味い。大ファンです。
mitsumugi


13:30
三浦商工会議所で青色申告説明会に出席。眠気と格闘するも大敗して青色吐息。隣でまじめに説明を聞いていると思ったonTheHammock経理担当のノートをのぞくと落書きであふれていて、うちの確定申告はけっこう大変なことになる予感。


15:00
三崎のシェアスペースkula(※6)に行くと、学生の菊地さんが店番をしていたのでお邪魔してお話。今度、onTheHammockで制作する「ミウラのアプリ」のコンテンツ(記事)作りについていろいろ相談。出来るだけ多くのコンテンツを載せたいので、手伝ってくれる方を募集しています!!
で、いろいろお話をしていたらkulaの運営者の1人でもある三崎の左官屋さん「左菊」の親方(※7)がやってきて、少しお喋り。ミサキドーナツを買いにいくも人気完売で、悔しがられていました。

※6「シェアスペースkula」:こちらも三崎のニュースポットです。三崎の情報発信基地となりそう。店内には訪れた人が未来の三崎について書いたコメントボードも設置されていました。
kula

※7「左菊の親方」:三崎で5代目になる左官屋さん。親方は泥だんご作りのワークショップもやっています。


16:00
「昼寝城 ミサキシエスタ サヴォリクラブ」(※8)の前を通りかかると、城主の寒川さんと奥さんが外で薪割りをしていました。立ち話をしていると、丸清製麺(※9)の石毛さん親子がミサキドーナツを買いにきましたが、やはり買いそびれて悔しがられていました。そして石毛さんから麺のおすそわけを頂く。石毛さんは、自分を三浦のFacebookグループに紹介してくれた人でもあり、そのFBグループから三浦の人たちとの交流が生まれました。感謝です!!

※8「ミサキシエスタ サヴォリクラブ」(通称:昼寝城):非アーバン型リアル隠れ家の会員制クラブです。さまざまなアウトドアツアーを提案する3knotさんが運営しています。クラブの2階でハンモックに揺られながら昼寝をしたら…その気持ちよさったら、ヤバイですよ。ほんと偶然なんですけどサヴォリクラブもハンモックをフィーチャーされていて、onTheHammockとしては勝手ながら親近感わきまくりです。超ねごこちいいハンモックも販売しています!!
savoriclub

※9「丸清製麺」:三浦オンリーワン製麺所!! 「城ヶ島ラーメン」「三崎まぐろラーメン」など名作多数。恒例の『麺まつり』の日が訪れると三浦の家庭は「麺の日」になります!(少なくともうちはそう!)
jogashima_ramen


16:20
薪ストーブで暖まりながら、サヴォリクラブで寒川さんと三浦三崎城ヶ崎のこれからのこと、これからやりたいことなどをアレコレとお話。いい感じです。ますますミウライフがおもしろ楽しくなりそう。アプリ屋として何ができるかをいろいろ考えねば。
あと寒川さんに教えてもらった新田次郎原作の少年ドラマ「つぶやき岩の秘密」(1974)が面白そう。三浦半島が舞台らしいです。
stobe


18:00
帰宅して、横須賀へ!


19:00
横須賀の名店!! 大衆酒場「銀次」で、元三浦海岸のドラマー&ガムラン奏者のエンディと呑み。わりと長々と楽しくのみました。プライベート方面で、いろいろあれやこれやを指南してもらう。銀次はアジのたたきと湯豆腐(銀次ならではの一品!!)がオススメです。


23:30
帰宅。AppMama(※10)さんがブログで「英単語キッズ」を紹介してくれて、大興奮!! 「MagicReader」「FusionCalc」などヒットアプリをリリースしているSTUDIO LOUPE(*11スタジオルーペ)のリオ・リーバスさんもTwitterで紹介してくれた!! 感涙!!
「英単語キッズ」リリース記念の「iPad mini」プレゼントキャンペーンは、以前リオさんが「iQ mirror」というゲームアプリのキャンペーンiPadプレゼントをやっていたのを知って思いついたものです。めちゃくちゃ嬉しい!! 感謝です。

※10 AppMama-iPhoneアプリ開発者の妻のブログ-:アプリ開発者必読ブログ!! うちの家人はこのブログを読んで、感心し、笑い、そして感動して泣いたりしています。
AppMama

※11 STUDIO LOUPE:数々の名作アプリを生み出しています。手を使わなくても電子書籍が読める「MagicReader」は国連が主催するWorld Summit Award Mobileを受賞!! 個人ディベロッパーとしてすごい快挙ですよ!!! 新作「Re-Notify:繰り返し通知」はこれでもか!とタスク通知をしてくれる実用性の高いリマインダーアプリです。
Renotify


24:00
喜びもつかの間、技術的な難題にぶつかる。なんつーか、開発者としてまだまだ未熟な自分に呆れる。そしてライトに家庭内冷戦。その後、ふて寝。


29:00

目覚めと同時に解決案がピッキーンと生まれる!! バッチリ成功!! またも「英単語キッズ」のアップデート申請!!! そして今日も1日が始まるぜ!!!!

eitangokids


最後に。昨日は東北で大きな地震がありました。3.11以降、楽しく充実した1日も一瞬にして壊れてしまうかもしれないということを僕らは知ってしまいました。いつ何が起きてもおかしくないという危うさが身近にあることを知っていながらも、もっとタフになって笑いながら生活していこうと思います。

onTheHammock・桑村治良


 

onTheHammockの1年

2012/12/05

先日、iOS Developer Programの更新を行いました。
考えてみるとキッズゲーム「CatchUpArcons」をリリースしてからちょうど1年です。
アプリレーベルonTheHammockもスタートして1年になります。

yagou

この1年は本当にいろんなことがありました。

開発したアプリは7つになりました。
オリジナルアプリは4つ、受託開発アプリが3つです。

オリジナルアプリであるキッズアプリ「CatchUpAcorns」経費審査ゲーム「CostSaver」街ナビアプリ「横浜西洋館散歩」の3本は自分のなかで実験でした。
もちろん公開するアプリとして真っ当なものを作るということは大前提でしたが、自分がスマホアプリ開発の分野でどのようなことが出来るのか、はっきり言えばこの世界で食っていけるのかを実験するという意図がありました。
大きな確証など得られるわけありませんが、少しの手応えはつかめたと思います。

これは意図していたわけではないのですが最初に作ったこの3つのアプリがonTheHammockの方向性を決めたようです。
今後リリースするonTheHammockのオリジナルアプリはキッズアプリ、エンターテインメント系アプリ、地域密着アプリが3本柱のラインになっていくと思います。

また3つの受託開発に携わることで、スマホアプリ開発のデザイナー兼エンジニアとして今後いろんな仕事に挑戦できそうな手応えが得られました。
その結果、スマホアプリ開発スクール「RainbowApps湘南校」の講師を務めさせていただくことにもなりました。

そして、11/30にリリースしたゲームで学ぼう「英単語キッズ」は4つめのonTheHammockオリジナルアプリとなります。「CatchUpAcorns」に続くキッズアプリのラインであり、Yummy、Cattie、Chicoという3人のキャラクターが登場する同じ世界観のアプリです。そして同じくシンプルな内容です。
シンプルであることはonTheHammockの根本にある思想です。そのアプリ自体をインターフェイスデザインで伝えることがonTheHammockの理想のアプリです。

icon

さて、スタートからの1年がめまぐるしく進んできたので、onTheHammcokの2年目がどのような年になるのか、安易に予想はできません。ただ、1年目で基礎(の基礎)は築けました。そして、自分たちのやりたいこともより明確になってきました。2年目のonTheHammockはそのやりたいことを1つづつ形にしていきたいと思います。

onTheHammock・桑村治良

12/22(土)、RainbwApps湘南校第2期プレセミナーで、「個人ディベロッパー、実際のところ〜オリジナルアプリ制作から開発受託までオモテもウラもお話します〜」という演題で講演させて頂くことになりました。ここではお話できない、ハードコアなonTheHammockの1年をお話したいと思います(笑)。ぜひ、藤沢におこしください!

RainbwApps湘南校第2期プレセミナー

開催日時:12月22日(土)15時30分〜
会 場:開催場所:藤沢産業センター
藤沢市藤沢109番地 湘南NDビル6階
費 用:無料
mail

■セミナープログラム

第一部:「スマホの波に乗り遅れる事の危険性」

イメージピット株式会社代表/RainbowApps横浜校代表 高橋良輔

第二部:「個人ディベロッパー、実際のところ〜オリジナルアプリ制作から開発受託までオモテもウラもお話します〜」

onTheHammock代表/RainbowApps湘南校講師 桑村治良


 

TestFlightでアプリを配布しよう

2012/12/02

TestFlightの使い方をスクリーンショット多めで紹介しました。

title
iPhoneアプリの開発をおこなう上で、開発メンバーとアプリをテストしたり、クライアントに公開前のアプリを確認してもらうのはどうすればいいでしょうか。いちいちテスト端末のあるところに、Xcodeが入ったMacBookを持ってインストールをしてというのは面倒です。iTunesを使ってテスターにインストールしてもらう方法もあるのですが、これも面倒な上に相手にそのやり方を説明するのも面倒で…。このような問題にひじょーに便利なのがTestFlightというサービスです。

TestFlightは開発中のアプリの配布をサポートするサービスです。アプリ開発者はTestFlightにアプリ(IPAファイル)をアップロードします。そうすると通知を受けたテスターは予め登録しているiOS端末から、そのアプリをインストールすることができます。

How It Works

1.TestFlightに登録

まずTestFlight(https://testflightapp.com)にアクセスし、ユーザー登録を行いしょう。管理者の方はDeveloperのスイッチを”オン”にします。

TestFlight

2.Teamを作成しましょう

TestFlight
テストアプリを配布する開発チームを登録します。開発チームはいくつでも作成することができ、後から追加も可能です。なのでプロジェクト単位で作成することも出来ますし、クライアントごとチームを作成することもできます。

3.チームメンバーを加えましょう

TestFlight
開発チームの登録をしたら、TestFlightからチームメンバー(テストアプリを配布したい人)の端末にメールを送ります。

4.チームメンバーにメールが届きます

TestFlight
TestFlightからチームメンバーにメールが届きます。今回はiPad端末を持っているテスター宛に招待メールを送りました。

TestFlight
TestFlightのチームメイト管理画面にはメールを送ったチームメンバーが表示されます。この時はまだチームメイトが「Accept」ボタンを押してないので、Statusは「Pending」となっています。

5.招待をうけたテスターがチームに参加する

TestFlight
招待メールをうけたテスターがメール上の「Accept」ボタンを押すと、TestFlightサイトに移動します。「Accept Invitation」を押してチームに入ってもらいます。

6.管理者にテスターのUDIDが記されたメールが送られる

TestFlight
テスターがiOS端末を使って「Accept」すると、招待を送った管理者にメールが送られてきます。このメールにはテスターの端末識別番号であるUDIDが記述されています。

7.開発者のプロビジョニングポータルにテスト端末を登録

TestFlightでアプリの配布を行うには、配布用にiOS Dev Centerでプロビジョニングファイルを作成しなければいけません。その前に、プロビジョニングポータルでテスト端末の登録を行います。
TestFlight
Provisioning PortalのDevicesを選択し、Add Devicesボタンを押します。テスト端末の名前とUDIDを登録します。
TestFlight

8.プロビジョニングファイルを作成し、開発者のXcodeに登録

開発用のプロビジョニングファイルを作成します。その際にテスト端末が「Devices」に加わっているかどうか確認し、チェックリストにチェックをします。作成したプロビジョニングファイルはダウンロードして、Xcodeに登録します。
TestFlight

Xcodeのプロジェクトファイルを選択し、Build SettingsのCode Signing IdentityをダウンロードしたProvisioning Profileを設定します。

TestFlight

9.配布用のIPAファイルを出力する

XcodeでテストアプリをArchiveします。問題がなければOrganizerが起動しますので、Distributeボタンを押し、「Save for Enterprise or Ad-Hoc Deployment」を選んでIPAファイルを出力します。このIPAファイルがアプリをiOSで動かすファイルとなります。
TestFlight

10.TestFlightにIPAファイルをアップロードする

TestFlight
さて、ようやくTestFlightに戻ってきました。ダッシュボードから「Add a Build」ボタンを押します。アップロード画面に遷移したら、IPAファイルをドロップしてアップロードします。
TestFlight

11.テスターにテストアプリをアップロードしたことを告知する

TestFlight
IPAファイルをアップロードしたら、Permissions画面へと遷移します。ここで通知するテストユーザーを選択し、「Update & Notify」ボタンを押します。このボタンが押されるとユーザーには下のようなメールが送られます。
TestFlight

12.テスターがアプリをインストールする

TestFlight
送られてきたメールにテスターがAcceptをすると、TestFlightへと遷移します。TestFlightにはアップロードされたテストアプリが表示されており、インストールボタンを押すとインストールが行えます。
TestFlight
TestFlightのActivity画面ではテスターがそのアプリをインストールしたかどうか確認することもできます。

最後に…。スムーズにいけば、これでテストアプリが配布されるはずですが、上手くいかないことも多々あります。例えばBundle Identiferがプロビジョニングファイルと合っていなかったり、Code Signingの設定がされてなかったり、これらのミスはなかなか発見しづらいので気をつけましょう。



Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

ジェスチャーフラッシュ:RainbowApps iPhoneアプリマスターコース講座紹介6

2012/11/29

06:ジェスチャーフラッシュ

Gesture Flash
RainbowApps iPhoneアプリマスターコースの第6講では、ジェスチャーフラッシュアプリの制作を行います。このアプリはスワイプ、回転、ピンチなどiPhoneのスクリーン上で行うタッチジェスチャーを出題し、ユーザーが実際にそのジェスチャーをしていくゲームです。問題はランダムで30問あり、ユーザーは30のタッチジェスチャーを完了するまでのタイムを競います。アプリ上ではハイスコアが1〜3位まで表示されます。

ジェスチャーフラッシュ

ジェスチャーフラッシュアプリは、第5講で制作したクイズアプリと同じくスタート画面、ゲーム画面、スコア画面で構成されています。画面遷移のためのSegueなどの使い方は第5講と同じです。Storyboardを使って3つのView Controllerを制作し、その上に必要なラベルや画像などを配置します。これはタイムを競うゲームなので、ゲーム画面の上部には経過時間を表示するラベルを設置します。結果画面には30のジェスチャーをクリアした所要時間が表示され、スタート画面には1〜3位までのハイスコアが表示されます。

ハイスコアはiPhoneの電源をオフにしても、アプリが終了しても保存されるものなので、アプリ自体にスコアデータを保存させるNSUserDefaultsを使用します。NSUserDefaultsはint、double、BOOL、NSDataなどの型の変数を使用することができますが、このアプリではハイスコアタイムを記録させるのでdouble型の変数を使用します。ユーザーがゲームを終えると結果画面に遷移し、そのタイムがベスト3に入っていればNSUserDefaultsで記録し、スタート画面では保存されているNSUserDefaultsデータを呼びます。

Gesture Flash

ユーザーがゲーム内で行うジェスチャーは8つです。
ゲーム画面では上の画像をランダムで表示させます。UIGestureRecognizerクラスのメソッドを使用し、ユーザーが画面に表示されたジェスチャーと同じジェスチャーをすれば1問クリアとなります。このアプリではこれを30回繰り返します。

ゲームのプレイ時間を計測するのにはNSTimerを使用します。ゲームスタート時点の時間を取得し、ユーザーが30問目のジェスチャーをクリアして、結果画面に遷移するときの時間が取得できれば経過時間を出すことができます。また画面上のタイマーは0.1秒ごとにラベルの数字を0.1カウントアップさせることで表示させます。

ジェスチャーフラッシュ

スマートフォンアプリは、ユーザーのタッチ操作によって直感的に扱えることが魅力です。このタッチジェスチャーを使いこなすことで、UXの表現も広がるでしょう。また第5講に引き続きゲームアプリを制作しましたが、第6講ではタイマーの扱い方を学びます。タイマーによる制御や進行はゲームアプリの基本となる技術です。

TEXT : 桑村治良(onTheHammock)



Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

クイズアプリ:RainbowApps iPhoneアプリマスターコース講座紹介5

2012/11/26

05:クイズアプリ

Counter
RainbowApps iPhoneアプリマスターコースの第5講では、クイズアプリの制作を行います。このアプリはランダムで10問の問題を出題し、ユーザーがそれに○か×で答えるゲームです。スコア画面では正解率と、得点に応じた評価画像が表示されます。
第5講のポイントはStoryboardを使った画面遷移の方法を学ぶことです。このアプリはスタート画面、ゲーム本編、結果画面がそれぞれ3つのViewControllerで管理します。スタート画面に設置されたボタンを押すと、ゲーム画面に遷移し、ユーザーが10問の問題に答えた時点でスコア画面に遷移します。スコア画面に設置されたボタンを押すとスタート画面へと遷移します。

クイズアプリ

上の画像がスタート画面→ゲーム画面→結果画面→スタート画面を繋いだStoryboardとなります。スタートボタンからゲーム画面への遷移はStoryboard上だけで設定できます。SegueでボタンからゲームをコントロールするViewControllerをつなぐだけです。結果画面からスタート画面への遷移もボタンをSegueでボタンからゲームをスタート画面を管理するViewControllerをつなぐだけで行えます。しかしゲーム画面から結果画面へと遷移するためには”ユーザーが問題に10問答える”という条件が必要となります。その遷移設定はStoryboard Segueで遷移のためのIdentifierを設定し、遷移するためのコードを書く必要があります。

この講義では3つのViewControllerクラスと、問題をCSVファイルを読み込み初期化して、ゲーム画面を管理するViewControllerに受け渡す独自クラスを制作します。
スタート画面を管理するViewControllerクラスには何も記述するコードはありません。Storyboard上でラベル、テキストビュー、ボタンを設置し、ゲーム画面の設定までおこなっているからです。

ゲーム画面を管理するViewControllerクラスでは、独自クラスから問題を受け取り可変配列を扱えるNSMutableArrayに格納します。この可変配列を使って、10問のなかで同じ問題を出すことなくランダムに出題する仕組みを作ります。問題が10問出題されたらperformSegueWithIdentifier:メソッドを使って、結果画面へと遷移するコードを書きます。この時にStoryboard上で設定したIdentifierが必要となります。またprepareForSegue:メソッドを使用し、ゲーム画面で取得した正答率を結果画面へと受け渡します。

結果画面を管理するViewControllerでは、正答率をゲームViewControllerから参照するpropertyに対応した変数を宣言し、正答率とその正答率に応じて画像を表示するコードを記述します。

クイズアプリ
この講座ではStoryboarを使った画面遷移と、CSVファイルの読み込み、そしてランダムに問題を取り出すテクニックを学べます。また、このクイズアプリを応用すれば、簡単にオリジナルアプリの作成をすることができるでしょう。Segueの使い方をマスターすることで複数の画面を使ったアプリの制作も行えるようになります。

TEXT : 桑村治良(onTheHammock)

Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

オン・ザ・ハンモック野外活動

onTheHammock ミウライフ 三浦+Life
2012/11/19

MIULifeミウライフ

冒険生活と野外活動:ミウライフ(三浦+Life)

onTheHammock(オン・ザ・ハンモック)では、定期的に野外活動を行っております。とはいっても、現在は趣味の範囲での活動です。メンバーが、アウトドアや自然が好きなことから、休日や夏休みを利用して、キャンプやトレイル、森林保全や農業ボランティアなどを行っています。


活動拠点が神奈川県三浦市のはずれなので、自然に囲まれています。作業所の庭には畑があり、採れたてのお野菜を使って、庭で焚火BBQなども行っています。また、太陽の光のもと、庭のハンモックにゆらゆらと揺られながら、ミーティングやアイディア出しを楽んでいます。

IT × 自然:バランス

作業場所から都内へ打合せへ行く時は、若干「旅」のような感覚です(笑)。都心(例えば渋谷)までなら、移動時間は、片道2時間弱かかります。しかし、onTheHammockの仕事(アプリ開発やウェブサイト制作、デザインワークなど)は、インターネット環境とMacさえあれば、どこにいても仕事が出来てしまいます。メールやSkype、LINEなどを使って、海外のクライアントともやり取りをしています。まさに、世界中どこにいても仕事ができる「ノマドワーク」的な働き方です。


大好きな自然に囲まれて、無駄のない生活を心がけていますが、これはITの進化があるからこそ、成り立つワークスタイル。 人間は自然(地球)と共存しており、このバランスが崩れると大変なことになりますね。人間が生活しやすいように、便利さの追求をとめどなく推し進めた結果、取り返しのつかないほどの自然破壊に繋がってしまったり…。


自然エネルギーをバランスよく利用するために、節電を心がける事は大切です。 しかし、電気がなくては現状の仕事や生活を維持できないのも事実です。インターネットの普及により、世界中の人々が簡単に繋がりを持てるようになったのは、やはり電気やITの発展があってのことです。ということで、自然にもITの進化にも感謝!

サバイバル経験の必要性:「生きる力」

アウトドア好きなオン・ザ・ハンモックは、「野外活動」を小学校の必須授業科目に付け加えるべきではないか?と考えます。年間数時間ではなく、週に1度でも良いと思うので、サバイバル&アドベンチャー活動を取り入れることで、こどもたちの「自分で考えて、自分で行動する力」が、身に付くキッカケになるのではないでしょうか。そして、私たち人間も『自然の一部』であることを体験して学べるのではないでしょうか。


オン・ザ・ハンモック設立後、初めての夏休みには、長野県と新潟県の山峡「信越トレイル80km」の踏破に挑戦しました。信越トレイルでは、2012年からテント泊が可能になったので(スタート〜ゴール間に、数カ所にテント場ができました)、テント泊で移動しながら、数日かけてトレイルを歩きました。


「信越トレイル」の詳細は、ブログにて公開して行きますが、この経験を通して、以前にも増して、「サバイバル経験」は生きて行く中でとても大切だと感じました。 現代では、料理や洗濯など全てがオートメーション化されて、ボタン一つでお湯を沸かすこともお米を炊くこともできます。


しかし、野外生活ではそういう訳には行きません。暖かくて安全な家ではなく、テント泊ですから、突然の豪雨や水源不足など、その状況に応じた判断力と行動が必要となってきます。 ”onTheHammock野外活動”では、それらを楽しんで行っていますが、雷や土砂崩れなどの自然災害は甘く見てはいけないので、真剣勝負でもあります。それが野外活動の醍醐味でもあるのです。


一度『便利で楽チンな生活』から離れて、原点に戻ってみると、日々当たり前のように使っている電気や水に対して、それらが供給されるのは当たり前ではないことに気づきます。そして、資源の大切さに気づき、私たちは全てが共存しあっていることを実感することが出来るのです。


また、ご飯や寝床が用意されていない野外活動では、それらを自分たちで決定し確保するわけですから、『自分で考えて自分で行動する力』が要求されます。まさに「生きる力」です。これは、サバイバル状況に限らず、人生のさまざまな日常的シーンで必要となる力です。


さらに、自然災害などでライフラインが断たれてしまった時、野外活動の基礎や知識を身につけておくことで、緊急時にどのような行動をとれば良いのか、対応しやすいでしょう。暖の取り方や寝床の確保、水の浄化方法や野に生息する食用植物などを知っているだけで、生死をわけることもあります。

今後の展開:こども達のために

私たちの持つITやデザイン技術を使って、何が出来るか?未来を担う子どもたちのために何を残せるか?出来ることは多々あります。オン・ザ・ハンモックは、自分たちの仕事や経験を通して、子どもたちに「私たちの地球のこと、人間と自然は共存していること、サバイバルテクニック(生きる力)」などを伝えて行きたいと思っています。大げさなことをやろうというわけではありません。楽しみながら逞しく自然と共存していきたいだけです。そして、そのような生活の楽しさや自然のなかで生きる知恵を伝えあって、一緒に学んでいけたらいいな♪と考えています。

onTheHammock:髙橋宰知子


STEP CAMP-アウトドア体験で災害時に役立つスキルを磨こう!のFacebookTwitterがスタートしました。よろしくお願いします!

STEP CAMP ステップキャンプ

 


 

手拍子アプリ:RainbowApps iPhoneアプリマスターコース講座紹介4

2012/11/15

04:手拍子アプリ

手拍子

RainbowApps iPhoneアプリマスターコースの第4講では、手拍子アプリの制作を行います。これはPickerというスロットのような選択メニューからカウント数を選び、ボタンを押すとそのカウント数だけ手拍子を繰り返すというものです。アプリとしてはあまり実用性は感じられないかもしれませんが、この講座ではオブジェクト指向プログラミング基礎概念や、クラス、インスタンス、メソッドの概念を学びます。これからObjective-cでアプリ開発をおこなっていく上では重要な講座です。

手拍子

オブジェクト指向型プログラミングを理解するためにこの講座では手拍子サウンドの初期化や再生、リピート処理を担う独自クラスの制作を行います。

オブジェクティブ指向

さて、なぜ独自のクラスを制作する必要があるのでしょうか?
ここで制作するような画面も遷移しないシンプルなアプリであれば、音声ファイルをコントロールする独立したクラスを作成する必要性はないかもしれません。インターフェイスを管理するView Controllerクラスに音声ファイルを再生する処理を書いてもいいと思います。
しかし、インターフェイス画面が切り替わるような複雑なアプリになってくると、各View Controllerクラスでいちいち同じ手順で音声ファイルを再生するためのコードを記述するのは面倒です。また、プログラムを管理する上でも機能を独立させておくほうがメンテナンスや更新を効率的に行えます。
このように目的や機能でクラスを作り、それが関連し合いながら全体を構成するプログラムを作っていくことをオブジェクト指向型プログラミングといいます。

例えば会社などに置き換えるとわかりやすいかもしれません。
個人の範囲で仕事をしていくのなら、個人事業主として営業・制作・販売・経理などを行っていくことができます。
しかし、事業の規模が大きくなってくると、営業部門、制作部門、販売部門、経理部門など機能ごとに分かれた部署が出来ます。もし経理の部署がなく、営業部門、制作部門、販売部門にそれぞれ経理機能を持たせたとしましょう。そうすると個々の経理担当者によって経理機能のクオリティは大きく左右されます。また、各経理担当者が知識やノウハウを共有するのも難しいかもしれません。独立した経理部署があれば、その機能に特化した知識やノウハウが蓄積でき、安定した経理機能を各々の部署に提供できます。

この会社の例えで言うところの部署にあたるのが、オブジェクティブ指向型プログラミングのクラスと呼ばれるものになります。

クラス、インスタンス

今回の手拍子アプリのように、エンジニアが独自のクラスを作成することも可能ですが、Objective-Cには既に知識やノウハウが蓄積された多くのクラスが用意されています。それが、これまでのアプリ制作でも使用してきたUILabelやUIButton、NSStringといったクラスになります。iOSアプリのプログラミングはこうした様々なクラスを利用し、自分でもクラスを制作して行っていきます。

そしてこのクラスを利用して、実際にプログラミングで使用するオブジェクトをインスタンスと呼びます。会社の経理部門でも実際に仕事をするのはその部署のAさんやBさんですよね。同じような作業をしているかもしれませんが、AさんとBさんがやっている仕事は異なります。このようにクラスに属して、個々の働きや役割を持つものがインスタンスとなります。

このインスタンスを使って具体的な操作をしていくことをメソッドと呼びますが、あらかじめObjective-Cに用意されているクラスには、メソッドやプロパティ(インスタンスに付加できる特性)も用意されています。
例えば第3講で使用した- (BOOL)textFieldShouldReturn:(UITextField *)textField;はUITextFieldというクラスに用意された、”キーボードのReturnを押したときに処理をする”というメソッドでした。
この第4講ではUIPickerViewクラスのメソッドを使ってピッカーの設定などを行っていきます。このような用意されたメソッドを使う上でも、Objective-c独特のメソッドの記述方法を理解しておくことは大事なことです。

手拍子

こうしたメソッドにはインスタンスに対しての処理を記述するインスタンスメソッド(-で始めるメソッド)と、クラスに対しての処理を記述するクラスメソッド(+で始まるメソッド)があります。
この講座では音声ファイルを再生するための独自クラスを制作しますが、View Controller上で独自クラスを呼び初期化処理を行うときに+で始まるクラスメソッドを使用します。

フレームワーク

さて、一口に音を再生するといっても、これはすごく大変な処理です。
そのためのプログラミングをイチから組んでいくとなると、膨大な時間が掛かり豊富な知識も必要になります。
そこで利用することになるのがフレームワークであり、音の再生や描画処理など汎用的な機能をまとめて提供しているものとなります。
今回、音を再生するためにはAudioToolBoxというフレームワークを使用しますが、そのためにはプロジェクトメニューからフレームワークの取り込み処理を行う必要があります。
しかし、なぜそのような便利な機能が最初から備わっていないのでしょうか?
今度はパソコンに例えてみましょう。購入したばかりのパソコンには基本的なソフトしかインストールされていません。この基本的な状態からデザイナーはデザインソフトをインストールし、営業マンはOfficeなどのビジネスソフトをインストールしたりして自分に必要な機能を付加していきます。使わないのであれば便利であってもIllustratorやPhotoshopなどのソフトは必要ないですよね。
フレームワークも同じで、Xcodeでプロジェクトを立ち上げたときには必要最小限のフレームワークしか使用されていません。そこから開発していくアプリの必要に応じて様々なフレームワークを取り込んでいきます。
フレームワークの利用はアプリ制作をしていく上でなくてはならないものであり、地図アプリやツイッター・Facebook投稿、さらには広告の設置などにも必要になります。

手拍子

第4講ではオブジェクティブ指向型プログラミングの概念だけでなく、while文やfor文を使った繰り返し処理、そして配列処理などプログラミングを行っていく上で頻繁に使用するテクニックも登場します。制作するアプリは非常にシンプルなものですが、その中身は非常に濃いものです。

繰り返しになりますが、第4講では独自クラスの作成、フレームワークの取り込み、UIPickerViewを利用を通じてObjective-cの基本となるクラス、インスタンス、メソッドの概念を学びます。Objective-cの概念や考え方は複雑であり、簡単に理解できるものではありません。ただ、このアプリマスターコースでアプリ制作を続けていくことによって少しずつ理解を深めていけるはずです。

最後により理解を深めたい方のためにリンクを紹介しておきます。
Objective-cの概念やオブジェクティブ指向型プログラミングについては様々な解説書がありますが、アップル社でも開発者向けのドキュメント(日本語です!!)を用意し、無料で配布しています。
そのものズバリ「Objective-Cの概念」なんてドキュメントもあるのでより理解を深めたい方は読まれることをおすすめします。
また、フレームワークの使い方などが書かれた日本語のプログラミングガイドなども用意されています。
iOS関連日本語ドキュメント https://developer.apple.com/jp/devcenter/ios/library/japanese.html

TEXT : 桑村治良(onTheHammock)

Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

ドル円換算機:RainbowApps iPhoneアプリマスターコース講座紹介3

2012/11/11

03:ドル円換算機

Counter

RainbowApps iPhoneアプリマスターコースの第3講では、ドル円換算機アプリの制作を行います。ユーザーがインプットした入力値を計算して出力値を出す、このフローを理解しプログラミングしていくことでメソッドの作り方、使い方などを学ぶことができます。

ドル円換算機アプリは、ユーザーがテキストフィールド(Text Field)に金額を入力し、キーボードの「Return」を押すと換算結果が表示されます。また、セグメンテッドコントロール(Segmented Control)により「ドル→円」換算と「円→ドル」換算の切り替えを行います。

まずStoryBoardでは動的なラベルを4つ配置します。

ドル円換算機

レートを表示するラベルの値はコード上で設定します。このアプリでは80.5円ですが、その時の通貨レートによって任意で変更することができます。
“円”と”ドル”の通貨ラベルは換算の切り替えを行った時に変化します。
結果ラベルには最初は0.00と入力しておきます。

さらにText FieldオブジェクトとSegmented Controlオブジェクトを配置します。

ドル円換算機

第2講座で制作したカウンターアプリは整数を扱うint型の変数を使用しましたが、今回は少数を扱うことができるdouble型の変数を使い換算を行います。

また「ドル→円」換算と「円→ドル」換算の切り替えをbool型の変数を使って、条件設定を行います。例えばbool型変数がTRUEなら「ドル→円」換算、FALSEなら「円→ドル」換算という具合です。この切り替えによりラベルに表示する通貨が変化します。

ドル円換算機

このアプリでは下記の3つのメソッドをコーディングします。
1.「円→ドル」「ドル→円」換算メソッド
2.通貨換算切り替えIBAction型メソッド
3.UITextFieldクラスのメソッド

1.「円→ドル」「ドル→円」換算メソッド

「円→ドル」換算が選ばれているときは、入力された円をレートで割った金額を計算し、その金額を結果ラベルに表示します。
【例】入力値:100(円) レート:1ドル80.5円 計算結果:1.24ドル
【計算式】100(円) / 80.5(レート) = 1.24(ドル)
※プログラム上では割り算の計算式は / (スラッシュ)を使用します。
「ドル→円」が選ばれているときは、入力されたドルにレートを掛けた金額を計算し、その金額を結果ラベルに表示します。
【例】入力値:100(ドル) レート:1ドル80.5円 計算結果:8050円
【計算式】100(ドル) * 80.5(レート) = 8050(円)
※プログラム上では掛け算の計算式は * (アスタリスク)を使用します。

2.通貨換算切り替えIBAction型メソッド

Segmented Controlの切り替えに対して、通貨ラベルを変化させます。また「円→ドル」「ドル→円」換算メソッドを使って、切り替えられた時の換算結果を結果ラベルに表示させます。
UISegmentedControlにはselectedSegmentIndexというプロパティが用意されており、セグメントの切り替えを管理することができます。

3.UITextFieldクラスの通知メソッド

テキストフィールドに金額を入力し、キーボードの「Return」が押されたときに呼ばれる処理です。
これは- (BOOL)textFieldShouldReturn:(UITextField *)textField;というUITextFieldクラスのデリゲート通知を使ったメソッドになります。
ユーザーが数字を入力しReturnを押すと、その数字をdouble型に変換し、「円→ドル」「ドル→円」換算メソッドを呼び出して結果を表示させます。

最後にStoryBoardでViewControllerで宣言したUILabel、UITextField、UISegmentedControlにひも付けします。またIBAction型メソッドもセグメンテッドコントロールにひも付けします。

これでドル円換算機の完成です。

ドル円換算機

この講座のポイントはメソッドの使い方を覚えることです。今回使用したUITextFieldクラスのメソッドのように、用意されたクラスメソッドも多くあるので、その使い方をよく理解しましょう。
iOSに用意された様々なクラスの機能を組み合わせることによってより高度なアプリを制作することができます。

TEXT : 桑村治良(onTheHammock)

Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

カウンター:RainbowApps iPhoneアプリマスターコース講座紹介2

2012/11/06

02:カウンター

Counter

RainbowApps iPhoneアプリマスターコースの第2講では、カウンターアプリを制作しながら、変数やインスタンス、UIオブジェクトなどの概念を学びます。また条件式や計算式を使用することによって、アプリを動かす仕組みを理解します。

カウンターアプリは「プラスボタン」を押すと画面上の数字がカウントアップされ、「マイナスボタン」を押すと数字がカウントダウンします。また「リセットボタン」を押すと数字は「0」になります。

Counter

この講座で理解したいポイントは数字をデータとして扱う場合はintやfloat、doubleといった型、文字列を扱う場合はNSString、ラベルはUILabel、ボタンはUIButtonというように、データの型を宣言し、コーディングしていくということです。

基本的なインターフェイス上のアクションメソッドは次の3つです。
1.「プラスボタン」が押されたらint型の変数に1を足します。
2.「マイナスボタン」が押されたらint型の変数から1を引きます。
3.「カウンターボタン」が押されたらint型の変数に0を代入します。

このint型の変数を画面上に表示するには文字列として扱わなくてはいけません。
なのでint型の変数をNSSTring型に変換し、画面上に配置したラベルに表示させます。

StoryBoardではLabelオブジェクトとButtonオブジェクトを3つ配置します。
各ボタンには対応するアクションメソッドを設定し、ラベルにはコード上で宣言しているUILabelをひも付けします。

Counter

以上が基本的なカウンターの仕組みとなりますが、この講座で制作する「カウンター」アプリはマイナスの数字は表示しないという工夫を施しています。
そこでint型の変数が0より大きいときだけ「マイナスボタン」が押されたときのメソッドを実行するという、if文を使った条件を設定します。

条件設定を複雑にすると数字によってラベルの文字の色を変化することも出来ますよ。

Counter

「カウンター」アプリの仕組みはシンプルなものですが、実用的なツールとして使用できるものです。プログラム上でデータを扱う基礎的な概念を理解し計算式や条件式の使い方を学べば、実際に使える簡単なアプリを作ることができます。

TEXT : 桑村治良(onTheHammock)

Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ


 

初めてのiOSアプリ:RainbowApps iPhoneアプリマスターコース講座紹介1

2012/11/04

一昨日(2012.11.3)、藤沢でRainbowApps湘南校が開校しました。
その湘南校のiPhoneアプリマスターコースの講師を務めさせていただくことになったので、このブログで講座の内容の紹介をしていきたいと思います。
受講生の皆さん、また今後受講される方の復習・予習のポイントになれば幸いです。

01:My Very First App -初めてのiOSアプリ-

MyFirstApp

RainbowApps iPhoneアプリマスターコースの第1講では、iOSアプリの開発を行っていくために必要なXcodeの基礎的な使い方を学びます。そのために画面上のボタンを押すと表示されている文字が消え、もう一度押すと文字が表れるというシンプルなアプリを制作します。

この講座でのポイントは、下記の3つです。
1.UI設計ツール「StoryBoard」を使った画面設計
2.記述したコードとUIオブジェクトのひも付け
3.アプリの設定

1.UI設計ツール「StoryBoard」を使った画面設計

Xcodeで新規プロジェクトを立ち上げたら、StoryBoardを使って、画像、ボタン、テキストを表示するためのラベルといったオブジェクトを配置していきます。

StoryBoard

2.記述したコードとUIオブジェクトのひも付け

次にUIViewControllerファイルにコードを記述します。
ここではインスタンスの宣言や、ボタンを押したときのアクションとして、if文を使い、”もしラベルが隠れていなかったら、ラベルを隠す”、そうでない場合は”ラベルを隠さない”というメソッドを書きます。
そしてStoryBoard上に配置したオブジェクトに記述したインスタンスとメソッドをひも付けします。

StoryBoard

3.アプリの設定

アイコンやiPhone画面に表示される名前、アプリが縦向き(Portrait)か横向き(Landscape)かを設定します。

MyFirstApp

これで「My Very First App」の完成です。
非常にシンプルですが、このアプリを制作することでXcodeの基礎的な使い方を学ぶことができます。

TEXT : 桑村治良(onTheHammock)

Rainbow Apps iPhoneアプリマスターコース講座紹介ブログ
講座紹介1:初めてのiOSアプリ
講座紹介2:カウンター
講座紹介3:ドル円換算機
講座紹介4:手拍子アプリ
講座紹介5:クイズアプリ
講座紹介6:ジェスチャーフラッシュ