2014年7月10日木曜日

コードを書く上で、最近気をつけている事について

ここの所、思う所ありコーディングのスタイルを改善しようと思い立ってます。
7月は”コード美化月間”です。

という訳で、気をつけようと思っている事を列挙します。
・インデントの徹底
Pythonですと、普通に書いていれば割りとインデント合うのですが、obj-cはインデントキチンとしてないと後で非常に読み難いです。PHPも徹底すると可読性がグッと上がるので、特に気にして書いています。

・メソッドの機能コメント
メソッドの先頭に機能のコメントを英語で短く書く様にしました。こうする事で、Xcode6Betaで出る自動補完が効かない不具合を回避出来るってのが一番の理由ですが、副産物として考えが整理されるというメリットを発見しました。(英語苦手なだけに)
割と良いかもと思うので習慣化したいです。

・1行コメント
1行コメントで1行使うの辞めました。コードの末尾に書く事に徹底。すげースッキリ。

・"=>"とか"->"とか"="とかの扱い
例えばなんですが、
  
    public  $hasOne     =   array(
                    'hoge' =>  array(
                        'className'  =>  'UserInfomation',
                        'foreignKey'  =>  'user_id',
                        'conditions'  =>  'hoge',
                        'fields'  =>  'fuga',
                        'order'  =>  'hage',
                        'dependent'  =>  false
                    )
こんな感じの所を、こんな感じに直します。
  
    public  $hasOne     =   array(
                    'hoge' =>  array(
                         'className'  =>  'UserInfomation',
                        'foreignKey'  =>  'user_id',
                        'conditions'  =>  'hoge',
                            'fields'  =>  'fuga',
                             'order'  =>  'hage',
                         'dependent'  =>  false
                    )
ラインが揃って超スッキリ。後で読む気になります。
書き直している時に見直しが入るので、間違いも見つけやすいです。

あとは、リスト内包表記で複雑な書き方しないとか、SQL文も改行入れて読みやすくするとか、後で人が読んでも恥ずかしく無い様なコードを書く習慣付けをしています。
地味なんですが、レベルアップして行く為にも必要な事だってのが何となくわかって来たので。

まあ、成果物そのものよりも、多分心がけの問題なのかなとは思いますが、いい習慣だとは思うのでなるべく続けて行きたいなぁと思っております。

2014年7月6日日曜日

iOS開発向けのコマンドラインツール、Nomadが便利そう。

ナゾの背中痛で薄ら死にそうになってるんですが、久々のブログ更新です。

アプリ開発の方が色々と入り組んで来たので、色々省力化の手順を模索していました。

こんな本読んでみたりとか、(ちなみに結構いい本。オススメ)webで情報漁ってみたりとか、まだまだ色々模索中です。

そんな中で、やりたい事、必要そうな事が朧げに見えて来ました。
何をしたいかっていうと、
・似た様なアプリを複数リリースする為に、Assets(素材)やクラスをターゲット毎に切り替えたい。
=> ビルドターゲットの切り替えで、1つのプロジェクト内でバージョンの少しずつ異なるモノを別々に管理出来る。
=> 共通コードはそのままなので、アップデート時の事故が減る。
=>  それでも不安なので、テストを書く。
=>  ターゲットが増えると、手動でビルドしまくるのは非常に面倒だし時間も掛かる。
=>  CIツール導入検討、もしくはビルド用のシェルスクリプトを書く。

と言う訳で、CIツールを導入検討すると、オンラインで出来るCIサーバとか結構あるんですよね。しかも無償でBitbucket連携とか。
でもでも、それはwebに限った話。そもそもMacでないとiOSのCIサーバ立てられません。コンパイル出来ないからね。なんで、オンラインは無理。
そろそろ、開発用のPCもガタが来てるので、Mac miniを予備機で購入してCIサーバにあてようかと検討していたんですが、そこはちょっと保留。設定に時間取られるのがシンドイ状況なので、とりあえずもう少し時間が出来てから。
じゃあとりあえずビルド用のスクリプト書きますか、という流れです。

実はXcodeはコマンドラインツールは完備していて、シェルスクリプトでビルドからリリースまで一環して行う事が出来ます。ここにテストの工程を挟めば立派なCIの流れが実現可能です。
まずは、テストはXcode上で行って(そもそもまだ一部しか書いてない。)配布、リリース用は個別にスクリプトを書く事にしました。
つーても、コレが結構面倒です。何か楽にする方法無いのかなーと思ってたらありましたよ。こんなのが。

http://nomad-cli.com/

一言でいうと、普通に考えられるiOS開発用のコマンドライン操作を使いやすくまとめたツール郡です。機能別に都市名が付いてて、Cupertinoはアカウント管理関係。Dev Centerの操作とかが可能。HustonはPush通信のトークン周り。(コレ地味に有り難い。)
DubaiはPassBook発行関連。VenisはIn-App-Percheceの管理周辺。Shinzhenはアプリ配布やリリース関連と、イイカンジで揃ってます。
特に、Shinzhenはビルド完了時にTestFlightで配布とかを自動化出来たりします。
ただ現状やりたい事に完全にマッチするかといわれると問題があって、簡易な使い方を目指してるのでビルドターゲットの指定が出来ないです。
なので、ここはちゃんとXcodebuildでビルドスクリプト書くしか無いっぽい。残念。

とはいえ、結構使えそうなツール郡なので、活用してみますよー。

例えば:
Automator君でフォルダアクションを作成して、連携して走るshにコレ書いとけば、フォルダにipaファイル放り込めばテストフライトにアップロードとか簡単に出来る予感。


そんなお話でした。