nbdevの商用化について
nbdev開発者のHamel Husainは、オンボーディングの摩擦やバージョン管理の課題など採用障壁が高いため、nbdevの商業化を見送った理由を説明している。
キーポイント
商業化見送りの決定
nbdev開発者のHamel Husainは、プロジェクトに多大な労力を注いだにもかかわらず、商業化しないことを決断した。
主要な採用障壁
既存プロジェクトとの統合摩擦や、GitHubでのノートブックコードレビューに追加ツール(ReviewNB)が必要なことが、組織での採用を妨げている。
商業化の可能性としての解決策
これらの課題を解決する機会として、「開発者向けWordPress」のようなホスト型プラットフォーム構想が検討された。
プロジェクトの背景と価値
nbdevはJupyterベースの革新的なPython開発フレームワークで、リテラートプログラミングと探索的プログラミングを促進する。
nbdev商业化尝试的挑战
作者发现即使热爱并认为nbdev有用,也难以找到可行的商业模式,最终认识到商业化需要强烈的信念而不仅仅是热情。
外部环境变化的影响
生成式AI的兴起(如Stable Diffusion和ChatGPT)改变了机器学习领域和软件开发方式,导致作者和fast.ai的优先事项发生变化。
个人职业重心的转移
作者从nbdev转向专注于咨询服务和语言模型的实际应用,并认为及时调整方向是正确的决定。
影響分析・編集コメントを表示
影響分析
この記事は、革新的な開発ツールであっても、組織的な採用障壁が商業的成功を左右する現実を示している。AI/データサイエンス分野のツール開発において、技術的革新性と実務適用性のバランスの重要性を浮き彫りにしている。
編集コメント
技術的には興味深いプロジェクトだが、商業化の現実的課題を率直に語った点に価値がある。開発者ツール市場の厳しさを反映したケーススタディとして参考になる。

nbdevは、未来から来たような感覚を与えるJupyterベースのソフトウェア開発ツールです。
何人かの友人から、特にフルタイムの仕事を辞めてこのプロジェクトに注力するなど多くの労力を費やした後にも関わらず、なぜnbdevを商用化しないことにしたのかと尋ねられました。そこで、私の考えを説明する短い記事を書こうと思いました。
nbdevは、リテラートプログラミングと探索的プログラミングを採用した革新的なPythonソフトウェア開発フレームワークです。私は2020年から2023年にかけてJeremy Howard、そして後にWasim Lorgatと共にnbdevに取り組みました。非常に優秀なソフトウェアエンジニアたちと働きながら、開発者ツールと探索的プログラミングの可能性を探求する特権と興奮を味わいました。多くの人々に愛用されるツールを作り出したことに加え、私自身も個人的および職業上のプロジェクトでnbdevを活用することを楽しみました。
製品リサーチを実施する中で、私はさまざまな背景を持つ多くの開発者にインタビューし、彼らの課題とニーズを理解しようとしました。私が話した開発者全員が直面していた一つの大きな課題は、他のエンジニアにnbdevを使うよう説得することが、不可能ではないにせよ、非常に困難だということでした。
以下は、採用が進まなかった最大の理由です。
エンジニアのオンボーディングにおける摩擦。多くの企業には既存のPythonプロジェクトがあり、企業がすでにプロセスやツールを構築して確立した方法がある場合、異なる手法を併存させることは有害となり得ます。
ソフトウェア開発スタックの他の部分との衝突:ノートブックを共同作業に適した形でバージョン管理することは(今でも)煩わしい作業です。実際問題として、ReviewNBというツールを購入せずにGitHub上でノートブックのコードレビューを行うことはできません。そのため、人々にnbdevを使うよう説得するだけでなく、nbdevとReviewNBの両方を使うよう説得しなければなりません。これは初期採用の障壁を大幅に高めます。なぜなら、多くの組織におけるソフトウェア調達は、セキュリティレビュー、コンプライアンス、法務、その他の関係者を巻き込む、簡単ではないプロセスを伴うからです。
私は上記の問題を解決することが、nbdevを商用化する潜在的な機会であると考えました。
Jeremy、Wasim、そして私は最終的に「開発者のためのWordPress」というアイデアに落ち着きました。これは、人々がnbdevプロジェクトを作成して共有できるホスト型サイトです。私たちは、これが何もインストールせずに人々にnbdevを試してもらう優れた方法だと考えました。このアイデアは、Glitchのように探索と共有を促進するプラットフォーム上でプロジェクトを公開することに関心のある人々に絞り込み、WordPressのように使いやすく実用的なものにすることでした。
私たちがホスト型ツールの議論を始めたほぼ同時期に、生成AI、特にStable Diffusionの爆発的普及により、機械学習の世界は地殻変動を経験しました。nbdevを作成した組織であるfast.aiも、その焦点を変えつつありました。fast.aiの主要な使命は、できるだけ多くの人々に深層学習をアクセス可能にすることであり、生成AIは無視するにはあまりにも重要でした。それに応じて、JeremyはStable Diffusionコースに全力を注ぐようになりました。
この方向転換は、nbdev、生成AI研究、そして収益化という異なる優先事項を調整する中で、いくらかの混乱を引き起こしました。私たちは最終的に、fast.aiパートナーという形でfast.aiに関連するあらゆるコンサルティングサービスを提供することに決めました。これにより、経済的に自立しつつ、fast.aiのより大きな使命(生成AIと研究を含む)に沿って進むことができました。最終的に、私はあまりにも多くの分野に焦点が分散していることが非生産的であることに気づき1、足場を固め直すためにコンサルティング以外のすべてから離れることを決めました。
その直後、ChatGPTが登場し、機械学習にさらなる変化をもたらしました。その規模は、テキストから画像への前身モデルよりも桁違いに大きいものでした。間もなく、私のクライアント全員が言語モデルに興味を持ち、私はそれらの運用化に専念するようになりました(これは20年以上機械学習に携わることで培ったスキルです)。さらに、LLMはソフトウェア開発の性質、特にnbdevがサポートするように設計された種類のソフトウェア開発2を根本的に変えました。これらの要因と前述の要因は、nbdevから離れて他のことに集中する良い時期であることを示唆していました。
このプロセスで私はいくつかの重要な教訓を学びました。
プロジェクトを愛し、それが有用だと思うからといって、必ずしも商用化の準備が整っているとは限りません。私は常に、nbdevにとって良いビジネスモデルがあるという確信を得ることに苦労しました3。代わりに、私は本当に気の合う人々とビジネスを始めるというアイデアに惹かれてこの道を進みました。最終的に、一緒に働く人々に興奮していることに加えて、少なくとも一人は強い確信を持っている必要があることを学びました。どちらか一方だけでは不十分なのです4。また、自分自身(およびチーム)の確信の度合いについて正直であることが重要であり、存在しないものを無理に作り出そうとしないことを学びました。
直感に耳を傾けること。私はこの過程で複数の機会に直感を無視しました。年を重ねるにつれて、この過ちを犯すことはずっと少なくなりましたが、この件ではもっと上手くできたかもしれません。
方向転換を恐れないこと。私たちは見込みのない状況を避けることで、不必要な混乱を回避できたと思います。私は今取り組んでいる仕事にはるかにワクワクしています5。
自分自身のブランドを築くこと。私のプロフェッショナルブランドは、fast.aiと友人であるJeremy Howardにますます結びついていきました。このメンターシップの下で経験した成長には感謝しています。しかし、自分自身の明確なブランドとアイデンティティを築くことが重要だと信じています。他人のプロジェクトに取り組んでいる時に自分自身のブランドを築くことは難しいと気づき、これは私が苦労した点です6。これにもっと取り組むことを楽しみにしています。
将来の方向性
私はnbdevと完全に縁が切れたわけではないと考えています。適切な時期が来たら、このプロジェクトまたは関連するアイデアを再訪するかもしれません。Positがリテラートプログラミングと探索的プログラミングの分野で行っている仕事には興奮しています。そこにはnbdevが探求したアイデアの多くが含まれています。WasimはPositのチームに加わったので、彼らが何を生み出すかを見るのが楽しみです。
次に私が取り組んでいることについては、それに関する考えは別の記事に譲らなければなりません😊。
- このプロセスで何度も燃え尽き症候群を経験しましたが、当時はその理由がわかりませんでした。驚くことではありませんが、一度にあまりにも多くのことに集中しようとすることが根本原因でした。↩︎
- LLMを使ったコーディングがどのように見えるか、特にノートブックでのアイデアについては、このデモを参照してください。↩︎
- ホスト型ソリューションの問題は、これが私自身が使いたいものではないことです。GitHub/GitLab以外の何かでコードをホストしようとする自分自身を想像できません。↩︎
- 共有された確信がなければ、全員を結びつける接着剤がなく、人々は離れていってしまいます。↩︎
- これについては将来の記事で詳しく共有します。↩︎
- これが常に当てはまるとは思いませんが、グループの力学によっては真実となり得ます。↩︎
- 私たちは以前にPositのJJ Allaireと提携し、Quartoの上にnbdevを構築しました。私は現在、Positの製品と戦略についてアドバイスをしています。彼らのロードマップには、今は公開できない追加プロジェクトがあります。↩︎
原文を表示

nbdev is a software development tool based on Jupyter that feels like its from the future.
A few friends have asked me why I decided not to commercialize nbdev, especially after putting lots of work into the project, including leaving my full-time job to work on it. So I thought I would write a short post to explain my reasoning.
nbdev is an innovative software development framework for Python that embraces literate and exploratory programming. I worked on nbdev from 2020-2023 with Jeremy Howard and, later, Wasim Lorgat. I had the privilege and excitement of exploring the boundaries of developer tools and exploratory programming while working with very talented software engineers. In addition to creating a tool many people enjoyed, I enjoyed using nbdev for personal and professional projects.
While conducting product research, I interviewed many developers from different backgrounds to understand their pain points and needs. All developers I talked to struggled with one key challenge: it was difficult, if not impossible, to convince other engineers to use nbdev.
The following are the biggest reasons that prevented adoption:
Friction in onboarding engineers. In many companies, there are often existing Python projects, and it can be detrimental to maintain different ways of doing things when a company has already settled upon one way that it has built processes and tools around.
Collisions with the rest of the software development stack: it was (and still is) a pain to version control notebooks in a way that’s conducive to collaboration. For practical purposes, you cannot perform code reviews of notebooks on GitHub without purchasing a tool called ReviewNB. So instead of convincing people to use nbdev, you have to convince them to use nbdev and ReviewNB. This makes the barrier to initial adoption considerably high - as procuring software in many organizations is a non-trivial process involving security review, compliance, legal and other stakeholders.
I viewed solving the above problems as potential opportunities for commercializing nbdev.
Jeremy, Wasim, and I eventually settled on the idea of “WordPress for developers,” a hosted site allowing people to create and share nbdev projects. We thought this would be an excellent way to get people to try nbdev without installing anything. The idea was to narrow the audience to people interested in hosting projects on a platform that promoted exploration and sharing, similar to Glitch that was as easy to use and pragmatic as Wordpress.
Around the same time we began discussing hosted tools, the machine learning world experienced a tectonic shift due to the explosion of Generative AI, namely Stable Diffusion. fast.ai, the organization that created nbdev, was also changing its focus. fast.ai’s prime directive was to make deep learning accessible to as many people as possible, and generative AI was too important to ignore. Accordingly, Jeremy placed his full attention on a Stable Diffusion course.
This pivot caused some turbulence as we navigated the different priorities of nbdev, generative AI research, and making money. We eventually settled on offering consulting services for everything related to fast.ai in the form of fast.ai partners, which would allow us to bootstrap ourselves financially and embrace the larger mission of fast.ai (including generative AI and research). Eventually, I found the splintered focus across so many areas to be unproductive1 and decided to step away from everything except consulting to regain my footing.
Soon after that, ChatGPT emerged onto the scene and caused further shifts in machine learning that were orders of magnitude larger than their text-to-image predecessors. Pretty soon, all of my clients were interested in language models, and I found myself working exclusively on operationalizing them (a skill that I have cultivated by working in machine learning for 20+ years). Additionally, LLMs profoundly changed the nature of software development, especially the kind of software development that nbdev was designed to support2. These factors and those discussed earlier suggested it was a good time to step away from nbdev and focus on other things.
I learned some important lessons during this process:
Just because you love a project and find it useful, that doesn’t necessarily imply that it’s ripe for commercialization. I always struggled to gain conviction that there was a good business model for nbdev.3 Instead, I pursued this path because I was drawn to the idea of starting a business with people I really liked. Ultimately, I learned that at least one person needs strong conviction in addition to being excited about the people you are working with - not just one or the other.4 I also learned that it’s important to be honest with yourself about your (and your team’s) level of conviction and not try to force something that isn’t there.
Listen to your instincts. I ignored my instincts on multiple occasions throughout this journey. As I’ve grown older, I’ve learned to make this mistake much less often, but I could have done better here.
Don’t be afraid to pivot. I think we avoided unnecessary churn by steering clear of a situation that wasn’t promising. I’m much more excited about the work I’m doing now.5
Own your own brand. My professional brand became increasingly tied to fast.ai and my friend Jeremy Howard. I’m grateful for the growth I’ve experienced under this mentorship – but I believe it is important to build your own distinct brand and identity. I discovered it can be challenging to build your own brand when you are working on someone else’s project6, and is something I struggled with. I’m looking forward to working on this more.
Future Directions
I suspect that I’m not completely finished with nbdev. I may revisit the project or related ideas when the time is right. I’m excited by the work Posit is doing in the areas of literate and exploratory programming, which include many of the ideas explored in nbdev. Wasim has even joined the team at Posit, so I’m excited to see what they come up with.7
Regarding what I’m working on next – I’ll have to save my thoughts on that for another post 😊.
I burned out several times during this process, but I didn’t realize why at the time. Not surprisingly, trying to focus on too many things at once was the root cause.↩︎
See this demo for ideas on how coding with LLMs might look like, especially with notebooks.↩︎
The problem with the hosted solution is that this is not something I would want to use. I can’t picture myself trying to host code on something other than GitHub/GitLab.↩︎
Without shared conviction, there is no glue holding everyone together and people can drift apart.↩︎
I’ll share more about this in a future post.↩︎
I don’t believe this is always the case, but it can be true depending on the dynamics of the group.↩︎
We previously partnered with Posit and JJ Allaire and built nbdev on top of Quarto. I’m currently advising Posit on their product and strategy. They have additional projects on their roadmap that I cannot disclose now.↩︎
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み