COMコンポーネント連携
HSPでは、COMオブジェクトを標準で扱うことが可能になっています。
これは、Java ScriptやWSHなどと同様にCOMが提供するオブジェクトを自由に扱ったアプリケーションの作成ができるということです。スクリプト「comobj.hsp」は、COMオブジェクトを利用した一例です。Microsoft.XMLDOMコンポーネントにより、CodeZineが提供するRSS情報をネット上から取得し、解析した内容を表示します。
; RSSを読み込む
url="http://codezine.jp/rss/new/10/index.xml"
;
newcom oDom,"Microsoft.XMLDOM"
oDom("async")="FALSE":oDom->"load" url
oRoot = oDom("documentElement")
if varuse(oRoot)=0 : dialog "取得に失敗しました。" : end
if oRoot("tagName")!="rdf:RDF" : dialog "RSSではありません。" : end
comres elm_ch
oDom->"getElementsByTagName" "title"
comres elm_link
oDom->"getElementsByTagName" "link"
node = elm_ch("item",0)
node2 = node("firstChild")
mes "タイトル:"+node2("nodeValue")
node = elm_link("item",0)
node2 = node("firstChild")
link = node2("nodeValue")
mes link
mes "----------------------------------------------------------------"
max=elm_ch("length")
if max>11 : max=11
repeat max-1
i=cnt+1
node = elm_ch("item",i)
node2 = node("firstChild")
mes ""+i+":"+node2("nodeValue")
node = elm_link("item",i)
node2 = node("firstChild")
link = node2("nodeValue")
mes link
loop
stop
4行目のnewcom命令により、変数をCOMオブジェクトとして初期化しています。パラメーターには、"Microsoft.XMLDOM"のようなプログラムID(ProgID)だけでなく、"{679c4137-c62e-4147-b2b4-9d569acb254c}"のようなGUID(インターフェイスID)を指定することもできます。
COMオブジェクトとして初期化された変数は、COMオートメーションに対応していれば、「変数->"メソッド名" パラメーター…」のような形で、メソッドを呼び出すことが可能です。
HSPが使用している情報と、COMが使用するUnicodeやVARIANT型による数値表現は、自動的に内部で変換が行われるため、シームレスにCOMを扱うことができます。
最後に
HSPは、導入の煩雑さや予備知識なく使い始められるという意味で、初心者でも覚えやすく、手軽に使える特徴を持っています。実際、ユーザーの年齢層が9歳の小学生から65歳以上という幅広さを持っているのも、敷居の低さを示していると言えます。
このような現状から、どうしても簡易言語として見られがちな面がありますが、プログラミングの準備や設計などを軽視しているわけではなく、実務での使用や、現場で小回りを利かせることのできるツールとして、1つの選択肢になると考えています。
現在、HSPTV!を始めとする各種関連サイトでは、活発に情報交換が行われており、参考書籍も12冊以上が発売されているため、HSPに関する情報を探すことは難しくなくなっています。
これを機会に新しいスクリプト言語の世界を覗いてみてはいかがでしょうか。
参考サイト
HSPに関する情報を扱っているサイトです。これ以外にも、多くのサイトが存在しますので、参考にしてみてください。

