ゆるふわ技術日誌

エンジニア見習いの悪戦苦闘日記

研究してました

研究

昨日まではLTの準備やらだったので、今日は研究に時間を使っていました。

H2Oを使ってオプション切り替えてブラウザでの挙動を確認したり。

ChromeFirefoxで違う挙動を示すことはよくわかったが、どのようなパケットのやりとりでそれが行われているのかというところを知りたいのでパケットキャプチャとかやって見る必要があるのかもしれない。

Wiresharkやろ?くらいの知識しかないのでお勉強の必要がありそうですねぇ。

という進捗。

mockサーバーを立ててみた

こっちは趣味の開発。ほとんどやる時間なかったので、json-serverをつかってモックサーバーを立ててみてた。

ブログをイメージして、postとpostに紐づくcommentがあるようなイメージのAPIサーバーを立てた。

json-serverとかいうくらいなので、当然jsonを書いて食わせても動くのだが(参考: おとといの記事)それはつらい。

そこでJSを読ませても動くということだったので、適当にランダムで作ってくれるような感じにしてみた。

module.exports = () => {
  const data = {
    posts: [],
    comments: []
  };

  const postsCount = 20;
  let lastComentsId = 0;
  
  for (let i = 0; i < postsCount; i += 1) {
    // Generate comment
    let commentIds = [];
    for (let j = 0; j < Math.floor(Math.random() * 5); j += 1) {
      const id =  ++lastComentsId;
      data.comments.push({
        id,
        article_id: i + 1,
        body: 'comment body',
        name: 'uutarou',
        created_at: new Date()
      });
      commentIds.push(id);
    }
    
    // Generate posts
    data.posts.push({
      id: i + 1,
      title: `TITLE ${i}`,
      body: 'hogehoge',
      comments_id: commentIds,
      created_at: new Date()
    });
  }
  
  return data;
}

だいぶ雑だが。(のちのちfaker的なのを入れてもう少し文章の量を確保したりしたい。)

これをjson-server index.jsみたいにしてやるだけでOK。簡単ですね。

雑談

土日は少しまとめて時間をとって趣味の方の開発を進めていきたい。


もともとマルチタスクに何かをこなすのは得意ではないので、本当は研究か趣味かに絞ってやっていくべきだとは思うが、息抜きとしてできる趣味をもっておくのも大事だし、このスタンスで続けていきたい。

今はスケジュール管理がガバガバなので、もう少しちゃんとしたスケジュールを立ててやっていく必要はありそうですね。

LTでしゃべってきました! #yuruhachi

LTでしゃべってきました!

【さらに増席しました】第1回ゆるはち.it: PWAについてゆるく話す - connpass

こちら。

そしてスライドがこちら。

speakerdeck.com

PWAがお題なのに、「あんまりメリット無いのでは?」という話をしてしまって大丈夫なのか?なんて思いながらスライドを作ってたが、なんとなく同意を得られた気がする。

ただ、後々酒が入って考えてたが、もしこれがでんぱ組のメンバーのブログとかだったらホーム画面入れちゃうだろうし、結局コンテンツの種類次第なのかもなと思った。

あとは、いろんなサイトを運用してみて、どれだけの人がPWAとして使ってくれるのか、どんなサイトがそうなりやすいのかみたいな統計が取れるといいのかもとおもった。

あとはやっぱりPushですね。更新通知を送れるのはブログとして大きいと思う。現状iOSSafariは対応してないとのことだったのでそこがなんとかなって欲しいがそんな日は来るのか…?

まだまだこれからの技術についてしゃべったり、手を動かしたりするのは楽しいですね…!

雑談

勉強会後

元バイト先のエンジニアの皆々様とお酒を飲みながら語らえた。

もう何ヶ月もお会いしてなかったので、その間にやってた研究やら趣味の開発やらの話をたくさんできてひじょーによろしかった。

あと、やっぱり何かしらの技術に触れるのって楽しいと思った。最近モチベーションが遥か彼方に飛んでいってたのでこれは大きい。それだけでも行ってよかった。

バイトを辞めた頃から考えると、だいぶ技術への取り組み方とか、ただ使うだけじゃなくてなんでやるのか考えることとか、とりあえず手を動かすこととかできるように(少しずつだけど)なってきた気がする。

もちろんまだ十分じゃなくて、もっとスピード感持ってやるとか課題はあるが、自分のやってきたことが間違ってなくてよかったという気持ちが溢れた。ちょっと泣きそうだった。

あと学生生活は半年、やることやっていける気がしてきた。

(モチベーションが落ちた時は何か面白そうなことやってる人たちの話を聞いたりするのがいいのかもしれないなと感じた。)

json-serverとかいうのもっと早く知っておくべきだった

少しずつやる気を取り戻しているので、今日はいろいろやりました。

研究の件

中間発表以来進捗がどうにもいまいち状態だったのですが、とりあえず手を動かしてみようと思って、仕様策定当時いち早くHTTP/2に対応したH2Oを使ってパフォーマンス測ったりといったことをしてみました。

H2Oをローカルに入れるのは面倒だったので、サクッとDockerを使いました。

lkwg82/h2o-http2-server - Docker Hub

動かすところまではすんなりといったのですが、パフォーマンスに差が現れるケースがいまいち把握できず。

調べようにもHTTP/2の通信がわからなかったので、もう一回該当箇所のRFCを読んでみようかと思います。

フロントエンドのお勉強

今日はちゃんとやった。研究室のPC(Core i7 7700)でビルドするとMacだと1分近くかかる処理がものの数秒で終わって腹が立った。やはり性能の良いMacが欲しい。

フロントエンドだけ勉強したいのに外部のAPI叩いたりするところでどうしてもサーバー的なものを書かないといけないじゃないかと思っていたのですが、json-serverなるものを知った。

typicode/json-server: Get a full fake REST API with zero coding in less than 30 seconds (seriously)

これ。

以下のような感じのjsonを用意して

{
  "posts": [
    {
      "id": "id1",
      "title": "id1 title",
      "content": "id1 content"
    },
    {
      "id": "id2",
      "title": "id2 title",
      "content": "id2 content"
    }
  ]
}

食わせる

$ json-server db.json

以上でモックサーバーが立ち上がる。

叩いてみる。

$ curl localhost:3000/posts
[
  {
    "id": "id1",
    "title": "id1 title",
    "content": "id1 content"
  },
  {
    "id": "id2",
    "title": "id2 title",
    "content": "id2 content"
  }
]

すげえ。(idはFirebase的なのを意識してあえてstringにしてみたけどその辺もよしなにされている)

それだけではなくPOST/DELETE/PUTなどもできる。JSONに対して直接変更を入れてくれる。

これさえあればフロントエンドの開発にだけ集中できるやんけと思ってしまった。もっと早く知りたかった。(というかmockを使って開発するという思考に至っていればすぐ見つけられただろうに…)

これを使ってモリモリやって生きます。いずれはFirebase的なのを使って少しは実用的なアプリケーションを作りたいなぁ。

雑談

明日はこれでLTやってきます。

【さらに増席しました】第1回ゆるはち.it: PWAについてゆるく話す - connpass

サークルとか研究室とかでLTもどきみたいなものはやったことあったのですが、外で知らない人を目の前にやるLTは何気お初なので頑張っていこうと思います。

スライドは作ったけど練習まだやってないんだよなぁ。

f:id:uutarou:20180828232221p:plain

表紙がかわいくできて気に入っている

スライド作りなどをした / フロントエンド

スライド作り

明後日のLTに使うスライドを作った。

ザクっと作ったけど時間大丈夫かしら。

後々公開する予定です。

フロントエンド

ずっと手をつけることができなかったフロントエンド の勉強を再開した。

やれることから少しずつ。

雑談

次はこの本を読み始めた

超AI時代の生存戦略 ―― シンギュラリティ<2040年代>に備える34のリスト

超AI時代の生存戦略 ―― シンギュラリティ<2040年代>に備える34のリスト

GatsbyのPWA対応をためした

やるやる言っていたのですがずっと心を病んでいてできてなかったので、試してみました。

PWA対応をするには2つのプラグインを入れればいいみたいで、

それがこの二つ。上がマニフェストを作成してくれるもので、したがサービスワーカーを作成して、ページのキャッシュを行ってくれるという感じです。

gatsby-plugin-offlineはすでに使ったstarterに含まれていたので、gatsby-plugin-manifestだけインストールして、軽く設定してみた。

READMEにも書いているが、通常様々な解像度のアイコンを用意しなければならないが、大きいサイズのアイコンだけ用意しておけばgatsby-plugin-manifestがビルド処理時に適切なサイズにリサイズして吐き出してくれる。

実際にビルドを試してみたら、以下のような感じで出力されていた。

f:id:uutarou:20180826230133p:plain

至れり尽くせりですね、って感じ。

で実際実行してみたらどうなったかというと。

f:id:uutarou:20180826230214p:plain

こんな感じになった。(Android端末で実行)

ホーム画面への追加もできて、指定したアイコンがアプリケーションのアイコンとして表示された。

ところが、Auditをしてみたらやたらとスコアが低く謎だったので、要検証かなと言ったところ。

もう心が限界なので寝ます。

どうにも何もやる気が起こらずに家で一日ダラダラしたり本を読んだりしていた。

勉強したり、研究進めたりとやらないといけないことはたくさんあるのです。ただ、なんのためにやるのかを見失ってしまって最近はずっとモヤモヤしています。

勉強は就職した後にちゃんとついていけるようにやる、のかもしれないけど就職してそのあとどうしたいのかが全くわからない。なので、何かつまづいたりすると踏ん張れない。踏ん張るに値する目標がないからだと思う。

目標があれば多少辛くても、頑張れるとは思うのだが、そんなものはないし、考えて行くとなんで生きていかなきゃいけないんだ?とすら思える。

そもそも、なんでエンジニアになるって決めたんだったけ。趣味と言えるもの、好きなものがパソコンに触ったりとかそんなことしかなかったからどこか仕方なく流されてここまで来てしまったのかもなぁ。

もっと、失敗を恐れずいろんなことにチャレンジする人生を送ってくれば、本当はもっと自分にあったことが見つけられたのかもな。


これを読んでます。

これからの世界をつくる仲間たちへ

これからの世界をつくる仲間たちへ

まだ途中だけど、ただコードをかけるだけのエンジニアの価値は近い将来薄れて行くのかななんてことを感じました。