オープンソースPDSのPersoniumをGUIから操作してみる

Personiumに興味を持っており、Personiumに貢献したいとPersoniumを勉強中のtakaです。  

2年ほど前、[ある異邦人の技術メモ](http://d.hatena.ne.jp/shimonoakio/20150818/p1)を読み、おやこれは凄いぞ、と素人ながら思いました。Personiumのコンセプト、適用技術、実装と凄く興味を惹きました。少しRDBをかじったことがあるのですが、「木構造のディレクトリ構造をもったファイルシステム的なもの」と「リレーショナルデータ的なもの」が共存しているって面白そうだなあ、と思いました。  

それで関心を持つようになりました。少しずつ勉強している段階です。学んだことはQiitaなどでシェアしていければと思っています。    

Takkyさんが、[情報銀行のプラットフォームとして利用できるかもしれないPersonium（PDS） を検証してみる ５ ＜APIでアクセスしてみる＞](https://qiita.com/takky0330/items/270a5c5386fd80d5d3c1)でCurlからAPIを利用してPersoniumを操作されていました。これをGUIベースでやるとどうやるべきか、自分なりに手順化してみました。  

## はじめに  
Personiumのドキュメントを見たところ、PersoniumはUnit,Cell,Boxの3つから成り立っているようです。  
![00_personium.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/d35a5388-a075-fff4-8ef5-72a69ddd8c07.jpeg)  
 Personiumのドキュメントを見たりmokumoku会という勉強会に参加したりして、少し分かったことはPersoniumというのはCellという基本単位で構成されているみたいです。
 まだよくわかっていませんが、管理Cell、アプリCell、ユーザCellという三種類の使い方があると関係者の方からお聞きしました。
 少し詳しいことは、以下のドキュメントに書いてあるみたいです。
 [Personiumアーキテクチャ](https://personium.io/docs/ja/user_guide/001_Personium_Architecture.html)
  PersoniumではGUIでの操作のためにUnit Managerというツールが用意されているようです。[ユニット管理者向けガイド](https://personium.io/docs/ja/unit-administrator/)に「以下のユニットマネージャGUIを使うことで、ほぼすべてのAPIアクセスをユニットユーザとして実施することができます。」とあります。Takkyさんのように自前のサーバを立てることが出来なかったため、
  Takkyさんも紹介されていた、[情報銀行のプラットフォームとして利用できるかもしれないPersonium（PDS） を検証してみる ６ ＜VirtualBoxイメージでサクッと触る＞](https://qiita.com/takky0330/items/788ff75f675c9207ad6e)
の仮想イメージをVirtual Boxにインポートして仮想的にPersoniumを体験できる環境で動作を試してみました。  
>現行バージョンのPersoniumではCell指定でURLをhttps://{Cell名}.{FQDN名}/とするようですが、この環境ではhttps://{FQDN名}/｛Cell名｝/ でCellを指定するみたいです。  

##Unit Managerへのログイン  
1. [仮想イメージを使ってPersoniumを始めよう。](https://personium.io/docs/ja/server-operator/setup_virtual_image.html)の手順に従ってPersonium環境を構築します。Cellはマニュアル通りに、Cell名'Sample'を試しに作ってみました。  
> <font color="red">仮想イメージを利用してPersonium環境構築を試してみて分かったのですが、仮想マシンが立ち上がってPersonium環境を構築する時に、tomcatの起動に失敗してUnit Managerへのログイン前にブラウザ上で502 BadGateWay等のエラーが発生するときがあります。その時は仮想マシンにsshでログインした後に「systemctl status tomcat」コマンドでtomcatのstatusを確認して、tomcatが起動していなかったら
「systemctl restart tomcat」コマンドを実行して、再度「systemctl status tomcat」コマンドを実行してtomcatのstatusがactiveになっていることを確認してください。</font>    
<font color="red">また、それ以外にもログイン画面を表示させるためにブラウザーを立ち上げたとき、502 BadGateWayエラーが発生するときがあります。
その時は仮想マシンを再起動すれば直りました。</font>    

1. 下記のURLにアクセスしてください。下記画面が表示されます。(※この作業の前に仮想マシンは立ち上げておく必要があります。ご注意ください。)    
`https://personium.example.com/app-uc-unit-manager/__/html/login.html`  
![01_login-gamen.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/f097586c-c0ec-fa46-3821-588d64a56225.jpeg)

1.    
下記情報を入力してUnit Managerにログインしてみます。  
    - 説明  
       `Login URL: https://personium.example.com/ユニットユーザ名/`  
       `Username:  ユニットユーザセルのアカウント名`  
       `Password:  ユニットユーザセルのパスワード`     
    - 例  
        `Login URL: https://personium.example.com/unitadmin/`  
        `Username:  unitadmin`  
        `Password:  hoghoge`  

    詳しい説明は[Personiumの動作確認](https://personium.io/docs/ja/server-operator/setup_virtual_image.html)を参照してください。  

1. 以下のように動作確認で作成したCellを含め「sample」、「app-uc-unit-manager」、「unitadmin」の３つのCellが表示されました。  
 ![02_login-kekka.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/9317cf09-8a79-cc5c-b950-b1f279a06963.jpeg)  
> 注意事項：通常はユーザにunitadminセルは見えません。本記事で使用している環境では、unitadminセルを一切操作しないてください。  
> 今後の記事でunitadminセルについて紹介したいと思います。

## Cellの作成  

1.  左下のCreateボタンを押下してみます。  
![03_Cell-hyoji.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/c9cbb1de-5234-de2f-bfb4-17d41ffb3a95.jpeg)  
  
1.  下記ポップアップが表示されるので右下のチェックボタンを押下してみます。  
![04_Create-Cell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/0da137e1-e569-1db2-5fc6-1b14b15ca428.jpeg)  

1.  下記画面が表示されるので、Cell名、Role名を記載し、Profile(DisplyaName,Description,画像取り込み）を登録して右下のチェックボタンを押下してみます。  
![04-01_Creat-Cell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/70ac9b6f-8734-14a7-2b25-7cc3cde657e8.jpeg)  
> Role作成、Profile作成は後で行うこともできるみたいです。  



1.  下記画面のようにCell作成成功のメッセージが表示されました。  
    ![05_Create-Cell-success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/17bd1840-2734-fcd4-e778-be168ea928db.jpeg)

1.  Cellが作られるとmain BoxというBoxが自動的に作られるみたいです。(Personiumのチュートリアルを読み漁って知りました。[メインBoxへの最初のデータ配置](https://doc.cloud.global.fujitsu.com/lib/personiumservice/jp/tutorial/00_tutorial.html#sect6.3))  
先ほどのCell作成画面でCreate Profileの左のチェックボックスをチェック入れたため、main Boxの配下にファイル（profile.json）が作成されるみたいです。  
![06_Main-box.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/3f068a42-5112-3423-71bd-3fcef8d75634.jpeg)  
> 僕の場合profile.jsonファイルの作成は即時ではありませんでしたが、Takkyさんは即時ではないかと言われていました。調べた結果Unit Managerが古いためと分かり、後でUnit Managerを更新しました（参照先：[Unit Manager セットアップ手順](https://github.com/personium/app-uc-unit-manager/blob/master/README_ja.md)）。後日詳しくこの手順についてはご紹介します。  

## Accountの作成  
1. 該当CellのAccountタブを選択すると以下の画面が表示されます。「Create Account」を押下してみます。  
![07_Account-tab.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/65c53559-e3f7-84f2-0e99-1831a7d12d02.jpeg)  

1. 下記のポップアップが表示されるので、Name、Passwordを入力し、Assign Roleのチェックボックスをチェックいれる。Roleが適用されるBoxを指定してCreateボタンを押下してみます。
![08_Create-Account.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/54a4bd27-2c58-fd2e-c811-ecb68d3daa7d.jpeg)  

1. 下記画面のようにAccount作成成功のメッセージが表示されました。  
![09_Create-Account-Success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/82e35ed1-b034-19fc-83e8-6bdfe91463ae.jpeg)  

## Roleの作成  
1. Roleタブを選び、Create Roleを押下します。下記画面では先ほど作成したadminroleが既に定義されているようです。  
![10_Role-tab.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/734984d8-a329-e8d1-9714-1ea9fcd08712.jpeg)  
    
1. 下記のポップアップが表示されるので、Role名を入力し、Roleが適用されるBoxを指定してCreateボタンを押下してみます。     
![11_Create-Role.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/6177b48b-0303-7737-9146-2ac051b47aad.jpeg)  
    
1. Role作成成功メッセージが表示されました。  
![12_Create-Role-Success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/b7e0dc34-15a3-4653-b882-53a83ad9bac7.jpeg)　　

1. 作成したRoleにAccountを割り当てるために、該当するRole名の箇所（下記画面ではfriendrole）をクリックしてみます。  
![13_Role-Select.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/78c69781-a516-9b0c-5b47-d876da54eacd.jpeg)  
    
1. 以下の画面が表示されました。「Select Acount Name」のプルダウンの中から割り当てたいAccountを選択してみます。  
![14_Select-Account-Name.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/3b027dc6-aca6-6846-b7f1-a54e62f505da.jpeg)  
    
1. 下記画面では「me」を選択しています。そしてAssignボタンを押下してみます。  
![15_Account-Assign.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/7a57fd54-ea13-5b1b-e03f-a9e9979afd3b.jpeg)  
    
1. roleへAccountの割り当て成功メッセージが表示されました。  
![16_Account-Assign-Success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/015d2df6-b258-7f99-2dcd-7cc337ad30d7.jpeg)  

    
## ACLの設定  
1. アクセス権を設定したいBox（例： main Box）でACL Settings の鉛筆マークを押下してみます。  
![17_ACL-Settings.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/834de2d7-d5a5-dc2b-240f-c83c6b54ff94.jpeg)  
    
1. Access Controlの中で設定したい権限（どのRoleにどの権限を与えるか）にチェックを入れて保存ボタンを押下してみます。  
![18_ACL-Settings-Save.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/e49de07a-2a7d-5af5-4984-1c850cd5957e.jpeg)  

## Roleの削除  
1. Roleタブを選択し、削除するRoleにチェックを入れゴミ箱アイコンを押下してみます。  
![19_role-delete.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/56faef32-77c1-b002-7743-5d5fe6751a61.jpeg)  
    
1. 削除について確認メッセージが出るので、「Delete」ボタンを押下してみます。  
![20_role-delete-confirm.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/85f3a355-d14b-4b65-c498-d294c11cf68b.jpeg)  

1. 削除成功メッセージが表示されました。  
![21_role-delete-message.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/12c255d3-10fe-2ea8-8bb7-01a5897ce346.jpeg)  

## Acountの削除  
1. Accountタブを選択し、削除するAccountにチェックを入れゴミ箱アイコンを押下しています。  
![22_account-delete.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/a72b5b71-205f-1af7-267a-12c92ac261a9.jpeg)  
    
1. 削除について確認メッセージが出るので、「Delete」ボタンを押下してみます。  
![23_Account-delete-confirm.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/ea1273bc-0fdc-5f3b-0b8c-3e1e9796950f.jpeg)  
    
1. 削除成功メッセージが表示されました。  
![24_Account-delete-message.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/4db2632d-8dd6-ec3c-7721-aaf7766bdb9b.jpeg)  
    
## Cellの削除  
1. 該当セルを選択した後、infoタブを押下するとAdministrationボタンが表示されるのでそれを押下してみます。  
![25_Cell-Delete.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/031f9b9d-0cf4-da8f-fff7-4c4f63eab2e8.jpeg)  

1. 「Delete」ボタンを押下してみます。  
![26_Cell-Delete-02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/e587c7ab-d9e2-1916-adc8-83679215a0ba.jpeg)  

1. 英数字が表示されるのでその英数字を入力し、「Delete」ボタンを押下してみます。  
![27_Cell-Delete-Confirm.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/15f91490-4c9f-8197-8e10-0ae20852d734.jpeg)  

1. 削除成功メッセージが表示されました。  
![28_Cell-Delete-message.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386908/f8dcfdfc-b990-ae91-d787-431e4b00b5ef.jpeg)  
    
## まとめ  
- Takkyさんの[記事](https://qiita.com/takky0330/items/270a5c5386fd80d5d3c1)の中で触れられていたAPI操作は以上でした。  
PersoniumのAPIはREST APIなので、APIを利用してCLIプロンプトから操作を実行することが出来るみたいですが、上記のようにUnit ManagerのGUIを利用して同様の操作を行うことも出来るようです。個人的にはUnit Managerがどんな構造になっているのか興味があります。  
-  Takkyさんも述べられていますが、Personiumがどのようにエコシステムを実現していくのか色々想像を膨らませています。