Got feedback? We’d love to hear it!
header image
Profile Photo

熊崎 宏樹

エンジニア

日本電信電話株式会社にて分散機械学習システムやデータベース技術の研究に従事。 2018年11月からGoogle合同会社にて検索エンジンのソフトウェアエンジニアとして活動中。

122 回答
2022年2月に参加
💌 スーパーレターへの回答方針

機密事項は一切答えません。


0 / 20000
¥0

利用規約プライバシーポリシーに同意の上ご利用ください

スーパーレター

¥2,000

3か月

お世話になっております。コンピュータサイエンスについて質問があります。

現在 23 歳の高卒ソフトウェアエンジニアで CS を体系的に学びたく学士を取得しようと思っています。やる気があれば修士以降もやりたいです。

単純にコンピュータやコードを書くのが好きでもっと詳しくなりたかったり、自分に出来ることを増やしたりビッグテックで働いてみたいなど理由は色々あります。

選択肢は2つ考えていて、働きながら海外の大学のオンライン講義を受けるか、国内の大学で学ぶため受験からやり直すかです。

単純に比較をするのは難しく懸念点も様々ですが、気にしているのは卒業後の年齢で入社しようとしても足切りされるのではないかという点を心配しています。高度な仕事をやりたくて勉強したのに土俵に立つことすら出来なくなってしまったら少し悲しいです。社会人大学生としてやっていく方がリスクが少ないのは分かっているのですが、まだ決め切れておらず kumagi さんが同じ立場だったらどうするか意見をいただきたいです。

色んな求人を見たりするのですが大体必須条件に CS の学士・修士または同等の実務経験と書かれていることが多く CS に関する知識の必要性を日々感じています。コーディングテスト?は受けたことが無いので分からないのですが一応 AtCoder 黄なのでなんとか行けるかな、、と思っていたりもするのですが…

競プロをやってきて凄い人に沢山出会うのですが、経歴を見ると大体東大を通っていて凄い事をやりたいなら自分もそういうところで学ぶべきなのかと考えてしまいます。

長文になってしまいました、申し訳ありません。

お手数をおかけしますがご回答いただけますと幸いです。

もっと読む

すべての回答

再帰とか抽象構文木とかマクロですかね…。人によって「最低限」の基準が違うので論じにくい話です。

この手のメタな知識はまさにLISPの世界で熱心に研究され続けて来たので「計算機プログラムの構造と解釈」通称SICPという本に集まっており、だからこそ熱心なプログラマはこの分厚い本を崇めたりLISP使いになったりします。昔はSICPがマサチューセッツ工科大学の教科書だったりしたのですが最近はPythonをやるようになったという噂もあって、それほどLISPが必須知識として見做されなくなってきた風潮を感じます。もちろん興味が有るのであれば是非邁進してください。

11時間

テック企業で働く気ならスキルセットをテックに寄せる方が近道ですし、アメリカ系の企業なら社内の公用語は英語でしょうから英語を社内公用語に使っている会社なら英語の練習にもなっていいですね。

英語が公用語かつテック系で日本にオフィスを置いている会社は都内にたくさんありますのでぜひ検索してみてください。

1か月

そんなに高い志など無く、自分が好きな分野の中で社会から需要がある所を選んだ感じです。ただし、MLとかデータサイエンティストなどは数式とにらめっこする時間の方が長そうなので、数学力ではなくてCPUアーキテクチャとかそういう知識が活かせそうな分野を選びました。

最近は「異世界転生するなら俺TUEEEできる所を狙いたい」というモチベーションぐらいで充分なんじゃないかと思っています。

1か月

レター

3か月

いつもXでmondの回答拝見して参考にさせて頂いたいます。

今回初質問になりますが、よろしくお願い致します。

相談内容は「どうすれば自分がわからない部分を言語化して自分で解決して理解できるようになるか」です。

自分は普段Webアプリケーション開発に従事しておりエンジニア歴は6年目になります。

簡単なCRUDのAPIを実装したり、フロントエンドで画面を構築はできるつもりです。

しかし、少しでも知識の深掘りが要求されると途端につまづいてしまいます。

例としてパフォーマンスの高いSQLを書けるようになるためRDBMSにおけるB-Tree Indexの仕組み(なぜインデックスを貼るとクエリ処理が早くなるのか)を勉強したものの、どんな入門書やネットの解説記事、各種RDBMSの公式リファレンスを読んでも理解出来ませんでした。

他にもRDBだけでなくアルゴリズムとデータ構造やネットワークなどあらゆる分野で少し難しいレベルが要求されると何が分からないのかが分からず八方塞がりになってしまいます。

そんな状態がここ2,3年続いており、自分のエンジニアとしての技術レベルが停滞しています。認めたくないものの自分のエンジニアとしては限界なのかもしれないと感じています。

もちろん、他の方が自分の何倍も技術に向き合われていて単に自分の努力不足であることは承知しております。

しかし、「何を勉強しても何を勉強しても何が分からないのかを言語化できず、自学自習のサイクルを回せない」のではエンジニアとして失格であると考えています。

しかしエンジニアであることを諦められないため、「どうすれば自分がわからない部分を言語化して自分で解決して理解できるようになるか」をアドバイス頂きたいです。

お手数おかけしますがお手数おかけしますが、ご回答頂けますと幸いです。

もっと読む

¥2,000

3か月

お世話になっております。コンピュータサイエンスについて質問があります。

現在 23 歳の高卒ソフトウェアエンジニアで CS を体系的に学びたく学士を取得しようと思っています。やる気があれば修士以降もやりたいです。

単純にコンピュータやコードを書くのが好きでもっと詳しくなりたかったり、自分に出来ることを増やしたりビッグテックで働いてみたいなど理由は色々あります。

選択肢は2つ考えていて、働きながら海外の大学のオンライン講義を受けるか、国内の大学で学ぶため受験からやり直すかです。

単純に比較をするのは難しく懸念点も様々ですが、気にしているのは卒業後の年齢で入社しようとしても足切りされるのではないかという点を心配しています。高度な仕事をやりたくて勉強したのに土俵に立つことすら出来なくなってしまったら少し悲しいです。社会人大学生としてやっていく方がリスクが少ないのは分かっているのですが、まだ決め切れておらず kumagi さんが同じ立場だったらどうするか意見をいただきたいです。

色んな求人を見たりするのですが大体必須条件に CS の学士・修士または同等の実務経験と書かれていることが多く CS に関する知識の必要性を日々感じています。コーディングテスト?は受けたことが無いので分からないのですが一応 AtCoder 黄なのでなんとか行けるかな、、と思っていたりもするのですが…

競プロをやってきて凄い人に沢山出会うのですが、経歴を見ると大体東大を通っていて凄い事をやりたいなら自分もそういうところで学ぶべきなのかと考えてしまいます。

長文になってしまいました、申し訳ありません。

お手数をおかけしますがご回答いただけますと幸いです。

もっと読む

全くですね。アセンブラを眺めるのなんて顕微鏡で拡大して観察するようなもので、今どこを見ているかを把握することすら難儀です。

僕はアセンブラと日常的に戯れるエンジニアではないのですが、自分の書いたC++が自分の狙った通りの機械語に変換されているかを確認するために godbolt.org にコード片を入れています。ベンチマークを取っている時にタイトなループの内側でインライン化することを期待していた関数がやけに遅い時などに役立ちます。

4か月

どれだけ正確に覚えているかは個人差があると思いますが、うちの子は語ってくれます。ただし「ママのおなかのなかにいるときにあーまーどこあくりあしたの」ぐらい適当な事いうので僕も「うんうん、お腹の中は暇だろうからプレステ入れといたんだよね」と応じています。

6か月

レター

10か月

いつもお世話になっています。

この度Raftを用いた分散KVSを実装しているのですが、トランザクションの扱いで疑問があったので質問させていただきます。

https://qiita.com/kumagi/items/f9aee47b69ebdba5da17

以前kumagiさんのこちらの記事ACIDを達成するには最低限S2PLが必要という理解をしておりました。

しかし、Spanner alternativeであるところのTiDBは2PSを用いていると言ってます。

https://docs.pingcap.com/ja/tidb/stable/optimistic-transaction

これは以下のいずれかであると思っています。

・ Raftの層である程度の Durability やConsistency を保証しているから2PSで十分

・実際にはS2PLだが2PLと説明している

・Durability を一部諦めている(考えにくいですが)

そこで私は、「2PSとRaftの組み合わせであればACIDを達成できる」のでは?思いkumagiさんにお聞きしたく質問させていただきました。

こちらについてご意見をいただきたいです。

もっと読む

レター

1年

Pointer Swizzling というテクニックについて、wikipedia のページ https://en.wikipedia.org/wiki/Pointer_swizzling の Further reading を見るとそこそこ昔からあるようですが、ここ数年 LeanStore を始めとしてデータベース関連論文で取り上げられているのはなぜでしょうか?

もっと読む

僕ならPostgreSQLを選びます。

ローカルで立ち上がるのでアプリ開発中のデバッグが簡単なのとSpannerやAlloy DBやAurora PostgreSQL等のクラウドネイティブなRDBMSが互換インタフェースを備えている事が理由です。

追記型という形を取っているため行内の更新が多いとインデックス側の更新が多くなりMySQLに乗り換えるUberのような事例もありますがそういうのは発生してから対策しても遅くないのでEarly Optimizationと割り切って行きます。

1年

岐阜県の山間部で育って東京に来ました。

都心部の休日に出歩いている人間の多さに驚きました。こんな人だかりは夏祭りですら見たことねぇ!今日は何の祭りなの?えっ何もなくてこの人数!?!?

1年

これは僕のマウンテンビュー出張中の投稿なので僕の出張に関する質問だと思って返事します。

せっかくの出張ですのでワークステーションが置いてある東京オフィスでやったほうが効率的なこと(コーディング等)はほぼやりませんでしたが調査のためにSQLなどは多少書きました。

face to faceでの会議や雑談などを通して様々なことを学べる大事な機会でしたので、そちらの恩恵を多く受けられるよう頑張りました。

1年(1年更新)

決済サービスにstripeを使おうかと思っていますが、webhookを使って決済処理をすることが推奨されています。たしかにドキュメントにある通り3Dセキュアや現地決済手段対応を考慮するとこの方法が良いのかもしれませんが、将来他の決済APIを使いたくなるときに技術的な負債にならないか心配です。決済処理はサーバー側で処理するようにしておいた方が良い気がしています。よろしければアドバイスお願いします。

僕の専門ではありませんが、競技プログラミングの分野では異口同音にtouristことゲンナジー・コロトケビッチ氏の名前が挙がります。

彼は競技プログラミングの分野で幼少(11歳!?)の頃から目覚ましい成果を出し続け、2023年に29歳になります。競技プログラミングの大抵の有名な大会で優勝を総なめにしています(詳細はwikipedia参照)。

1年

先日興味深いツイートがありました。

https://twitter.com/takizawa0914/status/1655344814236516352

要するに、資源としてリサイクルする際に細切れに破砕し、キャップ下部のプラやラベルは水に浮きPETの部分は沈むので簡単に分離可能。スムーズな破砕のためにキャップ上部は外して欲しいがリングは全く問題にならないとの事です。

1年(1年更新)

https://twitter.com/kumagi/status/1650924286763491329
このツイートの2PCに関してですが,SpannerやTiDBにおいて2PCは使われている認識なのですが,それらは
https://www.slideshare.net/kumagi/ss-78765920
この記事で紹介されているものと違ってかなり改良が入っているからもはや別物という認識なのでしょうか?

「2PCは壊れていて使い物にならないと主張があるが,分散DBにおいて2PCという用語は使用されており,(改良が入っているものの)2PC自体は使われているのではないか」
というのが疑問でした。2PCによって何を意味するのかという言葉の上の問題かもしれません

もっと読む