ASP.NET向けCMSのUmbracoの環境構築

Umbraco(アンブラコ)

Umbracoは、ASP.NET向けのオープンソースのコンテンツマネジメントシステムであり、Microsoft WindowsのASP.NETで動作するシステムとしてC#で開発されている。

データベースは、Microsoft SQL Server、MySQL、Microsoft SQL Server Compact 4 (SQL CE 4) に対応している。

2000年初頭にデンマークのNiels Hartvig によって開発されたUmbracoは、最新のユーザーインターフェース、.NETアーキテクチャーによる高い拡張性を背景にその人気はDotNetNuke、MODxなどと肩を並べるほどに成長したそうだ。

WebMatrixのUmbracoを以下のように説明している。

Umbraco CMSは、コンテンツおよびアプリケーションの管理、および数百万のユーザーへの配布のために、http://www.asp.net、http://wired.co.uk/、および160,000を超えるその他サイトで使用されるフレームワークです。Umbracoの最新のUI、純粋な.NETアーキテクチャ、およびアクティブなコミュニティにより、このフレームワークはWeb CMSの最良の選択となっています。Umbracoは使いやすく、拡張も簡単で、既存のシステムと統合できます。

 

Umbracoの環境環境は以下のWebサイトが参考になります。

Read More

ASP.NET用のCMS(Content Management System)

CMS(Content Management System)というばWordPressが有名ですが、ASP.NETに対応したCMSが存在します。

ASP.NETに対応したCMS中でも以下の3つが主要なCMSなようです。

どれも人気CMSなので選択に迷うところではあるが、個人的にはASP.NET MVCでの拡張性に優れ、軽いという面でUmbracoがお勧めです。

 

Read More

ASP.NETとは?Web FormsとMVCの違いは?

ASP.NETとそのWeb FormsとMVCという異なるASP.NETのフレームワーク違いについてまとめました。

 

ASP.NETとは、マイクロソフトが開発・提供しているWebアプリケーションフレームワークで、動的なWebアプリケーションの開発・実行基盤のことを指します。

ASP.NETは、インターネットインフォメーションサービス(IIS)によりホスティングされ実行され、ASP.NET登場以前のASPやPHP等と同様にサーバー側で動的にHTMLを生成します。

ASP.NETは、個人規模のWebサイトから大規模Webアプリケーションまで様々な形態のWeb開発に対応しているフレームワークです。

当初のASP.NETは、Windowsフォームの感覚でイベントドリブン駆動なWeb開発が可能なWeb Formsというフレームワークしかなかったのですが、後々にMVCという別のフレームワークが登場してきました。

 

ここで、ASP.NETでWeb開発をする場合に両者をどう使い分ければいいかASP.NETに無知な初心者は困ってしまうわけで、ASP.NETのプロフェショナルである諸先輩の情報を参考にASP.NET初心者の私が理解できる言葉でまとめてみました。

まず、結論からですが両者の使い分けのポイントは下記の通り。

・Web FormsとMVCは(ほぼ)同等の機能を有しており対等な選択肢

・ASP.NETのセッション、キャッシュ、データアクセス等のASP.NETの基盤技術は一緒

・相互のメリット/デメリットを補完しあうフレームワークであり置き換えできるものではない

・生産性、パフォーマンス、デザイン等の要素を天秤にかけ使い分ければ良い

・Windowsフォーム開発経験者は、Web Formsの方が馴染みやすい。

・非.NET系のWeb開発経験者は、MVCの方が馴染みやすい。

・Web Formsは作業を進めながら学習が可能なのでASP.NET入門には向いている。

・将来性や最新のWebのトレンドや技術への順応性はMVCの方が優れる

 

また、Web FormsとMVCの違いを簡単に表にまとめてみました。

比較項目 Web Forms MVC
アプリの特徴 技術として安定かつ成熟している。
豊富なWebサーバーコントロールを活用した容易なDrag & Drop配置によるUI開発が可能。
機能や納期を重視したアプリ向き。
Jquery、Web API等のWeb技術を活用したWeb標準志向でHTMLベースでUIを開発する。
パフォーマンスやデザインを重視したアプリ向き。
また、テスト駆動開発向き。
用途 イントラネットサイト
業務アプリ
インターネットサイト
インターネット向けアプリ
開発スタイル イベント駆動型プログラミング MVC(Model-View-Controller)デザインパターン
入門し易い開発者 Windowsフォーム開発者 非.NET系Web開発者
要求される技術スキル Windowsフォーム
C# / VB.NET
Web技術全般(HTML, JavaScript, Ajax etc…)
C# / VB.NET
テスト 自動/単体(ユニット)テストが困難。
テスト用Webサーバー必須
自動/単体(ユニット)テストが可能。
テスト用Webサーバー不要
SEO(Search Engine Optimization)対策 ×
適した移行元 VB 6.0/Windows フォーム HTMLページ、Class ASP

 

※本内容をまとめるにあたり以下を参考にさせて頂きました。

第0回 Webアプリケーション・フレームワークの新たな選択肢

http://www.atmarkit.co.jp/fdotnet/aspnetmvc3/aspnetmvc3_01/aspnetmvc3_01_01.html

Web フォームと ASP.NET MVC を比較する

http://msdn.microsoft.com/ja-jp/magazine/dd942833.aspx

Web フォーム vs. MVC

http://blogs.msdn.com/b/chack/archive/2013/01/16/aspnet-webforms-mvc.aspx

Read More

ASP.NETのホスティングサービス

ASP.NETのホスティングサービスを少し調べてみました。

ASP.NETのホスティングサービスは、充実しているLinux系のホスティングサービスに比べそもそも種類が少なく料金は割高です。その中でも比較安価で利用可能な独自ドメインが利用できることホスティングサービスをまとめました。

 

Windows Azure

Microsoftが提供するクラウドサービスです。

Windows Azureは多くのサービスを提供しているのですが、その1つとしてWebサイト機能があります。

Microsoftが提供する機能なのでもちろんASP.NETのホスティングはサポートされ、Visual Studioを利用した開発環境に適しているといったメリットがあります。

また、年々進化するASP.NETや.NET Frameworkの最新テクノロジーをすぐに試す、運用できる環境を提供しているというのも他にはない大きなメリットだと思います。

WebSite機能には、無料/共有/占有の3つの種類があり、独自ドメインを利用するには少なくとも共有を選択する必要があり月額にして約800円。

個人的には最新環境でのホスティングの確認として無料のプランの方が気になったりもします。

Windows AzureのWebSite機能に関する料金の詳細は以下参照。

http://www.windowsazure.com/ja-jp/pricing/details/web-sites/

 

Express Web

ASP.NETのホスティングサービスを探しているとExpress Webを一押しするサイトが一番多かったです。

理由としてはなんといっても250円(税抜)/月というLinux系サービスにも引けを取らないコストパフォーマンス。

SSLやSendMain等の機能が使えないと不便な面もあるようですがそれらを利用しなければ一押しです。

2014年9月現在、ASP.NET 4.5, MVC4までサポートされています。

 

ActiveWeb

500円(税抜)/月と料金面ではExpress Webに次ぐ料金設定です。お財布には優しい感じです。

ただ2014年9月現在、ASP.NET3.5までしかサポートされていないようです。

 

SOMEE.COM

海外のホスティングサービスです。

サイトを見てみると最新のテクノロジーをどんどんサポートしているようで、国内のホスティングサービスよりも良さそうな感じです。

独自ドメインが利用できる「Windows hosting」というプランは7.95$/月とWindows Azureとほぼ同等。

「Free .Net Hosting」というプランも提供されており、毎月5アクセス以上が必要であったり独自ドメインが利用出来ないという制限はありますが、無料で利用できるASP.NETのホスティングサービスという面では希少だと思います。

Windows Azureがなければホスティングサービスの候補になっていたかもしれません。

尚、海外のホスティングサービスなので説明やコントロールパネルは英語なので英語苦手な人には避けた方がいいかもしれません。

 

いろいろ調べた結果、Windows AzureとExpress Webの2つが良いのではないかと思います。

最新のASP.NETを利用したい、スケールアウト柔軟性を確保したいということであればWindows Azure、

個人サイトやコストパフォーマンス重視であればExpress Webを選択するのが良いのではないかと思います。

Read More

XDebugを利用してNetBeansでPHPをデバッグするための環境構築

PHPのデバッグを効率化するために、NetBeansにXDebugを利用したPHPのデバッグ環境を整えます。 これにより、PHPの処理を任意の位置に設置したブレークポイントで中断し変数値を確認したり、ステップ実行で処理を追いかけることが可能となります。

PHP開発環境の準備

XAMPPとNetBeansをインストールしてそれらが利用出来る環境を整えます。未だの場合は、コチラを参照して下さい。

XDebugダウンロード

Windows用のXDebugのバイナリファイルをXDEBUG EXTENSION FOR PHPのダウンロードページからダウンロードします。

XDebugのバージョンは最新のバイナリファイルをダウンロードするのが良いでしょう。ただ同一XDebugのバージョンでも、OSのプラットフォーム(32bit or 64bit)、PHPのバージョン、スレッドセーフ(IISやApache worker MPMでPHPを実行する場合のZend Thread Safety(ZTS))対応有無により複数のバイナリファイルが公開されています。開発環境にあった適切なバイナリファイルをダウンロードして下さい。 ダウンロードしたバイナリファイルは、<XAMPPインストールフォルダ>\xampp\php\ext内に保存します。

適切なバイナリファイルを利用しないとXAMPPがそのバイナリファイルを読み込めずXDebugが有効になりませんので注意が必要です。

 

ただ、実は適切なバイナリファイルを確実な方法で選択しダウンロードする方法があるので今回はこの方法を採用します。

バイナリファイルの配布先であるXDEBUG EXTENSION FOR PHPのWebサイトでは、phpinfo()が出力するHTMLソースからOSプラットフォーム、PHPバージョン、スレッドセーフ有無等を解析し、環境にあった適切なバイナリファイルのダウンロードURLを示してくれる親切な機能が提供されています。

XAMPPを起動させた状態で、http://localhost/xampp/phpinfo.phpにアクセスしてその全てのHTMLソースをコピーします。

次に、Xdebug: Support; Tailored Installation Instructionsにアクセスし赤枠内にコピーしたHTMLソースを貼り付け、[Analyze my phpinfo() output]をクリックします。

Xdebug-Support-Tailored Installation Instructions-form

 

すると、phpInfo()の内容が解析され、赤枠内のINSTRUCTIONSにバイナリファイルのダウンロード先とphp.iniに追記すべき情報を示してくれます。

この指示に従い、バイナリファイルをダウンロードして下さい。

Xdebug-Support-Tailored Installation Instructions-Instructions

php.iniの編集

<XAMPPインストールフォルダ>\xampp\php\php.iniを開き、XDebugセクションを以下の通り編集し保存します。

まず、「;report_zend_debug = 0」のコメントアウトを外します。


; This setting is on by default.
;report_zend_debug = 0

2行目先頭のセミコロンを削除して以下の様にする。


; This setting is on by default.
report_zend_debug = 0

次に、XDebugセクションを探し、以下の通りに追加及び編集します。zend_extensionキーには、先のINSTRUCTIONSで示された情報を記載します。

[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.5-5.5-vc11.dll"
xdebug.remote_enable = On
xdebug.remote_handler = "dbgp"
xdebug.remote_mode = "req"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = "9000"
xdebug.trace_output_dir = "C:\xampp\tmp"

XDebugの有効化確認

XAMPPを再起動させ、http://localhost/xampp/phpinfo.phpにアクセスします。下図のようにXDebugの情報が表示されていればXDebugの有効化は成功です。

phpInfo-xdebug

NetBeans設定

NetBeasnを起動し、メニューバーから[ツール] – [オプション]を開きます。

PHPのデバッグタブを開き、デバッガ・ポートに、php.iniにおいて、xdebug.remote_portに指定したポート番号を設定し保存します。

xdebug.remote_port = "XXXX"

NetBeans-option-debug-port

 

以上で、XDebugを利用してNetBeasnでPHPをデバッグするための環境構築は完了です。実行したいPHPプロジェクトの実行構成を設定し、デバッグ機能を実行してみて下さい。

 

 

Read More

WordPressプラグイン for auxak blog

auxak blogで導入している便利なWordPressプラグインを紹介します。

 

All in One SEO Pack

WordPressをSEO(Search Engine Optimization)に自動的に最適化してくれるプラグイン。

 

Easy Table

投稿や固定ページにてテーブルを簡単に作成できるプラグイン。

auxak table
No header1 header2
1 auxak1-1 auxak1-2
2 auxak2-1 auxak2-2

wordpress-plugin-easy-table

 

Jetpack by WordPress.com

WordPress.comが提供する統計情報機能等の便利な機能をWordPressでも利用できるように、それら機能をプラグインとしてまとめたもの。

 

SyntaxHighlighter Evolved

ソースコードを綺麗に見やすく表示してくれるプラグイン。


echo 'Hello auxak!', PHP_EOL;

 

 

Read More

PHPとMySQLの構成における日本語文字化けをPHPで対策する方法

PHP 5.4.xとMySQL(5.6.20)の構成で、PHPから日本語をデータベース内に保存したところ、phpMyAdmin上でその日本を見ると文字化けしてしまいました。逆に、phpMyAdmin上で入力した日本語はPHPからクエリして表示すると「???」になってしまいハマった対策を残します。尚、データベースに入出力した以外の日本語文字列は問題ありませんでした。

これが発生した環境は、XAMPP、NetBeasn、PHPファイルともにUTF-8を扱えるように設定済み、MySQL内のデータベースは、照合順序は「utf8_unicode_ci (UNICODE(多言語)、大文字小文字を区別しない)」で作成したデータベースといった環境です。

専用サーバーであればMySQLのmy.confを編集して修正するのが簡単ですが、共用サーバーとなるとその方法での対策は難しいのでPHP側で対策する方法を紹介します。

 

≪対策≫

クライアントの文字セットをmysql_set_charset関数を利用してUTF-8に設定すれば良い。

// データベースに接続
$link = mysql_connect('localhost', 'root', '');
// クライアントの文字セットを設定
mysql_set_charset('utf8', $link);

※上記サンプルはエラー処理は考慮されていません。

 

ただし、PHPマニュアルによるとこの方法はPHP 5.5.0より下図の通り非推奨になったとのこと。

PHP 5.5.0以降で開発する場合は、紹介されている代替の方法を採用してください。

mysql_set_charset

 

≪注意≫

この対策をネット調査している際に、データベースに対し、


SET NAMES UTF8

とクエリを実行して文字セットを変更したら日本語の文字化けが解消したと対策を紹介されています。

確かにこの方法でも対策は出来、以前はこの方法が一般的だったようですが、SQLインジェクションの脆弱性があることが判明しているので推奨されません。

 

Read More

PHPのrequire / require_once / include / include_onceの使い分け

PHPでは、外部ファイルを読み込む構文として「require」や「include」があります。また、同一のファイルの複数回読み込みを防止した「XXX_once」付などもあります。

それらを使い分けは下表を参照してください。

 

構文 同一外部ファイルの複数回読み込み ファイル未存在時
require Fatal Error
require_once × Fatal Error
include Warning
include_once × Warning

 

Read More