villagerHの日記

勉強したことや苦労した事などを書き綴ります

嫌われる勇気

嫌われる勇気―――自己啓発の源流「アドラー」の教え

嫌われる勇気―――自己啓発の源流「アドラー」の教え

面白いと教えてもらったので嫌われる勇気を読みました。

タイトルだけは見たことがあったのですが中身を知らなかったのでタイトルから推測するにマネジメント関連の本なのかな?と思っていたのですが心理学の本だったんですね。

まず簡単に本の感想ですが対話形式なので小説を読んでいる感覚で読めるので非常に読みやすかったです。

本の中身に関してですが非常に深く考えさせられるな…と感じました。

以下個人的に特に印象に残った部分です。

お前の顔を気にしているのはお前だけ

人は他人のことなんてほとんど気にしていないよ。ということですね。

自由とは他社から嫌われることである

タイトルの嫌われる勇気にも絡みます。
人は誰しも他人から嫌われたくはないです。
でもだからといってすべての人から嫌われないように振る舞っていては自由に、幸せにはなれません。
人に嫌われる勇気を持って行動することで初めて自由になり幸せと感じることができます。

「いま、ここ」に強烈なスポットライトをあてよ

大切なのは過去でも未来でもなく「いま」。
今を必死に生きることで結果としてより良い未来に繋がる。



全てを本の教えの通りに、とはいきませんが上に挙げたことなどは心打たれました。
こういったことを意識しつつより成長していきたいですね。

Python web3

Pythonでのコントラクトへのアクセスプロジェクトを少しずつですが作成し始めました。

軽く調べたりしましたがJavaScriptからアクセスする形よりも資料が少ないので非常に苦戦しそうです!

簡単にですが現時点でなんとなく理解したこととかをまとめてみます。

Pythonにもweb3のライブラリがあるのでそれを用いることでアクセスすることが可能です。

インストール

pip3 install web3

実際に使用するための準備

from web3 import Web3,HTTPProvider

web3 = Web3(HTTPProvider("http://127.0.0.1:7545")) # Ganacheなどで動かしているアドレスとポート

これだけでローカルで動作させているブロックチェーンには接続できます。
blockNumber = web3.eth.blockNumber
とかやれば情報が取得できるので確認できます。


これだけだとコントラクトのメソッドを呼び出せないので自作したコントラクトのインスタンスを取得する必要があります。

JavaScriptの時は以下の感じでした。

import artifacts from '../build/contracts/UnitFactory.json'
const UnitFactory = contract(artifacts)

大変今更なのですが今回Pythonを触ったことでここの処理が何をしているのかようやく把握しました。

  • Truffleでmigrateを行うとbuild以下のフォルダにjsonが吐き出される
  • 吐き出されたjsonにはアップロードしたコントラクトのアドレス等の必要な情報がjson形式で保存される
  • そのjsonをweb3に渡すことでインスタンスが取得できる

というような形になっているようです。

Python版も流れは一緒のようです。

ドキュメントを見ると

# get bytecode
>>> bytecode = compiled_sol['contracts']['Greeter.sol']['Greeter']['evm']['bytecode']['object']

# get abi
>>> abi = json.loads(compiled_sol['contracts']['Greeter.sol']['Greeter']['metadata'])['output']['abi']

>>> Greeter = w3.eth.contract(abi=abi, bytecode=bytecode)

abiとbytecodeを生成してますがtruffleの吐き出したjsonを覗くとその辺りの情報はありそうなのでjsonをそのまま読み込めば使えそうです。

json読み込み処理

import json

f = open("UnitFactory.json", 'r')
json_data = json.load(f) 

読み込んだjson_dataを投げてインスタンスを生成してみます!

UnitFactory = web3.eth.contract(json_data) 

実行してみたらエラーが出ました!

    UnitFactory = web3.eth.contract(json_data)
  File "/usr/local/lib/python3.7/site-packages/web3/eth.py", line 438, in contract
    return ContractFactory(address)
  File "/usr/local/lib/python3.7/site-packages/web3/contract.py", line 286, in __init__
    self.address = normalize_address(self.web3.ens, address)
  File "/usr/local/lib/python3.7/site-packages/web3/_utils/normalizers.py", line 212, in normalize_address
    validate_address(address)
  File "/usr/local/lib/python3.7/site-packages/web3/_utils/validation.py", line 152, in validate_address
    raise TypeError('Address {} must be provided as a string'.format(value))

アドレス周りが原因っぽい感じですが…?

もやっとしてますが時間が無くなってしまったので今日はここまで><

息抜き

今日は作業をお休みして息抜きというか気分転換という感じで本を読んでました。

「すぐやる人」と「やれない人」の習慣 (アスカビジネス)

「すぐやる人」と「やれない人」の習慣 (アスカビジネス)

何か面白そうな本はないかなと本屋に立ち寄ったところこちらの本を見かけ、手に取ってみたところ面白そうだったのでその場で購入しました。

すぐやる人が行っているパターンについて色々書かれています。

おそらく他のビジネス書にも似たことは書かれているのかなと思うのでビジネス書をよく読む方にはあまり面白みがないかもしれませんが
私みたいな今まであまり読んでこなかった人間からすると面白いです。

1つの項目が4ページほどでまとめられているので非常に読みやすい点が良かったです。

ただ読めばよいというものでもないので書かれていたものの中から1つでも多く取り入れていけたらなと!

今後について

solidityでコントラクトを作成してフロントエンドから直接呼び出す処理はできました。

なので今度はバックエンドからの呼び出しを作ってみようかなと思ってます。

おそらくサービスレベルでスマートコントラクトを用いる場合はものにもよるんでしょうがまだまだRDBとの併用になるのかなとも思いますし。


いい機会なので趣味レベルでちょっと触った程度しかないpythonの勉強も兼ねてpythonで使って作ってみようかと思って少し調べてみました。
web3のpython向けライブラリがあるようなのでそれを使えば割と簡単にできそうな気が!

一区切り

一旦作っていたスマートコントラクトの作業が一区切りしました。

フロントエンドはさっぱりなのもあって見た目は残念ですがとりあえず最低限の形にはなったかなと。

リリースするためのアプリとかを作っているわけではないので1つのものにこだわるよりもまた新しいことをやった方が勉強になるのかなと思うので今回のプロジェクトはひとまず一旦終了とします!
気になったりしたこととかがあれば手を入れはするかもしれませんが!

技術書典7に行ってきました

昨日行われていた技術書典7を覗いてきました。

技術書典は初めてだったのですが人数の多さに驚きました。

朝一の入場チケットを購入してはいたものの、入場開始から30分くらい経っていたのでそれなりに落ち着いているかなと思って行ったらまさか入場に並ぶことになるとは思いもしませんでした。(笑)



会場内は色々なテーマの技術書?同人誌?が溢れており、いくつかの本を手に取らせていただきましたし見ているだけでも面白かったです。
気になった本はいくつか購入させていただきました!

また機会があれば参加させていただこうと思います。