小さなチーム、大きな仕事(完全版)の読書メモ
小さなチーム、大きな仕事を読みました。サクサク読めていいですね。
1つのことを、自分たちだけでやれ。技術をどうこうというかは、意識を高めてくれる良書です。
内容メモ
現実の世界とは場所ではなく言い訳だ。何も試さないことの正当化だ。あなたには関係ない。
現実と折り合わない計画にしたがうのはもっと恐ろしい。
本当のヒーローは仕事をさっさと片づける方法を見つけ出し、とっくに帰宅している。
すごい製品やサービスを生み出す最も単純な方法はあなたが使いたいものを作ることだ。
中途半端な1つのものよりも、とてもよくできた半分の大きさのもののほうがいいに決まってる。
始めるときは、ディティールは忘れろ。
一番大切なものが残るまで切り落としてそれを繰り返していく。
副産物を生み出していることすら気づかない。だが副産物も売れる。
どういった問題を解決するのか?ほんとにそれに価値があるのか?
睡眠をとろう。
問題を可能な限り小さな要素に分解する。
模倣の問題は理解を飛ばしてしまうこと。
競合の一つ上をいくのではなく、一つ下回るようにしてみる。その代わりそれをうまくやる。
顧客が常に正しいと信じてはいけない。
既存の顧客にこだわり続けると、新しい顧客が切り離されてしまう
偉大な料理人はレシピを公開し料理本を書く。ビジネスも彼らを見習うべきなのだ。
試してもらう。それが顧客にとって手放せないものであるなら、利益を得られる。
まず自分自身でやってみる
限界の時こそ人を雇う、その前の段階ではない。
有能な人でも、必要のない人間を雇うことはない。
顧客と社員の間に人が多いほど、顧客の声は歪んだり失われる。
ポジティブな意見よりネガティブな意見のほうが情熱的にうるさい。
文化とは方針ではない、物や行事や言葉でもない。行動だ。
何でも許可が必要を必要とする環境は、何も自分で考えない文化を作る。社員を子供扱いする必要はない。
書き物が格式高くある必要はない、あなたらしく正直であればよい
小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則
- 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
- 出版社/メーカー: 早川書房
- 発売日: 2012/01/11
- メディア: 単行本
- 購入: 21人 クリック: 325回
- この商品を含むブログ (32件) を見る
Developer Summit 2014にいったときのメモ
pythonのflaskで自分用アップローダを作った話
ニンテンドー 3DSありますよね。
あれの新絵心教室っていうゲームで、書いた絵を写真として保存しておけるんです。
その写真を取り出してネットにあげようとおもうと、SDカードを取り出してPCにつなげてコピーしてアップロードしないといけないんですね。
これがめんどくさい。
3DSのブラウザから直接ネットにアップロードして、
PCから同じ場所みてその画像を取得できるようにしたいと思いました。
そこで自分用の3DSのブラウザで使えるアップローダを作りました。
こんな感じ。なお実物は私しか知らない場所にありますのでご了承ください。
https://github.com/arvelt/flask-fileupload-sample
作ってから調べたらやはりすでにあったんですけど全く問題ありません。
はいでは作ってみてわかったことや気になったコトなど書いていきます。
○以下ハイライト
・flaskすごい。pythonのsinatraみたいなやつ http://flask.pocoo.org/
・コントローラーとテンプレートをさくっと提供してくれて楽
・os.pathがすごい
・3dsブラウザのUserAgentは「Nintendo 3DS」
・gitで空のディレクトリを保持したいときは.gitkeep入れるといい
・flask.url_forを使うと欲しいurlはだいたいとれるのでちゃんとドキュメントかソースを読むのがおすすめ
・デプロイはちゃんとわかってないとめんどくさい
○以下参考にした場所とか
http://flask.pocoo.org/docs/quickstart/
公式ドキュメントのクイックスタート。ここ読むとだいたいはわかる。ちゃんとFile Uploadsの項目があってありがたい。
http://memo.yomukaku.net/entries/195
空のディレクトリを保持したいときは空の.getkeepをおいておくらしいという話。
http://zafiel.wingall.com/archives/7513
flaskアプリをapache上にデプロイするときのやり方について。自分でやってみるとこのパスはどう書くんだよってなりがち。
○気になること
・モデル
DBとマッパーはpeewee+SQLiteだと小さく手軽にやれそう。https://pypi.python.org/pypi/peewee
・python
python自体をあまりわかってないことに気づいた。文字コード。日付操作。型とか。
・pythonエコシステム
python自体以下略。virtualenv、setuptool、pip、pep8とかよくわかってない
・Paas
flaskはかなり手軽なのでなにかさっと書きたいときによさそう。そこでさっと書いたやつをぱっと公開するためにPaasに載せる方法を調べておきたい。
Windows8を新規インストールしたときに行うことメモ
http://arvelt.hatenablog.com/entry/2013/09/24/110048
これに追加で8系のときに必要な設定。
デスクトップで使用するために変える。
1.起動したらスタート画面じゃなくてデスクトップを表示するようにする。
http://www.atmarkit.co.jp/ait/articles/1302/22/news054.html
2.アプリ起動でスタート画面までいかないと行けないので、デスクトップにランチャーおく。Orchis
http://www.eonet.ne.jp/~gorota/
3.ロック画面を表示しないようにする。
http://windows8.a-windows.com/login.html
Unity入門1
Unityを触っていきます。
できたもの。リンクはあとで変えるかも
https://dl.dropboxusercontent.com/u/19360039/block-ball1/block-ball1.html
・できたこと、わかったこと
Unityではシーンという単位でゲームを作る。
ゲーム内に存在する全ての概念を、ゲームオブジェクトとして扱う。
ゲームオブジェクトに挙動や設定やスクリプトを、コンポーネントとして追加していく。
カメラとライトが必ず必要。
オブジェクトに物理的な特性(硬さ、重さ、重力の影響)を与えたい場合はRigidbodyコンポーネントを使用する。
jsの場合、コンテキストメニューのcreate-javascriptからスクリプトを作成し、オブジェクトにドラッグすると紐付けできる。start()は開始時に1度、update()は毎フレーム呼ばれる。gameObject変数が自分自身を指す模様。変数を関数スコープ外で宣言することで、インスペクターUIで直接設定できるようになる。
反射等はPhysic Materialコンポーネントで設定できる。
ユーザー入力はInput Managerによって抽象化されている。Input.GetAxisRaw("Horizontal")で左右、Input.GetAxisRaw("Vertical")で上下が取得できる。それぞれ-1~1が返る。
Coliderが設定されたもの同士が衝突するとOnCollisionEnter()が発生する。その中でDestoy(gameObject)と書くと自分自身が消える。ブロックにこのスクリプトを設定すれば、ボールが当たったときに消える。
参考にしたもの
http://japan.unity3d.com/developer/document/tutorial/my-first-unity/01
公式にあるチュートリアル。
惜しむらくは全四回のうち第一回しか公開されていない。
http://dotinstall.com/lessons/basic_unity/24624
http://kusogamer.blogspot.jp/2013/05/unity_16.html
衝突検知はここから。
ステートフルJavascriptを読んでのまとめ
ステートフルJavascriptを読んであとで思い返すためのメモ。
フロントエンドでMVCをやるという今流行りの知見における走りなのかと思う。
コントローラーはURLハッシュの変化を検知する。ビューはテンプレート使い、モデルと対応する。モデルの更新でビューが同時に更新される。このへんのMVCの役割を把握しておけばあとはFWで処理する感じ。紹介されてたBackborn.jsのサンプルをいつでも見れるようにしておいた。
https://github.com/arvelt/backborn-sample
以下メモ
・クライアントでMVCをやる
・モデル、ビュー、コントローラーの役割とは。
・JavascriptのProttypeの仕組み
事実上の継承とみなせる。それを用いたクラスっぽい定義。
・要素の外側から内側の順にイベントが発生していくイベントキャプチャリング。要素の内側から外側へイベントが発生していくイベントバブリングがある。実際にはイベントバブリングが使われることが多い。
・イベントに関係するプロパティ。bubbles,button,ctrlKey,altKey,shiftKey,metaKey,isChar,charCode,keyCode,which,pageX、pageY,screenX、screenY,currentTarget,target、originalTarget,relatedTarget。
・非Domにも使用できるパブリッシュ/サブスクライブパターンについて。
・ORMを用いてサーバーのデータをモデルとして扱う。モデルのインスタンスをDomと関連付けて扱う。
・コントローラーの内部状態をローカルスコープに保存し、モジュール内にカプセル化するやりかた。
・コントローラー1つにビュー1つを対応させる。
・URLのハッシュを検知することでルーティングをする。
・モデルの更新をすることで、テンプレートで定義されたビューが更新されるようにする。
・RequireJSで依存性を管理する。
・WebSocketで表現するリアルタイム性。Node.jsとSocket.IO
・Xunit系のQUnitやSpec系のJasmineを用いたユニットテスト。
・開発コンソールで使用できる。consoleオブジェクト。log()、trace()、profile()、time()など
・デプロイ時に有効的な、YUI Compressorを用いたコードの最小化。
ステートフルJavaScript ―MVCアーキテクチャに基づくWebアプリケーションの状態管理
- 作者: Alex MacCaw,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/06/09
- メディア: 大型本
- 購入: 7人 クリック: 356回
- この商品を含むブログ (10件) を見る
2013年を振り返って
2013年にやったことを振り返っています。
・前年度にたてた目標
以上を踏まえると来年は、もっとコードを書くこと、を目標にしていこうと思います。こういうのなら書いたことあるからなんとなくわかる、っていうストックをたくさん作りたい。
・今年やったこと
1月、JavaでTODOアプリ素振りっていうのやった。思いつきすぎて他に生かせてない。
2月、借りてるVPSにRuby入れてRedmine入れることを試す。自分の個人プロジェクト作業用にRedmine on VPSはかなり良い感じ。RubyKaigi行ってみた。
3月、シムシティやってた。市長、市長官邸を市の中央部に置くのはいかがなものでしょう。
4月、Sinatraでアプリ作成。VPS上において公開。
5月、美術館に行ったりしてた。転職活動的なこと。
6月、何してたっけ。転職活動的なこと。転職することを決めた。
7月、新職場はWeb系なのでMBAを購入して勉強。Vimを触ってみるがなじまないので諦める。
8月、新職場にて勤務し始めた。Javascriptで死ぬ。arvelt.netという独自ドメインを取得。VPSサーバを独自ドメインでアクセスできるので、俺の城感がすごくて楽しい。何につかうんだ?
9月、モンスタハンター4やってた。ランサーの誇りを胸に片手剣を使用する。Pycon行ってみた。
10月、ポケモンYやってた。私のギャラドスに勝てるやついんの?
11月、サイ本読んだ。Javascriptの気持ち悪さを知って暗い未来に思いを馳せる。
12月、ステートフルJavascript読んだ。仕事で使ってるFWがこれに沿っていることに気づき始める。美術検定3級とった。
転職活動といってはいますが、以前は受け入れられる状態じゃなかったけど今は大丈夫になったからうちに来ないかい、というお誘い的なことされただけですね。それにホイホイ乗っかかって決めた。
形に残せた成果としては、Sinatraアプリ作ったこと。独自ドメインとってみた。転職した。美術検定3級とった。
・目標を達成したか?
転職する、は達成したが、コードを書こう、は微妙なところ。1つでは十分とは言えないだろし、こうしたいならこう書くんだよのストックはできていない。
・振り返り
こう見てみると、コード書くとか言っておきながら全然書いてないのがダサいですね。それでも転職できたのはありがたいことです。つまり実力ではなく今後の活躍に期待して買われたという感じですね。これからがスタート。
・来年の目標とか
というわけで今こそコード書かなくてはなりません。来年の目標もコードを書くこと。目標は具体的にしましょう。サービスやライブラリを合わせて3つ作るとかそんな感じで。規模は前のTODOみたく小さくてもいいので、完結したものちゃんとやるということを目指しましょう。勉強ってことなので、上から下まで全部自分で1つ、Paas使ったのが1つ、ライブラリが1つ。みたいに形態の違うものにそれぞれ挑戦したいですね。
それと、退職しました記事書いたらホッテントリ入りしてしまいましたので、SIerからWebに転職したよアフターもぜひ書きたいです。8月頃に。
最近品質管理とかテスティングとかそういう感じのことに興味持ってるのでちょっと突っ込んで勉強したいです。体系的な知見として自分の中にまとめたい。前職だと品質強化イコールチェックリストでクロスチェックする、みたいな会社だったのでその反動でしょう。なんか違和感合ったけど実践としてどうすればいいのかはわからないし従うしかないみたいなストレスがありました。
具体的に触れていきたいものは、優先度順に、Python、Javascript、Git、GoogleAppsEngine、品質管理、アジャイル、Redmine。少し下げてRuby周り、Java周り、Android周り。あと個人的興味に基づくゲーム作成のいろは。
あと大きいカンファレンスに参加してみて。本物たちのの凄さを目の当たりにして圧倒されましたね。大きいのは聞くだけでも行くと意識高まるし、知らないこといっぱい見つかるので積極的に参加していきたいです。普通の勉強会の方は聞くだけだとあまり時間を使う意味がないということに気づいたので、発表する内容を用意して行くようにしたいです。
そんな感じでがんばっていきたいと思います。