2024年7月21日日曜日

スクラッチから開発する新しいブラウザー Ladybird

 Google広告費の影響を受けない新たなWebブラウザが必要だと、スクラッチからWebブラウザを開発する「Ladybird Browser Initiative」、元GitHub創業者らが立ち上げ

動機は納得だし、健全な競争のためにも大いに応援したいと思っています。ただここまで巨大化したウェブ標準をフルスクラッチで実装するのは骨が折れるどころか粉末状に砕けるレベルの大仕事でしょうね・・・

当面の問題は、開発人材の確保と運営資金でしょうか。

とりあえずリンクをぺたり。みなさんも応援してあげてください。

公式サイト

GitHubリポジトリー

2024年7月14日日曜日

命名的問題 vs 構造的問題

技術的負債を抱えたレガシーコード。変なメソッド名と入り組んだロジック、リファクタリングするならどちらが先?(前編)

技術的負債を抱えたレガシーコード。変なメソッド名と入り組んだロジック、リファクタリングするならどちらが先?(後編)

記事の内容は「メソッドの名前がおかしいが実装わかりやすいコード」と「メソッドの名前は問題ないが実装がややこしいコード」の2つを50人ほどのJavaプログラマーに解読してもらい、メソッド名と実装のどちらを先に修正すべきかというものです。

統計結果を見る前に思ったのは、メソッド名を先に直すべきではないかということ。理由は記事中にある

構造的問題は局所的に起こるが、命名的問題はコードのどこにでも出てくるものがあるため
「命名的問題」があるとコードが信じられなくなる

などです。そして上記記事でも「命名が不適切なコードの方が読解精度が低い」という結果が出ました。

また実際の開発現場でも、命名が不適切なコードの方が読解精度が低い」という結果ですが、コードリーティングの際に実装がややこしい場合は「何だこれ?」と思って注意して読み進めるのに対し、命名が不適切な場合はメソッドの役割を勘違いしたまま開発を進めてしまう可能性があるので命名的問題のほうが深刻だと考えています。

2024年7月7日日曜日

JANOG54 Meetingに参加しました

 先日7/3-5に、奈良でJANOG54 Meetingが開催されました。毎回ネットワーク分野の錚々たる企業が集まっており、日本国内でインターネットが壊れた場合は大抵ここの参加企業のどこかが何かやらかしていると考えて間違いないです。

色々ブースを見て回った他、さくらインターネットのブースで「高火力 DOK」の説明も行いました。AI関連のサービスなのでネットワークと直接関係はないんですが、6/27に発表されて1週間ほどしか経っていないサービスなので、広報も兼ねて説明要員としても参加しました。

ネットワークなどの低レイヤーにあまり興味のないウェブ開発者もいると思いますが、自分たちが開発している(あるいは普段使っている)サービスの土台を知るためにもこういうカンファレンスはおすすめです。最初は言っていることがさっぱりわからないかもしれませんが、何度も参加しているうちに知り合いができたり話の内容も理解できたりするので面白いですよ。

奈良には学生時代に数年(今回の会場から2駅ほどしか離れていない場所に)いたんですが、さすがに当時から時間が経っているので駅前がかなり開発されていますね。ただ夏暑く冬寒いという気候は相変わらずでしたが。

2024年6月30日日曜日

excuse us

 やや混み気味の電車に乗っていたとき、外国人の家族連れが降りようとしていました。そのときに聞いたのが “Excuse us” 

こういうときのイディオムは “Excuse me” が定番だと思っていましたが、usは初めて聞きました。

よく考えれば、許してもらう対象が家族という「複数」の場合はusを使う、というのは当たり前といえば当たり前ですね。知っている人にとっては「何を今更」という感じでしょうが、今まで習ったことも聞いたこともない表現だったので勉強になりました。

   /⌒ヽ 
  / ´_ゝ`)   /⌒ヽ  Excuse us...
  |    /   / ´_ゝ`) 
  | /| |    |    /
  // | |     | /| |
 U  .U     // | |
         U  .U


2024年6月23日日曜日

ひも理論から円周率の公式を発見

 インドの物理学者がひも理論の研究から偶然「円周率」の新しい公式を発見

いやー、こういう発見があるから数学は面白い。数学が「自然科学の言語」と言われるのも納得です。

原論文はこちら。実際の計算公式は以下のとおりです。

\begin{eqnarray*} \pi=4+\sum_{n=1}^{\infty}\frac{1}{n!}\left(\frac{1}{n+\lambda} - \frac{4}{2n+1}\right)\left(\frac{(2n+1)^{2}}{4(n+\lambda)}-n\right)_{n-1} \end{eqnarray*}

2つほど補足すると、唐突に出てくる\(\lambda\)は実部が\(-1\)より大きな任意の複素数、右下の小さな\({}_{n-1}\)はポッホハマー記号(昇冪)です。

Pythonで書くとこんな感じ。元の式をできるだけ忠実に表しているので、メモ化などの最適化はしていません。

# https://gigazine.net/news/20240619-string-theory-pi/
# 原論文: https://journals.aps.org/prl/pdf/10.1103/PhysRevLett.132.221601
import math

def poch(x: float, n: int) -> float:
    # ポッホハマー記号(昇冪)
    # https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%83%E3%83%9B%E3%83%8F%E3%83%9E%E3%83%BC%E8%A8%98%E5%8F%B7
    y = 1
    for j in range(n):
        y *= x + j

    return y

def term(lambda_: float, n: int) -> float:
    # 第n項を計算
    a = 1/(n+lambda_) - 4/(2*n+1)
    b = (2*n+1)**2 / (4*(n + lambda_)) - n
    return a * poch(b, n-1) / math.factorial(n)

def pi(lambda_: float, n: int) -> float:
    # 円周率を計算
    p = 4
    for n_ in range(1, n):
        p += term(lambda_, n_)

    return p

print(pi(1000, 100))

Python Praygroundにコードを貼り付けると結果が出てきます。pi関数に渡す値を色々いじって遊んでみてください。

2024年6月16日日曜日

𝕏の「いいね!」非公開

X、「いいね!」を週内に非公開化すると発表  

わざわざこの記事を取り上げた理由はこの記事そのものではなく、これに対するGoogle翻訳。

  • "Like"(名詞)を「いいね!」
  • "like"(動詞)を「『いいね!』する」

のように、ちゃんと文脈を捉えて訳しているのが興味深かったです。

𝕏関連の文章も大量に学習させたんでしょうけど、過学習起こしてないよな・・・?

2024年6月9日日曜日

Enpassのバグ その後

 先日FirefoxのプライベートモードでEnpass拡張機能が動作しなくなったという記事を書きました。記事中にあるとおり公式フォーラムでも報告したんですが、「プライベート拡張機能を有効にする設定にしてね」というコメントをいただき、ちょっと話が噛み合っていませんでした。

そして最近Firefoxを更新したところ、拡張機能が使えるようになっていました。何もしてないのに壊れて何もしてないのに直りました

Firefox本体の仕様の問題だったんでしょうか。でも全ての拡張機能が使えなくなっていたわけでないので詳しいことはよくわかっていません。モヤモヤ感は残りますが、とりあえずフォーラムにも報告して一件落着(?)です。