気ままにプログラミング(仮)- iPhoneアプリ開発者の日常

何でもないアプリ開発者の思いつきやら開発メモやら。ときどきエセ哲学風なことを書きたがるのはご愛嬌。

祝!!『強力無音タイマー』総合無料ランキング20位獲得!!無料化ちょっぴり延長決定!!

昨日のかみあぷ速報様の掲載により、


iPhoneアプリ強力無音タイマーが、
総合無料ランキングで20位を獲得しました!!


いや、めっちゃビックリです。
めっちゃ嬉しいです。


これがどれぐらいのことかと言うと、
現時点で何とLINEのツムツムのダウンロード数を上回っております。


いや、今僕もやっているだけに、
感慨深いです。はい(笑)


そこで色々考えまして、

無料期間をちょっぴり延長

することに致しました。


今のところは、今日の24:00までにしようかな〜
とは思っているのですが、
タイミングは状況を見て変えさせて頂くことがありますのでご了承ください。
※うーん、夕方ぐらいまでにするかなぁ。悩み中・・・。


という訳で、ダウンロードするなら今がチャンス!!


強力無音タイマーをどうぞよろしくお願いしますm(_ _)m


祝!!『強力無音タイマー』かみあぷ速報掲載!!

先週の某日、突然かみあぷ速報の中の人から連絡が来て、
急遽『強力無音タイマー』の1日限定無料化が決定しました!!

僕のアプリの中で唯一の有料アプリ、
『強力無音タイマー』は、
ただいまから24時間に限り無料になります。

24時間を過ぎると有料に戻りますので、
もしお持ちでない方は、
是非是非ダウンロードしてみてください!!

⬇ダウンロードはこちら⬇


突然のご連絡で凄くビックリしましたが、
こうして紹介してもらえることは開発者として凄く嬉しいことですね。
たくさんの人に使ってもらえれば良いなと思います^^

ご紹介頂いた記事はこちらになります。
【24時間限定】100円→無料 もう電車で寝過ごさない!!最強バイブで叩き起こす『強力無音タイマー』が今だけタダ | iPhoneひとすじ! かみあぷ速報
凄く面白く紹介して下さっているので、
是非見てみて下さいね!


紹介記事にてリンクも貼って頂けたということで、
紹介記事からいらっしゃった方へ


Rusieは他にも各種無料アプリを作成しています。

今一番人気があるのが、

ですね。

iPhoneで撮った写真を壁紙にしようとして、勝手に拡大されてイラっときたことはありませんか??
このアプリは、写真をそのまま壁紙として使えるよう加工するアプリです。

結構便利だと思うので、
是非是非こちらも合わせてダウンロードしてみてください!!



次に人気があるのが、

です。

夜中なんかにiPhoneでネットなどを見ていると、ちょっと眩しく思うことはないですか?
設定で一番暗いはずなのに、結構眩しいんです。

このアプリでは、画面をかな〜り暗く設定することが出来ます。
また、お好みでブルーライトをカットすることも出来るので、
日中でも目に優しくネットを見ることが出来ます。

こちらもオススメなので、是非ダウンロードしてみてくださいね!!



他にも色々あるのですが、紹介し出すときりがないのでこの辺にしておきます(笑)

⬇アプリ一覧はこちら⬇
https://itunes.apple.com/jp/artist/sho-kurozumi/id796307880



なお、本ブログにつきましては、
開発日記と見せかけて、作者の個人的な趣味で妙になんちゃって哲学風です(笑)

紹介記事からのギャップに驚かれないよう、
どうぞご注意くださいませ(笑)

頑張らない方が長続きする

本当にもったいないことは、
一時に頑張り過ぎたせいで、
嫌になって辞めてしまうことだ。

何事も頑張りすぎないことが大事。

自分の身体がNOと言っているのに頑張ってしまうと、
『例えそれが自分の好きなことであったとしても』
身体が嫌な経験として学習してしまい、足が遠のく。

次に作業を開始することが出来なくなっていく。

長続きさせるためには、
疲れたらきっちりと休むこと。
しんどくなる前に辞めること。

頑張らないこと。

頑張るとは?頑張らないとは?

頑張るとは1mm進むこと。
1mm進んだら自分を褒めること。


頑張るってのは何も壮大な事を
成し遂げることだけを指す訳じゃない。

1mmでも1歩でも進んだら、
それは頑張ったって事だ。

だから自分のその頑張りを認めるべきで、
頑張った自分を褒めるべきだ。

鬱になりやすい人は、
自分の頑張りを褒めていない人じゃないかなと思った。

ナルシストな方は、自分を褒めまくるので
比較的成長しやすく、幸せそうなのかなと思った。

1mm進むって、作業に取り掛かりさえすれば
できちゃうレベルなんじゃないかと思った。

するとたまに聞く、
『頑張るのはおかしい。好きな事をやる時、人は頑張っていない。』
という言葉とも一致すると思った。

好きな事だから、ついやってしまう。毎日やってしまう。
すると、1mm進む。毎日1mm進む。
それを端から見ると、凄く頑張っているように見える。
それだけのことだと思った。

そんなに好きじゃない事でも、
1mm進めるだけと思えば、随分気が楽だ。
むしろ逆にやる気が湧いてくる。
1mm進むだけで自分を褒めていいんだもの。


そんなに頑張らなくてもよく、
やりさえすれば良い訳だ。


『頑張る』と言う言葉は抽象的で
いまいちしっくりと来ていなかったけれど、
今日ようやくちょっと分かった気がする。

なんだか色んな事にやる気が湧いてきた(笑)

なぜ経験が必要か?

知識はいくらでも書物から手に入るのに、
なぜ経験が必要なのか?

知識と経験は何が違うのか?

ちょっと考えてみたんですが、
割とわかりやすい答えになりました。

経験は知識を得るための手段のことであり、
書物などよりも、深い知識を得ることができます。

本から得た知識は荒く、
経験から得た知識は細かいんです。

たとえば、どれだけ自動車運転の教本を読んでも、
そのまますぐに運転することはできません。

何故なら実際運転してみて初めて分かるようなこと、
手足の動作の感覚であったり、心づもりであったりは、
なかなか文字で表現することができないからです。

中には数回乗るだけで運転できるようになる人もいるでしょう。
しかしそれは、経験から習得するのが上手いだけで、
やはり経験を通して知識を増やしているのです。

書物やインターネットで得る知識は、
便利ですがサポートレベルにしかなりません。

いろいろ経験していきましょう。

瞑想のススメ 簡単なやり方

人は無意識にモノを考えています。
ボーっとしている時もモノを考えています。
寝ているときも何か考えています。

だから瞑想が必要なんだろうなぁと思いました。

瞑想と言うとうさん臭くなりますが、
要は『意識的に頭を無にする作業』ってだけのことです。

自発的に瞑想をする事で、
初めて脳はモノを考えない状態に、
つまり最もストレスフリーな状態にする事が出来るのです。

ここから考えられる効能は、
単純に頭がリフレッシュする事がまずあるでしょうし、
何せ脳は体のすべてを司りますから、
身体的にも良い影響がみられることでしょう。

という訳で、瞑想のススメでした。


ちなみに簡単にやり方を紹介しておきますと、

1.心の落ち着ける場所で目をつぶり、
2.体をリラックスさせます。
3.何か考えが浮かんできたら「それは後で考えよう。」と後回しにします。

以上。その内、浮かんでくる事が減っていきます。

「あ、蝉が鳴いてるなぁ。」とかも考えの一つなので、
脳が何も処理しない状態を意識してやってみるといいですよ。

【カップラーメン】蒙古タンメン中本北極ラーメン【激辛】

近所のセブンイレブンが割と本気だった。

f:id:Rusie1001:20140805211746j:plain

ちなみにこの蒙古タンメン中本北極ラーメン。
流石に実店舗の北極ラーメンとまるで同じとはいかないものの、
辛さや旨味が結構近い。

つまり多分カップラーメン史上最高クラスに辛く、
実は中本ファンの僕も納得の一品です。
(前回の蒙古タンメンは個人的にはいまいちでした。)

食後数時間後に腹痛を催す可能性が本当にあるので、
是非お休みの日にでも食べてみてはいかがでしょうかw

役に立つ知識も活用しなければ、まるで役に立たない。

時勢柄、役に立つ知識は
簡単に手に入るようになったと思う。

しかし、役に立つ知識は、
聞いただけでは役には立たない。
使って初めて役に立つ。

「いいな」「使えるな」と思う情報を見つけたら、
出来るだけ早く使ってみることが大事。

使わなければ、当然役にも立たず、
すぐに記憶から消えてしまう。

役に立つ知識のはずが、
ただの時間の浪費になってしまう。

「いいな」と思ったら即実行!!
自分でも徹底していこう。

働く理由と労働者と経営者とアプリ個人開発者

生きるためには食べる必要があります。

食べるためには食料を調達する必要があります。

食料を調達するにはお金が必要です。

お金を得る最もメジャーな方法が、自分のレンタルです。

1時間辺り幾らでレンタルするのがアルバイトで、

1ヶ月当たり幾らでレンタルするのが正社員ってとこですね。


超当たり前のことなんですが、
これが働く理由ですね。


この当たり前のことから、
色々なことが分かります。


1.生きるつもりの無い人は働く必要がありません。
2.食料を自前で調達できる人は働く必要がありません。
(自然になっている木の実を取るとか。)
3.自分のレンタル以外でお金を稼げる人は働く必要がありません。


この3.が盲点でした。


今まで全ての人は同じように働いていると思っていたんですが、
自分をレンタルしている人と、誰かをレンタルしている人は、
全く稼ぎ方が違います。



A.自分をレンタルしている人は、あくまでレンタル料で稼ぎます。
B.誰かをレンタルしている人は、何らかの儲かる仕組みを実行することで稼ぎます。
(例えば誰かの釣った魚を買い取って、別の誰かに売り、差益を生むとか。)


このB.の儲かる仕組みを自分でやると、それは労働っぽく見えるのですが、
差益の許す限り、人をレンタルして、誰かにやってもらえれば、
B.は労働せずともお金を得ることができます。


当たり前のこと過ぎて、
何だか恥ずかしいことを言っているんじゃないかと
言う気がしてきましたが、


労働者と経営者は全く別物だということに、
あらためて気付いたってことです。


ここでちょっと僕のアプリ個人開発に話を当てはめてみると、
アプリの開発は自分の時間を使って行いますので、労働っぽいです。
ただ、開発されたアプリはそれ自体が労働者になります。

つまり、労働者を生み出すという労働ですね。

だから、労働者が十分に増えたら、アプリの開発と言う労働は
いずれ不要になることでしょう。

ただし、これはあくまで個人の場合の話です。
レンタルされた業務としてアプリ開発をしている場合は、
労働した時間に応じて収益を得ます。

個人の場合は経営者にも似た仕事なのかも知れないなと思ったわけです。


ちょっと取り留めも無い感じで書いてしまいましたが、
お昼にスーパーでご飯を食べながらこんなことを考えていました。

おまけ:儲かる仕組み

よくよく考えてみたら、これってかなり限られますね。

自分の物を、売るor貸す。

しかない気がします。

自分の物とは、
・買ったもの
・借りたもの
・学んだもの
・拾ったもの
・貰ったもの
・元々持っていたもの

ものとは
・物質
・データ
・知識
・技術
・時間

何だか商売の原点にたどり着いた気がします(笑)

おまけ:スキルとレンタル料

自分をレンタルする場合、自分にこれといったスキルが無いと、
競合のレンタルが多いため、買い手市場になります。

たくさんの人が「私の時間をどうぞ」と言っているので、
レンタル料が安くなっていってしまう訳ですね。

もし自分にレアなスキルがあったりすると、
競合が少ないため、売り手市場になります。

「この人を雇いたい。」と多くの人が考えるため、
最もレンタル料を払ってくれるところに行けばいい訳ですね。

で、目に見えて分かるスキルの代表が、
資格であったり、職歴であるということですね。

目に見えなくてもスキルはスキルなんですが、
今の日本の雇用現場では、
目に見えないスキルを読み取ることが出来ていないため、
資格やら職歴やら重視になっているのだろうと推測できます。

英語を聞き取れない理由と聞き取る方法

例えば日本語で突然、

「この間、 ばるだす が やべるで して みろまった よね?。」

と言われても、まず「え?」と聞き返すことでしょう。

この場合、
「ばるだす、やべるで、みろまった」の3単語が分からないからです。
音として聞こえたとしても、脳は単語に置き換えられないため、聞き取れなくなります。


次に、
「ばるだす、やべるで、みろまった」の3単語を知ってはいたけど、
発音を間違って覚えていたとしましょう。
「わるたす、よべるど、むろもった」のように。

恐らくこれでも、瞬時には脳はその単語を識別できず、聞き取れないことでしょう。

「この間、(略)」
「え?」
「ばるだすだよ!」
「ばるだす?」
「ばるだすだって!」
「・・・わるたす??」
「そう、ばるだす!」

こんな感じでしばらく問答してから識別できるでしょうね。
そして彼は「ばるだす=わるたす」と学習できたので、
今後は識別できることでしょう。

ということで、

単語を知っていても、正しい発音で知らなければ、その単語は聞き取れません。

ということで、どうすれば英語を聞き取れるようになるかと言うと、

最初から正しい発音で単語を学習すること

になるかなと思いました。

日本人の多くの人が聞き取りが苦手な理由が、
単語を正しい発音で覚えていないためと考えると、
個人的には大いにうなずけます。

具体的にどうするのが正しい発音で単語を学習する近道かまでは
まだ考えていませんが、
単語の発音を十分に意識することが、
英語を聞き取る上で大切なんじゃないかなと思いました。

不要な物や情報は人を不幸にする

必要な物や情報は人を幸福にし、
不要な物や情報は人を不幸にする。

不要な物や情報を退け、遠ざけることは
意図しなければできない。

捨てること、辞めることは
常々意識しておく必要がある。


・・・なんかちょっと違う気がするな。


全ての物や情報は、
基本的に少ないほど幸せなのかも知れない。

【ビルドエラー】GoogleAnalyticsとAdMobを両方実装しようとするとビルドエラーが発生する件

かつてGoogleAnalyticsとAdMobを両方実装しようとしたのですが、
Link Errorのため断念したことがありました。

今回、GoogleAnalyticsと別のSDKを実装しようとしたところ、
同様っぽいエラーが発生しました。

こんな感じの。長いですがそのまま貼ります。

Undefined symbols for architecture armv7s:
"_sqlite3_close", referenced from:
-[TAGDataLayerPersistentStoreImpl closeDatabase] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_prepare_v2", referenced from:
-[TAGDataLayerPersistentStoreImpl prepareSql:description:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_bind_int", referenced from:
-[TAGDataLayerPersistentStoreImpl deleteEntries:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_column_bytes", referenced from:
-[TAGDataLayerPersistentStoreImpl loadSerialized] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_errcode", referenced from:
-[TAGDataLayerPersistentStoreImpl prepareSql:description:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_bind_blob", referenced from:
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_column_blob", referenced from:
-[TAGDataLayerPersistentStoreImpl loadSerialized] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_step", referenced from:
-[TAGDataLayerPersistentStoreImpl clearKeysWithPrefixSingleThreaded:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl loadSerialized] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntries:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl peekEntryIds:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl numStoredEntries] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntriesOlderThan:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
...
"_sqlite3_errmsg", referenced from:
-[TAGDataLayerPersistentStoreImpl clearKeysWithPrefixSingleThreaded:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntries:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl numStoredEntries] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntriesOlderThan:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl tablePresent:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl openDatabaseAndInitStatements] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
...
"_sqlite3_open", referenced from:
-[TAGDataLayerPersistentStoreImpl openDatabaseAndInitStatements] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_reset", referenced from:
-[TAGDataLayerPersistentStoreImpl loadSerialized] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl peekEntryIds:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl numStoredEntries] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntriesOlderThan:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_column_int64", referenced from:
-[TAGDataLayerPersistentStoreImpl peekEntryIds:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl numStoredEntries] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_bind_int64", referenced from:
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl peekEntryIds:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntriesOlderThan:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_column_text", referenced from:
-[TAGDataLayerPersistentStoreImpl loadSerialized] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_bind_text", referenced from:
-[TAGDataLayerPersistentStoreImpl clearKeysWithPrefixSingleThreaded:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl writeEntriesToDatabase:expireTime:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
"_sqlite3_finalize", referenced from:
-[TAGDataLayerPersistentStoreImpl clearKeysWithPrefixSingleThreaded:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl deleteEntries:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl tablePresent:] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl openDatabaseAndInitStatements] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
-[TAGDataLayerPersistentStoreImpl closeDatabase] in libGoogleAnalyticsServices.a(TAGDataLayerPersistentStoreImpl.o)
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

再度、解決法を調査したところ、
こちらが見つかりました。

http://stackoverflow.com/questions/22832200/google-analytics-sdk-3-0-sqlite3-linker-errors-in-ios

要約すると、Linked Frameworks and Librariesに
libsqlite3.0dylibを追加すれば良いようです。

で、やってみたところ、
無事ビルドできました!!


今回は表題の2SDKと全く同じではないのですが、
恐らく解決法も同じかと思われます。

後ほど試してみる予定です。


しかし、こういうのは本当に日本語のドキュメントないですね。
気合で英語を読まないと詰みそうです。

プログラマは英語必須だなぁ。

淡々と言った方がよく伝わるという現象について考察

人に意見を伝えるとき、感情的に言うのではなく、
淡々と言った方がよく伝わるという現象があるのですが、

これは、淡々と伝えることにより、
ある種不要な情報が排除されるため、
そうなるのではないかと思いました。

例えば、

A「ここで靴を脱いで下さい!!!!!」(怒っている)
B「ここで靴を脱いで下さい。」(淡々と)

活字のため分かりにくいですが、
AとBの言い方をした場合、

Bに比べてAは、

『この人凄く怒っている。』

という情報が追加されます。

そうすると言われた側は、
『靴を脱ぐこと』『怒らせてしまったこと』『この人どうなんだろう』
など考えることが増えてしまいます。

考えることが増えれば増えるほど、
『意見』の占める割合は薄まります。

場合によっては、
『怒らせてしまったこと』ばかりに
意識が集中してしまうかも知れません。

このように、感情を入れて何かを伝えると、
『意見』と『感情』の両方が伝わってしまい、
『意見』だけを伝えるより効率が落ちてしまいます。

感情を入れて伝わるのは、
『意見』そのものではなく、
プラスアルファの『感情の強さ』です。

それゆえ、淡々と伝えた方が、
相手によく伝わることがあるのではと思いました。

人生を有意義に過ごす方法 / 有意義な人生の過ごし方

一生は今日一日の積み重ねに過ぎない。


今日一日を何万回か繰り返したものが一生である。


今日一日を有意義に過ごせないことは、
一生を有意義に過ごせないことに等しい。


無意味な一日 × 何万回 がその人の一生になる。


今日一日を有意義に過ごすことは
それほどに重要なことである。


何もバリバリと作業することだけが、
有意義な一日という訳ではない。


休養する目的でゆっくりすることもまた、
有意義な一日と言えるだろう。


何の目的もなく、漫然と時間を潰すことは
無意味な一日だろう。


目的を持って、時間を潰すのであれば、
それは有意義と言えるだろう。


今日一日を有意義に過ごそう。
そうすればきっと有意義な人生を過ごせるだろう。

// GoogleAnalyticsでイベントをトラックするための設定2/2