まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:cloud

IBM Cloud からはオープンソースのブロックチェーン基盤である Hyperledger Fabric をベースとしたマネージドなブロックチェーン環境が提供されています。この 3/21 からは Starter Membership Plan という、名前の通りに小規模向けの比較的安価なプランも提供されるようになりました。2018/03/25 時点ではベータ版で、通常プランと比較していくつかの制約はありますが、無料で利用できます。早速使ってみました。今回のブログエントリではサービスを選択して利用可能にする所までの手順を紹介します。あくまでベータ版であり、今後の仕様変更等により以下の内容は正しい情報ではなくなる可能性もあります。以下の内容は 2018/03/25 時点での情報であることをご了承ください。


また、以下で紹介する IBM Cloud から提供されているブロックチェーンサービスは、IBM Cloud の無料アカウント版であるライトプランからは利用できません(2018/03/25 時点)。以下で紹介する Starter Membership Plan のベータ版は無料ですが、ライトプランのアカウントからはサービスを選択することはできません。実際に試す場合はクレジットカードを登録するなどしてスタンダードプラン等に移行してからご利用ください。


IBM Cloud にログインしてからカタログを表示し、ブロックチェーンカテゴリーを選択すると、対象サービスが "Blockchain" だけに絞り込まれます。これを選択します:
2018032401


次の画面でリージョンやプランを選択します。今回紹介する Starter Membership Plan は 2018/03/25 時点では米国南部リージョンからのみ提供されています。そのためロケーションを選択する箇所で「米国南部」を選ぶようにしてください:
2018032402


画面を下にスクロールすると利用プランの選択画面になります。上記で米国南部リージョンを選択しているとここが選択肢になっていて、Starter Membership Plan か Enterprise Membership Plan が選べるようになっているはずです(米国南部以外のリージョンだと有料の Enterprise Membership Plan のみ)。ここで Starter Membership Plan を選択して「作成」ボタンをクリックします:
2018032403


なお上図にも書かれているように Starter Membership Plan の場合、以下のような制約事項があります。シングルピア環境なので多数決をとるようなスマートコントラクトを実装することはできませんが、アプリケーションとしての実装はほぼ変わらないものを動かすことが可能になります:
・組織は2つまで
・各組織ごとに1ピアまで


サービスが作成されるとダッシュボード内のサービス一覧内にブロックチェーンサービスが表示されるようになります:
2018032404


作成したブロックチェーンサービスを選択するとブロックチェーンサービスの概要が表示されます(この辺りはプランによる違いはないと思われます)。ここから実際にブロックチェーンを操作したり管理するためのダッシュボードを開いてみます。「管理」タブの「起動」ボタンをクリックします:
2018032405


すると別ウィンドウでブロックチェーン環境のダッシュボードが表示されます。下画面ではトランザクションの順番を決定するオーダラーや、CA(認証局)、そしてピアとなるサーバー環境が動いている様子が確認できます:
2018032406


これまで自分で Hyperledger Fabric 環境を構築しようとすると、サーバー環境を用意した上でこれらの各種サーバーを自分で作って運用する必要がありました。そこまでの構築作業とサーバーとしての運用部分を IBM Cloud に任せて、実際のアプリケーション開発・実行やユーザー登録といった実務に集中できる環境として提供されていることが分かります。ブロックチェーンに興味のある方は是非今のうちに色々使ってみてはいかがでしょうか?

なお、今回は IBM Cloud 上にサービスを作る作業までを紹介しました。次回以降でこのサービスにビジネスネットワークアプリケーションをデプロイして動かせるようになるまでの手順を紹介する予定です。



これらのエントリの続きです:
アリババクラウドを使う(使おうとしてみた)
アリババクラウドのインスタンスを作ってみた


↑前回までの作業でアリババクラウドの青島データセンター内に Ubuntu サーバーを立てることができました。このサーバーインスタンスを使って色々試したかったことをやってみたいと思います。

まずはお約束として、拙作マンホールマップを使ってみたいと思います。残念ながら GUI を用意していないので、curl コマンドを使ってマンホールマップ API を呼んでみます。まずは普通に「中国」を 10 件検索してみます:
$ curl 'http://manholemap.juge.me/searchkeyword?keyword=中国&limit=10'

2018020704


動きました!「中国」というキーワードで検索ヒットしたマンホール情報の一覧から最初の10件が XML で取得できました。

では同様にして中国国内から「天安門」を検索してみます(他意はありません):
$ curl 'http://manholemap.juge.me/searchkeyword?keyword=天安門&limit=10'

2018020705



ゼロ件! えっ!?もしかしてこれが噂の The Great Firewall ・・・ かと思いましたが、実際にマンホールマップには「天安門」で登録されている情報は一件もありませんでした(笑)。繰り返しますが他意はありませんよ、ええ:
2018020708


(参考)他意はありませんが、参考リンク
中国を含む各国版のGoogleで「天安門事件」を画像検索するとどうなるのか?



次に挑戦したのは「中国国内のサーバーに Hyperledger Fabric を導入してブロックチェーン環境を作る」というものです。こちらの記事を参考に Hyperledger Fabric のインストールを試みました。

同記事内では docker を導入し、docker-compose を導入し、その後に Node.js & npm をインストールしてから composer-cli を導入します。docker & docker-compose までは順調に入りました。その後に Node.js を導入しようと、n package を入れて、Node.js の新しいバージョンを導入しようとしたら・・・
2018020701


・・・やけに時間がかかる・・・
2018020702


・・・まだ終わらん・・・
2018020703


と、結果的には導入できたのですが、このプロセスにこれまでに経験なかったほど時間がかかりました。何か環境が違っているのだろうか・・・


そして改めてこの記事の手順に沿って、npm を使って composer-cli をインストール・・・
2018020706


・・・失敗してしまいました:
2018020707


エラーが記録されているのは暗号化ライブラリである pkcs11js パッケージを導入するタイミングでした。ただここに問題があるのが、別の所の問題が引き金になっているのかは分かっていません。pkcs11js 単体でのインストールには問題なかったのですが、この一連の流れの中では何度試しても 100% ここで引っかかってしまう、という現象に見舞われてしまいました。過去にこんな所でひっかかったことがなかった所で引っかかってしまいました。

エラーメッセージを調べているのですが、未だに原因がよくわかっていません。何がいけないんだろうか?もしかしてさっき変な検索したのが良くなかった??(苦笑)
2018020709


とりあえず、サーバー作成までは意外(?)とあっけなかったのですが、その先は一筋縄ではいかない環境であることが分かりました。うーむ、想定よりも早めに問題に遭遇・・・


IBM Cloud(Bluemix) のアカウントを所有していると、マネージドサービスとして利用できる GitLab が使えるようになります。サーバーのインストールなどは不要で、プライベートリポジトリを作成することも可能です:
2018011701


使い勝手は GitLab そのものだと思ってください。Issues 管理の機能も使えますし、IBM Cloud の Continous Delivery サービスと連携した Delivery Pipeline による DevOps サービスの一部としても利用できるようになっています。アカウントをお持ちの方は、単にプライベートリポジトリが使える Git として考えるだけでも便利だと思うので、是非活用してください。


ところで、この IBM Cloud の Git を使って Java のアプリケーションコードを管理しようと、作成したリポジトリから Eclipse の Git 機能を使って clone を試みた際に、稀に以下のようなエラーメッセージに遭遇し、クローンに失敗することがあります:
  :
  :
!MESSAGE https://git.ng.bluemix.net/dotnsf/javatest.git: cannot open git-upload-pack
!STACK 0
org.eclipse.jgit.api.errors.TransportException: https://git.ng.bluemix.net/dotnsf/javatest.git: cannot open git-upload-pack
  at org.eclipse.jgit.api.LsRemoteCommand.call(LsRemoteCommand.java:196)
  at org.eclipse.egit.core.op.ListRemoteOperation.run(ListRemoteOperation.java:99)
  at org.eclipse.egit.ui.internal.clone.SourceBranchPage$8.run(SourceBranchPage.java:324)
  at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: org.eclipse.jgit.errors.TransportException: https://git.ng.bluemix.net/dotnsf/javatest.git: cannot open git-upload-pack
  at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:499)
  at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:308)
  at org.eclipse.jgit.api.LsRemoteCommand.call(LsRemoteCommand.java:175)
  :
  :

「git-upload-pack がオープンできない」という耳慣れないエラーメッセージで、実はこのメッセージそのものからは原因の追求が難しいものでした。同じようなエラーに遭遇する人が現れた場合に備えて、自分の経験と回避策を紹介します。

エラーメッセージそのものからはわかりにくにのですが、実は直接の原因は暗号化方式の不一致による通信エラーでした。

まず上記で紹介した IBM Cloud の Git 機能を https 接続で使う場合の暗号化方式には TLS v1.2 を使う必要があります:
https://console.bluemix.net/docs/services/ContinuousDelivery/git_working.html#git_local


さて、Eclipse が使う Java のバージョンが 1.8 以上であれば、デフォルト設定のままで TLS v1.2 が使われます。したがってこの場合は何もしなくてもそのまま IBM Cloud の Git を利用することができます。

一方、Eclipse の Java バージョンが 1.7 以下だった場合、デフォルト設定で採用される通信方式は TLS v1.1 以下です。つまり条件を満たしていないことになります。そしてこの条件で Git に接続しようとすると上記のようなエラーメッセージが表示されてしまうのでした。


では、このエラーメッセージが出た場合の解決策はどうすればいいのでしょうか? 1つの方法としてJava のバージョンを 1.8 以上にするという簡単な方法があります。Java 1.8 以上であれば上記のように(デフォルトで) TLS v1.2 が使われるので、この条件を満たすことができるようになります。

ただ何らかの事情で Java 1.8 を導入するわけにはいかない場合もあると思っています。そのような場合は以下の1行を eclipse.ini に追加した上で Eclipse を起動する、という方法もあります:
  :
  :
-Dhttps.protocols=TLSv1.2

この記述により、Java が 1.7 以下であっても強制的に https 接続時の暗号化方式を TLS v1.2 に指定することができ、やはり上記のエラーを回避することができるようになります。


IBM Cloud 以外の Git でも、同様のエラーメッセージが出た場合にはこの対策が有効だと思っています。頭の片隅に入れながら、無料で便利な IBM Cloud の Git を是非使ってみてください。


「中国最大のパブリッククラウド」をうたうアリババクラウドを使って使おうとしてみました。以下、その手順を紹介します。


画面も全般的にほぼ日本語対応できています。昔の某○luemix みたいな薄暗い感じのテーマがカッコいいです。そしてちょうど今「無料トライアル実施中」らしいです:
2017121901
https://jp.alibabacloud.com/



無料トライアルの説明はこちら。30000 円ぶんのクーポンが発行されるらしい:
2017121902
https://jp.alibabacloud.com/campaign/coupon-freetrial



まずはアカウントを登録します。画面右上の「アカウント登録」ボタンからメールアドレスと携帯電話番号を登録します(どちらもこの後の認証で使います):
2017121903


さっそくメールアドレスと携帯電話番号の認証です。まずはメールアドレス、「通知」ボタンを押すと、そのアドレスにメールが届き、そこに書かれているコードを入力して先に進みます。次に携帯電話でも同様の認証を(通話か SMS で)行います:
2017121904


画面右上の文字が「ログアウト」になったということはログインしているわけで、とりあえずアカウントは作成できたっぽいです。この後はプロファイルを更新して、支払いカードを登録して、、、という流れね:
2017121905


まだ何も登録していない状態ですが、ログインはできているっぽいのでコンソール画面に入れそうです。この状態でどこまでできるか、一旦試してみましょう。というわけで「コンソール」へ:
2017121906


いきなりシュールなアイコンのコンソールが・・・。名前も登録してないから "Hi, (ここが空)" になっちゃってるのね:
2017121907


画面下部にサービス一覧があります。アイコンがなんとなく ○WS っぽい。。お目当ての仮想サーバーはこれ(Elastic Compute Service(ECS))かな? というわけで ECS を選択:
2017121901


予想が合ってたっぽい。サーバーリソースの一覧がデータセンター単位に一覧表示されます:
2017121902


新規作成は「インスタンス」メニューから。データセンターをどこにするか迷いますが、せっかくの(?)アリババクラウドで日本を選んじゃ意味ないので、ここは Qingdao(青島)を選んだ状態で「インスタンスの作成」してみます。Great Firewall の内側にインスタンスを作る日が来るとは・・・:
2017121903


・・・と思ってたら、見たことある画面に飛ばされました。うーん、クレカを登録しないとここまでか:
2017121904


仕方ないので素直にプロフィールとクレカを登録します。まずはプロフィールを account メニューの「基本情報」から入力します。「業種」や「事業」が必須項目なのね・・:
2017121901


そしてクレカ情報は billing management メニューの「支払い方法の管理」を選択して、「支払い方法の追加」ボタンをクリック:
2017121902


で、クレジットカードを登録、と。なんかいい意味で普通に使えそうだなあ、と思っていたら・・・・:
2017121903


・・・ん!?
2017121904


「クレジットカードの認証を行うため、登録されたクレジットカードに対し100円前後の課金をさせていただきます。この金額は24時間以内にお客様のカードに自動的に払い戻しされます」

出た! 怪しさ満点!! これだよ、これを待っていたのだよ!! これでこそチャイナ!!!

認証のために 100 円前後の課金をする。これって中国的には普通のことなんですかねー。。まあ、ここではそういうことにしましょう。

クレカ番号を登録すると再度こんなメッセージが。返金処理に触れながらも、返金目的ではなく、有効化するためにチケットを起票しろと。そして本人確認書類を添付しろと。なんかこの辺から不安になりつつも、なんかあったらこのブログでぶちまけてやる、と謎の自信を胸に送信してやりますよ:
2017121905


で、言われた通りにチケットを起票。要件の placeholder に怖いことが書かれているような気もするけど、もう後には引けない(苦笑):
2017121906


はい、チケットを起票しました。ステータスは「連絡待ち」:
2017121907


・・・そして今もステータスは変わってません(笑)。アリババクラウド様、確認と連絡をお待ちしております。


(↓2017/12/20 追記)
翌日メールで「本人確認書の名前とアカウント名が一致しない」との連絡がありました:
2017122101


アカウント名って上記の空文字列のこと?そりゃ登録してないんだから一致しないだろう。。 というわけで指示に従って登録しました。まあ人間の目によるチェック機能が働いていることがわかりました:
2017122104


するとすぐに対応していただき、アカウントが有効になりました:
2017122102


画面上でも名前が表示されるようになりました:
2017122103


クーポンも有効になっていました。これでしばらくは使えそうです:
2017122106


ところで、プロフィール画面のデフォルト自分アイコンと問い合わせ画面のデフォルト自分アイコンが全然別人なのが微妙に気になっています。こういうものなのかな?
2017122105


(↑2017/12/20 追記)


というわけで、とりあえずはここまで。クレカが有効になったら無料クーポンとやらをゲットして、そして待望の「Great Firewall 内サーバー構築」に挑戦してみます。


超有名なコンテンツ管理システムであるワードプレスは数多くのプラグインも提供されており、プラグインを組み合わせるだけで色々な目的のサイトが構築できてしまいます。

ふとした事情でクラウドファンディング的なサイトを試験的に用意する必要が生じたのですが、「ワードプレスだけでサクッとクラウドファンディングサイトが作れたりしないだろうか?」と思い立って調べてみました。結論としては「色々あるけど、とりあえずクラウドファンディングが作れるプラグインは見つけた」ので、調べて構築した内容を以下に紹介します。


まず、クラウドファンディング用のワードプレスプラグインは有料/無料あわせて数多く存在しています。その中で以下に紹介するのは IgnitionDeck という団体(?)から提供されている IDCF(IgnitionDeck CrowdFunding) (及び IDCF 対応のテーマ)です:
2017040812



IDCF をワードプレスに導入するにはワードプレス管理画面のプラグイン導入から "IgnitionDeck" を検索し、"IgnitionDeck Crowdfunding & Commerce" を見つけて「今すぐインストール」します:
2017040801


他のプラグイン同様に、インストール後「有効化」をクリックすると、このプラグインが有効になります:
2017040802


IDCF プラグインを有効にしても、この段階では IgnitionDeck 未登録のためまだ使えません。管理画面に "IgnitionDeck" というメニューが追加されているので、メニューから IDCF を選び、 "Activate Now" ボタンをクリックして登録画面に遷移します:
2017040803


登録といっても名前、メールアドレス、そしてパスワードを入力するだけです。簡単:
2017040804


登録が完了すると次に行うべき手順が紹介された画面が表示されます。↓下図の3ステップです:
2017040805


1ステップ目、(ここまでの作業でいつの間にか導入されていた)"500 Framework" テーマを有効にします:
2017040806


2ステップ目、IDCF の設定を行います(そのまま Save でも可):
2017040807


そして3ステップ目、というかクラウドファンディングサイトとしてのスタート地点です。クラウドファンディングのプロジェクトが開始できるようになったので、何か1つ追加してみます:
2017040808


プロジェクトを保存すると、ワードプレスのトップ画面のプロジェクト一覧から確認できるようになります:
2017040802


プロジェクトを選択して開くと、クラウドファンディングの説明や目標額が確認でき、支援表明もできるようになっていることが確認できます:
2017040803


IDCF には有料のオプションもあり、サポートや追加で使えるツールキットが用意されているようです。が、まだあまり調べていません。こちらは気が向いたらということで。。


軽く使ってみた限りでの感想ですが、管理画面が英語なのはともかくとして、目標額などを入力すると自動的に米ドル扱いになってしまうことに気付きました(要は金額のデータとして "100" と入力すると、自動的に「100 米ドル」扱いになってしまう)。これをカスタマイズするには IDC メニューの CURRENCY SETTINGS から "JPY" を選択して更新しておくことで変更できました:
2017040801


もう一点、ファンディングの支援レベル(例えばレベル1はステッカーのみ、レベル2は商品そのもの1つ、レベル3は商品を10個まとめて、・・・みたいなもの)を複数追加しようとしたのですが、うまくできませんでした。ググってみると、同じ現象で悩んでるっぽい人向けの FAQ っぽいページを見つけたのですが「会員専用ページです」みたいなメッセージから先に進めず、未だに原因やワークアラウンドが分かっていません。会員としてログインしてるはずなんだけどな・・・ もしかすると、ここが無料版の制限なのかもしれません:
2017040801


もう一点。実際にユーザーがこのプロジェクトを支援しようと "Support Now" して、"Next Step" に進もうとすると、、:
2017040901


こんな画面に推移します:
2017040902


ここで何らかの入力フォーム(project_purchase_form ?)が出て来る想定なんだろうけど、ここをどうすると表示できるようになるのか? カスタマイズするにはどうするのか? といった情報を探していたのですが、どうやらここから先は無料版では提供されていない機能のようでした:
Ignitiondeck does not redirect me to Purchase Page


というわけで、まだ IDCF のフル機能を試せたわけではないのですが、ここまでは超簡単に作れてしまったことも事実。便利なプラグインをまた1つ発見してしまった。。


このページのトップヘ