新しい物を作るために当たり前を疑ってみる
どっかの偉い人が言ってた(気がする)のですが、
「常識というのはその人の色眼鏡」であるとのこと。
まあ、ところ変われば常識も変わりますよね。
ぱっと思いつくのが、頭をなでる行為。
日本だと子供を褒めるのに「いいこ、いいこ」すると思いますが、
タイだと、やっちゃいけなかったりするんです。
(子供の頭には精霊がいて、なでる行為はその精霊を汚す行為になるそうです)
今日は何でそんな話を始めたのかというと、
新しい何かって常識の外にある部分なんだろうなぁと
電車でぼんやりしながら考えていたからです~
なぜそう思ったのかというと、例えばスマホ。
今は老若男女問わず当たり前のように使っている方が多いと思いますが、
15年前くらいに戻ってみてください。誰も使っていないんですよ~
つまり、スマホというのは15年前は「常識の外」に合ったものなんです。
誰かが考えて、15年経った今、常識というか当たり前のものになったのです~
私もエンジニアとして「作る」立場にいますが、
人生に一つくらいは「常識の外」からやってきて、
当たり前になった物って作ってみたいです♪
その為には「何が当たり前」で「何が当たり前じゃない」のか
知らないといけませんが…
あんまり調べるの得意じゃないcacaponにとっては大変そうです~
ゲーム開発は料理の様なもの
みなさんは「ゲームを作りたい」と思った事はありますか?私はあります〜
でも、それは「料理をしたい」と同じとも考えてます〜
そう、
「カレーを作りたい」のか
「ナポリタンを作りたい」のか
はっきりしていないんですよね…
はっきりしてないと
材料は用意出来ません〜
カレーを作るのにパスタは用意しませんよね?
あなたはゲームを作るのに
何を用意するのでしょう?
それらは作りたいゲームに本当に要るのでしょうか? さっきのパスタになっていませんか?
そんな訳でcacaponも作りたいゲームをはっきりさせる所から始めてます〜
ゲームを作りたい方、お互い美味しいゲームが出来上がるよう頑張りましょ〜♪
スマホからGETリクエストを投げてみました
ゲーム作りの下準備で、
スマホのアプリからサーバーにアクセス出来ないかなぁと思いまして、調べていました。
以前買っていた pythonista3 を見たところ、
なんと requests パッケージが標準で入っていたのです♪
とりあえずパパッと組んだプログラムがこちら
import requests
res = requests.get('https://google.co.jp')
print(res)
googleさんのホームページにGETを投げて、
無事に200 のレスポンスが返って来ました♪
res.text とかにすると中身も見えましたよ〜
いっぱい出てきたので記載は割愛しますが…
これなら、サーバーを公開していれば、
スマホと自前のサーバーアプリとでやり取り…というのも出来そうですね♪
次にチャレンジしてみたいです♪
認可を理解する為にpythonで実装してみました〜
この前、認可と認証についての記事を読みました〜
認証は「むむ、あやしいやつ?…ではないな」っていう感じの確認ですね~
認可は…ちょっとわからなかったのですが、何でも、切符みたいなものなんだとか。
わからなかったら、とりあえず作ってみる!
というわけで電車の中で30分くらい揺られながら作ったのがこちらになります~
ticket.py
import uuid class Ticket(): def __init__(self): self.ticket_holder = [] def issue_a_ticket(self): ticket = uuid.uuid4() self.ticket_holder.append(ticket) return ticket def exact_ticket(self,your_ticket): if your_ticket in self.ticket_holder: print('Ok, that ticket is real.') self._destruct_ticket(your_ticket) else: print('what the hell! This ticket is fake!') def _destruct_ticket(self,target_ticket): self.ticket_holder.remove(target_ticket) if __name__ == '__main__': app = Ticket() get_ticket = app.issue_a_ticket() print(get_ticket) # success! app.exact_ticket(get_ticket) # failed 1 app.exact_ticket('bad_ticket') # failed 2, you can entry only once. app.exact_ticket(get_ticket)
実行結果
$ python ticket.py
8d5e2870-92c3-41f6-9502-5d152bfbf315 <-ここは毎回変わります~
Ok, that ticket is real.
what the hell! This ticket is fake!
what the hell! This ticket is fake!
チケット発行したらそのチケットを使って、
ある関数を実行する って感じですね〜
この時渡されるチケットが正しいものじゃないと、
このチケットはよろしくない旨のメッセージが出ます~
今回はメッセージを表示するだけですけど、なんかに使えそうな感じはしますね~
ちなみに、今回作ったチケットは一回限りのチケットになりますので、
2回目以降は正しいものでも偽物扱いされます〜
因みに、この入手したチケット、
なんと、別の方に渡す事も出来るのです〜
cacapon.py
from ticket import Ticket app = Ticket() class Cacapon(): def __init__(self): self.haveticket = '' def get_ticket(self,your_ticket): self.haveticket = your_ticket def use_ticket(self): app.exact_ticket(self.haveticket) if __name__ == '__main__': any_have_ticket = app.issue_a_ticket() cacapon = Cacapon() cacapon.get_ticket(any_have_ticket) cacapon.use_ticket()
実行結果
python cacapon.py Ok, that ticket is real.
anyさんが発行したチケットを
cacaponが使えてるのが分かるかと思います〜
これが、認可ってやつですかね?
こうやって作ってみると、何となくわかる気もしてきます~♪ これが認可ってやつかなぁいう感触は得られました♪
これの発展形としては
「無条件で発行しているところに制限を加える(認証機能の追加)」とか
「1日乗車券みたいに、失効タイミングを変更してみる」とか
…が思いつきます~もっと色々使えそうですね♪
スモールステップについて話そうと思ったら、自己分析を始めた話
突然ですが、今日はスモールステップの原理について紹介したいと思います〜
これはB.F.スキナーさんが提唱した、プログラム学習という手法に含まれる原理の一つなのですが、
簡単に言うと一気にやらず、小刻みにちょっとずつ勉強を進めていきましょう〜という考え方になります〜
この方法の特長の一つとして、
「達成感を積み重ねて、モチベーションを上げられる」という部分があります〜
cacaponはここが琴線に触れたのです〜
何故ここがきになったのか…?
それは、最近物事が続かなかったり、
やる気無かったりで
自信がなくなっていたからです〜
…皆さんはそんな事ありませんか?
無いですか〜 羨ましいです〜
まあ、そんな感じで絶賛自信、やる気低空飛行中のcacaponですが、なんで自信無くなってるのか…?
どうにかしたいから、考えました!
まず、cacaponはどんな事が嬉しいか考えました。
その結果、誰かの為に役に立ちたいという気持ちが強いなぁと思いました♪
奉仕の精神ですね♪
ただ、それを別の側面から見ると、誰かに認められたいとか褒められたい気持ちが強いんだと思いました。
…皆さんも褒められたいですよね?
そうですよね?
でも、これって相手任せだから安定しないんですよね。しかも、褒められても自分が納得しないと意味が無いからタチが悪いのです〜
なんで他人が認めてるのに、
自分は認められないのでしょう?
それは、自分が信じられないからだなと思いました。まさに自信が無いわけですね〜
自信が無いから、成功しても認められない。
他人が認めても、自分が認められない。
結果何をしても失敗扱いになってさらに自信が…
…何というデススパイラルでしょう!
これはまずいですね!
というかここ最近のcacaponこんな感じ…
非常にまずかろうな状態です〜
という訳でデススパイラルから抜けましょ〜
という事でまずは自分を信じられるようにするところから始めました〜
そこで出てくるのが
「スモールステップの原理」♪
小さくても成功だから、コツコツやれば
どんどん成功体験が貯まり、
え、私凄くね?ってなり、
最後にはぶいぶい言わせられるって寸法なのです(笑 凄いぞスモールステップ!
なので、先週あたりからスモールステップな事をやり始めたのです〜
で、何をしたのかって?
朝時間通りに起きれた! 凄いぞ私!
ITのブログ読んだぞ!やるな私!
LEGOで遊んだ! 楽しかったぞ私(笑
棋譜並べ※やったぞ!少し賢くなったかも私!
※…将棋の棋譜を実際に駒を動かしながら追っていく事。プロの人がどう考えたのかなぁとか思いながらするので面白かったです♪
…とまあ、他にもいっぱいあるのですが、側から見たらしょーもない事かもだけど、小さい事でも何かしたら自分で自分を褒めるっていう事を続けました〜
一週間でとりあえずぶいぶいのぶくらいは自信が回復した気がします♪
そのおかげか分かりませんが
仕事も今週は2019年8月史上の成果が上がった日かなと思います♪ 流石だ私!
もし、ここを見てくれた方がデススパイラルにハマってましたら、cacaponみたいにちょっとした事でも自分を褒めてみて下さい♪
多分2,3日経てばぶいぶい言えるかも知れませんよ〜
それではまた♪
参考文献?
比較的分かりやすいスモールステップの解説が載ってたページです〜
https://learn-tern.com/small-step/
スキナーのスモールステップが載っている文献のはずですが、解読中…
http://www.bfskinner.org/wp-content/uploads/2016/04/ToT.pdf
知らない事が分かった、というのは良い発見だったかなと思います〜
最近ITの用語がわからないなぁというのが気になったので、基本情報の過去問を解いてみました〜
結果は惨敗でした…
JIS Q 27001:2014?※1
DNSキャッシュポイズニング?※2
多分一般的な用語だと思うのですが
…単語が全然分からないのですよね〜
とりあえず、知らない単語が出てきたらメモして、後で調べるというのを繰り返しています〜
取り分け頭が良いわけじゃないので、
これで少しずつ新しい単語を覚えていけたら良いなぁと思います〜
※1:JIS規格の一つで、情報セキュリティの要求事項を定めたものみたいなのですが、勉強不足で理解しきれてません…
※2:DNSサーバーの脆い部分に攻撃し、本来のキャッシュを悪意のあるキャッシュにすり替える手法らしいです〜
サイトにたどり着けなくしたり、詐欺サイトに誘導されたりなどの悪影響が出るそうです〜
余談
後で気づいたのですが、基本情報技術者試験の問題ではなく情報セキュリティマネジメント試験の過去問を見てました〜
道理でセキュリティ関連の問題が多かったのですね〜
知ってました?LEGOって20年前のブロックでも新しいブロックとくっつくんですよ?
この前、家の掃除をしていたら、
たぶんcacaponが4歳くらいの頃に遊んでたLEGOが出てきました~
だいぶ埃がかぶっていたのですが、中身は大丈夫そうです~
それで懐かしくなって、遊んでいたのですが、
そういえば、2か月前にLEGOを買ってあったのを思い出したのです~
最近のLEGOと20年以上前のLEGO、
試しにごちゃ混ぜにして、がっちゃんこ…
…普通にくっつきました♪ すごいですねLEGO~
何が凄いかっていうと、インターフェースの部分です~
そうです、凸と凹の部分ですね~
ブロックという単純な構造だからできるのかもしれませんが、
少なくとも20年は共通の規格で作られているってことですね~
途中で円柱型から四角柱にしようとかそんな案は無かったのかな?
何はともあれ、この形を昔から維持しているというのは凄いことだと思います~
これがプログラミングだとどうなのでしょう?
cacaponレベルだと、とてもじゃないですが
ちょいちょい出入口の部分修正してしまってます…
cacaponもLEGOみたいに20年たっても使えるような
いつまでも色あせないインターフェースを作ってみたいです~