Butbeforewediveintothat, wouldyouliketotellourlisteners a littlebitmoreaboutyourself?
その前に、あなた自身についてもう少しお聞かせいただけますか?
Sure.
もちろんだ。
Hi, I'm Evan.
やあ、僕はエヴァンだ。
I am, I havebeenanindependentopensourcedevelopersince 2016.
私は、2016年から独立したオープンソース開発者です。
And I workedonVUE.
そして私はVUEで働いた。
I stillactuallystillworkonVUE.
実はまだVUEで働いているんだ。
I workonVEET.
私はVEETで働いている。
Andjustrecentlywestarted a companycalledVoidZeroandfocus a bitdeep, evendeeperthatgoesinto, youknow, thefullJavaScripttoolchain, startingfromservers, no, no, no, startingfromparserstolinters, formatters, bundlers, transformers, everythingthatsupportshigherleveltooling.
Soin a lotofways, thereasonpeopleloveVEETisbecausewekindofhidethiscomplexityawayfromthemandtrytogiveyou a verysmoothandconsistententrypointsothatyoudon't needtothinkaboutthesethings.
Andweneedthisbundlertobealsobuiltontopof a toolchainthatcan, youknow, handleallthedifferentconcerns, likestartingfromtheASTallthewaytominificationandproduction, bundling, right, through a consistentsystem.
So I thinkthat's, thesearethetwomainpremisesthatwe'resortofcenteringthetoolchainaroundisunification, butwithoutsacrificingtheabilityto, ofcomposability.
Soyou'vebeen a independentdeveloperfor a whileandprobablyoneofthemostsuccessful, beingabletoworkon a lotofopensourceprojectsandproduce a lotofverysuccessfulopensourceprojectswhileworkingmostlyonyourown.
Zero, youhave a fewpeoplecomingtojoinyoutolikeworkonthisecosystemtooling.
ゼロ、このエコシステム・ツールの作業をするために、何人かがあなたに加わることになる。
Sowhydidyoudecidetomakethattransitionfromindependentdevelopertostarting a company?
では、なぜ独立系デベロッパーから起業に踏み切ったのですか?
Andlike, whataboutthetimingorthecircumstancesmadethis a differentchoice?
そして、そのタイミングや状況が、この選択を違ったものにしたのか?
So I thinkoverall, I wouldactuallyconsidermyself a prettyriskaverseperson.
だから全体的に見れば、僕はかなりリスクを嫌う人間だと思う。
Someofthebiggestdecisions I'd madeinmylife, I kindoffeellike I justswingedit, butlikegoingfullyindependenttoworkonVue, I didn't reallyknowwhatthatwouldentail. Luckily, I think I built a lifestyleentrepreneurship, kindoflifestylebusinessthingaroundVue.
Butalsothatmeanstheconversionrate, becauseit's not a for-profitbusiness, likewedon't doaggressivemarketingorwedon't pushfeaturestosortofdriveprofitorrevenue.
I thinkitallcomesdowntothegoalyou'retryingtoachieve.
すべては、あなたが達成しようとしている目標に起因すると思う。
Forme, Vueis a lifestylebusinessthing, and I thinkthat's workingvery, verywellforme, right?
僕にとって、ヴューはライフスタイル・ビジネスなんだ。
I'm happyaboutthat.
それは嬉しいね。
Butontheotherhand, when I thinkaboutwhereViteisgoingandthinkingaboutthepotentialthatVitehasandthinkingabouthowwecanactuallymaximizethatpotentialandmakethething, youknow, wehopeitcanbe.
And I don't seeithappeningwiththissortofmorepassivemodeloflikejusthopingpeopledonate, helpingpeoplesponsor, orhopingsomeonecomesupwith a businessanddecidestodonatebacktoVite, right?
Sothatalsoinevitablybringsin a questionofexpectationsfrominvestmentsandreturns.
そのため、必然的に投資やリターンへの期待も問われることになる。
And I thinkoneoftheothergoalsofstartingthecompanyisbecause I alwaysfeltlikeit's a bitsadthattheJavaScriptecosystemisrelyingon a lotofcriticalinfrastructurethat's maintainedbypeoplethat's eitherunderpaidorjustaslaboroflove, right?
And I thinkit's difficultbecausethereissomuchlogisticsthatyouhavetogothroughtoactuallysetuptheproperorganizationlike a foundationsandaligntheincentives.
So I thinkVoiceZeroisalso a differentattemptwheretheendgoalweholdiswehave a sustainablebusinessmodelthat's mostlycomingfrombiggercompanies, enterprise, that's payingmoneythatallowsustokeepimprovingtheseopensourcepartsandkeepitfreeandopensourceforindividualusers, forsmallercompanies, startups, sothatmorepeoplehave, moreJavaScriptdevelopershavefreeaccesstohighqualitytools.
Theplanislikelytobuild, sowedohaveplansonbuildingassociatedservicesthat's tiedintoeachstepoftheway, becausewhenyouhave a toolchain, youhavenaturaltieinto a lotofmetadataeverystepoftheway.
Butlikeifyou're a reallylargeorganizationandyou'redoing, you'rebundling a lotofcodeandyou'relikerunning a lotoftransformsanddoing a lotofcustomstuff, youstarthittinginthosethings.
So I thinkitmakessenseto a largedegreetosay, hey, you'vejustgotmoreneedsandwehavetoolstosortofsolvethoseneeds, whereas, youknow, 80 percentofpeoplewon't everhitthatscalingpoint.
80%の人はスケーリングポイントに到達することはないだろう。
Totally.
まったくだ。
Yeah.
そうだね。
What a partofthepartofthereasonswebelievethereis a marketforthisisbecausehalftheteamishaveworkedatByteDanceontheirWebInfrateam, andtheysupportsomeofthelargestscaleJavaScriptapplicationsthatwehaveeverheardofintheindustry.
SospeakingoftheOXCparser, I kindoffinditfunnythatitseemslikethatprojectinitselfstartedinthesamewaywherelikeyouwerejustcreating a thingtofor a sideproject.
SorewritingJavaScript, no, becauseit's goingtobetooslow.
JavaScriptを書き換えるのは、遅すぎるからダメだ。
Sowewanttodoitin a comparativenativelanguage.
だから比較母国語でやりたい。
AndwelookedatGo, there's alreadyESBuild, whichis a greatproject.
Goも検討したし、ESBuildもすでにある。
I thinkthedownsideofESBuildisinordertoachievethemaximumperformance, ESBuildisarchitectedin a waywheremanydifferentconcernsarelayeredacrossasfewASTpassesaspossible.
AndthatmakingexternalcontributemakinglikebasicallyextendingESBuildin a reasonablewayquitedifficult, becauseyou'regoingtobeaddingmorebranchesintheseASTpasses.
AndtherearesometechnicaldecisionsinRSPackthatmadeitessentiallytoolateforthemtoswitchtoRxE, becauseit's alreadykindofbuiltontopofSFCfor a verylongtimebeforeRxEwasevenusable.
SotheteamatWebInfrahas a lotofexperiencedealingwith, youknow, Rustlanguagetoolchainsandsystems.
だからWebInfraのチームは、Rust言語のツールチェーンやシステムを扱った経験が豊富なんだ。
And I thinkhedistilled a lotofthelearningsintothedevelopmentofRxEinitiallyas a proofofconcept.
そして、彼は多くの学びをRxEの開発に集約し、当初は概念実証として開発したのだと思う。
Andwhenitbecame a bitmoreproductionready, itshowedthat, okay, allthesethingsdidpayoff, likebothsRubyCandRxEarewritteninRust, butthereis a prettysignificantperformanceadvantagethatRxEhas.
I thinkinExcel, RichHarrishasalsowrittenquite a fewtoolsaroundthis.
エクセルでは、リッチ・ハリスもこのあたりのツールをかなり書いていると思う。
But I believethatshouldbe a first-partyconcernof a languagetoolchain.
しかし私は、それは言語ツールチェーンが第一に考えるべきことだと考えている。
SoRxEactuallycomeswith a semanticanalysisAPIthatallowsyoutoquerythisinformationaftertheparsingisdone, becauseasyouparse, italsocollectsandstoresthisinformationalready.
A lotofthesearegreatforIDEusecases, butnotnecessarilybestifyouwanttodotheothertasks, forexample, getthefastestpossibletransforms, andalsobasicallybeabletousetheASTformultipletasksalong a longpipeline.
Sowhenwe, I thinkBoschiancouldprobablysharemoreinsightsonthisfront, but I thinkthedifferencebetweentheASTandCSTwasalso a majorreasonwhereBoschianwaslike, wedon't reallywanttodothatinOXC.
ASTとCSTの違いは、ボスキアンがOXCではあまりやりたくないと言った大きな理由でもあると思う。
But I thinkit's unfortunatethatRoamdidn't gettoactuallykeepgoingbeyondwhatitisnow.
しかし、ロームが今以上に前進し続けることができなかったのは残念なことだと思う。
But I thinkitstillshowedpeoplethatit's possibletowritehighqualitytoolingfor
しかし、それでもなお、次のような高品質のツールを書くことが可能であることを人々に示したと思う。
JavaScriptinRust, because a lotofpeoplearehappywithBiomeas a flowmatternowadays.
JavaScriptをRustで。最近は多くの人がBiomeのフローマターに満足しているからね。
Andit's alsopartofthereasonwhywe'renotin a hurrytoworkonflowmatter, becauseitalreadykindoffillsthatgap.
ButtheinterestingpartabouthavingJavaScriptpluginsrunningin a Rust-basedtoolisthereistheoverheadofsendingdatabackandforthbetweenthetwolanguagesbecausetheydon't sharememorybydefault.
SothatallowsustoessentiallygetVitebuildspeeddowntomaybetwoto 2.2 and a halftimesslowerthanrawRodanwithoutanyJavaScriptplugins, which I thinkisactuallydecent.
IftheIDendswith a certainextension, wedothis, otherwisewejustreturnearly.
IDが特定の拡張子で終わっていればそうするが、そうでなければ早めにリターンする。
Thisisactuallywastefulifyou'reusingthepluginin a Rustbundler, becausethebundleressentiallydoes a RusttoJScall, figureoutitactuallydoesn't needtodoanything, butitalreadypaidthecost.
It's goingtobecompatiblebecausewhenyouusetheobjectformatforyourhooks, soyouspecify a logicinthehandlerproperty, andthenyoucanhave a filterpropertytosay, onlyapplythishookiftheIDmatchesthisregexorsomethinglikethat.
Theotherthingiswe'reseeing a lotofpluginsinthewilddoingverysimilarthings.
もうひとつは、似たようなことをやっているプラグインがたくさんあることだ。
Forexample, inthetransformhook, a lotofpluginstaketheincomingsourcecode, parseitusing a JavaScriptparserinthehook, andthendotheirownsemanticanalysisorASTtraversal, andthenusesomethinglikemagicstringtoalterthecodeandgenerate a newcodeandalsoneedtogeneratethesourcemapandthenpassitbacktothebundler.
Forexample, insteadofspawningtheworkerthreadsthrough a Node.jsmainprocessandthengetthedatabackandsenditbacktoRust, welettheworkerthreadsdirectlysendthedatabacktoRust.
Sothere's still a lotofworkthatwe'reexploringinthisarea.
だから、この分野ではまだ探求していることがたくさんある。
But I'm kindofoptimisticthatfor a long-termgoalforusistotacklethis, stillallowuserstoeasilywriteJavaScriptplugins, butwithoutseverelycompromisingtheoverallperformanceofthesystem.
Soitkindofsoundslikethere's goingtobekindof a dividehereatsomepointwherethere's like, there's a bunchoflegacyrolluppluginsthatstillworkinthenewarchitecture.
It's a bitmorebatteryincludedbecausethat's alsothemostpragmaticwaytogetthebestpossibleperformance.
可能な限り最高のパフォーマンスを得るための最も現実的な方法でもあるからだ。
Yeah, itmakes a lotofsense.
ああ、とても理にかなっている。
I'm reallyinterestedtoseewhat y'allendupcomingupwith, withtheASTtransforms, because I feellikethisis a prettycommonproblemislike, ifyouneedtodoveryperformant
というのも、これはかなり一般的な問題のような気がするからだ。
ASTtransforms, I mean, youhavetheaddedproblemoflikegoingacrosslanguageboundaries.
AST変換は、つまり、言語の境界を越えるという問題が加わるんだ。
Thisjustremindsmeof a randomprojectthat I sawtheotherdaycalledlikerenderfromthisguynamedEricMann.
これは、先日見たエリック・マンという男のレンダーというランダムなプロジェクトを思い出させる。
Andit's like, it's a bytecodethatrunsinJavaScriptthatlikeis a renderingengineorwhatever.
JavaScriptで実行されるバイトコードで、レンダリングエンジンか何かのようなものだ。
Andit's justlike, I don't know, there's like a lotofinterestingthingsinthespacewhenyoustartthinkingaboutlike, howcanwemakelikemarshallingandserializationvery, very, veryfast.