タグ

ブックマーク / nishiohirokazu.hatenadiary.org (16)

  • 「エンジニアの学び方」を執筆しました。 - 西尾泰和のはてなダイアリー

    4月24日発売のWEB+DB PRESS Vol.80に、特別企画として「エンジニアの学び方」という記事を書きました。 Vol.80自体は4月発売ということもあって「新人さん大歓迎!」と銘打っています。「エンジニアの学び方」もこの4月に就職・進学をした人を想定読者にしています。ですが、きっとその他の人にも役に立つ内容だと思います。 この記事を書くきっかけとなったのは、ベストセラーにもなった拙著「コーディングを支える技術」のコラムです。余白があるからコラムを書けと言われて、学び方についてのいくつかのコラムを書きました。 p.23「理解を確認するためにはまずアウトプット」 p.26「何を学べばよいかがわからない理由」 p.79「具体的な知識と抽象的な知識」 p.80「噛み砕く」 p.82「必要なところからかじる」 p.134「おおまかにつかんで徐々に詳細化する」 p.235「端から順番に写経す

    「エンジニアの学び方」を執筆しました。 - 西尾泰和のはてなダイアリー
    aki77
    aki77 2014/04/28
  • プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー

    あるブログが「写経には効果がない」という趣旨のことを書いていて「何を言ってるんだ?」と思いじっくり読んでみたら、彼の言う写経は「動くとわかってる10000行のコードを何も思考せず作業として書き写すこと」を指しているようだった。「そんなわけないじゃん」と笑ってから「もしかして世の中は写経をそういう捉えてるのか?」と不安になった。 写経は自分の中にモデルを作るための行動で、他のもっと効率のよい方法と比べた場合の利点は「自分の中にモデルがなくても使える」点に尽きる。全く知識ゼロでいきなり「自分で考えて書く」ができる人はいない。考えるための材料となる知識をまず脳内に運び込む、それが写経だ。 写経の過程で大事なことは以下の3つだ。 1: 早く学びが得られるように、なるべく小さいコードで実験し、すぐに結果を確認する。 2: 疑問に思ったこと、考えたこと、気づいたことを書き留める。どうしてこういう書き方

    プログラミング学習手段としての写経について - 西尾泰和のはてなダイアリー
  • 作りたいもの: 1歩ずつミッションをクリアすることでGitの使い方を覚えられるゲーム - 西尾泰和のはてなダイアリー

    増井さんの作りたいものリストを作ろうというスライドを見て「確かに『いつかやる』リストに入れてるだけじゃ発展しないから、公開しても問題ないものは公開したらいいなぁ」と思ったので早速やってみました。2つ目。 1歩ずつミッションをクリアすることでGitの使い方を覚えられるゲーム なんちゃらVille系のゲームはどうして人の心をとらえるのか? 「小さい粒度のミッションが提示されて、それを達成すると次のミッションが表示される仕組み」は、頻繁に「達成感」という報酬を与えることで人の心をとらえるのだろうか? そういえば僕が昔書いた、対話的インタプリタで1歩ずつ操作しながらPythonを覚えるコンテンツも評判が良かったなぁ。だったらgitの使い方も、1歩ずつ対話的にミッションをクリアしながら学べるようにしたら面白いんじゃないか? 学習ユーザのユースケース 実は既にgithubにおいてあったりする。一応遊べ

    作りたいもの: 1歩ずつミッションをクリアすることでGitの使い方を覚えられるゲーム - 西尾泰和のはてなダイアリー
    aki77
    aki77 2012/05/10
  • 作りたいもの: JavaScriptのコードの質を保つためのガードレール - 西尾泰和のはてなダイアリー

    増井さんの作りたいものリストを作ろうというスライドを見て「確かに『いつかやる』リストに入れてるだけじゃ発展しないから、公開しても問題ないものは公開したらいいなぁ」と思ったので早速やってみました。3つ目。 JavaScriptのコードの質を保つためのガードレール JavaScriptは柔らかい言語で、typoとか変数名の変え忘れが実行時までエラーにならない。しかもしれっとundefinedとかになって、そのままHTMLSVGのpath文字列に埋め込まれてたりしてデバッグにコストが掛かってしまう。人間は間違える生き物だから、間違いをなくすことはできない。だから間違えた時になるべく早く気づけるようにする仕組みが必要だ。 Google Closure CompilerはJavaScriptのソースコードを静的に検証してエラーを報告してくれる。であれば自分がソースコードを編集している時にバックグラ

    作りたいもの: JavaScriptのコードの質を保つためのガードレール - 西尾泰和のはてなダイアリー
  • シェルスクリプトを多重起動しないようにする - 西尾泰和のはてなダイアリー

    最初はこう書いていた。 lockfile build.lock ... rm -f build.lockだけど、lockfileは失敗した時にデフォルトでは無限にリトライをする。ちょっと出来心で$ for i in {1..100}; do ./foo.sh; done;したから100人の待ち行列が出来てしまった。 やりたかったことは「既に起動していたら続行しないで終了」だったので-r 0でリトライ回数を0にした。 lockfile -r 0 build.lock || exit 1 ... rm -f build.lock

    シェルスクリプトを多重起動しないようにする - 西尾泰和のはてなダイアリー
    aki77
    aki77 2012/03/14
    lockfileコマンド
  • 他の言語に慣れた人がPythonを使ったときにつまずきがちな10のポイント - 西尾泰和のはてなダイアリー

    今日質問されて、以前Twitterで書いたのを思い出して、そして検索性が悪くて見つけ出すのに苦労した。こちらに転載しておく。詳細は気が向いたときに埋める。 オプション引数の評価タイミング Rubyではオプション引数は関数が呼ばれるたびに評価される。 def foo() print "foo!" end def bar(x=foo()) end bar #=> foo! と出力される bar #=> foo! bar #=> foo! Pythonでは関数の定義時に1回だけ評価される。 def foo(): print "foo!" def bar(x=foo()): pass #=> foo!と出力される bar() #=> 何も出力されない bar() 「引数が省略されたら今の日時」みたいな毎回評価したい場合はデフォルト値をNoneにしておいて「Noneだったら=省略されていたら」のif

    他の言語に慣れた人がPythonを使ったときにつまずきがちな10のポイント - 西尾泰和のはてなダイアリー
  • チケットレコメンデーション - 西尾泰和のはてなダイアリー

    Python温泉にて「チケットがたくさん山になっているとヤル気がそがれたりどれからやったらいいか悩むのに時間を使ったりしてしまうので、オススメのチケットを選んでくれるシステムがあったらいいんじゃないの?」って話題になったのでコンセプトプルーフを実装した。 とりあえずRubyRedmineからチケットを適当に取ってきて実験。recommend()ってやるとオススメのチケットを1つ教えてくれる。 In [2]: recommend() Windows環境で日語を含むパスに対して、File.expand_path が存在しないパスを返すパターンが存在する。これはちょっとなー、自分向きじゃないなぁ(OS依存だし)、別のがいいなぁ、と思ったのでno()と答える。すると別のチケットを提案してくれる。 In [3]: no() Please backport r33556 (Bug #5243)うん

    チケットレコメンデーション - 西尾泰和のはてなダイアリー
    aki77
    aki77 2011/11/21
  • 地震日記 - 西尾泰和のはてなダイアリー

    情報源 地震情報 - Yahoo!天気情報 TEPCO : 停電情報 MSN産経ニュース 日経済新聞 ガイガーカウンタによる放射線量測定 サイエンス・メディア・センター 信頼できるかどうか検討中 その他 シーベルト - Wikipedia チェルノブイリ原子力発電所事故 - Wikipedia チェルノブイリ事件後の住民移住の範囲は半径30km、福島原発から東京までは250kmくらい スリーマイル島原子力発電所事故 - Wikipedia 国際原子力事象評価尺度 - Wikipedia イソジンの話 ポビドンヨード - Wikipedia 原子力災害時における安定ヨウ素剤予防服用の 考え方について原子力安全委員会 甲状腺がんの発生確率は、被ばく時の年齢が20歳までは、線量に依存して有意な増加が認められる(2) ・被ばく時年齢が、40歳以上では、甲状腺がんの生涯リスクは消

    地震日記 - 西尾泰和のはてなダイアリー
    aki77
    aki77 2011/03/13
  • 初めての人のためのLISP[増補改訂版] - 西尾泰和のはてなダイアリー

    初めての人のためのLISP[増補改訂版]を読んだ。 「こう書けた方が自然だから、そう書けるという約束にしよう(約束なんていつでもできる!)」(p.60)とか 「一時的なメモ用紙だの、束縛だのという苦し紛れの言葉や概念を持ち出したのは、人間にとって自然なモジュール性を保証するためのメカニズムを理解するためにやむを得なかったから」(p.64)とか 「再帰呼び出しだけをことさらに強調してLispの特徴だと言うのは間違っている」(p.91)「美しいということと、実用的価値が常に一致しているとは限らん」(p.107)とかとか このは初めてプログラミングを学ぼうとする人が、間違った教科書に触れてダークサイドに落ちないために、最初に読むべきプログラマの思想書なのかもなーと思った。 世の中にはいろんな種類の間違った教科書がある。 「こう書くのが正しいのです。そういう決まりなんです。なんで?じゃありません

    初めての人のためのLISP[増補改訂版] - 西尾泰和のはてなダイアリー
  • 特定のファイルで指定したmajor-modeとminor-modeになってほしい時 - 西尾泰和のはてなダイアリー

    todo.howmでmajor: taskpaper, minor: howmになってほしくてこう書いた。 (add-to-list 'auto-mode-alist (cons "todo.howm$" 'taskpaper-mode)) (add-to-list 'auto-mode-alist (cons ".howm$" 'howm-mode)) するとhowm-modeにしかならない。F1 v auto-mode-alistしてみると後から追加したものが先に来るみたいだ。そこでこう書いた。 (add-to-list 'auto-mode-alist (cons ".howm$" 'howm-mode)) (add-to-list 'auto-mode-alist (cons "todo.howm$" 'taskpaper-mode)) こんどはtaskpaper-modeしかつか

    特定のファイルで指定したmajor-modeとminor-modeになってほしい時 - 西尾泰和のはてなダイアリー
  • Emacsから外部プログラムを起動して標準入力でバッファの内容を渡す - 西尾泰和のはてなダイアリー

    id:Yoshioriに質問されて、それ前にやったことあるけど何だったかなぁと検索して見つけたので今後見つけやすくするためにリンク。 http://www.nishiohirokazu.org/blog/2006/12/grineditmeadow.html (defvar GRINEDITPY "c:\\meadow\\grinedit_modVertex.py" "*The command to send query to grinedit") (defun grinedit () (interactive) (call-process-region (point-min) (point-max) GRINEDITPY)) (define-key global-map "\C-cg" 'grinedit) ようはgrinedit_modVertex.pyを起動し、バッファの最初から最後

    Emacsから外部プログラムを起動して標準入力でバッファの内容を渡す - 西尾泰和のはてなダイアリー
  • "Did You Know"和訳 - 西尾泰和のはてなダイアリー

    この動画は一見の価値がある。英語にひるんで見ない人がいるともったいないので和訳した。(追記: これはバージョン3.0らしい。) (追記:字幕付きのバージョンがニコニコ動画で公開されました) 知っていましたか? もしあなたが中国で「100万人に1人の逸材」なら… あなたみたいな人が国内に1300人います。 中国はまもなく世界一英語が話されている国になります。 インドの「IQが高い側から25%」は アメリカの全人口より多い。 つまりアメリカに生まれる全ての子供よりインドに生まれる優等生の方が多い。 知っていましたか? 2010年に需要のある仕事上位10位は 2004年にはまだ存在していませんでした。 今私たちは学生を教えています。まだ存在しない仕事に備えて。 まだ発明されていない技術を使って まだ知らない問題を解く仕事に備えて。 米国労働省は今の学生は10〜14の仕事につくと推測しています 3

    "Did You Know"和訳 - 西尾泰和のはてなダイアリー
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
    aki77
    aki77 2009/01/31
  • というわけでマカーになりました - 西尾泰和のはてなダイアリー

    注文したのが火曜日だったからPython Developer Campに間に合わないかと思ったけど間に合った!とりあえずMacPortsでPython25を入れればいいのかな? - xcodetools adium growl macports QuickSilver Ctrl+SpaceでSpotlightが出ないように設定 Ctrl+Space Terminalでターミナル起動 ターミナルではCommand+Spaceで日語をOFFにできないよう。なんでMacはIMEの状態がグローバルで1個なんだよう。AdiumでIMEがONでもコンソールまでONになる必要ないじゃないかよう あと「nishio-yasushiwa-no-macbook」なんて表示されてて腹が立つ>ターミナル システム環境設定 -> 共有 -> 編集 で変更 F3でExposeにした後Tabを押すとWindowsのA

    というわけでマカーになりました - 西尾泰和のはてなダイアリー
    aki77
    aki77 2008/05/12
  • MacBook2日目 - 西尾泰和のはてなダイアリー

    MacBookAirを買ったあとにやったことまとめ - devlog.holy-grail.jp http://d.hatena.ne.jp/HolyGrail/20080305/1204729899 参考になる HolyGrail++ まず最初に OSXの再インストールを行います。 mjd! 俺涙目! 華麗にスルーした 基的にアプリケーションの起動はQuickSilverから行うのでDockからアイコンを削除します。 昨日iMovieとかなんとか変なものがいっぱい入っているのが気に入らなくてCtrl+Clickしたら「Dockから取り除く」があったのでそれで消した。 「システム環境設定」はQuickSilverでどうやるのかわからなかったので消していなかったけど、試しにsysって打ったら出たのでこれも消す。 あ、なんだドックから外にドラッグすれば消えるのか。 Spotlightのショー

    MacBook2日目 - 西尾泰和のはてなダイアリー
    aki77
    aki77 2008/05/12
  • 僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー

    よく質問されるけども、いつもうまく答えられない。 今回、ちょっといい説明方法が思いついたのでメモしておく。 僕のサイボウズラボでの仕事は、3年で1個の「イノベーティブななにか」を作ること。そして、そのために3年で10個の「リリースできるサービス/利用できる技術」を作ること。そしてそのために3年で100個の「プロトタイプ」を作ること。そしてそのために3年で1000個の「新しいアイデア」を思いつくこと。 逆に言えば、3年で1000個思いつき、100個作り、10個リリースして、1個のイノベーションを起こすこと。 イノベーションは狙って起こすことができないので、こうやるしかないのだと思う。当は、1000個の「新しいアイデア」を出すために10000個の「既存のアイデア」を学ぶべきなのだけど、そこはまだまだ追いついていない。 - あ、なんかブックマークがいっぱいついてる…。誤解がないように補足してお

    僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー
    aki77
    aki77 2008/01/05
  • 1