インサイドアウト

適当に書いていきます

チュートリアルでのユーザー作成時の処理まとめ

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう 11章でのアカウント有効化メール関連の処理まとめ

 

1.ユーザーが新規登録をする (/usersへpost)

 

2.users_controllerのcreateアクションへ

 

3.before_createで設定したcreate_activation_digestメソッドの実行によりactivation_token,activation_digestへの入力

 

4.Userクラスのインスタンスの作成、データベースへの登録、UserMailerクラスのaccount_activationメソッドを利用したアカウント有効化メールの作成、送信(UserMailer.account_activation(@user).deliver_now)

 

5.ユーザーのクリックによりedit_account_activation_url(/account_activations/:id/edit) にgetが送られる(idにはactivation_token、クエリパラメータにはユーザーのメールアドレスが含まれる)

 

6.account_activations_controllerのeditアクションへ

 

7.params[:id]でactivation_token,params[:email]でクエリパラメータのメールアドレスを取得できるので、それを利用してユーザーの認証(authenticated?メソッドの実行)、activated属性、activated_at属性の変更、ユーザーのログイン処理が行われる

 

Ruby on Rails エラーとの戦い

Ruby on railsの基本的な処理の流れは

ユーザーがリクエストを送る(urlなど)→ルーティングの設定に応じて対応するアクションやページが決まる→データ処理等→ページ表示

というものだ。

処理としては明快でわかりやすいのだが、railsはサーバーで動くもので、普通の自分のパソコンだけで動くものとは違うエラーが起こったりする。

僕の場合、正しいurlでリクエストを送ってもエラーになってしまって全く表示されなくなることがあった。

エラーメッセージを見てみると、どうやら同じ仮想サーバ上に作ってあった別のアプリのルーティングが適応されているらしい。

全く不思議な現象に思えた。

確かに同じ仮想サーバ上に別のアプリは作ってあるが、今のアプリのディレクトリで立ち上げているのだからルーティングがそんなことになるわけない。

2時間くらい色々試した挙句、全くわからなかったので、仮想サーバの立ち上げからやり直したらすんなりうまくいった。

原因は、以前学習した時の仮想サーバの閉じ忘れだった。

pcの電源を落としていたから仮想サーバも落ちていると思っていたがそうではなかったみたいだ

あるいはpcの電源も落ちていなかったのかも

単純なエラーが一番厄介かもしれないと思った

 

下手の考え休むに似たり .2

しばらくRailsガイドを進めてみて気がついたが、Railsは自動運転機能を強化するためにものすごく規則が多い。

モデル、ビュー、コントローラで構成されていると言われても規則のための概念のような感じがするし、コードを自動で書いてくれるのは有り難いのだが学習段階だとそれがややこしさを増させている感もある。

ここは、書籍がいいかと思ってRuby on Rails 5アプリケーションプログラミングを購入。やはり書籍は体系的に学習したいと思ったら最強のツールかもしれない。

MVCモデルはRailsに限らない一般的なシステムということなのでRailsはある程度しっかり勉強しといた方がいいかもしれないと思える。

ところで、昨日思いついた新しい学習方法、予想読みと言うのを試してみた。

予想読みとは、文章を理解しようとする前に、自分ならどういうことを書こうとしたらこういう文章になるか予想してみるというものだ、つまり内容をよく読まずに予想だけで理解を進めるという荒技だ。

この方法を思いついた時は自分は天才なのではないかと思ったが、実際には天才ではなかったようで全然理解が進まなかった。

ちょっと先が長い気がしてきた。

 

 

 

 

SNSを作りたくなったので道筋を記録していく.1

あまり世の中に存在していないだろう形のSNSを作りたくなったので復習も兼ねてその記録をしていきます。まだ作り途中なのでどう言うSNSかは書きません。

・現在のスペック

  『インターネットアカデミー』という、htmlとは、からはじまり、最終的には完成したサイトの部品を再配置するところまで丁寧に教えてくれる初心者養成スクールで、javascript,css,mysql,phpの基礎を学んだ。(70万払った。良い子は絶対に真似してはいけない。)

 Monacaを利用した小さなハイブリッドアプリを作って見た。(jquery,html,css,onsen-uiを使った)

以上である。履歴書に書いて送ったら採用係にティッシュ代りに使われて終わってしまうようなかんじではあるが、簡単なものから作っていこうとしたら逆に遠回りになることがある。僕の考えは、まず作りたいものを考え、次にそのために必要な知識なり環境なりを整える、と言うものなので、あまり細かいことは気にしないことにした。

 どうやってSNSを作ったらいいか調べてみると、SNSの仕組みとしては、ユーザーに表示されるページがあり、書き込みを記録するデータベースがあり、それを反映させるサーバーサイドプログラムがあればできるみたいだ。もちろんユーザー登録制にするわけだから個人情報保護のための暗号化などの機能も必要だが、そういう細かいことは後にして、とりあえずサーバーサイドプログラムの作成方法から学ぶことにした。

 

 言語はruby on railsが良さそうだった。簡単だし、何より楽しいらしい。 PHPを使うことも考えたが、なんとなくruby on railsの方が将来性がありそうな気がしたので、そっちを使うことにした。

とはいえ僕の場合、まずはrubyから学ばないといけない。僕は安心の侍エンジニアさんに勧められるがまま、Rubyがミニツクrubyの基本について学ぶことにした

 

 このサイトのいいところは、rubyの生みの親であるまつもとゆきひろさんがあの素敵な笑顔をみせつつ、rubyについて解説してくれる動画があることだ。開発者の視点からの話を聞けることはあまりないし、ましてや日本語で聞けるのはおそらくrubyだけだろう。分かりやすく勉強になるし、癒し効果もある。僕は活字のページを飛ばして動画だけみたくなる衝動を抑えながら勉強を進めた。

 rubyについて一通り勉強した僕はすぐにruby on railsの勉強に移ることにした。スポーツとは違い、開発はなるべく基礎学習に時間を使わないのが大事だと思っている。
ruby on railsの学習にはドットインストールを利用させてもらうことにした。

 そして今勉強中なのでここから勉強ログを取って行きます

現在はドットインストールチュートリアル方式なのでリファレンスも欲しいと思い、railsガイドといったりきたりしながらやっていこうかなと思ってるところです

 

アプリ開発記その6 オリジナルアプリの完成

 開発を初めてから4ヶ月弱、アプリは完成した

初めてビルドして自分の端末にインストールした時はもっと感激するかと思っていたがが、実際には、アイコンダサくね?とか色々気になって直したくなってしまった、しかしあまり細かいこといってると永遠に公開できなくなる。

僕は意を決してストアに公開申請を出した。

これは有名な話だが、アプリの審査基準はAndroidよりも Iphoneの方が圧倒的に厳しい。

僕の場合最初にAppleに申請を出したものはちょっとしたバグがあり、却下されてしまったが、同じものをAndroidの方は数分で許可されている。おそらくほぼ審査などしていないのだろう。

Iphone向けのものもバグを直したら許可してもらえた。

人生初のマイアプリの完成だ。

アプリを宣伝するために、アプリ紹介用のページ、いわゆるランディングページも事前に準備してある。

ブログも書き始めている。

舞台が整ったという感じがして嬉しかった。

その夜は7月の蒸し暑い日だったからか、興奮してしまったからか分からないが、うまく寝付けなかった。明日は仕事があるから早く寝なくてはと思いつつ、なんども寝返りを打った。

ふとFaceBookについたコメントを思い出した。「第二のザッカーバーグ、いわゆるナッカーバーグの誕生だったりして(僕の本名は中村です)」なかなかうまい事言う友達もいたものだ。僕はにやけてしまった。枕からは、シリコンバレーの香りがした。

 

 

 

 

3分で読める仮想通貨まとめ

最近Bitcoin分裂騒動があったりVALUが話題になったりしてて興味を持ったので仮想通貨について自分なりに調べたことを簡単にまとめてみたという記事です

ど素人なので間違っていることもあると思いますがコメントなどで指摘していただけたら嬉しいです。

 

仮想通貨の始まり

 ナカモトサトシと名乗る人物が2009年ころはじめたBitcoinが最初の仮想通貨。

 ただしナカモトサトシは論文でそう名乗っていただけでそれがどこの誰かはわかっていない。21世紀最大の謎と言われている。

 

仮想通貨の仕組み

 基本的な仕組みはブロックチェーンなるものでできている。

 ブロックチェーンとは、お金のやりとりの記録などの、情報の塊(ブロック)を順序をつけて繋げたものを複数のPCで共有する仕組みらしい。

 これにより、1つのPC上で記録が改ざんされても、他のPC上の記録との整合性がつかなくなり改ざんがバレてしまうので、改ざんすることが難しい。よって情報の不可逆性が保たれる。(多数派の情報が正しいとするので、改ざんするには51%以上の情報を改ざんすることができないといけない)

 また、サーバーというものを持たないので情報がなくなってしまうリスクもないし、

 権力者というものも存在しないために特定の人物の利益のためにシステムが変えられてしまうこともない。

 そのため国家に縛られない通貨として利用されている。

 

仮想通貨2.0

  従来の決済機能としての仮想通貨に他の機能をつけたもの。

 代表的なものとしては将来の約束(給料日には倍にして返すからとか)なども記録できるイーサリアムがある

 

投資対象として感じたこと

 値動きがかなり大きい。一ヶ月たらずで倍になったり半分になったり。

 リップルなどは、仮想通貨としてはそこそこ大きいのに今年2017年の4月末から5月中頃の間に10倍になってる!

 よってハイリスクハイリターンと言えるが、全体の傾向としては圧倒的に上昇トレンドの通貨が多いので、ちゃんと考えて投資すれば勝ちやすいかもしれない。

2017年は日本でもビッグカメラなどでBitcoinでの決済が可能となるなどがあり、仮想通貨元年と言われているらしいので、投資に興味がある人は選択肢の一つとして考えておくといいのかもしれない。

ただし、未公開仮想通貨詐欺などもあるそうなので、実際に買う時にはよく調べてから買うべきだろう。

 

という感じです。

今のところ、近い将来の社会を作る礎になるかもしれない注目の技術の一つ、といった印象なので、これからもちょくちょく調べてまとめを書いたりしたいですね!

アプリ開発記その5 デザイン

これはアプリを作り初めてすぐに気がついたことだったが、コーディングよりデザインの方が難しい。

コードには著作権もなければ、ユーザーに覗かれることもないから、動けばいいで作ってもいいし、コピペしまくってパクリまくっても誰からも責められることはない。

しかしデザインはそうはいかない。ただ配置しただけのダサいデザインは誰が見てもダサいし、パクったら裁判沙汰になる。

しかも、僕が作っているのは、見栄っ張りな男子大学生むけのアプリなのだ。デザインはかっこよくなくてはいけない。

 

僕はなんどもなんどもPCと向き合って配置を変えたり色を変えたり、ボタンの素材を作ったりを繰り返した。

しかしいくらやってもぱっとしない。素人臭さが抜けないのだ。

鮮やかな色を使うとまとまりがないゴタゴタっとした感じになるし、彩度を下げると薄ぼんやりした感じになってしまう。

 

なんだか、炭酸ジュースの飲み比べを延々とさせられているような気分だった。

 

そこで僕は、もうどうでもいいや、と呟いて、適当に配色をして寝てしまった。

次の日、朝起きてPC画面を見ると、そこには調和のとれたデザインが完成していた。

そう、デザインなんて適当にやった方がうまくいくのだ。

この境地に最初のアプリデザインで到達したのは僕くらいではないだろうか。

自らの才能に恐れ入りながら、僕は開発を進めたのだった。

 

⚠︎これは深夜2時のテンションで書かれた記事です 

 

□参考になった本 

 

ノンデザイナーズ・デザインブック [第4版]

腕のいいデザイン事務所で修業しないとふつうは身につかない知識と技と心得 (インプレスムック エムディエヌ・ムック)