
Wait a moment...
Symbol残高チェッカー「Arcana」をGooglePlayにリリース









こんばんは。Symbolの残高チェッカーをAndroidアプリとして作りました。先ほどGooglePlayのオープンテスト版として公開しましたのでお知らせします。2週間程度で作ったプロトタイプなので、細かい部分は無視してあまり凝ったことはしてません。機能面含め、これからの成長にご期待頂ければ幸いです。
[利用にあたって]
・使用は自己責任で。誰でも使っていただいてOK
・オープンテスト版なので、2021年12月31日までにテストのフィードバックをお願いします。
→ Googleアンケート
・バグやアイデアなどはNEMLOG・Twitter・Trello経由でいつでもwelcomeです
・テスト状況によっては途中でアプリ利用を制限する場合があります。
・テスト終了後、アプリを公開しないという選択肢もありますので、ご承知おきください。
アプリのダウンロードはこちらから
[アプリの機能]
「ウォレットの残高とTx履歴が見れる。現状これだけです。」
一週間前 下書きにこう書いてたんですが、Googleの登録審査が思いのほか長く、登録を待っている間に調子に乗って色々と詰め込んでみました。今のところ一応以下の機能があります。
・残高表示
・Tx履歴表示(まだ一部対応してないけど)
・モザイク発行(Revokableモザイクも対応)
・アドレス帳(並べ替えとかはまだできない)
・送金(マルチシグは未対応)
・モザイクの疑似ネームスペース
・モザイクアイコンの登録
・モザイク発行情報の閲覧
・ハーベスト履歴確認
・開発への寄付機能
当初の「残高表示だけ」から比較すると色々できるようになりましたが、特に珍しいもんでもないので、あまり期待はしないでください。今後リクエストベースで機能強化を計画していて、エンタメ方向に振っていこうと思っています。本稿 下の方に書いてますが、開発アイデアリストみたいなのをTrelloにまとめています。皆さんからのご要望お待ちしています。(一応オープンテストという位置づけなのでフィードバックちょうだいネ。)
[作った経緯・理由]
(1).ReactNativeっていうプログラムの勉強を始めたので なんか作りたかった。
(2).公式ウォレットの起動が遅かったから。
(3).最初のページで保有モザイク残高全部見たかったから。
(4).複数のウォレットをサクッと切り替えて残高見たかったから。
(5).モザイク情報を確認したかったから。
(6).公式ウォレットのTxは日付だけで時間が表示されないから。
など。
一番の理由は(1)です。新しいプログラミング言語勉強したら とりあえずアウトプットしてみたくなるので。 (2)はコード見てないけど多分最初の画面で色々一気に読み込んでるのかなと。このアプリは非同期でちょろちょろ読み込んで表示できるものから順番に表示していくタイプにしました。あくまで自分用に作ったので総合的に不便さはあると思いますが、使っていただければ幸いです。Symbolコミュニティの中でウォレットを作るらしいので、邪魔にならないように送金機能追加は遠慮してましたが、Googleの審査が遅いせいで、気づいたら送金もできるようになっていました。スミマセン。
[アプリのお名前・デザイン]
NEMLOG、nemgraph、nem storeと色々作りましたが、まさかSymbolなんて名称に変わるなどと誰が想像したでしょうか。
「SYMLOGにすんのかい?」とか もう面倒くさいので、「Arcana(アルカナ) powered by symbol」って勝手に決めました。「残高どれぐらいアルカナ?」ってダジャレ的な。しかし このアルカナ、「神秘」とか「秘密」って意味があるそうでタロットカードの用語としても使われています。なんかいい感じなんじゃないでしょうか。知らんけど。ロゴはちょっとかわいい感じにしてみようかなと思って、シンボルロゴを斜めにして、丸こくしてみました。僕のデザインスキルではこれが精いっぱいなので我慢してください。
[アプリ簡易操作マニュアル]
まず全編英語のアプリでスミマセン。プログラム書いてると全角⇔半角の切り替えが面倒で、英語で作った方が早いんですよね。。。面倒なので日本語版作る予定は特にありません。
(1).ペーパーウォレットを準備
まずはアプリに登録するウォレットを準備します。ウォレット発行機能はあえて付けていないので、公式ウォレットから出てくる以下のようなペーパーウォレットを準備してください。公式デスクトップウォレットで「アカウント」→「プロファイルをバックアップ」で出力できると思います。一応NEMLOGにも発行機能つけました→コチラ
公式ウォレットのQR構造は実に簡単なもので、構造さえわかってしまえば、ネット上のQR作成ツールとかで作成はできるのですが、勝手にQRが保存される(=秘密鍵平文がどっかに送られてる)サイトもあるので、オススメはしません。NEMLOGのQR作成は当然通信しませんが、公式ウォレット発行のヤツが手堅いです。
(2).アプリにウォレットを登録する
初期ページで「Add wallet」ボタンタップ 若しくは右上Walletボタンをタップ。
Wallet画面でAdd walletをタップ→ウォレットの名前を入力してから、プライベートキーのQRをピッと読み込むと登録完了。秘密鍵を知ってるアドレスだけをアプリに登録できる仕組みです。
画面下の「Move to NEMLOG」をクリックすると、NEMLOGのArcana用QRコード発行ページに移動します。
(3).ウォレット画面の各ボタン
(a).上記(2)のウォレット登録。
(b).登録したウォレットを全部削除
(c).表示ウォレット切り替え(名前に★がつく)
(d).ウォレットの名前変更
(e).ウォレット削除
またウォレット長押しでアプリ起動時に読み込みに行くデフォルトウォレットを設定できます。
(4).残高表示画面
ホーム画面に戻ってみましょう。残高が表示されます。
(f).送金
(g).アドレス帳
(h).ウォレット管理
(i).ハーベスト履歴
(j).マルチシグアドレスおよびその管理アドレス情報
(k).モザイク詳細情報が表示されます。自分で発行したモザイクに関しては、
「Register」をタップすると名前とアイコン画像が登録できます。
自分で発行したモザイクにアイコン・名前を登録するとこんな感じ。
(5).Tx履歴
ホーム画面タブで「History」を選択すると、Tx履歴を読み込みます。更新は同じく下方向スワイプで。現在「承認」・「未承認」のみ表示できますが、「Partial」も追加予定です。メッセージ付きのTxはタップすると内容が表示されます。& 送金履歴から相手に送金、アドレス帳登録もできます。
(6).送金
「実は送金もできまっせ」という将来のアピールも含めて、開発者寄付ページを作ってみました。
↑と一週間前は書いてましたが、「もうめんどくせぇ!入れちゃえ」ってことで、送金機能追加してます。PINコード認証や指紋認証が設定されている場合は送金前に認証をパスする必要があります。送金の仕方はウォレットとほぼ同じなので大丈夫ですよね?(丸投げ)
手数料は最遅の設定になってます。ゆくゆくは色々選べるようにしますね。
(7).アドレス帳
アドレス登録しておくと、送金履歴なんかにその名前が反映されるようになります。より直感的にTx履歴が確認できますね。グループ設定もできるようにしました。必要かはわからんが。アドレス帳にアクセスして、右下のFABから登録作業してください。簡単なので説明割愛
(8).モザイク作成
ホーム画面左上のメニューから「Mosaic」にアクセスしてください。噂のRevokable(没収機能)にも対応しています。没収するプログラムも書いてあるので、また折を見て導入しますね。
(9).接続ノード変更
左上メニューの「Node」にアクセスします。接続先ってどうすればいいかよくわからん人も多いと思うので、ランダムに20個ほど候補を表示するようにしています。右端の接続ボタンで接続ノードに設定されます。アプリの読み込みが変な場合はノードを変更の上、アプリを起ち上げ直してみてください。
(おまけ)
開発者寄付をページ作りました。Quest登録面倒そうなので、もう自分でやることにしました。間違えて送金した場合やお試しでやってみた場合は24時間以内なら返金しますので、NEMLOGやTwitterのDMでお気軽にどうぞ。(無期限返金受付でもいいけど履歴探すの面倒なので。)
今はネタ的なUIになってますが、また作り直します。
[今後の予定]
trelloで僕がやってることを公開しています。思いついたものをメモ書きしてる感じなので、全部消化するわけではありません。リクエストやバグ報告等々,誰でも書き込んでいただけるようにしてます。どんなアプリに育つかは皆さんの意見+僕のやる気次第かな思いますので、何かフィードバックいただけると嬉しいです。アプリのDonationページにもリンク貼ってます。
https://trello.com/invite/b/Q753wevq/31d1e43aaff3982b4b4621bd1f9c21e1/symbol-arcana
まとまった開発情報はNEMLOGに書くようにしますが、筆不精なので細かい進捗等々はTwitterでつぶやきます。フォローしていただければ幸いです。https://twitter.com/shu801115
[その他]
(秘密鍵について)
当然ですが、このアプリの利用において秘密鍵がネットワーク上の通信路に乗ることはありません。このアプリでは秘密鍵を細かくバラして暗号化の上、端末のセキュア領域に保存しています。加えてウォレットごとに異なるバラし方になっていて、そのアルゴリズムは暗号化してネットワークに保存され、アルゴリズムを生成した端末でしかアクセスできない設定となっています。仮によその悪いアプリが端末の保存データだけを引っ張ってきても秘密鍵は復号できません。この隠蔽方法はNEMLOGのアルゴリズムと似ている部分もありますが、より複雑になっています。どんな仕組みを作っても100%安心ということはありませんが、不安なく使ってもらえるように気を付けていきます。しかし!アプリの利用は自己責任でお願いします!
(ReactNativeについて)
Symbolの公式モバイルウォレットがReactNativeというプログラム言語で作られていたので勉強してみました。このReactNativeはexpoという追加ツールを使うとかなり楽に開発を進めることができるのですが、ReactNative+expo環境下でのSymbol-SDK適用が大変で最初少し苦労しました。開発の中で修正しながら色々試した結果、僕が勝手にやってる改造でSDKうまく動いてるようですので、もう少し検証した後、この手法を公開したいと思います。(来年のAdvent calenderネタに?)
ReactNativeそのものに関してはjavascriptがまんま使えて、web開発やってる人には手軽・簡単でよさそうです。しかし、同じようなモバイル開発言語のFlutterと比較してComponentがあんま充実してない印象。ドロップダウンリストさえまともなのがなくて困りました。(一部自作してる。モザイクのDivisibility設定のトコは選択しまくると落ちる。次回VerUpで自作版に変更します。)
(Androidアプリについて)
皆さん意外と知らないのですが、Androidアプリの○○○.apkってファイルは実はただのzipファイルで、解凍してもにゃもにゃすると簡単にプログラムの中が覗けてしまいます。なので他人のプログラムにちょろっと悪い改造を施して(例えば使用者の秘密鍵を盗む)、あたかも本物のように野良で流すことも割と簡単に出来てしまいます。野良アプリは基本危険だという認識をもってセキュアな情報を扱うアプリは必ずGooglePlayからダウンロードしましょう。
(iOSへの展開について)
今のところiOS対応は予定していませんが、使う方法はあります。「Androidを買う」これだけです。
アプリ自体はReactNativeで作っているので、ちょっとの手間でiPhoneへ展開できると思いますが、僕が新し目のiPhone実機を持っていないのでデバッグが難しいことと、AppStoreは登録年会費が発生するため、今作る必要性は感じていません。そもそも自分用やし。万が一Androidの利用者が増えて、ユーザー間でのインタラクティブな機能が何か実装された場合、iOS版も検討するかもしれません。何かの拍子にiPhone入手できることを祈ってますw