2015-06-01から1ヶ月間の記事一覧

Dependency Injectionが良い理由

Dependency Injection(DI)というオブジェクト指向言語のコーディングテクニックがある。 あるクラスAの中で他のクラスBのインスタンスを生成するのをやめて、メソッドの引数とか、Aの初期化時に引数としてインスタンスを渡そうというテクニック。 良いところ…

エンジニアの判断責任

エンジニアの特性としてなのか、僕個人の特性なのか不明だけど、非技術者から技術的内容を質問されると、できるだけ嘘のないように、正確に答えようとする意識が働く。 アプリの作り方が二通りあって、作業のコストとか作りのきれいさを考えると現実的に作り…

フレームワークの強制力

iOSやAndroidなどのモバイルアプリフレームワークのいいところの一つは、ずぶの素人が作っても、フレームワークレベルでの強制力が働くため、そこそこきれいなコードになること。 例えばiOSであればStoryboardというGUIでViewを書いていける機能があって、こ…

YAGNI:すぐに使わんもの作るなの理由

YAGNI - Wikipedia まさに言いたいこと全部wikipediaに書いてある。 「あとで使うだろうとの予測の元に作ったものは、実際には10%程度しか使われない。」 とあるけれど、新規事業つくるスタートアップの観点で言うと、仮にこの実際に使う10%に入ったとしても…

掘ってもなにも出てこなさそうなところ:iOS画面遷移の分岐

iOSで、ある画面から条件によって(ユーザの種類とか)別の画面に遷移させたくて、きれいに書ける方法ないかと思って考えたり探したりしてもなかなかいい方法ない。 そもそもsegueでやる方法の何が不満かというと、条件分岐で別画面に遷移させた場合って、遷移…

アンチパターンの良さ:パターンの再発明は難しい

今日作ったコードの、今日作った設計の、良い所を一般化してまとめておこうとするとすごく難しい。 それがほんとにベストの書き方だったかを検討するのって、他の可能性をできるだけ多く検討する必要があるので、自分より上級のプログラマと時間をとってペア…

受託開発と自社サービス開発の、システム開発の思想の違い

受託開発の場合、XXXという仕様のものを作るとXXX円払いますよという仕事なので、プロセスとしてまず「どういうものを作るか」という仕様を決める必要がある。 この仕様はできるだけ詳細に詰めておく方がよくて、(なぜなら後々曖昧な仕様に漬け込まれて作業…

アプリのweb APIをRailsで作った時のアンチパターン

①エラーメッセージしっかり作りこまなくても意外と大丈夫 HTTPエラーコードはRailsが勝手に吐いてくれるので(Not FoundとかUnauthorizedとか)、小さいチームでサーバもアプリも作る場合は意外と大丈夫。 ②配列の書き方統一する has_manyのデータの列挙の書き…

エンジニアのやる気を削ぐアンチパターン

エンジニアあるある。 ①つくったもの使わない 説明不要で、空振り感、虚しさ感がすごい。フィードバックからブラッシュアップという流れを経ることができないので、使った技術のメリット・デメリットを腹落ちして理解できないという面も☓ ②根拠の無い「決め…

スタートアップ社長のアンチパターン:人の話聞けない

小さい会社で社長と超接近戦でプログラマーやってたんで、感じたアンチパターンまとめ。 実際には社長に限らずとも仕事のパートナーに(特にプログラマーに)心地よく思ってもらうためのパターンであると思うので、応用が効くはず。 社長は非技術者である前提…

iOS画面遷移のアンチパターン2:条件分岐×条件分岐にならないようにする

ちょっと抽象的なんだけど、タブを3つ持ったアプリがあるとして、3つのタブで条件分岐がある画面遷移(4から7)を共有している場合を考えると、5,6,7に到達できるのは1,2,3すべてなので、パターンが掛け算になって増えてしまう。ので良くない。 例えば各タブか…

iOS画面遷移のアンチパターン:複数画面一気に戻る場合はmodal遷移使わない

UINavigationController使って、pushで進んでいくべき。 いや、UINavigationControllerてそのためにあるんだから当たり前じゃんと言われそうだけど、ところがどっこい遷移アニメーションがmodalの方がいいときとかはそっち使ってしまうことがよくある。だが…

最初はアプリの標準をカスタムしないほうがいい理由

カスタムクラスを作るってことは、実装だけじゃなく、以下のような手間(=コスト)がかかる ①設計する手間 ②テストする手間 ③実装したものをドキュメントする手間 ④バグ修正する手間 ①は、カスタムをする場合は標準のものを理解した上で、できるだけ運用コ…

Web的な感覚でアプリを作ると困る理由

静的なWebページのイメージでアプリを作ると非常に作りにくいパターンがある。 ①topページへもどるとか、特定の画面まで一気に戻るというのがつくりづらい 無理やりつくろうとすればつくれるけど、Webの感覚でハイパーリンクさせるだけでしょというのは違っ…

ホントはよくわからないMVC

RailsとかiOS SDKとか使ってるとデフォルトでMVCの親クラスがあって、下々の者はそれをありがたく継承してカスタムしなさいという風になっていて(実際下々なのですごくありがたい)、普段意識することがないんだけど、よくよく考えるとMVCのメリットって何…

リーンスタートアップ:なぜ作る前にコンセプトを実証するのが良いか

リーンスタートアップでは出来るだけ実装せず、必要最小限のものでコンセプトを実証するのが良いとされる。 スタートアップのシステム開発の場面で考えるとすごく賛成で、これは見事に逆をやってしまった失敗経験に裏打ちされている。 具体的には内部で仕様…