サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
iteman.jp
"One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) テスト駆動開発 (TDD: Test Driven Development) は 動作するきれいなコード (Clean code that works) を書くことを目的とするソフトウェア開発手法であり、プログラム本体のコードよりも先にテストコードを書くという大きな特徴を持っています。筆者らは日常的に TDD を使った開発を行っており、Piece Framework のプロダクトの多くは TDD を使って書かれたものです。 TDD を実践するためにはテストを自動的に実行するための環境が必須であり、テストをすばやく実行できることが開発効率向上の重要なポイントとなります。Stagehand_TestRunner は、こ
まっつんです。今回は JetBrains の Meta Programming System を使って、DSL エディタの実装を行い、最後に Meta Programming System と TMF の比較を行いたいと思います。 MPS とは? Meta Programming System (MPS) は、IntelliJ IDEA や TeamCity といったプロダクトで知られる JetBrains によって、Apache License, Version 2.0 で提供されているオープンソースソフトウェアで、その名が示す通り メタプログラミング のためのシステムです。 書籍 ジェネレーティブプログラミング (IT Architects'Archive CLASSIC MODER) によると、メタプログラミング とは 「他のプログラムや自分自身を記述したり、操作するプログラムを記述
まっつんです。先日の 関西オープンソース 2009 でご紹介させていただいた Piece Framework の新しいプロダクト MakeGood ですが、今月 23 日にようやく最初のバージョンをリリースすることができました。早速皆様に使っていただけるよう、今回の記事では MakeGood の特徴と使い方をご紹介いたします。 MakeGood とは? MakeGood とは PDT にユニットテスト実行機能 (PHPUnit のみのサポート) を付与する Eclipse プラグインであり、快適な テスト駆動開発 (TDD: Test Driven Development) のための環境の提供を目標とするプロダクトです。バージョン 0.1.0 現在、以下のような特徴があります。 PHP Explorer および Package Explorer からのテストの実行 PHP Editor か
先日、今年の 1 月以来となる Stagehand_TestRunner の最新バージョン 2.7.0 のリリースを行いました。コマンドラインのテストランナーを提供するこのプロダクトは、テスト駆動開発 (TDD: Test Driven Development) をより快適にすることを目的としています。 今回は Stagehand_TestRunner の特徴と使い方をご紹介いたします。 Stagehand_TestRunner とは? Stagehand_TestRunner とは、PHPUnit や SimpleTest といった PHP のテスティングフレームワーク向けに書かれたテストの実行に特化した Piece Framework のプロダクトで、下記のような特徴があります。 指定されたディレクトリに含まれるテストの実行 指定されたファイルに含まれるテストの実行 指定されたファイル
最終更新日: 2010 年 2 月 13 日 Redmine や Trac などのプロジェクト管理システムを使う場合、チケットという単位で機能や不具合、タスクなどを扱うことになります。また、コーディング規約など常に気を付ける必要があることについては Wiki ページに書かれているのではないでしょうか。 では、チケットや Wiki ですべて問題ないかというと、そんなことはありません。例えば、チケットとして登録するには粒度が小さすぎるものや漠然としたもの、プロジェクトをまたがって確認したいものがあるでしょう。また、ソフトウェア開発を行っている場合、チケットとして登録済みのある機能を実現するために、実装する必要があることや気づいたことをその都度メモしたり、更新したいと思うかもしれません。このような要求は ToDo リストで管理できると便利です。 そこで、専用の ToDo リストプラグインの出番と
11 月 5 日 (金), 6 日 (土) に大阪南港 ATC にて KOF2010:関西オープンソース2010 が開催されます。Piece Project は 11 月 6 日 (土) の 17:00 から フレームワーク・ツールによるPHPプログラムの自動テスト と題したセッションを開催します。 さらに同日 19 時より懇親会 第3回関西IT勉強宴会+Piece Network 5 を開催します。
"One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) Roo とは? Roo のプロジェクトリード Ben Alex 氏はブログ記事「Jump into Roo for extreme Java productivity」で以下のように説明されています。 Roo is a sophisticated round-tripping code generator that makes it quicker and easier than you've ever imagined to create and evolve Spring applications. Even if you have reservations about code generation, it
言語ワークベンチ は ドメイン特化言語 (DSL: Domain Specific Launguage) を中心とするメタプログラミングのための環境であり、実例としては Intentional Software の Intentional Domain Workbench や JetBrains の Meta Programming System, Eclipse の Textual Modeling Framework などが挙げられます。 今回は 言語ワークベンチ として Textual Modeling Framework を使って DSL エディタの実装にチャレンジします。 外部 DSL と内部 DSL DSL は特定の知識分野 (ドメイン) 向けに設計されたコンピュータ言語であり、日本語では「ドメイン特化言語」あるいは「ドメイン固有言語」と呼ばれています。 DSL の熱心な支持者
マイクロフォーマット これまでに実装したビューにはメニューの ID や名称に対して明確なマークアップがなされておらず、このままではクライアントからの操作は困難です。この問題を解決するために マイクロフォーマット を使うことができます。 マイクロフォーマット とは人が読んで理解できる情報にマークアップを付加する手段です。マイクロフォーマット を使用することにより、ドキュメントに埋め込まれたデータに対するソフトウェアからの操作がより簡単になります。 カレンダーや住所など扱う情報の種類毎に マイクロフォーマット の仕様が策定されています。今回はメインメニューとサイドメニューの商品を表現するために、製品情報用の マイクロフォーマット である hProduct を採用することにします。 それでは hProduct に従って、メインメニュー、サイドメニュー、確認ページのテンプレートを変更しましょう。
今回の URI 設計の方針は、Comment の作成や削除は /comments ではなく /entries/{comment_id}/comments に対して行い、/comments は一覧の表示のみに使うというものです。 それでは実装してみましょう。まず Scaffolding で Entry と Comment のモデル、ビュー、コントローラを作成し、マイグレーションを行います。 script/generate scaffold Entry title:string content:string script/generate scaffold Comment comment:string entry_id:integer rake db:migrate 次に、モデルに Entry と Comment の関連を追加します。Entry を基準に考えた場合、Comment は 1 対
こんにちは。まっつんです。今回は 第 2 回 で実装しなかったバリデーションを実装します。 Ruby on Rails (以下、Rails) ではモデルにバリデーションを実装します。簡単なバリデーションであれば、定義済みのバリデーションヘルパーを使って容易に実装することができます。 容易に実装できるにも関わらず、第 2 回 では実装を見送りました。これには 2 つの理由があります。 最初の理由はバリデーションを実行するタイミングにあります。デフォルトではモデルがデータベースに保存される時にバリデーションが実行されます。よって、ポテトバーガー注文アプリケーションのメインメニューが選択された時、そしてサイドメニューが選択された時にそれぞれバリデーションを実行するには独自の実装が必要となります。 次により重要な理由として、普段から特に意識することなく行っているバリデーションという処理を考えるとい
こんにちは。まっつんです。3 ヶ月ぶりのまっつんチャレンジシリーズとなる今回は Ruby on Rails を取り上げます。 Ruby on Rails (以下、Rails) は今や世界で最も有名な Web アプリケーションフレームワークといっても過言ではないでしょう。今回は今までのマイナー路線から一転して、超メジャーフレームワークへのチャレンジとなります:-) Rails の哲学 「Getting Started with Rails」の「2 What is Rails?」には、以下の 3 つの Rails の哲学が記述されています。 * DRY - "Don't Repeat Yourself" - suggests that writing the same code over and over again is a bad thing. * Convention Over Conf
2003 年 2 月 19 日 の 0.1 リリースから 6 年、2009 年 6 月 23 日に Net_UserAgent_Mobile 1.0.0 をリリースしました。これは Net_UserAgent_Mobile の初めての stable (安定版) リリースとなります。 stable (安定版) リリース パッケージに付与されたバージョン番号や stability (安定性) が実際のパッケージの信頼性をそのまま表現していない場合があります。つまり、世の中には stability が beta であっても安定しているパッケージが存在します。そういう意味では Net_UserAgent_Mobile はベータリリースの間も stable な (安定した) パッケージであったといえるでしょう。 とはいえ、pear コマンドによるパッケージインストールの際に -beta を付け忘れる
"One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) CVS は古くから使われている ソフトウェア構成管理システム (またはバージョン管理システム) です。CVS より後の世代である Subversion がすでに広く使われており、git や Mercurial が普及の兆しをみせてきた今となっては、CVS が新しいプロジェクトで採用される機会はほとんどないといえるでしょう。 しかし、CVS を使っている既存のプロジェクトは依然として存在しています。残念なことに PEAR はその一例であり、筆者が開発している Net_UserAgent_Mobile は PEAR の CVS リポジトリにあります。今回は Net_UserAgent_Mobile を例に、CVS リポ
2009 年 5 月 11 日 の 1.0.0RC2 リリースから 1 年 2 週間、2009 年 5 月 25 日に Net_UserAgent_Mobile 1.0.0RC3 をリリースしました。1.0.0RC2 同様に今回も 1.0.0 のリリース候補の更新となりますが、その内容を簡単にご紹介いたします。 docomo の新機種 P-07A, N-06A, N-08A のサポート i モードブラウザ 2.0 を搭載した docomo の新機種 P-07A, N-06A, N-08A の端末情報をサポートしました。 また、従来の端末のブラウザは i モードブラウザ 1.0 と位置付けられましたが、これら新旧のブラウザを区別するためのユーティリティメソッド getBrowserVersion() を新たに追加しました。実装は下記のとおり非常に単純なものとなっています。 Net/UserA
2008 年 5 月 10 日 の 1.0.0RC1 リリースから 1 年、2009 年 5 月 11 日に Net_UserAgent_Mobile 1.0.0RC2 をリリースしました。大変お待たせして申し訳ありません。今回は 1.0.0 のリリース候補の更新のため大きな変更点はありませんが、その内容を簡単にご紹介いたします。 1.0.0RC1 以降に発売された docomo の新機種のサポート 1.0.0RC1 以降に発売された docomo の新機種の画面情報と HTML バージョンを追加しました。HTML バージョンについてはこれまでの正規表現によるマッピングを廃止し、機種毎にバージョンを持たせるよう変更を行っています。 これらの情報は通常 1 リクエストに対して 1 つ定まれば十分であるため、リクエストの度に全機種のデータをロードするのは時間とメモリの無駄です。そのため指定され
最終更新日: 2009 年 6 月 22 日 こんにちは、まっつんです。今回から「Apache Wicketによるユーザ登録アプリケーションの実装」に入ります。Apache Wicket(以下、Wicket)のプログラミング言語はJavaなので、KahuaやSeasideよりは少しはラクできるかなーと思っているのですが、果たしてどうなるでしょうか。 早速Wicketの公式サイトを見てみましょう。 With proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML, Apache Wicket makes developing web-apps simple and enjoyable again. Swap the boilerplate, complex debugging and b
"One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) Piece Framework で使用しているプロジェクト管理システム Redmine には Wiki システムがあり、そこでは PHP や HTML などのコードのシンタックスハイライティングに JavaScript ベースの google-code-prettify を使用しています。 google-code-prettify を採用したのは、Redmine に組み込まれているシンタックスハイライティングライブラリ CodeRay が PHP をサポートしていないためです。(次期バージョン 0.9 RC1 で PHP をサポートする模様です。) Redmine の Wiki で google-code-pret
PEAR はオープンソースのライブラリであり、パッケージ管理システムであり、コミュニティにより運営されるプロジェクトでもあります。 通常 PEAR はシステム全体で使うようにインストールされますが、アイテマンではプロジェクト毎に PEAR 環境を構築することが推奨されています。プロジェクト毎に PEAR 環境を構築するとどんな利点があるのでしょうか? 昨年に株式会社インプレスジャパンから発行された PHP 技術誌「まるごとPHP! Vol.2」に筆者らが執筆させていただいた記事では、プロジェクト毎に PEAR 環境を構築する利点を解説しました。 システム全体で PEAR を使うと、ライブラリのアップグレードや削除によって既存のアプリケーションが影響を受ける可能性が高くなります。プロジェクト毎に閉じた PEAR の環境 (ローカルな PEAR 環境) を用意すれば、ライブラリのアップグレード
これらを期待する振る舞いになるようにするには、具体的に何を変更する必要があるかを調べました。 プロジェクトのテーブルのスキーマ Wiki のテーブルのスキーマ プロジェクトのモデルのバリデーション プロジェクトのフォームのテンプレート これらを順に変更していきたいと思います。 マイグレーションの作成と実行 まずはテーブルのスキーマから変更していきます。 Redmine は Ruby on Rails (以下、Rails) で実装されています。Rails にはデータベースのスキーマを管理する仕組みとして マイグレーション があります。詳しくは境界を越える: Rails のマイグレーションが参考になります。少し古い記事ですので、今はもっと効率の良い方法があるかもしれませんが、今回はこの記事を参考にしながらスキーマを変更していくことにします。 まず、マイグレーションを生成します。今回はプロジェク
以前の記事「SubversionリポジトリをGitへ移行する」に書かれているように、筆者らはPiece FrameworkのリポジトリのGitHubへの移行を進めていましたが、その作業がようやく完了しました。筆者が開発を担当しているPiece_IDEは複数のEclipseプラグインから構成されており、当然ながら開発もEclipseで行っています。そのためEclipse上からgitリポジトリを操作できると便利です。そういったEclipseプラグインがないか探してみたところEGitというプラグインが見つかりました。 EGitは以下の更新サイトからインストールすることができます。 http://www.jgit.org/update-site EGitの2009年3月8日現在の最新バージョンは0.4.0です。必要な機能はひととおり揃っているので、普段の開発でも十分利用することができます。 Ecl
Piece FrameworkのプロダクトのひとつPiece_UnityのSubversionリポジトリには、Piece_Unity本体に加えて、Piece_Unity_Component_Authentication, Piece_Unity_Component_Flexyといったプロダクト(ここではモジュールと呼びます)が多数含まれており、これらは本体とは別のリリース単位を持っています。以前の記事「リポジトリをGitへ移行する」で取り扱ったのは単一のモジュールのみを含むSubversionリポジトリでしたが、複数のモジュールを含むリポジトリはどのように移行すればいいのでしょうか? ゴール 「SubversionリポジトリをGitへ移行する」と同じく、今回のゴールはPiece_UnityのSubversionリポジトリをgitの共用リポジトリに移行することです。移行元のリポジトリレイアウ
git-svn git-svn は Subversion と git の相互運用を可能にするコマンドです。git-svn コマンドにより Subversion リポジトリの一部または全体を git リポジトリに変換することができます。 git-svn コマンドは tags として指定された Subversion ディレクトリを git のブランチにマッピングします。例えば、上記の releases/releases-2.6.2 は tags/releases-2.6.2 にマッピングされます。今回は releases をタグとして扱いたいため、git-svn コマンドだけでは目的を達成できません。(実行後にいくつか作業を行う必要があります。) svn2git svn2git は git-svn のラッパーですが、git-svn とは異なり、タグとして指定した Subversion ディレク
こんにちは。松藤です。12月12日に開催されましたCakePHP関西勉強会に参加してきました。主催者、発表者の方々お疲れ様でした。また、こういった機会を提供していただきありがとうございます。 さて、発表の内容に関してましてはshin1x1さんのブログで紹介されておりますので、そちらを参照していただくとして、ここではslywalkerさんが発表されたCakePHPのプラグイン機構に注目したいと思います。 CakePHPのプラグイン機構を見る前にPiece FrameworkのWebアプリケーションフレームワークであるPiece_Unityのプラグイン機構を見てみましょう。Piece_Unityのプラグインは大きく次のように分類されます。 セッションの開始や認証といったフローやページに依存しない処理を行うインターセプタ フローやページを処理するディスパッチャ HTML_Template_Fle
"One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) こんにちは。まっつんこと松藤です。この度、厳正なる社内会議の結果、「まっつんチャレンジ」シリーズを始めることになりました。このシリーズでは私が今までにやったことがなく、かつ(私にとって)難易度の高いお題にチャレンジしていきます。私がチャレンジしていく中で迷ったり、間違ったりする部分もすべて書いていく予定です。もしかすると達成できなかったり、一部をコメントアウトして動作させるといったインチキを行う可能性もあります。ちなみに「まっつんチャレンジ」のお題は自分で考えるのではなく、ITEMANから与えられることになっています。 さて、第1回目の今回のお題は「Kahuaによるユーザ登録アプリケーションの実装」です。いきなり「
KoshigoeBLOG: ひとまず PHPSpec ただ、やっぱり、スペック名(でいいんでしょうか?)が日本語で書けないのが...。 PHPSpecではスペック名(メソッド名)、クラス名ともに問題なく日本語を使うことができます。下記のコードをみてください。 tests/Stagehand/TestRunner/PHPSpec/DescriptionOfBehaviourAndExpectationSpec.php <?php ... class Describe振舞やエクスペクテーションの説明 extends PHPSpec_Context { ... public function itは日本語を使用できること() { $this->spec($this->getSpecMethods()) ->should ->be(array('itは日本語を使用できること')); } ... c
リリース日: 2009-07-16 What's New in ITEMAN Dynamic Publishing 0.3.0 リアルダイナミックパブリッシング ITEMAN Dynamic Publishing の以前のバージョンでは、遅延スタティックパブリッシング が唯一の公開モードでした。遅延スタティックパブリッシングが適用されたページは、そのページがユーザからリクエストされた時に必要であれば再構築が行われます。 それに対して リアルダイナミックパブリッシング が適用されたページは、そのページがユーザからリクエストされる度に再構築が行われます。 この公開モードは遅延スタティックパブリッシングと比較して非常に低速なため、動的な要素を本当に含むテンプレートにのみご利用ください。 詳細については 運用ガイド をご覧ください。 ライセンスの変更 GPLv3 またはそれ以降のバージョンから G
このページを最初にブックマークしてみませんか?
『アイテマン - オープンソースカンパニー』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く