å æ¥ãTwitterã®æ¨è¦ã¢ã«ã´ãªãºã ãGitHubã§å ¬éããã¾ããã
Twitter recommendation source code now available to all on GitHub https://t.co/9ozsyZANwa
— Elon Musk (@elonmusk) 2023å¹´3æ31æ¥
Twitterä¸ã§é常ã«çãä¸ãã£ã¦ããããã§ã«ããããªæ¹ãã¢ã«ã´ãªãºã ã«å¯¾ãã¦è§£èª¬ããã¦ãã¾ãã å人çã«ãèå³æ·±ãã¨æã£ã¦ããã®ã§ãä½çªç ãããããã¾ãããèªåãåå¿é²ãæ¸ãã¦ããããã¨æãã¾ãã
å ¨ä½å
ä»åã®å ¬éãããã¢ã«ã´ãªãºã ã¯ããFor you (ããªãã¸ã®ãããã)ãã«è¡¨ç¤ºãããã¢ã«ã´ãªãºã ã«ãªã£ã¦ãã¾ãã
å ¨ä½ã®æ§æ
ã¾ãã¯å ¨ä½ã®æµãã確èªãã¦ããããã¨æãã¾ãã æ¨è¦å ¨ä½ã®å¤§ã¾ããªæµãã¯ä¸è¨ã®ããã«ãªã£ã¦ããããã§ãã
ãããããä¸è¨ã®2段éã®å¦çã«åãããããã§ããããã®å¦çãè¡ãããçµæãããããé¸å®ããã¦ããããã§ãã
- ãã¼ã¿åå¾ãç¹å¾´éä½æ
- åè£éåä½æãFeedä½æ
ãã¼ã¿åå¾ãç¹å¾´éä½æ
使ç¨ãããã¼ã¿ã«ã¤ãã¦ã¯ä¸»ã«ä¸è¨ã®3ç¹ãæãããã¦ãã¾ãã
- Social graph
- Tweet engagement
- User data
ãããã®ãã¼ã¿ã使ç¨ãã¦ã6種é¡ã®ã³ã³ãã¼ãã³ãã§Featureãä½æãã¦ããããããã使ç¨ãã¦å®éã®æ¨è¦ãè¡ã£ã¦ããããã§ãã
- GraphJet
- å¾è¿°
- SimClusters
- å¾è¿°
- TwHIN
- å¾è¿°
- RealGraph
- å¾è¿°
- TweepCred
- Twitterå ã§ã®ã¦ã¼ã¶ã¼ã®è©å¤ãè¨ç®ããããã®Page-Rank
- Trust & Safety (T&S)
- Not safe for workãªã©ãæ害ã³ã³ãã³ãã§ãããã©ããã«é¢ããå¤å®
ãããã«ãã£ã¦çæãããç¹å¾´éãHome Mixerã«éããã¾ãã
åè£éåä½æãFeedä½æ (Home Mixer)
å®éã®Homeç»é¢ã«è¡¨ç¤ºãã¦ããè¦ç´ ã決ããå¦çã¯ãHome Mixerã¨ããã³ã³ãã¼ãã³ããå½¹å²ãæ ã£ã¦ããããã§ãã
ããã°ãè¦ãéããTwitterã®æ¨è¦ã§ãä¸è¬ç (?) ãªæ¨è¦ã¨åæ§ãtwo stage recommendationãè¡ããã¦ããããã§ãã 主ãªåä½ã¨ãã¦ã¯ãä¸è¨ã®3step (Mixing and Servingãå ¥ããã¨4step) ãããªã£ã¦ããããã§ãã
- Candidate Sourcing (1st stage)
- æ§ã ãªã¢ã«ã´ãªãºã ã§é¸å®ãããå®éã«æ¨è¦ããåè£ãã¤ã¼ããåé
- Raking (2nd stage)
- åéããåè£ãã¤ã¼ããè¯ããããªé ã«ä¸¦ã¹æ¿ã
- Heuristics & Filtering
- ãããã¯ããã¦ã¼ã¶ã¼ã®ãã¤ã¼ãããã¾ãè¯ããªãã³ã³ãã³ãããã§ã«è¦ããã¤ã¼ããé¤å¤ãããªã©
Candidate Sourcing
Candidate Sourcingã§ã¯ãåã¦ã¼ã¶ã¼ã«å¯¾ãã¦1500件ã®ãããããåè£ãã®Tweetãé¸å®ããã¾ãã
Candidate Sourcingã§ã¯ãèªåãFollowãã¦ããã¨ããããï¼InNetworkï¼ã¨Followãã¦ããå¤ï¼Out-of-Network Sourcesï¼ããã®ä¸¡æ¹ããæ¨è¦åè£ãé¸å®ãã¦ãã¾ãã ãããã¯ããããããããã50%ãã¤åå¾ãã¦ããããã§ãã
â»ç´°ããã¢ã«ã´ãªãºã ã¯ãã¨ããè¦ã¦ããã¾ãã
Ranking
Candidate Sourceã§é¸æããã1500件ã®ãããããåè£ãã®Tweetã«ã¤ãã¦ã2段éç®ã®é¢é£æ§ã®æ¨å®ãè¡ãããã©ã³ã¯ä»ããè¡ããã¾ãã
ãã®ã©ã³ãã³ã°ã§ã¯ä½åãã®ç¹å¾´éãç¨ãã¦ã10åã®ã©ãã«ï¼åå¥ã®ã¨ã³ã²ã¼ã¸ã¡ã³ããã¨ã®ç¢ºçï¼ãåºåãã¦åãã¤ã¼ãã«ã¹ã³ã¢ãä»ããããã®ã¹ã³ã¢ãããã¤ã¼ãã®ã©ã³ã¯ä»ããè¡ã£ã¦ããããã§ãã
Heuristics & Filtering
ä½ãããã©ã³ãã³ã°ã«å¯¾ãã¦ããã©ã³ã¹è¯ãå¤æ§ãªãã£ã¼ããä½æããããã«ã調æ´ãå ¥ãã¦ããã¾ãã
- ãããã¯ããã¥ã¼ããããã¤ã¼ãã®é¤å¤
- ä¸äººã®äººãé£ç¶ãã¦Feedã«ç»å ´ããªãããã«ãã¦ã¼ã¶ã¼ã®å¤æ§æ§ã®ç¢ºä¿
- In/Out of Networkã®ãã©ã³ã¹ãåãããã«èª¿æ´
- Feedbackã«åºã¥ãã¦ãä¸é¨ã®ãã¤ã¼ãã®ã¹ã³ã¢ãä¸ãã
- ãã©ãã¼ãã¦ãã誰ãããã®ãã¤ã¼ãã«é¢ä¸ãã¦ãããããã¤ã¼ã主ããã©ãã¼ãã¦ããããä¿è¨¼ããï¼æ¨è¦ã®å質ä¿è¨¼ã®æå³ï¼
- ã¹ã¬ããã«ãªã£ã¦ãããã¤ã¼ãã¯ããã¨ã®ãã¤ã¼ãããã¤ãªãã(æèã®å¯è¦å)
- ç·¨éæ¸ã¿ã®ãã¤ã¼ãã¯ææ°ã®ãã®ã«å¤ãã
ãªã©ãªã©ããããããã£ã¦ãããããã§ãã
Mixing and Serving
ããã¾ã§ã§ããããããã¹ã¦ã®å¦çãçµãã£ã¦ãããæå¾ã«åºåããã©ãã¼æ¨å¥¨ããªã³ãã¼ãã£ã³ã°ããã³ãããªã©ã®ããã¤ã¼ã以å¤ã®ã³ã³ãã³ããæ··ãè¾¼ãã§ãFeedã¨ãã¦è¡¨ç¤ºãã¦ãããããã§ãã
Candidate Source
å ¨ä½åã®ç¢ºèªãã§ããã¨ããã§ãããä¸æ®µéæ·±å ããã¦ã¿ããã¨æãã¾ãã æåã¯Candidate Sourceã«ã¤ãã¦è¦ã¦ããããã¨æãã¾ãã
Candidate Sourceã§ã¯ãè¨å¤§ãªæ°ã®Tweetã®ä¸ããã¦ã¼ã¶ã¼ã«ã¨ã£ã¦èå³ã®ãããããªTLã«è¡¨ç¤ºããåè£ã¨ãªãTweetãé¸æãã¾ãã ããã§é¸ã°ããTweetãå¾æ®µã®Heavy rankerã«ã¦åªå é ä½ã®ä¸¦ã¹æ¿ããè¡ããã(åºæ¬çã«ã¯)åªå é ä½ã®é«ãã»ãããä¸å®æ°ãtimelineã¨ãã¦è¡¨ç¤ºããããã¨ã«ãªãã¾ãã
Candidate Sourceã§ã¯åè¨1500件ã®æ¨è¦åè£ãåå¾ãã¾ããã50ï¼ ã¯In-Networkã50ï¼ ã¯Out-of-Networkããåå¾ãã¦ãã¾ãã
- In-Network
- ã¦ã¼ã¶ã¼ããã©ãã¼ãã¦ãã人ã®ä¸ããé¢é£æ§ã®é«ãTweetãé¸å®
- Out-of-Network
- ã¦ã¼ã¶ã¼ããã©ãã¼ãã¦ãã人以å¤ããé¢é£æ§ã®é«ãTweetãé¸å®
- Social Graph
- Tweetãã¦ã¼ã¶ã¼ã«å¯¾ããé¢ä¿æ§ã°ã©ãããé¢é£æ§ã®é«ããã¤ã¼ããé¸å®
- Embedding Space
- Tweetã®åãè¾¼ã¿ã®è·é¢ããé¢é£æ§ãæ¨å®ãããã¤ã¼ããé¸å®
ãããå¦çããã³ã³ãã¼ãã³ãã¨ãã¦4種é¡æããã¦ãã¾ãã
- search-index
- cr-mixer
- user-tweet-entity-graph (UTEG)
- follow-recommendation-service (FRS)
ãã®ãã¡ãcr-mixerã¯ãã³ã¼ããã¡ããã¨èªãã§ããªãã®ã§ãã¾ã詳ãããã¨ã¯ããã£ã¦ãªãã§ãããããããã®ã¢ã«ã´ãªãºã ã«ããCandidateãçµ±åãããã¨ã§Candidateãä½æããã³ã³ãã¼ãã³ãã«ãªã£ã¦ããããã§ãã ï¼æ··ãåããã調æ´å¦çã主ã«è¡ã£ã¦ãããããªã³ã³ãã¼ãã³ãã®ããã§ãããã¾ãããã£ã¦ãªãã®ã§ããã«ã¤ãã¦ã¯æ·±å ¥ããã¾ããï¼
search-index
search-indexã¯ãã®åã®éããæ¤ç´¢ã¤ã³ããã¯ã¹ã使ç¨ãã¦æ¤ç´¢ãããæ¨è¦åè£ã«ãªãã¾ãã ã¦ã¼ã¶ã¼ããã©ãã¼ãã¦ããã¦ã¼ã¶ã¼ã®ãªã¹ãã«åºã¥ãã¦ããã©ãã¼ä¸ã®ã¦ã¼ã¶ã¼ã®Tweetãåå¾ãããã¨ã§åè£éåãä½æãã¾ãã
ãã®æ¤ç´¢ã¯EarlyBirdã¨ããTwitterå ã®Tweetæ¤ç´¢ã·ã¹ãã ã使ã£ãlight rankerã«ãã£ã¦åªå é ä½ä»ãããã¦ãã¾ãã ãã©ãã¼ä¸ã®ã¦ã¼ã¶ã¼ã®Tweetã«éå®ãããã¨ãã£ã¦ãããã§ãæ°ãå¤ãã®ã§ãããããæ´ã«éçã»åçç¹å¾´ã«åºã¥ãã¦ã¹ã³ã¢ãªã³ã°ãè¡ãããä¸ä½ã®Tweetãé¸ã°ããããã§ãã
- éçç¹å¾´
- ãã®ãã¤ã¼ãããªãã¤ã¼ããã©ãã
- ãã¤ã¼ãã«ãªã³ã¯ãå«ã¾ãã¦ãããã©ãã
- ãã®ãã¤ã¼ãã«ãã¬ã³ãã¯ã¼ãããããã©ãã
- ãã¤ã¼ãããªãã©ã¤ãã©ãã
- æã®æ»ææ§ãé·ããèªã¿ããããªã©è¤æ°ã®è¦ç´ ã«åºã¥ãã¦æ±ºããããããã¹ãã®éçãªå質ã表ãã¹ã³ã¢
- tweepcred
- twitterå ã«ãããpage-rank
- åçç¹å¾´
- ãããããªãã©ã¤ããªãã¤ã¼ãæ°
- æ¯æ§ã»ãããã¯ã«é¢ããã¹ã³ã¢
RealGraph
ãããããè¦ãã¦ã¼ã¶ã¼ã¨ããããã«è¡¨ç¤ºããããTweetããã¦ã¼ã¶ã¼ã¨ã®é¢ä¿æ§ãã¹ã³ã¢å½±é¿ãä¸ããããã§ãããã«ã¯RealGraphã¨ããã¢ã«ã´ãªãºã ã使ç¨ããã¦ãã¾ãã
ã¦ã¼ã¶ã¼ããã©ãã¼ãã¦ããã¦ã¼ã¶ã¼ã®ä¸ã§ããç´è¿ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³æ°ãªã©ã«ãã£ã¦é¢ä¿æ§ã®å¼·ãã«ã¯å¼·å¼±ãããã¨èãããã¾ãã RealGraphã§ã¯ãã®é¢ä¿æ§ã®å¼·ããæ¨å®ããè¿ãå°æ¥ã¤ã³ã¿ã©ã¯ã·ã§ã³ãçºçããããªã¦ã¼ã¶ã¼ã«é«ãã¹ã³ã¢ãå²ãå½ã¦ã¦ãã¾ãã
å é¨ã§ã¯ãç´è¿ã®ã¦ã¼ã¶ã¼ã®è¡åã®æ å ±ããã¨ã«ãè¿ãå°æ¥ã¦ã¼ã¶ã¼éã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ï¼ããããreplyãªã©ï¼ãçºçããããããã¸ã¹ãã£ãã¯å帰ã«ãã£ã¦ç¢ºçãäºæ¸¬ãããã¨ã§ãã¦ã¼ã¶ã¼éã®é¢ä¿æ§ãæ¨å®ãã¦ãã¾ãã
user-tweet-entity-graph (UTEG)
UTEGã§ã¯ããXXX Likedãã®ãããªã¦ã¼ã¶ã¼ã®ç´æ¥ã®ãã©ãã¼ç¯å²å¤ã®ãã¤ã¼ãããæ¨è¦åè£ãåå¾ãã¾ãã éå»24ï½48æéã®ã¦ã¼ã¶ã¼ã®ã¨ã³ã²ã¼ã¸ã¡ã³ããã¤ã³ã¡ã¢ãªã§ä¿æãã¦ããããããã®ä¸ããæ¨è¦åè£ãåå¾ãã¾ãã
GraphJetã«ãããéã¿ä»ããã©ãã¼ã°ã©ããå ¥åã¨ãã¦åãåã£ã¦ãã¤ã¼ããã¨ã³ã²ã¼ã¸ããã¦ã¼ã¶ã¼ã®æ°ã»éã¿ã«åºã¥ãã¦ããã¤ã¼ããé¸å®ãã¾ããï¼å調ãã£ã«ã¿ãªã³ã°ã«è¿ãã¢ã«ã´ãªãºã ï¼
GraphJet
GraphJetã¯Twitterã§ä½¿ç¨ããã¦ããuser-tweetã®äºé¨ã°ã©ãããªã¢ã«ã¿ã¤ã ã«ä¿æããã¤ã³ã¡ã¢ãªã°ã©ãå¦çã¨ã³ã¸ã³ã§ãã ããã使ç¨ãããã¨ã§ãç´è¿ã®ãã°ãã¼ã¿ã使ç¨ãã¦ã¦ã¼ã¶ã¼ã«å¯¾ãã¦Tweetããããããã¦ãã¾ãã
ãã®æ¨è¦ã®ãã¼ã¹ã¨ãªãã¢ã«ã´ãªãºã ã¯SALSAï¼Stochastic Approach for Link-Structure Analysisï¼ã§ãuser-tweetã®2é¨ã°ã©ãä¸ã§ã®ã©ã³ãã ã¦ã©ã¼ã¯ãè¡ããã¨ã§ããã®Tweetã«é¢ãã訪ååæ°åå¸ã«ãã£ã¦ããããããTweetãæ¨å®ãã¦ãã¾ãã
ã©ã³ãã ã¦ã©ã¼ã¯ã¯æ¨è¦ãè¡ãã¦ã¼ã¶ã¼ããã¯ãã¾ãããã®ã¦ã¼ã¶ã¼ãé¢ä¸ããTweetãã©ã³ãã ã«ãµã³ããªã³ã°ãã¾ãããã®Tweetã«å¯¾ãã¦é¢ä¸ããå¥ã®ã¦ã¼ã¶ã¼ãã©ã³ãã ãµã³ããªã³ã°ã«ãã£ã¦è¨ªåãããããæ´ã«Tweetã訪åãã¨ãã£ã2é¨ã°ã©ãä¸ã®ã©ã³ãã ã¦ã©ã¼ã¯ãç¹°ãè¿ããã¨ã§ãTweetã«å¯¾ãã訪ååæ°åå¸ãå¾ããã¾ãã ãããèªåã¨è¿ãå好ãæã£ãã¦ã¼ã¶ã¼ãé¢ä¸ãã¦ããå¥ã®Tweetã®ãããã度åãã¨ãã¦ä½¿ç¨ãããã¨ã§æ¨è¦ãã¦ãã¾ãã
follow-recommendation-service (FRS)
ãã©ãã¼ãã¹ãã¢ã«ã¦ã³ãã»ãã®ã¢ã«ã¦ã³ãããã®ãã¤ã¼ããåå¾ãã¾ãã Twitterã«ã¯ãWho to followã¨ããã¾ã ãã©ãã¼ãã¦ããªãã¦ã¼ã¶ã¼ãããããããä»çµã¿ãããããããç¨ãã¦ã¦ã¼ã¶ã¼åã³ãã®ã¦ã¼ã¶ã¼ã«ãããã¤ã¼ããåå¾ãã¦ãã¾ãã
å é¨çã«ã¯ããããã¦ã¼ã¶ã¼ã«é¢ããCandidate Generation -> Filtering -> Ranking -> Transform -> Truncationã¨ãã£ãä¸é£ã®å¦çãè¡ãããããã§ãå ã«ç´¹ä»ããGraphJetã®ä»ã«ã¯SimClustersãTwHINã¨ãã£ãã¢ã«ã´ãªãºã ãå©ç¨ããã¦ããããã§ãã
SimClusters
SimClustersã¯ã¦ã¼ã¶ã¼ã®è¡åããã¨ã«ãã¦ã¼ã¶ã¼ãå±ããã³ãã¥ããã£ãæ¨å®ããããããã¨ã«æ¨è¦ãè¡ãã¢ã«ã´ãªãºã ã§ãã
ã¯ããã«ãä¸å®ä»¥ä¸ã®ãã©ãã¯ã¼ããããããªå½±é¿åã®ããã¦ã¼ã¶ã¼ã«çç®ãã¦ããããã®ã¦ã¼ã¶ã¼ãå«ã¾ããã³ãã¥ããã£ãçºè¦ãã¾ãã 次ã«ãçºè¦ãããã³ãã¥ããã£ã«å¯¾ãããã®ä»ã®ã¦ã¼ã¶ã¼ãç´ä»ãã¦ããã¾ãã ãããã¦ã¦ã¼ã¶ã¼ãå±ããã³ãã¥ããã£ãæ¨å®ãã¦ããã¾ãã
Tweetã«ã¤ãã¦ã¯ãåã³ãã¥ããã£ã«ããTweetã®äººæ°åº¦ãè¦ããã¨ã§ãTweetããããã®ã³ãã¥ããã£ã«é¢é£ä»ãããã¨ãã§ãã¾ãã
ããã³ãã¥ããã£ã®ã¦ã¼ã¶ã¼ããã®ãã¤ã¼ããæ°ã«å ¥ãã°æ°ã«å ¥ãã»ã©ããã®ãã¤ã¼ãã¯ãã®ã³ãã¥ããã£ã¨é¢é£ä»ããããããã«Embeddingãæ§ç¯ãã¦ããããã§ãã
TwHIN
TwHINã¯è¤æ°ç¨®é¡ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ãã¾ã¨ãã¦æ¨è¦ã«æ´»ç¨ããã¢ã«ã´ãªãºã ã¨ãªã£ã¦ãã¾ãã
ãã¡ãã¯ãTwitterã§å¯è½ãªã¤ã³ã¿ã©ã¯ã·ã§ã³ï¼ããããRTãfollowããªã©ï¼ã®åä½ã§ãåå¥ã«ã¦ã¼ã¶ã¼ãTweetã®Embeddingãè¨ç®ãã¦ããã¾ãã åå¥ã®ç¨®é¡ã®Embeddingãæ±ããããããã¤ã³ã¿ã©ã¯ã·ã§ã³ã®ç¨®é¡ãã¨ã«k-meansã§ã¯ã©ã¹ã¿ãªã³ã°ãè¡ããã¯ã©ã¹ã¿ã®Embeddingãè¨ç®ãã¾ãã æå¾ã«ãã¦ã¼ã¶ã¼ãTweetã«ã¤ãã¦ããããã¨ã¤ã³ã¿ã©ã¯ã·ã§ã³ãçºçãã¦ããã¯ã©ã¹ã¿ã®å¯ä¸åº¦ã«å¿ãã¦Embeddingã«è·éãæãããã¨ã§ãè¤æ°ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ãèæ ®ãã1ã¤ã®Embeddingãè¨ç®ãã¦ããããã§ãã
ãããã¦è¤æ°ç¨®é¡ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ã«åºã¥ãã¦è¨ç®ãããembeddingãå¾ããããããç¨ãã¦FRSãè¡ããã¦ããããã§ãã
Ranking
æ¨è¦åè£ãå¾ããããä»åº¦ã¯ããããæ¹ãã¦åªå é ä½ä»ããã¦ããã¾ãã ã³ã³ãã¼ãã³ãã¨ãã¦ã¯heavy-rankerã¨å¼ã°ãã¦ãããããããã¡ãã«æ¦è¦ãè¨è¼ããã¦ãã¾ãã
Rankingã«ä½¿ç¨ãã¦ããç¹å¾´éã¨ãã¦ã¯Aggregate/NonAggregate/Embedding Featuresã®3ã¤ã«å¤§å¥ããã¦ããããã®ãªãã§æ´ã«ç´°ããç¹å¾´éå®ç¾©ããã¦ä½¿ç¨ããã¦ãã¾ãã ããã¯ç´°ããã®ã§ã詳細ã¯ä¸è¨ããåç §ãã ããã
MaskNet
ã©ã³ãã³ã°ã«ä½¿ç¨ãã¦ããã¢ã«ã´ãªãºã ã¨ãã¦ã¯ãMaskNetã¨å¼ã°ããCTRäºæ¸¬ã¢ãã«ã使ç¨ãã¦ããããã§ãã
MaskNetã®ç¹å¾´çãªç¹ã¯ãinstance-guided maskã¨å¼ã°ããç¹å¾´éãã¨ã®éè¦åº¦ãæ½åºãã層ã使ç¨ããã¦ããç¹ã§ããï¼attentionã®ãããªå½¹å²ï¼
ãã®instance-guided maskã«ãããéè¦è¦ããç¹å¾´éãèªåã§èª¿æ´ããç¹å¾´éã®ç¸äºä½ç¨ãå¹çããå¦ç¿ãã¦ããããã§ãã å®éã«ã¯ããããã¹ã¦ã®ç¹å¾´éã§ä¸¦åã«ãããªãããã®å¾ãããéç´ãããã¨ã§äºæ¸¬ããã¦ããããã§ãã
åèæç®
ãã®è¨äºãæ¸ãã«ããã£ã¦ãä¸è¨ã®æç®ãåèã«ããã¦ããã ãã¾ããã
- GitHub - twitter/the-algorithm: Source code for Twitter's Recommendation Algorithm
- Twitter's Recommendation Algorithm
- Twitterのレコメンドの仕組みを解説する - Qiita
- Twitter Recommendation Algorithmについて
- Twitter「おすすめ」に載る方法 アルゴリズムから暴かれた“優遇されるツイート” - KAI-YOU.net
- Twitter の検索システム、Earilybirdの論文を読む | hurutoriya
è«æã¡ã¢
ããã°ã«æ¸ãã¦ãã£ãè«æã«ã¤ãã¦ã¯ãã®è¾ºã«ã¡ã¢ãããã¾ãã
ãã®ä»ãé¢é£ããè«æã®ã¡ã¢ã¯ãã¡ãã
- EarlyBird
- userã®Tweetãé«éã«æ¤ç´¢ããæ¤ç´¢ãµã¼ãã¹
ææ³
以ä¸ãæéããã¦ããããèªãã§ã¿ãå 容ã®ã¡ã¢ã§ãããã¾ã ç®ãéãã¦ããªãè«æããã©ãã©ããã®ã¨ãééã£ã¦ãå¯è½æ§ãããã¾ãã®ã§ã èå³ãããæ¹ã¯ãã²å®éã«GitHubã®ãªãã¸ããªãèªãã§ä¸èº«ãç´è§£ãã¦ã¿ã¦ãã ããã
å人çã«ã¯ãã³ã¼ããªã¼ãã£ã³ã°ããã¦ããã¡ãã£ã¨è©³ç´°ãè¦ã¦ããããã¨ããã§ãããåå以ä¸Scalaã§æ¸ããã¦ãã¦éãè °ãä¸ãããªãã®ãæ£ç´ãªã¨ããã§ãã ãã®ã¸ãã¯ãã£ã¨ç¥æ§ã¿ãããªäººã解説è¨äºæ¸ãã¦ãããã¨ä¿¡ãã¦ã¾ãðï¼ä»åæ¬é¡ï¼