Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINEポイントクラブにおける PerlからKotlinへの移行を振り返る / The migration from Perl to Kotlin at LINE Point Club

LINEポイントクラブにおける PerlからKotlinへの移行を振り返る / The migration from Perl to Kotlin at LINE Point Club

「LINEポイントクラブ」は、LINE Payでの支払いやLINEの各種サービスで使える共通ポイント「LINEポイント」を貯められる様々なミッションの提供や、連携サービスでの利用の案内を行うポータルサービスです。LINEポイントクラブは、2013年6月に前身のサービスが提供開始され、その後日本では2020年からLINEポイントクラブと改称して運営されてきましたが、システム開発を始めた2013年から2021年までの8年間、Perlで開発され続けてきました。
2021年1月から1年間をかけて一気にKotlinへ書き換えるプロジェクトを進行し、2022年4月に私が担当するプロジェクトとしては一旦終わりました。本イベントでは、LINE DEVELOPER DAY 2021では語れなかった、Perlプロダクトを現代的なアーキテクチャと技術セットで再実装するプロジェクトの全貌と、プロジェクトの担当を終えた今の気持ちを赤裸々にお話しします。

LINE DEVELOPER DAY 2021での発表とアフターインタビューも併せてご覧ください。
https://linedevday.linecorp.com/2021/ja/sessions/157/
https://engineering.linecorp.com/ja/interview/story-of-rewriting-8-year-old-perl-product-with-kotlin/

大原 康平 / LINE株式会社 開発4センター OA Dev 5チーム
2018年入社の新卒4年目。LINEポイントクラブのサーバサイドの開発を担当。問題が発生した時の原因を探したり、パフォーマンスのボトルネックを調べて改善するのが好きです。夏の夜のモワッとした空気が好きです。

※この資料は以下イベントで発表しました
https://line.connpass.com/event/246551/

LINE Developers

May 25, 2022
Tweet

More Decks by LINE Developers

Other Decks in Technology

Transcript

  1. ొஃऀ঺հ l ։ൃηϯλʔ 0GGJDJBM"DDPVOU։ൃࣨ l αʔόαΠυ։ൃऀ l ͜Ε·Ͱͷ࢓ࣄ l ೥݄

    d೥݄ɿ-*/&ϙΠϯτΫϥϒ։ൃ l ೥݄ dɿ-*/&ެࣜΞΧ΢ϯτ։ൃ l ,PUMJOྺ l ೥݄͔Β l ͦͷલ͸ 1FSMϝΠϯ +BWBͪΐͬͱ େݪ ߁ฏ
  2. l LUϑΝΠϧͷ਺ l ௒͑ʢςετ͸আ͘ʣ l 1FSMϓϩδΣΫτͷ ௒ͷ QNϑΝΠϧΑΓ΋૿͍͑ͯΔओͳཧ༝ l %BUBDMBTT͕૿͑ͨҝ

    l ϩδοΫΛϨΠϠ͝ͱʹ෼͚ͨҝ l ίϛοτ਺ l ໿ ίϛοτ l ͬ͘͟Γܭࢉ͢Δͱฏ೔ຖ೔໿ ίϛοτҎ্ͷࠩ෼͕औΓࠐ·Ε͍ͯΔΠϝʔδ ։ൃͷن໛ײɿϦϓϨʔεޙͷ ,PUMJOϓϩδΣΫτͰ͸
  3. l ͳͥ (P΍ଞͷݴޠ͡Όͳ͍ͷ͔ʁ l +BWB,PUMJO͕ࣾ಺Ͱ࠷΋࢖ΘΕΔݴޠ͔ͩΒ l ผͷνʔϜͱ஌ݟ͕ڞ༗͠΍͍͢J l ΤϯδχΞ͕ผͷνʔϜʹҟಈ͠΍͍͢ʢΩϟονΞοϓ͠΍͍͢ʣJ l

    ࣾ಺ͷΤίγεςϜ͕ར༻Ͱ͖ΔJ l ͳͥ +BWBͰͳ͍ͷ͔ʁ l νʔϜͰ։ൃͯ͠ΔଞͷϓϩμΫτͱٕज़ηοτΛ߹Θ͔͔ͤͨͬͨΒ l ,PUMJO͕ॻ͖΍͍͢ͱฉ͍͍ͯͨ ͳͥ ,PUMJOʹॻ͖׵͑ͨͷ͔ʁ
  4. l ՝୊ղܾͷҝ l γεςϜͷߏ੒͕ෳࡶԽ͍ͯͨ͠ l ஷΊΔλϒ͕ 1FSMͰ࢖͏λϒ͕ ,PUMJO l ౰࣌

    1FSM͔Β௚઀ )#BTF͕࢖͑ͳ͔ͬͨҝ +BWB,PUMJOͰॻ͔Εͨ )#BTFHBUFXBZBQQΛ࣮૷ɾ؅ཧ͍ͯͨ͠ l ػೳࣗମͷෳࡶԽɻෆཁͳػೳ΋ଟ͔ͬͨ l ݴޠͷ໰୊Ͱ͸ͳ͍͕ɺॻ͖׵͑ϓϩδΣΫτʹΑͬͯղܾͰ͖ͦ͏ͳϙΠϯτ l ஷΊΔλϒΛ։ൃ͢ΔͨΊͷ 1FSMΤϯδχΞͷ࠾༻͕೉͍͠ l 1FSMͷ࠷ۙͷϛυϧ΢ΣΞʹର͢ΔΫϥΠΞϯτϥΠϒϥϦ͕ ๛෋ͱ͸ݴ͑ͳ͘ͳ͖ͬͯͨ 1FSM͔Β͜ͷλΠϛϯάͰॻ͖׵͑Δ͜ͱʹܾΊͨཧ༝ʢʣ
  5. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase
  6. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase Ϣʔβ͕ϙΠϯτΫϥϒ΁ΞΫηεͨ͠ࡍʹ֤छίϯςϯπΛฦ͢ BQQ
  7. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase ؅ཧը໘༻ͷ BQQ
  8. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase ϙΠϯτ෇༩ॲཧΛߦ͏ BQQ
  9. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase ஷΊΔλϒͷओͳػೳΛ H31$ Ͱఏڙ͢Δ BQQ
  10.  DPSFBQQ։ൃ׬ྃɾ ଞͷ BQQͷઃܭ  ΠϯςάϨʔγϣϯɾ 2" 1FSM,PUMJOҠߦϓϩδΣΫτͷશ๴ɿεέδϡʔϧ 1FSMʹ࢒͍ͯͨ͠ ػೳͷ։ൃ

     શମ։ൃ׬ྃ  ϝΠϯػೳͷϦϦʔε  શମઃܭɾDPSFBQQઃܭɾ ։ൃ؀ڥ੔උ
  11.  DPSFBQQ։ൃ׬ྃɾ ଞͷ BQQͷઃܭ  ΠϯςάϨʔγϣϯɾ 2" 1FSMʹ࢒͍ͯͨ͠ ػೳͷ։ൃ 

    શମ։ൃ׬ྃ  ϝΠϯػೳͷϦϦʔε  શମઃܭɾDPSFBQQઃܭɾ ։ൃ؀ڥ੔උ 1FSM,PUMJOҠߦϓϩδΣΫτͷશ๴ɿεέδϡʔϧ
  12. l ߹ܭ໊ߏ੒ l ໊ͷ +BWB,PUMJOΤϯδχΞ l 1FSMϓϩδΣΫτͷ࢓༷ʹ͍ͭͯ͸શવ෼͔Βͳ͍ঢ়ଶ͔Βͷελʔτ l ݩʑͷΞαΠϯɿ࢖͏λϒɾͦͷଞͷϓϩδΣΫτͷ։ൃ l

    ໊ͷ 1FSMΤϯδχΞ l +BWB,PUMJOʹ͍ͭͯࢲ͸গ͚ͩ͠෼͔Δɺଞͷ໊͸શવ෼͔Βͳ͍ঢ়ଶ ͔Βͷελʔτ l ݩʑͷΞαΠϯɿஷΊΔλϒͷ։ൃ ϓϩδΣΫτͷશ๴ɿ։ൃऀߏ੒
  13. l ՝୊ l λεΫͷׂΓৼΓ΍޻਺ݟੵ΋Γͷ೉͕͋ͬͨ͠͞ l ղܾࡦ l ҠߦϓϩδΣΫτॳظ͸؇͍෼ۀମ੍Λෑ͍ͨ l 1FSMϝϯόʔ͕࢓༷Λॻ͘

    l +BWB,PUMJOϝϯόʔ͸։ൃΛ؆୯ʹਐΊΒΕΔΑ͏ͳࣄલ४උΛ͢Δ ՝୊ɿνʔϜ಺ͷۀ຿஌ࣝɾ։ൃεΩϧͷෆۉߧ
  14. l ݁Ռ l ฒߦͯ͠࢓༷ࡦఆͱ։ൃͷ४උΛਐΊΒΕͨ l 1FSMϝϯόʔ͕ٕज़ελοΫ͕෼͔Βͳ͍ؒ͸࢓༷͕ᐆດͳ෦෼͕࢒ͬͯ ͠·ͬͨ l ։ൃ͠ͳ͕Β࢓༷Λ੔͍͑ͯ͘͜ͱʹͳ͍ͬͯͬͨ l

    +BWB,PUMJOϝϯόʔʹ͸։ൃɾίʔυϨϏϡʔͷෛՙ͕دͬͯ͠·ͬͨ l ίʔυϨϏϡʔίετ΋େ͖Ίʹͳͬͨ l ࢓༷ͷશ๴ ٕज़ͷશ๴͕ݟ͑ͯͳ͍ͷͰ࡞ۀྔͷݟੵ΋Γ͕೉͔ͬͨ͠ ՝୊ɿνʔϜ಺ͷۀ຿஌ࣝɾ։ൃεΩϧͷෆۉߧ
  15. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟɿϙΠϯτ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase 3FEJTʹͷΈ઀ଓ͠εέʔϥϏϦςΟͷվળ
  16. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟɿϙΠϯτ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase ಠࣗͷδϣϒΩϡʔ͔Β ,BGLB΁Ҡߦ
  17. Kafka ,PUMJO ͰͷγεςϜΞʔΩςΫνϟɿϙΠϯτ media core admin cv-worker Redis Clusters Redis

    gRPC gRPC media DB DB for Earn Tab MySQL REST DB for Use Tab MySQL MySQL HBase ஷΊΔλϒͱ࢖͏λϒͷ౷߹
  18.  DPSFBQQ։ൃ׬ྃɾ ଞͷ BQQͷઃܭ  ΠϯςάϨʔγϣϯɾ 2" 1FSMʹ࢒͍ͯͨ͠ ػೳͷ։ൃ 

    શମ։ൃ׬ྃ  ϝΠϯػೳͷϦϦʔε  શମઃܭɾDPSFBQQઃܭɾ ։ൃ؀ڥ੔උ ॗʑͱ։ൃ 1FSM,PUMJOҠߦϓϩδΣΫτͷશ๴ɿεέδϡʔϧ
  19.  DPSFBQQ։ൃ׬ྃɾ ଞͷ BQQͷઃܭ  ΠϯςάϨʔγϣϯɾ 2" 1FSMʹ࢒͍ͯͨ͠ ػೳͷ։ൃ 

    શମ։ൃ׬ྃ  ϝΠϯػೳͷϦϦʔε  શମઃܭɾDPSFBQQઃܭɾ ։ൃ؀ڥ੔උ ॗʑͱ։ൃ 1FSM,PUMJOҠߦϓϩδΣΫτͷશ๴ɿεέδϡʔϧ -*/&%&7&-01&3%":Ͱ͜͜ͷ࿩Λͯ͠·͢ʂ ಈըɾهࣄΛݟ͍ͯͩ͘͞ʂ
  20.  DPSFBQQ։ൃ׬ྃɾ ଞͷ BQQͷઃܭ  ΠϯςάϨʔγϣϯɾ 2" 1FSMʹ࢒͍ͯͨ͠ ػೳͷ։ൃ 

    શମ։ൃ׬ྃ  ϝΠϯػೳͷϦϦʔε  શମઃܭɾDPSFBQQઃܭɾ ։ൃ؀ڥ੔උ 1FSM,PUMJOҠߦϓϩδΣΫτͷશ๴ɿεέδϡʔϧ
  21. l 1FSMͰಠཱͯ͠ಈ࡞Մೳͳػೳ l όονॲཧ l ؅ཧը໘ l ֎෦޲͚ͷ "1* ॳظͷϦϦʔεʹؚΊͳ͔ͬͨػೳ

    σʔλϕʔε΁ͷมߋΛ࠷খݶʹͱͲΊͨ͜ͱͰ 1FSMΛ࢒͠ͳ͕ΒҠߦͰ͖ͨ
  22. l ͲΜͳ໰୊͕ى͜Δͷ͔ʁ l ಉ͡໰୊ʹىҼ͢Δϩά͕ෳ਺ग़ྗ͞ΕΔ͜ͱͰࠞཚΛҾ͖ى͜͢ l ͳͥࠞཚ͕ى͜Δͷ͔ʁ l ݸผͷϩάʹՃ͑ͯɺେҬྫ֎ϋϯυϥͰ΋ϩά͕ग़ྗ͞ΕΔҝ l େҬྫ֎ϋϯυϥͱ͸ʁ

    l ϑϨʔϜϫʔΫଆͰ༻ҙ͍ͯ͠ΔେҬతͳྫ֎ॲཧػߏͷ͜ͱ l ෳ਺ $POUSPMMFSʹڞ௨ͨ͠ྫ֎ϋϯυϥ͕ॻ͚Δ l ྫɿ4QSJOH.7$Ͱ͸ !$POUSPMMFS"EWJDF Λ෇༩ͨ͠ΫϥεͰهड़Ͱ͖Δ ࣗલͰϩΪϯά͔ͯ͠Β࠶ૹग़͢ΔΞϯνύλʔϯͱ͸ʁ ˞ࢀߟɿஈ֊తʹཧղ͢Δ +BWBྫ֎ॲཧ IUUQTRJJUBDPNUTJJUFNTEGDDEBFE
  23. l %FUFLU ಋೖલ͸ LUMJOU ͸ಋೖ͞Ε͍ͯͨ l LUMJOU ͱ %FUFLU ͷҧ͍

    l LUMJOU ͸ DPEJOHTUZMFΛ֬ೝ͢Δ l %FUFLU ͸ίʔυͷෳࡶ౓΍ίʔυͷ೏͍ʢ໰୊ͷஹީʣΛݕ஌͢Δ ੩తղੳπʔϧ %FUFLU Λಋೖͨ͠Βྑ͔ͬͨ
  24. l -POH.FUIPE ΍ $PNQMFY.FUIPE ͋ͨΓͷܯࠂ͕ಛʹ͋Γ͕͍ͨ l ਓ͕ؒʮ͜ͷϝιου͸௕͍ɾෳࡶͳͷͰमਖ਼͍ͯͩ͘͠͞ʯͱϨϏϡʔ͢Δͷ͸೉͍͠ l ओ؍తͳଆ໘͕͋ͬͯࢦఠͮ͠Β͔ͬͨΓਓʹΑͬͨΓ͢Δ෦෼͕େ͖͍ҝ l

    ػցతʹܯࠂ͕ग़Δͱ඼࣭ͷҡ͕࣋͠΍͍͢ l େ͖͍ϓϩδΣΫτͰ΋్த͔Βಋೖ͠΍͍͢ l طଘͷίʔυʹग़͍ͯΔܯࠂΛແࢹ͢Δҝͷ CBTFMJOFYNM Λग़ྗͰ͖Δػೳ͕ศར %FUFLU ͷྑ͍఺
  25. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  26. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  27. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  28. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  29. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ ΫϥεΛܧঝͤͣʹɺ Ϋϥεʹ৽͍͠ػೳΛ௥Ճ͢Δ
  30. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  31. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  32. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  33. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ  ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ /VMMͩͬͨΒޙଓͷॲཧΛ͢Δʢ͜͜Ͱ͸ྫ֎Λ౤͛Δʣ
  34. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  35. l ܕ͕͋Δɾ/VMM ҆શੑ͕͋Δ l දݱྗ͕ߴ͍ l ֦ுؔ਺ l JG USZ

    XIFOͳͲ͕஋ΛฦͤΔ l /VMMͷ৔߹ͷॲཧͷॻ͖෼͚͕؆୯ʹͰ͖Δʢ ΍ ʣ l ๛෋ͳ +BWBࢿ࢈Λ࢖͑Δ l ࣮ߦ଎౓͕଎͍ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ UFYU͕OVMMͳΒ MFOHUI͸࣮ߦ͞Εͣ OVMMΛฦ͢
  36. l ։ൃ؀ڥʹؔ͢ΔΤίγεςϜ͕੔͍ͬͯΔ l ,PUMJOͷ։ൃݩ͕ +FU#SBJOT TSP Ͱ͋Γɺ *%&΍पลπʔϧ΋։ൃ͍ͯ͠ΔͨΊ ڧྗͳαϙʔτ͕͋Δ l

    ܰྔͳฒྻԽ͕Ͱ͖Δ l $PSPVUJOFͳͲ l ࣾ಺ͷଞνʔϜͱ৘ใަ׵͕੝ΜͳͨΊαʔόαΠυ։ൃͷ ૬ஊ͕ߦ͍΍͍͢ l ฼਺ͷؔ܎্ 1FSM։ൃΑΓ΋૬ஊ͕ਐΈ΍͍͢ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿϙδςΟϒฤʢʣ
  37. l Ϗϧυʹ͕͔͔࣌ؒΔҝखݩͰͷमਖ਼ΠςϨʔγϣϯ͸ 1FSM࣌୅ΑΓ΋஗͘ͳͬͨ l 4QSJOH#PPU΍ HSBEMF ͳͲ BQQΛ࡞੒͢Δ্Ͱඞཁͳ ஌ࣝ΍ٕज़͕ଟ͍ l

    1FSMͰ͸γϯϘϧςʔϒϧΛ͍͡Δ͜ͱͰ NPOLFZQBUDI͕ ඇৗʹ༰қͰɺಛघͳςετ͕؆୯ʹॻ͚ͨ 1FSM͔Β ,PUMJO΁Ҡߦͯ͠ײͨ͜͡ͱɿωΨςΟϒฤʢʣ
  38. l -*/&ϙΠϯτΫϥϒͷ 1FSM͔Β ,PUMJO΁ͷҠߦϓϩδΣΫτͷ঺հ l ͳͥࠓ ,PUMJOʹͨ͠ͷ͔ʁ l ͳͥ ,PUMJOʁɿॻ͖΍͍͢ҝɾࣾ಺ͰΑ͘࢖ΘΕ͍ͯΔҝ

    l ͳͥࠓʁɿ௕೥ӡ༻͍ͯ͠ΔதͰ՝୊͕ੵΈॏͳ͍ͬͯͨҝɾऔΓ૊ΊΔ࣌ظͩͬͨҝ l ઃܭͰେ੾ʹͨ͜͠ͱ΍ݱঢ়ͷ঺հ l ϓϩδΣΫτͰى͖ͨ໰୊ͱվળ l ྫ֎ॲཧͷ࢓ํ͕ҧ͏ͱ͍͏࿩ͱ %FUFLU ಋೖͨ͠Βྑ͔ͬͨͱ͍͏࿩ l ৼΓฦͬͯͷײ૝ͷ঺հ ·ͱΊ
  39. l -*/&ϙΠϯτΫϥϒͷ 1FSM͔Β ,PUMJO΁ͷҠߦϓϩδΣΫτͷ঺հ l ͳͥࠓ ,PUMJOʹͨ͠ͷ͔ʁ l ͳͥ ,PUMJOʁɿॻ͖΍͍͢ҝɾࣾ಺ͰΑ͘࢖ΘΕ͍ͯΔҝ

    l ͳͥࠓʁɿ௕೥ӡ༻͍ͯ͠ΔதͰ՝୊͕ੵΈॏͳ͍ͬͯͨҝɾऔΓ૊ΊΔ࣌ظͩͬͨҝ l ઃܭͰେ੾ʹͨ͜͠ͱ΍ݱঢ়ͷ঺հ l ϓϩδΣΫτͰى͖ͨ໰୊ͱվળ l ྫ֎ॲཧͷ࢓ํ͕ҧ͏ͱ͍͏࿩ͱ %FUFLU ಋೖͨ͠Βྑ͔ͬͨͱ͍͏࿩ l ৼΓฦͬͯͷײ૝ͷ঺հ ·ͱΊ ,PUMJOະܦݧऀɾ੩తܕ෇͚ະܦݧऀͰ΋ ,PUMJO͸ॻ͖΍͍͢Ͱ͢ʂ ੋඇαʔόαΠυ ,PUMJOΛॻ͖·͠ΐ͏ʂ