タグ

programmingとdevelopmentに関するjo-taroのブックマーク (11)

  • MinGW - Wikipedia

    MinGW(ミン・ジー・ダブリュー、Minimalist GNU for Windows)はGNUツールチェーン、GCCをWindowsで利用できるようにする開発環境である。Windows APIのためのヘッダファイルを含んでおり、GCCでネイティブWindowsアプリを開発できる。MinGW自体はほぼ開発終了だが、後継のMingw-w64が積極的に開発されている。 MinGWプロジェクトは32ビット環境向けに主に2つのパッケージを配布している。ひとつはWindowsに移植したGCCで、コマンドラインやIDEから利用できる。もう1つは軽量のUNIX風シェル環境であるMSYS (minimal system) である。端末エミュレータのrxvtと開発ツールのautoconfを実行するためのコマンド群も含まれている。これらはCygwinをフォークして誕生した。 Win32 APIを利用するため

  • Life is beautiful: ソフトウェアの仕様書は料理のレシピに似ている

    先日、経済産業省向けの仕事をしている知り合いと事をしたのだが、彼によると経済産業省の今の悩みは、「IT産業の階層化の弊害によっておこる下流のプログラマーの収入の低下」だそうである。「プライムベンダー」と呼ばれる「上流コンサルタント」たちがインドや中国にも仕事を発注できることを理由に、激しく値切り始めたために、今やわずか一人月30万円というケースもあるという。 こんな話を聞くと当に悲しくなる。まず第一に「プログラムを書く」という仕事は簡単な仕事ではない。数学的な頭を持っていないとかなり辛いし、基礎がしっかりと出来ていないとろくなソフトウェアは作れない。物価の安いインドや中国なら許せるが、米国よりも生活費の高い日で一人月30万円とはあまりにも低すぎる。 「彼らは下流のエンジニアで、詳細仕様書に従った通りのプログラムを書くだけの簡単な仕事をしているから給料が安い」という説明を聞いたことがあ

  • O/Rマッピング技術の進化が皮肉にも助長している「えせMVC症候群」

    昨日の「Ruby on Railsの『えせMVC』の弊害」というエントリー。若干「釣り」の要素が含まれたタイトルが功を奏したのか、たくさんのフィードバックがいただけた。そんな中で見えて来たのは、この問題はRailsに限った話ではなく、業務用アプリケーションで使われているJavaや.Netの世界でもよく見られる問題だということ。 その「問題」とは、ActiveRecordに代表されるO/Rマッピングの技術の進化が、来のMVC(そしてオブジェクト指向そのもの)のメリットを無視した「えせMVC」な設計を助長している、という問題である。 ・MVCやオブジェクト指向を表面的にしか理解していないエンジニアが増えている(ここが根的な問題) ↓ ・SQLを自分で記述しなくて良いO/Rマッピングはとても魅力的(これはこれで別の問題を含んでいるが、このエントリーではあえて突っ込まない) ↓ ・O/Rマッピ

  • Ruby on Railsの「えせMVC」の弊害

    先日のエントリーでも少し触れたが、Ruby on Railsの最大の問題点は、それが持つ「一見そのフレームワークがMVCの形をとりながら、MVCの最も大切なところを外している『えせMVC』である」点にある。MVC(Model View Controller)がなぜ必要かを根底の部分でちゃんとと意識せずにRailsアプリケーションを作ると、後々ひどい目に会うので注意が必要である。 その意味では「RailsでMVCを学ぶ」などもっての他だし、「JavaにもRailsと同じようなフレームワークを作って業務用アプリの開発を効率化しよう」などという発想もとても危険である。 ということで、今日はまずはMVCの解説から。 MVCの発想の根底には、「モジュール化と情報の隠蔽により、プログラムがスパゲッティ化するの(コード間の相互依存関係が複雑に入り込んでしまってにっちもさっちも行かない状態になること)を避

  • HTML5時代の「運営しやすいアーキテクチャ」の話

    増井君と二人でPhotoShareというサービスを立ち上げてもう15ヶ月になるが、いろいろと学んだことがある。その中でもつくづく思うのは、サービスを作り上げる段階よりも、運営のことを考えた設計が大切なこと。つまり、メンテナンスしやすい、テストしやすい、多少のミスをしても大丈夫、こまめなアップデートがしやすい、作業分担がしやすい、などなどである。 そんななかで強く感じるのは、「AJAXを見た目や使いやすさの面だけに利用するだけでなく、『運営しやすいサービス』を作るのに利用できないか」ということである。 私のイメージするアーキテクチャを図にするとこんな感じになる。 まず一番の特徴は、テンプレート等を利用したHTMLのダイナミックな生成をすべてやめて、データ(JSONもしくはXML)だけをダイナミックに生成するようにし、HTMLはスタティック・ファイルをサーバー側に置いておく(上の図で、CSS,

    HTML5時代の「運営しやすいアーキテクチャ」の話
  • 良いユースケースを書くための発想法

    システムの要求仕様を決めるのに、ユースケースを使うことがよくあります。 しかし、ユースケースは上手く書けない、何を書けば良いのか分からない、という人も、少なくありません。 たいていのユースケースは、アクターが1人2人いて、アクターが行える操作がいくつか丸で描かれて、それらが線で結ばれているだけの、とてもシンプルなものです。しかし、シンプルすぎて、何の役に立つのか分からない、という人もいます。 役に立つユースケースを書こうとして、細かいことまで書き込みすぎてしまう人も良く見かけます。しかし、それは誤りです。 ユースケースは何のために書くのでしょうか。ここでは、ユースケースの目的をはっきりさせて、良いユースケースを書くための考え方を紹介します。 開発者は、細かいことまでユースケースに書き込みがち Design Wave Magazine 2007年5月号別冊付録「組み込みシステム開発者&LSI

  • @IT:Spring Frameworkで理解するDI(1)

    DI:依存性の注入とは何か?:Spring Frameworkで理解するDI(1)(1/3 ページ) Javaエンジニアであれば最近、「Dependency Injection」や「DIコンテナ」「Spring」、または「Seaser2」といった名前を目にしたことがあるのではないでしょうか。これらは次世代のEJB(EJB 3.0)に取り込まれる動きがあるなど、最近非常に注目されているキーワードであり、今後のJava開発を語るうえで避けては通れない概念の1つになるとされています。 この連載は、「Spring」というフレームワークを利用して、J2EE開発における「Dependency Injection(DI)」というデザインパターンから得られるメリットを紹介し、J2EEの今後の方向性を理解する助けとしていただくことを目的としています。 Dependency Injection:依存性の注入

    @IT:Spring Frameworkで理解するDI(1)
  • @IT:連載:【改訂版】初歩のUML

    ユースケースとは何か? なぜ必要か? 今回は、だれも書いたことがない視点から、オブジェクト技術者が理解しておくべきユースケースモデルについてのノウハウを解説します。そもそも、ソフトウェア開発には、必ず開発を行う目的があります。どんなソフトウェアであってもこの目的がはっきりしないと、よいソフトウェアなど作れるはずがありません。 筆者が初心者のころ、よく「構造化されたソフトウェアを考えてみよう」とか「継承を生かした何らかのソフトウェアを作ってみよう」といったことを計画し、自作ソフトウェアを作ろうと試みたことがありました。しかし、あえなくすべて失敗に終わってしまいました。「構造化」や「オブジェクトテクニック」が目的であっては何も作れないのです。 では、ソフトウェア開発にとって最も重要なことは何でしょうか。そうです、「ソフトウェアがどのような人に、どう使われるか」ということなのです。今回は、UML

    @IT:連載:【改訂版】初歩のUML
  • だれも教えてくれなかった外部設計の「極意」---目次

    外部設計書で最も大切なことは,「システム開発を依頼してきたお客様」(発注者)に読んでもらい,理解してもらうことです。外部設計書を,開発メンバーではなく,発注者に理解してもらうためには,「いかに発注者にとって分かりやすい外部設計書を作成できるか」と「レビューを通じていかに合意形成を図るか」が重要になります。連載では,発注者が理解しやすい外部設計書の書き方とレビューの方法に関する具体的なノウハウを解説していきます。 第1回 ユーザーと意思疎通が図れない外部設計書は危ない 第2回 [システム振舞い編]一覧表に一工夫入れることで漏れや重複をなくす 第3回 [システム振舞い編]全体を俯瞰でき,システム化範囲が一目で分かる業務フローを作成する 第4回 [システム振舞い編]発注者が理解しやすいシナリオの記述方法 第5回 [画面編]見れば“わかる”「画面レイアウト」の作り方 第6回 [画面編]画面遷移を

    だれも教えてくれなかった外部設計の「極意」---目次
  • 画面設計とか外部設計とか、もうやめようよ - masayang's diary

    昨日は特徴(Feature)、粗筋(Story)、脚(Scenario)でちょいと言及した「Feature, Story, Scenarioがごっちゃになりかけている」プロジェクトの人達とお話しする機会があった。 よくよく見ると、FeatureとFunctionとがごっちゃになっていた。 つまり、要件分析の段階で実装のことを考えていたのである。 なぜ、そうなったのだろう? 画面から要件分析をすると、こうなる どうやら要件分析する前の段階で「コンサルタント」の人達が、画面を使ってお客さんと「要件定義」をしていたらしい。 「この画面でこういうデータを入力すると、こんな画面に遷移します」みたいなやりとりがあったのだろう。 紙芝居感覚で交渉できるからわかりやすい。 だけど、先に画面を決めちゃうというのはいくつかの(そして時に致命的な)問題を抱えている。 実装をフィーチャとして捉える可能性。 例え

    画面設計とか外部設計とか、もうやめようよ - masayang's diary
  • Text of Steve Jobs' Commencement address (2005)

    Along with Stanford news and stories, show me:Student informationFaculty/Staff information We want to provide announcements, events, leadership messages and resources that are relevant to you. Your selection is stored in a browser cookie which you can remove at any time using “Clear all personalization” below. Clear all personalization

    Text of Steve Jobs' Commencement address (2005)
  • 1