Eat, Play, Nap and Code

食とあそびと昼寝とプログラミング学習

週報 2021/4/26(月)〜2021/5/2(日)

📚 1週間ふりかえり

一週間早すぎてびっくりしました。こんにちは。 今週は何をしていた記憶もないです。ER図の課題は合格しました! 多分勉強してたんだと思うので、週報を書きながら思い出したいです〜!

📚 もくじ

📚 目標と成果

目標 成果 来週の課題
RESTの課題を終わらせる 課題提出した 合格
『Webを支える技術』を半分読み終える 1/3読み終えた 読了したい
TwitterのER図を作る課題合格する 合格した! -
なんでもいいから個人ブログ早く作る!! 作れてない 来週こそ

📚 学習時間

日付 時間
4/26(月) 05:30
4/27(火) 05:30
4/28(水) 04:45 ​
4/29(木) 03:30
4/30(金) 03:30
5/1(土) 02:30
5/2(日) 01:00
合計 26:15

📚 週報

📅 4/26(月)

💪 やったこと

  • 『Web技術の基本』を読み直しながら、RESTについて学ぶ。
  • RESTとはWebの設計思想。下記の4つの原則からなる。
    • 統一インターフェイス(あらかじめ定義された方法で情報がやりとりされる)
    • アドレス可読性(全ての情報がユニークなURLの構文で示される)
    • 接続性(やり取りされる情報にはリンクを含めることができる)
    • ステートレス性(やりとりは1回ごとに完結し、前のやりとりの結果に影響を受けない。このリンク先のハンバーガーの注文での例示が分かりやすかった)
  • RESTの思想に基づいて設計されたWebシステムをRESTfulなシステムと呼ぶ。
  • 具体的にRESTfulなURLがどういうものなのかはよく分からなかった!明日また考える。

🍕 感想

  • 色んな方の日報を読んで、だいたいどんな感じで進めればいいのかの概観を把握することに務めた。
  • 参考図書の『Webを支える技術』はとてもいい本だけど、内容はなかなか難しいみたい。しかし時間の投資だと思ってしっかり読むのがオススメされていた。自分はSQLでの反省を踏まえ、しっかりと読むことにした。1ヶ月くらいかかってもいいので、ちゃんと読み通したい。→メンターさんより、『Web技術の基本』を読んでいればそれほど難しくはないとのコメントをいただいた!
  • 『Web技術の基本』の中で、ブログが動的ページの例とされていて少し驚いた(著者が更新するまで変わらないと思った)が、確かには てぶの場合でもコメントやスターなどがつくことで、状況に応じてコンテンツが変わっているか。

📅 4/27(火)

💪 やったこと

  • RESTfulなURLについて学ぶ。
    • URIはリソースを示すから名詞のみで構成させる。
      • /api/getUsersではなく/api/usersがRESTful。
    • パス名は、小文字とダッシュ-で構成させる。
      • service-api.com/usersservice-api.com/app-setupsなど。
    • attribute(属性)はserver_classのようにアンダースコア_を使う。
    • リソースを表すとき、IDだけだとエンドユーザーに分かりづらいので、https://service.com/apps/{app_id_or_name}のようにIDと名前どちらも受け入れるようにできる。
  • 『Web技術の基本』を読み進める。
    • YouTubeNetflixプログレッシブダウンロード配信。オンラインで映画をレンタルするときは、キャッシュ期間が決められてるということかな。
  • SinatraRailsと同じくRubyフレームワークのひとつ。知らなかった〜というかきっと何度も聞いたことあるんだろうけど理解してなかった。
  • スマホとかのアプリとWebブラウザの関係、知らなかった。どちらもWebサーバーとやりとりを行うWebクライアントというソフトウェアだけど、アプリはそれぞれに最適化された専用のクライアントプログラムが用意されている。

    🍕 感想

  • Web技術の基本、点と点が線になる感じで、読んでいてとても面白い!
  • 新しく知ることが多すぎるとストレスだけど、うっすら聞いたことのあったあれってこのことだったのか〜!という瞬間がたくさんあると学習は楽しい。
  • なので、エンジニアに限らず色んな人の話を(わからなくても)聞いて興味のアンテナを広げるのは大切だな〜と思った。最近雑談タイムの参加していなかったけど、週1回は必ず参加するようにしたい。

📅 4/28(水)

💪 やったこと

  • 『Web技術の基本』を読み進める。
    • Googletwitterアカウントの情報で会員制サイトの登録ができると、ユーザーは個別にアカウント管理しなくてよいから便利だし、運営者側は個別に利用者の個人情報を管理する負担がなくなって便利。
      • 思えばGoogleのアカウントを作ったのは2008年くらい?で、高校の先輩にgmailを作れと言われたのがきっかけ。そのとき初めて設定したeatplaynapというアカウント名をずっと使いつづけている。
    • OAuthの読み方はオーオウス
    • ロボットじゃないことを証明するパズルはCAPTCHA
    • 歪んだ文字を読むやつを考案したのはDuolingoを作ったルイス・フォン・アン https://www.lifehacker.jp/2014/05/140519duolingo.html
    • データベースの物理設計について勘違いしていた。「データが文字列か数値か」とか「数値であれば整数か少数か」とかの検討は論理設計の一部かと思ってた。物理設計は、ハードウェアとかの話かと思ってた。
      • ER図を書くところまでが論理設計で、それ以降より具体的な作業が全て物理設計になる。達人の本(p.29)にも、論理設計は、一旦「具体的で実装レベルの条件」を脇に置いて行うと書いてあるので、自分が想像してたものよりずっと抽象度の高い作業みたい。逆にいうと、ER図を作っただけでは本当にラフスケッチ段階だとwakatta😄

🍕 感想

📅 4/29(木)

💪 やったこと

  • 『Webを支える技術』を読み進めつつ、TwitterURIを設計する課題にちょっと取り組む。使うHTTPメソッドはPOSTとGETだけになりそうだけど、「ツイートに返信」「リツイート」もPOSTでいいかな?
  • ダメな例については『Webを支える技術』に載っているけど、理想的な(RESTfulな)URIが何なのかわからないから、手を付けるのがちょっとむずかしい。
    • と思ってたけど、ブートキャンプのサイトの設計を見ればいいことに気づいた。
  • 階層構造にできるところは階層で表して、難しそうなところはマトリクスURI(p.62)を使って表現できそうかな?

🍕 感想

  • 頭痛であまり進まなくて残念。まあ祝日だからいいか…
  • HTTPのメソッド、POSTとPUTの使い分け方がよく分からないな。

📅 4/30(金)

💪 やったこと

  • 『Webを支える技術』を読み進める
    • クライアントのアプリケーション状態とは、クライアントがシステムを使ってる間のやりとりで発生した情報のこと。
      • 別名はセッション状態
      • システムにログインしてからログアウトするまでの一連の操作をまとめて「セッション」と呼ぶため。
    • ステートレスなアーキテクチャでは、サーバはクライアントのアプリケーション状態を覚えない。クライアントが自らのアプリケーション状態を覚えておき、リクエストのときに自己記述的メッセージでサーバに都度伝える。
    • HTTPのメソッドは8個しかなくて、そのうち2個(TRACEとCONNECT)はほとんど使われてないので実質6個。
      • GETが最も利用頻度が高いメソッド。
      • POSTは子リソースの作成の使われるメソッド。例) /listの下に/list/item5を作成
      • POSTではリクエストボディにキーワードを入れることができるのでGETではURIに入れざるを得ず検索できないような長いURIを検索させることができる。
  • ブートキャンプのサイトの設計について、とりあえず目についたページのパスを調べてみた。
    • ヘルプというページはDocsの一部。
    • Q&Aは/questionsという親から行く場合と、//practices/#{practice_number}/questionsから行く場合がある。
    • 日報・提出物・ポートフォリオは個人や課題に紐付かない。→Twitterのツイートもそうかも。
      • その場合、リツイートとかはどういう扱いになるかな?

🍕 感想

  • Twitterの課題今日提出したかった〜なんかお腹が痛くてめっちゃ早く寝てしまった。
  • やるべきこととできないことが多すぎて落ち込みがちかも。
  • あ〜〜〜早く海外旅行したい〜〜〜!!!

📅 5/1(土)

💪 やったこと

  • とりあえずTwitterの再設計の課題提出してみた。
    • 影響されるから見ないでいた本家のURIと結構違うので自信がなくなってきたが、まあいいや。
  • これからは次のSinatraの課題に入りつつ、Webを支える技術を読み進めるつもり。

🍕 感想

  • Twitterの再設計の課題、とりあえず一度出してみることにした!よくわからないので一度フィードバックをもらってから考えたい。
  • YouTubeの登録者がちょっとずつ増えて嬉しい🥺自分の成長の記録が主目的なので、人気になりたいとか収益化したいという気持ちはないのだけど、見てくれている方がいると思うとモチベーションが上がるので本当に感謝です。
    • 最近ベタ書きしてからメソッド化するのに挑戦しているので、メソッドってどう定義するのか気になる人は見てもらうとちょっと役に立つかも…(?)

📅 5/2(日)

💪 やったこと

  • Twitterの再設計の再提出した〜。メソッドの理解が曖昧で何でもPOSTを使っていたけど、Qiitaの記事を読み直して、PUTを使うべきでは?と思う箇所が出てきたので修正修正。指摘をいただけると理解が深まってイイネ。

    登録だけ/eventIdが無いのは/eventIdが自動採番されるためです。/eventIdが振られたイベント(一つのリソース)に対し異なるメソッドで取得、更新、削除などを行います。RESTではこのようにHTTPメソッドを利用するというインターフェースの統一が図られている為、サービスが利用しやすくなっています。

🍕 感想

  • この日の夜はYuka Masuda (@yukamasuda) / Twitterさんの主催されている、海外で働いている・働きたい女性エンジニアDiscordのコミュニティで自己紹介LTをして、他の方の話を聞いた。
  • 私は今すぐに海外で(どこでもいいから)ジュニアエンジニアとして働きたいという希望はないので、全部が自分に当てはまる話ではなかったけど、見聞が広がったし自分のやりたいことも認識できたので、色んなコミュニティの話を聞くのは大事だな〜と思った。

📚 来週の目標

  • 『Webを支える技術』読了
  • TwitterURI再設計の課題合格
  • Sinatraの課題でやるべきことを理解して道筋を決める!
  • 来週こそブログ作ろう!!!