新人エンジニアがDevelopers Summit(デブサミ) 2019に参加してきました！

自分は2月からエンジニアとして働いています。ありがたいことにデブサミに参加させていただきました。
新人エンジニアが参加して感じたことをこちらにまとめたいと思います。

##まずは参加した感想
・モチベーション爆上がり！
→講演を聴いているうちに開発したくなりました
・興味が広がる。
→講演者の方の熱量のある話を聴くと、自分がまったく興味のなかった分野にも興味が広がりました。
・わからない内容も多い
→聴いても全然内容を理解できない講演も結構ありました！笑
・講演内で知らない用語を調べるだけでも結構勉強になる。
・１日参加すると途中でお腹が減る。軽食だけでは足りない。笑
・無料だしまだ行ったことがない人は一度参加してみては？

##受講セッション
[デブサミ2019、講演関連資料まとめ](https://codezine.jp/article/detail/11383)
→講演資料や関連レポートなどはこちらにアガっています。
###1日目
・Amazonの文化をハックせよ。AWSをフル活用して無人レジの仕組みを作ってみた～横田deGoプロジェクト～
・GitHub Actionsはどのような未来を描くのか : コンテナ技術が開くワークフローのOSS化
・ブロックチェーンでエコシステムはどう変わるのか - コミュニティのこれまでとこれからを徹底議論！
・入社半年での開発ストーリー - 千人規模の顔認証受付サービスを1ヶ月で作った話 -
・ヤフー株式会社におけるフロントエンドの取り組み
・ZOZOTOWNのDWHをRedshiftからBigQueryにお引越しした話
・身近な業務を改善して楽しもう！ ～ 業務ハックLT
###2日目
・ドラゴンクエストXを支える失敗事例
・CI/CDを使い倒して数段上のソフトウェア開発をしよう！
・モンスターストライクにおける負荷対策 ～エンジニアリングチームの挑戦～
・エンジニアの皆さんに贈る最速キャリア戦略
・ゲーミフィケーションエバンジェリストが説く、アプリ開発で見落としがちな「おもてなし」とは～面白さを伝える × 面白く魅せる～
・サーバーレスで最高に楽しめるアプリ開発
・エンジニア人生と定年退職、人生100年時代のエンジニアの生き方

##特に面白かったセッションについて
###ブロックチェーンでエコシステムはどう変わるのか - コミュニティのこれまでとこれからを徹底議論！
・イーサリアムのプラットフォームが強い。
・イベントも活発で、尖った人が多く参加している。
・ブロックチェーン技術に関する進化速度は、フロントエンドよりもさらに早い。３ヶ月経てば当時の技術は古くなり、体感では３週間先さえ見えない。
・ブロックチェーンは総合格闘技で、技術意外にも法律や経済などいろんな知識が必要。
・非中央集権を目指しているがパブリックチェーンはまだ問題が多いので、プライベートチェーンを使用しているのが現状。
・ブロックチェーンはミドルウェアとして優秀。これは間違いない。エンジニアさんも知識を持ったほうが良い。
・これから部分的にブロックチェーンを使ったサービスがたくさん誕生していくだろう。

###・ドラゴンクエストXを支える失敗事例
・青山さんはキングボンビーを初めて世の中に送り出した時のプログラムを担当していた。
・リリースが完了ではなく、リリース後にお客様対応が始まる。
・良い設計・実装をするためには、運用・運営経験が不可欠。
・運営はイベントなど攻め→柔軟性が重要、運用は不具合修正など保守（守り）
→継続性が重要
・要望対応しやすい、修正しても不具合がでにくい。これこそが良い設計。
・全員が同じ失敗をして経験を積むのは大変だから、他の事例の共有から知識を得ることが有効。
・意外とエラーは単純なものだけど、原因を特定することが大変。こればかりは経験が物を言う。
・開発担当者がbtsチケットを切るまでもないと思ったものが後々のエラーにつながった。
・開発ポリシーとして、リリース後の改修は要注意。影響範囲の考察が重要。
・改修する時は影響範囲を明記して、全影響範囲を再検証。影響範囲は極力狭く。

###CI/CDを使い倒して数段上のソフトウェア開発をしよう！
・なぜテストを書くべきなのか
→同じ手順をくり課さないといけない、人では見落としやミスが発生するため。
・テスト実行し忘れ、テスト壊れて動かない、環境依存などをCIが解決してくれる。テストが壊れた時点で検知、マージブロックなど。
・「使われていない自動化は壊れていく」
・CIのメリット
→テスト実行忘れ防止、変更ごとにテスト実行するのでテストのメンテナンス実施を促せる、テスト結果が環境依存とならないよう、毎回同じ環境で実施できる。
・CIを導入する上でいちばんやっかいな問題は「テストがない」。
・テストがなくてもCIをはじめられる。構文チェック、カバレッジ計測等。
・CIはクラウド型とオンプレ型がある。
・CDのDはDelivery？ Deployment？Deliveryは、人間の意思が介在。Deploymentは、自動でデプロイ。
・デプロイとリリースは違う。
→デプロイはコードを本番環境に配置すること。リリースは配置したコードでトラフィックをさばくこと。
・テスト不足への対処
→テストするべき範囲：CI/CDでテスト可能な部分、外部サービス、ビジネス要求試用、トラフィック・負荷
->本番環境でしか確認できない
・リリースしてみないと結局わかない！いかに安全に、迅速に進めるか。

##知らなかった用語
2日目に参加した際に分からなくて調べた用語を挙げてみました。分からないことだらけでした。。。笑
・BTS
→bug tracking systemの略。バグ管理ツール。
・CI
→継続的インテグレーション。テストを自動で実行する仕組み。
・CD
→継続的デリバリー。
カバレッジ
→カバーしている範囲のこと。
・循環的複雑度
→コードの中にifなどの分岐がいくつ含まれるか計算し、その数値によりバグの混入しやすさがわかる。
・ユニットテスト
→単体テスト。機能ごとに正しく動いているかテストする。
・トラフィック
→インターネットを流れる情報量。
・アーキテクチャ
→構造・構成。
エンタープライズ
→法人用。
・水平分割
→同じカラム構成にしたテーブルを複数用意して、格納するデータを分けることでレコードの分散をすること。
・垂直分割
→テーブルをレコードの意味別に分けること。テーブルによる役割分担。
・kubernateとは
→Dockerコンテナ群を統合管理するためのオープンソースのソフトウェア。
・オンプレ
→オンプレミス。情報システムを自社設備内で完結して管理・運用すること。
・resque
→非同期処理(バックグラウンドジョブ)を実現するライブラリ。
・redis
→インメモリDBのひとつ。永続性やデータ型のサポートといった特徴があり、Webアプリケーションの開発と親和性が高い。
・インメモリDB
→ハードディスク上ではなく、すべてのデータをコンピュータのメインメモリ上に展開しながら動作することを基本スタイルとするデータベース。
・nagios
→統合監視フレームワーク。サーバ/ネットワーク/リソース/サービスなどの稼働状況を監視し、異常時に通知を行う。
・kibana
→ビジュアライゼーションのためのツール。
・ビジュアライゼーション
→直接見ることのできない事柄や現象、関係性などをイメージすること
・ゲーミフィケーション
→ゲーム以外の分野にもゲーム的な要素や考え方を応用し、顧客やユーザーとの関係構築に利用しようとする取り組み
・istio
→マイクロサービスをセキュアにマネージメントするためのOSS。
・セキュア
→安全な状態。
・oss
→ソースコードの改変や再配布が自由に認められている無償のソフトウェア。
・CPU
→Central Processing Unit (中央処理装置)の略。プロセッサ (processor) とも言う。プログラムにしたがってさまざまな数値計算や情報処理，機器制御などを行う。コンピュータの司令塔の役割を担う。