完全に理解した人達の「Web技術」Talk #1 勉強会レポート


# 完全に理解した人達の「Web技術」Talk　#1
社内の一部で「勉強会しようぜ！」という声が上がったので、有志３名でエンジニアリングコミュニティを立ち上げました（唐突）

> Easy Easy はエンジニアリングを愛する全ての人の為のコミュニティです！
> 最新技術も大事ですが、このコミュニティでは「みんな知っていることが前提になっている技術」について再度基礎を学ぶことをしていくことを目的としています。
> [Easy Easy - connpass](https://easy2.connpass.com)

さっそくコミュニティ企画の第1段として「Web技術」をテーマにした勉強会を開催。当日の発表資料をもとに勉強会の内容をまとめてみました。

## 開催概要
日時：2020年1月30日（木）19:30～21:30
会場：TOPGATE 神田オフィス Bigtable
> みんなが知っている「筈」のWebの技術に関することのLT大会です！
> ・HTTP
> ・REST
> ・URI
> ・HTML
> ・サーバー
> ・設計
> ・API
> などなど、「Webに関連する技術」ことならなんでもOKです！
> あなたの知ってるWebの技術についての話を存分に語りましょう！
> [完全に理解した人達の「Web技術」Talk　#1 - connpass](https://easy2.connpass.com/event/161840/)

# Web API 完全に理解した 〜黎明編〜 （@unsoluble_sugar）
[株式会社トップゲート](https://www.topgate.co.jp/)のエンジニア@unsoluble_sugarさん（俺）は、身近なWeb APIとしてTwitter APIを紹介。簡単なAPIリクエスト/レスポンスの流れを解説し、奥深いWeb APIの世界へ誘う。
[![thumbnail](https://speakerd.s3.amazonaws.com/presentations/22fe7ad589e24a3ab058e41337ff2573/slide_0.jpg)](https://speakerdeck.com/unsoluble_sugar/web-api-completely-understood-dawn)
[Web API 完全に理解した 〜黎明編〜 / Web API Completely Understood -Dawn- - Speaker Deck](https://speakerdeck.com/unsoluble_sugar/web-api-completely-understood-dawn)

## 概要
- 世の中にはWeb APIを前提としたWebサービスで溢れている
- 公開されているWeb APIのひとつとして[Twitter API](https://developer.twitter.com/en/docs/api-reference-index)を紹介
- 開発者はAPIを使って独自のアプリやWebサービスを作ることができる
- APIリクエストを投げるとJSONレスポンスが返ってくる
- APIで取得した様々な情報を解析してアプリやWeb画面に反映
- GET以外のHTTPメソッドではデータの生成、更新、削除を行う
- Web APIを扱うには多くの用語や概念を学ぶ必要がある
- 体系的に学ぶには「[Webを支える技術](https://www.amazon.co.jp/dp/4774142042/)」、「[Web API: The Good Parts](https://www.amazon.co.jp/dp/4873116864/)」など書籍での学習がおすすめ

# Selenium完全に理解した（@tsuemura）
自動化プラットフォーム「[Autify](https://autify.com/ja/)」を提供するオーティファイ株式会社にて、QA/テスト自動化エンジニアをしている末村 拓也さん。ブラウザ操作自動化フレームワーク「[Selenium](https://selenium.dev/)」のお話。

[![thumbnail](https://speakerd.s3.amazonaws.com/presentations/4612d3e060024ace93e5553557c621fd/slide_0.jpg)](https://speakerdeck.com/tsuemura/seleniumwan-quan-nili-jie-sita)

[Selenium完全に理解した - Speaker Deck](https://speakerdeck.com/tsuemura/seleniumwan-quan-nili-jie-sita)
## 概要
- Webのテストによく使われるブラウザ操作自動化フレームワーク「[Selenium](https://selenium.dev/)」の話
- 様々なブラウザを単一のAPIで操作できる
- 複数のマシンでE2Eテストを並列実行することができる
- サーバを立てる必要があるが、Nodeの[selenium-standalone](https://github.com/vvo/selenium-standalone)を使うと楽
- 実際にテストコードを書く時は、[Selenide（Java）](https://selenide.org/)、[Geb（Groovy）](https://gebish.org/)、[WebdriverIO（Node.js）](https://webdriver.io/)などのテストフレームワークを使うのが一般的
- Seleniumはユーザーが実際に行う操作を自動化するところに重点を置いている
- 並列実行を強力にサポート。実機テストにも強い
- CookieやGeolocationの編集ができなかったりHTTPヘッダの追加などが出来ないといったデメリットもある
- 似たようなツールとして[Puppeteer](https://github.com/puppeteer/puppeteer)、[Cypress](https://www.cypress.io/)、[TestCafe](https://devexpress.github.io/testcafe/)、[Playwright](https://github.com/microsoft/playwright)などがある

# Webで利用している認証系技術と品質・テストのかかわり（[@katsushika_take](https://twitter.com/katsushika_take)）
某ID管理製品のQA/テストエンジニアをされている井関さん。テストエンジニア視点での認証技術のお話。
[![thumbnail](https://speakerd.s3.amazonaws.com/presentations/0e103b65f9404e19b892850dbd5ca414/slide_0.jpg)](https://speakerdeck.com/iseki/webdeli-yong-siteiruren-zheng-xi-ji-shu-topin-zhi-tesutofalsekakawari)
[Webで利用している認証系技術と品質・テストのかかわり - Speaker Deck](https://speakerdeck.com/iseki/webdeli-yong-siteiruren-zheng-xi-ji-shu-topin-zhi-tesutofalsekakawari)

## 概要
- 認証の歴史と仕組み（BASIC/Digest認証、フォーム認証、認証API、SAML/OpenID）
- BASIC/Digest認証：クライアントとサーバのみでやりとりも少ないため、テストは割と単純で簡単。その一方でブラウザや端末ごとの実装が異なるため、ブラウザごとのテストが必要 = 環境パターンが多く結構ツラい
- フォーム認証：自前で実装するので様々なテスト観点が必要、ブラウザ、端末ごとのテストが必要。画面遷移とかのテストも必要でツラい。
- 各社認証API：実装は楽だがブラックボックス化されていることで予期せぬ自体に対応できない。サービスごとにテストが必要。突然のバージョンアップ。いきなり動作しなくなる。ほぼ修正してくれない。いい加減にしろ。
- SAML/OpenID Connect(Oauth)：役者&やり取りが多い = 組み合わせが多く統合テストやシステムテストで死ねる。SAMLは環境構築の敷居が高い。OpenID Connectは認証方式が3つあるのでパターンが多くて泣ける。
- 認証技術は進化し続けている。今後も複雑になっていくため効率の良いテスト実施方法を模索し続ける必要がある


# SPNEGO/Kerberos LT（inoue_katsumi）
[Cloudera](https://jp.cloudera.com/)でエンジニアをされている井上さん。HTTPでKerberos認証する際に必要な[SPNEGO](https://www.ibm.com/support/knowledgecenter/ja/SSEQTP_liberty/com.ibm.websphere.wlp.doc/ae/cwlp_spnego.html)のお話。
[![thumbnail](https://image.slidesharecdn.com/httpspnegolt-200204130952/95/httplightning-talk-1-1024.jpg)](https://www.slideshare.net/kinoue/httplightning-talk)
[HTTP関連Lightning Talk](https://www.slideshare.net/kinoue/httplightning-talk)

## 概要
※自分には難し過ぎて内容がよく理解できなかったため、参考リンクを張るのみにとどまらせていただきます

- [SparkをRESTfulに利用できるApache Livyを導入した話](https://www.slideshare.net/techblogyahoo/sparkrestfulapache-livy-hcj2019-apachespark-apachelivy)
- [【図解】初心者にも分かるKerberos認証とspnegoの仕組み ～SSOのシーケンス,統合windows認証について～ | SEの道標](https://milestone-of-se.nesuke.com/sv-advanced/activedirectory/kerberos-spnego/)
- [[Python] kerberos認証でHDFSへリクエストする - Qiita](https://qiita.com/Esfahan/items/9bab4ffc0ed518872df8)
- [Windows[Python] Kerberos認証でHadoop – INOUE Katsumi at Tokyo](https://katsumiinoue.wordpress.com/2019/09/05/windowspython-kerberos%E8%AA%8D%E8%A8%BC%E3%81%A7hadoop/)


# まとめ
初回ということもあり、自分はかなり緩めのLTをお届けしたのですが、認証・テスト系エンジニアの方々にお越しいただけたことで、濃いお話を伺えたのは嬉しい誤算でした。

**「みんな知っていることが前提になっている技術」について再度基礎を学ぶ**という、本コミュニティの目的にも合致していたのではないかと思います。
[Easy Easy - connpass](https://easy2.connpass.com)

当日の様子はTogetterにまとめていますので、こちらもご参照ください。
[完全に理解した人達の「Web技術」Talk #1 #完全に理解したTalk - Togetter](https://togetter.com/li/1466311)

知っているようで知らない技術のお話は、積極的にインプット&アウトプットしていきたいですね。