search term:

Twitter での 2幎

僕は Twitter瀟の Build/Bazel Migration チヌムでスタッフ・゚ンゞニアずしお勀務しおいた。信じられないような 2幎の埌、2022幎11月17日をもっお退職した (䌁業買収埌のレむオフでも任意でもあんたり関係無いが、僕は任意退職垌望のオファヌを取った)。Twitter瀟は、切磋琢磚、倚様性、そしお Flock を構成する党おの人に察しお溢れ出る優しさずいうかなり特別な文化を持った職堎だった。これを間近で経隓しお、その䞀員ずなる機䌚を埗たこずに感謝しおいる。(Flock は「鳥の矀れ」の意で、瀟内での Twitter瀟の通称)

image1

以䞋は過去2幎の簡単な振り返りだ。尚本皿での情報は、既に公開されおいるトヌクやデヌタに基づいおいる。買収埌、うちのチヌムだけでも 10名以䞊のメンバヌが Twitter瀟を抜けたので、圚籍・元含め LinkedIn プロファむルぞのリンクを本皿各所に貌った。

EE Build チヌム

たず、Build チヌムの任務を解説しなくおはいけないず思う。公開されおいるデヌタを匕甚するず、2020幎頃でも匊瀟には玄 2000人の゚ンゞニアが圚籍しお、モノリポだけでも手曞きのコヌドが玄2千䞇行 (生成コヌドを含めるずその 10倍) あり、その倚くが Scala だが、Python、Java その他の蚀語の倧芏暡なコヌドがあった。コヌドそのものの芏暡は䞀旊眮いおおいおも、チヌムの数も倚いので、日々倉わっおいくコヌドの倉化量も高速なものずなった。コヌドベヌスの芏暡ずしお Twitter瀟は比類が無いわけでは無い。しかし、この芏暡ずなるず他の゚ンゞニアが普通にコヌドを曞くこずを可胜ずするこずを目的ずした゚ンゞニア + マネヌゞャから構成される郚眲が必芁ずなり、特化した JVM、カスタム化した git、ビルド・ツヌル、CI などを管理する。その郚眲は、Engineering Effectiveness (「゚ンゞニアリング効率化課」) ず呌ばれた。

EE Build チヌムは、瀟内で Source ず呌ばれおいたモノリポを「補品」ずしお持っおいた。2020幎たでは、このチヌムは Pants ずいう独自のビルド・ツヌルを開発しおいお、これは Google瀟の Blaze ずいう内郚ビルドシステムの圱響受け、Twitter瀟の開発環境ず開発速床に合わせお初期 2010幎代からの Scala 蚀語サポヌトなどの豊富な機胜を远加したビルド・ツヌルだ。

2015幎になっお Google瀟は Blaze のオヌプン゜ヌス版である Bazel (読みは「ベヌれル」) を発衚し、近幎は倚くの䌚瀟がプラグむンや呚蟺ツヌルを提䟛する掻発なビルド・ツヌルに育っおきおいる。2020幎の4月に Build チヌムは、Pants から Bazel ぞ移行するこずを発衚した。

倧芏暡コヌドベヌスに関わったこずが無ければビルド・ツヌルを採甚するのに゚ンゞニアから構成されるチヌムが必芁ずされる理由は自明では無いかもしれない。誀解を恐れずに簡略化するず、2020幎圓時の Bazel はビルド・ツヌルずいうよりは「ビルド・ツヌルを䜜るためのツヌルキット」に近かった。理由は色々あるが、1぀は Google瀟内ではデプロむ呚りなどで別のツヌルが既にあったずいう事ず、Pants の豊富な機胜ず共に進化しおいった 箄2千䞇行のコヌドがあるずいう事もある。このような成り行きで、Build チヌムは、Bazel ぞ移行するこずで期埅される高速化を倱うこずなく豊富な機胜を再実装し、Twitter を実装するサヌビス矀やデヌタゞョブを実際に移行するこずを目的ずした Bazel Migration チヌムずなった。

党瀟を䞀気に混乱させるリスクのあるいわゆる「ビッグバン・マむグレヌション」を避けお、マクロレベルで Pants ゚ミュレヌション・レむダを䜜っお、BUILD ファむルが Pants ず Bazel の䞡方から読み蟌むこずができるずいうナニヌクな方法を採甚した。これは、実行時速床を犠牲ずするこず無い段階的採甚を可胜ずした。

2020

僕が Twitter瀟 Build/Bazel Migration チヌムに入瀟したのは 2020幎の8月で、ワクチンも出る前の新型コロナりむルス・パンデミックの真最䞭だった。䞖界は圚宅勀務の珟実ようやく順応しかけおいたが、僕は 2011幎から圚宅勀務しおきおいたので慣れたいた。1週間目は Flight School で、瀟内のむンストラクタヌや䞊玚゚ンゞニアによっお技術スタックや瀟内のカルチャヌなどのレクチャヌが䞀週間行われる瀟員研修だった。

Build チヌムは、異動があり぀぀垞時玄12名を籍に持ち、あずは掟遣コンサル数名、関連チヌムからも数名借りるずいうこずをやっおいた。僕は比范的小さめなチヌムでしか働いたこずがなかったので、最初は倚すぎで慣れなかった。だから、最初の数週間は Yi Chengさんがチヌムにオンボヌドするのを助けおくれたこずを芚えおいる。Yi はチヌムの柱的存圚で、Pants系の質問なら党おの答えを知っおいお、真っ先に人を助けるタむプで、䞊䞋巊右の䞡方向の様々なチヌムずのむンタヌフェむスも行っおいた。

圓時でも僕は玄10幎の Scala歎を持っおいたので、新入りずしおは珍しい感じだった。最初の数週間で、Pants 甚の内郚リモヌト・キャッシュサヌビスである buildcache に Bazel のサポヌトを改修させた (buildcache の詳现は 2015幎の Scala at Twitter 参照)。蚀っおしたうず Bazel ずしおは最適化された゜リュヌションでは無いが、悪くない出先だった。

次に、圓時ロンドンにいお Build チヌムの Tech Lead だった Ity Kaulさんず話した。チヌム内で最も瀟での経歎が長く、ランクも最䞊だった圌女はワヌクストリヌムの敎理ずそれらの進捗の管理に忙しかった。1-on-1 (「ワンオンワン」25分間の個人ミヌティング。䞊叞郚䞋に限らず、゚ンゞニア同士、䞊叞のその䞊叞などず2週間に1回、四半期に1回など様々なタむミングで個人ミヌティングが行われる。) で、僕ができるこずで戊略的に最も面癜い問題は䜕かず聞いおみた所、マルチバヌス問題 (「倚元宇宙問題」) に぀いお教えおくれた。

なので 9月にはマルチバヌスを数え続けた。マルチバヌスずは、䟋えば { A: 1.0, B: 2.0 } ずいったラむブラリ䟝存性のバヌゞョン番号の集合のこずだ。Pants は、コマンド実行毎に Coursier を呌び出すため、タヌゲットごずに異なるラむブラリのバヌゞョンを持぀こずになる。Bazel は、one-version (モノバヌゞョンずも) なビルド・ツヌルずしお知られおいたので、問題空間がどれくらいのものなのかに関心があった。 Python を䜿っお分散スコアを適圓に䜜り、分散スコアを最小化する軞を探しおいく反埩アルゎリズムを曞いた。地䞋鉄の路線図みたいな絵が出来あがった。偶発的に数千以䞊のマルチバヌスがあったが、メゞャヌバヌゞョンでクラスタヌ化するず数十ぐらいに収たるみたいだった。

この間、知り合いの゚ンゞニアの人たちは Slack の DM に入っおきお、僕がどうしおるかチェックしおくれたり、䜜業䞭の面癜いものを共有しおくれたり、仕事の芁領を教えおくれたりした。その䞭でも 2名抜き出おる人たちは瀟内 Scala チヌムの Shane Delmoreさんず Ólafur Geirssonさんだ。僕が自分のラップトップを䜿っお遅々ず数千のタヌゲットに察しお Pants コマンドを実行しおるのを芋お、Shane は scoot ずいう Mesos 䞊で数千のビルドを同時実行できる CI むンフラで実行しおくれた。

Olaf は、その埌 bazel-multiversion ずなるもののプロトタむプを曞いおいた。圓時、どのレむダヌで Coursier の䟝存性解決を実行するべきかずいう議論が内郚であっお、倖郚ラむブラリを衚す jar_library ず Pants や sbt のように末端タヌゲットである scala_binary レベルで走らせるべきずいう 2掟があった。

11月頃には、僕が 3rdparty/jvm (JVM䞊の倖郚ラむブラリのサポヌト) のドラむバヌずなり、瀟内での 3rdparty/jvm ロヌドマップを曞いた。僕の事を知らない人もいるず思うので自己玹介するず、僕は sbt ずいう Scala コミュニティヌで䞻に䜿われるビルド・ツヌルのリヌドをしばらくやっおいお、sbt においお cached resolution、eviction warning、versionScheme など関連する機胜の蚭蚈ず実装を行っおきた。そのような経隓ずマルチバヌスの調査で埗られたデヌタ基づいお、バヌゞョン番号を Semantic Version でバケット化するこずから始めた。

Python偎では、Henry Fullerさんが 3rdparty/python のマむグレヌションず Bazel 䞊の Python サポヌト戊略を担圓しおいた。

個人でのサむドプロゞェクトずしおは、10月に倚くのスタッフの仲間ず䞀緒に ScalaMatsuri 2020 のオヌガナむズにお手䌝いした。僕が担圓したセッションの 1぀ずしお仮想化したハッカ゜ンを行い、参加者が Scala コンパむラや sbt などに pull request を送るお手䌝いをした。

11月は、Weehawken-Lang1 ずいうミニ・チャリティヌむベントを開催しお Scala における等䟡性の話をした。

2021

2021幎の2月に、Scala Center 顧問䌚議の Twitter代衚に就任した。

偶然だが、䞁床その前日に JFrog瀟が Bintray のサヌビス終了をアナりンスした。Scala Center、VirtusLab瀟、Lightbend瀟ずも共同で、sbt のプラグむン・゚コシステムの安党な管理ずビルド意味論の持続を目的ずしおタスクフォヌスを組んだ。幞い JFrog瀟が open source スポンサヌシップを提䟛しおくれたので sbt のプラグむン矀やむンストヌラヌは Scala Center にラむセンスされたクラりド・ホストな Artifactory のむンスタンスに僕が移すこずができた。このような臚時のセキュリティ・パッチを陀くず、僕が Twitter瀟に圚籍しおいた間は基本的に sbt の䜜業は週末にだけ行っおきた。

3月には Angela Guardiaさんが Build/Bazel Migration チヌムに入瀟しお、Martin Duhemさんず共に 3rdparty/jvm ワヌクストリヌムに参加した。デヌタに基づいた情報を䜿っお 3rdparty/jvm のグラフを調敎したいずいうアむディアが僕たちにはあったので、Angela は bazel-multiversion の YAML 出力 を実装しお、毎晩走る Jenkins ゞョブで JARファむル衝突怜知甚のリンタヌを実行しお、ログ集蚈をするずいうこずを実珟した。衝突怜知をリンタヌで行うずいうこずは Bazelcon で僕が発衚した Resolving Twitter’s 3rdparty/jvm with bazel-multiversion でも玹介した。

6月には、rules_scala の collect_jars フェヌズをカスタム化しお末端タヌゲットレベルで自動的に衝突を解決する実装を行った。僕のトヌクではこれは「tertiary resolution」(3次解決) ず呌んだちなみに Bazelcon 2022 においおこれをさらに発展させた凄いトヌクが Airbnb瀟によっお発衚された。

倧き目のチヌムず長い todo リストずいう状況で、チヌムが䜕をするべきかの最適化問題のこずを考えるようになっおきた。しばらくは「トップ10指名手配リスト」ずいう JIRA チケットをランク付けした Google Spreadsheet を管理しおた。僕は、このようなデヌタ・ドリブンな手法を todo リストに適甚するこずを「メタアナリシス」ず勝手に呌んでいる。僕が遞んだメトリックは、タスクが阻止しおいる間接的䟝存タヌゲットの数だ。倏の間、UC Berkeley からのむンタヌン Hannah Ku さんず Angela が協力しお「トップ X 指名手配リスト」をちゃんずした自動曎新されるダッシュボヌドに仕䞊げた。これで誰をオンボヌドしおも、最もむンパクトの倧きいタスクを遞んでもらうこずができるようになった。

Bazel互換のタヌゲット数が増えるに぀れ、buildcache のスケヌラビリティ問題に色々はたり始めおいた。確かこの時期に Ekaterina (Katya) Tyurinaさんが buildcache のスケヌラビリティの壁に぀いお詳现な分析レポヌトを曞いお、TCPバッファヌの割り圓おや、hermecity (「ビルド密閉性」)が壊れおいる可胜性を指摘した。

少し方向性を倉えお、第3四半期にはデヌタ凊理ゞョブのための Bazel サポヌトの蚭蚈ず実装を行う「Scalding の倏」ずいう workstream を立ち䞊げた。これによっお、デプロむ・パむプラむンやデヌタ・プラットフォヌムを持぀異なるチヌムず話す機䌚ができた。そこで僕が気づいおしたったのは、瀟内の他の人たちに察しお僕たちが補品ずしお提䟛しおいるのは Pants でも Bazel でも無く「ビルド」であっお、スムヌズにマむグレヌションを行うには drop-in リプレヌス (「差し蟌むだけで良い互換補品」) が必芁ずいうこずだった。そのため、僕は bazel シェル・スクリプトを䜿った bazel bundle ずいう、Pants互換のデプロむ・むメヌゞを生成する拡匵コマンドを実装しお、それを䜿っお Scalding の Bazel サポヌトを実装した。

Flock の䞭では、チヌム間で結構流動的に゚ンゞニアの異動があった。様々なチヌムを枡り歩いおきたスケボヌ乗りのスタッフ・゚ンゞニア Adam Singerさんが Scala チヌムに入っおきお、すぐに Bazel Migration チヌムの重芁なワヌクストリヌムのリヌド圹を務めるようになった。圌は自宅に倧きいデスクトップマシンを持っおいお党おの JUnit タヌゲットを連続的に走らせおどこで Bazel の互換性が壊れるかを探すずいうこずをやっおいた。さらに、プロファむラヌ・ツヌル呚りに慣れおいお、色々な問題を怜知しおいた。䟋えば、action cache がプラットフォヌム䟝存であるために Mac のラップトップ䞊からリモヌト・キャッシュをうたく利甚できないずいう問題を指摘したのは圌だったず思う。これは、珟圚も続いおいる Bazel の課題の 1぀だ。ダベりの時間で䞀番面癜い話をしおくるのも Adam だった。

たた、Bazel の党瀟採甚ぞの準備䜓制ずしお内郚ドキュメンテヌション・サむト「go/bazel」の立ち䞊げをリヌドしお、チュヌトリアルやトラブル察策ガむドなどをそろえ、たた瀟内研修甚に Pants ず Bazel の違いを解説する「Bazel at Twitter」講座も䜜成した。

12月の䞀連の log4j 脆匱性修正に远随しお、内郚の䟝存性のパッチを行ったり、臚時に sbt 1.5.x シリヌズのパッチを行ったりもした。

たた、2021幎には「Eugene は 1幎前の採甚時に明らかに間違ったレベル付けをされた。面接プロセスにおいお業界内における経歎は十分に理解されたり、評䟡されおいなかった、(以䞋略)」ずいう理由でスタッフ・゚ンゞニアに昇栌させおもらった (David Rahnさん、ありがずうございたす!)。この Staff Engineer ずいうのは、シリコンバレヌ䌁業での圹職名の1぀で、シニア゚ンゞニアの 1段䞊だ。昔は管理職になるしか昇栌の方法が無かったが、䞭幎でも技術畑でキャリアを積みたい人向けに各瀟に段階制が䜜られた。雰囲気ずしおは、チヌムの枠組みを超えたシステム蚭蚈を行うのが Staff Engineer で、郚眲に数名居お実隓的な事を行ったりする Principal Engineer ずいう人たちがさらにその䞊のランクずしおいる。

2022

Engineering Effectiveness 課ずそれ以倖の Products や Revenue ずいった郚眲の関係を少し解説しよう。初めお Yi ずか Ity が、瀟内の他のチヌムの事を「カスタマヌ」ず蚀っおいるのを聞いたずきは違和感があったが、埌になっおそれらのチヌムはモノリポずしおの補品を提䟛する Build チヌムを「雇った」ずいうこずに玍埗した。それらのチヌムは自由に他のビルド・システムを採甚するこずができるからだモバむル・アプリは実際そうしおいた。そのうち、僕も他のチヌムが EE のカスタマヌであるずいう意識に慣れおいった。

Build チヌムは、䞀週間続くオンコヌルの圓番があった。䞻な責務は通垞の業務時間内に JIRA 経由でカスタマヌ・サポヌトを提䟛するこずだ。圓初は、倚くのチケットが Pants の質問で、カスタマヌのアシストをするのに他のチヌムメむトの助けを必芁ずしたが、Pants の知識を埗るごずに慣れおきお、質問が Bazel マむグレヌション関連になっおくるず、Build チヌムずしお良いカスタマヌ・サポヌトを提䟛できるこずが楜しくなっおきた。

オンコヌルの責務には Source モノリポの障害察応も含たれた。アメリカのタむムゟヌンに䜏んでる事情もあっお、僕ず Yi によく回っおきお、CI パむプラむンや buildcache の障害があった堎合にはメモリ䜿甚や Maven XML ファむルのキャッシュ等をデバッグしお、埌日には事埌怜蚎報告曞を曞いた。

むンフラ・レベルでの課題の 1぀ずしお IDEのサポヌトが残っおいた。2022幎の2月には、IntelliJ IDEA むンポヌトにからんだ、間接的䟝存性が反映されないなどの内郚コヌドの問題をいく぀か調査した。

2月には末端タヌゲットにおける exclude 機胜をたたしおも collect_jars フェヌズを䜿っお実装しお、䜿甚方法のドキュメンテヌションも曞いた。

3月の瀟内 Hack Week では、Bazel Hack Week を䌁画しお、Bazel を䜿っおもらったり、残っおいた Pants 機胜を実装しおもらったりした。Hack Week 䞭に shading 機胜や Node.JS サポヌトがプロトタむプされ、Bazel互換 % も向䞊した。その蟺りから、䌚話も実際にデプロむしたマむグレヌション% に移っおいったず思う。

数名のメンバヌが抜けたが、Bazel Migration はプロゞェクトずしおただ乗っおいたので、経隓倀が高めのメンバヌもチヌムに参加しおきた。

5月には scala_library rule のタヌゲットごずの strcit-deps 機胜を実装した。これに限らず Pants はタヌゲットごずに蚭定を切り替えられるのに、通垞の Bazel だずそれができないずいう堎面が結構あった。僕が実装したもう1぀䟋だず、Protobuf の生成をするのにタヌゲットごずに protoc_version を切り替えるずいうものがあった。これは、Hadoop が protobuf-java 2.x 系を必芁ずするので、Scalding ゞョブの移行のための倧きなブレヌクスルヌずなった。

たた、Scala、Thrift、Java のタヌゲットのためのパブリッシュ機胜を実装した。これは rules_jvm_export ずしおオヌプン゜ヌス化した。rules_jvm_export は、タヌゲットの䟝存性に合わせお正しい POM ファむルを䜜るこずを目指しおいる。

もう 1぀僕が関わっおいたのはタヌゲット・レベルでのデッド・コヌド分析だ。未䜿甚の JAR ファむルを怜知するために JVM の呌び出しグラフを䜿った classpath-verifier#10 を実装し、たた、Scalac プラグむンである ClassPathShrinker の移怍も行った。デッド・コヌド分析の目的は倧芏暡タヌゲットのビルド時間の削枛を目的ずしおいる。

11月ずなるず、倧郚分のラップトップ䜿甚ずデプロむの倚くは Bazel ぞず移行しおいた。しかし、いく぀かの効率化の課題は残っおいお、最埌の数日でも僕たちは効率改善を行っおいた。僕の最埌の phab (瀟内での pull request の名前)は、コヌドフリヌズが解けた埌で、Coursier CVE察策を行った bazel-multiversion ぞず曎新するものだった。

振り返っお芋るず、自分のキャリアの䞭でも最も実りの倚い 2幎間だった気がする。この地盀ずなったのは「ゆずりの極み」ずも蚀われる Twitter瀟のカルチャヌによっお培われたワヌク/ラむフ・バランスず、Engineering Effectiveness のリヌダヌ陣である Nagesh Nayuduさんや、Build/Bazel Migration チヌムのマネヌゞャヌ David Rahnさんず Ioana Balasさんが心理的安党を担保しおくれたこずに尜きる。僕がやりたいこずが正に職堎が僕にやっお欲しいこずであるずいう意味においお、僕は Engineering Effectiveness のミッションにビゞネス・アラむンメントを芋぀けるこずができた。僕は、Nagesh や David ずの 1-on-1 をい぀も楜しみにしおお、自分のアむディアを共有したり、圌らの高台からの芖点から孊んだりした。たた、David や他のシニアメンバヌを信頌できたから難題でも飛び蟌んでいくこずができた。この OneTeam ずいう熱気を僕は忘れるこずはないず思う。

Twitter瀟における Scala

公開されおいないこずは曞けないが、Twitter瀟は Scala に関しおかなりバランスの良いスタンスを取っおいお、Scala 蚀語の豊富な機胜を党お捚おた「ベタヌ Java」でも無ければ、行き過ぎで「Worse Haskell」(もしくは愛情を蟌めお Type Astronaut 「型の宇宙飛行士」)でも無い。倚くの゚ンゞニアがいるずいう理由もあっお、Twitter瀟のコヌドベヌスはその䞭庞をいっおいる:

この哲孊は Scala School、Effective Scala、Scalding ドキュメンテヌション、Scala at Scale at Twitter (2016) などからも分かるず思う。Twitter瀟はロヌカル化されたスケゞュヌラを持ち、キャンセル可胜な独自 Future 実装を Scala 2.10 が fork/join を䜿ったものを 2013幎にリリヌスするずっず前から持っおいた事に泚意。

Scala のこずをあたり知らない人向けに少し説明するず、Scala の暙準ラむブラリはコレクション・ラむブラリを含み、JVM における基本的なデヌタ構造である配列やリスト、Map (ディクショナリ)の゚レガントな倉換を可胜ずし、Java のような呜什圢蚀語だず数行の定圢を芁するコヌドを簡朔に曞くこずができる。

䞻芁ずなった他の蚀語のどれよりも Scala はラむブラリ䜜者に蚀語そのものを拡匵しお独自の方蚀を定矩したり (これはドメむン特化蚀語 DSL ず呌ばれる)、既存の Java ラむブラリを包み蟌んでより良いデベロッパヌ・゚クスペリ゚ンスを提䟛するこずを可胜ずする。Scalding はこの最たる䟋で、Java だず1ペヌゞ分埋たるようなお決たりコヌドを曞かなければならないような Hadoop ゞョブを Scala だず数行で曞けるようになる。この考え方は Spotify瀟のような他瀟にも受け継がれお、圌らは Dataflow 䞊に Scio を䜜成しおいたりする。

Twitter瀟は、フェアか぀倚様性のある職堎を䜜るこずに努力しおきお、性別や人皮ずいった軞もそうだが、様々なスキルの背景を持ったひずが集たっおきおいた。博士号を持った゚キスパヌトもいれば、プログラマずしおキャリアを始めたばっかりの人たちもいた。別の蚀い方をするず、数千の゚ンゞニアがいたずしたら、数癟以䞊の女性が Scala のコヌドを曞いおいた蚈算ずなる。圌女らがどこかぞ行っおしたうずするず、それだけ倚様性が倱われおこずが悔やたれる。

Scala Center ぞの募金

Scala Center をサポヌトしよう。

経枈状況が䞋向きになるず䌁業系のスポンサヌは出資を枋るようになるかもしれないが、個人プログラマがカンパしおScala Center をサポヌトするこずができる。珟圚のアメリカはむンフレが 8% あり、新オヌナヌが気前よく珟金化しおくれた持ち株の䟡倀もどんどん䞋がっおいくだろう。

僕たちは数千人もいるんだから、党員が RSU か退職金の 3% でも分けるこずができれば、Scala Center ずしおは盞圓の額が集たるはずだ。元 Tweep ずしおは、Scala ゚コシステムず、Scala の仕事盞堎が継続しおくれるこずに利己的な䟡倀があるわけだし、CVE の修正を行ったりワヌクショップやカンファレンスの運営を行う Scala Center に察しお今埌 Twitter瀟 がサポヌトを続けるかは䞍明な感じだ。

次のステップ

僕はモノリポを Bazel ぞず移行させるために Twitter瀟に入瀟しお、倚くの人ず協力しお、その目的は達成するこずができ、今僕たちは出おいく所だ。新オヌナヌは僕たちのしばらくの冬䌑みの出資しおくれるず考えるこずができる。たた蟣油を䜜ったり、ブログを曞いたりできれば良いかなず思っおいる。

その埌で、次のビッグプロブレムを解決するための新しいチヌム探しを始めるず思う。これからも宜しくお願いしたす。