「たった一人の熱狂」を読んだ

読み取れたこと

  • 義理、人情、恩義を大切にしろ
  • 小さな約束でも無碍にするな
  • 熱狂できる仕事を見つけろ
  • 結果にこだわれ
  • 人はだますな
  • 安めを売るな。恩を売れ。

まとめ

http://spotlight-media.jp/article/122258070674086540を見て、興味をそそられて読んでみた。もともとすごく熱い人なんだろうと思っていたがこの本を読んでさらにその思いは強くなった。「たった一人の熱狂」というだけあって、この人はやることなす事全てに熱狂して生きてきたんだろうなと思う。

なかなか真似できない人生を歩んできているんだろうし、この人になろうとして真似しても普通の人はなかなか難しいんだと思う。そういう人だからこそこうやって本を書いて出版したりできるんだろうがここまで熱狂的な熱い文章を僕はあまり読んだことがない。1文字1文字にきっちりと魂を込めて書いているというか、確固たる自分というものを持っていて、自分の人生に絶対的なブレない価値観というものを持っていないとこんな文章は書けないんだと思う。

今日という1日は死から最も遠い日だ。1分後には、今より死に1分近づく。10分後には、今より10分死に近づく。僕は70歳で死ぬかもしれないし90歳まだ長生きするかもしれない。少なくとも今この瞬間は、死から一番遠い時間にいる。

本から抜粋したものだがこの文章が見城さんという人の生き方を一番表している文章なのではなかろうか。人はいつか必ず死ぬ。どうせ死ぬなら後悔しない人生を歩みたいと考えるのはふつうのことだろう。そこら辺を歩いている人間を捕まえて「あなたは死ぬときに後悔しないように生きたいですか?」と聞いたとして、「私は死ぬときに後悔したいです!」と答える人なんてほぼいないないだろう。大抵の人間は後悔しない人生を歩みたいと考えているものだ。

しかし、そう考えている人のなかで「あなたは死ぬときに後悔しない人生を歩めていますか?」と聞かれて自信をもって肯定できる人はどれだけいるのだろうか。どんなことにも妥協することなく、後悔しないように生きるなんてできるわけない。自分に厳しければ厳しいほど後悔はでるだろう。妥協なく自分を肯定するには毎日血反吐を吐き、これ以上に努力することは出来ないと自分が思えなければいけない。そして、今日一日血反吐を吐く努力をした次の日はそれを超える努力をする。その繰り返しができる人間こそ後悔しない人生を歩んでいると自信を持って言えるんではなかろうか。見城さんは自信をもって肯定できるように日々努力をしていて、その結果圧倒的熱狂が授かったんだと思う。

誰よりも熱く人生に熱狂しながら生きている人間が書いている文章を読める機会なんてそうそうないと思う。どこまでこの本を咀嚼して自分の中に取り込むことが出来たのかは分からないが、ここまで熱狂しながら生きている人間がいるからこそ社会は回るし人類は成長することが出来たのだろう。今までの人生を振り返ってきて、圧倒的な熱狂というものは存在せず今まで淡々と生きてきた気がする。ここまで熱狂していきたいとは思わないが少しは熱狂して生きてみるべきなのかもしれないと考えさせられた一冊だった。

android開発者がiPhoneアプリを開発するまでのメモ3

前回

storyboardを分割したい

    UIStoryboard *subviewStoryboard = [UIStoryboard storyboardWithName:@"SubView" bundle:nil];
    SubViewController *subviewController = [subviewStoryboard instantiateInitialViewController];
    [self.navigationController pushViewController:subviewController animated:YES];

グループの作成

  • Android Studioと違ってフォルダ構造をそのままxcodeのtreeで表示してくれるわけではない
  • Xcode内で表示順番を個別で持っているよう
  • 右クリックの[New Group]でフォルダ構造を作ることができる
  • あくまでXcodeの表示上の話なので、実フォルダが作成されるわけではない
  • 実ファイルはごちゃっとあるのでこれってどうなの?って思うけどそんなもんだろう。

libraryを管理したい

sudo gem install cocoapods
pod setup

// podfileの作成...

pod install

// podfileの編集...

pod update

category機能

データの永続化

  • androidで言うところのSharedPrefarence
  • UserDefaultsを使えば同じようなことができそう

他言語化

  • values-jaみたいなフォルダを作って・・・って流れではない
  • ローカライズが必要な文字列を表示する場所はNSLocalizedStringを使って作っておく
  • Localizable.stringをコマンドから作成
  • Localizable.stringの中身をいい感じに修正
  • コマンドラインで使ってる部分をひっぱってこれるのは楽そう
  • 参考:A-Liaison BLOG: iPhoneアプリをローカライズ(国際化対応)してみた

まとめ

とりあえずこれぐらいわかってれば既存ソースを見ても何となく分かるんじゃなかろうか。javaとobjective-cの言語の違いは既存ソースがあればなんとなくやりたいことがわかるからいいけど、UI使って画面遷移とかそのへんは言語じゃなくて固有の動作すぎるので新たに勉強しないといけないのがちょっとめんどい。まだまだ色々ありそうなのでなにかあれば追記していくつもり。

  • リンク

android開発者がiPhoneアプリを開発するまでのメモ2

前回

android開発者がiPhoneアプリを開発するまでのメモ1

Master-Detail Applicationを理解

delegate

  • 継承と思ってよさ気
  • hogehoge.delegate = self;で自分を指定してその中で必要な関数を記載してやるのが一般的っぽい

pragma mark – hogehoge

  • コメントみたいなもん
  • ここから何を書くかってのをコード上に表記するやつ

UISplitViewController

ViewControllerのイベント

awakeFromNib
xibとかstoryboardから起動された際に呼ばれる。onCreateみたいなイベント。
viewDidLoad
viewの読み込みが終わった時に呼ばれる。onResumeみたいなイベント。

Segue

  • NavigationControllerでの画面遷移で使う?
  • 画面遷移時のいろいろをやってるっぽい。

@property

UITableViewController

  • MasterViewControllerが継承してる奴
  • ListViewの拡張版だと思えば良さそう
  • viewDidLoadでLeftボタンとRightボタンを作っている。中身は見れば分かりそう。
  • Editボタン(editButtonItem)をおした時の削除できるようになるのは標準機能
  • commitEditingStyleでDeleteが押された時の挙動を指定している
  • insertもできるみたいだけどeditingStyleForRowAtIndexPathを指定しないといけない
  • defaultではdeleteのみ
  • 参考:iPhoneアプリ開発: 同じ UITableViewCell 上で Delete ボタンとプラスボタンを表示 | Passions, Skills, Market
numberOfSectionsInTableView
sectionが何個あるか返却する
numberOfRowsInSection
sectionにあるデータ数を返答する
cellForRowAtIndexPath
cellの中身を返答する。getView相当だと思う。今回は追加された時の日付を表示してる。

DetailViewController

  • detailItemで設定したやつを表示しているだけ
  • hで指定したproperty変数(こんな呼び方でいいのか?)はsetterを作ることができる
  • setterを使わなくても直接入れることもできる(今回の場合は設定時に処理が入ってるからだめだけど)
  • property変数はgetterとかでは_、それ以外ではself経由でアクセスするのがいいらしい
  • 参考:Objective-C – self.propertyと_propertyの違いと、使い分け方 – Qiita
        // どっちでもいける
        controller.detailItem = object;
        [controller setDetailItem:object];

まとめ

delegateの簡単な持ってきかたがよくわからない。javaのようにoverrideできる関数の一覧とか実装しなければいけない関数一覧とか簡単に作れてもいいと思うんでなにか方法があるんだろうと思われるがまだわかってない。

リンク

android開発者がiPhoneアプリを開発するまでのメモ1

今までAndroidアプリを開発していた僕がiPhoneアプリを開発するまでの理解のメモしていこうと思う。

開発環境&前提条件

  • Xcode6.2
  • Objective-C
  • Storyboard
  • autolayout
  • ARC

SingleViewApplicationを理解

何はともあれ作ってみる。

プロジェクトの作成

まずはプロジェクトの作成。以下をやるととりあえず出来上がる。

  • [File -> New -> Project]から[Single View Application]を選択

自動生成ファイルの説明

AppDelegate.h/m
Androidで言うところのApplicationだと思う
MainView.storyboard
layoutファイル。main_activity.xmlと同じと思えばいい
MainViewController.h/m
Viewを動かすためのソース。hがヘッダで、mが中身
info.plist
設定ファイル
main.m
アプリを起動するファイル。気にしなくていいと思う

起動の仕組み

  • main.mのmain関数が起動
  • main関数に記載されているAppDelegateクラスが起動
  • info.plistの[Launch screen interface file base name]に記載されたxibが起動
  • info.plistの[Main storyboard file base name]に記載されたstoryboardが起動
  • MainView.storyboardの[Custom Class]に記載されているClassが起動

storyboardにコンポーネントを配置

  • 画面右下のコンポーネントから配置したいものを持ってくる
  • 画面上でずらして調整してもレスポンシブにならない。端末の画面サイズによってずれる
  • 画面サイズは画面左上のアイコンの左から4番目を選択して出てくる[Simulated Metrics -> Size]からデバイスを選択することで変更できる
  • 位置調整はRelatvieLayoutと考えれば良さそう
  • Viewが表示されている画面下にいるアイコンたちで位置調整を行う
  • 一番左が要素同士の位置調整。親の中央とかViewの右側とか相対的な条件はここで設定する
  • 左から二番目で要素の大きさとか左に2px移動とかの絶対的な条件を設定する
  • 変更したら左から三番目の[Update Frames]で再描画しないとワーニングが出る

コンポーネントとコードのヒモ付

  • findViewByIdみたいにコードで紐付けを記載せずにUI上で紐付けを行うっぽい
  • 画面右上にある3つのボタンの真ん中をタップして画面をソースコードとstoryboardでわける
  • storyboardから紐付けたいViewを選択
  • 画面右上の一番右のアイコンを選択
  • なんか色々書いてあるやつの○を挿入したいコードの部分に持って行くと紐付けられる
  • 参照を持ってきたい場合は[Referencing Outlets]でもってこれる
  • 持ってきたものにeventを設定するわけじゃなくてeventもUI上で設定するっぽい
  • イベントを持ってきたい場合は[Sent Events]

h/mの使い分け

  • hは外部参照用のファイル。定義ファイル群となり、外部から参照する必要がある値、関数(public)をここに記載する
  • mは実装ファイル。関数の実装を記載する。private。

ボタンを押したらtextfieldの値を撮ってきてLabelの値を変更

@interface MainViewController ()

@property (strong, nonatomic) IBOutlet UILabel *label;
@property (strong, nonatomic) IBOutlet UITextField *textField;

@end

@implementation MainViewController

// 割愛...

- (IBAction)buttonClick:(id)sender {
    [self.label setText:[self.textField text]];
}

@end
  • buttonClickはstoryboard上で[Sent Events]の[touch up inside]と紐付けている
  • labelとtextFieldsは[Referencing Outlets]で挿入
  • propertyの値はselfで参照する

まとめ

とりあえずSingleViewApplicationはできるっぽい。あとはUIKitのAPIリファレンスとか見ながら必要に応じて記載していけばいいんだと思う。UI上で色々できるのは便利だけど、作ったあとにコードだけを見てどの要素とどのコードが紐付いているかがわからないのかはちょっと不便。いかに直感的な名前をつけるかでコードの読みやすさが大幅に変わりそうな予感がする。

リンク

「運を支配する」を読んだ

読みました。以下感想。

僕が読み取れた内容の箇条書き

  • 驕るな。自分はそんなに頭のいい人間ではない。
  • ただし、できないと悲観するな。ポジティブにやれ。
  • 運が無いと嘆くな。運は誰にでもいつか回ってくる。
  • 回ってきた時に掴み取るために日々淡々と努力して準備しておけ。
  • 運が回ってきて今が勝負だと思ったら死ぬ気で努力しろ。
  • 答えを求めるな。大抵のことに明確な答えはない。
  • いい人であれ。
  • 人に借りは作るな。貸しを作れ。
  • 失敗を悔やむな。俯瞰して失敗した原因を探れ
  • ただし、開き直るな。開き直るのは大抵の場合に悪手となる。

読み終わって思ったこと

一番心に残ったのは「物事には答えなんてない」ということ。たしかに実社会で起こる様々な問題には学校のテストのように明確な答えなんてない。人が変われば正解も変わるし、環境が変われば正解も変わるだろう。悩んだ末にたどり着く答えというのは現時点での自分にとっての最適解だというだけであって、それは絶対的な正解ではない。世の問題の答えは雲のように漂っていて見る角度や時間によって形は変わるものなのだろう。悩みに悩んだ正解もそれが絶対的に正しいということはないということを肝に命じて流動的に柔軟性を持って問題に向かい合い続けるのが大事なんだと思う。

文章的に読みやすく噛み砕いて書いてあるのでわかりやすいと思う。この間テレビを見ていて言っていたのだが大会社の社長ほど腰が低く驕らない人間が多いそうだ。自分はすごい人間だと思った時点でその人間の成長は衰退を始めるし足元をすくわれることも多くなるのかもしれない。「運がいい」というのは「勝負するタイミングを間違えない」ということだし、「運を手放さない」ということは「日々努力してチャンスを物にできる力をつける」ということなのだろう。本書でも記載されているがそう考えれば運が尽きるということはなく運は無限だ。何事にも近道はなくて近道を探せば運は遠のく。日々淡々と努力するのがあとから見ると一番の近道なのかもしれない。