WEBエンジニア勉強会#13 2019/05/24
2019/05/24に開かれたWEBエンジニア勉強会#13に参加してきた。
詳細は WEBエンジニア勉強会 - connpassを参照。
個人のメモ書きだけど、こんな雰囲気だったと知る資料になるかな、と。
資料はWEBエンジニア勉強会 #13 (東京都, 渋谷) - connpassに順次あがっていくようなので、そちらと合わせて読むことを推奨
前座枠 : 令和のWebはどう変わる?Web3.0が目指す世界
- 1.0は初期のWebのこと。静的サイト、閲覧だけが可能なサイト。情報を見るだけ、単方向。
- 2.0は双方向に情報がやり取りできるようになった世界。SNSによる個人交流。APIによるWebアプリケーション間の連携。
- 3.0はブロックチェーンの誕生によって新しく提供された概念。特定のサービス事業者が情報を管理する中央管理型のWebから脱却し、全員で情報を分散管理する世界を目指す。よりセキュアに、よりボーダレスに。Web自体が非中央集権型の文書共有システムなので、原点回帰とも言える。
- これからゆっくり非中央集権型になっていくのではないか、という話。
- Web 3.0と誰が言い始めたのかははっきりしない。海外由来の模様。
オープニング
- Gorw with Gogleのデベロッパー向けの記事を見たか、的な話。
- 教育コンテンツを無料公開しているのでぜひ読もう。
- Googleアナリティクスアカデミーコースなんてものもある。
- 各種SNSアカウントあり。
- 会社以外にも所属するコミュニティを増やす狙い。
- 個人が自由で発表できる場を目指している。
- 会場スポンサー、フードスポンサーなどスポンサーを募集中。
- 開催に関しては個人でできる範疇を超えているので、参加してくれる人を募集中。
LT枠 : 個人でのWEBサービス開発について(仮題)
- WEB専門でやっているフリーランスの個人開発者
- 制作物の紹介
- 猫に邪魔されたい
- meeemo
- などなど
- 個人開発は何をすれば良いのか
- という質問が出てくる背景の考察
- 駆け出しエンジニアの増加
- 非クリエイター業界から物作りに携わりに来た人が増えた?
- なんか流行っててキラキラしてそう
- お金が儲けられそう(誤解)
- そもそもとして「何をしたいのか決まってない」
- 何かをしたいという思いはあっても、自分のことなのに漠然としていてうまく表現できない状態。イラストってどうやって描いたらいいですか、とか、料理ってどうやって作ったらいいですか、とか。
- 何をしたいのか、を一緒に考えることはできる。
- アイデア発想手法はいくつかあるので、そういったものを活用しよう。
- 今すぐできる方法 = 自問自答
- 感情が大きく振れた経験をベースに考えてみる。
- 不便だなーって感じていることはあるか? あるならそれが開発するもの。規模が大きい問題の場合はミニマムに分解する
- 特にそういうものがなかったら、別のことを考える。自分の課題がないなら、他人の課題に注目する
- これが好きって言えるものがあるか?
- あるなら、もっと好きになったり、より楽しむには? 誰かと共有する? 競う?
- それを作ることで誰かの役に立ちたい? そうなりたい、それが目的なら、自分がその誰かに共感できるか? 主軸を自分ベースで考えないとやり切るのは辛い
- 自分が欲しい、助かるからだ。ならば、ゴー。
- それを作ることで注目や評価をされたい?
- それを作ることでお金を儲けたい? そうなりたい、それが目的。マネタイズをどうするか?
- メイン目的ではないかな? お金を主目的にしないなら、他の目的をより大事にしよう
- それは爺分が欲しいと思えるか? あったら自分が使ってみたいと思うものか。自分が必要だと思わないなら、いらないよね
- 何かが思いついたなら、それだけで個人開発の才能あり。何も思いつかなかったら自問自答しよう
自分の性格と制作物の性格
制作物の性格とは
- 自己 - 他己
- 課題解決 - 新規創出
- 満足 - 承認
自分の性格と制作物の性格がずれるとしんどい。
まとめ
仕事だから作った、というのは当たり前。
個人開発だからこその自由度の高さや醍醐味があるよ。
LT枠 : この夏モテたい人のための2stepで起動できるNuxtjs + Rails(ID/PW認証付き)サンプルを公開!
なぜこのタイトルにしたのか
- キーワードでタイトルを自動生成してくれるツールがある
- それを使った結果
Nuxtjsとは
- 細かいことは公式サイト参照
- 色々やってくれるツール
サンプルの説明
- なぜこのOSSを使おうと思ったのか
- サービスを思いついても、すぐに実装できる環境がない
- 新規作成やろうとしても、ブランクがあると似たようなところで躓いて、思考が止まる
- これはすぐに作れる
- サンプルコードはGitHubに上がっている
- Token-base認証を使う
Vuetify
Jest
- facebookがOSSとして開発を進めているJS用ユニットテストのツール
- Node、React、Angular、Vueなど色々な環境で使用できる
- テスト環境の構築やテストコードを書く習慣を作るのは難しい。最初からやったほうが望ましい
最後に
- cloneしてデバッグして感覚掴んでください
LT枠 : データベース2.0
- フロントエンドではなくバックエンドの話
平成はデータベースの時代
- 1990年〜:商用DBMSの普及
- Oracle
- Infomix
- SQL Server
- オープン化やダウンサイジングにつながる
- 2000年〜: OSS BMS登場
- PostgreSQL
- MySQL
でも、平成の実情は
- 去年はこんなことがあった
- サイトリニューアルプロジェクトをやった
- DB性能悪化→インデックス張替え→再テスト→HTTP 504エラー
- SQLの書き換え→デグレっしょんテストが増える
- DBがボトルネックになるのはプロジェクトにとって鬼門かも
- 「青い銀行」の障害もDB由来かも
もし矢口蘭童がいたら?
SQLのおすすめ教材
- SQLを書くこともプログラミングだ
- スキルを身につけよう
- SOFTWARE DESIGN 2019/4のSQL特集
- Web上にシミュレーターが紹介されている
- SQL書き方ドリル
RDBMSのおすすめの教材
- 絵で見てわかるOracleの仕組み 新装版
- 2006年出版、最近になって改訂版がでた
おまけ
- スライドはSlideshareで公開予定
- リンクを埋め込んでいるので是非読んでほしい
LT枠 : Rustでwebassemblyしてみた
- やってみた系の発表になる
- 目次
- 登場人物
- Rust
- WebAssembly
- Nuxt
- GoでWasm
- 他
- 誰向けの話?
- Rustのことはあまり知らない?
- WebAssemblyはあんまり知らない
- NuxtやVueは知っている
- WebAssembly、PWAで使うとどうなるかわかる
- GoでWasmを使ってみたら?
- Rust
- Rust安全
- 所有権、ライフタイムがある
- 変数のスコープが厳密で、値が基本はコピーされず移動する。各変数には所有権と寿命が存在している
- 所有権、ライフタイムがある
- Rustのエラーハンドリング
- 関数が単純な型(boolとかStringとか)を返してくれない
- Rustインストール
- サイト見ながらコマンド叩けば一発
- WebAssembly
- PWA
- Progressive Web Aops
- Rust on WebAssembly on PWA
- wasmファイルをキャッシュできれば、よりネイティブアプリに近づくのでは?
- 多少ファイルが大きくなっても、キャッシュしてしまえば快適なのでは?
- できたよ
- Full Text Searchのパフォーマンスを計測するとwasm 6.2ms js 56.3ms
論文紹介 Language in Our Times: An Empirical Analysis of Hashtags
- instagramにおけるハッシュタグの分析
- The Web Conference
- Web技術全般に関するもっとも権威のあるカンファレンス
- 審査が厳しいので信頼性が高い
- Excuse
- 概要をさらっと紹介
- あくまで論文を読んだ上での私的な感想
- 軽く背景
- ここ5年ほどでオンラインソーシャルネットワークにおけるハッシュタグの人気と重要度は大きいものになった
- 今までのハッシュタグの研究は主にTwitterのデータを使っていた
- 今回はInstagram!
- Instagramの大規模データ・セット
- ハッシュタグ付きの投稿と、投稿をしたユーザの割合の時間変化
- 2010年から2%、5年後には70%
- 3つの観点
- 時間や場所とハッシュタグの関係
- ハッシュタグの意味の変化
- 単語の意味というのは変換していくもの
- ハッシュタグの意味も時間の経過とともに変化していくのではないか?
- みんな大好きWord2Vecで単語をベクトルに変換して類似度を測定
- 1年ごとにハッシュタグをベクトルに変換し、時間の変化とともに意味が変わっているのか検証
- 一般的によく使われる単語は意味が変わりにくいと言われる
- ハッシュタグにおいてはそうでもなかった。相関係数 -0.2
- ハッシュタグの使われ方のばらつきを計算するハッシュタグエントロピーというものを提案
- たくさんのユーザに同じぐらいの頻度で使われているほど小さくなる。
- ハッシュタグエントロピーとハッシュタグの意味の変化の関係を分析
- たくさんのユーザに同じぐらいの頻度で使われているハッシュタグほど意味が変わりやすい
- ヘヴィユーザーが少ない場合はあまり変化がしない、らしい
- ハッシュタグを用いたソーシャルな友達関係の推定
- まとめ
## LT枠 : チーム開発でモチベーションを保つためにCT(継続的ツイート)を実施してみた
- いきなりですがデモします
- Pull requestをMergeすると自動ツイートされる
- きっかけ
- 勉強会での発表をきっかけにチーム開発が始まった
- モチベーション維持問題
- 金銭的なインセンティブがない
- 時間的な制約がある
- コミュニケーションが非同期
- Slackを使っているが、1日単位で返事を待つことも
- タスクを把握できない
- タスクが大きすぎる
- Issueを画面単位で区切ってやってみたら、同じ画面を数週間単位で抱えるのでモチベーションが上がらない
- 色々な工夫
- やってみたい技術を挑戦
- GitHubのIssue駆動
- GitHubのcontributions駆動
- Twitterによる発信
- リモートペアプロ(Visual Studio Live Share)
- CTの機能概要
- GitHubでプルリクをマージした際にツイートする
- ツイートの内容はマージする際に作成できる
- 本来のマージコメントの使い方からは外れる
- 所感
- 運用した結果どうなの?
LT枠 : MySQL8.0にしてみたかった話
- MySQL 8.0にしようとしたら、自動で元の状態に復元された
- 原因
- 新DATETIME型
- 5.6から小数秒の指定ができるようになった
- 古いDATE型があった
- テーブルを先に作り直してから実行した
- 新DATETIME型
- 原因
- DBのファイルが肥大化した
- 調査
- ログファイル
- デフォルトでテーブルに出力
- 保存先が違う?
- 各テーブルの容量確認
- バージョン違いで容量圧迫?
- むしろ減ってた
- 実は、CloudWatch似ないだけでbinlogをとっている?
- がっつりとっている
- ログファイル
- やったこと
- logのパージ期間を短くした
- 効果があった
- 調査
- 5.7から8.0のアップグレードができない
- 何があったか
- RDS側で互換性チェックが走るようになった
- 日本語はまだ更新されてない
- スキップはできない
- PrePatchCompatibility.log
- RDS側で互換性チェックが走るようになった
- 原因
- UTF8
- MySQL内ではutf8mb3のalias
- 将来的にはmb3はなくなる
- utf8mb4にしよう
- UTF8
- 何があったか
- 5.6から8.0ではなく、一度、5.7にしてみるのもあり
LT枠 : SemanticUIを使って工数をかけずにサービス開発
- CSSのフレームワーク
- きっかけはコーディングとフロントエンドを含んだ発注だった
- マークアップ自信ないし、でいざなーでもないし、工数ないし……
- CSSフレームワーク戦国時代
- SemanticUI、Bootstrap、Material Designなどなど
- SemanticUI
- 実はSemanticUIは更新が止まっている。フォークされたFomanticUIというものがある。これから使うなら後者が良い
- DatePickerのカスタマイズ性が高くて良い
- 開発手順
- 紙に完成のイメージ。レイアウト・情報設計
- モックアップ作成
- 開発環境・インフラ構築
- フロントエンド・サーバーサイド実装
- まとめ
雑感
- 19時10分ぐらいに会場入り、その時点で席の半分近く埋まっていた
- 空いていた前のほうに座ったら主催の人と同じテーブルだった
- 壇上近くの席はスタッフや話す人などが座るよね、普通に考えて、うん
- 新しいものを試してみた、というものから、実務でこんな苦労をした話までいろいろ聞けた
- SemanticUIの話の中で「CSSは人類にとってまだ早すぎる」とでてきて、思わず頷いた
- 次7月開催とのこと。スケジュールがあえば、ぜひ参加したい