英語が好きな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?

JAWS-UG SRE支部の運営に参加したこれまでの活動を雑に振り返る

JAWS-UG SRE支部の軌跡を辿ってみる

本記事は SRE Advent Calendar 2022 16日目のエントリーです🎄🎅🎁

昨日は、北浦(@kitta0108)さんのJAWSとNRUGのSRE支部を設立した思い出でした。

そんな流れもあって、今日はJAWS-UG SRE支部の軌跡を振り返りたいなと思います。 完全にただの個人的なポエムになりますが、SRE支部ってどんなことしてるのだろう?とか、あるいはコミュニティ活動に参加することに興味がある人など、何か参考になれば幸いです。

はじまり

私にとってのSRE支部のはじまりは、第一回目開催にてLTしたところから始まります! (JAWS-UG SRE支部設立のきっかけなど、これ以前のエピソード0な情報は、是非昨日の北浦氏のブログを見てほしいです)

きっかけは、あんどぅ(@integrated1453)さんに後押し頂いたところから始まり、当日はビクビクしながらも勇気を出して登壇したの覚えてます。

きっかけのやりとり

尚、そのときの私の登壇資料はこちらですので、興味あれば是非🙌

※SREについてSRE本などの学術的な知識ですらままならない状態の頃の自分でしたが、それでもこれからSREを初める人などの方に参考になれば幸いです。

また振り返れば、あんどぅさんとは、このやり取りのほんの少し前にスタディサプリさんのSRE meetup系イベントで知り合い現在に至ります。 このときも勇気を出して、懇親会に参加してみて、同じく参加されていたあんどぅさんと、また主催側の皆さんに仲良くしてもらったのですが、これはもう去年の話なのかとか思うと、本当にnostalgicです....!

そして、第一回目がおわり、日常が戻ってきたころ、 同じくLTをされたみのるん(@minorun365)さんが、SRE支部へのjoinを志望しているのを見て、ここでも勇気を出して自分も乗っかりました。 ここでの勇気は、当方、社会人大学生の手前、時間や体力の制約から、コミュニティ活動を続けられるか不安がありましたが、本当にやって良かったと思っております。

コミュニティ活動に興味を持っているが同じように悩んでる方は、是非、アグレッシヴな姿勢を取って貰えたらと思うのと、また本ブログが参考となれば嬉しいです。

さて、自分語りはこの辺として、実際にSRE支部にjoinしてからの活動を振り返りたいと思います。

JAWS-UG SRE #2 ~「突撃! となりのSRE」~

この回は「突撃! となりのSRE」をキャッチコピーに、よその会社のSREはどのような取り組みをしているのかみんなで覗こうという趣旨でした。 結果、豪華なゲストによるLTとパネルディスカッションによる意見交換は大きな反響を呼びました!

そして、Lambda負債というバズワードを生んだ回でもあって、大いに盛り上がりを見せました!

ただバズリすぎて?!(twitterとかでLambda負債という言葉を見かけるようになりました)、ひょっとしたら一部の方には、Lambda=負債という風に思われてるかもしれないので、ちょっとついでに語りたいなと。

まずランタイムのEOL対応をしなければならないのは、Lambdaに限った話ではなく(確かにこの界隈はNode.jsが好まれるので、毎年秋にupdateやりがちで頻度高めですが)。そしてコードを書く以上バグを生み出す可能性を気にしなければならないので、ならLambdaかマネージド・サービスの選択なら、マネージドを使うメリットが注目されがちですよね。という発想があるのかと思います。

そしてLambdaに対して、CI/CDやローカル環境の整備などが必要な場合、この界隈はコンテナ周りの技術に比べて知見も事例も少ないから、属人化や無人化などなりがちで運用面で苦労するよねというところですかね。

簡易的なETLやChatOps、AWS上でのAPIコールなどを利用したイベント駆動でのアプリケーション開発では主役である(と思ってます)Lambdaですが、確かにFargateとLambdaって何が違うの? Fargateで良くね?などの意見があったり、SAMなどのエコシステムもCDK,Terraformほど知名度は高くないのかもしれません。

ただreInvent2022では、Lambda周りのupdateも激しかったこと*1もあり、来年こそはサーバーレス元年となり、もう少し脚光を浴びてほしいなと思ってます!

と、Lambdaの話が長くなりましたが、この回は一つの言葉を取っても、みんなが色んな議論を重ねた親しみある回になってます! 是非見て頂けたらと思います。

アーカイブこちら

JAWS-UG SRE #3 ~ これってSREなの? LT大会 ~

この回のテーマは、「これってSREなの? LT大会」です。 多くの方が登壇してくださり、大いに盛り上がりを見せました!

因みにこの回のテーマの由来ですが、前回ゲスト様がSRE界隈で活躍されてる会社様のマネージャー層という中々インパクトが強かった為、 もう少しlightな、リラックスして聞けるような回を目指したくこのようなタイトルにしました。 が、この回も多くの方がハイライトを作り、見応えしかない回となりました!

この回でのバズワードはやっぱり、EBS破産 ですかね...! Cloud9を使いすぎて、EBS料金がえらいことになったという話でしたが、あるあるなのか多くの共感を生みましたね! 因みにtwitterで調べたら、2014年にこの言葉があったようで、わりと昔からあるあるのようですね(笑)

EBS破産についてググった

その他にも、AWS Chatbotを使ってchatOps化した話や、ポストモーテムに取り組んだ気付きなどなど、SREsの皆様の現場での事例を感じ取れる興味深い内容となってます。 前回が、組織の話にフォーカスした大枠の話が濃かった分、ここでの現場レベルでの一つのタスクを取り上げたような事例は本当に参考になると思いますので、是非ご視聴頂けたらと思います!

アーカイブこちら

追伸: 個人的な地味に料金が高くなってしまうあるあるは、NAT gatewayですかね。 起動/停止制御が出来ないことが個人的な苦手な部分でして、局所的な使い方をする場合はNATインスタンスの利用に私は積極的です。使いたいときだけであれば、メンテナンスなどの運用負荷もある程度リラックスして身構えることが出来ますのでオススメです。

JAWS-UG SRE #4 ~ 高負荷対策祭り ~

今回はかなりテーマを絞ってますね! みんなが高負荷対策どうやってるか? という観点で、今回も豪華なゲストが喋ってくれました!

セッション枠として、LOWYAさんにおける高負荷対策ということで、GraphQL cachingの事例についてお話頂いてます。 GraphQLとCloudFrontの相性の悪さを乗り越えて、cacheさせた事例、ProtoTyping Programを使ってみた体験など、かなり貴重な体験話です。

因みに私もGraphQLは使っておりますが、レイテンシや高負荷に対する可観測性の確保など、ちょっと苦労してます。 Datadog APMでモニタリングしており、メトリクスは確保しているのですが、queryの中身まではシュッと見ることが出来ず、どのリゾルバが戦犯だったのか確認の初動が遅れがちです。来年取り組みたいなと思いました。

そして、LT側も素晴らしいですね。LTの皆さんスライドが面白かったり、デザインオシャレだったり... どの事例も苦労と成功体験が詰まっており、SREsの腕の見せ所が光ってました! Producer-Consumer や、メディア系サービスにおけるサーバーレスアーキテクチャデザパタの知見が深く、オススメです。

そして今回のバズワードは、kusodeka_table ですね。 もうみんな狙ってやってるんじゃないか?と思うくらい、キャッチーな一発をブチ込んできますねw 調整パワーやら、セルフ暖気など、相変わらず名詞2つ繋げた造語が飛び交ってました...!

ただ一番ウケたのは、やっぱkusodekaでして、BIが重いクエリ投げて、メインサービスが挙動不審になるは、あるあるすぎて! またキャッチーなスライドの力もあって大ウケでしたね!

kusodekaに対してどう向き合っていくか、みんなの想いがあってこそ、共感が生まれたバズワードではないでしょうかw

アーカイブこちら

JAWS-UG SRE #5's just around the corner!

はい、ここで宣伝です! 次回#5は、 2023年1月27日(金)になります!!!!!!!!!!!!!!

テーマはコスト回ということにして、円安と戦うSREs達と和気あいあいと盛り上がれたらと思ってます。 本ブログでも、触れておりますが、きっとEBSやNATなど、気付くとかさむ料金に苦しんでる方なども多いのでは無いでしょうか。 また今回の円安でコストカットに取り組でる方などの登壇もお待ちしておりますので、興味ある方は是非conpassの方でJAWS-UG SRE支部に参加頂き、 公開されるのをお待ち頂けたらと思ってます!(年内には公開出来ると思ってます)

因みに初のオンサイト開催(とおそらくオンラインも)となりますので、少し緊張してますが、 次回はどんなバズワードが生まれるのでしょうか?? 乞うご期待です!!!!!

JAWS-UGのconnpassはこちら

まとめ

と、SRE支部の取り組みを振り返ってきました!!

冒頭の通り、社会人大学生でありながら、コミュニティ活動をすることに対して大変なのではないか?という不安もありましたが、 結果として本当に良かったと思っております。

今年活動していく中で思ったことでもあるのですが、毎週のSRE支部の定例が今年一番楽しい時間の一つでした! 社会人大学生というのは、限られた時間の中で学業にコミットしなければならず、しんどい日も多いです。 computer scienceを勉強することは楽しいですが、仕事で脳のリソースを使い切って疲れてる日も、あるいは気分が乗らなくても、 締切を守るべくやらないといけない日も多々あります。

そんなとき、和気あいあいと仲間と集まり、日々のSREsとしての活動を話せる時間は本当にpreciousな場です。 お互いに刺激を受けたり、ときには修学旅行の消灯後みたいなテンションで恋バナをしたり(独身の私の浮いた話に皆さん付き合ってくれました😇)、 仕事で味わったぴえん🥺な話をしたり、思えば、私にとってのSREとしての活動の中心はここでした!

来年もSRE支部の活動とそれを糧に、諸々更なる飛躍を進めます。

最後に

因みにSRE支部の見どころは、懇親会だと自分は感じてます。 登壇された方や、視聴された皆さんとパブリックな場では話にくいようなprivateな話なども語ったり、活発に交流しております。

懇親会に参加するというのは中々ハードルが高そうに感じる(実際、自分も知り合いの居ない勉強会で懇親会は、参加した先の展開が読めないのでちょっと緊張があります)と思います。

なので、ちょっと簡単に我々が普段どういう懇親会を開催しているか紹介しますと、ZoomのシャッフルMTGを使い、4~5人程度のグループに分けて、20分程度のスパンでシャッフルするようにして親睦を高めております。 これは、シャッフルのタイミングでおいとまする事もできて、途中退場などもやりやすくて良いやり方なんじゃないかなと思ってます!

なので、是非皆さん参加して頂けたら嬉しいです!

※これまでonline onlyでしたが、今後はオンサイトでの開催もしていくので、オンサイト版も是非楽しみにしてもらえたらと思ってます!

それでは、JAWS-UG SRE支部でまたお会いしましょう!!

最近の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でもアルゴリズムでも図書館に行けばたくさん良書があるはずです)

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