9月 22

200809220749.jpg

GTDのシステムとしてThinkingRockを試してます。シンプルかつGTDのワークフローに忠実なので使いやすいですね。あと、ThinkingRockが作るデータファイルはXMLなので、何かあったときでもデータを復旧しやすいのもポイントが高い。

私は複数のPCを使って仕事しているため、GTDのリストをそれぞれの環境で参照したいのですが、ThinkingRockはJavaで書かれておりMac、Windows、Linuxで動作します。いいね。

ではデータファイルの共有をどうするか…ということになるのですが、ここでDropboxですよ。

DropboxもMac、Windows、Linuxで動作するので、Dropboxで同期しているフォルダ配下にThinkingRockのデータファイルを置けば、どの環境からもリストを参照、更新できるようになるじゃないですか。

ということで、しばらくRTMはinbox専用にして、ThinkingRock+DropboxでGTDをやっていきたいと考えています。

ただ、

  • 複数のPCで同時にThinkingRockを立ち上げる
  • あるPCで更新した後、違うPCでDropboxの同期前にThinkingRockを立ち上げる

など、問題になりそうなオペレーションが数多く想定されますので、試す場合は自己責任ということでお願いします。

関連リンク

Tagged with:
9月 11

DiracのAT160というD945GCLFを搭載したベアボーンで終日運転用のサーバを組もうとしたら、いくつかのトラブルに見舞われました。

200809111651.jpg

まず、CentOS 5.2を入れようとCD-Rを焼いたものの、外付けのDVDドライブBUFFALO DVSM-X1220U2からブートできません。仕方ないのでケースを開けた状態にして、余っていたIDEのDVDドライブをスレーブとして繋ぎ、そこからインストールすることに。

なんとかCD-ROMからブートできるようになると、今度はインストーラが途中でこけます。調べてみるとRealtek RTL8102ELというNICのドライバは、まだカーネルにデフォルトで入っていないため、別途インストールが必要とのこと。

とりあえず、BIOSでNICを殺した状態にして再度インストーラを実行。ちゃんとインストールのステップへ進めました。あとでNICのドライバをインストールする際、kernel-xen-devel gcc glibc-devel glibc-headers kernel-headers libgompなどが必要らしいので、インストールオプションで開発系のパッケージをチェック。

インストール後、ドライバを入れたUSBメモリをCentOSでマウント(うちでは/dev/sda1だった)しコピー。D945GCLFにCentOS5.2(x86_64) | CHOLESTEROLの通りにインストールし再起動。BIOSでNICを復活してもちゃんと起動します。よかった、よかった。

ただ、現状ではカーネルをアップデートしたら、再度ドライバをインストールする必要があるので忘れないように > 自分

AT160の感想としては、

  • 期待していたよりもファンの音が大きい
  • ケースの中はすかすかなので、もう少しコンパクトになるとうれしい(A4のノートPCを3〜4台重ねたぐらいの容積)
  • 前面のアルミパネルなどケースの見栄えは良い

という感じ。余っているメモリとハードディスク(このケースは3.5インチが入る)を流用できたので、AT160の費用だけで終日運転用のサーバができちゃった。安く上がったのは良かった!

Tagged with:
9月 05

ActiveSalesforceというSalesforceのデータベースをActiveRecord経由でアクセスできるアダプタを触ってみました。ちょっとハマった部分があるのでメモしておきます。

インストールと設定

私が試した環境はRails 2.1.0です。Rails 2.xだと、

$ gem install activerecord-activesalesforce-adapter

だけでOK。Rails 1.xだとインストールと設定の手順が違いますのでこちらを参照してください。

インストール後、すぐに下にあるようなコードを書いて動かしてみたのですが、RubyForge: ActiveSalesforce: トラッカー詳細: 19960 defining belongs_to with :dependent => :nullify is broken in edge rails > r8675と同じ事象が発生し動作しませんでした。このチケットにあるパッチをあてたところ、うまく動くように。

次にRailsでプロジェクトを作成し、config/database.ymlを次のように書き換えます。

development:
  adapter: activesalesforce
  url: https://www.salesforce.com/services/Soap/u/8.0
  username: Salesforceのアカウント
  password: Salesforceのパスワード|セキュリティトークン

ActiveSalesforceのドキュメントではパスワードだけを指定するように書かれていますが、今のSalesforceでは(ネットワークを信頼済みに設定しない限り)API経由でアクセスする際はパスワードに続けてセキュリティートークンを指定する必要があります。

セキュリティトークンはSalesforceにログインし、[設定] | [私の個人情報] | [セキュリティトークンのリセット] から参照できます。

尚、上記のconfig/database.ymlのサンプルでは、パスワードとセキュリティトークンの間に|がありますが、これは可読性のために入れてあります。

実際に指定するときはパスワードに続けてセキュリティトークンを指定してください。

Salesforceのデータにアクセスする

あとはRailsの世界です。ここではSalesforceの取引先(account)の一覧を出力してみます。accountのコントローラとビューを作成します。コントローラの方はこんな感じ。

def index
  @accounts = Account.find(:all)
  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :x ml => @accounts }
  end
end

ビュー(index.html.erb)はこんな感じ。

<h1>取引先一覧</h1>

<table>
  <tr>
    <th>取引先番号</th>
    <th>取引先名</th>
    <th>住所(請求先)</th>
    <th>電話</th>
    <th>Fax</th>
    <th>説明</th>
  </tr>

<% for account in @accounts %>
  <tr>
    <td><%=h account.account_number %></td>
    <td><%=h account.name %></td>
    <td>
        <%=h account.billing_postal_code %>
        <%=h account.billing_state %>
        <%=h account.billing_city %>
        <%=h account.billing_street %>
    </td>
    <td><%=h account.phone %></td>
    <td><%=h account.fax %></td>
    <td><%=h account.description %></td>
  </tr>
<% end %>
</table>

http://localhost:3000/accountsへアクセスしたらこんな感じに。

account.png

うん、普通にRailsアプリですね。とは言え、Salesforceのスキーマを知らないと何もできません。

SalesforceのスキーマはForce.com Web Services API Developer’s GuideのReference – Standard Objectsから参照可能です。

なお、RailsからSalesforceのデータへアクセスする場合、メンバ名を以下のように読み替える必要がありますのでご注意。

Filed Name(ドキュメントの表記) Railsのメンバ名
BillingPostalCode billing_postal_code

Salesforceを導入するような企業は既に基幹システムを持っているケースも多いと思います。

その場合、Force.com APIを使ってAjaxリクエストでデータを取得したり、バッチを開発したりして既存システムとSalesforceのデータ連係を実現する方法が主流だと思いますが、ActiveSalesforce + Railsという構成で、Railsの生産性の高さを生かしたSalesforce連携システム開発というのも可能性を感じます。

Salesforceに関しては標準のカスタマイズの他に、システム間連携の開発も可能です。そのような案件がありましたら、ぜひご相談ください。連絡先はこちらです。

Tagged with:
preload preload preload