2016年12月20日火曜日

「Google Play デベロッパー ポリシー違反に関わる警告」のメールが来た

なんか、この前のGoogle側の改定から、カメラとかマイクにアクセスする機能をアプリが搭載している場合、「ストア」と「アプリ内」の両方にプライバシーポリシーのリンクを張らないと駄目らしい。そして、該当する機能を使用する場合は目立つ方法でユーザーに表示しないといけないというルールが追加されてる。

ただ、この「要対応」メールが来たのはJ--言語のランタイム(α版)なため、どう対応したものか非常に困る。ひとまずはアプリ内にプライバシーポリシーのリンクを追加して、カメラとマイクの権限は削除した。組み込み版だけこの機能をサポートする感じになるかも。

2016年10月22日土曜日

App Engineでパースエラー。

googleのクラウド環境(App Engine)で謎のエラーが出ると思ったら、どうもコメントを日本語で入れてたのが原因っぽい。割とよくあるけど、サーバー側のxmlとかに日本語入れると問題が起こるっていう。。

2016年9月14日水曜日

プログラミング言語J--(Jmm)

このところ新しいプログラミング言語を作っていたのですが、大体形になったので今週α版を関係各所に試用してもらうことに。一般のβ公開はまだですが、ちょっとだけ情報を公開したいと思います。

作成した言語の名前はJ--(ジェイマイナスマイナス。マイナス記号がマズイ場合はJmmと略します)です。これはインタプリタ型のスクリプト言語(静的型付け)です。対応OSは今のところAndroidのみ(アプリとしてランタイム、または組み込み版を提供)ですが、そのうちLinux版とかも出すかも。

オブジェクト指向では無く、関数などの作り方が普通のプログラミング言語とかなり異なります。人工知能から利用しやすいように作っているため、既存の言語とは色々異なる部分があって最初戸惑うかもしれません。

基本型のBaseType、変数型のVarType、コンテナのStructureTypeという3つの大きなくくりがあり、普通の変数はVarTypeです。

BaseTypeは大きく分けるとActor、Order、Fnの三種類です。

例えるならActorがバイト君、Orderが命令書、Fnは料理・・・?。

和風に例える方が分かりやすいかも。
Actorが式神。Orderが命令、Fnは呪符(必ず一定の効果を出し、副作用が無い)。
Actorが忍者。Orderが命令の巻物、Fnは忍術。とかの方が海外の方にはいいか。

この言語は基本的にマルチスレッド(最小で3スレッド)で動きます。画面操作と通常の演算を最初から別スレッド(実装によるが、想定はCPUの別々のコア)で動かしているため、アプリの利用者側からするとサクサクです。このため、まだ言語自体の処理速度は遅いのですが、実用上は気にならないと思います。プログラマーはこの3スレッドについて意識することはありません。ランタイムが処理を勝手に分離してくれます。

また、Actorは固有の領域を持つスレッドであるため、いくつ並列で動かしても基本的にメモリを壊しません。IOもランタイムレベルで管理されているため、入力と出力が同時に起こらないようになっていたり、入出力が循環して無限コピーになっていたら例外を出すなど、他の言語でありがちなミスのいくつかはそもそも起きないようになっています。このため、かなり安全に並列処理できます。今はマルチコア時代なので、上手く使えば爆速です。



・・・とりあえず今出せる情報はこんなものかな。では恒例のやつを。


(Sys@s).log("J--", "Hello, world!")



これで、AndroidのLogcatにJ--タグで「Hello, world!」が表示されます。@マークは他の言語でいうところのnewですね。J--は変数型@変数名で変数を新しく定義した後、その部分に変数が残るので、そのまま.log()などのコマンドを呼べます。J--ではvoid(戻り値が無い)なコマンドが「存在しない」ため、基本的にどのコマンドも連鎖できます。画面の方にトースト出力も同時にしたい場合は以下のように

(Sys@s).log("J--", "Hello, world!").toast("Hello, world!", true)

でトーストも同時に出せます。logやtoastの戻り値はs自身となっています。早い話が、レイアウトもこのように作れるので、かなり素早くプログラミングできます。IT系スタートアップには便利ではないでしょうか。

ある程度バグが無くなってきたら、ストアの方でランタイムアプリのβ版を出したいと思いますー。



※2016_9_27にちょっと修正しました。J--の動作は最小2スレッドでは無く3スレッドに変更されました。現在、ユーザーのタップなどに対するコールバックも専用スレッドで処理されるようになっています。これにより、最新のα版ではコールバックで重い処理を行ってもANRが発生しなくなりました(一時停止時、復帰時、及びアプリ終了時の逐次呼び出しが必須のコールバックを除く)。

※2017_2_7の修正で、Fx型をFn型に改名しました。

2016年7月24日日曜日

GooglePlayServiceを最新版(ver31)にするとEclipseで使えない。

タイトルのまんま。

GooglePlayServiceをアップデートしてver31にしたらEclipseで使えない状態だった。これは、GooglePlayServiceをプロジェクトとしてインポート出来なくなるため。

以前のバージョンにロールバックして解決したけど、段々Eclipse勢の肩身が狭くなってきてる。。

確かにバグるし重いし、だいぶアレなソフトではあるんだけど、ショートカットの使いやすさとか、慣れとか、メモリアナライザとか、Android開発だとIPAが出してるセキュリティチェック用のツールとかもあって便利なんですよね・・・。

他のIEDに変えたらしばらくはコーディング速度がかなり落ちるだろうし、出来れば変えたくないな。。。

2016年1月30日土曜日

マイデバイスを公開

Androidアプリ、「マイデバイス」を公開しました。


インストールすることで、ノートパソコン並のファイル管理機能を
スマホ・タブレットで使えるようになります。

使い方は非常にシンプルで

PCのダブルクリック = タップ
PCの右クリック = ロングタップ

です。

デスクトップ、ごみ箱、お気に入りを搭載し、普通のパソコンのような使用感を目指しました。
デザインはタッチスクリーン(特にスマホでの片手操作)に最適化してますが。。

これと、グーグルの出しているドキュメントやスプレッドシートなどを入れておけばオフィス系
ファイルもノートパソコンのようにオフラインで編集可能(2016年1月30日時点)です。
特に、デスクトップで作業すると連携がスムーズです。

また、このアプリはパソコンのものと近い機能を持つメモ帳が付属しています。
アプリ内のファイル作成ボタンですぐ作れ、テキストファイル系であればたいてい編集できます。
HTMLやXMLなんかも編集することが可能ですし、
もちろん、スクリプト言語でも問題ありません。

簡易ですがZip解凍・圧縮機能もありますので、編集した書類なんかをまとめてメール送信したり、クラウドストレージへ送ることが可能です。
もちろん、複数選択したファイルをまとめてメール送信することもできます。
一つ一つファイル添付する必要はありません。

とまあこのように、マイデバイスは
パソコンの基本的なファイル管理機能をまとめて突っ込んだアプリとなっています。
これからの時代はスマホがパソコンの本体になり、Miracastなんかで
大画面操作するようになると思われます。

ツール系アプリは、日本はアメリカに思いっきり負けてますから
なんとか頑張りたいところです。。