Skip to content

Instantly share code, notes, and snippets.

@kenichi-fukushima
kenichi-fukushima / google.md
Last active March 2, 2024 13:56
未経験から独学でプログラミングを身につけて新卒でグーグルに入った話

2008年に新卒でソフトウェアエンジニアとしてグーグルに入社しました。2019年時点ですでに退職しています。

学生時代

東京大学の電子電気情報学科という申し訳程度にコンピューターサイエンスをかじっているところから、そのまま修士課程に進学しました。研究分野は自然言語処理でした。大学がつまらなくて行かなくなった時期があり、留年して学部2年生を2回やっています。ただ勉強はかなりできたほうだと自覚しています。線形代数の試験で満点を取って授業中に名前を読み上げられたのを覚えています。大学院に進学してからは研究が面白くて土日や正月も関係なく研究室に通っていました。1月3日にどうせ誰もいないだろうと思いながら研究室に行ったら普段は忙しくて姿を見せない教授がいたのには驚きました。

プログラミングの経験

プログラミングは大学に入ってから99%独学で身につけました。所属していたサークルのウェブサイトの管理をやることになったのがきっかけで、手打ちのHTMLを少しだけ書き変えることから始まり、JavaScriptでダイアログを出したり、Perlで掲示板CGIをつくったりと少しずつステップアップしていきました。できることが増えるたびに作りたいものが増え、作るたびにできることが増えと、どんどんプログラミングに没頭していきました。

最初の1〜2年のあいだは周囲にプログラミングをする人がいなかったので独りで手探りでやっていました。また、時代的にも、自分自身のリテラシー的にも、ウェブで自分が知りたいことをピンポイントで見つけることは現実的ではありませんでした。なのでプログラミングやコンピューターの知識はもっぱら本で身につけました。大学の図書館や本屋に通って棚の端から端まで目をとおしては今の自分に必要な知識を授けてくれそうな本を探すという毎日を送っていました。これはとても効率の悪いやりかたで、標準ライブラリ以外の、いわゆるサードパーティー製ライブラリというものがあることをしばらくのあいだ知らずにいて、ウェブクローラーをつくるのに生のTCPソケットの上に自前でHTTPを実装するところから始めるというような感じでした。大学を留年して暇を持てあましていたからできたのだと思いますが、このときのあらゆる困難を自力でブルドーザーのように薙ぎ倒していった経験は今でも自身のよりどころになっています。

@kaityo256
kaityo256 / スパコンと円周率の話.md
Last active September 17, 2026 09:25
スパコンと円周率の話

スパコンと円周率の話

はじめに

2019年3月14日、Googleが円周率を31兆桁計算したと発表しました。このニュースを聞いて僕は「GoogleがノードまたぎFFTをやったのか!」と大変驚き、「円周率の計算には高度な技術が必要」みたいなことをつぶやきました。しかしその後、実際にはシングルノードで動作する円周率計算プログラム「y-cruncher」を無改造で使っていることを知り、「高度な技術が必要だとつぶやいたが、それは撤回」とつぶやきました。円周率の計算そのもののプログラムを開発していなかったとは言え、これだけマッシブにディスクアクセスのある計算を長時間安定実行するのは難しく、その意味においてこの挑戦は非自明なものだったのですが、まるでその運用技術のことまで否定したかのような書き方になってしまい、さらにそれが実際に計算を実行された方の目にもとまったようで、大変申し訳なく思っています。

このエントリでは、なぜ僕が「GoogleがノードまたぎFFT!?」と驚いたか、そんな話を書いてみたいと思います。

円周率の計算とスパコン

@azu
azu / README.md
Last active June 22, 2026 09:06
スタートアップ/企業の調べ方
@kaityo256
kaityo256 / fandcandcompiler.md
Last active December 27, 2025 00:49
FortranとC++とコンパイラと

FortranとC++とコンパイラと

はじめに

将来どうなるかはわからないのだが、とりあえず2018年現在、まだスパコンを使って数値計算をしようとしたらFortranかC++を使わなければならない。で、一般論としてコンパイラはFortranの方が最適化しやすく、似たようなコードをFortranとC++で書いたら、Fortranの方が早くなる、ということはまま起きる。それじゃ全部Fortranでかけばよいのか?というと、世の中そんなに単純では無い気がするよ、という感じのポエムです。

なお、以下に出てくる数値計算結果は筆者の(だいぶ昔の)経験を脚色したもので、実際に存在するアーキテクチャやコンパイラとは全く関係ありませんのであしからず。

C++で書いてみる

import numpy as np
import matplotlib.pyplot as plt
def motion(event):
x = event.xdata
y = event.ydata
if (x is None) or (y is None):
return
ln.set_data(x,y)
print('(x,y) = (%.2f,%.2f)' % (x,y))
@kaityo256
kaityo256 / re_howto.md
Created January 21, 2018 10:40
Re:研究者として生きていくコツ

Re:研究者として生きていくコツ

これは以前書いた研究者として生きていくコツへの補足のようなものです。主にはてブ等でついたコメントへの返事です。

誰に向けて書いたか?

Twitter等で偶然見かけた、顔も名前も知らないポスドクさんたちの言動を見て、これから研究者を目指す学生さんに向けて書きました。そのポスドクさんたちは分野も違うので、私とは直接の知り合いではありません。何年も前のつぶやきに対する反応で、最近の投稿へのエアリプではありません。

研究者も人間です。長くポスドクをしていると、いつも任期に追われ、かつ自分の望むテーマとは必ずしも合致しないプロジェクトをわたり歩くことで、だんだん「自分は何屋さんなのか」がぼやけてくるなか、同期、後輩がポストを取っていくのを見て焦り、「もっとがんばらなきゃ」と自分を追い込んだり、社会や身近な人に呪詛を吐いたり、ということがありがちです。そんな人たちの言動を見て、将来ある若い人が負の影響を受けないといいな、と思って書いたものです。なので、現在ポスドクをやっている人に向けて書いたものではありません。

@rszeto
rszeto / .xbindkeysrc
Created September 30, 2017 21:33
Mouse bindings for Logitech M705 on Ubuntu
# Scroll left --> Ctrl+Shift+Tab
"xte 'keydown Control_L' 'keydown Shift_L' 'key Tab' 'keyup Shift_L' 'keyup Control_L'"
b:6
# Scroll right --> Ctrl+Tab
"xte 'keydown Control_L' 'key Tab' 'keyup Control_L'"
b:7
# Bottom side button --> Alt+Tab
"xte 'keydown Alt_L' 'key Tab' 'usleep 100000' 'keyup Alt_L'"
@kaityo256
kaityo256 / howto.md
Last active June 30, 2026 08:59
研究者として生きていくコツ

研究者として生きていくコツ

これは卜部さんの優秀なプログラマーになるためのコツに影響されて書いたものです。

著者について

自分を構成する要素は、大きい順にシステムエンジニア、プログラマ、研究者だと思っています。でも、おそらく給料は「研究者」として払われているため、研究者として生きていくコツとしました。僕はさほど優秀とは言えませんが、とりあえずそれなりに長いことそれで食っています。大学の教授のウェブサイトに「研究者としてのコツ」みたいなことが書いてあることがありますが、これには「既に大学の教授になっている人が書いている」という強烈なバイアスがかかっています。もちろん参考になることも書いてありますが、「死ぬほど研究しろ、研究のことだけ考えろ」的な文章が多い印象です。これは普通の人にとって役に立たない助言です。これは平均的な研究者として生きていくための戯言、ポエムだと思ってください。

健康第一

@shyouhei
shyouhei / gist:266178ffedab5767a5b69b972c76f88a
Created September 27, 2017 07:31
優秀なプログラマーになるためのコツ

優秀なプログラマーになるためのコツ

重要な順で

優秀なプログラマーになるには非常に長い時間がかかるという現実を直視すべし

優秀なプログラマーというのは寝ている間に異世界に召喚されて無双するのとはわけが違うんですよ。

自分の例で言うとプログラミングを始めた中学生の時から優秀なプログラマだったかって、そんなわけない。みんなヘッポコからスタートしているに決まってるわけです。以来二十余年、地道に生き恥を晒し続けてきた結果として、現在いちおう業界の末席を汚すところまで来ている。このプロセスから目を背けるべきではないです。優秀なプログラマーに生まれる人間なんかいない。優秀なプログラマーに「育つ」んだし、それには時間が必要。今日から無双したいと思うな。

@AAber
AAber / disk_used_alert2slack
Created June 14, 2017 13:38
Script to monitor disk space and alert via slack when disk usage is > 80% Place the script in /etc/cron.hourly
#!/bin/bash
# Parse df selected output
df -h|egrep -v 'File|tmpfs|docker|udev'| \
while read LINE; do
USED_NUMBER=`echo $LINE |awk '{print $5}'|sed 's/\%//'|sed 's/ //g'`
USED_PERCENT=`echo $LINE |awk '{print $5}'|sed 's/ //g'`
MOUNT_POINT=`echo $LINE |awk '{print $6}'|sed 's/ //g'`
if [ $USED_NUMBER -gt 80 ]; then
# Create message without spaces