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

Xojo日本語ブログ

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

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

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

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

プログラミング知識

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

変数

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

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ではこれらの技術を簡単に使える仕組みを用意していますので、ぜひツール作成にチャレンジしてみてください。