2012年07月27日

関数型言語を広めるためには何が必要なのか?

Orange & Apple
By plushoff under CC BY-NC

山口さんから、「Java開発者のための関数プログラミング」の電子献本をいただきました。ありがとうございます。電子書籍便利ですね。アメリカにいても日本語の本が手に入る!しかも、すごいこなれた日本語になっているし、注釈もばっちりついて読みやすいです。仕事のできる男の風格を感じます。

<br />
Java開発者のための関数プログラミング
Dean Wampler 著、山口能迪、株式会社トップスタジオ 訳
フォーマット ePub

この本を楽しく読んでいたところ、山口さんから別の面白いリンクを教えてもらいました。

  • Why OO Sucks (なぜオブジェクト指向はクソなのか)

Erlangの開発者のJoe Armstrongの記事です。本当はこっちのycombinatorの議論(http://news.ycombinator.com/item?id=4245737)も全部目を通したいところだけど、まだそこまでは読めてません。

中身に関しては同意できるところもあるし、文脈依存だなぁと思うところもありますが、最後の「なぜオブジェクト指向が人気となったか?」という点は「Java開発者のための関数プログラミング」とクロスオーバーすることもあり、興味を惹かれました。まぁ、こちらの中身に関しても100%同意ではないので、僕なりの考えなりをまとめたいと思います。

関数型言語系の人は当然そちらの方が優れている、書きやすいと言うことを言います。パフォーマンスも良く、メンテナンス性も高く、コードも短いとか。僕もどちらかというと関数型っぽい環境でコードを書いたことがある(お試しでErlangでProject Eulerとか、今は亡きJustSystemのxfyでプロトタイプのアプリケーションを作ったり)のでイメージは付きますが、TIOBEスコアとかではOO系が主流だし、今の言語やパラダイムで物足りなさを感じている人以外を説得するには、強く主張すればするほど逆効果だよな、といつも思っています。Erlangはずっと前から(前職から)仕事で使ってみたいと思っているけど、自分もなかなか他人を説得できないですしね。

「言語の優劣と、流行したかどうかは直接は関係ない」「タイミングが命」というのが僕の考えです。そうでなければ今ごろ「JavaScriptなんてダセーよなー」「家帰ってSmalltalk/Lispやろー」(湯川専務のCM風に)という会話を中学生とかがしているはずですから。異論や反論もいろいろあると思いますが、僕なりにオブジェクト指向が流行ったとおもわれる要因をまとめてみました。

OOはなぜ流行ったのか?

続きを読む
posted by @shibukawa at 00:18 | Comment(1088) | TrackBack(0) | プログラミング はてなブックマーク - 関数型言語を広めるためには何が必要なのか?

2011年03月01日

これから魔法使い(プログラマー)になる、新卒者のみなさんへ

Magic Bus
By erix! under CC-BY

これから魔法使い(プログラマー)になる、新卒者のみなさんに、リレーでメッセージを送ろう、ということになりました。一発目として僕が書かせていただきます。

おまえ誰よ?

プログラマーです。14歳ぐらいからプログラミングに手を染めて、N88-BASIC、C言語、x86アセンブラ、C++、Ruby、Python、JavaScript、Erlangみたいな感じで勉強しています。まぁ、Erlangはまだまだヒヨコですが。大学を卒業して、本田技術研究所に就職し、社内SEをしていましたが、今年からDeNAに転職しました。

メインの言語はPythonで、Python温泉系のコミュニティに参加しつつ、日本XPユーザグループの代表(あまり仕事できてない)、sphinx-users.jpの会長などもやっています。昨年は4冊の本を出しました。今年、もう一冊出す予定です。

21世紀の錬金術

科学の発展に、錬金術が大きな役割を果たした、という逸話をご存知の方も多いのではないでしょうか?現代に生きていれば、原子(アトム)の存在を知っているため「錬金術なんてありえないよ」と言えるでしょう。実際の現実世界であれば、アトムのルールに縛られますが、人類が20世紀に発明したコンピュータは、これとは違う、ビットの世界を構成しているため、「錬金術は成り立たない」という前提が崩れます。無から有を産みだすことも可能ですし(Windowsとかブラウザもデータ上は単なる01のビット列)、いくらでもコピーが作れます。現実世界ではできなかったことがコンピュータの中では実現できます。

IT業界に入るということは、この魔法(プログラミング)を身につけるということです。注意深く呪文(プログラム)を組み立て、発動させると、波動(バス間を流れる電気信号の波)が生み出され、人間では到底扱えないような桁の計算を間違いなく行ったり、図形が動いたり、大量のデータから欲しい情報を抽出したり、何も無いところからお金が生まれたりします。技術が高まると、実に様々なことができるようになります。ワクワクしませんか?

僕が魔法使いを志したきっかけ

もともと、中学2年ごろから、遊びで勉強をしはじめていましたが、本格的に魔法使い(プログラマー)になろうと思ったのは、20世紀版のゲド戦記(闘うプログラマー)を読んだからです。新しい世界の均衡(32ビット版の安定したOS)を作ろうとする実話です。自分達で世界を作っていく過程にワクワクして、例え大変でも、この世界に進もうと思いました。最近は新装版も出ています。

例えば話は、ここからはちょっとゆるめます(読むのも書くのも重いので)。

続きを読む
posted by @shibukawa at 13:00 | Comment(88) | TrackBack(0) | プログラミング はてなブックマーク - これから魔法使い(プログラマー)になる、新卒者のみなさんへ

2010年11月18日

つまみぐい勉強法。その後。

スライド01

つまみぐい勉強法が本屋に並び初めてから半年以上経ちました。良かったよ、と声をかけてもらえることもあったり、岡山まで話をしに行ったり、色々な体験がありました。Python Hack-a-thonでは、その後の流れなどを紹介しました。

スライド03 スライド04

ちなみに、このイベントの次の日が誕生日ということもあり、ソフト支配型M戦略を1週間とってきたのですが、なんと、プレゼントを贈ってくれた方が多数。iOS SDK Hacksとらドラ! キャラクターソングアルバムレッドブル、そして逢坂大河のフィギュア(第10話Version)をいただきました。なんという豪華な・・・というか偏った誕生日w こんなにお祝いしてもらえるのは初めてかもー。プレゼントをくださったみなさま、どうもありがとうございました。

スライド05 スライド07

本当はすべらない話をする、ということになっていたのですが、準備できなかったので、今回は別のお話をします。

スライド09 スライド10

現在、2冊同時進行で翻訳作業中です。どちらもとても良い本です。早くみなさんに紹介したいところ。

スライド11
スライド12

ついでに一言言っておくと、今年のセガのラインナップが集中しすぎて、時間もお金も干上がりそうな状態です。分散していただけると助かります!ちなみに、ヴァンキッシュも買いました!地獄の底までセガに付いていきます!全部買います!ソニック4はiPhone版と据え置き機で内容が異なるという噂なので両方買わざるを得ないですね。というか、このソニック攻勢に振り切れないで付いてこれている人はどれだけいるのか・・・

(補足)発表時は忘れていましたが、XBoxLive Arcade版のソニックアドベンチャーと、ソニックカラーズのサントラも出ます。サントラはとりあえず買いました!すぐに絶版で買えなくなるのが目に見えているので。

スライド13
スライド14

さて、ここからが本番です。つまみぐい勉強法を書いた時のこと、その後のことについて話をします。

スライド15続きを読む
posted by @shibukawa at 02:11 | Comment(126) | TrackBack(0) | プログラミング はてなブックマーク - つまみぐい勉強法。その後。

2010年06月28日

わたしの考えるウソクラウド


taken by Jo Peattie under CC BY-NC-SA

以前、「クラウドの定義がクラウド化」しているので・・・というブログエントリーを書きました。その後、いろんな人と話をしているのですが、「クラウドの定義がわからん」「これ本当にクラウド?」みたいな話も色々出るので、僕なりに「これはクラウドと名乗っているかもしれないけど、クラウドじゃないと思う」というのを形式知化してみます。

もちろん、僕の考えがすべてというわけではないし、まだ「クラウドとは何か?」というのを一本化しようという流れもないと思うので、みなさんも僕の意見が違うと思ったら、ご自分で「これが私の考えるクラウド」をブログか何かで表明されるといいと思います。

「弊社のクラウドサービスでは、サーバを1台から提供します」

マシンを1台から提供してくれるらしいです。OSも選べるらしいです。初期設定には2週間の期間と、初期設定費用がかかるらしいです。そんでもって、1週間ぐらいで変更に応じてもらえるそうな。

いや、それは単なるホスティングサービスでは?

イベント運営サイトで、予想以上にユーザ数が急激に増えて、予定していた台数では裁ききれない!という状況や、とてつもないバッチ作業が発生したときに、数百台並列させてぱっと1晩で終了させますよ、というのに対処できるのがクラウドのメリットだとすると、そのサービスではクラウドのメリットは享受できないです。きっと。

「弊社のクラウドサービスでは、どこからでもデータにアクセスできます」

何でも、データはサーバ上にあるから、家からでも、会社からでも、iPhoneからでも、Androidからでもアクセスできるそうですよ。便利ですね。サーバはサービス提供者のデータセンターに置くので、ユーザが各自準備しなくてもいいそうですよ。

いや、それって単なるウェブサービス

いにしえの、PerlのCGIで書かれたWikiWikiWebだって、データはサーバ上ですよ。ケータイからでもアクセスできます。でもね、それって別に特別なことじゃないと思います。クラウドになって、何か新しいメリットがあるのか?というと、まったく今まで通りです、という説明しかできないと思います。データセンターの運用代行も、別に前からあった話ですしね。

「弊社のクラウドサービスでは、様々なウェブサービスの連携ができます」

ウェブ上にある、いろんなサービスを組み合わせて、個人個人にあったサービスが提供されるそうです。なんだか未来的ですよね!いろんなページにばらばらにあった情報を一度に見られるんですから。

それって単なるマッシュアップでは?

サービスごとにシステム化して、APIを提供して、軽量のフロントエンドで組み合わせる。たとえば、こくちーずでは、イベントの開催場所の地図はGoogleマップです。地図情報の更新はopakenさんががんばらなくても、新しく開通した高速道路情報もばっちり反映されます。イベント関連のTwitter情報も表示できるようになりました。でも、これはAPIベースでサービスを組み合わせるという、Web2.0の考え方です。クラウドではないです。

クラウドのメリットは目には見えない

publickeyブログ経由で知った、MicrosoftのAzure関連のブログエントリーによると、クラウドのメリットは次の4点とのことです。

  • On/off batch job computing
  • quick start-up (with no need or money to build out a private data center
  • unpredictable bursting
  • predictable bursting

バッチのジョブ処理を大規模に行ったり止めたり。もしくは、データセンターを構築しないでも、すばやくサービスインする。予想外にユーザ数が増えても大丈夫。予想できるユーザ数の増加(その後の縮小)に関しても対処できる。そんなところですね。ちなみに、このメリットは、サービス提供者側の視点ですので、サービス利用者(サービスにお金を払う人)視点でメリットを整理すると、次の2点に集約されると思います。

  • いつでも落ちないサービス
  • いつでも速度が安定しているサービス

たとえ、サッカーのワールドカップでゴールを決めたり、新年あけましておめでとうの瞬間だったり、テレビで天空の城ラピュタが放送されて、例のシーンが放送されたとしても、ユーザ数の増加に応じてフロントエンドの数を増やして、許容量以上のアクセスが来ても落ちないようにしたり、それ以上にサービスの性能を維持したり・・・あるいは、大量のデータ処理が必要になっても、それに応じたマシンを利用すれば、データ量に限らず必ず定数時間で処理が終わりますよね?(作業が完全並列の場合)。そのためのインフラ技術の総称がクラウドなのかなぁ、というのが僕の理解です。プロビジョニングと分散DBの2つ(後者はサービスによってオプション)が鍵である、と思っています。

また、数台のマシンが落ちたり、ハードウェアが故障しても、サービスを止めずに、マシンを入れ替えたり・・・というのができるのも、特徴だと思います。ただ、どちらにしても、ユーザから見ると「落ちない、遅くならない」というだけの話ですよね?

なので、クラウドのメリットをユーザ視点で見ると、「ムーブメントは日本製です」という時計と同じようなものかと思います。サービスそのものの内容を規定するものではないと思っています。

プライベートクラウドはクラウドか?

社員数が5桁いるような会社があったとして、勤怠管理システム(朝、晩のみピーク)、社員食堂管理システム(お昼だけピーク)のようなサービスを仮想化し、付加に応じて処理するマシン数を変化させて、処理のスピードが落ちないようにする、というのを実現すれば、それはクラウドだと思います。社員が対象であれば、需要はある程度予想できるでしょう。まぁ、それ以上にプライベートクラウドを組んでメリットが出るには、相当大きな組織じゃないと見返りは少ないかもしれませんが・・・

ということで、

僕なりに考えをまとめてみました。最初にも書きましたが、現時点では、人によって色々な回答があると思います。これだけが正解ではないと思うので、色々他の方も表明してもらえるとうれしいです。僕としては、答えが欲しいのではなく、こういう議論がしてみたいな、というだけですので。

posted by @shibukawa at 20:12 | Comment(255) | TrackBack(0) | プログラミング はてなブックマーク - わたしの考えるウソクラウド

2010年01月03日

「クラウドの定義がクラウド化」しているので・・・


taken by MorBCN

IBMがテレビCMするし、ニュースにも出てくるし、そろそろクラウドの定義がクラウド化してきているので、オレオレ定義をブログに書いてみることにします。他の人も色々書いてみるといいよー。トラックバック歓迎。

クラウドは賃貸住宅

僕のクラウド的な考えを一言で言うとこれです。Python作者で、現在はGoogleでGAEの開発に携わっているというGuidoがブログに書いていた言葉ですが、これが端的にクラウドの考え方を表していていいのではないかな、と思っています。もちろん、これは単なる考え方であって、これをインプリメントするための各種アイディアもセットかな、と。

cloud

周辺技術

サーバを賃貸にするためには、それを支える技術が必要になります。分散のKVSなんかは、マシン数を自由に変更した場合に、その分レスポンスを向上させたり、データの信頼性を向上(マシンが壊れたときの損失の低減)することができます。Amazon EC2やGoogle App Engineのような仮想のプラットフォーム/ハードウェアは、負荷に応じてフロントエンドの数を変えることで、急激なアクセス数増加にも耐えられるようになります。近年だと、映画(アバター)の予約とか、イベントのサイト(箱根駅伝?)で、「見られないよ−」という悲鳴がでたりしますが、そういうのを防ぐことができますよね。後は、大量のデータ処理のMap Reduceなんかも、マシンの数に応じて柔軟に処理速度を変更できるので、賃貸のためのベース技術になります。

RDBのスケール話しもあるみたいだけど、技術的なところを押さえていないので書いてません。誰か教えてください。Oracleも1024台までスケールするらしいです。お財布が一瞬でぶっ飛びそうなのでコワイですけど。

メリット

賃貸にすれば、最初に大きな先行投資をしなくても、サービスを開始できます。ユーザ数に応じてサービスの規模を拡大できるので、スタートアップを迅速に行えます。予測するという作業コストも軽くできます。

また、マシンの台数が多くなれば、ムーアの法則の恩恵を受けやすくなります。数台で4年償却とかなってしまうと、2年でCPUの集積度が倍になって、性能が上がって消費電力も下がってストレージも大きくなって・・・というメリットを受けにくくなります。マシンを集約して、頻繁に最新のハードウェアを導入して古いハードウェアと入れ替えていくようにすればバッチリです。

まとめ

ベース技術、コア、メリットが結構ぐちゃぐちゃで、あげくの果てには「ネット使っていればクラウド」なんてことまで言われているので、僕なりに整理した次第です。これだと、プライベートクラウドなんかの説明はしきれないので、どなたか、みんな各自ブログで意見を書いてもらえたら、おいしく読ませて頂きたいと思います。

KVSとかMapReduceとか、いろいろ、それぞれ絵でも描こうと思ったけど、疲れたので各自ぐぐってください。

posted by @shibukawa at 12:52 | Comment(74) | TrackBack(1) | プログラミング はてなブックマーク - 「クラウドの定義がクラウド化」しているので・・・

2009年12月02日

[IT技術者限定]本の執筆にあたってアンケートのご協力をお願いします。

こちらではあまり書いてませんでしたが、今本を書いています。なるべく現実的で役に立つ本にすべく、リアルな声をなるべく載せたいな、と思いアンケートを募集することにしました。

なお、本の企画が終わってもこのデータはいろいろ幅広く活用できるかな、と思うので、個人情報に注意しつつ、結果のデータはクリエイティブコモンズ(商用利用可)で公開する予定です。他の本の企画やら、プレゼンやら、LTやら「集合知の勉強したいけどサンプルデータが欲しいな」という人やら、いろんな人に使ってもらいたいと思っています。

他のコミュニティにも参加されている方は、可能ならそちらにも転送とかしていただけるとうれしいな、と思います。一応、IT技術者向けの本なので、IT系限定でお願いします。

一応、協力していただいた方の中から、抽選で書籍をプレゼントしたいと思っています。なお、抽選はPythonのrandomモジュールを使って厳正に行う予定です。3つとも書いてもらったら確率3倍かな?ぜひぜひ、お願いします!

(12/2に追記):アンケートリストは3つありますが、最初の質問集は全員の方が対象です。なおかつ、「家庭持ちの方向け」の方は、みなさんのステキなワークライフバランス術を、「勉強会主催者」の方は、その運営テク&悩み、野望なんかを追加でお答えいただけると助かります。最初の書き方だと、勉強会主催者の方は3つ目だけと捉えられても仕方がない書き方になっていました。すみません。

posted by @shibukawa at 00:41 | Comment(127) | TrackBack(0) | プログラミング はてなブックマーク - [IT技術者限定]本の執筆にあたってアンケートのご協力をお願いします。

2009年10月10日

cppreference.comの翻訳を開始しました

cppreference

怒濤のTornado翻訳の同士のymotongpooさんと一緒に、cppreference.comの翻訳をし始めました。

大学時代に勢いで翻訳したけど、社会人になって放置状態でした。サーバのマシンが不調になって、親切な方がサルベージしてくれたりもしましたが。CSSもしらない時代にテーブルレイアウトとかのバッドノウハウ満載で日本語ページを作りましたが、今は、多言語対応のWikiになっているので、そちらの仕組みを使って翻訳を書いていこうと思います。

あまり暇な人はいないと思うけど、もしも参加される方は、cppreference.comのサイトにアクセスして、ユーザを作ってどんどんやっちゃってください。あと、通常共同翻訳は「だ・である」調が多いのですが、読む人のことを考えて「です・ます」調でやります。だ・である調は堅くて古くさく見えるんですよね、とベストセラーの書き方講座で習ったので。Tornado翻訳のときも大きな問題はありませんでしたしね。読みやすさ重視で。

時間はかかるかもしれませんが、少しずつ、のんびりやっていこうと思います。

posted by @shibukawa at 23:03 | Comment(178) | TrackBack(0) | プログラミング はてなブックマーク - cppreference.comの翻訳を開始しました

2009年09月03日

Sphinxのドキュメントの日本語訳しました

sphinx

ドキュメントを作成したくなってしまう魔法のツール、Sphinxのドキュメントを日本語訳しました。普通に使う分には問題ない、レベルまで完了しました。残る部分もぼちぼちやっていきますが、拡張機能の部分は最後まで手を付けないと思うので、自分で拡張したい方はがんばって英語(とソースコード)を読んでください。

  • reStructeredText(reST)採用で、HTMLやPDFが作成できる
  • reSTを拡張して様々な記述が簡単できるようになっている。コードハイライト、BNF、モジュール、クラス、関数などのソースコードのドキュメンテーションなど
  • 1ファイル変換ではなくて、複数ソースの"プロジェクト"として管理できて、ドキュメント間リンクの面倒を見てくれる。
    • 目次の生成
    • 用語集とのクロスリファレンス
    • モジュールインデックス、全体インデックスなど
  • 変換時に用語インデックスをJSONで出力し、JavaScriptだけの全文検索エンジン内蔵。

使い勝手としては

  • sphinx-quickstartコマンドを起動。質問に答えていく
  • フォルダができるので、reStructuredText形式のファイルを追加、目次にファイル名を入れる
  • 必要に応じてディレクティブ群を駆使してマークアップ
  • makeコマンドを実行。
  • ドキュメント完成!

という感じです。最近よくある、Webのフレームワークみたいな感じですよね。

Sphinxならではの部分では、特に用語集のところが秀逸。ロールというタグで意味を指定していくと、そのドキュメント内限定"はてな"みたいなことができます。ロールは拡張機能を作成することで、増やすことができます。世の中みんながSphinxを使うとセマンティックウェブの世界に近づきますよね。自分の閉じた世界の中での意味体系を自分でゼロから構築できます。Sphinxの先にWebの未来があるのを感じます。 通常のHTML生成では、人間が読みやすいドキュメントを作り、その裏でXML形式で意味体系を機械的に処理できるフォーマットで出力したり、これから流行る?マイクロフォーマットで出力したり、といったことが考えられます。Zopeのときもそうだったけど、時代を置き去りにしている感を感じさせてくれるツールです。「それPythonでもうできるよ」的な。Pythonやっていて良かった、と本気で思います。

それはそうと、ドキュメントを作成したくなる、ツールという触れ込みは伊達じゃないです。すでにブログで紹介した、Erlang Efficiency Guideの日本語訳でも使用しましたが、この程度の小さいドキュメントwでは、ディレクティブがほとんど使えず、「力をもてあましている」という感じがするんですよね。もともとはPythonのドキュメントを作成するのを目的に開発されただけあって、言語仕様、ライブラリリファレンス、C言語拡張、チュートリアルなどなど、1部だけ切り出してきても本を一冊書けちゃうよ、というドキュメント群の規模ぐらいないと「物足りないなぁ」なんて思ってしまうのかもしれません。仕事でも使って見ようかな。

毎度、面白いものを紹介してくれる、id:Voluntasには感謝です。

posted by @shibukawa at 08:17 | Comment(210) | TrackBack(0) | プログラミング はてなブックマーク - Sphinxのドキュメントの日本語訳しました

2009年08月20日

Erlang Efficiency Guideの翻訳をやりました

erlang efficiency guide

Erlangの実践的なテクニック集は実装について色々書かれている、Erlang Efficiency Guide翻訳しました。翻訳をすればErlangに詳しくなれるだろう、というもくろみで始めましたが、ある程度はErlangが分かってきた気がします。さらに、@szkttyさんにいろいろ深い知識をもらえたりして、すごく勉強になりました。

というわけで、翻訳を公開します。Erlangを勉強しようという人、実践で使っている人など、いろいろご活用ください。

Erlang Efficiency Guide日本語訳

twitterやmixiでは既に告知したけど、反応の薄いこと、薄いこと。ユーザ数がかなり少ないというのが実感できます。ブルーオーシャンですね。Erlang歴1ヶ月ぐらいだと思うけど、部分的には僕が日本で一番詳しかったりして、なんて思ってしまうほど。今後もErlangはいろいろ勉強していきますよ!次はwxErlangかな?ErlangでGUIなんて、たぶんやっている人は日本でもかなり少ないはず。

posted by @shibukawa at 10:35 | Comment(181) | TrackBack(0) | プログラミング はてなブックマーク - Erlang Efficiency Guideの翻訳をやりました

2009年08月10日

中間データ形式について考える


by oschene under CC

@voluntasに、SQLiteをプログラミング言語間の中間ファイルに使っている、ということを言ったらちょっとビックリされたので、僕なりの中間ファイルに使う基準とかを軽くまとめてみます。あんまり厳密なベンチマークとかは取ってません。フィーリングで書いてます。

SQLite

Pythonをはじめとして、多くの言語でデフォルトで使えちゃったりする、オンメモリRDBです。Rubyも早く同梱してくれればいいのに。出力したデータの一部だけを利用するような、ランダムアクセスの場合は効率がいいです。

  • 読み込むプログラムは、作成したデータの一部しか利用しない
  • ちょっと凝った検索がしたい
  • ちょっとした構造体並のデータ構造が表現したい。型も
  • 表形式のデータ

KeyValueストア

あんまり使ってないけど、きっとSQLiteよりは高速なんだろうね。

  • 読み込むプログラムは、作成したデータの一部しか利用しない時に
  • 簡単なデータ構造さえあればいい。
  • 一番外枠のデータ構造が辞書型

XML with SAX

続きを読む
posted by @shibukawa at 23:26 | Comment(112) | TrackBack(0) | プログラミング はてなブックマーク - 中間データ形式について考える

2009年05月22日

flexigridウェブサイト移転

flexigrid

4ヶ月前のブログの記事でflexigridを取り上げましたが、最近、新しいサイトに移っているのに気づきました。

最新版(といっても、2009年5月現在、2008年の7月のものが最新みたいです)を落としたいという方はぜひどうぞ。ちなみに、ウェブサイトで紹介されている長所はこんな感じでした。

  • リサイズ可能なカラム
  • 高さ、幅をリサイズ可能
  • かっこいいテーマ
  • ふつうのテーブルから変形可能
  • ajaxのデータを取得して表示が可能に(XML, JSON[new])
  • 項目の多い表でのページング
  • カラムの表示、非表示
  • ツールバー、検索
  • とっつきやすいAPI
  • 他にもたくさん!

とのことです。

posted by @shibukawa at 01:57 | Comment(249) | TrackBack(0) | プログラミング はてなブックマーク - flexigridウェブサイト移転

「ソースコードをきれいに書く唯一の方法」は4つある


taken by
Manuel_Marin

なんとなく書いたら、アクセス数が10000件超えたソースコードをきれいに書くための方法の記事。r-westさんの「きれいなソースコードを書くために必要な、たったひとつの単純な事」と、uwiさんの「誰がためのきれいさ?」と、フォローのトラックバックまで頂きました。僕のも含めてそれぞれスタンスが違いますが、どれが正しいとか、どれが一番いいかというのはないと思っています。人によってどっちがいいかは別れるはずです。人によっていちばん苦労がなくて、モチベーションがあがる方法がそれぞれの人にとっての正解である、というのが僕の考えです。

モチベーションマネージメントというのがよく言われるけど、「モチベーションを上げろ」と言われて上がる人なんていませんよね?僕がそのモチベーションについて考えるときに、一昨年からよく利用させてもらっているのが、岡田斗司夫さんの人生の取り扱い説明書です。「人生テスト―人を動かす4つの力」という本も出ています。絶版みたいですが。ウェブサイトを見れば本の内容はほぼ全部載っていますので、ムリに本を買う必要はないです。

モチベーションを上げる4つのベクトル

manual_for_life2

この人生の取説では以下の4種類に人を分けます。それぞれのタイプごとにモチベーションが上がるきっかけが違います。つまり「唯一の方法は4種類に分類できる」となります。それでは、それぞれのタイプを軽く説明します。もし、もっと詳しい情報や、具体例が欲しいという方はWebサイトの方へ。

続きを読む
posted by @shibukawa at 01:35 | Comment(414) | TrackBack(0) | プログラミング はてなブックマーク - 「ソースコードをきれいに書く唯一の方法」は4つある

2009年05月09日

きれいなソースコードを書けるようになるためには

by chazmatazz

「構造のきれいなプログラムを書けるようになるためにはどうすればいいのか?」という質問を受けたので、「はて?どうしているだろうか?」と考えてみました。あ、形式知にきちんとなっているようなテクニックみたいなもんじゃなくて、モノローグなので、あまり凝ったものは期待しないように。あ、Pythonに限定してますが、他の言語でも似たようなものはあると思いますので、脳内変換をお願いします。

事前の設計はしません

「こういう処理が必要」「こういう計算しなきゃね」みたいなロジックや「要件はこうかな?」ということは事前に考えたりするけど、クラス構造とかは基本的に考えないで手をつけます。そして、ある程度規模が大きくなって「あ、ちょっとこの関数大きすぎて理解しにくいなぁ」と思ったら分割してみる、という感じです。これの繰り返しです。事前の設計では分からないことが多すぎて、最適解にはたどり着けません。リファクタリングというやつですね。アジャイルな見積りと計画づくりにも書かれていますが、設計を徐々にしていくというのに否定的で事前にがんばろうとしちゃう人/途中でクラス構造などを変更しない人は、「実装中の学び」をゴミ箱に捨てているのと同じなので、もったいないことをしていると思います。

最初は単なる関数で実装し、関数同士のグループが見えてきたり、関数の呼び出し順が固定化されてきたら、まとめてクラスメソッドにしてクラスという枠の中に整理したり、複数インスタンスを作る必要があれば、インスタンスメソッドにしたり・・・。クラス同士が似てれば共通の親クラスを用意してみたり、メソッド名を修正したり・・・

普通の人よりはクラスメソッドとか、グローバルな関数やグローバル変数(といってもPythonの場合はモジュールという名前空間で分割されるので、完全なグローバルにはならない)は比較的多く使っているかもしれません。一度しか呼ばれない処理で独立したもの、あるいは状態を持たないものなどは最後まで関数のまま残ったりします。Javaみたいにクラスに入れればオブジェクト指向になって美しい設計になる、なんてことはこれっぽっちも思ってません。責任区分を間違ったクラスは理解を妨げます。そんなクラスを作るぐらいなら、フラットなモジュールレベルの関数の方が害が小さいと考えています。

重要なのは内面を見ること

続きを読む
posted by @shibukawa at 11:17 | Comment(177) | TrackBack(3) | プログラミング はてなブックマーク - きれいなソースコードを書けるようになるためには

2009年04月13日

プログラミング言語をマスターするということ

年下で「こいつには勝てん。すごい人だ」と思う人は年々増えていきますが(まぁ、あたりまえだけど)、その中でもトップクラスの西尾さんが面白い内容のエントリーを書かれていました。

「言語をマスター」というのはどういうレベルを言うのか・・・うーん。僕がマスターしていると言える(胸を張っては言えないかも)のは、PythonとC++かな。N88-BASICは・・・もうさすがに書けないだろうな。10年以上書いてないし。

僕がマスターした!と思うのは、基本文法をマニュアルを見ないで使えるようになるのは当然として(あまりマニアックなのは置いておいて)、後はその言語ならではの設計手法と思想が理解できたとき・・・かな?Pythonであれば、辞書型と配列を十分に活用した設計ができるようになったあたりで「マスターした」という実感を持った気がします。ライブラリはマニュアルを見ればいいしね。Pythonならではの設計ができるようになれば、人に教えたりもしやすくなりますしね。

僕の中で時間がかかっているのはJavaScript。jQueryのおかげでそれなりのアウトプットを出すのはできるようになりましたが、クラス(もどき)を作ったり、名前空間がどうなっているのか?などの知識はまだまだ足りない気がしています。そういう意味では、処理系が裏でどう動いているのか、というのが完全でなくても体感覚で実感できたかどうか、というのが僕の中のマスターの基準かも。

C++の設計と進化の本だったり、Zen of Pythonだったり、僕はそういう情報が好きなんですよね。「体感覚」みたいな自分基準で考える人もいるだろうし、「人に説明できる」「認定試験」みたいな他人を介在した視点で考える人もいるだろうし、人によって様々だと思うけど、「自分がマスターしたと思えた瞬間」の振り返り、というのは自分の考えを見るには最適かもしれませんね。

posted by @shibukawa at 00:43 | Comment(67) | TrackBack(1) | プログラミング はてなブックマーク - プログラミング言語をマスターするということ

2009年01月19日

「flexigrid meets Django!」

最近はJavaScriptのライブラリとしてはもっぱらjQueryを使ってます。少ない行数でシンプルに書けるのがよいです。そんなにJavaScriptは得意じゃないのと、Pythonが好きということもあり、コードがシンプルに書けるのところが気に入ってます。jQueryはプラグインが何種類もあるのですが、その中で、少ない行数でソート機能、検索機能などいろんな機能を持った表を作成できるのがflexigridです。使ってみたのでメモをまとめてみました。

GTDソフト開発中

まずは関連ページ。

まずflexigridですが、以下のような機能があります。上2つに関してはmycomの日本語の紹介が分かりやすいのでそちらをどうぞ。

  • 既存の<table>タグをキレイに整形
  • テーブル、カラムの伸縮および、表示のON/OFF
  • Ajaxによる動的な表の読み込み
  • 項目のソート
  • ページング
  • 検索(というかフィルタ)
  • 追加、削除などのボタンの追加

このエントリーでは下の5つに関してのメモになります。続きをどうぞ。ちなみに動くサンプルは用意してません。このエントリーはflexigridに関するチュートリアルではなくてエッセーですので。

続きを読む
posted by @shibukawa at 00:00 | Comment(271) | TrackBack(1) | プログラミング はてなブックマーク - 「flexigrid meets Django!」

2009年01月18日

「コードハイライトのテスト」

posted by @shibukawa at 00:00 | Comment(137) | TrackBack(0) | プログラミング はてなブックマーク - 「コードハイライトのテスト」

2008年12月06日

「オブラブ望年会2008(1)」

オブラブ参加してきました〜。LTだけじゃなくてRTにも参加してきましたよ。僕も今回は尾関さん同様、休みを取りましたw だって最近渋滞がひどくてたどり着けない感じがしたので。ま、まずはLTのスライドでもどうぞ。

始まる前に接続テストでプロジェクタにトップページを表示していたのに、角谷さんが顔色一つ変えずに、黙々とプロジェクタの調整をされているのを見て、「今回は負けた」と思いましたw 表紙のフォント、配置、丈夫の謎の黒いバー、そして強烈に遠近法を感じさせる背景写真。ちょっぴり(15分のほど)がんばったのに〜

今回はね。タイトルだけ最初に思いついてね。それから内容を埋めていきました。本当はベスト30ぐらいから発表したかったんですが、それをやってしまうとそれだけで終わってしまうので遠慮しておきました。マイブームだったランチェスター経営とかね。それはまたブログに書く予定です。

続きを読む
posted by @shibukawa at 00:00 | Comment(54) | TrackBack(0) | プログラミング はてなブックマーク - 「オブラブ望年会2008(1)」

2008年10月20日

「jQuery面白い」

Mochikitは一通りさわってみたけど、jQueryの方が面白いね。JavaScriptというかプロトタイプ言語っぽさがすごく出てる。jQueryはMicrosoftも採用し、大手でも色々使われているということで、次世代のJavaScriptのAjaxフレームワーク(という言い方が適当か分からないけど)の中では大本命になりつつあるんじゃないかな、と思います。

tableHoverというのを使ってみて、面白かったのでちょっと手を加えて、選択された時点でイベントハンドラが呼ばれるようにしてみました。サンプルはここ。aタグはないけど、表の行が選択されると、その行の中の、"name"という属性を持っているタグのテキストを表示します。少ない行数でできてしまうのがびっくり。

で、作ってみて、作者にフィードバックしようと思ったけど、tableHoverの最後の方のコメントに「jQueryの1.2.6からは名前空間のイベントがサポートされたよ」とさらっとコメントに書かれている。あらら、僕の改善はムダになってしまったか。でもお勉強になったからいいや。

jQuery本はこの前の土曜日にジュンク堂で購入したのだけど、実家に忘れてきてしまったのでまだ全然読んでません。この勢いだと週末に読むまでにだいたい理解してしまいそうだけど。
posted by @shibukawa at 00:00 | Comment(9) | TrackBack(0) | プログラミング はてなブックマーク - 「jQuery面白い」

2008年10月02日

「小悪魔ageha 2008/11号」

ageha200811

ソフトウェア開発者に、未知の分野である小悪魔agehaを紹介するということをしてしまった手前、みんなの熱が下がる or もっと熱心な人が出るまでは面倒を見るのがフロンティアを切り開いた者のさだめ。ということで今月も定点観測です。実はあのスライドは2008年の9月号だけを見て作ったので、実は勘違いもあったかも、という心配もありました。でもそんなのは杞憂でした。11月号はさらにすごかった。

続きを読む
posted by @shibukawa at 00:00 | Comment(19) | TrackBack(1) | プログラミング はてなブックマーク - 「小悪魔ageha 2008/11号」

2008年07月20日

「『初めてのRuby』 出版記念トーク「幸せなRuby生活に必要なこと」」

参加してきました。執筆するにあたってのyuguiさんの思いがしっかりとした言葉で語られていました。主役を奪う勢いの角谷さんの早いトークと、それにも負けない強い信念が感じられるyuguiさんのトークの掛け合いのバランスも良かったです。

初めてのRubyトークセッションその1続きを読む
posted by @shibukawa at 00:00 | Comment(146) | TrackBack(0) | プログラミング はてなブックマーク - 「『初めてのRuby』 出版記念トーク「幸せなRuby生活に必要なこと」」
検索ボックス

Twitter

www.flickr.com
This is a Flickr badge showing public photos and videos from shibukawa.yoshiki. Make your own badge here.
<< 2017年05月 >>
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
最近の記事
カテゴリ
過去ログ
Powered by さくらのブログ