Xojo日本語ブログ

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

XojoならVisual Basicの知識でiOS/Web/macOSアプリが作れます!

Visual Basicはとても優れたプログラミング言語で、今なお社内システムとしてメンテナンスされているケースが多々あります。乗り換えるには既存の資産があまりにも大きく、さらにWindows 10でも動作するとあって今なお使われています。

そうして培ってきたVisual BasicのプログラミングスキルはWindowsアプリ開発でしか活かせません。VB.NETC#.NETは構文が大きく異なりますし、開発手法も変わってきます。せっかくの開発スキルを他でも活かしたい、そう考える方にお勧めなのがXojoです。

構文はVisual Basic/VBに似ています

XojoはVBに似た構文をベースに、本格的なオブジェクト指向を追加したプログラミング言語となっています。若干の違いはありますが、基本的にVBの構文がそのまま使えます。

WindowsだけでなくmacOSLinux、WebさらにRaspberry PiiOSも!

Xojoは一つの言語で複数のプラットフォームに対して開発ができます。デスクトップであればmacOSLinux、さらにWeb、Raspberry PiiOSと対応しています。2017年度中(予定)にはAndroid向けにも開発できるようになります。

f:id:moongift:20170325002308p:plain

つまりこれまで培ってきたVisual Basicの開発スキルであらゆる環境に対してソフトウェアが開発できるようになります。

IDEを使って簡単に画面作成

VBの特徴とも言える、効率的なIDEがXojoにも備わっています。あらかじめ用意されている多数のコンポーネントドラッグ&ドロップするだけで画面の設計ができます。

f:id:moongift:20170325002320p:plain

イベントドリブンな開発

さらにボタンをクリックした、ドロップリストから選択したなどユーザのアクションに応じてコーディングしていけば良いだけで、とても簡単に開発が進められます。この辺りはVBプログラマーであればよく知る方法と言えます。

さらにオブジェクト指向

VBでプログラミングしていると、オブジェクト指向がサポートされていないことでコードの再利用性が悪かったり、オブジェクトのカプセル化などが使えないのにストレスを感じるでしょう。最近のプログラミング言語は大抵オブジェクト指向が搭載されているので尚更です。

Xojoでは本格的なオブジェクト指向が実装されていますので、クラスやモジュールを使ってコードを適切に管理したり、再利用性の高いコードが書けるようになります。


Visual Basicを今なお使い続けなければならないのは大変ですが、Xojoを使うことでそのスキルを今のトレンドの中で活かせるようになります。折角のVB開発スキル、Xojoを使ってもっと活かしてみませんか?

一行で作るMastodonクライアント

分散型SNSMastodonの人気が急激に高まっています。Webブラウザから使うのが基本ですが、より本格的に使っていくためには専用クライアントソフトウェアの存在が欠かせません。

そこで今回はたった一行のコードでできるMastodonクライアントの作り方を紹介します。

HTMLViewerを使います

Xojoのメインウィンドウの上にHTMLViewerを貼り付けます。サイズはウィンドウと同じです。今回は1200x800としています。

イベントを追加する

次にウィンドウが開いた時のイベントとして、HTMLViewerでMastodonのURLを読み込みます。

htmlView.LoadURL("https://mstdn.jp/")

コーディングはこれだけです。

実行してみる

では実際に実行してみます。ちゃんとMastodonのサイトが表示されて、ログインできればOKです。

f:id:moongift:20170423171655p:plain

セッション自体は通常のWebブラウザとは切り離されますので、常時立ち上げておいても安心です。


この手のソフトウェアはElectronでよく見られますが、Xojoであればたった一行のコードで完結します。なお、WindowsmacOS用にビルドしたファイルをRelease Base · moongift/MastdonClientにアップロードしてあります。参考にしてください。

シチズンデベロッパーの業務改善例

シチズンデベロッパーは一般的に自分の業務に対する満足度が高いと言われています。それは面倒だったり、手間がかかる業務を自動化、簡素化することによって本来行うべき価値ある業務にフォーカスできるためでしょう。

今回はシチズンデベロッパーがどのような業務改善を行えるか、その一旦を紹介します。

ソーシャルデータの収集を自動化する

マーケティング担当者でよくあるのがTwitterなどのソーシャルメディアでの自社製品に関する情報収集です。毎日繰り返し検索したり、書き留めたりするのはとても大変なので、自動化する方法を考えるようになります。

使えるのはGoogleスプレッドシートのMHGYgT-unu1fC7zXOkNfBUVSHJARy_IP7というキーのライブラリです。これを使うとあらかじめ設定したキーワードにマッチするツイートを自動的にGoogleスプレッドシートに追記してくれるようになります。

一度データを蓄積してしまえば、後はいくらでも自由に分析できるようになるでしょう。使い方はTwitter 検索の結果を Google Drive のスプレッドシートに出力する (2016年春版) · hikarock blogが参考になります。

PDFからデータを抜き出す

PDFで送られてくる請求書などレポートから必要なデータを集めてデータベースに登録したりする作業があります。これを定期的に行うのは意外と骨の折れる作業です。PDFは特に編集しづらいのが問題です。

そこでPDFTOHTML/PDF2TXTというソフトウェア(コマンド)があります。これを使えばPDFをもっと扱いやすいHTMLやテキストにしてくれます。そして一旦変換してしまえば、目的の数字を正規表現などで取り出すのも難しくなくなります。

コマンドと正規表現の組み合わせになりますが、一度使えるようになると応用が利きやすいはずです。

データベースアプリケーションを作る

業務というのは何らかのデータベースが必ず存在するものです。データベースというと大げさに聞こえますが、Excelのような表計算のシートが多数集まって、シート同士が関連したものと言えます。MS Accessであったり、kintone、Filemakerなどがデータベースアプリケーションとして有名です。

表計算ソフトウェアではできないデータの検索であったり、入力フォーマットなども指定したデータ登録などがしたくなったならばデータベースアプリケーションの出番となります。データはレポートとして帳票やレポートにできますので、毎回データを整形したりする手間がなくなります。

表計算ソフトウェアに登録しているデータをデータベースに登録し直すのはさほど難しいものではありません。まず表計算ソフトウェアに蓄積しておき、分析やレポートが出したいと思ったらデータベースアプリケーションにしてみるのがお勧めです。

データをCSVファイルにする

メールであったり、テキストファイルに書き留められた内容を表計算形式に変換したいと考える時は多々あります。一つ一つコピー&ペースとしても良いですが、とても手間のかかる作業です。モチベーションが上がるものでもないでしょう。

一定のフォーマットに沿って記述されているのであれば正規表現の出番です。正規表現によって記述できれば、後はマッチした文字をカンマ区切りなどで繋いであげるだけでCSVファイルができあがります。

正規表現はこの他、HTMLファイルから特定の情報(URLやメールアドレスなど)を抜き出したり、テキストファイルから必要な情報(会社名など)を抽出するのにも使えます。シチズンデベロッパーにとって必須の習得スキルと言えるでしょう。

Webページの入力を自動化する

業務システムでWebページ上に情報を入力する機会は多いでしょう。しかし毎日同じ内容を入力するというのはとても面倒です。例えば日報などで日付を今日にしなければならなかったり、部署や名前を都度入力するのは苦痛にすらなります。

そこで使えるのがブックマークレットです。Web画面上の指定された部分に対して指定した文字を入力するようにプログラムを書けば、後はブックマークレットを実行するだけで文字が入力できるようになります。今日の日付といったような実行されたタイミングによって入力する情報を変化させることもできます。

ブックマークレットJavaScriptというプログラミング言語によって作成できます。プログラミング言語なので多少覚えるのは大変ですが、様々な場面で役立つテクニックになります。例えば画面上のすべてのチェックボックスをつけるといった作業もブックマークレットなら簡単にできます。


いかがでしょうか。他にも多くの改善例が考えられるでしょう。シチズンデベロッパーであれば、自分が普段面倒だと感じていることもツールやプログラミングによって一気に改善できる可能性があります。

Xojoはシチズンデベロッパーも対象としています。分かりやすいプログラミング言語体系、GUIで簡単に画面が作れる、WebもデスクトップもiOSアプリまで幅広くこなせるといった特徴があります。言語体系が分かりやすい、すぐに使いこなせるというのはシチズンデベロッパーにとって大事な要素になります。ぜひ皆さんの業務改善にXojoを使ってみてください。

Xojoを使ったRaspberry Piのリモートデバッグについて

Raspberry Pi向けのソフトウェアを開発する場合、多くはPythonかNode.jsを使うかと思います。そして、Raspberry PiSSHで接続してコードを編集するでしょう。その際、viやEmacsを使ってコーディングを行うと思います。つまり、普段のソフトウェア開発とは全く異なるスタイルでの開発を強いられているはずです。さらにデバッグ機能がうまく使えないことも多く、標準出力を使ったデバッグで一つ一つ確認していくことになるでしょう。これは生産性が高いやり方とは言えません。

今回はXojoの新機能であるRaspberry Piのリモートデバッグ機能を紹介します。これを使えば普段使っているXojo IDEからRaspberry Piアプリの開発やブレークポイントを使ったデバッグができるようになります。

X Window必須

f:id:moongift:20170406080312p:plain

一点注意点として、Raspberry Pi側でX WindowGTK)が必須になります。これはコンソールアプリしか開発しない場合でも必要です。そのため、Rasbian Liteでは動かないので、別途apt-getを使うか、フルのRaspberry Piを使ってください。後はデフォルトでSSHDが立ち上がっていないので、raspi-configを使って立ち上げた方が良いでしょう。

f:id:moongift:20170406080409p:plain

リモートデバッガーを転送する

次にリモートデバッガーのLinux ARM.zipをSCPなどを使って転送します。このリモートデバッガーはXojoのExtraフォルダに入っています。macOSであれば次のようなコマンドになります。複数のデバッガーがありますが、ARMなので注意してください。

scp /Applications/Xojo\ 2017\ Release\ 1/Extras/Remote\ Debugger\ Desktop/Linux\ ARM.zip pi@your_raspi_address:/home/pi/Desktop

リモートデバッガーを起動する

f:id:moongift:20170406080607p:plain

リモートデバッガーを転送したら、Zipを解凍して起動します。下の画像のようなウィンドウが表示されればOKです。コンソールアプリの場合は、ここでRaspberry Piのディスプレイは不要になります。

f:id:moongift:20170406080640p:plain

Xojoで開発する

後は自分のメインマシンに戻ってXojo IDEで開発を行っていきます。ビルド環境としてARM 32bitとしておくのを忘れないでください。

リモートデバッガーを登録する

デバッグしたいと思ったら、まずリモートデバッガーのアドレスを設定します。これはXojo IDEの設定画面で行えます。

f:id:moongift:20170406080702p:plain

IPアドレスを設定して、分かりやすい名称をつければ完了です。

f:id:moongift:20170406080713p:plain

リモートデバッグを実行する

ではいよいよリモートデバッグを開始します。プロジェクトメニューのリモート端末で実行を選択し、先ほど作ったリモートデバッガーを選択します。

f:id:moongift:20170406080721p:plain

実行するとコンパイルされて、Raspberry Piに転送されます。

f:id:moongift:20170406080759p:plain

デスクトップアプリの場合は、そのまま起動します。コンソールアプリの場合、リモートデバッガーのあるディレクトリにDebugと頭についてビルドされた実行ファイルができますので、これをコンソールから実行します。

$ ./DebugRaspberryPiDemo

そうするとブレークポイントがあるところで実行処理が停止します。

f:id:moongift:20170406080825p:plain

注意点

コンソールアプリの場合、ビルドされたアプリをデバッグできるのは一度だけになります。もう一度デバッグする場合はリモートデバッグを再実行してください。

転送に若干時間がかかることがあります。何度も頻繁に行うのには向かないかも知れません。


Raspberry Piアプリの開発はコンソールベースで行うことが多く、普段の使い慣れた環境が使えず面倒に感じることが多々あります。そんな中、Xojoであれば日常的に使っているXojo IDEを使って、デバッガーを組み合わせて効率的にアプリ開発できるようになります。ぜひRaspberry PiのXojoを使ってIoT開発をはじめてみてください。

シチズンデベロッパーが注意したい4つのこと

シチズンデベロッパーとしてツールを作る楽しさを覚えると、これまであったすべての業務を自動化したくなります。それはとても素晴らしいことなのですが、闇雲にツールを作っていくと徐々に問題が顕在化していきます。

今回はそんなよくある問題について紹介します。

コードが散在

スクリプトが入ったフォルダを開けると、たくさんのコードがごちゃっと存在してしまってどれが正しいのか、どれが使えるのか分からなくなってしまったという話を良く聞きます。場当たり的に作ってしまうとそうなりがちです。

システム開発並に緻密な計画はいりませんが、せめて「作り中」「利用可能」「利用不可」くらいのフォルダは作って分類しておくのが良いでしょう。また、利用可能なものについては自分用にツールの目的や使い方をメモしておいても良いかと思います。使っている期間はいいのですが、しばらく使わなくなると利用法をすっかり忘れてしまうと言ったことも多々あります。そうならないための自分用メモです。

不当なアクセス

スクリプトで自動化すると、システムに対して過剰な負荷を与えてしまうことが多々あります。その結果としてシステム部門に迷惑をかけたり、場合によっては他社に損害を与える可能性もあります。特に他部署、他社のデータに触れる際には注意が必要です。

外部のWebサイトにアクセスしてデータを取ってくる、いわゆるスクレイピングと呼ばれる行為は過剰に行うと法的に罰せられたり、訴えられる可能性があります。また、そもそもスクレイピングを禁止しているサービスも数多く存在します。

不用意な更新によって動作しなくなるリスク

徐々にメンテナンスしていって、ある日突然動かなくなってしまうことがあります。元に戻せれば良いのですが、すでに何日も経ってしまっているとどこを更新したかも覚えていないでしょう。そうした事態を防ぐために使えるのがバージョン管理やバックアップです。

よくあるバックアップはファイル名に日付をつけて別名で保存しておくというものですが、ファイルが増えていくと管理が煩雑になってしまいます。早い段階でバージョン管理を使えるようになるのがお勧めです。

自作ツールの巨大化

徐々にメンテナンスしていくと、いつの間にか巨大な超大作ができあがってしまうことがあります。ツールは大きければ大きいほど、全体の把握が難しくなったり、メンテナンスしづらくなります。それを防ぐためには一つのツールは一つの課題を解決するというシンプルさを維持することです。

一つのツールに集約されているのは良いことのように感じられますが、一つの業務の中では幾つかの機能しか使わないはずです。ツールはなるべくシンプルに維持されているのがベストです。


最初からバージョン管理したり、リスクを恐れる必要はありませんが、徐々にそういった運用面も整備していくと良いでしょう。バックアップについてはなるべく早い段階から考えていくべきで、ミスをリカバリーできる仕組みは整えておきましょう。

また、自動化による既存システムへ高負荷を与えてしまう可能性や、メール配信自動化による誤作動などは取り返しがつかないミスに発展する可能性がありますので、最初はなるべく避けた方が良いでしょう。

Xojoについて言えば、ProライセンスからXML(テキスト)ベースでのプロジェクト出力が行えます。それによってソースコードバージョン管理システムで管理するのが容易になり、間違った更新があっても差し戻せるようになります。

ネットワーク操作などの不備についてはデバッグ機能によって書いたコードをステップを踏みながら順番にテストできます。そのため、思わぬ繰り返し処理などが発生しても発見しやすくなっています。

ツールの巨大化についてはXojo自身の仕組みで防げる訳ではありませんが、プロジェクト全体の見通しはつきやすいようになっています。ある程度大きなプロジェクトであってもどの部分を修正すれば良いかといったことはすぐに分かるはずです。

シチズンデベロッパーにぴったりなローコードプラットフォームとは?

開発者であればJavaや.NET、PHPRubyPerlPythonC/C++といったプログラミング言語を選択します。これらの言語は汎用的に使えますし、得手不得手はあるものの高度な実装も可能です。

しかしこれらの言語はシチズンデベロッパーにとっては敷居の高いものになります。ゼロから自分で作るというのは難しいものです。何より自分が実現したいのは業務の改善や自動化であって、プログラミング言語の学習ではないのです。

そこで注目されるのがローコードプラットフォームと呼ばれるシステムです。ローコードまたはノンコードプラットフォームなどと言われるジャンルのシステムで、少ないコード量で作りたいものが実現できます。

CMSを使ってスマートフォンアプリを開発

一つの例として、CMSによるスマートフォンアプリ開発サービスがあります。Webサービス上で項目を選択していくだけでiOSアプリやAndroidアプリが作れます。多くはジャンルに特化しており、飲食店向けであったり、カンファレンス向けと言ったカテゴリが存在します。

そのサービス例としてYappli(ヤプリ)があります。クーポンや電子書籍、ポイントカードなど飲食店やアパレル店舗に合わせた機能がコーディングなしで実装ができます。

ノンコードプラットフォームの場合、そもそもコーディングがサポートされていないことが多いです。そのため、テンプレートの範囲内で実現できることならば問題ありませんが、ちょっとカスタマイズしたいと言った要望には叶わないことがあります。

クラウドサービス×ローコーディング

最近では各種クラウドサービスでもローコーディング機能が実装されはじめています。クラウドサービスが殆どの機能を提供しますが、それだけでは物足りない、ほんの少し足りない機能をローコーディングプラットフォームが補います。

SalesforceApp CloudGoogleスプレッドシートのApps Script、G SuiteのApp MakerMicrosoft PowerAppsIBM BluemixのNode-Redなどが挙げられます。kintoneもそうです。これらのツールではビジュアル化されたモジュールを使い、ドラッグ&ドロップで組み合わせてアプリを作ったり、ちょっとした拡張をコーディングによって実現できます。

開発できるソフトウェアには多少の縛りが存在しますが、そのプラットフォーム上で使う分にはさほど問題にはならないでしょう。まさに昔からあるExcelのマクロのような存在です。

開発者でなくとも作れる手軽さ

ローコードプラットフォームは通常の開発者が使うにしては制限が強く、汎用的ではありません。もちろんFileMakerのカスタムアプリのようにクライアントに納品できるレベルの場合もありますが、それでもデータベース(FileMaker)という縛りが存在します。同様にForguncy(フォーガンシー)というソフトウェアもシチズンデベロッパー向けで、Webアプリケーションが簡単に作れますが、UIや機能面において縛りがあります。

ローコードプラットフォームでは利用者の多くがシチズンデベロッパーとなっています。業務担当者が自分たちのニーズに応じてアプリを開発します。そのため本格的、大型なものである必要はなく、ボタン一つ、アクション一つなどごく簡単なもので十分になります。

そのように業務改善、業務フローにおける強いニーズが存在し、それを素早く解決できるのがローコードプラットフォームに求められる要件と言えるでしょう。

習得コストの低さが肝

ローコードプラットフォームで大事になるのが習得コストの低さです。業務担当者などはプログラミング専門職ではありませんので、複雑なコーディング知識を前提とした開発環境を扱うのは無理があります。ビジュアル的であったり、デバッグが容易など分かりやすい作りになっている必要があります。

我々の提供するXojo(ゾージョー)GUI上で画面設計を行い、IDE上でコーディングを行います。エラーも分かりやすく、デバッグする際にもGUI上でデータを見ながら行えます。シチズンデベロッパーの方が多く使っていることからも習得コストは十分に低いと言えます。


ローコードプラットフォーム/ノンコーディングプラットフォームはシチズンデベロッパーにとって大きな武器になります。使いこなせば既存の業務を改善し、より生産性を高められるようになるでしょう。ぜひ自分たちの業務にあったサービス、プロダクトを選択してください。

誰でも正規表現が使えるようになる - CDC #2が開催されました

Xojoユーザの多くはシチズンデベロッパーと言われています。シチズンデベロッパーはプロの開発者ではなく、自分の業務に存在する課題を自動化やツールによって解決する意欲高い業務担当者になります。日本でも多くの方がシチズンデベロッパーですが、1つの会社には1名ないし2名くらいしかおらず、情報を共有する機会はごく僅かしか存在しません。

f:id:moongift:20170314101019j:plain

そこでシチズンデベロッパーコミュニティ(CDC)がはじまっています。シチズンデベロッパーと呼ばれる方々が多く集まることで、そこで情報が共有されてお互いの業務改善が進んでいくのを目的としています。今回はその第2回の参加レポートになります。

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

CDCについて

まず筆者からCDCに関する説明をしました。シチズンデベロッパーは自分の業務を改善したいという意欲を持っており、改善したことによって業務に対して高い満足度を持っていると言われています。また、業務担当者であることも多いですが、管理者にも多くのシチズンデベロッパーが存在すると言われています。

難点はシチズンデベロッパーが各企業に1〜2名いるだけという現状です。将来的にはすべての業務担当者がシチズンデベロッパーになると言われていますが、少なくとも現状はごく僅かです。そのためナレッジが共有されづらく、秘伝のタレになってしまいます。

CDCではそうした方々に集まってもらうことで情報共有を活性化し、企業を超えたナレッジの蓄積ができるのを目的としています。

正規表現の書き方と使いどころ

次に筆者の方から正規表現について発表しました。正規表現とはある文字列を表現するパターンのことで、複数の文字列を一つのパターンで表現できるようになります。パターンの中には記号を含みますが、それほど多くはありません。それさえ覚えてしまえば誰でも使えるようになります。

speakerdeck.com

正規表現がテストできるWebサービスもあり、ビジュアル的に確認しながら組み立てることができます。大量のデータの中からメールアドレスをピックアップしたり、CSV形式に変換したりすることができます。

日本では最も有名なテキストエディタと思われる秀丸では元々正規表現が使えますが、多少癖があります。また、Excelでもフリーウェアを導入することで正規表現が使えるようになります。コピー&ペースト作業で苦しんでいる方にとっては正規表現を覚えてしまえば業務が一気に改善されるはずです。

LT

その後ドゥハウスの末永さんから、VBAを使ってスクレイピングを行うテクニックが紹介されました。幾つかやり方はあるのですが、コンテンツをすべてテキストで取得して正規表現で抜き出すのが早いとのこと。

f:id:moongift:20170314100635j:plain

さらにMozillaの清水さんが大学のテストにユニットテストを導入することで採点をあっという間に終わらせられるようになったというテクニックを紹介してもらいました。プログラムの正しさをあらかじめユニットテストで定義するのが面白いです。

f:id:moongift:20170314100913j:plain

ワークショップ

今回は初の試みとしてワークショップを導入しました。お題は「業務でよく使っている便利ツール」と「最近の業務で困った話」です。それぞれ自分が話したいお題に分かれて30分くらいグループで話し合いました。その結果はA4の紙にまとめられ、最後に発表しました。

f:id:moongift:20170314110731j:plain

話題を絞ることで発言しやすくなり、A4の紙いっぱいに内容が書き込まれています。非常に盛り上がっていました。

f:id:moongift:20170314110736j:plain


CDCでは普段仕事をしている中では出会うことがないシチズンデベロッパー同士が情報交換できる場となっています。ツールやちょっとしたプログラミングによって業務改善を進めている方はぜひ参加してみてください。

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