Hatena::Diary

仙台 Rails Vim JavaScript社長 このページをアンテナに追加 RSSフィード

2010-02-19

Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する

| 00:15 | Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する - 仙台 Rails Vim JavaScript社長 を含むブックマーク はてなブックマーク - Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する - 仙台 Rails Vim JavaScript社長 Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する - 仙台 Rails Vim JavaScript社長 のブックマークコメント

いいたい事を先に。

Ruby,Python,PHP,JavaScriptやってる人でデスクトップアプリ作成に興味ある人は

Appcelerator Titanium Desktop さわってみるといいと思います。OS X, Windows,Linuxマルチプラットフォームデスクトップアプリhtml,JavaScript,Ruby,Python等の慣れ親しんだ技術で簡単に作成、公開することができます。

予想以上にブクマされてるみたいなので、Titanium Desktopの特徴を箇条書きですが追加しておきます。

ex.<script type="text/python">....</python>,<script type="text/php">....</php>,<script type="text/ruby" src="test.rb"/>,<?php ... ?>


さて。

http://www.atmarkit.co.jp/fwcr/design/tool/titanium01/01.html

Appcelerator Titaniumをここのところ触ってたんですけど、タイムリーに記事になりましたね。

これは結構面白い技術ですよ。

このAppcelerator Titaniumは、簡単にいうと、HTML/CSS/JavaScriptといったWebの技術を使って、デスクトップアプリや、iPhone/Androidアプリを作成できる開発環境です。ちゃんとOSネイティブな機能をJavaScriptでよぶ事が出来ます。

JavaScripthtmlで書いた同じソースコードからiPhone OS/Android向けのアプリを作成出来るというのは、iPhoneAndroidの開発をしている方々にはかなり魅力があるのではないでしょうか?

で、みんな興味があると思うiPhone/Android開発に使うTitanium Mobileには私はあんまり興味がなかったり。

興味はないですませるのはあれなので、Mobileの方の今時点での国内情報源のリンクを張っておきます。

Titanium Mobileに興味のある方はお役立て下さい。

http://code.google.com/p/titanium-mobile-doc-ja/

http://d.hatena.ne.jp/donayama/searchdiary?word=*[Titanium]


私はデスクトップアプリを作るTitanium Desktopの方に注目しています。

私の今目指している物を作るのにはちょうどいいので。

Adobe AIR等と比較してみているのですが、中々いい技術だなと思っています。

前述したようにOS X, Windows,Linuxマルチプラットフォームデスクトップアプリhtml,JavaScript,Ruby,Python等の技術で簡単に作成、公開することができます。




前置きはこれぐらいにして、Titanium Desktopについて実際にどんなものなのか説明していこうと思いますが、ちょっと長くなりそうなので別エントリーにします。

とりあえず書いてみた簡単なテストアプリのコードだけ張っておきますね*2

<html>
  <head>
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <script type="text/javascript" src="jquery-1.3.2.js" />
  </head>
  <body>
    <div id="result"></div>
    <div id="output">Click!</div>
    <div>
      <button onclick="helloJS()">Hello Javascript!</button>
      <button onclick="helloPython()">Hello Python!</button>
      <button onclick="helloRuby()">Hello Ruby!</button>
    </div>
    <button onclick="readFile()">read file</button>
    <p />
    <div id="stuff" style="border:1px solid #CDCDCD" />
    <p />

    <script>
      $(function(){
      alert(Titanium.App.getURL());
       });

      function helloJS(){
        $("#output").html("<p>hello javascript</p>");
      }
    </script>

    <script type="text/python">
      def helloPython():
        document.getElementById('output').innerHTML = "Hello World from Titanium using Python"
    </script>

    <script type="text/ruby">
      def helloRuby
        document.getElementById('output').innerHTML = "Hello World from Titanium using Ruby"
      end
    </script>

    <script>
      function readFile() {
        var contents;
        var filename = 'test.txt';
        var userDir = Titanium.Filesystem.getUserDirectory();
        var readFile = Titanium.Filesystem.getFile(userDir, filename);
        if(! readFile.exists()) {
          alert("File does not exist: " + readFile);
          return;
        }
        var readStream = Titanium.Filesystem.getFileStream(readFile);
        readStream.open(Titanium.Filesystem.MODE_READ);
        contents = readStream.read();
        readStream.close();
        var stuff = document.getElementById("stuff");
        stuff.innerHTML = contents;
      }

    </script>
  </body>
</html>

別エントリーにて説明したいと思いますが、これだけでも大体感じはつかめるんじゃないでしょうか?JavaScript+HTMLのコードの中にPythonRubyのコードも入ってます。ネイティブな機能の呼び出しとして、ここではTitanium.FilesystemというAPIを使ってユーザーディレクトリのファイルの読み込みを行っています。

後は画面。デザイン全然してないんでちょっとそっけないですけど・・。

f:id:yuichi_katahira:20100220001016j:image

それにしても、JavaScriptの重要性がどんどん増しているなと感じますね。

*1Fire FoxのFire Bugみたいなやつですね

*2Windows環境で写経してRuby,Pythonのところで文字列を日本語に変更した場合、このままでは表示されませんのでご注意下さい。後で説明します

おとなり日記