2018年サイトレポート

2019年7月10日



2019年の初めに、martinfowler.comの状態をレビューするのは良いアイデアのように思えます。私は2014年にサイトの簡単なレビューを行ったので、トラフィックを改めて見直すにはちょうど良い時期です。

全体のトラフィック

まず、過去数年間のサイト全体のトラフィックを見ていきます。

月間ページビュー月間訪問数月間訪問者数年間訪問数合計年間ページビュー合計
2011302,732207,684138,9722,557,7033,671,818
2012354,282226,270153,2042,802,1014,238,904
2013408,182254,515173,0623,047,0464,848,783
2014491,761339,570222,8003,984,2465,855,504
2015575,146404,062263,6464,991,1617,058,432
2016626,873453,887298,1825,594,0107,657,711
2017647,714480,498312,3145,867,2577,916,532
2018713,802519,731334,2606,256,3748,457,847

月間数値は、その年の月間合計の中央値です。年間数値は、その年の合計です。

過去数年間でトラフィックは着実に増加しています。

年ごとに見るのは1つの観点ですが、日ごとのページビューを見るのも便利です。

これにより、トラフィックの日々の変動がより良く把握できます。また、一般的なパターンも明確に示されています。サイトへのトラフィックは、週末よりも平日(人々が仕事をしているとき)の方が大幅に多くなります。週末にはトラフィックが約半分に減少するのは、かなり一貫しています。

このトラフィックにはもう1つ、グラフでは見えにくいものの、平日のページビューのみを表示するとより明確になる規則的なパターンがあります。

年末年始の休暇により、平日のトラフィックが週末レベルまで低下するため、年末に著しい減少が見られます。

普遍的な記事に焦点を当てる

トラフィックの全体的な数値は1つの要素ですが、私が本当に気にかけていることの良い指標となるでしょうか?私の目標は、読者にとって長期間にわたって役立つ記事を執筆(および公開)することです。記事が持続的なトラフィックを得ている場合に成功だと感じます。そのため、そのような記事がいくつあるかをグラフ化するのは有用だと考えています。毎月1000件のユニークページビューを切り捨ての数値として選択しました。

これは、より厄介な傾向を示しています。2016年頃までは、そのような人気のある記事が急速に増加しましたが、その後、停滞しています。これは、私がリファクタリングの書籍に焦点を当て始めた時期と一致するため、それほど驚くべきことではありません。ウェブサイトにもっと注意を向けるようになったら、2016年以前に見られた増加が見られるようになることを願っています。

このようなトラフィックを得ている記事を探すとき、私はしばらくの間公開されている記事を見ています。ほとんどの記事は、最初の数日間で多くのトラフィックを得て、その後徐々にトラフィックが減少するという、非常に急な指数関数的なトラフィックの減少を示します。

2018年以降に公開されたすべての記事について、平日の記事の経過年数に対するページビューの中央値

Y軸が平方根スケールであっても、急激な指数関数的な減少が見られることに注目してください!

中央値の記事は、公開後約1か月後に1日あたり50ページビューを下回りますが、私がここで関心を持っているのは、そうではない記事です。(1日あたり28ページビューを取得する記事は、月間約1000ページビューにほぼ相当します。)

したがって、私は普遍的な記事の個人的な定義を思いつきました。月間ユニークページビューの中央値が1000を超える年が少なくとも1年あり、1000を超えるページビューが少なくとも4か月あった記事。このテストをサイト上の記事に適用すると、170件の対象となる記事が作成されます。

パス20112012201320142015201620172018
/2074619635205902245625014278532776330201
/aboutMe.html32733280354635763600337032883786
/agile.html41043714415640183896392338474691
/articles.html196812207965184823546448
/articles/201701-event-driven.html33143748
/articles/201708-tw-sale.html1911339
/articles/201803-refactoring-2nd-ed.html2006
/articles/agile-aus-2018.html16243
/articles/agileFluency.html1541197014411604144114963522
/articles/agileOffshore.html1748125811061071905748494392
/articles/apple-notes-restore.html11611302909326180
/articles/architect-elevator.html2194530
/articles/asyncJS.html2324171223641540714484
/articles/bigData/19810301871501448699
/articles/break-monolith-into-microservices.html10945
/articles/collection-pipeline/46571522160518442208
/articles/consumerDrivenContracts.html54068265325124286459655475395
/articles/continuousIntegration.html134391097411057114121078010604102789868
/articles/designDead.html33533168335632053086194719491754
/articles/dipInTheWild.html1606810793960919900
/articles/distributed-objects-microservices.html176010001026856825
/articles/enterprisePatterns.html103692390512471244125212481402
/articles/enterpriseREST.html1639124882368169215491214
/articles/evodb.html26052338255421981974180029143026
/articles/extract-data-rich-service.html4350
/articles/feature-toggles.html6501846612780
/articles/injection.html3021226616290192894625110247202352821862
/articles/is-tdd-dead/62243080224617201482
/articles/itsNotJustStandingUp.html46466096562459665395846875787514
/articles/languageWorkbench.html1162858636600548470376346
/articles/lean-inception/11551153
/articles/lmax.html119825920578853274587368435033752
/articles/microservice-testing/1450654568220107599480
/articles/microservice-trade-offs.html3015297229753164
/articles/microservices.html3239145709487794355738270
/articles/mobileImplStrategy.html1094421169139826242
/articles/mocksArentStubs.html976010314110021155412416119391074810919
/articles/modernMockingTools.html21602622442041349888
/articles/multiMobile/274412163701781136839
/articles/newMethodology.html75324480405436243692281821401830
/articles/nonDeterminism.html106183090611041112116012601282
/articles/nosqlKeyPoints.html1820720502470345241260
/articles/practical-test-pyramid.html11192
/articles/products-over-projects.html176663200
/articles/rake.html2648215618892080186611901077980
/articles/refactoring-2nd-changes.html1444
/articles/refactoring-2nd-ed.html10851
/articles/refactoring-dependencies.html2605542543521
/articles/refactoring-pipelines.html2207840870823
/articles/refactoring-video-store-js/26341142814
/articles/replaceThrowWithNotification.html116728148748911047
/articles/richardsonMaturityModel.html24903584492668549357109761234613037
/articles/rise-test-impact-analysis.html2338606
/articles/serverless.html245141924721276
/articles/talk-about-platforms.html1314
/articles/testing-culture.html2298803584412421
/articles/useOfMetrics.html920158014011338964772
/articles/vagrant-chef-rbenv.html132783626414865
/articles/web-security-basics.html1080050344404
/bliki/29142684285527572839246219581646
/bliki/AnemicDomainModel.html27543040346437874194452943964806
/bliki/AntiPattern.html1006148124138
/bliki/BlueGreenDeployment.html31354484919033724630071647304
/bliki/BoundedContext.html21263916510666128450
/bliki/BranchByAbstraction.html20720433410681174135913391650
/bliki/BusinessReadableDSL.html625893109512541316772823510
/bliki/CanaryRelease.html7221412280338065420
/bliki/CircuitBreaker.html21013583540975818850
/bliki/CodeSmell.html3205766646968229168111012
/bliki/CommandQuerySeparation.html4607387809101013107313301524
/bliki/ContinuousDelivery.html89316752590312029532332
/bliki/ContinuousIntegrationCertification.html1880546
/bliki/ContractTest.html1904
/bliki/CQRS.html5380687869031061414153157961937321914
/bliki/DataLake.html121512281305946
/bliki/DDD_Aggregate.html35410141486187922922924
/bliki/DeploymentPipeline.html64512821496190415821428
/bliki/DevOpsCulture.html1017131813661408
/bliki/DomainSpecificLanguage.html12671012822771748755689591
/bliki/FeatureBranch.html14261494163620372402224723602476
/bliki/FeatureToggle.html9081356191329303842361225362047
/bliki/FluentInterface.html17061632189218821886182017981776
/bliki/GivenWhenThen.html80911681752286634244476
/bliki/ImmutableServer.html87869087612561176858
/bliki/index.html35783536274134145724221
/bliki/IntegrationContractTest.html1059120028869910421204
/bliki/IntegrationTest.html2741
/bliki/InversionOfControl.html19161761187318442370249320081986
/bliki/MemoryImage.html5413255121122116240454339
/bliki/MicroservicePremium.html2010139816581724
/bliki/MicroservicePrerequisites.html20161091121719422220
/bliki/MonolithFirst.html2997202025442948
/bliki/NosqlDistilled.html1569
/bliki/OrmHate.html69675410421590151911721264
/bliki/PageObject.html152822443147429645884100
/bliki/PolyglotPersistence.html52551876240426163052260925902311
/bliki/PresentationDomainDataLayering.html2092579484530
/bliki/ReportingDatabase.html16837038276284692610521026
/bliki/RulesEngine.html485926118214181614183920961676
/bliki/Serverless.html1075615470
/bliki/ShuHaRi.html8713131047480997011211158
/bliki/StranglerApplication.html2632994646691173207025843321
/bliki/TechnicalDebt.html17241486166719492055228720371964
/bliki/TechnicalDebtQuadrant.html8396827809551356135914481746
/bliki/TellDontAsk.html8228701139137416151841
/bliki/TestCoverage.html7617049291210152215341688
/bliki/TestDouble.html3363474987421102139016452176
/bliki/TestPyramid.html630115022853127449864846784
/bliki/TolerantReader.html86544915202318208720531680
/bliki/TwoHardThings.html396840233031594330447044624888
/bliki/UbiquitousLanguage.html341194921192897113514181792
/bliki/UnitTest.html16371612183619782119
/bliki/ValueObject.html1826946489701240131421562308
/bliki/Yagni.html2374179022352448
/books.html159568319
/books/4276402825892368243422572159
/books/buying.html1248125611131114948930934
/books/continuousDelivery.html46682211881788178217231543
/books/dsl.html1364176219612107188419682016
/books/eaa.html6521743176667546689064465960
/books/nosql.html27922536203819041130892778
/books/refactoring.html1214164229423302359938064602
/delivery.html13941964212924662959170713641282
/design.html55925424664071726862696272787614
/dsl.html29082230222720691943522464410
/eaaCatalog/57155830567855265184514348984450
/eaaCatalog/activeRecord.html15151600167817921650150713781216
/eaaCatalog/classTableInheritance.html6498771012940960872820694
/eaaCatalog/dataMapper.html28882917286625322412223520041608
/eaaCatalog/dataTransferObject.html16451895227725372878292629352906
/eaaCatalog/domainModel.html24072526250824932501270026252507
/eaaCatalog/frontController.html1040976762623536486451368
/eaaCatalog/index.html28902718266027982586232924122030
/eaaCatalog/repository.html37684569462046585216558657435032
/eaaCatalog/serviceLayer.html18201772189818342138213820541806
/eaaCatalog/singleTableInheritance.html1057124213781402134211811081862
/eaaCatalog/tableDataGateway.html162613901130964887794743606
/eaaCatalog/transactionScript.html12821408153416061524164317221701
/eaaCatalog/twoStepView.html12921132776658474356293216
/eaaCatalog/unitOfWork.html32883926412042344002422239333325
/eaaDev/8107806257511116105411071092
/eaaDev/AuditLog.html4566495505803272557501236
/eaaDev/DomainEvent.html43839041255259270510961152
/eaaDev/EventAggregator.html9821040113210121004950942942
/eaaDev/EventCollaboration.html51750734466874298011541197
/eaaDev/EventNarrative.html12012411614420087811551151
/eaaDev/EventSourcing.html25913628404658287549104121292816230
/eaaDev/ModelViewPresenter.html175813901156867706514458336
/eaaDev/Notification.html1004955248165316302254274
/eaaDev/PassiveScreen.html23402011176514681306124815201286
/eaaDev/PresentationModel.html44073760323230473356221521121778
/eaaDev/SupervisingPresenter.html22031770162513301203944786610
/eaaDev/timeNarrative.html6806536527621065922892840
/eaaDev/uiArchs.html73667840670974507590674157584506
/intro.html36483695397940443928387840604496
/microservices/10470819490237518
/nosql.html412365345645518220191110904
/photos/109.html1107
/photos/112.html1517
/refactoring/6585774077987560830875488175
/refactoring/catalog/832118335043398410240013749
/refactoring/catalog/extractMethod.html7228549501134117412101223
/refactoring/catalog/index.html30573359761591409318302
/refactoring/catalog/replaceConditionalWithPolymorphism.html665742718797109311871201
/refactoring/catalog/replaceNestedConditionalWithGuardClauses.html300368594812100615321698
/refactoring/catalog/replaceRecursionWithIteration.html5016168361183137210841059
/refactoring/sources.html17652118
/tags/API design.html33637454283792410681314962
/tags/domain driven design.html14317047315022240289233733012
/videos.html3504366038923540

各年は、その年の月間ユニークページビューの中央値を示し、1000を超える場合は緑色で表示されます。

他の著者

ここ2年間、リファクタリングの書籍に多くの注意を向けているため、martinfowler.comで公開されているものの多くは、他の人が執筆した記事です。これらにはかなりの時間がかかります。私は開発編集者として行動し、これらの記事に取り組むためにかなりの時間を費やすことがあります。

サイトに戻るにあたり、妥当な質問は、他の人が執筆した記事と私が執筆した記事の間に違いがあるかどうかです。

これを検証するために、2011年から2017年の間に公開されたすべての記事を、私(著者または共著者)が執筆したものと、他の人が執筆したもので分割しました。次に、2018年の月間ページビューの中央値をプロットしました。

月間5000ページビューでY軸を切り捨てたので、それよりも多くのトラフィックを得た少数の外れ値がボックスプロットを押しつぶして読めなくなるのを防ぎます。データは依然としてボックスプロットマーカーに影響を与えます。

ご覧のとおり、平均して他の人が執筆した記事の方が私の記事よりも優れており、他の人が執筆した記事の中央値は586ページビューであるのに対し、私の記事の中央値は167ページビューでした。この期間中の記事のうち、私の記事は月間1000ページビューを超える平均が26件、他の著者の記事は10件でした。もちろん、ここには多くの選択バイアスがあります。他の人が執筆したすべての記事には多くの労力が費やされていますが、私の記事の多くはよりカジュアルであるため、多くの記事のページビュー数が少なくなっています。しかし、このことから、martinfowler.comで記事を公開するために他の人と協力することは、自分の執筆だけにエネルギーを集中するよりも価値があるという結論を下すことができます。

トピックページ

サイトのナビゲーションメニューを更新する準備の一環として、さまざまなトピックページの人気度を見てみようと思いました。

これはかなり限定的なデータポイントであるため、あまり読みすぎたくありません。現在、3つの人気レベルがあります。リファクタリング、デザイン、マイクロサービスのページがトップレベルにあります。(ただし、マイクロサービスは2番目のレベルに落ちているようです。)2番目のレベルは、アジャイル、サイト紹介、概要ページです。最下位の3つは、デリバリー、DSL、NoSQLのページで、後者は2014年に大きな増加を見せた後、着実に減少しました。

普遍的な記事の経過年数

このサイトで覚えておくべき重要なことの一つは、人気のある記事の多くが古いということです。2018年に定番記事だったページの公開日を見てみましょう。

件数
20006
200314
20043
20056
20069
20093
20103
20116
20128
20137
201415
20157
20164
20173
20189

これらの103ページのうち38ページは、最初に公開されてから10年以上経過しています。(ホームページのようなナビゲーションページはこのリストから削除しました。)


重要な改訂

2019年7月10日: 定番記事の年数を追加

2019年4月11日: トピックグラフを追加

2019年3月7日: 初公開