読者です 読者をやめる 読者になる 読者になる

Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

CDC(シチズンデベロッパーコミュニティ) #1が開催されました

CDC シチズンデベロッパー

開発がメイン業務ではないものの、自分の業務をスムーズにするためにちょっとしたツールを開発する、それがシチズンデベロッパーと呼ばれる方になります。皆さんの周りにもExcelAccessを駆使したり、SaaSを使いこなしている方はいないでしょうか。

そうした方々を集めて個人のナレッジを共有しようというのがCDC(シチズンデベロッパーコミュニティ)になります。第一回はラフノートさんのオフィスにて行われ、サイボウズ社の後迫さんが登壇されました。

CDCについて

まずCDCの趣旨についての紹介になります。シチズンデベロッパーが何であるか、さらにコミュニティでは何を求めていくかといった話です。

kintoneについて

kintoneはもはや説明の必要がないほど有名なクラウド型業務システム構築プラットフォームです。利用者の7割超が業務部門の方々となっており、まさにシチズンデベロッパーな方々が使っているツールと言えます。現在、800/日以上アプリが作られており、開発にも積極的なのが分かります。

f:id:moongift:20170220113429j:plain

kintoneでは無償の開発者ライセンスを配布していますが、アクティブ率が35%と非常に高いそうです。開発者向けドキュメントも第一回、第二回とつけることで達成感を得られるようにしていたり、コピペで動くコードを掲載するなど様々な工夫が見られます。さらに社内の方が作ったLintツールがあり、コードのチェックが簡単にできるようになっています。

kintoneでは100点のシステムを目指すのではなく、70点で早さを追求するスタイルをお勧めしていました。それをファストシステムと呼んでいました。kintoneを使ったシステム開発を行っているシステム39社では全4回の面前開発(対面で、その場で要望を聞きながら開発してしまうスタイル)を行っており、既存のExcelをkintone化してしまうと言います。とても高速にアプリケーションが開発できてしまうのが魅力です。

kintoneでは壁に当たった時に頑張りたいと思う人が頑張れる環境を用意している、というのがとても印象的でした。

LT

LTは全部で5本ありましたが、こちらでは資料がアップされているお二方について紹介します。シチズンデベロッパーというとちょっとしたツールを作っているくらいのイメージだったのですが、それが一気に覆るくらい技術力の高い方々が発表されていました。

ニフティ 川原さん

Pythonを使って統計データの前処理、Rを使った分析について。Excelでも高度な分析が行えるというのが印象的でした。

f:id:moongift:20170220113441j:plain

シックスアパート 壽さん

Google スプレッドシートのアドオンを使ったTwitter分析など。アドオンにはかなり便利そうなツールが揃っているようです。

f:id:moongift:20170220113450j:plain

ラフノート 西小倉さん

kintoneをかなり使いこなしている西小倉さんですが、さらにチャットワークやGoogle App Scriptとの比較をされています。

f:id:moongift:20170220113937j:plain


シチズンデベロッパーが一般的な開発者と違うのは、達成したい目標が目の前にあり、直線的に突き進む点にあります。非常にモチベーションが高いのです。開発者の場合、解決したい問題というのはクライアントが感じていることであり、自分たちの問題ではない場合があります。それによるメリットもありますが、達成へのスピード感という意味では劣るかも知れません。

第二回は3月8日に行います。興味を持たれた方はぜひご参加ください!

シチズンデベロッパーコミュニティ #2 - connpass

XojoのWebアプリケーションにスタイルシートを当てるには?

Xojo Tip Web スタイルシート

XojoでWebアプリケーションを作っていて、フォントや文字サイズなどを細かく調整したいと思うことは多々あるでしょう。そんな時、通常のWebシステムであればスタイルシートを使って指定するかと思います。

今回はXojoの中でスタイルシートを指定する、Webスタイルの使い方を紹介します。

Webスタイルを作成する

Webスタイルの作成方法は、左側にあるプロジェクトファイル一覧のペインを右クリックして「Webスタイル」を選択します。

f:id:moongift:20170122095734p:plain

そうするとWebスタイルの作成画面が表示されます。通常時、マウスオーバー時、ボタンを押した時そしてすでに表示済みの4パターンに対してスタイル設定が可能です。

f:id:moongift:20170122095743p:plain

Add Propertyボタンをクリックすると、設定できるスタイル設定が表示されます。フォント、枠線、影、パディング、コーナー、その他といったカテゴリに分かれており、その中からさらに選んで指定ができます。

f:id:moongift:20170122095805p:plain

Webスタイルを適用する

Webスタイルを作成したら、画面上の任意のコントロールを選択し、インスペクタのStyles設定にて先ほど作成したWebスタイルを選択します。

f:id:moongift:20170122095824p:plain

これでWebスタイルの適用された表示が確認できるはずです。

f:id:moongift:20170122095833p:plain


Webアプリケーションの場合、細かな設定はWebスタイルでできるようになっているので、各コントロールでは文字色なども設定できないようになっています。Webスタイルを使った利点としては、スタイルシートのように設定の再利用がしやすく、メンテナンスも容易ということでしょう。

さらにWebスタイルは継承して別なWebスタイルを定義することもできます。これによって、入れ子の構造も定義できますので、全体は統一しつつ、一部だけ設定を変更したいといった指定もできます。

ぜひ活用してください。

ノンプログラマーでもできる。たった2行のTwitterクライアント

HTMLViewer Twitter Xojo 開発 Tips

Webサービスの利点として、Webブラウザさえあればアクセスできる容易さが挙げられます。しかし、Webブラウザは時々再起動したくなることがあり、その度にWebサービスの利用も中断しなければなりません。また、他のWebサービスも使うため、セキュリティを気にする人もいるでしょう。

そこで最近増えているのがWebブラウザを内包して作るアプリです。予め指定したWebサイトしかアクセスできないように制御するものですが、日常的に使い続けるWebサービスは独立したアプリケーションになっていると便利です。

そこで今回はたった2行コードを書くだけで作れるTwitterクライアントの作り方を紹介します。

ウィンドウにHTMLViewerを貼り付ける

メインウィンドウの全面にHTMLViewerを貼り付けます(名前をtwitterViewerとしています)。ウィンドウの大きさは自由ですが、例えばスマートフォン用のWebサイトとして見たい場合は幅を320に指定します。高さは自由ですが、550くらいが良いでしょう。HTMLViewerも同じサイズにし、ウィンドウはResizableをオフにしておきます。

f:id:moongift:20170121181310p:plain

ウィンドウを開いた時のイベントを設定

ウィンドウが開いた時に、このHTMLViewerでTwitterのサイトを読み込むようにします。さらに、ユーザエージェントをiPhoneのものにします。これでスマートフォン専用サイトが表示されます。

twitterViewer.UserAgent = "Mozilla /5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B5110e Safari/601.1 "
twitterViewer.LoadURL("https://twitter.com/")

アプリを立ち上げる

これで完成です。アプリを立ち上げると、Twitterのサイトが表示されます。Webアプリケーションとして、使い勝手良く作られているので、このままでも十分Twitterクライアントとして使えるでしょう。

f:id:moongift:20170121181330p:plain


同じようなアイディアとしてはGmailFacebookFacebook Messenger、Instagramなどといったサイトが考えられます。この手のサイトは業務時間を奪ってしまう傾向があるので、普段使っているWebブラウザからはアクセスを禁止して、専用アプリを必要に応じて立ち上げるというのも良さそうです。

同じような仕組みはElectronを使ってもできますが、Xojoの方がコーディングも少なく、かつアプリケーションのサイズも小さくて済むでしょう。

プログラミング教材としての視点から見るXojoの利点

学習 Xojo プログラミング言語

2020年から小学校でのプログラミング教育の必修化が検討されています。今後、IT系人材が不足すると言われており、早期プログラミング学習を通じて人材育成が進めることが求められています。

小学生向けのプログラミング学習に利用されるプラットフォームとして注目されているのがScratchになります。キャラクターが動いたりするのは最初の切っ掛けとして面白く、興味を持ってもらう上でうってつけと思われます。

しかし、より本格的に開発していこうと思った時には別なプログラミング言語が必要になるでしょう。今回はそんな時になぜXojoがお勧めできるのかという点を紹介します。

GUIがあるソフトウェアを作れる

まず大きなメリットとしてGUIを持ったソフトウェアが簡単に作成できるという点が挙げられます。昔からプログラミング言語を覚える際にはスクリプトを書いて、コマンドラインで叩いたり、結果をコンソールで確認しながら進めることが多かったかと思います。これでは今のGUIに慣れた子供にすれば味気なく、単調に映ってしまうことでしょう。

GUIがあることで入力したり、その結果を確認するのが容易になります。別な言語の場合、HTMLで画面を作ることが多いのですが、HTMLで見栄えの良いページを作成するのは容易ではありません。

f:id:moongift:20170121160336p:plain

XojoではGUIを持ったソフトウェアを簡単に作成できます。画面もドラッグ&ドロップで部品を追加していくだけでできあがります。これはデスクトップ、Web、iOSどのプラットフォームであっても同じです。

Windows/macOS/Linuxで動く

多くの学校ではOSが固定されています。場合によってWindowsのこともあるでしょうし、理系の学校などではmacOSを使っているところもあります。大学などではLinuxを使っているケースもあるでしょう。そうした中で体系的に一つの言語を覚えていくというのは困難です。

また、学校ではWindowsを使っていて、家庭ではmacOSという場合もあるでしょう。こうした時にも学校で覚えた知識が活かせないという問題があります。学校で覚えたことを他で使えてこそ意味があると言えます。

Xojoはマルチプラットフォームで動作するので、自分が好きな環境で開発ができます。プログラミング言語は同じなので、WindowsでもmacOSでも同じ書き方で同じ動作をするソフトウェアを開発できます。

セットアップが簡単

プログラミング言語によっては環境設定に苦労するというのはよくある話です。巨大なインストーラーをダウンロードしてしばらく待つ羽目になったり、一週間毎にアップデートが来たりすることもあります。何か新しいことをしようとすると追加のパッケージが必要になって、すべてインストールしなければならない…なんてことになると授業する時間すら削られてしまいます。

Xojoの場合、セットアップはごく簡単です。インストーラーを実行するだけですし、そのインストーラーはUSBメモリなどに入れて各コンピュータで実行すれば良いでしょう。macOSであればアプリケーションをコピーするだけです。アップデートは3ヶ月毎に行われますが、そのまま継続利用している方もいます。

IDEで簡単にデバッグできる

プログラミングは常にうまく書けるとは限りません。多くの場合、書き方にミスがあったり、データ形式にミスがあったりしてエラーになります。スクリプト言語は実行時にコンパイルするので、エラーが出ると解決に時間がかかりやすいのが難点です。

XojoはIDE上で作るので、常に変数の型や入力エラーがないかを確認できます。これによってプログラミングを間違える可能性が格段に下がります。また、IDE上でブレークポイントを設定することで実行を途中で止めて、中の変数がどうなっているか、どう処理が進んでいるかを追いかけることもできます。

f:id:moongift:20170121160441p:plain

プログラミングはうまく動いている時は楽しいですが、エラーになると途端に気落ちしてしまいます。エラーにならないための工夫と、エラーになった時にもすぐに自分で解決できる機能があるかどうかは学習効果に大きな違いが生まれるでしょう。

スマートフォン、IoTにも使える

子供であれば誰もが親しんでいるスマートフォンタブレットといった今時のデバイス向けのアプリケーション開発もXojoで行えます。デスクトップは現代の子供にとって煩わしいものになりつつあります。デスクトップで作ってデスクトップで動かすだけでなく、スマートフォンで動くものの方が見た目のインパクトは大きいと言えます。

XojoではiOS向けの開発もサポートしています。デスクトップアプリケーションを作ってみて、そのままのやり方でiOSアプリも作れるようになります。自分で作ったアプリケーションが親のスマートフォンで動いたとしたら、どれだけ楽しいことでしょうか。さらにAndroidについても2017年中の対応を予定しています。

f:id:moongift:20170121160528p:plain

さらにRaspberry Pi向けのアプリケーションも作成できます。LEDを光らせたり、ステッピングモーターを回転させたりといった動くガジェット作成もXojoでできます。デジタルデバイスの中だけでなく、フィジカルな体験ができるのは教育上お勧めです。

すぐに覚えられるやさしい言語体系

プログラミング言語というのは普段の生活の中で使われることは殆どなく、とても難解な呪文のように受け取られがちです。それをただひたすらに書き続けて動くものを作るというのは楽しさの欠片もないでしょう。

f:id:moongift:20170121160552p:plain

Xojoの言語体系はとてもシンプルです。全くのゼロから覚え始めたとしても、すぐに書けるようになるでしょう。さらにボタンを押した、選択したといったイベント駆動でプログラムを記述する方式になっていますので、直感的で、何をしているかが一目で分かるようになっています。


本家のUSではXojoを子供向けの学習教材と提供しています。一番最初のビジュアルプログラミングを終えた子供たちが、次のステップとしてもう少し本格的なものを作ろうと思った時にXojoはぴったりなプログラミング言語です。さらにプロとしてXojoを使っている方々もたくさんいるので、Xojoを継続的に学ぶことは、プログラマーとして生計を立てる上でも全く問題ない、信頼できる言語であると言えるでしょう。

言語別に紹介。macOS向け開発環境まとめ

IDE macOS 開発環境

最近はmacOSで開発を行う人たちが増えてきました。iOS向けの開発者が多いですが、他の言語向けの開発を行う場合も多いでしょう。そうした時にエディタレベルではなかなか効率的に開発できないかも知れません。

そこで他の言語でも同じようにIDEを使って開発を行ってみましょう。今回はそんなIDEを言語別に紹介します。

Xojo

Xojoを書くためにはXojo IDEを使う選択肢のみとなっています。

Xojo(ゾージョー)仕事に。研究に。”使える”アプリを瞬速×クロス開発|グレープシティ株式会社

f:id:moongift:20170117083715p:plain

言語も含めて有償のIDEです。対応言語はXojo一つですが、開発できるプラットフォームはWeb/macOS/Windows/Linux/Raspberry Pi/iOSと幅広くなっています。

Java

Eclipse - The Eclipse Foundation open source community website.

f:id:moongift:20170117083554p:plain

Java開発の老舗的なエディタです。プラグインも数多くリリースされており、そうした資産を使って効率的な開発ができるようになっています。昔はAndroid開発に使われていました。

IntelliJ IDEA the Java IDE

JavaおよびJava VM上で動作するプログラミング向けのIDEです。Scala、Groovy、Kotlinなどが動作します。Android向けに利用することもできます。

Android Studio と SDK ツールをダウンロードする | Android Studio

f:id:moongift:20170117083736p:plain

Javaの中でも特にAndroidに特化した開発ツールです。公式IDEである点も重要です。ベースはIntelliJ IDEAとなっています。

Objective-C/Swift

Xcode - Apple Developer

f:id:moongift:20170117083753p:plain

XcodeAppleが公式提供するIDEです。UIの設計を行ったり、Appleの提供する各種iOS向け機能と連携している点が便利です。

JetBrains AppCode: Swift Execution of Your Bright Ideas

f:id:moongift:20170117083745p:plain

JetBrains社製のmacOS/iOS開発用のIDEです。コーディングするという目的であればXcodeよりも使い勝手が良いとよく聞かれます。

C

New Release Preview: Visual Studio for Mac | Visual Studio

f:id:moongift:20170117083727p:plain

macOS上でC#によるiOS開発ができるのがVisual Studio for Macです。とは言えWindows用のVisual Studioとは別物で、元々はXamarinの作っていたIDEがベースです。

MonoDevelop | MonoDevelop

f:id:moongift:20170117083811p:plain

C#、F#などの開発ができるIDEです。Webサーバも組み込まれており、ASP.NETの開発もサポートされています。

Ruby

Ruby向けのIDEとしては「Ruby」というよりもRails向けのIDEとなっているようです。

Ruby on Rails IDE :: JetBrains RubyMine

f:id:moongift:20170117083541p:plain

有償のIDEです。JetBrains社製なので、他のIDEと同様に品質は確かと思われます。

Node.js

Deco - React Native IDE

f:id:moongift:20170117083703p:plain

オープンソースです。React Native用のIDEになります。プレビュー画面でリアルタイムにデザインを変化させながら表示を確認できます。

Nuclide - Nuclide is built as a single package on top of Atom to provide hackability and the support of an active community. It provides a first-class development environment for React Native, Hack and Flow projects.

f:id:moongift:20170117083656p:plain

オープンソースです。Facebookが開発しており、AtomをベースにReact Nativeに特化したIDEとなっています。

WebStorm: The Smartest JavaScript IDE

f:id:moongift:20170117083636p:plain

有償のIDEです。Webはもちろん、Node.jsもサポートしています。Grunt/Gulp/npmといったタスクマネージャも実行でき、Expressなどのテンプレート生成も行えます。

Python

PyCharm

f:id:moongift:20170117083647p:plain

有償のIDEです。JetBrains社製です。DjangoGoogle App Engine、web2pyなど数多くのフレームワークと連携します。HTML/CSS/JavaScriptなどもサポートしています。

spyder-ide/spyder: Official repository for Spyder - The Scientific PYthon Development EnviRonment

オープンソースです。特に学術系のデータビジュアル化に特化したIDEとなっています。

フロントエンド

Brackets - A modern, open source code editor that understands web design.

f:id:moongift:20170117083606p:plain

オープンソースです。HTML5/CSS/JavaScript、いわゆるフロントエンドの開発に特化しています。

その他

Komodo IDE: The Best IDE for Web and Mobile App Development | ActiveState

f:id:moongift:20170117083624p:plain

有償のIDEです。PythonPHP、Go、Perl、Tcl、Ruby、NodeJS、HTML、CSSJavaScriptなど100を越える言語に対応しています。Gulp/Grunt/npmと連携していたり、Chromeデバッガーを使うこともできます。


IDEによっては複数の言語に対応しているものも多いですが、やはりプラットフォームやプログラミング言語特化型IDEの方が便利に使えるはずです。特にJetBrains社は言語やプラットフォームごとに別なIDEを出し、それぞれ使い勝手を特化させています。

Xojoは言語は一つですが、同じコーディングで複数のプラットフォームに対応します。無料で使い始められますのでぜひダウンロードしてみてください

デスクトップ用Xojoアプリの中でHTTPサーバを立てる

Xojo Web API 開発

デスクトップアプリケーションの中には他のアプリケーションから操作したいと思うものがあります。よくあるケースとしてはExcelAccessなどのオフィスツールです。そうしたソフトウェアではAPIアプリケーションプログラミングインタフェース)を提供しています。しかしこの手のAPIはアプリケーションの実行環境が大きく影響します。例えばWindows上で動いているソフトウェアをmacOSLinuxからは操作できません。

そこで紹介したいのがデスクトップアプリの中にWeb APIサーバを立てるという方法です。Web APIは先ほどのAPIと似ていますが、HTTP/HTTPSを使っているのが特徴です。つまりWebブラウザやCUI、他のプログラミング言語とも連携がとても簡単にできるようになります。

今回はそんなXojoアプリの中でHTTPサーバを立てる方法を紹介します。

関連ライブラリをインポート

実際の作業としてはXojo向けHTTP機能を提供するbeardedio/XojoHTTPServer: A http server class for Xojo / RealBasicを自分のXojoプロジェクトにインポートするところからはじまります。

プロパティを用意

2つプロパティを用意します。これはAppでもウィンドウでも良さそうです。

  • Socket as MyHTTPServerSocket
  • RequesterIndex as MyRequesterIndex

コーディング

今回はウィンドウのOpenイベントに対して実装します。

RequesterIndex = New MyRequesterIndex
Socket = New MyHTTPServerSocket
Socket.AddURL("/data.json", RequesterIndex)
Socket.Port = 8080
Socket.Listen

これで分かる点として 8080番ポートで入力を待ち受けています。 http://localhost:8080/data.json にアクセスすると RequesterIndex が呼び出されます。

実際にコールされるのは MyRequesterIndex.HandleRequest になります。例えば次のように実装します。

dim Person as new JSONItem
Dim items As New JSONItem
dim i as integer
For i = 0 to 50
  items.Append(i)
Next

Person.Value("values") = items

Context.headers.Value("Content-Type") = "application/json"
Context.Print(Person.toString())
Context.Print(EndOfLine)

Context.StatusCode = MyHTTPServerModule.kstatusok

Exception err
  Raise err

アクセスする

では実際にアクセスしてみます。

$ curl http://localhost:8080/data.json
{"values":[0,1,2,...,49,50]}

このようにJSONデータが返ってきました。このデータはアプリケーション内のデータを返せますので、保存したデータなどを他のアプリケーションに渡すのにも使えるでしょう。XojoであればHTTPSocketを使ってデータを取得し、JSONをパースすればアプリケーション内部で利用できます。


かつてのAPIというと用意する側も利用する側も手間暇かかるものでしたが、Web APIであればとても簡単に実現できます。アプリケーション同士の連携に役立ててください。

シチズンデベロッパーに必要な最低限の知識

開発 シチズンデベロッパー

プログラミング専門職ではない開発者、いわゆるシチズンデベロッパーの方がツールを作ろうと思った時には少なからず技術的な知識が必要になります。多かれ少なかれ技術に興味がある方がシチズンデベロッパーになっているはずで、毛嫌いするようなことはないと思いますがそれでもあまり難しいのは避けたいでしょう。

プログラミング知識

まず最低限、プログラミングの知識は必要です。これはプログラミング言語によって内容が異なりますが、以下の知識は必須でしょう。

変数

あらゆるプログラミング言語では変数と呼ばれるデータの入れる場所を用意します。その変数を使って計算したり、文字を分解したりして処理の中で活かします。

Xojoの例

// 文字列の場合
Dim strString as String = "こんにちは"

// 数値の場合
Dim intNumber1 as Integer = 100
Dim intNumber2 as Integer = 300
Dim intNumber3 as Integer

intNumber3 = intNumber1 + intNumber2
// intNumber3 -> 300

処理分岐、繰り返し

ある変数が指定した値と同じか否かといった条件を指定して処理分けを行います。また、指定した条件にマッチするまで同じ処理を繰り返す指定もよく使われます。

Xojoの例

If intNumber1 = 100 Then
  // 100だった場合こちらに
Else
  // 100じゃなかった場合こちらに
End If

繰り返し処理の例。

Dim i as Integer
For i = 0 To 100
  // iが0から100まで繰り返し
Next

関数

同じ処理を何度も書くと、修正が面倒になってきます。そこで関数と呼ばれる仕組みを使って、処理を共通化します。そうすれば何か修正する際にも関数を修正すれば、その関数を使っているすべての処理が修正済みになります。

Xojoの例

// 関数を定義します
Function Plus(a as Integer, b as Integer)
  Return a + b
End Function

// 関数を使います
Plus(5, 10)
// -> 15

// もう一度関数を使います
Plus(20, 30)
// -> 50

データの入出力

担当者が画面で入力した値を取る方法であったり、逆にプログラムで処理した結果は画面やファイルなどに出力する必要があります。これはプログラミング言語や環境(デスクトップ、Webなど)によって方法が異なります。

Xojoの例

// txtNameに入力された内容を取得します
Dim strName as String = txtName.text

// txtNameに文字を入力します
txtName.text = "Xojo 太郎"

エラー処理

プログラミングコードの多くは理想的な、正常系と呼ばれる動作に基づいて作られます。しかし、担当者の入力した値であったり、処理の中で起こったミスによってエラーが発生します。これは必ず起こるもので回避できません。

そこでエラー処理と呼ばれる仕組みを知っておく必要があります。エラーが起きた時に安全に処理が終われるようにしておくと、入力したデータが消えてしまったり、途中で処理が終わってしまってデータの不整合が起こるような事態を防げるようになります。

Xojoの例

Try
  // 何か処理を書きます
  
  
Catch e as Exception
  // エラーが起きるとここに移動します
End Try

データベース

処理する前後のデータはどこかに保存されます。その多くはデータベースになるでしょう。MS OfficeであればAccessを使ったり、そこまで大きな規模でなければExcelを代わりに使うでしょう。

誤解を恐れずに言えば、データベースはExcelのような表(テーブルと呼びます)が幾つも保存されたものになります。さらにそのテーブル同士を条件に合わせてつなぎ合わせたり、フィルタリングしたりして処理に必要なデータだけを素早く取り出し、更新したりできます。

簡易的なものであればSQLiteと呼ばれるデータベース、より本格的なものであればMySQLPostgreSQL、商用ではSQL ServerOracleなどが存在します。

Xojoの例

Dim db As New SQLiteDatabase
db.DatabaseFile = GetFolderItem("db.sqlite")
If db.Connect Then
  // DBへデータを追加します
  db.SQLExecute ("INSERT INTO Employees (Name,Job,YearJoined) VALUES "_
    +"('Dr.Strangelove','Advisor',1962)")
  // エラー判定を行います
  If db.Error then
    MsgBox("Error: " + db.ErrorMessage)
  End If
Else
  // DBへ接続できなかった場合です
  MsgBox("The database couldn't be opened. Error: " + db.ErrorMessage)
End If

インターネットアクセス

昨今の業務システムでは多くのデータをインターネット上からダウンロードします。それらはPDFであったり、CSVファイルかも知れません。そういったデータをダウンロードするためにログインしたり、同じ操作を行うのはとても面倒です。

コンピュータが人のようにインターネットアクセスを行うというのは意外と大変ですが、多くの場合そういった要望が出てくるでしょう。

Web API

さらに一歩進むと、Web APIと呼ばれる仕組みを使うようになります。APIとはアプリケーションプログラミングインタフェースの略で、Webサービスをシステムから使えるようにする仕組みになります。上記のコンピュータが人のようにWebブラウザを操作する方法では、Webサービスのデザインが変わったりすると動かなくなってしまいますが、Web APIでは元々コンピュータからの操作を対象として考えられています。

殆どWebブラウザを使っているときと変わりませんが、認証する際にID/パスワードを利用することは殆どありません。別途システム用にトークンと呼ばれるキーを用意することで認証の代わりにしています。また、データの送受信を行うフォーマットがJSONまたはXMLと呼ばれるシステムにとって使いやすいものを使うなど、Web APIならではの知識も必要になります。

Xojoの例

Dim socket1 As New HTTPSocket
Dim data As String = socket1.Get("http://www.example.com/example.json", 30)

メール

システムで処理した結果を指定したアドレスに対してメールして欲しいという要望も度々あがります。メールの受信/送信についてはIMAP(またはPOP3/SMTP)という仕組みを使いますが、これらは多くのプログラミング言語でライブラリ(その機能を簡単に使えるようにする関数群)が提供されているので、実現はそれほど難しくはないでしょう。

ただし、メールは送り先を間違えたり、内容をミス(よくあるのは文字化け、名前抜けなど)して送信すると取り返しが付かない問題に発展することが多々あります。繰り返しテストしてミスのないようにしましょう。

// サーバを指定します
SendMailSocket.Address = "smtp.example.com"
SendMailSocket.Port = 25

// メールを作ります
Dim mail As New EmailMessage
mail.FromAddress = "example@example.com"
mail.Subject = "Test email subject"
mail.BodyPlainText = "Hello, World!"
mail.AddRecipient("taro@example.com")

// メール送信
SendMailSocket.Messages.Append(mail)
SendMailSocket.SendMail

他にも作るべきツールに合わせて多彩なニーズが出てきますが、まず基本としては上記になるかと思います。これらの知識をベースとして、業務フローを効率化できるツールをどんどん作っていきましょう。Xojoではこれらの技術を簡単に使える仕組みを用意していますので、ぜひツール作成にチャレンジしてみてください。