Introduce Explaining Variable(説明用変数の導入)

Product Codeがちょっと読みやすくなったか。Test codeの改善はあまり期待できなさそう。 ◯ Product code(ruby) # before class Order attr_accessor :quantity attr_accessor :item_price def initialize (quantity, item_price) @quantity = quantity @ite…

Replace Temp with Chain(一時変数からチェインへ)

テストコードがすっきりしました。 before:add_option(arg) →after:and(arg)before # product code(ruby) class Select def options @options ||= [] end def add_option(arg) options << arg end end # test code(rspec) describe Select do let(:select)…

「シンプルな設計」を目指す上で必要な感覚

リファクタリングは、柔軟性を犠牲にせずに設計を単純化に導く。 (中略) 簡単にリファクタリングできるものがどのようなものかについての感覚が身につけば、柔軟な解について考えることさえなくなる。必要なときが来れば、リファクタリングできるという自…

一時変数から問い合わせメソッドへ(Replace Temp with Query)

一時変数は、無用に多くの引数(パラメータ)をやり取りする原因になるという点で、ない方がよい。 一時変数がなぜそこにあるのかは、すぐにわかりにくくなってしまう。 一時変数を取り除けば、データをいかに仕分けしていくかではなく、コードが何をしよう…

2/21(今後やりたいこと)

・自分のために、ブログを書く まずは、自分の頭の中を整理するために、ブログを書く習慣をつける。・「何を作るか?」をその背景を基に考える癖をつける 言われたものをそのまま作るだけのプログラマーは、あまり付加価値が高くない。「言われたものに、ど…

忘れ物に気づくためのシステム

<参考記事> タクシーのkm、車内画像比較して忘れ物発見撮影システム開発 http://www.nikkei.com/article/DGXNASGF0202Y_T00C13A9MM0000/忘れる「前提」で開発したところが憎い。タクシー業界でははじめての試みということらしく、今後が楽しみです。電車…

「おもしろい・理解しやすい」英語学習サイト

「英語のおもしろそうな動画が見つからない」 「字幕なしの英語の動画を見ても、ほとんど理解できない」 「なんとか英語を聞き取れても、その単語の意味がわからない」そんな悩みを持っていた時に出会ったサイトが、「EEVideo」でした。 EEVideo(http://www…

余裕を持ってらくらくと勝つために必要な「準備」

『余裕を持ってらくらくと勝つ』 なんとも心地よいフレーズです。ただ、このフレーズを現実のものにするためには、徹底的な「準備」が必要。 これが、今読んでる「孫子に学ぶ12章―兵法書と古典の成功法則」の第2章目「勝算なきは戦うなかれ」から得た気づき…

「戦わずして勝つ力」と「負けない力」を身につける

今日から「孫子に学ぶ12章―兵法書と古典の成功法則」という本を読み始めました。 まず第一章「戦わずして勝つ」を読んで感じた事を残しておこうと思います。この章を読んでいて気づいた事は、『戦いにはコストが伴う』という事です。 武器を使った戦い、いわ…

お金に振り回されないための、お金の下ろし方

"財布の中にお金がなくなったら、ATMでお金を下ろす"私は半年程前まで、上記のようなお金の下ろし方をしていました。しかし、今は全く別の下ろし方をしています。 下ろし方を変えた理由はただ一つ。「ATMの残高が、意図せずどんどん減っていった」からです。…

早朝筋トレを始めてみる

一時期、早寝早起きを徹底して行なっていたのですが、最近はあまり早起きをできていないです。。 その理由にはいろいろあるのですが、その中の一つに、「朝早くに起きてすることが、あまりはっきりと決まっていなかった」ことがあると思います。このことと、…

「新しいもの(価値)をどんどん生み出したい」と思う理由

今日、twitterで、下記のようなことをつぶやきました。 「新しいものをどんどん生み出さないといけない環境」に身を置きたい。 身を置きたいというよりも、周囲をそのような環境にするための行動をとっていく。 これらのつぶやきを後になってふりかえってみ…

料理≒仕事

今日、久々に料理をしていて、ふと思ったことがあります。それは、「料理をする上で考えることと、仕事をする上で考えることが似ているな」というものです。料理をする上で考えることは、 ・「何を作る?」 ・「各作業に、どれくらい時間がかかる?」 ・「各…

「ありがとう」へのリアクション

今日の夕方頃、電車の中で座っていたところ、ある停車駅で年配の方が乗車してきました。私の近くにたまたま来られたので、席を譲ると「ありがとう」と言って頂きました。しかし、若干の照れもあったからか、その「ありがとう」に対して会釈をするかしないか…

「わかりやすい表現をする」ために心がけている3つのこと

~社会人になってから最初にぶつかった壁~ 私が社会人になってから最初にぶつかった壁は、「わかりやすい表現をする」というものでした。社会人になるまでの学生時代には、表現には「正解」があり、その表現に対して求められることは「正解と同じかどうか」…

今年の目標【月3万円、稼ぐ】

〜今年の目標〜 今年の目標は、【月3万円、稼ぐ】です。ここで言う「稼ぐ」とは、「利益を生み出す」の意です。 この目標を達成する過程を通じて、〔商売をする力〕、〔戦略を組み立てる力〕、〔人と迅速かつ濃密なコミュニケーションをとる力〕を鍛えたい…

知の循環を作る(富山弁「なーん」の語源は?)

~最近、「へー!」と感じたこと、何かありますか?~ 人と会話をする際の楽しみの1つに、「自分の知らない知識を新たに知る」楽しみがあると思います。ここでいう知識には、日常的に使っているモノの語源から、国の文化の成り立ちまで、あらゆるものが含ま…

2012年のふりかえり

~1年を通じた所感~ さまざまな気づきを得られましたが、最も大きな気づきだったのは、 実績を出したかどうかは、周囲の人が決める というものです。 たとえどれだけ自分なりにがんばったとしても、その結果としてのアウトプットを周囲の人が認めない限り…

「がんばる」と言ったからには・・・

「がんばる」という言葉。日常的によく使っている方もいらっしゃれば、あまり好きな言葉ではないと感じる方もいらっしゃるかもしれません。しかし、この「がんばる」という言葉は、一体何をすることを意味するのでしょうか?休むことなく、がむしゃらに行動…

widen-window(アクティブなウィンドウの自動拡大)

ちょっとあまりの便利さに感動したため、ブログに残しておきます。これまで、emacsでコーディングしている際、ウィンドウの分割をよくしていたのですが、操作中のアクティブなウィンドウだけ大きくしたいなーと常々思っていました。大きくするためのコマンド…

読書の目標

読書をする上での目標。これまで、あまり深く考えたことがなかったです。「何らかの気づきを得る」等、何となく無意識レベルで思っていたことはあると思います。ただ、このような曖昧な目標では、目標を達成した(何らかの気づきを得られた)のかよくわかり…

12/3(「未知の良さ」を追い求める)

「あ、それ良いね!」ヒット商品を生み出すようなコンセプトかどうかを判定するためには、このような反応が必要だとこれまでは思っていました。しかし、タイトルに書いた「未知の良さ」という考え方を知って、がらっと考えが変わってしまいました。 「あ、そ…

12/2(ものづくりに必要な4人の自分)

『よいものを作り、世界をよりよい方向に変えたい』これはずっと私が抱えている気持ちです。この「もの」には、物理的なもの以外の「もの」も含まれます。今、私が考えている「もの」には、 ・音楽をより楽しむことのできる新たな仕組み ・夢を叶えやすくす…

11/28(「俳句」を学ぶ)

俳句を始めてみようと思っています。特に大きな理由はありませんが、語彙力をつけたり、あるいは表現力を高めたりすることにつながるかなと思っています。ここ数日間、俳句を考えてみたのですが、個人的にイマイチぱっとしません・・・。頭が固い性格も重な…

11/26(「遊ぶ」ということは?)

「遊ぶ」ということは異質なものとの出会いを楽しむこと このような定義には初めて出会いました。。。しかし確かにその通りだな、と思います。 「遊ぶ」ことが上手い人というのは、「異質なものとの出会いを楽しむ」ことが上手い人のことを指すのかもしれま…

パーソナルSEO(ビジネスパーソンのあなたは、どんなキーワードで検索されたいか?)

〔プログラマー Ruby 保守性〕、〔コンサルタント 親切〕、〔営業 控えめ〕、・・・。 突然ですが、ビジネスパーソンのあなたはWEB上でどんなキーワードで検索されたいですか?そして、どんなキーワードで検索結果「1位」を取りたいですか? GoogleやYahoo…

問題解決策を提案する上で気をつけること

WEBマーケティング総合研究所では、週に1回、若手社員(20代の社員)と社長との間で勉強会を開催しています。今週は「ロジカルシンキング」というテーマのもと、「ある主張(問題解決策の提案)に対して、論理性という観点から見てどんな問題があるかを議…

「段取り力」を鍛えたい方へ

今回読んだ本は、【段取り力 〜「うまくいく人」はここがちがう〜】です。この本を読もうと思った理由は、現在の仕事を通じて、自分は段取りができるようになる必要があると思ったからです。特に必要だと感じた瞬間は、システムリリースの納期を守れず、周り…

ユーザにとって「使いやすい・使いたい」システムを作るために

先週1週間は、ユーザーにとって「使いやすい、あるいは使いたい」システムとはどんなものか、そしてそのようなシステムを作るためにはどうすればよいのかを考えた1週間だったと思います。普段開発を進めていると、どうしても「機能をどうやって実装するか…

先週のTryをふりかえるための、ふりかえりフォーマット【TKPT】

私の開発チームでは、毎週1回1時間ほどの時間を使ってふりかえりMTG(以下、ふりかえり)を行っています。ふりかえりの目的は、メンバー各自の仕事のやり方や、チーム全体としての仕事の進め方を改善することにあります。これまでふりかえりを行う際には、…

アジャイル開発研修を通じて学んだこと

今年の9月から始まったアジャイル開発研修が、今月をもって終わりました。本当に数えきれない程多くのことを学び、研修を引き受けて下さったソニックガーデンの皆様には感謝の念が絶えません。本当にありがとうございました。最後にこの研修の総決算として…

セールスフォースの大規模アジャイル開発手法から学んだこと

本日、『Cloudforce2011』に参加してきました。セールスフォース・ドットコム会長兼CEOのマーク・ベニオフ氏による基調講演を始め、さまざまな方々の講演や、展示などが行われ、とても有意義な時間を過ごすことができました。その中でも特に印象的だったのは…

jqueryを使ってみる(ドラッグアンドドロップの実装まで)

最近、jqueryを勉強し始めました。勉強し始めるまでは、jqueryは「ブラウザ上でいろんなことが出来るようになる素晴らしいツール」というざっくりとした認識だったのですが、結局jqueryを使うために何をしたらよいのかわかりませんでした。jqueryを勉強し始…

railsでプラグインを使う

「プラグインを使うと簡単に実装できるよ!」・・・初め聞いた時は、「プラグイン??」って感じだったんですが、最近ようやくプラグインのありがたみがわかってきました。まさに先ほど、あるアプリにemailのvalidationをかけたいなと思って、"validates_ema…

◎【ランチメール】

システムリリースしました!その名も「ランチメール」!https://lunch-mail.heroku.com/ランチに行く時の毎回の悩みの種(!?)が、「誰と一緒に行くか」と、「どこに食べに行くか」だと思います。その2つの悩みを解決してくれるのが「ランチメール」です…

リーンスタートアップについて学んだこと

先日、品川で開催された"Lean Startup Japan" Meetupに参加させて頂いた。リーンスタートアップの朝会と夜会で蓄えてきたノウハウのフィードバックの機会ということで、とても実践的な内容を聞かせて頂いた。その後、個人的にリーンスタートアップについて調…

gitとgithubを利用した、チーム開発

Git

現在、ホームページ制作システムをチーム開発している。チームで開発を進めることで、チームメンバーの誰かが何らかの事情で開発できなくなっても、他のメンバーで開発を止めることなく続けることができるようになる。また、さまざまな視点から見ることでバ…

2011/11/17

<当面の課題(目標)>rubyアジャイル研修が始まって2ヶ月半が経ちました。これまでに開発に携わったアプリの数は3つ。その過程でさまざまなことを学んできました。rubyやrailsに始まり、ペアプログラミングの手法やアジャイルという考え方、git でのバー…

2011/11/14

<プロダクトオーナーとの仕様共有の際に心がけること>イテレーションの始めには、今回のイテレーションで開発するシステムの仕様について、プロダクトオーナーと共有する。その際に心がけることは以下の2つ。・最終的なアウトプットとなる画面と、それら…

2011/11/11 イテレーションミーティング

<次回イテレーションへのTry>・読んでもわからないコードは、コンソールで実行してみるコードを読むことは、プログラミングスキルや知識量を伸ばす上で欠かせないことだ。ただ自分の知らないコードの書き方があると、なかなか理解が進まない。そこで、自分…

2011/11/9

<Rails内でのSQL構文、学習メモ>・where()かっこ内の条件に一致したものを取ってくる。〔例:Pages.where(:name => "トップページ")・・・nameカラムがトップページのレコードをPageテーブルから取ってくる〕・a.joins(:b)aテーブルとbテーブルを結合する…

2011/11/8

<見積もりとの“ずれ”を振り返る>タスクを行い始める前には、どれくらいの時間がかかりそうか見積もりを行う。正確な見積もりが出来るようになれば、正確なスケジューリングや、時間コストに対するパフォーマンスの高さの評価(「こんなに時間がかかります…

2011/11/2

<仕様の検討 & モデル構造の検討>アジャイル開発を行い始める前には、プロダクトオーナーと入念な議論を行う必要がある。具体的には、主に・仕様の検討・モデル構造の検討について行う。「この仕様によって、エンドユーザーが求めていることに本当に応え…

2011/10/31

<タスクの細分化は、ユーザー目線で行う>タスクを細分化する際には、ユーザー側からの視点をもって行う。具体的には、・〜を表示する(データ、ボタンなど)・データの作成、編集を可能にするなどのように分ける。分けたものが半日ほどかかりそうだったら…

ファシリテーションをする際に心がけること

昨日、先輩が行ったファシリーテーションを見て、今後自分がファシリーテーションをする際に心がけた方がよいと思ったことをまとめておく。1. 何でも発言しやすい雰囲気づくりこれが一番難しい気がする。少なくとも自分にとっては。もちろん、質問を投げかけ…

2011/10/26

<Rails命名規則(単数形と複数形)>何か名前を付ける際、毎回単数形か複数形か悩むので、ここで一度まとめておく。【単数形】・モデル名(例:rails generate scaffold モデル名、モデル名.rb、class モデル名<ActiveRecord::Base)・関連、所有する側の…

2011/10/25

<アジャイル開発を通じた最大の成果とは?>アジャイル開発を通じて、最も果たすべき成果とは何なのだろうか?次のどちらかか?・システムの改善・人材の改善(成長)どちらの成果を優先しようとするかによって、時間の使い方が変わってくる気がする。もち…

2011/10/24

<配列とハッシュの違い>配列とハッシュ、複数のデータを持つという意味では、同じ部類のものである。しかし、以下の点で違いがある。・配列には、データの順番という概念が存在する。・ハッシュには、キーという概念が存在する。この違いによって、どのよ…

2011/10/21

<実装(コーディング)し始める前に考えること>実装をし始める前には、以下の3つのことを行う。1. データモデル構造の設計・どのようなモデル(テーブル)が必要か。・モデル間には関連を持たせるのか。持たせる場合は1対1、1対多、多対多の内のどれな…

2011/10/20

〔rubyを使って、[1,2,3,4,5,6,7,8,9]を[ [1,2,3],[4,5,6],[7,8,9] ]に変換するプログラム〕each_slice(n)メソッドを使うことで、シンプルに書ける。自分は始め、こんな便利なメソッドがあるとは露知らず、eachメソッドを使ったロジックを必死に組もうとして…