Skip to content

Instantly share code, notes, and snippets.

@torao
Last active January 18, 2018 05:43
Show Gist options
  • Select an option

  • Save torao/d6b762eb6f6b117e89cdfba27b232f66 to your computer and use it in GitHub Desktop.

Select an option

Save torao/d6b762eb6f6b117e89cdfba27b232f66 to your computer and use it in GitHub Desktop.

ๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆๆŒ‡ๅ‘ใง่จ€ใ†ใจใ“ใ‚ใฎๅคšๆ…‹ๅŒ–ใจใชใ‚‹ใ‹?

Julia ใฎๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏ OO ใง่จ€ใ†ใจใ“ใ‚ใฎๅคšๆ…‹ๅŒ–ใจใชใ‚‹ใ‹? ใซใคใ„ใฆใฎใƒใ‚จใƒ ใ€‚

target version: Julia 0.6.2

ๆ™ฎๆฎตใฏ Scala, Java, Python, Ruby ใ‚ใŸใ‚Šใ‚’ไฝฟใฃใฆใ„ใพใ™ใŒใ€Julia ใฏใพใ ่จ€่ชžไป•ๆง˜ใ‚’่ฆ‹ใชใŒใ‚‰ใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใ„ใฆใ„ใ‚‹็Šถๆณใชใฎใงใ€Julia ใ‚’ไฝฟใ„ใ“ใชใ›ใ‚‹ๆ–นใŒใ€Œใˆใฃใใ‚Œใ‚’ใ™ใ‚‹ใŸใ‚ใซใ“ใ†ใ„ใ†ๆฉŸ่ƒฝใŒใ‚ใ‚‹ใ‚ˆ?ใ€(็Ÿฅใฃใฆใ‚‹ใ‹ใฉใ†ใ‹ๅ•้กŒใ ใฃใŸใ‚ชใƒ) ใงใ‚ใ‚Œใฐ่ฉฑใฏ็ต‚ใ‚ใ‚Šใพใ™ใ€‚ๅคšๅˆ†ใ€ใใ‚ŒไปฅไธŠ่ชญใฟ้€ฒใ‚ใ‚‹ใฎใฏๆ™‚้–“ใฎ็„ก้ง„ใงใ™ใ€‚


Julia ใฎๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏๅฎŸ่กŒๆ™‚ใฎๅž‹ใ‹ใ‚‰ๅฏพๅฟœใ™ใ‚‹้–ขๆ•ฐ (ๆŒฏใ‚‹่ˆžใ„) ใ‚’ๆŽจๅฎšใ—ใฆ้ธๆŠžใ™ใ‚‹ใŒใ€้–ขๆ•ฐใ‚’ไฝฟ็”จใ™ใ‚‹ๆ™‚็‚นใงๅ…จใฆใฎๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ๅž‹ใซใคใ„ใฆ่‡ชๆ˜Žใงใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ๅˆถ็ด„ใŒใ‚ใ‚Šใพใ™ใ€‚

ไพ‹ใˆใฐไปฅไธ‹ใฎใ‚ฝใƒผใ‚นใงใฏ save() ใซๆธกใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ๅž‹ A, B ใซๅฏพใ—ใฆใ€ใใ‚Œใžใ‚Œ JSON ๅฝขๅผใฎๆ–‡ๅญ—ๅˆ—ใ‚’ๅ‚็…งใ™ใ‚‹้–ขๆ•ฐ to_json(::A), to_json(::B) ใŒ ย save() ๆ™‚็‚นใงๆฑบๅฎšใ—ใฆใ„ใ‚‹ใŸใ‚ๅคšๆ…‹ใฎใ‚ˆใ†ใซๆŒฏใ‚‹่ˆžใ†ใ“ใจใŒใงใใพใ™ใ€‚

module Sample1

  # A ใจ B ใฎๅž‹ใŒใ‚ใ‚Š
  struct A x::Int end
  struct B y::Int end

  # ใใ‚Œใžใ‚Œใซใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒๅฏ่ƒฝใช้–ขๆ•ฐใŒ่‡ชๆ˜Žใชใ‚‰
  to_json(a::A) = "{x:$(a.x)}"
  to_json(b::B) = "{y:$(b.y)}"

  # ๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใง obj ใฎๅž‹ใ‹ใ‚‰ๅฏพๅฟœใ™ใ‚‹้–ขๆ•ฐใ‚’้ธๆŠž/ๅฎŸ่กŒใ™ใ‚‹ใ“ใจใŒใงใใ‚‹
  save(obj) = println(to_json(obj))

  save(A(2018))  # {x:2018} โ†’ OK
  save(B(0116))  # {y:116} โ†’ OK
end

ใ“ใ‚Œใฏ to_json() ใฎๆŒ™ๅ‹•ใŒๅž‹ใซๅˆใ‚ใ›ใฆ้ฉๅˆ‡ใซ็ฝฎใๆ›ใ‚ใฃใฆใ„ใ‚‹ใ‚ˆใ†ใซ่ฆ‹ใˆใพใ™ใ€‚ใงใฏ้–‹็™บๆ‹…ๅฝ“ใ‚’่ค‡ๆ•ฐไบบใซๅˆ†ใ‘ใฆใƒขใ‚ธใƒฅใƒผใƒซใ‚‚ใ‚‚ใ†ๅฐ‘ใ—่ค‡้›‘ใซใชใฃใŸใจใใ‚‚ๅŒใ˜ๆ–นๆณ•ใงใงใใ‚‹ใงใ—ใ‚‡ใ†ใ‹ใ€‚

ไป–ไบบใŒไฝœใฃใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใ‚„ๅ…ฑ้€šๆฉŸ่ƒฝใ‚’ไฝฟใ†ๅ ดๅˆใ€save() ใฎๅฎŸ่ฃ…ๆ™‚็‚นใง obj ใจใ—ใฆๆธกใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ (ใฉใ“ใ‹ใฎ้ฆฌใฎ้ชจใŒไฝœใฃใŸใ‹ๅˆ†ใ‹ใ‚‰ใชใ„) ๅž‹ B ใŠใ‚ˆใณๅฏพๅฟœใ™ใ‚‹ to_json(::B) ใฏๅ‚็…งใงใใพใ›ใ‚“ใ€‚

module Sample2
  module Framework
    export A, save
    # ๅž‹ A ใฎใฟๅฏพๅฟœใ™ใ‚‹้–ขๆ•ฐใŒๅฎš็พฉใ•ใ‚Œใฆใ„ใ‚‹
    struct A x::Int end
    to_json(a::A) = "{x:$(a.x)}"

    # ๅฎŸ่กŒๆ™‚ใซ obj ใฎๅž‹ใ‹ใ‚‰่งฃๆฑบใงใใ‚‹ใฎใฏ A ใ ใ‘
    save(obj) = println(to_json(obj))
  end
  module Application
    using Sample2.Framework

    # ๅž‹ B (ๆœฌๆฅใฏ A ใฎใ‚ตใƒ–ใ‚ฟใ‚คใƒ—ใซใ—ใŸใ„ใจใ“ใ‚ใ ใŒ) ใซๅฏพๅฟœใ™ใ‚‹้–ขๆ•ฐใฏๅฝ“็„ถใชใŒใ‚‰ Framework.save()
    # ใ‹ใ‚‰ใฏไธๅฏ่ฆ–
    struct B y::Int end
    to_json(b::B) = "{y:$(b.y)}"

    save(A(2018))  # {x:2018} โ†’ OK
    save(B(0116))  # ERROR: MethodError: no method matching to_json(::Sample2.Application.B)
  end
end

ใ“ใฎๅ ดๅˆ save(obj, to_json::Function) ใฎใ‚ˆใ†ใซๅฎš็พฉใ—ใฆ obj ใซๅฏพๅฟœใ™ใ‚‹ๆŒฏใ‚‹่ˆžใ„ใฎ้–ขๆ•ฐ to_json(::B) ใ‚’ใ‚ปใƒƒใƒˆใงๆธกใ•ใชใ‘ใ‚Œใฐใชใ‚‰ใšใ€ๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏๅคšๆ…‹ๅŒ–ใ‚’ไปฃๆ›ฟใ™ใ‚‹ๆฉŸ่ƒฝใซใฏใชใฃใฆใ„ใพใ›ใ‚“ใ€‚

ไธ€ๆ–นใง OO ใฎๅ ดๅˆใฏ to_json(::B) ้–ขๆ•ฐใฏ obj::B ใซไป˜้šใ™ใ‚‹ใŸใ‚ save() ๅ†…ใง obj ใฎๅ…ทไฝ“ๅž‹ใŒไฝ•ใ‹ใ‚’่ช่ญ˜ใ™ใ‚‹ๅฟ…่ฆใฏใชใใ€save() ใฏ (A ใฎ ใ‚ตใƒ–ใ‚ฟใ‚คใƒ—ใงใ‚ใ‚Œใฐ) ไปปๆ„ใฎๅž‹ใ‚’ๅ–ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚ใคใพใ‚Š save() ใซๆธกใ•ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ๅž‹ใŒๅฎŸ่ฃ…ๆ™‚็‚นใงๅ…จใฆ่‡ชๆ˜Žใงใ‚ใ‚‹ๅฟ…่ฆใŒใชใ„็‚นใŒ้•ใ„ใพใ™ใ€‚OO ใงใƒฉใ‚คใƒ–ใƒฉใƒช่จญ่จˆใ‚’่กŒใ†้–‹็™บ่€…ใฏใ“ใฎๅ‹•ไฝœใ‚’ๅ‰ๆใจใ—ใฆใ„ใพใ™ใ€‚

ๆ“ฌไผผใ‚ณใƒผใƒ‰ใง่กจใ™ใชใ‚‰ไปฅไธ‹ใฎใ‚ˆใ†ใชๆ„Ÿใ˜ใ€‚

module Framework
  export A, save
  class A
    x::Int
    to_json() = "{x:$(this.x)}"
  end
  save(a::A) = println(a.to_json())
end
module Application
  using Framework
  class B(x) <: A(x)
    y::Int
    to_json() = "{x:$(super.x),y:$(this.y)}"
  end
  save(A(2018))        # {x:2018}
  save(B(2018, 0116))  # {x:2018,y:116} โ† ๆœŸๅพ…ใ™ใ‚‹ๅ‹•ไฝœ
end

ใ€Œใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใ”ใจ B.to_json() ใ‚’ๆธกใ™ใ“ใจใจ to_json(::B) ้–ขๆ•ฐใงๅˆฅใซๆธกใ™ใ“ใจใฏๅฎŸ่ณชๅŒใ˜ใ ใ€ใจใ„ใ†ๆ„่ฆ‹ใฏใ”ใ‚‚ใฃใจใ‚‚ใงใ™ใ€‚ใŸใ ใ€ใ“ใ†ใ„ใฃใŸๅ•้กŒใ‚’็ฐกๆฝ”ใ‹ใคๅฎ‰ๅ…จใซ่งฃๆฑบใงใใ‚‹ใ‚ˆใ†่จญ่จˆใ•ใ‚ŒใŸ่จ€่ชžใ‹ใจใ„ใ†็‚นใŒ OO ใฎใƒ‘ใƒฉใƒ€ใ‚คใƒ ใ‚’ๆŒใค่จ€่ชžใ‹ใฎๅˆคๆ–ญใซใชใ‚Šใพใ™ใ€‚ใงใชใ„ใจ้–ขๆ•ฐใƒใ‚คใƒณใ‚ฟใŒใ‚ใ‚‹ใ‚“ใ ใ‹ใ‚‰ C ่จ€่ชžใฏๅฎŸ่ณชๅคšๆ…‹ๅŒ–ใŒๅฏ่ƒฝใ  (็ฌฌไธ€็ดš้–ขๆ•ฐใ‚’ๆŒใค่จ€่ชžใฏๅ…จใฆๅคšๆ…‹ๅŒ–ใŒๅฏ่ƒฝใ ) ใจใ„ใ†ใ“ใจใซใชใ‚Š OO is ไฝ•? ใจใชใฃใฆใ—ใพใ†ใฎใงใ€Œโ—‹โ—‹ใ™ใ‚Œใฐร—ร—ใงใใ‚‹ใ€่ซ–่ญฐใฏไธๆฏ›ใงใ™ใ€‚

ไปฅไธŠใ‚ˆใ‚Šใ€็งใจใ—ใฆใฏใ€Œๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏ็‰นๅฎšใฎ็Šถๆณไธ‹ใงๅคšๆ…‹ๅŒ–ใฎไปฃๆ›ฟใจใ—ใฆๆฉŸ่ƒฝใ™ใ‚‹ใŒใ€ๅคšๆ…‹ๅŒ–ใใฎใ‚‚ใฎใฎไปฃๆ›ฟใจใชใ‚Šใ†ใ‚‹ๆฉŸ่ƒฝใงใฏใชใ„ใ€ใจ่€ƒใˆใฆใ„ใพใ™ใ€‚

ใ„ใพใฎใจใ“ใ‚ Julia ใฏ่จˆ็ฎ—็ง‘ๅญฆๆ–น้ขใฎใƒšใƒฉใƒƒใจใ—ใŸใ‚ณใƒผใƒ‰ใ‚’ๆ›ธใ็”จ้€”ใŒๅคšใ„ใ‚ˆใ†ใชใฎใงๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใงใ‚‚ๅๅˆ†ๆฉŸ่ƒฝใ™ใ‚‹ใจๆ€ใ„ใพใ™ใŒใ€ไปŠๅพŒๆฑŽ็”จ่จ€่ชžใจใ—ใฆ Python ใ‚„ Ruby ใฎไปฃๆ›ฟใ‚’็›ฎๆŒ‡ใ™ใชใ‚‰ใ€่ค‡้›‘ใซใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ—ใŸๅฎŸ่ฃ…ใ‚’่กŒใ†ไธŠใง้œฒๅ‘ˆใ—ใฆใใ‚‹้ƒจๅˆ†ใ‹ใชใจๆ€ใฃใฆใ„ใพใ™ใ€‚

ใชใŠ Pyhon ใ‚„ Ruby ใฎใ‚ˆใ†ใซๅฐ†ๆฅใฎ Julia ใฎใƒใƒผใ‚ธใƒงใƒณใงใ‚ฏใƒฉใ‚นใ‚„ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น็ญ‰ใฎ OO ็š„ใชใƒ‘ใƒฉใƒ€ใ‚คใƒ ใŒ่ฟฝๅŠ ใ•ใ‚Œใฆใ‚‚ๅ•้กŒใฎใชใ„่จ€่ชžไป•ๆง˜ใซใชใฃใฆใ„ใ‚‹ใจใฏๆ€ใ„ใพใ™ (้–‹็™บๅดใซใใฎๆ„ๆ€ใŒใ‚ใ‚‹ใ‹ใฏๅˆ†ใ‹ใ‚Šใพใ›ใ‚“ใŒ)ใ€‚

@torao
Copy link
Author

torao commented Jan 16, 2018

ใƒชใƒญใƒผใƒ‰ใ›ใšใซๆ›ธใ„ใฆใ„ใŸใฎใง2ใคไธŠใฎๆ›ธใ่พผใฟใซๆฐ—ใฅใ‹ใšใ™ใฟใพใ›ใ‚“ใ€‚

  1. ใฏ export ใ‚‚ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒ†ใƒผใ‚ทใƒงใƒณใ‚‚ใชใ„ใƒขใ‚ธใƒฅใƒผใƒซๅ†…ใซ้–‰ใ˜ใŸ to_json() ใฎๅฎš็พฉ่ฟฝๅŠ ใ‚’ๆƒณๅฎšใ—ใฆใ„ใพใ—ใŸ (private ใŒ็„กใ„ใ‚“ใงใƒขใ‚ธใƒฅใƒผใƒซใซ้–‰ใ˜ใŸใ‚‚ใชใซใ‚‚็„กใ„ใ‚“ใงใ™ใŒ)ใ€‚
  2. ใฏ Framework.save() ใฎใ•ใ‚‰ใซๅ…ˆใพใงๅค‰ๆ•ฐใŒๅผ•ใๅ›žใ•ใ‚Œใฆใ„ใŸใ‚‰ใ€ใฉใ“ใซไฝ•ใ‚’ๅฎš็พฉใ™ใ‚‹ใ‹ใŒ็…ฉ้›‘ใซใชใ‚Š (ใพใŸใ•ใ‚‰ใซใƒขใ‚ธใƒฅใƒผใƒซๅˆ†ๅ‰ฒใ—ใŸใใชใฃใŸใจใใซ็งปๅ‹•ใŒๅ›ฐ้›ฃใซใชใฃใŸใ‚Š) ใจใ„ใ†ๅผŠๅฎณใŒใ‚ใ‚Šใใ†ใ ใชใจใ„ใ†ใจใ“ใ‚ใงใ™ใ€‚
module Lib1
  export footer, foo
  foo(x) = ""
  footer(x) = foo(x)
end
module Lib2
  export header, bar
  bar(x) = ""
  header(x) = bar(x)
end
module Framework
  using Lib1, Lib2
  export save, to_json
  to_json(x) = ""
  save(x) = println(Lib2.header(x) * ":" * to_json(x) * ":" * Lib1.footer(x))
end
module Application
  using Lib1, Lib2, Framework
  struct X; end
  Lib1.foo(x::X) = "footer"
  Lib2.bar(x::X) = "header"
  Framework.to_json(x::X) = "json"
  save(X())
end

@bicycle1885
Copy link

ใ€Œๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใงๅคšๆ…‹ๅŒ–ใฏๅฏ่ƒฝใ€ใจใ„ใ†ใฎใฏ

ใจใ„ใ†ใ“ใจใฏ่จ€ใฃใฆใชใ„ใจๆ€ใ„ใพใ™ใŒ๏ผŒๅคš้‡ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใฏๅคšๆ…‹ใฎๅฎŸ่ฃ…ใฎใฒใจใคใงใฏใชใ„ใ‹ใจๆ€ใฃใฆใพใ™ใ€‚

่ฆ‹ใฆใ„ใ‚‹ๆ„Ÿใ˜ๆ˜Ž็คบ็š„ใซ export ใ—ใฆใ€Œใ“ใ‚Œใ‚’ๅฎŸ่ฃ…ใ›ใ‚ˆใ€ใจ

exportใ™ใ‚‹ใ“ใจใจ๏ผŒใƒกใ‚ฝใƒƒใƒ‰ใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใ“ใจใฏ็›ดไบคใ™ใ‚‹ๆฆ‚ๅฟตใงใ™ใ€‚exportใ›ใšใซใƒกใ‚ฝใƒƒใƒ‰ใ‚’ๅฎŸ่ฃ…ใ™ใ‚‹ใ“ใจใฏใงใใพใ™ใ€‚

@torao
Copy link
Author

torao commented Jan 17, 2018

ใคใŸใชใ„็Ÿฅ่ญ˜ใซ่ฉณใ—ใใ”่ชฌๆ˜Žใ„ใŸใ ใใ‚ใ‚ŠใŒใจใ†ใ”ใ–ใ„ใพใ—ใŸใ€‚
ไปŠใพใงไฝฟใ„ๆ…ฃใ‚ŒใŸ่จญ่จˆใƒ‘ใ‚ฟใƒผใƒณใ‚’่€ƒใˆๆ–นใ‹ใ‚‰ๅ†ๆง‹็ฏ‰ใŒๅฟ…่ฆใง่พ›ใ„ใจใ“ใ‚ใงใ™ใŒใ€ใพใไฝ•ใจใ‹ใชใ‚‹ใงใ—ใ‚‡ใ†ใ€‚

@torao
Copy link
Author

torao commented Jan 17, 2018

ๆœ€ๅพŒใซใ€็™บ็ซฏใซๆˆปใฃใฆ่ชค่งฃใฎใชใ„ใ‚ˆใ†ใซๆ›ธใ„ใฆใŠใใพใ™ใŒใ€็งใฏ่จ€่ชžใใ‚Œใžใ‚Œใฎ่ƒŒๆ™ฏใซใ‚ใ‚‹็†ๅฟตใ‚„ๆ–‡ๅŒ–ใ‚’็Ÿฅใ‚‹ใ“ใจใ‚’ๆฅฝใ—ใ‚“ใงใ„ใพใ™ใฎใงใ€ไป–ใฎ่จ€่ชžใฎใƒ‘ใƒฉใƒ€ใ‚คใƒ ใ‚’ๆŒใก่พผใ‚“ใงใ€ŒJulia ใฏ OO ใŒใชใ„ใ‹ใ‚‰ใƒ€ใƒกใ !ใ€ใจใ„ใ†่€ƒใˆใฏใ‚ใ‚Šใพใ›ใ‚“ (ใ‚€ใ—ใ‚ใใ†ใ„ใฃใŸๅŽŸ็†ไธป็พฉใจใฏๅฏพๆฅตใฎใƒใ‚ธใ‚ทใƒงใƒณใงใ™)ใ€‚

Julia ใซ้™ใ‚‰ใšๆ–ฐใ—ใ„่จ€่ชžใ‚„ใ‚ทใ‚นใƒ†ใƒ ็ญ‰ใซ็€ๆ‰‹ใ™ใ‚‹ใจใใซใฏ:

  1. ไปŠใพใงใฎ่€ƒใˆๆ–นใŒใฉใ“ใพใง้€š็”จใ™ใ‚‹ใฎใ‹ (ไฝ•ใŒใ‚ใฃใฆไฝ•ใŒ็„กใ„ใฎใ‹)?
  2. ใใ‚Œใซๆตธใ‹ใ‚‹ใŸใ‚ใซๆ–ฐใ—ใๅฐŽๅ…ฅใ—ใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„่€ƒใˆใฏไฝ•ใ‹?
  3. ใใ‚Œใซๆตธใ‹ใ‚‹ใŸใ‚ใซไปŠใฎ่€ƒใˆใ‹ใ‚‰ๆจใฆใชใ‘ใ‚Œใฐใชใ‚‰ใชใ„ใ“ใจใฏไฝ•ใ‹?

ใ‚’ๆ‰‹ๆŽขใ‚Šใ—ใฆใ„ใพใ™ใ€‚ใใ—ใฆใใฎ้Ž็จ‹ใ‹ใ‚‰ๅ‡บใ‚‹ใ€ŒJulia ใฏ OO ใŒใชใ„ใชใ€ๆ‰‹็ถšใๅž‹ใงๆ›ธใใฎใฏ่พ›ใ„ใชใ€ใจใ„ใ†ใ‚ˆใ†ใชไฝ•ใ‹ใ‚’่ฉฆ่กŒ้Œฏ่ชคใ‚’ใ—ใฆใ„ใ‚‹ใจใใฎไธ€้€ฃใฎใƒ„ใ‚คใƒผใƒˆใฏ:

  • ็พๆ™‚็‚นใฎ็–‘ๅ•็‚น/ใ“ใ‚Œใ‹ใ‚‰่ชฟในใ‚ˆใ†ใจใ—ใฆใ„ใ‚‹ใ“ใจใซใคใ„ใฆใ€ไฝ•ใŒๅˆ†ใ‹ใฃใฆใ„ใชใ„/ๅ‡บๆฅใฆใ„ใชใ„ใ‹่จ€่ชžๅŒ–ใ—ใฆใ‚‚ใ‚„ใฃใจๆ„Ÿใ‚’ใฏใฃใใ‚Šใ™ใ‚‹
  • ไฝœๆฅญใ‚’ไธญๆ–ญใ™ใ‚‹ใŸใ‚ใซ็พๆ™‚็‚นใงไฝ•ใŒๅˆ†ใ‹ใฃใฆใ„ใชใ„/ๅ‡บๆฅใฆใ„ใชใ„ใ‹ใ‚’ๅ‡บๅŠ›ใ—ใฆใŠใ
  • ็พๆ™‚็‚นใฎ็†่งฃใงใ€Œใใ‚ŒใŒไฝ•ใงใ‚ใ‚‹ใ‹ใ€ใ‚’่‡ชๅˆ†ใชใ‚Šใฎ่กจ็พใง่จ€่ชžๅŒ–ใ—ใฆ็ขบ่ชใ™ใ‚‹

ใจใ„ใฃใŸใ“ใจใ‚’็›ฎ็š„ใจใ—ใŸๅฏ่ฆ–ๅŒ–ไฝœๆฅญใงใ™ (Twitter ใฏใใ‚Œใ‚’ๆฐ—่ปฝใซใงใใ‚‹ๆœ€้ฉใชใƒ„ใƒผใƒซใงใ™; ใพใ่ชฐใ‹ใซใ€Œใใ‚Œโ—‹โ—‹ใงใงใใ‚‹ใ‚ˆใ€ใจใ‚ญใƒผใƒฏใƒผใƒ‰ใ‚’้ ‚ใ‘ใ‚‹ใ‹ใ‚‚ใชใ‚นใ‚ฑใƒ™ๅฟƒใ‚‚ๅฆๅฎšใฏใ—ใพใ›ใ‚“ใŒ)ใ€‚

ใŸใ ใ€ใใ‚Œใ‚‰ใ‚’้€ไธ€ๆคœ็ดขใงๆ‹พใฃใฆใ€Œใ“ใ„ใคใฏไฝ•ใ‚‚ๅˆ†ใ‹ใฃใฆใ„ใชใ„! ใƒญใ‚ฏใซ่ชฟในใ‚‚ใ›ใšใซ Julia ใ‚’้ž้›ฃใ—ใฆใ„ใ‚‹!ใ€ใจไฝ•ใ‚‰ใ‹ใฎๆ‚ชๆ„ใ‚’่ฆ‹ใ„ใ ใ•ใ‚Œใฆใ„ใ‚‹ใ‚ˆใ†ใชๆ–นใŒใ„ใ‚‰ใฃใ—ใ‚ƒใ„ใพใ™ใŒใ€ใใ‚Œใฏ่€ƒใˆใ™ใŽใงใ™ (ๆญฃ็ขบใซ่จ€ใ†ใจใใฃใ‹ใ‘ใจใชใฃใŸๅผ•็”จใƒ„ใ‚คใƒผใƒˆใซใใ†ใ„ใฃใŸๆ„ๅ›ณใ‚’ๆ„Ÿใ˜ใŸใŸใ‚ใ“ใฎ่จ˜ไบ‹ใจใ„ใใคใ‹ใฎใƒ„ใ‚คใƒผใƒˆใซ้–ขใ—ใฆใฏใ„ใ•ใ•ใ‹ใ†ใ‚“ใ–ใ‚Šใ—ใชใŒใ‚‰(+ๆทฑๅคœ้…ใใ‚‚ใ‚ใ‚Š)ๅพŒใ‚ๅ‘ใใชๆฐ—ๅˆ†ใงๆ›ธใ„ใฆใ„ใพใ™)ใ€‚

@bicycle1885
Copy link

็งใ‚‚ๅˆฅใซ่ซ–็ ดใ—ใฆใ‚„ใ‚ใ†ใจใ‹๏ผŒใใ†ใ„ใ†ๆฐ—ๆŒใกใŒใ‚ใฃใฆใ‚ณใƒกใƒณใƒˆใ—ใฆใ„ใ‚‹ใ‚ใ‘ใงใฏใชใ„ใงใ™ใ€‚ๆ–ฐใ—ใ„่จ€่ชžใ‚’็ฟ’ๅพ—ใ™ใ‚‹้š›ใซใฏๅ…ˆๅ…ฅ่ฆณใฏใคใใ‚‚ใฎใงใ™ใ€‚ใŸใ ๏ผŒใ‚‚ใ—Juliaใซๅฏพใ—ใฆ่ชค่งฃใŒใ‚ใฃใŸใ‚‰ๆฎ‹ๅฟตใชใฎใง๏ผŒใ‚‚ใ—ไฝ•ใ‹ๆ€ใ„้•ใ„ใŒใ‚ใ‚‹ใฎใงใฏใชใ„ใ‹ใจๆ€ใฃใŸ่จ˜ไบ‹ใ‚„ๆ„่ฆ‹ใซๅฏพใ—ใฆใฏใ‚ณใƒกใƒณใƒˆใ—ใ‚ˆใ†ใจๆ€ใฃใฆใ„ใพใ™ใ€‚ใ“ใ†ใ—ใฆๅ…ทไฝ“็š„ใซใ‚ณใƒผใƒ‰ใ‚’็คบใ—ใฆๆ–‡็ซ ๅŒ–ใ—ใฆ่ฒฐใˆใ‚‹ใจ๏ผŒ่ญฐ่ซ–ใ—ใ‚„ใ™ใใชใ‚‹ใฎใงๅคงๅค‰ๅŠฉใ‹ใ‚Šใพใ™ใ€‚

Juliaใฏๆ–ฐใ—ใ„่จ€่ชžใงใ™ใŒ๏ผŒๆ—ขๅญ˜ใฎ่จ€่ชžใ‚’ใ‚ˆใ็ ”็ฉถใ—ใฆ่จญ่จˆใ•ใ‚Œใฆใ„ใ‚‹ใฎใง๏ผŒๅคšใใฎๅ•้กŒใซใฏๆจ™ๆบ–็š„ใช่งฃๆฑบๆณ•ใŒ็”จๆ„ใ•ใ‚Œใฆใ„ใ‚‹ใจๆ€ใ„ใพใ™ใ€‚ใ—ใ‹ใ—ใ“ใ‚Œใ‚‰ใŒๆ–‡็ซ ๅŒ–ใ•ใ‚Œใฆใ„ใ‚‹ใ“ใจใฏๅฐ‘ใชใ„ใฎใง๏ผŒๆ—ขๅญ˜ใฎใ‚ˆใใงใใŸใ‚ฝใƒผใ‚นใ‚ณใƒผใƒ‰ใ‚’ๅ‚่€ƒใซใ™ใ‚‹ใ‹๏ผŒใƒ•ใ‚ฉใƒผใƒฉใƒ (discourseใชใฉ)ใง่ณชๅ•ใ™ใ‚‹ใฎใŒ่‰ฏใ„ใจๆ€ใ„ใพใ™ใ€‚

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment