Webアプリを創る 😊クリエイティブWeb

カテゴリー: プログラミング

Googleトレンドでみるモバイルアプリ開発ツールの動向

2014年6月1日

最近、モバイルアプリを作ろうと思って Xamarin を使い始めている。それで、Google トレンドで、モバイル開発ツールの動向をみてみた。

モバイル開発ツールで最も人気度の高いと思われるのは、世界的にみても日本でも、アップルの iOS 開発ツールである Xcodeである。

Android開発ツールの動向は、世界と日本ではかなり異なっている。世界的に見ると Android SDK は、2011年以降安定した人気度を持っているし、2013年5月に発表された Google の統合開発環境である Andoroid Studio もかなりの人気度を持っている。両者を併せると Xcode を上回る人気度になっており、Xcode がモバイルではない Mac の開発ツールでもあるということを考慮するとモバイル開発環境の人気度ナンバーワンといえるだろう。世界的に見ると Android 端末のシェアが拡大しているということも関係していると思われる。

一方で、日本の人気動向をみると、2010年から2011年にかけて、Android SDK の人気度が急上昇している。世の中がスマートフォンブームということで Android 端末が普及してきた時期であり、そのブームに乗ろうと思って Android 開発者が急増した時期である。その後、結局日本では iPhone の方が売れて Android の人気は上がらなかったので、Android SDK の人気度は急降下している。 このあたりも、横並び志向の強い日本の特徴がでている。製造業では、横並びでするというのは案外効率のいいことだと思うが、IT関係は二番が存在しづらい一人勝ちの世界なので、横並びをしていたのでは収益あがらないと思うのだがどうだろうか。

Xamarin は、世界的にはかなり人気度は上がっている。しかし、日本では、日本語のサポートが弱いということと、開発が受託中心でそれをチームで開発しているので、相当な力がかからない限り Xcode での開発を変更しようということにならないので、Xamarin の人気度があがる可能性はあまりないと思っている。

image

image

都道府県ランキングに D3.js でチャートを入れました

2013年10月9日

6月から作成していた統計データ API エクスプローラにやっとチャートを入れることができました。まだ、都道府県ランキングの指標の分だけだし、それも改善しようと思っている点が数多くあって、最初の一歩というところです。

D3.js を使ったことで、最初の一歩には時間がかかりましたが、今後インターラクティブな画面を作っていくということでは大きな進歩だと思っています。チャートを描くだけであれば、Google Visualization API を利用した方が簡単です。でも、内部がブラックボックスだけにそのチャートを自分で思ったように動かすことは相当難しくなります。D3.js の場合は、最初は難しいけどプログラムで完全にコントロールができることがメリットです。そうはいっても、まだチャートが一つできただけで、コントロールをするためには学ぶことが多く残っています。

ユーザーにデータをインターラクティブに可視化して提供できるということは、ユーザーエクスペリエンス(UX)を向上させる有力な手段の一つです。これから自分の思い通りに図を動作させることができるように頑張ろうと思っています。

image

ロギングライブラリ NLog を使ってみる

2013年6月8日

プログラムの実行状態をログで記録したいという場合には、ログの数が少ないうちは StreamWriter を使って自作してもそれほど手間はかからないのですが、Web サイトでアクセス数が多くなってくると、少なくとも次の2点を考慮する必要がでてきます。

  • ファイルが大きくなり過ぎないように、ログファイルのローテートをする。
  • 同時アクセスがあった場合の対応が必要である。

それではということで、ロギングライブラリーを探してみたら、C#用には、NLogLog4Net というライブラリーがありました。比較すると NLog の方が活動が活発で使い方も簡単そうだったので、NLog を使うことにしました。

ソースコードとマニュアルは、GitHub にホストされています。マニュアルによると、ログの出力先にはファイルだけでなく、データベースやメールやWebサービスが選択できます。重大な障害が発生したときには、メールで通知できるのは便利ですね。

Visual Studio へのインストールには NuGet が利用できます。NuGet パッケージの管理で NLog で検索すると以下のようなパッケージが表示されます。NLog には多くの拡張パッケージがあって多くのところで利用されているのがわかります。NuGet では NLog だけでなく、NLog Configuration もインストールします。

image

インストールが完了すると、NLog.config という設定ファイルのひな形が以下のように作成されています。ひな形をみれば、NLog.config では、ターゲット(targets)とルール(rules)を設定をしたらいいということのようです。

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <!–
  See http://nlog-project.org/wiki/Configuration_file
  for information on customizing logging rules and outputs.
   –>
  <targets>
    <!– add your targets here –>
   
    <!–
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
            layout="${longdate} ${uppercase:${level}} ${message}" />
    –>
  </targets>

  <rules>
    <!– add your logging rules here –>
   
    <!–
    <logger name="*" minlevel="Trace" writeTo="f" />
    –>
  </rules>
</nlog>

通常のログファイルだったらひな形がそのまま使えます。ターゲットが複数利用できるので、メール用のターゲットとルールを以下のように追加すると致命的エラーの時にメールを送るようにすることができます。

ターゲットの追加

<target xsi:type="Mail" name="m"
    subject="エラーの発生"
    from=admin@example.com
    to="niji@yniji.net"
    header="エラーが発生しました。${newline}"
    body="${message}"
    smtpServer="mail.example.com"
    smtpPort="587"
    smtpUserName=admin@example.com 
    enableSsl=”False” 
    smtpPassword="password"
    smtpAuthentication=”Basic” />

ルールの追加

<logger name="*" minlevel="Fatal" writeTo="m" />

ログを出力するコードを書くのは比較的簡単で、ASP.NET MVC の場合であれば、モデルに次のようなルーチンを作っておけば、他のモデルやコントローラーから呼び出して使えます。

using NLog;

public class LoggerClass
{
    private static Logger Logger = LogManager.GetCurrentClassLogger();

    public static void NLogInfo(string message)
    {
        Logger.Info(message);
    }

    public static void NLogFatal(string message)
    {
        Logger.Fatal(message);
    }
}

NLogを使うことで簡単にログを出力できるようになるので、現状のログに不満がある人は試してみてください。

Google Page Speed を使ってみた

2011年7月16日

以前から、この Web サイトのレスポンスはあまり良くないと思っていましたが、Google ウェブマスター ツールの「サイトのパフォーマンス」で読み込み時間が4秒を超えるようになったので、これではいけないと思って Google Page Speed を使ってみました。Google Page Speed は、Web ページのパフォーマンスを評価して、ウェブページの読み込み時間を短縮するためのヒントを与えてくれるツールです。Page Speed には、FireFox 版と Chrome 版があります。今回は、FireFox 版を使いました。FireFox 版は、FireFox のアドインなので、インストールは簡単にできます。まず、Firebug 上で動作するので、Firebug アドインをインストールしていなければインストールしておきます。また、オンライン版の Page Speed である Page Speed Online もあるので、アドインをインストールしたくない場合は Page Speed Online を利用することもでき、Web ページの URL を入力するだけで、パフォーマンスの解析をしてくれます。

Page Speed をインストールして、Firebug を起動させると、下の図のように Firebug のツールバーに Page Speed のメニューが追加で表示されるようになります。

image

Page Speed を実行すると、下の図のように、改善の提案が表示され、「赤丸」が少ない努力で大きく改善できる可能性がある項目を、「黄色の三角」が作業量が多いか大きな効果が得られない項目を、「緑色のチェック」が大きな効果が得られない項目であることを表します。

image

この Web サイトを Page Speed でチェックしたら、多くのページで「赤丸」に該当した項目は、以下の2項目だったので、この項目を提案のように変更することにしました。

・ブラウザーのキャッシュを有効にする

キャッシュの有効期間を設定する必要がありますが、IIS 7.x では、IIS マネージャーで設定をすることができます。IIS の「HTTP 応答ヘッダー」で、「共通ヘッダーの設定」をクリックすると以下のような設定画面が表示されるので、失効までの期間を Google のアドバイスに合わせて 10 日以上にしてやります。この設定で注意しないといけないのは、このサイトでは Umbraco CMS を使っていますが、Web サイトに有効期限を設定することはできるのですが、画像を保存してあるフォルダーに有効期限を設定するとエラーが発生してしまいます。 原因については、よくわからないので時間ができたら調べようと思っています。
image

・圧縮を有効にする

IIS 7.x では、「動的なコンテンツの圧縮モジュール」は、既定ではインストールされていません。IIS には、「動的圧縮を使用すると、プロセッサーの使用が増加しサーバーの全体的なパフォーマンスが低下する可能性があります。」という警告があるので、有効にするかどうか一瞬迷うのですが、タスクマネージャーや EC2 の Monitoring でみるとコンピュータの使用率はそれほど高くないので有効にすることにしました。負荷が高くなっている場合を除いて大抵の場合は有効にした方がいいように思います。EC2 の場合は、帯域幅に課金がされるので、利用料を削減する効果もあります。「動的なコンテンツの圧縮モジュール」をインストールするには、コントロールパネルの「Windows の機能の有効化または無効化」で、下の図のように「動的コンテンツの圧縮」の機能を有効にしてやります。モジュールがインストールには、かなり時間がかかりますが、インストールが完了すれば、IIS マネージャで、設定をしたい web サイトを選択して、センターパネルで IIS の「圧縮」を選択して、「動的なコンテンツの圧縮を有効にする」にチェックをいれれば設定が完了です。
image

この設定した効果は、以下の図のようになりました。ページの読み込み時間は 2.2 秒になり、以前より約 2 秒短縮することができました。実は、この設定と併せて、サーバーを Amazon EC2 の東京リージョンに移動させたので、それによる効果が半分ぐらい入っています。しかし、階段状になっている 3 段のうち最初の2つはこの設定の効果だと思われるので、設定の方もかなりの効果があったと思っています。

image

WebMatrix等のWeb開発関連ツールの一斉公開とUmbraco

2011年1月28日

WebMatrix、ASP.NET MVC 3.0、Orchard 1.0、Web Platform Installer 3.0 と Microsoft の Web 開発関連ツールが一斉に公開されたのが、1月11日でした。GoogleでWebMatrixを検索してみるとWebMatrixは盛り上がっているようです。このサイトのアクセス数も、公開後は1割ぐらいは増加したように思います。ただ、アプリケーションでいうと盛り上がっているのはWordPressで、Umbraco、DotNetNuke 、Orchardo等のASP.NETのアプリケーションは寂しい状態です。

ASP.NETのアプリケーションがなぜ寂しいのかを考えると、ASP.NET を使っている技術者は、このサイトでも1日に数百人がアクセスしてくるので、日本中では相当な数いるはずですが、企業のソフトウェア技術者の多くは仕事に追われているのでそんなものを試してみようとする人はかなりの少数だと思います。一方、個人で、ASP.NETを使っている人は、ActiveWeb と ExpressWeb で、ネームサーバーへのドメインの登録数からみて最大で2000人ぐらいで、他のWindowsレンタルサーバーを使っている人はもっと少ないし、それにWindowsレンタルサーバーを借りていても実際はPHPしか使っていないというような人も多いので、個人のASP.NETユーザーというのは、日本ではかなりマイナーな存在だと思われます。このことがASP.NETのアプリケーションの盛り上がらない大きな理由だと思っています。

そもそも、日本でUmbracoを使っている人がどの程度いるのかをGoogle の検索で調べて見ると、Umbracoを使っているという記事があるページは、片手もない状況で、Orchard CMS に既に負けてしまっているようです。使ってみようかと思う人が少ない上に、実際に動作させるまでのハードルがかなり高いようで、日本でUmbracoを使ったことがある人はごく少数というのは間違いない状況です。

最近、wonderrabbitproject.netの兎氏がTwitterでUmbracoのことをツイートしていますが、プログラマビリティの良さについては認めていますが、UIに関しては低い評価をされています。この評価については、ある意味においては同感です。このことが、日本では全く使われていないし、世界的にも普及している地域が偏在している大きな理由だと思っています。また、UmbracoがUmbraco.tvでビデオによるチュートリアルを有料で公開しているというのもこのためだと思っています。

しかし、実際のところはUmbraoのUIはどのようにでもできるし、操作も難しいわけではありません。ただ、それを理解したり理解させたりするのが結構難しいのです。なぜかというと、普通のCMSの場合、管理画面には設定項目の一覧が並んでいて、デフォルトのままでも問題なく動くし、何かを変更したいときは項目の一覧をみてどの項目を設定したらいいのかがわかるので、システムに慣れた人であれば、すぐに理解できるようになっているし、初心者ならこういう場合にどうするのかを人に教えてもらうのも比較的簡単です。しかし、Umbracoは、プログラマビリティを優先しているので、管理画面に設定項目が並んでいない等他のCMSとは異なっている面が多くあります。それで、慣れた技術者であってもUmbacoの基本的なことを少し時間をかけて理解をする必要があります。でも、慣れれば生産性は高いと思います。世界的にはコミュニティの活動が活発なという理由もこのあたりにあるのでしょう。

静的なホームページを持っていて、それをCMS化したいというような場合には、HTMLの知識が少しあればできます。でも、それをマニュアルにするのには苦労しています。