技術ブログ - 毎日が成長!

‘PHP’ タグのついている投稿

CloudとNetBeansのSweetな関係

2011年12月1日 by hiro

初めまして、開発メンバーのhiroです。

本日はCloudとNetBeansのSweetな関係について
書きたいと思います。

ここ数年JavaでWebアプリを作っていましたが、久しぶりに
PHPでWebアプリを作っています。

AWSを使って開発していますが、Cloudを使っていない時代は
Linuxサーバを開発用・動作確認用の最低2台をプロジェクト毎に
用意し、ローカルでテキストエディタを使って作ったスクリプトを
FTP経由で手動でアップして開発していました(サーバ上に
リモートログインしてviやvim,emacsなどのテキストエディタで
スクリプトを書いている猛者もいます)。

この手動アップロードが思いのほか手間で、ローカルでWebや
DBサーバを動かし、スクリプト編集即確認できる環境で
開発する人も多くいると思います。

しかし、プロジェクトが複数あると、ローカルに動作環境を
作ることは難しい、というよりも不可能になってきます。
実際の動作環境がまちまちなためです。また、プロジェクトが
増えるときだけでなく、開発メンバーが増えたときも環境を
用意する必要があります。ローカルに同じ環境を用意するのは
各メンバーの環境に対応する必要もあるため、かなり手間な
作業になります。

その点、AWSでは動作環境のコピーはブラウザ上でいくつか
必要な事を指定すれば簡単に行えます。仮想OSを使い、自前で
複製することはできますが、AWSに比べると手間がかかります。

ただ動作環境が簡単に複数作れても、プログラムをコピーする
手間が消える訳ではありません。

そこで、Javaの開発元が中心となって提供しているオープンソースの
開発環境のNetBeansの出番です!

※以後Mac上での説明になります。Windowsユーザの方は
適宜読み替えてください。

インストール

まず、PHPの開発に対応したものをダウンロードサイトから
ダウンロードしてきます。
※JDK1.6が必要なので、別途インストールしてください。

アプリケーションフォルダへ配置し、よく使う方はドッグに
置きましょう。

チェックアウト

まずはSubversionのリポジトリに登録してあるSymfony1.4の
プロジェクトをチェックアウトします。



・チェックアウトに必要な情報を適宜設定してください。

・チェックアウトするリポジトリフォルダを選び、チェック
アウト先のローカルフォルダの指定をします。



/Users/ユーザアカウント/NetBeansProjectsの下あたりに
好きな名前でフォルダを指定しましょう。同じプロジェクトを
ローカルに複数チェックアウトするには、ここのローカルフォルダで
別のフォルダを指定して、チェックアウト先を変更すればOKです。

チェックアウト後に NetBeansプロジェクトをスキャンを
チェックすると、チェックアウト後にプロジェクトが作成されます。



プロジェクト設定

プロジェクトが作成されたら、プロジェクトを右クリックし
プロパティを開きます。

まず、ソースで、エンコーディングやPHPのバージョンを選択します。



次に、実行構成を開き、実行方法を「リモートWebサイト(FTP、
SFTP)」を指定します。プロジェクトURL、開始ファイルを
適宜設定し、アップロードを「保存時」に設定します。



リモート接続の管理をクリックし、Symfonyが動作するサーバへの
接続設定を行います。
※ここで接続テストできますので、すぐに確認できます。



うごかしてみよう!

これで、ローカルでSymfonyプロジェクトを開発・動作させる準備が
整いました。
※動作環境のサーバ側にもチェックアウトしたファイルを置く必要が
あります。NetBeansからアップする事も可能ですが、ファイル数が多く
時間がかかるため、サーバ上で直接チェックアウトしてください。

左にあるプロジェクトウィンドウにプロジェクトの一覧が表示されるので
ファイルを編集して保存してみましょう。



すると、自動でローカルのファイルがサーバ側へコピーされ
変更内容が直ぐに反映されます。1ファイルをアップする時間は
1,2秒ほどと、純粋なファイルコピー時間で考えると遅いですが
体感上は一瞬で、まさにNetBeansとCloudが一体化している感覚です!
気分はまさしく、コレ!



ですが、まだまだSweetと呼ぶには不十分だと思うので
NetBeansの便利さの一部をご紹介します。

Symfonyコマンド

プロジェクトを右クリックし、「Symfony→コマンドを実行」で
Symfonyコマンドの一覧が出てきてローカルでSymfonyコマンドを
実行できます。正確なコマンド名を思い出せなくても、フィルタに
buildなどといれると、buildを含むコマンドを絞り込んでくれるので
労力を減らせます。ダイアログを開いたまま、実行する事も可能で
連続して実行可能です。



コード補完

エディタでメソッドの入力途中にコマンドキーを押しながら¥を押すと
(WindowsはCtrl+Space)、メソッドの候補一覧が出てきます。
メソッドをクリックするとメソッドに書いたコメントが表示され
どんな機能なのかがわかります。
※常にクラスやメソッドにコメントを書く癖をつけると、後になって
苦労が十二分に報われます。

続けて確定すると引数を入力するモードになり、入力ミスを
減らしてくれます。引数のデフォルト値はメソッドの引数に
書いた変数名になります。

また、メソッドが実際にどんな事をやっているのか知りたい
場合にはコマンドキーを押しながらクリックすると(Windowsでは
Ctrl+クリック)そのソースへ移動する事ができます
(クラスに対しても同じ事ができます)。

リファクタリング

クラス名やメソッド名をかえたい場合、クラス/メソッドを
右クリックして、「リファクタリング」→「名前を変更」を
実行し、新しい名前を入れてプレビューを押すと、実際に
そのクラス/メソッドを使っているところまで同時に
変更してくれます(変数名の変更も可能です)。
※ただし、PHPの型指定は大変緩やかなので、NetBeansが
型を認識できず、リファクタリングが全部はできない場合もあります。



ソースの整形

コード規約等がある場合にも、ソースを右クリックして
整形を実行すれば



一発でソースをフォーマットしてくれます。



労力を多いに省いてくれます。
※フォーマットについては、環境設定で細かく設定できます。

タスクウィンドウ

プログラム途中で中断すると、何をすべきか忘れてしまう事もあります。
そんな時はソースコメントに@TODO,@FIXME等でコメントを書きましょう。

するとタスクウィンドウに一覧が出てきます。



モックアップを作っているとき等にこれから作成する処理を@TODOでコメントしたり
バグや問題がある部分に@FIXMEをつける癖を付けていけば、対応漏れも減らせます。

とまだまだ一部ですが(十分多い?)、NetBeansの便利な機能を
ご紹介させていただきました。CloudとNetBeansの組み合わせで
多くのプロジェクト開発に対応した便利な開発環境を構築できるのが
おわかりいただけたかと思います。

まさに、開発者にとってはSweetな関係です!

 

今年もAdvent Calendarの時期になりました

2010年12月2日 by asakura

はじめに

こんにちは、プログラマのあさくらです。
今日は技術系Advent Calendarについて小ネタを投稿させて頂きます。

Advent Calendarとは

もともとは、イエスの降誕祭を待ち望み、12月1日からクリスマスまでの1日1つカードの窓をあけていくカードのことだそうです。
転じて、1日1つ技術Tipsや小ネタをリレー形式で投稿していく試みのことを指しています。

日本人にはそれほど馴染みのない習慣なのか、私は昨年のsymfony advent calendarでその存在を知りました。
アドベントカードとも呼ばれるようですが、仮面ライダー龍騎のそれとは少し違うようです。

  • アドベント – Wikipedia

    • アドベント (Advent) とはキリスト教において、イエス・キリストの降誕を待ち望む期間のこと。日本語では「待降節(たいこうせつ)」「降臨節(こうりんせつ)」ともいう。
  • アドベントカード – Wikipedia

    • アドベントカード (Advent card) とは、アドベントの期間中に窓を毎日ひとつずつ開けていくカードである。アドベントカレンダーとも言う。
      カードに作られた窓を1日に1つずつ開けていく。そして、全部の窓を開け終わるとクリスマスを迎えたことを教えてくれる仕掛けになっている。

見ておきたいAdvent Calendar

個人的に見ておきたいなと思ったAdvent Calendarへの情報をまとめてみました。

一回り大きくなって新年を迎えましょう

さくさくっと読み進めていける内容なので、毎日一つ読み進めてもいいですし、年末にまとめてというのも面白そうです。
来年は見るだけではなく、参加する側に回りたいですね。

2010年も残りあとわずか、頑張っていきましょう。

 

symfony+MongoDBでNoSQLはじめの一歩 〜MongoDBインストール〜

2010年7月15日 by asakura

はじめに

はじめまして。開発部エンジニアのあさくらです。
主にPHPsymfonyを使ったシステム開発を担当させていただいています。
好きな開発環境は、MacGNU Emacs
好きな仮面ライダーは龍騎カブトWです。

技術的なTipsやチュートリアル、開発手法についての情報を中心に投稿させていただこうと思っています。 どうぞ、よろしくお願いいたします。

私は普段、symfony+RDBMSで開発を行っているのですが、RDBMSで吸収することが難しい問題に直面することが多々あります。(私の理解不足という点も否めませんが)
そういった問題を解決するのにNoSQLが有効か否かを調べたいと思い、本エントリを投稿するに至りました。
バリバリNoSQLを使いこなす域には達していないので、少し物足りない内容になってしまうかもしれませんが、皆さんと一緒に勉強させていただければと思っています。

はじめの一歩

それでは、NoSQLの世界へ一歩踏み出してみましょう。
NoSQLのはじめの一歩として、symfony1.0からMongoDBを操作し、パフォーマンスがどの程度得られるか、全5回程度で学んでいきたいと思います。
今回は、「MongoDBをインストールし、データベースの起動ができるようになる」ことを目標に、お話を進めていきたいと思います。

今回のエントリの対象読者

今回のエントリは、下記のような方を対象としています。

  • NoSQLのことを何となく知っている
  • MongoDBの名前を聞いたことがあるが、触ったことはない
  • アプリケーションを自由にインストールできるLinux環境がある

今回のエントリのゴール

今回のエントリを読み終えて、次のことが出来ることをゴールとしています。

  • Linux環境へ、MongoDBがインストールできる
  • mongodコマンドで、MongoDBデータベースが起動できる

MongoDBとは

MongoDBロゴ

Wikipediaでは以下のように紹介されています。

MongoDBはC++言語で記述された オープンソースのドキュメント指向データベースである。
MongoDBは従来の関係データベース管理システムでは簡単に解決できない多量のトランザクション処理が要求されない問題に対し設計されている。一例として、データベースが複数サーバにまたがる必要がある場合が挙げられる。
CouchDBのようなドキュメント指向データベースシステムと同じく、MongoDBは関係データベース管理システムではない。データベースはBSONと呼ばれる、バイナリで格納されたJSONのようなドキュメントの集合を管理している。
  • 「MongoDB」『フリー百科事典 ウィキペディア日本語版』。最終更新 2010年7月1日 (木) 11:58 UTC、URL: http://ja.wikipedia.org/wiki/MongoDB

また、書籍や勉強会での情報では、
「KVS、ドキュメント指向データベース、RDBMSのいいとこ取りなデータベース」
と評されることが多いようです。
なんだかすごそうで、わくわくしてきますね。

作業環境

今回の作業環境は以下の通りです。

  • MacOSX 10.6.3 SnowLeopard

MongoDBのインストール

まずは、MongoDBをダウンロードしましょう。 Downloads – MongoDBから、自分の環境にあったパッケージをダウンロードしてください。

MongoDBDownload画面

今回は、MacOSX SnowLeopard環境で作業をするので、「OS X 64-bit」から、この記事を作成している2010年7月15日時点での最新バージョン1.4.4をダウンロードします。

$ curl http://downloads.mongodb.org/osx/mongodb-osx-x86_64-1.4.4.tgz > mongodb.tgz
$ tar zxvf mongodb.tgz

データの格納先ディレクトリの作成

データの格納先を作成します。
今回は、mongodコマンド実行時にデフォルト格納先として指定されるディレクトリを準備しましょう。
※mongodコマンドの引数に「–dbpath=/hoge/mongodb_data」を追加することで、任意のデータ格納先を指定することも可能です。

$ mkdir -p /data/db

mongodコマンドで、MongoDBを起動

展開したmongodコマンドを実行し、データベースを起動してみましょう。

$ mongodb-osx-x86_64-1.4.4/bin/mongod

mongodコマンド実行後、メッセージに「waiting for connections on port 27017」とメッセージがでれば起動成功です。

また次回

今回のエントリでMongoDBの起動まで出来るようになりました。
次回は、MongoDBを操作するためのmongoコマンドを使い、実際にMongoDBを操作していきたいと思います。
それでは

参考にさせていただいたページ

本エントリを作成する際に、こちらのページを参考にさせていただきました。
ありがとうございました。