Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

34歳になりました。魔法への憧憬とAI

34歳になりました。

いつもは歌詞などを引用していますが、今日は少し話したいなと思います。
というのも、自分の伝えたい感情にピッタリ合う言葉もなく、自分の体験として今言っておきたい気分だからです。

さて、14歳のいわゆる厨二病だった僕も、そこから20年の歳を重ねたことになります。
そのころの僕はフリーゲームRPGツクールに感動していたり、テキストサイトゲームクリエイターの俺式やメタリッククローバーに憧れたりしていました。
俺式の影響で高専というものを知ったおかげで、それなりに頑張って府立高専に受かったり、プログラミングや旋盤に没頭したりできました。当時はただ何かを作っていたいと思っていたものの、具体的にどうすれば良いのか分からないこともたくさんあったように思います。

今はAIの時代と言われています。

僕としてはピュアな感動と創造性、そして憧れがその当時から続いていると思いたいですし、後に知るオープンソースからの天啓や、世界に対して何かができるという希望は捨てていません。でも、疑問を持つ必要もなくそこにあった何かがなくなった感覚があります。
それはおそらく魔法なのだと思います。人の手から生み出されたという、自分にもおそらく手に入るだろうが、その道筋すら分からない魔法への憧憬のようなものです。いえ、僕としてはその憧憬をまだ持っているのかもしれませんが、少なくともこの世から何かを生み出すことに対する畏怖や信仰がほんの少し廃れたのだと思います。疑問を持たずとも共有できたはずの感動や、魔法と神への畏敬の念がなくなったことが、とても悲しい。だって僕はそれが好きだったから。

が、その俺式のTatsuya Koyamaさんは今日も曲を作っていました。いつもながら絵を描いて、ゲームを作っていました。

たしかに世界から畏敬の念は失われたのかもしれません。ですが僕の憧れた人はそのままの人でしたし、僕も何も変わらず楽しく何かを作っているのが良いのかもしれません。僕はまだ憧憬を持ち続けても良いようです。

過去分

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

blog.hirokiky.org

執筆:@hirokiky
Shodoで執筆されました

起業して5年が経ちました。起業する前に学ぶことは?への回答

2020年8月3日に株式会社ゼンプロダクツを起業してから5年が経ちました。

僕にとって初めての起業であり、AI校正Shodo(https://shodo.ink/)というサービスのみで事業を続けてきました。

長くね?

いえ、本当にありがとうございます。

皆さまのおかげで事業を継続できています。
最近は生成AIによる高度な校正にも対応するなど、良いプロダクト開発ができていると思います。

起業やプロダクト開発のノウハウが貯まりに貯まっており、たくさん伝えたいことがあるのですが、事業をリアルタイムにやっている身としては言いにくい感覚もあります。語ってないで結果で示せよ、的な話はありますし、まだまだ発展途上の段階で偉そうに語るのもどうかと思うからです。とはいえ自分のメモや記憶の整理のためにも考えたことは残していこうかなとこの区切りに考えています。

ではまず「起業する前に何をしたら良いか?」という質問にだけ答えます。ものすごく聞かれるので。

起業する前に何を学ぶべきか?

会計です。

なぜなら会社や資本主義というのが会計をベースに動いているからです。考え方としても優れたものですし、会社を運営していくなかで必要になります。
いわばこの資本主義という壮大なゲームの基本システムみたいなものです。ゲームに勝つ方法は学べませんが、ルールやシステムは知る必要がありますよね。

BS、PL、複式簿記が理解できているくらいで良いので資格とかは必須ではありません。
ただ、その会計的な考え方は会社運営の根幹になりますし、銀行や投資家の方と話すときにも必要となります。

起業の準備として何が必要か?

仮説検証です。

売れるレベルで必要・欲しいものというのは、かなり希少で作るのが難しいです。なので高い確率で売れる、使い続けてもらえるものの仮説検証を済ませておくと随分楽になります。

多くの人は会社にすればすべて解決するように考えてしまいますが、結局のところ良いプロダクトであるかどうかと会社はあまり関係がありません。良いプロダクトにしていくためにはデータ分析などもすごく大事になってきますし、センス的なところも求められます。でもそれと起業するかどうかはあまり関係ないです(もちろん広報時のインパクトや導入時の安心感などはありますが、そもそも要らないものは誰も買わない)。

以上です

今回は以上です。

もっと掘り下げて色々話せそうですし、他にも読むべきだと思っている本や、プロダクト開発の考え方のようなものがあります。
まぁ、これについては少しずつ書いていけると良いかなと思っています。

もちろんプロダクトとしてもどんどん良いものを作っていきたいと思います!

たとえば…

こういうものとか
これからもよろしくお願いします!

shodo.ink

執筆:@hirokiky
Shodoで執筆されました

DjangoCongress JP 2025でおきた偶然の成功

こんにちは。

DjangoCongress JP 2025を主催したのでそのお話しです。個人的にすごいなと思うことがたくさん起きたので、それを書きたいと思います。僕としても学びが多かったので、残しておきたいです。

今回のこの記事は僕が主催をしたときにあったことや裏側で起きたことなどを主に共有したいと思います。各トークについてはぜひ配信の動画を見てください。

オンライン開催、海外からの登壇、同時翻訳

イベントとして今回の目玉としてはオンライン開催で、同時翻訳があるということじゃないでしょうか。
平たく言うとこれが最高で、日本、海外の方が7人ずつ登壇ということでグローバルなイベントにできました。

Djangoの本家であるDSF(DjangoSoftwareFoundation)の方にも登壇していただいて、今までにない新しい繋がりも生まれました。また同時翻訳のおかげで海外の方も日本語のトークを見たり、日本人も英語のトークを見るハードルが下がったりと良いことずくめでした。

負け戦からのスタート

この3段活用(オンライン開催、日本海外両方の登壇、同時翻訳で皆んなハッピー)が最高すぎたのですが、実は偶然の産物でした。

まず会場が見つからない。

というのもDjangoCongress JPは基本的にお財布がほぼない状態なので、会場はどこかにお借りするしかありません。ですがなかなか見つからず、結局オンライン開催となりました。また日程的にもスタッフの忙しさとライフイベントが重なっており、良い時期での開催が難しかったのですが、オンラインの場合は融通が効くわけですね。

そんなわけでなかば消極的にオンライン開催を選択しました。

DSFのメンバーになる

そんなときDjangoCongress JPがDSFの個人メンバーにノミネートされました。ボードメンバーのSarahさんがDjangoCongress JPと繋がりを持ってくれ、よければ興味があるスタッフも個人メンバーにならないか?とご提案いただきました。

このDSF個人メンバーというのはDSFの活動への投票権があり、ボードメンバーやDjangoの機能的な意思決定をするメンバーの選出が可能です。他にもDSFメンバーのフォーラム等に参加でき、直接DSFの中の人とやり取りできるというものです。実際にすでにボードメンバーと、SteeringCouncilの投票はやりました。

このメンバーになったことで生まれた繋がりもあり、DSFの方がDjangoCongress JPのことを宣伝してくれました。フォーラムで登壇者がいないか声をかけたり、Djangoの公式アカウントで告知したりしてくれたのです。しかも、なんと今年はオンライン開催。そんなおかげもあって海外からの登壇者が増え、DSFボードメンバーの登壇もあったということです。

本当にいつもありがとうSarah……!

同時翻訳を入れる

さらにそんな折、一緒にずっとやっているtokibito先生からある提案があります。それは「同時文字起こし、同時通訳を入れないか」というものです。たまたまMinutzという同時翻訳サービスを開発中なので、それを無料で使ってみてほしいとのことでした。

正直言うと僕は最初あまり期待はしていませんでした。こういうのは大抵、文字起こしの精度が悪く、リアルタイム翻訳の精度が低くてうまくいかないことが多いからです。トラブルも起こりやすいイメージがありました。でも練習として試したときにびっくりしました。

は? この翻訳精度ならいけますよ絶対。

というレベル。結果はもう配信で見ていただいたかもしれませんが、とにかく簡単に使えて、文字起こしも翻訳も絶対に満足していただけるクオリティーで最高でした。

配信画面を試作して勝利を確信するワイとtokibito:

配信テストの画面
https://x.com/hirokiky/status/1886038037051965732

配信でこのことを言いまくると癒着臭くなるのであんまり言わなかったのですが、今は個人の感想として言っておきます。Minutzの開発者の皆さん、最高です。

obot-ai.com

なんかすごくうまくいった

というわけでこの負け戦からの選択がものすごくうまくいったということです。

  • オンライン開催
  • 日本、海外が半数ずつ
  • 同時翻訳あり

いやもうこれ国際カンファレンスですよ。個人的なポイントは海外の方も日本のトークを見てくれていたことです。嬉しかった。

この成功を見ると、何だか代表の僕がすごく敏腕ぶりを発揮したように見えがちですが、実際のところはSarahの協力やtokibito先生の提案と尽力によるところが大きいです。この記事でその誤解を解いておきます。あとOBSでの配信に慣れたスタッフが私含めて3人(僕、homataさん、peacockさんの3人が)いたことや、PublicViewing会場をほとんどやってくれたAyakoさんharakazuさんのおかげでもあります。harakazuさんはWebの更新もほとんどやってくれましたし、YNZさんは速攻で参加者アンケートを作ってくれました。ちなみにトークの選考は例年どおり僕、tokibito、jbkingが中心になって行いました。まじで皆んないつもありがとうございます。

偶然うまくいったのはなぜか

今回のイベント運営で僕が得たのは、成功は偶然の産物であり人のおかげという実感です。

僕は個人的に事業家でもありますし、PyQやShodoをやってきましたが、物事は成功させなきゃいけないと思いがちです。というか成功させないとダメです。でも実際のところ1人の人間にコントロールできることなんて少なくて、偶然と人の協力が重なったときにうまくいくことが多いんじゃないかと感じました。二律背反してるようですが、矛盾してないということです。

今回のポイントは負け戦だったことだったのかもしれません。おかげでいつもと違うことをしたり、幅の効きやすい選択を取ったり、人の協力に全力で乗っかったりできました。普段の僕はわりと完成のイメージが最初からあるタイプですので、こうやれば良いというのを自分で持って進めがちです。今回はスタッフはもちろん、それ以外にも色んな人に助けられた感じがします。ありがとうございました。

論理的にまとめるとあんまり読んでほしくないですし、変な切り抜き方をしてほしくないことになりそうです。実際、人の努力と協力を無下にする感覚があるので好んでいないです。ただ僕の中にあるエモーショナルな実感を冷徹かつ論理的にまとめると、 人に乗っかる・案をもらうことでボラティリティや幅を最大化できる、信頼できる人に任せたり頑張ったりすることでリスク・リターンが釣り合う、あとは運とタイミング、というポートフォリオ最適化的な考えが違いかもしれません。とくに人に任せるのが苦手な人は、逆にこう考えることで、人に任せる意味を理解しやすいと思います。ただこういった分析は全くの無意味で、前者のような実感にこそ意味があると僕は思います。

やっぱり楽しんで自分で何かをやろうとすることが大事ではないですかね。そこに人が集まってくれて偶然うまくいく。皆んなハッピー。そんな単純な話で良いんじゃないですかね。

おわりに

平たく言って最高のイベントになりました。まじで関わってくれた方のおかげなので、ちょっとでも助けたかなと思う皆さんは誇りに思ってください。

ありがとうございました。
まじで楽しかったです!

当日の配信はこちら

ROOM1

www.youtube.com

ROOM2

www.youtube.com

執筆:@hirokiky
Shodoで執筆されました

7年くらい同じような服を着ていたけどもう色々とよく分からなくなってきた

ここまでくるとどうすれば良いか分からなくなってる。

何がか?

それは服というものへの感覚自体がである。僕は裸なのかもしれない(?)。

今の服装

マイナーアップデートを経て結局同じ服を着ている。むしろ近年は許容範囲のブレが小さくなってすらいる。

今はこんなスタイルでだいたい過ごしている:

  • Tシャツ:ヘインズビーフィークルーネック黒(Lサイズ)
  • パーカー:HUFやチャンピオンの黒
  • ジーンズ:リーバイス541
  • アンダーウェア:グンゼとかの安い黒のやつ
  • MLBキャップ
  • 靴:AJ1かサンダル

僕に会った人なら分かると思う。間違いなくその服だから。TシャツはPRO CLUBが良いけどタグがないのが良いからヘインズ着がちなんです。

何だか量産安上がりストリートファッション型の郊外のオッサンのようであるが、そうなっている。ワイシャツもジャケットもほぼ着なくなっている。むしろ近年悪化している(いやこの試みに忠実という点ではより良くなっているのか)。

リーバイスは年末とかのセール時に買うと安いと気づき、ここ数年はEDWINから鞍替えしている。パーカーはチャンピオンが何だかんだしっくりくるので、変にかっこつけたブランドのやつより妙に落ち着く。最近は筋トレをするせいで体が大きくなってしまったので、カッチリしたものよりルーズなもののほうが良くなっている(体型がすぐ変わるので)。

もう何年経ったっけ……

この試みを始めたのは何年前だったか、とエルシャダイみたいになっている。2022年時点で4年間同じような服だったと書いて、その時点でもうやめようみたいなエンディングを書いたつもりだったけど、そこからもう3年経ってしまった。つまり7年近くヘインズのTシャツとジーパン、パーカーという出で立ちで生きている。やばい。いや、Tシャツに大人っぽいジャケットの時期もあったけどね、起業したときとかさ。

とはいえもうやめるタイミングもないし、やめるという気持ちもなくなってきた。「やめる…?」というくらい。イデオロギーを失って習慣と繰り返しのみが残った何かになっている。

いうても実際のところ今の状態はかなり気持ち的には最高に近くて、上記したセットは本当に一番良いと思っている。

まぁ記念にというか、Dickiesのワークパンツを買ってみた。今まさにね。僕からすればこれは冒険で、トムソーヤが墓場にコッソリ行くときくらい小規模なようで大きな冒険である。かわいいね。

おしゃれなのか?

おしゃれではない。

だけどこれをおしゃれの一つと呼んでくれるなら、そうとうやり込んではいる。

こんな服に興味がなさそうな僕だけど、案外興味は持っている。GQ Japanだとかアンソニーのスキーカーの動画とかは見てしまう。ただまとまりとして服を見たときに「これは気に入らないな」という感覚がどうしてもでてしまい、今の安定状態を享受している。今の状態は本当に美しいとさえ思っている。やっぱりイデアっぽいのが安心するのだろうか。古着屋とか行ったら死ぬんじゃないかな(同じものが手に入らないので)。

お金も無限にあって着たいものを着れば良いと言われると、たぶん今の状態に近くなると思う(さすがにパンツはグンゼからカルバンクラインになるかもしれないが)。それくらい安定はしている。

だが待ってほしい、機械学習の分野では局所最適や過学習が一番おそれられる。自分は過学習しているのではないか?たぶんしている。

さらに感じるのがもう30歳を過ぎてそこそこ経って、今の状態は良いのか、ということだ。そう考えるとさっき言ったワークパンツもだいぶやばい。もうUnited Arrowsやラルフローレンで良い感じのチノを買う歳なのだ。

精神性の分析

自分の精神性と葛藤を考えると、おそらくこのあたりかもしれない:

  • ファッションという文脈を妙に気にしている、ゆえにイデア
  • 反骨精神やアナキスト精神からハイソっぽいのはたぶん無理

逆に言えば、もう成人したいい大人が他人のファッションや他人から見た自分の服、年齢などを気にしてとやかくしているのがおかしな話である。逆説的に思春期真っ盛りである。

おわりに

いや、おわらない。まだ続いている。

とはいえもう自分の中ではすべて終わっているのに、なぜかまだ続いている、という状態である。
でもまぁ、今の自分の服はかなり好きだし快適なので、これで良いのかもしれない。
この報告すら必要ないほどに。

執筆:@hirokiky
Shodoで執筆されました

1ヶ月に22本ブログ記事を書いて気づいたこと

正確にはまだ21.05本くらいで、今もその数値が少しずつ増えています。

さて AI校正Shodoアドベントカレンダーをやろうと思い立ったのは11月の中旬ごろでしたが、目的としてはもちろんマーケティング的な意味合いもありつつ、ドッグフーディング的な意義もありました。「大量にブログ記事を書いたときにどうなるのだろう?」と試すことです。

その結果、今さらながらブログを書くことについて色々と気づいたのでそれを残したいと思います。というよりも、今の時代だからこそ新しく気づけたことがありました。

気づいた:もっと小さい記事をたくさん書いても良い

なぜか「記事を書く」という感覚が重くなり、書くとなると妙に重厚な文章(もはやドキュメント)が完成する経験はないでしょうか。あれはもうやめちゃって、ショート動画感覚で読める軽い記事を書いたほうが、気持ちが楽なので良いと気づきました。

最近はQiitaの記事やZennの記事もしっかりと書かれたものが多く、書籍化するものも多くあります。昔の世の中は本当に雑なメモも多かったように思いますが、最近は「ちゃんと正しく網羅的でないと」という感覚があります。

ですがそうなるとどうしても書く気が起きにくい。それはもったいないわけですね。そこで軽めの記事を書いて、必要ならトピックごとに分割して連載するような形にすれば良いわけです。今回もOptuna Neuronに関する紹介と注意点(とあるバグ回避的な話)を分けましたが、自分の中で区切りもついて良かったと思います。

別にこれはマーケティングの数値的な意味があるというわけでなく、体感として気軽に書き始められるからというだけです。

気づいた:SNSでバズりたいと思わない

SNSでバズる必要も妙に意識する必要もない、そう思うと楽です。もちろん読み手への配慮や炎上しないよう気をつける必要はありますが、よしバズってやろうと書く必要はないということです。宣伝目的でキッチリ狙った記事を書いたり、時事ネタに突っ込むのが必要なときもありますが、基本的な備忘録や紹介などでわざわざ「いいね数」にとらわれる必要はないのかもしれません。

というのも今回、記事を書いていることや、特定の記事については読んでほしいような人からの反応が得られたからです。間違いも指摘してもらえましたし、自分なりに身近な人に伝えられて、自分も勉強になったので良かったなという話です。最近は絵にしろ文章にしろ、表現はすべて万人に受けてバズらなきゃいけない感覚がありますが、それはSNSを運営する人間の思惑なのかもしれません。

気づいた:リモートワークだから「書く脳」を鍛えておく

文章をたくさん書いていると、「書く脳」が動くのか書いていて苦じゃなくなります。先日、社内用のEsaに調べたことのまとめをしたのですが、公開できるレベルの記事を一発で書けた自分に驚きました(これが…力か…的な)。

リモートワークの是非について議論される昨今ですが、たしかにオンラインではコミュニケーションが難しいものです。そのときに単にSlackで会話したり、Zoomをつなぐのではなく、ドキュメントやタスクの説明としてちゃんとまとめるのが重要だと思います。そのときにこういった「書く脳」、書くことが苦ではない状態を持っておきたいものです。そうすれば自分も無理なくできますし、正確かつ無駄なく伝えられるはずです。

ブログを書く意味はあるのか?

ChatGPTに聞けば何でも回答を得られる時代ですが、だからこそ自分の言葉で書く意義が出てきます。たとえば伝えたいことであったり、自分で残しておきたいことだったり、ChatGPTの回答がイマイチだったりしたことは残す意味があると思います。要するに「情報として残す」というより「(未来の自分を含めて)伝えたいこととして残す」ということです。作品、とまではいかないですが。

ChatGPTなどのAIが成長してくると、人にとって重要なのは「その人である」ことだと思います。その人の触れたことを通しての作品であったり、その人の中にある世界観や生の人間としての何かです。僕はAIの会社をやっていますが、目的としては人間の創造・想像する力を引き出すことであり、それ以外の雑多なことをなくすことと決めています。最後は人の言葉や手によってしか人はケアされないのかもなと思っています。

だからこそ、もう少し気軽に記事を書いても良いんだなと思いました。

おわりに

くぅ~疲れましたw これにて完結です!

皆さま良いお年を。

qiita.com

執筆:@hirokiky
Shodoで執筆されました

requirements.txtでリポジトリーURLを指定する方法

requirements.txtでリポジトリーURLを指定したいことがあります。たとえばSageMakerではコード用のディレクトリーにrequirements.txtを配置することで、起動時に依存ライブラリーをインストールしてくれます。その際に問題になるのが、Neuron系のライブラリーではリポジトリーURLを指定する必要があることです。

$ pip install --extra-index-url https://pip.repos.neuron.amazonaws.com torch-neuronx torchvision

通常はこのようにコマンドラインからオプションを指定したり、 pip config set としてグローバルの設定を追加するものです。ですが設定できるポイントが requirements.txt しかない場合は以下のように対処できます。

requiremets.txtに--extra-index-urlオプションを書く

requirements.txtには --extra-index-url などのオプションを書けます。

--extra-index-url https://pip.repos.neuron.amazonaws.com
torch-neuronx==...
neuronx-cc==...
torchvision==...

これでAWS Neuron向けのリポジトリーを使ってインストールできます。

当該リポジトリーにないパッケージはどうなる?

オプションの指定が --extra-index-url なので、指定したリポジトリーにパッケージがない場合はPyPIからインストールされます。たとえばsentencepieceはAWS Neuronのリポジトリーにはありませんが、一緒に書いてもよしなにインストールしてくれます。

おわりに

もう明日はクリスマスですね。Shodoアドベントカレンダーもここまでこれて良かったです!

明日で最後!

qiita.com

執筆:@hirokiky
Shodoで執筆されました

Jupyter Notebookでマウスを使わない!

Jupyter Notebookでマウスを使わなければ気持ちよくなれます!という啓蒙活動です。
Jupyter NotebookというとGUIが基本なのでどうしてもマウスを動かしてしまいますが、キーボード操作がかなり充実しています。あまり知られていない感じもしますが、かなり快適に使えるのでぜひ活用していきましょう。

Jupyter Notebookの様子

入力中と、セル操作中の2つのモードがある

まず知るべきなのが、セルに対して2つのモードがあるということです。普段のようにセルの中身を書いているモードと、セルを操作したりするモードの2つがあります。感覚的には vi のように、入力モードとコマンドモードがあると思えば良いかもしれません。上記の画像では入力モードになっていますね。

Escキーを押下することで、入力モードからセルを操作するモードに移行できます。

セルの操作モード

このモードに入ることで、セルの操作を行えます。セル全体が選択されており、カーソルが表示されていないことに注目してください。

セルの操作をキーボードでやろう!

だいたい以下の操作を覚えておくと、キーボードだけでJupyter Notebookを使えます:

  • Enter:セルの入力モードに入る
  • Esc:セルの操作モードに戻る
  • b:下にセルを追加(Below)
  • a:上にセルを追加(Above)
  • or :セルを選択
  • Ctrl + Shift + or :セルを上下に移動
  • dd:セルの削除(Delete)
  • x:セルをカット
  • v:セルを下にペースト
  • c:セルをコピー
  • z:セル操作のUndo
  • y:コードセルに変更(なんで y なんでしょうね)
  • mMarkdownセルに変更(Markdown
  • 00カーネルのリスタート

これで一通りの操作をまかなえると思います。セルを間違えて消したときなども、冷静に z とするだけで戻るので便利です。

こんな感じでキーボードだけで操作しよう

Jupyter Notebookを使っていると前に戻ったり、セルのタイプを変えたりすることはよくあると思います。上記のキーボードによる操作を覚えておけば、そういった操作をマウスを触らずにサクサクと行えます!

キーボード操作の例

ちなみに今日、12月21日(1221)は回文数です!

他にも便利な操作がたくさん

Jupyter Notebookには他にも便利な操作がたくさんあるので、慣れてくればどんどん調べると良いでしょう。他におすすめなのが Shift + 上下でセルを選択して Shift + m でマージしたり、セル編集中に Ctrl + Shift + - でカーソル位置でセルを分割したりできます。あまり使う機会は多くないですが、覚えておくと便利です。

おわりに

ShodoのAIの開発時はJupyter Notebookが大活躍しています。操作の効率化のためには、マウスを触らないことが大事です。僕は昔、 keysnail というFirefox向けの神拡張を使っていて、すべてのブラウザ操作をキーボードで行っていました。Jupyter Notebookをキーボードだけで扱うと、当時のような心地よさを思い出せます。ぜひ皆さんもJupyter Notebookはマウスを触らずキーボードだけで使ってください!

現在、Shodoではアドベントカレンダー応援クーポンを配布しております。80%オフでShodoを最長3ヶ月間使えるクーポンです。以下のクーポンコードをご購入時に入力して、このアドベントカレンダーの季節にShodoのAI校正をブログの執筆にお役立てください。

XMAS2024

shodo.ink

執筆:@hirokiky
Shodoで執筆されました