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

watsonx.ai Dojo #1 生成AIと向き合うための準備編

watsonx.ai Dojo #1 生成AIと向き合うための準備編

IBM watsonx.aiを活用するにあたり、生成AIと向き合うために知っておくと良い技術について、広く浅く学びます。特に前提知識は不要ですが、Python言語を知っておくと、理解が深まります。オープンソースや既存のライブラリを使って生成AIを動作させるための環境の全体像を知ることで、AIプラットフォームであるIBM watsonx.ai の主要な技術要素を学んでいきましょう。

Akira Onishi (IBM)

August 20, 2024
Tweet

More Decks by Akira Onishi (IBM)

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ 1SPQFSUZ 7BMVF ࢯ໊ େ੢ জ Y-JOLFE*O POJBL *5ۀքྺ ೥໨

    ௚ۙͷ৬ྺ Microsoft ೥ *#.೥໨ ࠓ೥ͷ݄͔Β೥໨ )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆RVBOUJD ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲ Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ
  2.  %FNPΛݟͯײ͡·͠ΐ͏ εϥΠυ͚ͩͷߨԋͰ͸ͳ͘ɺ%FNPΛަ͑ͨηογϣϯΛఏڙ͠·͢  श͏ΑΓ׳Ε·͠ΐ͏ ٕज़Λମݧ͢ΔͨΊͷԋशΛ௨ͯ͡ɺٕज़ΛֶͿ͖͔͚ͬΛ࡞Γ·͢  ࣭໰େ׻ܴɺηογϣϯΛҰॹʹ࡞Γ·͠ΐ͏ ߨࢣࣗ਎΋ֶͼͳ͕ΒηογϣϯΛ࣮ࢪ͍ͯ͠·͢ օ͞Μ͔Β΋ؾ෇͖΍ϑΟʔυόοΫΛͲΜͲΜڞ༗͍ͯͩ͘͠͞

     ػցֶशϞσϧ΍"*ϞσϧɺXBUTPOYBJΛ༑ୡʹ͠Α͏ ࠷ऴ໨ඪ͸ɺօ͞Μ͕طଘͷϞσϧΛ࢖ͬͯɺ"*ΞϓϦΛ։ൃ͠ɺར༻ ͢Δ͜ͱͰ͢  ୭΋͕࣮ߦͰ͖ͳ͍ɾ೉қ౓͕ߴ͍ςʔϚʹ͸৮Ε·ͤΜ ػցֶशϞσϧ΍"*ϞσϧΛθϩ͔Β։ൃ͢Δੈք͸औΓ্͛·ͤΜ XBUTPOYBJ%PKPͷάϥϯυɾϧʔϧ
  3. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ੜ੒"*ͱ޲͖߹͏ͨΊͷ४උฤ  ਫ *#.XBUTPOYBJΛ׆༻͢Δʹ͋ͨΓɺੜ੒"*ͱ ޲͖߹͏ͨΊʹ஌͓ͬͯ͘ͱྑ͍ٕज़ʹ͍ͭͯɺ

    ޿͘ઙֶ͘ͼ·͢ɻಛʹલఏ஌ࣝ͸ෆཁͰ͕͢ɺ 1ZUIPOݴޠΛ஌͓ͬͯ͘ͱɺཧղ͕ਂ·Γ·͢ɻ Φʔϓϯιʔε΍طଘͷϥΠϒϥϦΛ࢖ͬͯੜ੒ "*Λಈ࡞ͤ͞ΔͨΊͷ؀ڥͷશମ૾Λ஌Δ͜ͱͰɺ "*ϓϥοτϑΥʔϜͰ͋Δ*#. XBUTPOYBJͷओ ཁͳٕज़ཁૉΛֶΜͰ͍͖·͠ΐ͏ɻ  ੜ੒"*Λ࢖ͬͨΞϓϦ։ൃɺೖ໳ฤ  ਫ *#.XBUTPOYBJͷϓϩϯϓτϥϘΛ࢖ͬͯେن໛ ݴޠϞσϧΛૢ࡞͢Δํ๏ɺग़དྷ্͕ͬͨϓϩϯ ϓτΛΞϓϦ͔Βݺͼग़͢ํ๏Λֶͼ·͢ɻ *#. XBUTPOYBJʹ಺ଂ͞Ε͍ͯΔେن໛ݴޠϞσ ϧΛ஌Γɺ͍ΖΜͳϞσϧΛ࣮ࡍʹࢼ͍͖ͯ͠· ͠ΐ͏ɻ
  4. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ϓϩϯϓτΤϯδχΞϦϯάೖ໳  ਫ େن໛ݴޠϞσϧΛૢ࡞͢ΔͨΊͷϓϩϯϓτΛ ࡞੒͢Δ্Ͱɺิॿతͳ৘ใΛՃ࣭͑ͯ໰ͷҙਤ

    Λ໌֬ʹ͢Δํ๏ɺྫࣔʹΑΓճ౴ͷਫ਼౓ΛߴΊ Δํ๏ͳͲʹֶ͍ͭͯͼ·͢ɻେن໛ݴޠϞσϧ ʹվྑΛՃ͑ͣʹɺظ଴ͨ͠ճ౴ʹ͚ۙͮΔํ๏ Λࢼ͍͖ͯ͠·͠ΐ͏ɻ  ੜ੒"*Λ࢖ͬͨΞϓϦ։ൃɺԠ༻ ฤ  ਫ େن໛ݴޠϞσϧͷ੍໿ࣄ߲Λ৐Γӽ͑ΔͨΊʹɺ 3"(΍-BOH$IBJOΛ࢖ͬͨ"*ΞϓϦͷ։ൃʹͭ ֶ͍ͯͼ·͢ɻ͜Ε·ͰͷճΑΓ΋एׯ೉қ౓͕ ্͕Γ·͕͢ɺαϯϓϧίʔυΛݟͳ͕Βɺงғ ؾΛ௫Έɺօ͞Μ͕։ൃ͍ͨ͠"*ΞϓϦͷ׬੒ ౓ΛߴΊ͍͖ͯ·͠ΐ͏ɻ
  5. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ϑΝΠϯνϡʔχϯάͱ *OTUSVDU-BC  ਫ ࣭໰ͱ౴͑Λ༻ҙ͢Δ͜ͱͰɺେن໛ݴޠϞσ

    ϧʹ৽͍͠஌ࣝΛ௥Ճ͢ΔͨΊͷϑΝΠϯ νϡʔχϯάͷํ๏Λֶͼ·͢ɻ·ͨɺاۀಠ ࣗͷେن໛ݴޠϞσϧͷܧଓతͳվྑʹ࠷దͳ *OTUSVDU-BCʹֶ͍ͭͯͼ·͢ɻ  ܧଓతͳ"*ΞϓϦ։ൃͱల։  ਫ ͜Ε·Ͱֶश͖ͯͨ͜͠ͱΛ૊Έ߹Θͤͯɺେ ن໛ݴޠϞσϧΛར༻ͨ͠"*ΞϓϦͷܧଓతͳ ։ൃͱల։ͷํ๏Λֶͼ·͢ɻاۀಠࣗͷ"*Ξ ϓϦ͚ͩͰ͸ͳ͘ɺ"*Λ૊ΈࠐΜͩιϦϡʔ γϣϯͷܧଓతͳൃలɺύʔτφʔΤίγες Ϝ΁ͷൃలͳͲΛҰॹʹߟ͍͖͑ͯ·͢ɻ
  6. γϯϓϧͳϢʔεέʔεͰখ͘͞"*Λ׆༻͠ͳ͕Βɺ"*ΞϓϦΛ։ൃ͠ɺ ஈ֊తʹൃలͤ͞ɺۀ຿ͷσδλϧԽΛਐԽͤ͞Δ ϏδωεͷͨΊͷ"*ɺϢʔεέʔε จॻੜ੒ ࣭ٙԠ౴ ίʔυੜ੒ ෼ྨ ݴ༿ͷநग़ ཁ໿ ݕࡧʴཁ໿

    3"( ࣗಈԽ 3"(3FUSJFWBM"VHNFOUFE(FOFSBUJPOɺ"*Ϟσϧ͕஌Βͳ͍৘ใΛݕࡧ͠ɺͦͷ݁ՌΛ࢖ͬͯ"*ϞσϧͰςΩετΛੜ੒͢Δ ςΩετ ੜ੒ ຋༁
  7. ந৅Խ͞Εͨ"*ΞϓϦͷߏ଄ ೖྗ ΫΤϦʔ ग़ྗ "*--.ΞϓϦ ϏδωεɾϩδοΫ "*Ϟσϧ ػցֶशϞσϧ ϥΠϒϥϦ"1* খ࢝͘͞Ίͯɺ

    ར༻͠ͳ͕Βൃలͤ͞Δ ೔ຊޠϞσϧ͚ͩʹ߆Βͳ͍ ·ͨϞσϧ͸ਐԽ͢Δ "*ΞϓϦͷ࣮ߦ؀ڥ ʢ"*ϓϥοτϑΥʔϜʣ ΞϓϦΛ ίϯςφԽ͓ͯ͘͠ͱ ؅ཧ͕؆୯ʹͳΔ
  8. ֶशࡁΈͷσʔλΛ࢖ͬͯɺςΩετ΍ը૾ͳͲΛੜ੒͢Δ"*ΞϓϦ ੜ੒ʹ͸"*ϞσϧΛ࢖ͬͨܭࢉʢ"*ਪ࿦ʣ͕ඞਢɺ(16΍/16Λར༻ ୯ͳΔνϟοτϘοτ΍σʔλϕʔεͰ͸ͳ͍͜ͱʹ஫ҙ ੜ੒"*ɺͦͷ࣮ମ͸"*ΞϓϦ ೖྗ ΫΤϦʔ ग़ྗ ճ౴ "*ΞϓϦ ϏδωεɾϩδοΫ

    "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦͷ࣮ߦ؀ڥ ʢ"*ϓϥοτϑΥʔϜϋʔυ΢ΣΞͱιϑτ΢ΣΞʣ ೖྗ ग़ྗ લॲཧ ޙॲཧ ϓϩϯϓτ ։ൃ ΞϓϦ։ൃͱల։ όʔδϣϯ؅ཧ ΞϓϦͷධՁ ϞσϧͷධՁ Ϟσϧͷ؅ཧ "1*࡞੒
  9. ήʔϜ΍ΤϯλʔςΠϯϝϯτ ݐங΍޻ۀɺߴ౓ͳࢹ֮ԽɾՄࢹԽΛཁ͢Δۀ຿ "*΍σʔλαΠΤϯεɺ(1(16 (FOFSBM1VSQPTF(16 ͷԠ༻ (16 (SBQIJDT1SPDFTTJOH6OJU 𝑎!! ⋯ 𝑎!"

    ⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝! ⋮ 𝑝" = ? 𝑎!! ⋯ 𝑎!" ⋮ ⋱ ⋮ 𝑎#! ⋯ 𝑎#" 𝑝!! ⋯ 𝑝!$ ⋮ ⋱ ⋮ 𝑝"! ⋯ 𝑝"$ = ? (16͸%ը໘ͷඳըͷΈͳΒͣɺ ߦྻԋࢉɺฒྻॲཧ͕ಘҙ ˣ "*ϞσϧʹΑΔܭࢉ ਪ࿦ ΋ಘҙ (16ʹՃ͑ͯɺ"*ਪ࿦ʹಛԽͨ͠ /16 /FVSBM1SPDFTTJOH6OJU ͷ ར༻΋஫໨͞Ε͍ͯΔ
  10. 8JOEPXT%JSFDU.- /16(16 *OUFM/16 "*#PPTU Λಈ͔͢ 8JOEPXTΞϓϦ 0//9SVOUJNF %JSFDU.- *OUFM/16 "*#PPTU

    8JOEPXTΞϓϦ %JSFDU.- (16 %JSFDU% ಈըͷϦΞϧλΠϜ௒ղ૾දࣔ IUUQTMFBSONJDSPTPGUDPNKBKQXJOEPXTBJEJSFDUNMENM
  11. "*ਪ࿦ͷ࣮ߦ؀ڥɺશମΛ၆ᛌ͢Δ IUUQTQZQJPSH IUUQTIVHHJOHGBDFDP ίϯϐϡʔλʔ 8JOEPXT-JOVY04 1ZUIPO 1Z5PSDIͳͲ $16 (16ϝϞϦ ϝϞϦ

    (16 ϝϞϦ (16ϝϞϦ /7.F 44% (16υϥΠό (1(16ԋࢉϥΠϒϥϦ ྫ/7*%*"$6%" "*ϞσϧΛར༻ͨ͠ΞϓϦ ϋʔυ΢ΣΞந৅ԽϨΠϠʔ )BSEXBSF"CTUSBDUJPO-BZFS $IJQ ηοτ /FUXPSL *OUFSGBDF طଘͷ"*Ϟσϧ ࢲ͕࣮ͨͪ૷͢Δਪ࿦༻ͷίʔυ "*ϞσϧΛ࢖ͬͨܭࢉ طଘͷϥΠϒϥϦ ిݯϢχοτ
  12. 1ZUIPOݴޠͷϓϩάϥϛϯά         

            IUUQTXXXQZUIPOPSH
  13. .JDSPTPGU4UPSFΛ։͖ɺ8JOEPXTλʔϛφϧΛΠϯετʔϧ IUUQTBQQTNJDSPTPGUDPNEFUBJMOEYIL 8JOEPXT4VCTZTUFNGPS-JOVYΛΠϯετʔϧɺ6CVOUV؀ڥΛ࡞੒ ؅ཧऀݖݶͰ1PXFS4IFMMΛ։͍ͯɺ࣍ͷίϚϯυΛ࣮ߦ wsl --install -d Ubuntu-22.04 ΠϯετʔϧޙʹγεςϜΛ࠶ىಈ͠ɺ1PXFS4IFMM͔Β࣍ͷίϚϯυΛೖྗͯ͠ɺ6CVOUVΛ࣮ߦ wsl

    -d Ubuntu-22.04 6CVOUV͕ىಈͨ͠ΒɺϢʔβʔ໊ͱύεϫʔυΛઃఆ ޷͖ͳ໊લͱύεϫʔυͰ0,ɺϝϞΛ๨Εͣʹ Enter new UNIX username: ilab New password: llm Retype password: llm ؀ڥͷΞοϓσʔτ ύεϫʔυೖྗ͕ඞཁ sudo apt update sudo apt upgrade 1ZUIPOͷόʔδϣϯ֬ೝ  python3 --version 1ZUIPOͷ࣮ߦ؀ڥΛ੔͑Δ 8JOEPXT8JOEPXT ஫ɿ1ZUIPOͷ࠷৽όʔδϣϯ͸ ͜ͷ%PKPͰ͸Λ࢖͍͖ͬͯ·͢ 7JTVBM4UVEJP$PEFΛΠϯετʔϧ https://code.visualstudio.com/Download 7JTVBM4UVEJP$PEF༻ͷ֦ுػೳ 1ZUIPOͱ84-ΛΠϯετʔϧ
  14. ଓ͖ 1ZUIPOͷ࣮ߦ؀ڥΛ੔͑Δ8JOEPXT8JOEPXT QZFOWͷΠϯετʔϧ curl https://pyenv.run | bash echo 'export PYENV_ROOT="$HOME/.pyenv"'

    >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc source ~/.bashrc 1ZUIPOͷΠϯετʔϧ sudo apt install build-essential libssl-dev zlib1g-dev ¥ libbz2-dev libreadline-dev libsqlite3-dev curl ¥ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev pyenv install 3.10.14 pyenv global 3.10.14 python --version # ʮPython 3.10.14ʯ͕දࣔ͞Ε͍ͯΕ͹ɺOK
  15. λʔϛφϧΛ্ཱͪ͛ɺ9DPEFDPNNBOEMJOFUPPMΛΠϯετʔϧ xcode-select –install )PNFCSFXΛΠϯετʔϧ ࣮ߦޙʹදࣔ͞ΕΔ/FYUTUFQTΛ࣮ߦͯ͠ɺ1"5)Λ௨͢͜ͱ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    )PNFCSFXΛ࢖ͬͯɺQZFOWΛΠϯετʔϧ brew update brew install pyenv  ؀ڥม਺ͷઃఆ (zsh޲͚) echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc source ~/.zshrc QZFOWΛ࢖ͬͯɺ1ZUIPOΛΠϯετʔϧ brew install openssl readline sqlite3 xz zlib tcl-tk pyenv install 3.10.14 )PNFCSFXΛ࢖ͬͯɺ7JTVBM4UVEJP$PEFΛΠϯετʔϧ brew install --cask visual-studio-code 1ZUIPOͷ࣮ߦ؀ڥΛ੔͑Δ NBD04 
  16. ϗʔϜσΟϨΫτϦͷԼʹ࡞ۀ༻ϑΥϧμͱͯ͠XYBJΛ࡞Δ cd ~ mkdir wxai cd wxai 1ZUIPOͷԾ૝؀ڥWFOWΛ࡞Δ python -m

    venv venv 1ZUIPOͷԾ૝؀ڥWFOWΛ༗ޮԽ͢Δ source venv/bin/activate 1ZUIPOͷԾ૝؀ڥΛ࡞Δ -JOVYNBDڞ௨
  17. -JOVY 6CVOUVPO8JOEPXT WFSTJPO # CPU (ར༻͍ͯ͠ΔPCʹNVIDIA GPU͕౥ࡌ͞Ε͍ͯͳ͍৔߹) pip install torch==2.3.1

    torchvision==0.18.1 torchaudio==2.3.1 --index-url https://download.pytorch.org/whl/cpu # CUDA 12.1 (NVIDIA GPUΛ࢖͑ΔPCͷ৔߹) wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run sudo sh cuda_12.1.0_530.30.02_linux.run pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 –index-url https://download.pytorch.org/whl/cu121 NBD04 "QQMF4JMJDPO... pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 NBD04 *OUFM$16 # Intel CPUΛ౥ࡌͨ͠mac޲͚ͷ࠷ऴϦϦʔε͸ Pytorch 2.2·Ͱ ৄࡉ͸ͪ͜Β pip install torch==2.2.2 torchvision==0.17.2 torchaudio==2.2.2 1ZUPSDIͷΠϯετʔϧ
  18. import time from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda"

    # Apple Silicon౥ࡌͷmac؀ڥʹ͓͚Δ஫ҙ: # device = "mps" ͷ৔߹͸λʔϛφϧ্Ͱ࣍ͷ؀ڥม਺͕ඞཁ # export PYTORCH_ENABLE_MPS_FALLBACK=1 model_path = "ibm-granite/granite-3b-code-instruct" tokenizer = AutoTokenizer.from_pretrained(model_path) model = AutoModelForCausalLM.from_pretrained(model_path) model.to(device) def generate_code(prompt): start = time.perf_counter() # change input text as desired chat = [ { "role": "user", "content": prompt }, ] chat = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True) # tokenize the text input_tokens = tokenizer(chat, return_tensors="pt") # transfer tokenized inputs to the device for i in input_tokens: input_tokens[i] = input_tokens[i].to(device) ࢀߟHSBOJUFCDPEFJOTUSVDUΛ࢖ͬͨίʔυੜ੒ྫ # generate output tokens # Θ͔Γ΍͍͢Α͏ʹύϥϝʔλ͸࠷௿ݶͷΈ # generateϝιουʹ౉͢ύϥϝʔλ͸దٓमਖ਼͍ͯͩ͘͠͞ output = model.generate(**input_tokens, max_new_tokens=1000) # decode output tokens into text output = tokenizer.batch_decode(output) # ݁Ռग़ྗ for i in output: print(i) end = time.perf_counter() print(">>>task completed:"+str(end-start)) return output def do_conversation(): text = input("Granite Code>") if text == "end": return False result = generate_code(text) return True while True: res = do_conversation() if res == False: break
  19. "*ΞϓϦͱͷ΍ΓऔΓ͸ɺओʹจࣈྻͰɺਓ͕ཧղͰ͖Δ΋ͷ "*ϞσϧΛར༻͢Δܭࢉ͸ʮ਺஋ԋࢉʯɺจࣈ͸τʔΫϯʹม׵ͯ͠ར༻ จࣈ͕τʔΫϯͰ͸ͳ͍͜ͱʹ஫ҙ ˞͜ͷ࢓༷ʹΑΓੜ੒݁ՌΛԿจࣈҎ಺Ͱग़ྗɺͱ͍͏໋ྩʹ͸޲͔ͳ͍ จࣈྻͱτʔΫϯ 5PLFO ਓ΍γεςϜ͕ ೖྗͨ͠ςΩετ จࣈྻ͔Β τʔΫϯ΁

    τʔΫϯ͔Β จࣈྻ΁ ਪ࿦Ͱར༻͢Δ "*Ϟσϧ ೖྗ ग़ྗ 𝑒! ⋮ 𝑒" 𝑟! ⋮ 𝑟" ੜ੒͞Εͨ ςΩετ ਺஋ϕΫτϧ ਺஋ϕΫτϧ IUUQTXXXJCNDPNEPDTKBXBUTPOYTBBT UPQJDTPMVUJPOTUPLFOT IUUQTIVHHJOHGBDFDPEPDTUSBOTGPSNFSTNBJO@DMBTTFTUPLFOJ[FS
  20. # t.py ͱͯ͠อଘ from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")

    encoded = tokenizer("We are very happy to show you the 🤗 Transformers library.") print(encoded) ࣮ߦ݁Ռ Downloading tokenizer_config.json: 100%|█| 48.0/48.0 [00:00<00:00, Downloading config.json: 100%|████| 570/570 [00:00<00:00, 4.90MB/s] Downloading vocab.txt: 100%|█████| 232k/232k [00:00<00:00, 745kB/s] Downloading tokenizer.json: 100%|█| 466k/466k [00:00<00:00, 1.03MB/ {'input_ids': [101, 2057, 2024, 2200, 3407, 2000, 2265, 2017, 1996, 100, 19081, 3075, 1012, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]} ࢀߟจࣈྻͷτʔΫϯԽ
  21. XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ໰͍߹Θͤ

    ੜ੒݁Ռ ཤྺ σʔλ ࢖༻ྔ σʔλ "*ͷ࣮ݧ͸ΦʔϓϯιʔεͰ΋Մೳ ҰํɺاۀϨϕϧ΁ͷల։͸՝୊͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ࢖͑͹ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ
  22. ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉ͸ɺ*#.·ͨ͸ηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛ൓өͨ͠΋ͷͰ͢ɻͦΕΒ͸৘ใ ఏڙͷ໨తͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠΋๏཯త·ͨ͸ͦͷଞͷࢦಋ΍ॿݴΛҙਤͨ͠΋ͷͰ͸ͳ͘ɺ·ͨ*#.੡඼΍αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢Δ΋ͷͰ΋͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔ৘ใʹ͍ͭͯ͸ɺ׬શੑͱਖ਼֬ੑΛظ͢ΔΑ͏౒ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨ͸໧ࣔʹ͔͔ΘΒͣɺ঎ۀੑɺಛఆͷ໨త΁ͷద߹ੑɺඇ৵֐ੑΛؚΊɺ͍͔ͳΔอূ΋൐Θͳ͍ ΋ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨ͸ͦͷଞͷࢿྉͷ࢖༻ʹΑͬͯɺ͋Δ͍͸ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ֐͕ੜͨ͡৔߹΋ɺ*#.͸੹೚ΛෛΘͳ͍ ΋ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.੡඼ɺϓϩάϥϜɺ·ͨ͸αʔϏε͸ɺ*#.͕ϏδωεΛߦ͍ͬͯΔ͢΂ͯͷࠃɾ஍ҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͸͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷల๬ʢ੡඼ϦϦʔε೔෇΍੡඼ػೳΛؚΉʣ͸ɺࢢ৔ػձ·ͨ͸ͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ΋͍ͬͯͭͰ΋มߋͰ͖Δ΋ͷͱ͠ɺকདྷͷ੡඼·ͨ͸ػೳ͕࢖༻ՄೳʹͳΔ͜ͱɺ΋͘͠͸ಛఆͷ݁ՌΛ֬໿͢Δ͜ͱΛҙਤ͢Δ΋ͷͰ͸͋Γ ·ͤΜɻຊߨԋࢿྉ͸ɺݴٴ͞ΕΔ

    *#.੡඼·ͨ͸αʔϏεʹద༻͋Δܖ໿৚݅Λมߋ͢Δ΋ͷͰ΋ɺ௥Ճͷද໌·ͨ͸อূΛҙਤ͢Δ΋ͷͰ΋͋Γ· ͤΜɻ ຊߨԋࢿྉʹؚ·Ε͍ͯΔ಺༰͸ɺࢀՃऀͷ׆ಈʹΑͬͯಛఆͷ݁Ռ͕ੜ͡Δͱड़΂Δɺ·ͨ͸҉ࣔ͢Δ͜ͱΛҙਤͨ͠΋ͷͰ΋ɺ·ͨͦͷΑ͏ͳ݁Ռ ΛੜΉ΋ͷͰ΋͋Γ·ͤΜɻ ύϑΥʔϚϯε͸ɺ؅ཧ͞Εͨ؀ڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ࢖༻ͨ͠ଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτ΍ύϑΥʔϚϯε͸ɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥϛϯάͷྔɺೖग़ྗߏ੒ɺετϨʔδߏ੒ɺ ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺ਺ଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺݸʑͷϢʔβʔ͕͜͜Ͱड़΂ΒΕ͍ͯΔ΋ͷͱ ಉ༷ͷ݁ՌΛಘΒΕΔͱ֬໿͢Δ΋ͷͰ͸͋Γ·ͤΜɻهड़͞Ε͍ͯΔ͢΂ͯͷ͓٬༷ࣄྫ͸ɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.੡඼Λ࢖༻͔ͨ͠ɺ· ͨͦΕΒͷ͓٬༷͕ୡ੒ͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞Εͨ΋ͷͰ͢ɻ࣮ࡍͷ؀ڥίετ͓ΑͼύϑΥʔϚϯεಛੑ͸ɺ͓٬༷͝ͱʹҟͳΔ৔߹͕͋Γ·͢ɻ • *#.ɺ*#.ϩΰɺJCNDPNɺ%C *#.XBUTPOY͸ɺ ੈքͷଟ͘ͷࠃͰొ࿥͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷ঎ඪͰ͢ɻଞͷ੡඼໊͓Αͼ αʔϏε໊౳͸ɺͦΕͧΕ*#.·ͨ͸֤ࣾͷ঎ඪͰ͋Δ৔߹͕͋Γ·͢ɻݱ࣌఺Ͱͷ *#.ͷ঎ඪϦετʹ͍ͭͯ͸ɺXXXJCNDPNMFHBMDPQZUSBEFTIUNMΛ͝ཡ͘ ͍ͩ͞ɻ • 3FE)BUɺ3FE)BU0QFO4IJGUɺ3FE)BU"OTJCMF͸ɺ3FE)BU*OD·ͨ͸ࢠձࣾͷถࠃ͓Αͼͦͷଞͷࠃʹ͓͚Δ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ • .JDSPTPGU 8JOEPXT "[VSF.BJB %JSFDU9 %JSFDU% .JDSPTPGU#VJME͸ .JDSPTPGU$PSQPSBUJPOͷถࠃ͓Αͼͦͷଞͷࠃʹ͓͚Δ঎ඪͰ͢ • "84 "845SBJOJVN͸"NB[PO8FC4FSWJDFT *ODͷ঎ඪͰ͢ɻ • (PPHMF (FNJOJ͸ (PPHMF--$ͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ • /7*%*" /7*%*"(F'PSDF͸/7*%*"$PSQPSBUJPOͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ • ".% ".%3Z[FO͸"EWBODFE.JDSP%FWJDFT *ODͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ • "QQMF .BDCPPL NBD04 9DPEF "QQMF*OUFMMJHFODF͸"QQMF*ODͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻ