はてなブックマーク - Unexpected Run Check

2010年10月30日土曜日

【Vol1】プログラミングのど素人が手っ取り早くWebアプリ構築技術を身につけるための5ステップ

@sawada0903 ことさわっくすです。このブログ、出来る限り頻繁に書いてゆきたいものなんだけどもなんだかんだで複数お仕事抱えていると書けないですね。対策考え中です。

二個目の記事のような記事は会社でノウハウ公開ブログ(7-bites'Angle)を作ることにしたので(ウノウラボのような形です)そちらに譲ることにして、このブログのスタンスはやはりあくまで僕個人の知見・仕事に対する考え方が主になるんだろうな、と思います。

最近知り合いが Tech Hub Tokyo 2010 というプログラミング未経験からのiPhoneアプリ作成講座を企画していて(僕も講座に参加するんですが)、Twitterで告知を手伝ったらそれはそれは数時間で定員を遥かにオーバー!

やっぱりみんなプログラミング勉強したいんだなー!と強く感じたのでこれから5回分の記事は

「プログラミングのど素人が手っ取り早くWebアプリ構築技術を身につけるための5ステップ」

 と銘打って僕がプログラミング習得に大事だと思う5ステップを掲げてみたいと思います。

これが目次。

① そもそも何故プログラミングの勉強に挫折するのか?
0. 学習動機が弱い
1. 要素要素のつながりがわからなく、本を読めば読むほど頭が混乱
2. 本を読むが、なかなか目的のアプリケーションを作るところまで
  話が進まない。非常に退屈で嫌になって投げ出す。


② 手っ取り早くプログラミングを身につけるための5ステップ

0. 学習動機を明確にしろ!
1. データベースの概念を抑える
2. 言語の構造を抑える(オブジェクト指向的に)
3. 一先ず一冊文法の本を読みきれ!写経!
4. 師匠を見つけて、解説をしてもらいながら
  一つアプリケーションを作り切れ!(師匠に大いに頼れ!)

① そもそも何故プログラミングの勉強に挫折するのか?
0. 学習動機が弱い
よく言われることですが、何をやるにしても学習動機は重要です。特にプログラミングなんかは今まで触れたことのない分野な人が多いジャンルです。(普通の勉強とは結構違うし、僕の世代ではプログラミング本当に好きな人って大抵中学とかから書いてます。)「俺これまでたいしてPC興味なかったし」とか言う人は特に動機を明確にしたほうがいい。

単に趣味サイトを作りたいのか、
ITベンチャーを始めたいからなのか、
始めたいとして何故必要だと思っているのか、
というかそもそも将来どうしたいのか?

プログラマー?起業家?プログラミングも出来る営業?
自分のマーケティングツールも作れてしまうWebマーケター?

職業やスキルの組み合わせは多種多様ですが、まずここを固める必要性大アリ。
なんとなくやっておいたほうがいいとかいう人は結構挫折している、もしくは習得にやたら時間かかっているイメージがあります。

1. 要素要素のつながりがわからなく、本を読めば読むほど頭が混乱
プログラミングは特に最初のうちはテクニカルタームと今まで触れたことのないものを触れるという経験の宝庫。

入門書を読む
→よくわからない
→作りたいものと今やっていることの関係性がわからない
→ つまらない
→ そういえば他にもタスクある
→段々がんばれなくなる
→やめる

という最悪のスパイラル、時間だけが過ぎ去ってゆく

2. 本を読むが、なかなか目的のアプリケーションを作るところまで話が進まない。非常に退屈で嫌になって投げ出す。

1.でも書きましたが今やっていることと、頭の中の崇高なるアプリケーションのイメージとのギャップがあり、勉強していることが今後どう活かされるのかよくわからない。というケース。


で、ここからが上記パターンを克服しつつ手っ取り早くWebアプリ製作を身につける5ステップ。(のうちの1ステップw)


② 手っ取り早くプログラミングを身につけるための5ステップ
0. 学習動機を明確にしろ!
これを読んでいるタイプのみなさんはおそらく天性のプログラマーではないので(天性のタイプは大抵もう既に結構やりこんでいる)、「たのしそう!」ぐらいだと多分挫折します。

なので、ここは将来やりたいことからの逆算でトップダウンに考えてゆき、プログラミングの学習に必然性と確信を持たせたほうが俄然続きます。本当に本当に考えぬいて、必須スキルだと思うから身につけるのか、どれだけの時間を費やせるのか?真面目に検討すべきです。

やる前に。やる前からわかることって多いですし。

僕個人の意見を言うならばプログラミングは必須スキルだと思っています。ITベンチャーをやるならば尚更必要。仕事をするにあたって「なんで知らないんですか…」とかいうケースってざらにあります。プログラマーの力量を測るにも重宝します。というか

「閃いたら、自分でプロトタイプを開発出来る」

というのは最強に強みです。また、プログラミングの本質は「作業の自動化」。人力の作業を圧倒的効率でPCに任せられる。これは文字通り圧倒的。一度書いたら、最小労力で最大の成果を再現性を持って得られる。元手が限りなくゼロで、期待値はもの凄い額。やらない手は無いでしょう。


次回以降、みなさんが期待している、「今からできる、具体的方法」の考察に移ってゆきます。

   はてなブックマーク - Unexpected Run Check

2010年10月6日水曜日

Rails3.0でモデルのER図を簡単に出力する方法

こんにちは、@sawada0903こと澤田です。
今Rails3.0を使ってサービスを開発しているのですが、
DBを定義するにあたり、やはりER図が欲しい。

Rails2.3.8を使っていた頃はRailroadというgemを使っていたん
ですが、2008年で開発が止まっており、当然Rails3.0には非対応(涙)。

ちなみにRailroadに関してはこの記事が詳しいです。若干ね。若干。
Railsを見える化「RailRoad」
http://www.moongift.jp/2007/07/railroad/

なのでしばらく頭の中で開発を進めていたんですけど、やっぱり欲しい。
アジャイル気味に開発してるのもあり、かっつり最初から決めたくない。
とはいえリレーションを目で見たいし、複数人で開発するとなると尚更欲しい。

そこで、Googleさんに聞いてみる....。

と!

こんなgemを発見。

Rails ERD
http://rails-erd.rubyforge.org/

まず結論。

こいつかなりイケテるッ

Rails ERDがイケテル3つのポイント:
0. インストール簡単
1. Railroadよりも遥かに簡単に操作可能、そしてデフォがPDF
2. 出力されるdiagramが綺麗


0. インストール簡単
まぁチュートリアルの通りなんだけども、一応紹介。

0-0. graphvizのインストール
brew install cairo pango graphviz    # Homebrew on Mac OS X
sudo port install graphviz           # Macports on Mac OS X
sudo aptitude install graphviz       # Debian and Ubuntu

0-1. gemのインストール 
Gemfileにrails-erdを記述。具体的にはこう書くだけ。簡単。瞬殺。
group :development do  gem "rails-erd" end そして、、、 bundle install
本当に簡単。 1. Railroadよりも遥かに簡単に生成が可能、
  デフォがPDF
Railroad(http://railroad.rubyforge.org/ ←ここから引用):
  • railroad -o models.dot -M
    Produces a models diagram to the file 'models.dot'
  • railroad -a -i -o full_models.dot -M
    Models diagram with all classes showing inheritance relations
  • railroad -M | dot -Tsvg > models.svg
    Model diagram in SVG format
  • railroad -C | neato -Tpng > controllers.png
    Controller diagram in PNG format
  • railroad -h
    Shows usage help
とまぁ、いろいろとオプションつけてmodelやらcontrollerやら、フォーマットやら出さなきゃいけないわけです。めんどくさ。

Rails ERD:
rake erd
これだけです。楽!!!
これやると、Rails.rootにERD.pdfっていうファイルが出来ます。超楽。

2. 出力されるdiagramが綺麗

↓ こんな風 ↓









なかなか見やすいですね。


というわけで現段階ではかなりおすすめなgemです。
一度試してみてはどうでしょうか。