英語が好きなSREエンジニアの独り言

I chased and chased after him and never found what I was looking for. But why is it that now I feel like I've finally found him?

最近のSRE活動振り返り(SRE NEXT 2022 / JAWS-UG SRE支部 #3)

はじめに

最近振り返りにハマっているpaprika-mahです!
先日、UoPeopleについて振り返ったので、今回はSRE engineerとしての最近の活動を振り返ろうと思います。

SRE NEXT 2022

今回個人スポンサーとして参戦させて頂きました!
逆に言うと、それだけでして; まだまだSREとして未熟な私はCFPを書くことすら出来ず、中々悔しい思いをしました。 そして実際、登壇を見て、自分はCFP書かないで良かったと思った。

カンファレンスは、3つのセッションが同時進行するのですが、本当にどのセッションを見ようか凄い迷った。 あと、スポンサーブースでSREsの方達と交流出来たり、最高なカンファレンスであった!!!!

SREであれだけ大規模なイベントは国内だと他に類を見ないので、そういった場があるということに本当に運営に感謝である。

運営の凄さ

色々刺激を受けたことが沢山あったが、SRE NEXT 2022で一番感銘を受けたのは運営の凄さだった。 SRELoungeのチャンネルやTwitterにて、スポンサーや登壇者との調整してるところを見て、 あの規模を運営するのは凄いパワーかかるよなーと思いましたが、法人化していたことなどはイベントの後から知った。

また今回Conference chairを務められたnari-sanは、全てのセッションの見どころを呟く等、イベントに取り組んでいるのを見て、 最初にお会いしたときに感じた熱量の高さを思い出した。

Chairトーク・閉会の挨拶で、今後は国内でのSREのプラクティスなどの事例を更に活発化させていき、いずれは次のSRE本を出す事などを目標に話していて、凄い影響を受けた。 自分も別のSREコミュニティを運営している(後述)が、次のイベントをどう盛り上げるか等ばかり考えていて、 SRE本を出すなど、そういった発想を考えたことが無かったので、自分には無い視点だった。

凄い遠い存在に感じた一方で、トーク中に次回は他のSREコミュニティとコラボ出来たら!という趣旨の話もあったので、遠いようで少し近づけた気がした。

セッションについて

各セッションの感想を書いていくと、とても長くなってしまうので、個別の感想はまた別の機会で語れたらなと! ここでは今回のSRE NEXT2022はどんなセッションだったかを振り返ると、SRE Diversityのスローガンに伴い、CFPでのオーダーは以下2つのテーマを含んでいることでした。

Site Reliability Engineering に関すること
実際に遭遇した問題を解決した内容であること

更に掘り下げて話すと、CFPには以下記載があります。

「Site Reliability Engineering に関すること」は必須です。しかし、これは Site Reliability Engineer という職種に限定するという意味ではありません。例えば、SRE のプラクティスを他の職種に応用した DevSecOps のようなトピックも対象に含まれます。
( ...途中略.... )
今回は SRE DIVERSITY というテーマを掲げているとおり、「Site Reliability Engineer という職種にとらわれない」、「最初の SRE 本にあったプラクティスにとらわれない」発表も広く募集している ということを強く強調させてください。厳密に考えて範囲内かどうか……?といったことはあまり考えすぎず、まずはプロポーザルの応募をご検討ください!

ちょうど先日から、アーカイブYoutubeにアップロードされはじめたので、色々セッションを見返しているのだが、 SRE as a Serviceを実現していく話や、ISP事業者でのSRE事例、DevSecOps Daysでも登壇出来るんじゃないかと思うくらい充実したセキュリティにフォーカスした事例など、まさにDiversityという形を楽しめました!

YouTubeアーカイブはこちらですので、興味ある方は是非🙌

JAWS-UG SRE支部 #3

一方、ここからはJAWS-UG SRE支部 #3の話をしたいと思います! 私が運営しているSREのコミュニティです。
今回は「これってSREなの? LT大会」を行いました。

本コミュニティは、AWSを使ってSREのプラクティスを実践していくことをテーマとした支部でして、 今回は第3回目の開催でした。 企画の趣旨としては、第1~2回のレベルが高かったと意見を頂く事が多く、Beginner向け?敷居の低い回をやってほしいというアンケートが多かったので、 これってSREなの?と思うようなネタも大歓迎という趣旨のもと、今回開催をしてみましたが、結果として今回も無茶苦茶レベルが高かったです。本当に神回でした! (登壇者の皆様、ありがとうございました🎃)

LTは以下の流れで進行しました。

  • Session Managerの便利さを伝えたい
  • 失敗を経験したあなたへ
  • 〜建設的なインシデントの振り返りを行うために実践するべきこと〜
  • 全国の中高生がプログラミングを学んでいるCloud9環境の仕組み
  • マイクロサービスのリリースにまつわるtoilを解消した話
  • AWS ChatbotでEC2インスタンスを起動できるようにした
  • AmazonManagedGrafanaを使って、AWSマルチアカウントで監視ダッシュボード構築してみた
  • 信頼性の階層の一段目を積み上げる
  • RDSのモニタリングの話

本当にどれも興味深い内容でした! ドストレートにSREのプラクティスを実践したユーザ事例もあれば、AWSを使って運用を改善(e.g. トイル撲滅)させた話と、どれも楽しめる内容となっております。

こちらについてもYoutubeにアーカイブがあるので、興味ある人は是非!!
あと当日の懇親会が盛り上がり、もう最高だったと感じていたが、後日談で同じ事思ってた人が沢山居て幸福度が高い懇親会だった。

あと、そういえばこの回を見てくれた方から、クラウドエンジニアとSREエンジニアって何が違うの?と良く聞かれました! 以前、Qiitaを書いたので、良ければ参考まで。

※ただ実はこの記事書いたことを少し反省😅
元々このブログを書いてる中で、この2つの違いを自分なりに説明しようと思ったら、 長くなったので別で切り出した次第でした。 ひょっとしたらQiitaを見た人の中に、SREエンジニアはクラウドインフラエンジニアの一種であると誤解を与えてしまったかもしれません...🙌

ともあれ、次回SRE支部#4は、恐らく夏とかになるのではと思ってます。次回もどうぞお楽しみ下さい!!
※これまでのYouTubeアーカイブこちら

その他

SRE NEXT / JAWS以外でSREとしての活動を最後に振り返ろうと思います。

業務では、相変わらずSREのプラクティスを実践するために、まずはインフラ周りや運用業務の再構築をしていると言った状況ですかね。 正直このとき(SRE支部#1でのLT)から、進歩があるかと言われると少し悩ましい今日この頃です。。。

ただSRE NEXTのときはCFPを前にそっとPCの電源を閉じて無念を感じましたが、それでも日々仕事で活動してるわけで、 そこまでAttractiveな話ではないかもしれませんが、日々ネタは生まれてるので、どこかのLTや、技術ブログという形にしたりなど、積極的にアウトプットを出して業界に貢献しようと思いました。


仕事以外ですと、あとはOSS活動ですかね。。。
ECS Exec Checkerや某AWS handsonリポジトリに軽微な内容ですが、修正PRを送ったりしてこの前無事Approveされてました。
どちらも業務で使っているお世話になっているリポジトリで、社内外問わず開発生産性に貢献出来たら良いなと思った次第でした!

大学と仕事とJAWSと、相変わらず色々忙しい日々ですが、夢中になれることがあるって良いなと改めて日記を書いていて思う。
別媒体でやっている技術ブログも積極的に更新してアウトプット出していきたいと思った次第でした!!

【UoPeople】CS1103(Programming2)を振り返る

はじめに

今季は社会人大学生の忙しさを忘れのんびり過ごそうと思い、履修登録せず休みを満喫してました。 束の間の休息もおわり、ぼちぼち次termがやってくるとのこと、その前にCS1103を振り返りたいと思います。

CS1103は、 敗北した感じと、求めていたものが手に入った喜びを感じられるカリキュラムで、 なんと表現したら良いのか、履修中は恋人と時限爆弾をいっぺんに手に入れたような気分でした。

Disclaimer

この記事の趣旨は個人的な振り返りであり、自分の備忘録を兼ねた只の日記です。 一方で、役に立つか分かりませんが、これから履修する人の何か参考になれば幸いです。

CS1103とは

改めてCS1103がどんなカリキュラムだったのか見てみましょう。 (シラバスは公開情報なので抜粋)

This course builds on the Introduction to Programming 1 course and teaches a more highly developed Java programming language with features beyond the basic concepts covered in the first programming course. A large part of the course will be devoted to more advanced building blocks such as recursion, linked data structures, and Java's Collection Framework. In addition to this, you will learn more about designing and coding complex, robust, and efficient programs. And you will be introduced to a professional programming tool: the Eclipse Integrated Development Environment.

はい、JavaでRecursionやらData Structureなどの知識とテクニックを身に着けたり、はたまたCollection等のFWの使い方を学ぶコースのようです。 UoPeopleにてプログラミングのカリキュラムはまずPython(CS1101)で基礎中の基礎である変数とかIf文とかを学び、Java(CS1102)にてOOPを学び、そしてCS1103を受講というステップで来ているはずで、私もこの流れで受講しました。

Javaについての私のバックグラウンドを話すと、新卒入社した某SIerにて新入社員研修で学び、その後Java SE8 Silverまで会社命令で取得した(なお、実務ではほとんどやらず)ので、多少は自信はある状態で挑みました。

受講してどうだったのか

はい、舐めてました。普通に敗北を味わいました。一応単位は取れましたが、ほぼ毎週納得いく形で提出物を仕上げられなかったです。 ただ一方で、自分が掘り下げて勉強したいと思える分野がいくつも含まれて、CS基礎を体系的に学びたいと考えていた私には、毎週の学ぶ内容は興味深く楽しかったです。

そして、週が進むにつれて、コースについて行けなくなりました。無念。。。。 理解が浅く、納得いかない形で終わらせてしまった部分は、少しずつ復習していこうと思います....!

具体的にどんなことを学んだかを書いていくと;

概ね以下のトピックを学びました(※印象に残ってるとこをメインに抜粋しててMECEでは無いです)

  • 例外処理
    • Try-Catch
  • 計算量
    • 漸近解析; 𝑂 Ω Θ
  • 再帰、ソートアルゴリズム
    • liniar search
    • quick sort
    • bubble sort
    • recursion
  • ADT(Abstract Data Types)などデータ構造
    • Stack and Queue
    • List
    • Map
    • Hash
    • Set
    • Postfix
    • Tree traversal
  • ファイル・ネットワークなどのI/O処理
  • デバッグ技法
  • ソケットプログラミング
  • MVC Design Architecture
  • Collection Framework
  • Generic Programming
  • GUI Programming
    • Swing
  • Mandelbrot Set

MVC、ソケットプログラミング、I/Oや例外処理、デバッグなどは馴染みある分野であった為、ストレスなく取り組めたし、実際のLab(プログラミング課題)では、簡易Webサーバー実装したり、BNF構文解析を利用した英文自動生成プログラムを書いたりと、楽しむことが出来ました。

一方で、辛かったのは、計算量、ADT、Generic、Swingあたりですかね....Orz 満足する結果で終わらせることが出来ず、Labも完成に至らず提出するなど、課題が残る形となってしまいました。

What troubles

一言でいうと、自分のキャパが足りてないという話ですね。。。。 なんか自分の無能っぷりを晒すことになるかもしれませんが、何が問題だったのか、やり残してしまったことと、今後どうストラテジ立てていくかをありのままに書いてます。

悩み1: 有限な時間でどこに注力するか

UoPeopleは毎週提示される課題の量が多い。そして多くの方が社会人学生の為、毎週コミット出来る時間は限られている。そういった環境の為、提出する必要の無いOptionalな部分のReadingAssignmentやLabは後回しにしたり、取り組まないという人は一定数居ると思います(優先度的には、①Peer Review -> ②提出課題 -> ③提出課題と無関係な部分やOptionalな部分の学習を深める という順番の方が多いと思います)

この取捨選択を自分は完全に間違えて詰んだ。例えばUnit1のReadingAssignmentの最後に漸近解析などの計算量問題があったが、その週のLabが簡単だった(ソートの実行時間比較)のと、きっちり理解しようとすると、本腰入れて数学の知識(対数とか極限とか)が必要そうだなーと思い、一週間でマスターできる内容ではないと思い、分からないところをそのままにしてしまった。

そして、この判断が地獄を見ることになる。その後のADT、データ構造やアルゴリズムに纏わる内容に入るにつれて、ぼんやりとしか理解してない部分が徐々に広がっていき、分からないに分からないを重ね、最終的に手に負えない状況となってしまった。 シラバス見れば計算量の理解が必要であることに薄々感づいていたが、追われるユニットの締め切りのことしか当時は頭になく、考えている余裕が無かった。

因みにこのしくじりエピソードは、計算量だけではない。Swingでも同じことを経験した。 自分は新卒最初の研修でJavaを死ぬ気でやったあと、配属先ではVB.netで開発しており、3年ほど保守/運用をやっていたので、GUIデスクトップアプリは慣れている。そして、私はこの辺の技術に全く興味が無く、好きになれず(新卒〜3年間をWeb系の世界線とは程遠いWinodwsエンプラの世界で過ごしたことをdisadvantageに感じている)。。。

従って、実はCS1102のときから、JavaFXもSwingも時間を使い学ぶことに抵抗があり(実際、テキスト読むだけでもそこそこの英文を読むので結構疲れる)、流し読みで適当な理解で進めていた(今となっては猛反省)

そして、Unitの後半はGUIアプリをベースに、内容が進んでいった為、課題で分からない部分があると、もうどこで躓いてるのか迷子になったりした。とどめはこの章の最後にマンデルブロ集合が出てきたが、まさにこれまで学んできたことの集大成という感じで、もう分からないの大爆発で完全に敗北を味わった。好きなことを学んでたはずなのに、次第に膨らんでいった自分の中の何かが時限爆弾として爆発した瞬間であった。

悩み2: 英語力足りない問題

薄々気付いていたが、自分は英語力足りないのだと実感。これまでそのことにずっと目を瞑っていたが、多分Unit4~5あたり?、Generic/Collectionを学んでいるときだったと思うが、心の中で実力不十分なことを認めた。これまでCS1101~1102で履修した内容はほぼ全て知ってる内容であった一方、この2つ(Generic/Collection)は馴染みない概念で、多分UoPeopleで初めて学んだ。何となくの理解でテキストを読み終わり、いざLabに入ると何をすれば良いのか分からない。

多少の言い訳をすると、正直利用している教科書はほぼ活字で、初めて登場する言葉もそこそこ深い粒度で解説される為、分かりにくい(例えるならば伊藤和夫先生の英文解釈教室みたいな、もう素晴らしいバイブルなんだけど、初学者が読むと難解に感じるあの感覚に近いと思う)。そして、UoPeopleあるあるですが、Labがいまいち何をすればよいか分からない(一例を挙げると、チューリングマシンを作成する課題があったのですが、チューリングマシンの説明もほどほどに、仕様と一部のサンプルが与えられ最初何をしたら良いのか分からなかった。)

等と言った形で多少の言い訳を並べる言葉があるのですが、それでも同時期に履修されていたTwitter繋がりの非プログラマ/外資勤務の会計士の方が、健闘しながらも進捗を出しているのを見て、すごく焦りを感じた。

そして、認めたくなかったが、これまでサクサクReadingAssignmentを読めて、Labも実装出来ていたのは、英語を読めていたのではなくて、元々知っている知識があったから、それが多くを補ってくれてたんだなと、感じてしまった。

悩み3: 普通に内容のレベル高い問題

正直本当にこれ大学で初めてJavaを学ぶ人間の後編カリキュラムなのか?
アメリカのCSを専攻する学生たちは早い段階からこんなレベル高いことやるのか??と思いました。正直今でも疑問です。

私事を話すと、少なくとも新卒研修での学習も(チームでBlackJackを作りました)も、Java Silver試験もこんな難しくは無かったし、日本の情報学部出身の友人に聞いても、きっとJavaの授業でここまで高度なことをやってないような・・・。 そう思ってます。 以前CS1101が一緒のグループであり、fabulousな投稿をしていたUoPeople仲間も同時期に本科目を履修されていて、その方も難しかったと以前言っていたので、少なくともそう感じたのは僕だけじゃなくてちょっと安心。

どういうところが辛かったのか一例を挙げると、いきなりCollection Frameworkのヒエラルキーを見て、それぞれのユースケースを英語で一気に読み込んでも、いきなりLabで使い分けたり、課題指示からアルゴリズム考えて実装するのは、正直かなり大変だった。

最後に件のマンデルブロ集合が出てきたときにはもう鼻血出そうになった。もうこのときには、Javaが分からないのか、英語が分からないのか、数学が分からないのか、もう分からなかった。(今、改めて調べてみたけどやっぱり分からない)

これから

実は今季学業はお休みした理由に純粋な英語学習と、本カリキュラムの復習をしたかった為でした。 ただ何か色々気付いたら、後者の方を後回しにしてしまったということもあって、まずは復習がてら日記書いた次第でした。

幸い、次Termの履修はWarm upの意も兼ねて緩い感じの選択にしたので、並行して学習を進めていこうと思います。

おわりに; これから受講する人へ

読み返すと、すごく難しい印象を与えてしまったかもしれません。ただとりあえずマンデルブロ集合とか漸近解析とか分からなくても基本的に単位は取れる場合が多いと思います。 Discussion ForumとLearning Journalはさほど難しくないですし(CS1102と同じ雰囲気です)、Labもすべての週が難しいわけではないです(一番易しいのだとEclipseデバッグする課題とかありました)

ただ例によってインストラクターガチャはあると思っていて、自分はLabがボロボロだったけど、インストラクターがかなり緩い人だったので、それに助けられた部分もあると感じてます。

あと自分はエンジニアとしての経験が8年あるが、SIerにてプライム案件を行う(大半の業務は設計書・手順書の作成など、上流工程や管理業務)エクセルパワポエンジニアだったので、今回のカリキュラムは本当に苦手な分野でした。なので、Javaで実装をガリガリやってたプログラマならそう苦労しないのかもと思ってます。

また大学なので、当然学ぶ為に来てるわけで、仕事でプログラムを書かない職業の方も多くいらっしゃると思います。日本語の書籍を手元に置いておくと良いと思います(Javaでもアルゴリズムでも図書館に行けばたくさん良書があるはずです)

現場からは以上です😇😇😇