Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2013-01-18

執筆、海外就職、その他もろもろについての近況報告

前職をやめて3週間ほど経ち、いろいろ進んだり滞ったりしてきたので、ここらで近況報告をさせていただきます。


iOSアプリ開発本の執筆

100個Tipsを載せるつもりで書いていて、1/18(土)現在の進捗状況は 16/100 です。


まったく進んでないわけではないですが、昨年末に立てた計画ではすでに 38/100 ほど進んでいるはずなので、えらい遅れてます


書く内容や書き方についていろいろ迷いがあって遅れてしまったのですが、こうやってちゃんと書いてみると、1日1本ずつノルマを増やしてやっとギリギリ間に合う、というレベルの遅れ。


迷うのはあとにしてとにかく書き進めます。。


Qiitaへの投稿

1/6〜1/10ぐらいに続けてQiitaに投稿していたネタは、実は書籍用に書いたものです。


http://qiita.com/users/shu223


中間アウトプットがあった方がモチベーションの持続になるし、技術的に変なことを書いていればツッコミもいただけるし、と思ってアップしてたのですが、Qiita自体が注目されているのもあって意外とアクセスがあり、本が出たときに「全部webで見れる ★1」みたいなレビュー書かれるとつらいので、ストップしました。


「限定公開機能」というのを知ったので、今後はそちらを利用するかも。

(今はローカルで書いてます。)



海外進出

パスポートの有効期限がちょうど切れるところだったので、切り替えとかしてたら1月出発は無理になり、2月前半出発になりました。


2月前半〜3月前半までスペインのバルセロナに行ってきます。主な目的は執筆と、(旅行ではなく)海外生活をしてみること。


なぜスペイン?

これはよく聞かれるのですが、あんまりまともな理由はないです。


寒いところは嫌だ、というのと、イギリスやアメリカなどの就職の本命となる国は(本を書き上げたあとに)英語の勉強をしてから挑戦したい、という事情があります。


あとは単純にいちど行ってみたかったというのが大きいです。


Airbnbでのアパート探し

バルセロナで住むところは Airbnb で探しました。


コンセプト自体魅力的なサービスですが、探す際にも予約する際にもいろいろ気の利いた細かい工夫があって、便利だし、ワクワクするし、安心にも配慮されているしで、サービスとしての完成度が非常に高いと感じました。


オンラインでの航空券探し

航空券もオンラインで取りました。


「オンライン予約機能を提供しているサイトは結構あるけど、どれも結局航空会社のシステムに接続してるわけだし、サイトがとる手数料なんて雀の涙みたいなもんだからほとんど違いはないはず。とりあえず大手で検索しとけばいいや」


と思ってたのですが試しにいろんなオンライン予約サイトで照会してみたら、違いは大アリでした。同じ航空会社/同じ便でも空席照会結果はサイト毎に全然違いました


あと使い勝手も全然違いました。HIS、スカイゲートは変なところでページ遷移しないので使いやすかったです。


最終的にはたまたま所望の便の空席があった「フリーバード」ってとこで購入。(この便はHISとスカイゲートでは満席、楽天トラベルではちょっと高かった)


スペインでの就職活動

もともと最初の海外滞在中は執筆だけでいいやと思ってたのですが、行き先をスペインに決めたあとに、「せっかく行くことだし、iOSアプリ開発の仕事があるならダメもとで受けてみよう」と思い立ちました。


そもそもスペインにどんな会社があるのか知らないので、LinkedInで「iOS」というキーワードで求人を検索。2つほどiOSアプリ開発を職務に含む求人がありましたが、スペイン語なので詳細不明。。


せっかくなので応募はしてみようと思います。


フリーランス的な活動

固定収入がいまのところなく、書籍の印税が入るのは遥か先の話、本命の海外就職はできるのかどうかすら怪しいというかまだ活動してない、という状況なので、ちょこちょこ個人で仕事をさせていただいてます。


キンコーズで特急名刺

「ごはんとFlash」というweb業界の人達が大勢集まるイベントでお仕事募集のプレゼンをすべく10分宣伝枠を買ったのですが、そもそも名刺がないという大いなる矛盾にイベント当日の午後に気付き、キンコーズに電話して3時間特急コースで名刺を作成してもらいました。


気になるお値段は100枚で3500円ぐらい。いままで名刺をつくったことないので相場がわかりませんが、こだわりのインクとか紙とかじゃないわりには高い気はします。。


ごはんとFlashでの発表

お仕事募集しております。



交通費精算

人に会うことが多くなり、しかも住まいが鎌倉なのでやたら交通費がかかります。ちゃんと経費にすべく「交通費精算」っていう有料アプリで交通費をメモってるのですが、デザインと、経路探索と連動していない点がとてもつらいです。


まとめ

  • 執筆遅れてるのでがんばります。
  • スペインにいってきます。
  • お仕事も募集してます。

2013-01-15

いまさら Git のブランチについて勉強したメモ

だいたい開発はひとりだったので、ローカル Git で master だけ使ってて不自由してなかったのですが、最近「ちょっとこれ試してみて」と言われたリポジトリを見てみたら、develop なるブランチを使用している。。


とりあえず git clone してみると、master を取りにいってしまい develop ブランチのデータは取れていない。


じゃあ、ということで develop ブランチを git pull してみたら、なんか怪しい雰囲気に。master に更新が入ってしまったっぽい。


調べてみると、下記の記事が見つかりました。


Git で新しいリモートブランチをローカルに持ってくるときに git pull してはいけない理由


git pull すると、現在のブランチにマージされる。すなわち、master を clone してきたあとで develop ブランチを pull すると、master に develop の内容をマージしてしまう、ということらしいです。危ない。


正しくは、git branch コマンドを使用するとのことです。


単に新しいリモートブランチを自分のローカルに持ってくるのであれば、下記のようにするのが正しいです。


$ git branch new-branch origin/new-branch

「git branch」コマンドに第2引数を与えると、それを起点にしたブランチがつくられます。


ただ何となく腑に落ちないので、git branch を実行せずもう少し調査を実行。下記にもっと詳しくて正確な情報がありました。


Git - ブランチとマージの基本


ブランチの作成と新しいブランチへの切り替えを同時に行うには、git checkout コマンドに -b スイッチをつけて実行します。


$ git checkout -b iss53

これは、次のコマンドのショートカットです。


$ git branch iss53
$ git checkout iss53

なるほど。


納得したので SouceTree で次のように選択してを実行。


f:id:shu223:20130501022317p:image:w500


ログを見てみると、この操作はこういうコマンドらしい。


git checkout -b develop --track origin/develop 

"--track" オプションは、


git checkout の --track オプションの意味


によると、


git checkout の --track オプションは、リモートリポジトリのブランチ X を起点にブランチ A を作った場合に、引数なしの git pull でブランチ X を fetch してブランチ A にマージできるように設定してくれる。具体的には branch.A.remote と branch.A.merge を設定してくれる。


とは言っても、git checkout のデフォルトの動作は --track オプションをつけたのと同じ。追跡しないようにするには --no-track オプションをつける。


重要な部分を太字にさせていただきました。そういうことらしいです。



また Git について勉強したら随時追記していこうと思います。



2013-01-14

『フラグメントシェーダー事始め』で勉強したメモ

OpenCVで実装した画像処理アルゴリズムを、OpenGL ESのフラグメントシェーダに移植しようとしていて、GPUImageに入っているフィルタのシェーダプログラムを参考として読み始めたものの、そもそもこのシェーダというものがよくわかってないので、下記の記事を読みつつ勉強してみました。


EZ-NET: Objective-C フラグメントシェーダー事始め


この記事は頂点シェーダについても基本から丁寧に解説されているのですが、以下は主にフラグメントシェーダまわりについて勉強になったことの抜粋です。


頂点シェーダとフラグメントシェーダ

どちらかを使うというわけではなくて、ポリゴンの頂点座標やテクスチャ位置などを元データとして、頂点シェーダーではポリゴンデータをクリッピング座標系に変換し、それを元に得られた画素データをフラグメントシェーダーが受け取って加工するという流れになるようです。


lowpとかhighpとか

精度の詳細はシェーダー言語や GPU に依存するらしいのと、詳しいことは解りませんが、シェーダー言語が演算する際にこの精度が影響してくるらしいですが、必要になったら気にしだせば大丈夫なような気がします。


0.0 から 1.0 で表す色のような情報であれば lowp で十分らしいですが、同じ 0.0 から 1.0 でも精度が必要になってくると mediump みたいな選択をするというお話もありました。


precisionは、データ型に既定の精度を設定したい場合に使うようです。

precision mediump float;

uniformとか

  • attribute:頂点シェーダーで、プログラムから受け取る変数に指定します。
  • uniform:頂点シェーダーやフラグメントシェーダーで、プログラムから受け取る変数に指定します。
  • varying:頂点シェーダーで代入して、フラグメントシェーダーでそれを受け取る変数に指定します。

texture2D(handle, xy)

テクスチャのある座標上の色を取得する関数。


gl_FragColor

フラグメントシェーダーで、ピクセルの色を決定する変数です。ここにセットされた色が、そのピクセルの色になります。


以上をふまえてGPUImageのビルトインフィルタのシェーダプログラムを読むと、処理内容がグッと理解しやすくなりました。


2013-01-07

仕事に集中するための仕組みづくり

今日からひとりで仕事なので、いろいろと Mac アプリや chrome 拡張入れたりして「さぼらない環境づくり」をしてみました。(これが既にさぼってるわけですが)


「なんとなく Facebook や Twitter を開く」の防止

プログラミングや執筆に行き詰まると、無意識のうちにメールや SNS を開いていることがあります。僕にとってあれはソーシャルゲーム以上に射幸心を煽られるものなので、それらを抑制すべく Chrome 拡張の WaistNoTime を導入しました。


f:id:shu223:20130107181232p:image:w300


もともと上記のような感じでサイトへの滞在時間のログをとって自分を戒めるつもりで入れたのですが、導入してみてから「Block List」と「Allow List」という機能に気付き、これが僕にとって理想的なサボり防止機能だったので、今はログはまったく見ておりません。


Block List の活用

Block Listの設定画面はこんな感じになっていて、


f:id:shu223:20130107183411p:image:w400


このスクリーンショットからもおわかりの通り、僕の場合は次の3つのURLをブロックリストに入れています。

*.facebook.com

*.twitter.com

*mail.google.com


これで chrome から Twitter や Facebook や gmail にアクセスできなくなります。(アクセスできる時間帯とか、何分までアクセスできるとか、わりと制約範囲を細かく設定できます)


僕がうっかりFacebookにアクセスしようとすると、こんなふうに怒られます。



f:id:shu223:20130107181235p:image:w300



アクセスするには別のブラウザを立ち上げるとか、設定を変えるとか、iPhoneにクライアントアプリをインストールするとかしないといけない(※)ので、僕にとって十分なサボり抑止力になっています。


(※)iPhone内のTwitterクライアントアプリ、Facebookアプリは、使うときに入れて、使い終わったら削除、という運用にしてます。常時入れてるとチマチマ見てしまうので。


Allow List の活用

調べものをしてて有用な情報とかがあればツイートだけはしたいので、Allow Listに次のURLだけ入れています。

https://twitter.com/intent/tweet

これで、Twitterへのアクセスは投稿だけ許可されることになります。


「いま何やってたんだっけ?」の防止

上記は割り込み防止の仕組みづくりだったわけですが、ちょっとでも何か別のことに気をとられると、本当にすぐに「何やってたんだっけ?」となってしまいます。


『リファクタリング・ウェットウェア』という本によると、「何やってたんだっけ」から前の没入状態に戻るために必要な時間(つまり頭の中に作業に必要な情報を再度ロードするための時間)は何と20分もかかると述べられています。



これは大いに心当たりがあるので、割り込みを減らすための対策はもちろんのこと、「何やってたんだっけ」からなるべく早く復帰するために次のように仕組み化してみました。


  1. DAY ONE を Alfred のホットキーに登録してキー1発で起動できるようにする
    • 僕は F3 に割り当てました。あと、設定から起動時にタイムラインビューが表示されるよう変更しました。
  2. 作業にとりかかる前に、DAY ONE に「今やること」(ToDoリストではなく、今からやること1項目だけ)を入力しておく。
  3. 「何やってたんだっけ?」となったら F3 で確認!

もっとこういう用途に特化したアプリがありそうですが。。



参考:

どこからでも入力して一瞬で同期するメモツール、Day One

これは便利!Macでのアプリ起動を楽にしてくれるアプリ「Alfred」


辞書へのアクセスを便利に

ハッカーな方々はコード書いてるエディタからコマンドうって辞書検索できるようカスタマイズしてたりするみたいですが、情弱な僕はブラウザ立ち上げて検索してました。


でもブラウザはいろいろ誘惑があるしそもそも面倒なので、 翻訳タブ (Translate Tab) という mac のメニューバーに Google 翻訳を常駐させるアプリを入れて、PopClip の Traslate Tab 拡張で文字選択したらそのまま辞書検索できるようにしました。


f:id:shu223:20130107181237p:image:w300





Time Sink で作業内容を定量化

Time Sink というのは、どの Mac アプリをどれぐらい使ったかのログをとってくれるアプリです。自分の場合は Xcode もしくはテキストエディタをさわってる時間を最大化することが重要だと思ってるので、その辺りを定量化すべく導入しました。


f:id:shu223:20130107181238j:image:w400


結局こういうログってあんまり見なくなる気がするのですが、このアプリはメニューバーからすぐにログを見れる menu bar mode というのがあるので、気軽にログ確認できるようになっています。


あと、毎日自動でその日のレポートを特定フォルダにエクスポートしてくれる機能がよさげです。(まだ一度も見てないけど)



参考:

タスク管理に使える!Macの作業ログをカンタンに取得できる「Time Sink」



2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 02 |