「独立・起業」の基本と常識

今の職場はもう少し役職が上がると健康的にもOJT的にも100%詰むのがわかっているので、(異動、転職、独立含めて)選択肢を増やし始めている。

まぁ、今の仕事自体は120%自分の裁量に任せられているし面白いんだけど、上司が自分の仕事を理解できないので成果面談でイラッとするのと、健全な批判が受けられないので独善的になりがちなのがデメリットだ。そこは他社のヒトと積極的にディスカッションすればいいのかなと思っているので社外発表はそれなりにこなしているのだけど、それだったら今の仕事の延長として会社に属しているメリットがまったくないよなぁってのもある。

創薬研究も停滞感が漂っていて、いまの研究所のスタイルがサスティナブルかどうかも疑問に思うところが多いので、他のことも検討しなきゃなーと思いながら色々手を出したり出さなかったりしているのだけどねー。Drug Discovery Todayなんかもオープンイノベーションだとか分業だとか分社化だとか仕組みの組み換え論が結構出てるけど、製薬会社が創薬研究に必要なミニマムは、臨床やる部門とリードを臨床まで持っていく技術を駆使するフェーズだけであってそれより上流はベンチャーでもアカデミアでもやれることだからねー。

まぁ、だらだらと進めていこうかなという。

ProductName これだけは知っておきたい「独立・起業」の基本と常識
高橋敏則
フォレスト出版 / 1365円 ( 2012-09-08 )


  • 保険関係は退職日から2週間以内にすべて済ませる
  • 日本政策金融公庫の融資制度
  • 印鑑の種類
  • すべての事業者が必ず作成するのは税金に閑する届出書類
  • 家族従業員に給与を払うときに出す届出

Template Haskellと準クォートのお勉強

Template Haskellと準クォートの違いがわからないというか全体的にぼやけた理解というかあまり理解していなかった(THの説明見ているとTH=QQみたいな印象を持ってしまうので区別がつかない)ので、3連休の最終日はTHってた。

ちょっと前にモナド内包表記で遊んでいたので、

[|...|]

とかいう記法はなんかの型に入っているイメージが湧いてくる。

要するにLispに例えるとTemplate Haskellはマクロで準クォートがリーダーマクロだという感じの理解で良いのだろうかね。

ProductName On Lisp
ポール グレアム
オーム社 / 3990円 ( 2007-03 )


Yesod無しでHamletを使う

sofのコードは動かなかった

  • Text.Blaze.Renderer.Stringは廃止なのでText.Blaze.Html.Renderer.String
  • HamletじゃなくてHtmlUrl

この二点を直したら動いた

{-# LANGUAGE TemplateHaskell, QuasiQuotes #-}

import Data.Text
import Text.Blaze.Html.Renderer.String (renderHtml)
import Text.Hamlet

data Url = Haskell | Yesod

renderUrl Haskell _ = pack "http://haskell.org"
renderUrl Yesod   _ = pack "http://www.yesodweb.com"

title = pack "This is in scope of the template below"

template :: HtmlUrl Url
template = [hamlet|
<html>
    <head>
        #{title}
    <body>
        <p>
            <a href=@{Haskell}>Haskell
            <a href=@{Yesod}>Yesod
|]

main = do
    let html = template renderUrl
    putStrLn $ renderHtml html

hamletのシンタックスは先頭がタグなので、普段Jade使っている僕にとっては似てるけどなんか変だなという印象だ。しかし、Jadeは先頭の文字列の区別が予約語(ifとか)、それ以外の記号で始まらない文字列はタグになるので、込み入ったテンプレートは結構読みにくい。

なので、タグで区別できるHamletのほうが可読性がいいのかな。

インラインのタグを入れ子にしたい場合には、エスケープの処理とかしないといけないのはインデント系に共通の読みにくさかも。あと条件演算子を入れると同じレベルのliなんかでもインデントが1つ下がるので、ちょっと読みにくくなってしまうところも一緒かな。

Hamletでヨサゲなのはテンプレート中でMaybeとかCase式が使えるところかな。

なんか作ってみたくなってきた。

ProductName Developing Web Applications With Haskell and Yesod
Michael Snoyman
Oreilly & Associates Inc / 2805円 ( 2012-05-04 )


プログラマーのためのソースコードを読む技術

対象読者が「駆け出しプログラマ」なんだけど、どっちかというと駆け出しプログラマに教える立場のヒトが読者なのかなと。分かっている人なら「あーそうそう」と思えるけど、教わる側は何言ってるのかわからないだろうなという記述がちょこちょこあった。

対象コードも、ちょっとレガシーめのプロジェクトを想定しているらしく、テストコードが付属しているのを想定していないようだ。今だとコード読む時にはマニュアルとか仕様を読むよりテスト読みながらコードを追いかけるほうが早い場合もあるし、オープンソース系のGitHubみたいなので管理されている場合にはIssueの議論を拾うのも行間を読むコツだったりする(議論の合間にコードに対する考え方とかが読み取れるしね)。

著者の略歴見たら組み込み系のヒトだった。

Gnu Globalの使い方が参考になったくらいかな。

ProductName プログラマーのためのソースコードを読む技術
高木 信尚
技術評論社 / 2604円 ( 2010-06-11 )


足保漁港@沼津に海釣りに行ってきた

娘が行きたがるので、この時期だったらカワハギかなぁってことで、ボートの予約をするもどこも撃沈。(3連休だしもっと早くに予約しないとダメだろう)

結局、足保漁港でサビキ釣りでもすることにした。キンギョくらいは釣れるから坊主はさすがにないだろうってことで。

足保漁港は正面に富士山が見えて投げてて気持ちいいので好きな釣り場のひとつだ。イカの墨跡があちこちにあったので、そこそこ釣れてる感じだ。太刀魚はもう終わったのかな。

ちなみに僕の好きな釣りは

  • 活きアジつかったアオリイカ釣り
  • 太刀魚釣り
  • カワハギ釣り

かな。アナゴは楽だけど暇だ。一方ルアーはせわしなく動くのが面倒くさい。上の3つはその中間なので好きだ。

サビキは子供のサポートしてて、キンギョは沢山、アジが二匹とメジナの子どもが5匹くらい(リリースした)。アジは目がいいからハゲ皮だとあまり食わなかったのでトリック仕掛けのほうがよかったかもしれない。あと、細長いので明らかにアジじゃないんだけど青物っぽいものの子供もかかった。

子供のサビキの手伝いの合間にワームを漁港内で投げていたらカマスヒット。なかなかの大きさだった。

1349513387

豆アジはもっと釣れたら南蛮漬けにするのがよいんだが、カマスがいたので干物にしてしまった。

網がなかったので焼き網にのせて干してやった。

1349513389

干す段階になって気づいたんだが、頭落としたら変じゃんと。

はじめてのcocos2d for iPhone

なかなか楽しい。

cocos2dtest

Objective-Cの基本を理解しているのを前提にしているようなので、僕はとりあえず別の本を読んだ後にこの本を読み始めた。

ProductName cocos2d for iPhoneレッスンノート
加藤寛人
ラトルズ / 2499円 ( 2011-09-22 )


Haskell Platformをアンインストールして綺麗な環境を取り戻す

なぜか/usr/local/binのcabal(2010年製)を使っていたり、依存関係がぐちゃぐちゃになってしまい、Yesod入れようとしたら目眩のするようなエラーリストが生成されたりとグッタリ感満載の環境になってしまった。

全てをなかったことにしたいが、完全にきれいにするアンインストーラーは用意されてないみたいなのでそれっぽいのを消していく。

sudo /Library/Frameworks/GHC.framework/Versions/Current/Tools/Uninstaller
sudo rm -rf /Library/Frameworks/HaskellPlatform.framework
rm -rf ~/.cabal
rm -rf ~/.ghc

/usr/binのシンボリックリンクとかも消せばいいんだろうけどもう一度インストールするので放っておいた。

(注) Haskell-Platform-2012.2.0.0には/Library/Haskell/bin/uninstall-hsというコマンドが用意されてました。

入れなおす。cabalを新しくしたらすぐにvirthualenvを入れる(超重要)。

open Haskell\ Platform\ 2012.2.0.0\ 32bit.pkg 
cabal update
cabal install cabal-install-0.14.0 #0.16.0はvirthualenvがバグる
cabal install virthualenv

新しいパッケージなんかを試したくなたらサンドボックスをつくる。例えばyesodを使いたい場合、適当なディレクトリを掘ってvirthualenvコマンドを叩くと.virthualenvディレクトリが出来てそこにcabalとか色々な設定がされる。

mkdir yesodtest
cd yesodtest
virthualenv

サンドボックス環境にするにはactivateする

source .virthualenv/bin/activate
cabal install yesod-platform

サンドボックス環境から抜けるにはdeactivateコマンドを叩けばいいし、要らなくなったら.virthualenvディレクトリを消せばいいだけなので、精神的によろしい。

Haskellの一般化代数データ型(GADT)

GADTs使ってみたを読んだらわかりやすかったので、適当なサンプルを見つけてみた。

プログラミングHaskell10.5の仮想マシンを例に取る

data Expr = Val Int | Add Expr Expr

value :: Expr -> Int
value (Val n) = n
value (Add x y) = value x + value y

GADTで書き直すと

data Expr where
    Val :: Int -> Expr
    Add :: Expr -> Expr -> Expr

value :: Expr -> Int
value (Val n) = n
value (Add x y) = value x + value y

データコンストラクタが、型をとって型を返す関数のように表現できる。

実行するにはGADTs拡張をつける

$ ghci -XGADTs vmachine2.hs 
GHCi, version 7.4.1: http://www.haskell.org/ghc/  :? for help
[1 of 1] Compiling Main             ( vmachine2.hs, interpreted )
Ok, modules loaded: Main.
*Main> value (Add (Val 3) (Val 2))
5

ProductName プログラミングHaskell
Graham Hutton
オーム社 / 2940円 ( 2009-11-11 )


Haskellerも順調に増加している

Objective-Cに入門した

構文がキモいとか書かれているのを見て敬遠してたのだけど、Haskell最初に読んだ時とかOCamlとかOzのほうが強烈だったな。あいつらと比較すれば[Java,C,C++,Go,Objective-C]でくくれるじゃんとか思ったけど、実際にアプリ作るとキモいとか思うのかな。

読んだのはObjective-Cの入門本でiPhoneアプリ開発系の本ではない。

ProductName XcodeによるObjective-C入門
大津 真
毎日コミュニケーションズ / 3150円 ( 2010-01-23 )


構文

ラベル

メソッド名とセレクタ、ラベルがわかりにくかった

クラスメソッドの実行

[[NSString alloc] init]

と、括弧でくくるとクラスメソッドの実行になる。newとかないのかな?と思ったら

[NSStrint new]
// [[NSString alloc] init]と等価

でもいいらしい。

idは汎用データ型

どういう場面で使うといいのかいまいちわからん

property

@property  変数名;

で、ゲッタとセッタが簡単に定義できる(@synthesizeも必要)

これを使うとpythonみたいに.でアクセスできる

カテゴリ

使いどころがいまいちわからん。ミックスインとも違うんだよなぁ。

Tips

  • open -h とhオプションでヘッダファイルを検索して開くことができる

というわけで一通り頭に入れたのでCocos2Dの本でも読もうかなと思う。

はじめてのObjective-C

Yesodがインストールできなくてヤサグレてきたので、Objective-Cでも。

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

  NSLog(@"Hello, World!");
  [pool drain];
  return 0;
}

gccでコンパイルできるのね。

$ gcc -framework Foundation test.m 
$ ./a.out 
2012-10-04 17:21:09.654 a.out[22068:407] Hello, World!

よくわかるiPhoneアプリ開発の教科書はできるだけXcodeのGUIの助けを借りて開発する感じの本だった。

長いこと使うんだったらやっぱ詳解 Objective-C 2.0 第3版がよさそうだけど、pdfでないんだよな。重いのはつらい。

ProductName 詳解 Objective-C 2.0 第3版
荻原 剛志
ソフトバンククリエイティブ / 3990円 ( 2011-12-28 )