From 4e808db2cd7f2499d6190b470d70f2f28afd804f Mon Sep 17 00:00:00 2001 From: Hironori HOSHINO <> Date: Thu, 21 Nov 2024 10:15:38 +0900 Subject: [PATCH] documents --- docs/image/vol1-cover.jpg | Bin 0 -> 322173 bytes docs/image/vol2-cover.jpg | Bin 0 -> 330581 bytes index.xhtml => docs/index.xhtml | 0 docs/style/book-style.css | 315 +++++ docs/style/fixed-layout-jp.css | 12 + docs/style/style-advance.css | 1566 +++++++++++++++++++++++++ docs/style/style-ascii-dwango.css | 1126 ++++++++++++++++++ docs/style/style-check.css | 88 ++ docs/style/style-kadokawa.css | 319 +++++ docs/style/style-karc.css | 68 ++ docs/style/style-reset.css | 104 ++ docs/style/style-standard.css | 1675 +++++++++++++++++++++++++++ docs/vol1/image/ch01/1-1.jpg | Bin 0 -> 44686 bytes docs/vol1/image/ch01/1-2.jpg | Bin 0 -> 79866 bytes docs/vol1/image/ch02/2-1.jpg | Bin 0 -> 53067 bytes docs/vol1/image/ch02/2-2.jpg | Bin 0 -> 66529 bytes docs/vol1/image/ch02/2-3.jpg | Bin 0 -> 112707 bytes docs/vol1/image/ch03/3-1.jpg | Bin 0 -> 52874 bytes docs/vol1/image/ch03/3-2.jpg | Bin 0 -> 40096 bytes docs/vol1/image/ch07/07-1.jpg | Bin 0 -> 32511 bytes docs/vol1/image/ch07/07-2.jpg | Bin 0 -> 48790 bytes docs/vol1/image/ch08/08-1.jpg | Bin 0 -> 45063 bytes docs/vol1/image/ch08/08-2.jpg | Bin 0 -> 63555 bytes docs/vol1/image/ch08/08-3.jpg | Bin 0 -> 67709 bytes docs/vol1/image/ch08/08-4.jpg | Bin 0 -> 64385 bytes docs/vol1/image/ch09/09-1.jpg | Bin 0 -> 25433 bytes docs/vol1/image/ch09/09-2.jpg | Bin 0 -> 34367 bytes docs/vol1/image/ch10/10-1.jpg | Bin 0 -> 81630 bytes docs/vol1/image/ch13/13-1.jpg | Bin 0 -> 50998 bytes docs/vol1/image/ch13/13-2.jpg | Bin 0 -> 59052 bytes docs/vol1/image/ch13/13-3.jpg | Bin 0 -> 48527 bytes docs/vol1/image/ch13/13-4.jpg | Bin 0 -> 130769 bytes docs/vol1/image/ch14/14-1.jpg | Bin 0 -> 34856 bytes docs/vol1/image/ch14/14-2.jpg | Bin 0 -> 63739 bytes docs/vol1/image/ch15/15-0.jpg | Bin 0 -> 92080 bytes docs/vol1/image/ch15/15-1.jpg | Bin 0 -> 60166 bytes docs/vol1/image/ch15/15-2.jpg | Bin 0 -> 61286 bytes docs/vol1/image/ch15/15-4.jpg | Bin 0 -> 108349 bytes docs/vol1/image/ch15/15-5.jpg | Bin 0 -> 101287 bytes docs/vol1/image/ch15/15-6.jpg | Bin 0 -> 68343 bytes docs/vol1/image/ch16/16-1.jpg | Bin 0 -> 86685 bytes docs/vol1/image/ch16/16-2.jpg | Bin 0 -> 73705 bytes docs/vol1/image/ch16/16-3.jpg | Bin 0 -> 77377 bytes docs/vol1/image/ch16/16-5.jpg | Bin 0 -> 38995 bytes docs/vol1/image/ch16/16-6.jpg | Bin 0 -> 71166 bytes docs/vol1/image/ch16/16-7.jpg | Bin 0 -> 69231 bytes docs/vol1/image/ch18/18-1.jpg | Bin 0 -> 65284 bytes docs/vol1/image/ch18/18-2.jpg | Bin 0 -> 119281 bytes docs/vol1/image/ch19/19-1.jpg | Bin 0 -> 51167 bytes docs/vol1/image/ch19/19-2.jpg | Bin 0 -> 111643 bytes docs/vol1/image/ch22/22-1.jpg | Bin 0 -> 51791 bytes docs/vol1/image/ch22/22-2.jpg | Bin 0 -> 84679 bytes docs/vol1/image/ch23/23-1.jpg | Bin 0 -> 36486 bytes docs/vol1/image/ch23/23-2.jpg | Bin 0 -> 45700 bytes docs/vol1/image/ch24/24-1.jpg | Bin 0 -> 67207 bytes docs/vol1/image/ch25/25-1.jpg | Bin 0 -> 39820 bytes docs/vol1/image/ch28/28-1.jpg | Bin 0 -> 88698 bytes docs/vol1/image/ch29/29-1.jpg | Bin 0 -> 39157 bytes docs/vol1/image/ch30/30-1.jpg | Bin 0 -> 46786 bytes docs/vol1/image/ch30/30-2.jpg | Bin 0 -> 31382 bytes docs/vol1/image/ch30/30-3.jpg | Bin 0 -> 59133 bytes docs/vol1/image/cover.jpg | Bin 0 -> 56619 bytes docs/vol1/image/tobira.jpg | Bin 0 -> 173383 bytes docs/vol1/index.xhtml | 59 + docs/vol1/xhtml/p-001.xhtml | 28 + docs/vol1/xhtml/p-002.xhtml | 508 ++++++++ docs/vol1/xhtml/p-003.xhtml | 675 +++++++++++ docs/vol1/xhtml/p-004.xhtml | 386 ++++++ docs/vol1/xhtml/p-005.xhtml | 227 ++++ docs/vol1/xhtml/p-006.xhtml | 46 + docs/vol1/xhtml/p-007.xhtml | 293 +++++ docs/vol1/xhtml/p-008.xhtml | 180 +++ docs/vol1/xhtml/p-009.xhtml | 49 + docs/vol1/xhtml/p-010.xhtml | 369 ++++++ docs/vol1/xhtml/p-011.xhtml | 179 +++ docs/vol1/xhtml/p-012.xhtml | 58 + docs/vol1/xhtml/p-013.xhtml | 278 +++++ docs/vol1/xhtml/p-014.xhtml | 205 ++++ docs/vol1/xhtml/p-015.xhtml | 111 ++ docs/vol1/xhtml/p-016.xhtml | 485 ++++++++ docs/vol1/xhtml/p-017.xhtml | 210 ++++ docs/vol1/xhtml/p-018.xhtml | 86 ++ docs/vol1/xhtml/p-019.xhtml | 552 +++++++++ docs/vol1/xhtml/p-020.xhtml | 103 ++ docs/vol1/xhtml/p-021.xhtml | 70 ++ docs/vol1/xhtml/p-022.xhtml | 717 ++++++++++++ docs/vol1/xhtml/p-023.xhtml | 280 +++++ docs/vol1/xhtml/p-024.xhtml | 66 ++ docs/vol1/xhtml/p-025.xhtml | 875 ++++++++++++++ docs/vol1/xhtml/p-026.xhtml | 71 ++ docs/vol1/xhtml/p-027.xhtml | 79 ++ docs/vol1/xhtml/p-028.xhtml | 594 ++++++++++ docs/vol1/xhtml/p-029.xhtml | 29 + docs/vol1/xhtml/p-030.xhtml | 67 ++ docs/vol1/xhtml/p-031.xhtml | 704 +++++++++++ docs/vol1/xhtml/p-032.xhtml | 116 ++ docs/vol1/xhtml/p-033.xhtml | 77 ++ docs/vol1/xhtml/p-034.xhtml | 387 +++++++ docs/vol1/xhtml/p-035.xhtml | 139 +++ docs/vol1/xhtml/p-036.xhtml | 65 ++ docs/vol1/xhtml/p-037.xhtml | 667 +++++++++++ docs/vol1/xhtml/p-038.xhtml | 71 ++ docs/vol1/xhtml/p-039.xhtml | 521 +++++++++ docs/vol1/xhtml/p-040.xhtml | 94 ++ docs/vol1/xhtml/p-041.xhtml | 457 ++++++++ docs/vol1/xhtml/p-042.xhtml | 64 + docs/vol1/xhtml/p-043.xhtml | 417 +++++++ docs/vol1/xhtml/p-044.xhtml | 75 ++ docs/vol1/xhtml/p-045.xhtml | 248 ++++ docs/vol1/xhtml/p-046.xhtml | 341 ++++++ docs/vol1/xhtml/p-047.xhtml | 40 + docs/vol1/xhtml/p-048.xhtml | 66 ++ docs/vol1/xhtml/p-049.xhtml | 397 +++++++ docs/vol1/xhtml/p-050.xhtml | 50 + docs/vol1/xhtml/p-051.xhtml | 320 +++++ docs/vol1/xhtml/p-052.xhtml | 45 + docs/vol1/xhtml/p-053.xhtml | 274 +++++ docs/vol1/xhtml/p-054.xhtml | 50 + docs/vol1/xhtml/p-055.xhtml | 340 ++++++ docs/vol1/xhtml/p-056.xhtml | 79 ++ docs/vol1/xhtml/p-057.xhtml | 318 +++++ docs/vol1/xhtml/p-058.xhtml | 80 ++ docs/vol1/xhtml/p-059.xhtml | 314 +++++ docs/vol1/xhtml/p-060.xhtml | 61 + docs/vol1/xhtml/p-061.xhtml | 376 ++++++ docs/vol1/xhtml/p-062.xhtml | 114 ++ docs/vol1/xhtml/p-063.xhtml | 292 +++++ docs/vol1/xhtml/p-064.xhtml | 81 ++ docs/vol1/xhtml/p-065.xhtml | 394 +++++++ docs/vol1/xhtml/p-066.xhtml | 78 ++ docs/vol1/xhtml/p-bmatter-001.xhtml | 59 + docs/vol1/xhtml/p-bmatter-002.xhtml | 1369 ++++++++++++++++++++++ docs/vol1/xhtml/p-colophon.xhtml | 84 ++ docs/vol1/xhtml/p-cover.xhtml | 27 + docs/vol1/xhtml/p-fmatter-001.xhtml | 36 + docs/vol1/xhtml/p-fmatter-002.xhtml | 29 + docs/vol1/xhtml/p-fmatter-003.xhtml | 35 + docs/vol1/xhtml/p-fmatter-004.xhtml | 29 + docs/vol1/xhtml/p-fmatter-005.xhtml | 32 + docs/vol1/xhtml/p-fmatter-006.xhtml | 66 ++ docs/vol2/image/ch31/31-1.jpg | Bin 0 -> 89063 bytes docs/vol2/image/ch31/31-2.jpg | Bin 0 -> 112498 bytes docs/vol2/image/ch32/32-1.jpg | Bin 0 -> 34564 bytes docs/vol2/image/ch32/32-2.jpg | Bin 0 -> 61321 bytes docs/vol2/image/ch36/36-1.jpg | Bin 0 -> 50289 bytes docs/vol2/image/ch38/38-1.jpg | Bin 0 -> 84266 bytes docs/vol2/image/ch41/41-1.jpg | Bin 0 -> 59942 bytes docs/vol2/image/ch41/41-3.jpg | Bin 0 -> 45268 bytes docs/vol2/image/ch41/41-4.jpg | Bin 0 -> 59771 bytes docs/vol2/image/ch43/43-1.jpg | Bin 0 -> 51525 bytes docs/vol2/image/ch43/43-2.jpg | Bin 0 -> 45699 bytes docs/vol2/image/ch43/43-3.jpg | Bin 0 -> 55434 bytes docs/vol2/image/ch43/43-4.jpg | Bin 0 -> 57430 bytes docs/vol2/image/ch45/45-1.jpg | Bin 0 -> 48802 bytes docs/vol2/image/ch48/48-1.jpg | Bin 0 -> 73369 bytes docs/vol2/image/ch48/48-2.jpg | Bin 0 -> 56151 bytes docs/vol2/image/cover.jpg | Bin 0 -> 56887 bytes docs/vol2/image/tobira.jpg | Bin 0 -> 191270 bytes docs/vol2/index.xhtml | 68 ++ docs/vol2/xhtml/p-001.xhtml | 28 + docs/vol2/xhtml/p-002.xhtml | 449 +++++++ docs/vol2/xhtml/p-003.xhtml | 57 + docs/vol2/xhtml/p-004.xhtml | 323 ++++++ docs/vol2/xhtml/p-005.xhtml | 61 + docs/vol2/xhtml/p-006.xhtml | 356 ++++++ docs/vol2/xhtml/p-007.xhtml | 117 ++ docs/vol2/xhtml/p-008.xhtml | 228 ++++ docs/vol2/xhtml/p-009.xhtml | 53 + docs/vol2/xhtml/p-010.xhtml | 336 ++++++ docs/vol2/xhtml/p-011.xhtml | 46 + docs/vol2/xhtml/p-012.xhtml | 386 ++++++ docs/vol2/xhtml/p-013.xhtml | 62 + docs/vol2/xhtml/p-014.xhtml | 419 +++++++ docs/vol2/xhtml/p-015.xhtml | 59 + docs/vol2/xhtml/p-016.xhtml | 329 ++++++ docs/vol2/xhtml/p-017.xhtml | 66 ++ docs/vol2/xhtml/p-018.xhtml | 509 ++++++++ docs/vol2/xhtml/p-019.xhtml | 49 + docs/vol2/xhtml/p-020.xhtml | 261 +++++ docs/vol2/xhtml/p-021.xhtml | 54 + docs/vol2/xhtml/p-022.xhtml | 362 ++++++ docs/vol2/xhtml/p-023.xhtml | 109 ++ docs/vol2/xhtml/p-024.xhtml | 459 ++++++++ docs/vol2/xhtml/p-025.xhtml | 86 ++ docs/vol2/xhtml/p-026.xhtml | 509 ++++++++ docs/vol2/xhtml/p-027.xhtml | 95 ++ docs/vol2/xhtml/p-028.xhtml | 468 ++++++++ docs/vol2/xhtml/p-029.xhtml | 43 + docs/vol2/xhtml/p-030.xhtml | 364 ++++++ docs/vol2/xhtml/p-031.xhtml | 59 + docs/vol2/xhtml/p-032.xhtml | 377 ++++++ docs/vol2/xhtml/p-033.xhtml | 69 ++ docs/vol2/xhtml/p-034.xhtml | 106 ++ docs/vol2/xhtml/p-035.xhtml | 158 +++ docs/vol2/xhtml/p-036.xhtml | 110 ++ docs/vol2/xhtml/p-037.xhtml | 102 ++ docs/vol2/xhtml/p-038.xhtml | 128 ++ docs/vol2/xhtml/p-039.xhtml | 110 ++ docs/vol2/xhtml/p-040.xhtml | 116 ++ docs/vol2/xhtml/p-041.xhtml | 110 ++ docs/vol2/xhtml/p-042.xhtml | 129 +++ docs/vol2/xhtml/p-043.xhtml | 117 ++ docs/vol2/xhtml/p-044.xhtml | 126 ++ docs/vol2/xhtml/p-045.xhtml | 95 ++ docs/vol2/xhtml/p-046.xhtml | 132 +++ docs/vol2/xhtml/p-047.xhtml | 128 ++ docs/vol2/xhtml/p-048.xhtml | 110 ++ docs/vol2/xhtml/p-049.xhtml | 127 ++ docs/vol2/xhtml/p-050.xhtml | 138 +++ docs/vol2/xhtml/p-051.xhtml | 104 ++ docs/vol2/xhtml/p-052.xhtml | 142 +++ docs/vol2/xhtml/p-053.xhtml | 117 ++ docs/vol2/xhtml/p-054.xhtml | 124 ++ docs/vol2/xhtml/p-055.xhtml | 107 ++ docs/vol2/xhtml/p-056.xhtml | 124 ++ docs/vol2/xhtml/p-057.xhtml | 120 ++ docs/vol2/xhtml/p-058.xhtml | 138 +++ docs/vol2/xhtml/p-bmatter-001.xhtml | 67 ++ docs/vol2/xhtml/p-bmatter-002.xhtml | 796 +++++++++++++ docs/vol2/xhtml/p-colophon.xhtml | 84 ++ docs/vol2/xhtml/p-cover.xhtml | 27 + docs/vol2/xhtml/p-fmatter-001.xhtml | 37 + docs/vol2/xhtml/p-fmatter-002.xhtml | 29 + docs/vol2/xhtml/p-fmatter-003.xhtml | 34 + docs/vol2/xhtml/p-fmatter-004.xhtml | 29 + docs/vol2/xhtml/p-fmatter-005.xhtml | 32 + docs/vol2/xhtml/p-fmatter-006.xhtml | 57 + docs/vol2/xhtml/p-toc-001.xhtml | 318 +++++ 228 files changed, 35030 insertions(+) create mode 100644 docs/image/vol1-cover.jpg create mode 100644 docs/image/vol2-cover.jpg rename index.xhtml => docs/index.xhtml (100%) create mode 100755 docs/style/book-style.css create mode 100755 docs/style/fixed-layout-jp.css create mode 100755 docs/style/style-advance.css create mode 100755 docs/style/style-ascii-dwango.css create mode 100755 docs/style/style-check.css create mode 100755 docs/style/style-kadokawa.css create mode 100755 docs/style/style-karc.css create mode 100755 docs/style/style-reset.css create mode 100755 docs/style/style-standard.css create mode 100644 docs/vol1/image/ch01/1-1.jpg create mode 100644 docs/vol1/image/ch01/1-2.jpg create mode 100644 docs/vol1/image/ch02/2-1.jpg create mode 100644 docs/vol1/image/ch02/2-2.jpg create mode 100644 docs/vol1/image/ch02/2-3.jpg create mode 100644 docs/vol1/image/ch03/3-1.jpg create mode 100644 docs/vol1/image/ch03/3-2.jpg create mode 100644 docs/vol1/image/ch07/07-1.jpg create mode 100644 docs/vol1/image/ch07/07-2.jpg create mode 100644 docs/vol1/image/ch08/08-1.jpg create mode 100644 docs/vol1/image/ch08/08-2.jpg create mode 100644 docs/vol1/image/ch08/08-3.jpg create mode 100644 docs/vol1/image/ch08/08-4.jpg create mode 100644 docs/vol1/image/ch09/09-1.jpg create mode 100644 docs/vol1/image/ch09/09-2.jpg create mode 100644 docs/vol1/image/ch10/10-1.jpg create mode 100644 docs/vol1/image/ch13/13-1.jpg create mode 100644 docs/vol1/image/ch13/13-2.jpg create mode 100644 docs/vol1/image/ch13/13-3.jpg create mode 100644 docs/vol1/image/ch13/13-4.jpg create mode 100644 docs/vol1/image/ch14/14-1.jpg create mode 100644 docs/vol1/image/ch14/14-2.jpg create mode 100644 docs/vol1/image/ch15/15-0.jpg create mode 100644 docs/vol1/image/ch15/15-1.jpg create mode 100644 docs/vol1/image/ch15/15-2.jpg create mode 100644 docs/vol1/image/ch15/15-4.jpg create mode 100644 docs/vol1/image/ch15/15-5.jpg create mode 100644 docs/vol1/image/ch15/15-6.jpg create mode 100644 docs/vol1/image/ch16/16-1.jpg create mode 100644 docs/vol1/image/ch16/16-2.jpg create mode 100644 docs/vol1/image/ch16/16-3.jpg create mode 100644 docs/vol1/image/ch16/16-5.jpg create mode 100644 docs/vol1/image/ch16/16-6.jpg create mode 100644 docs/vol1/image/ch16/16-7.jpg create mode 100644 docs/vol1/image/ch18/18-1.jpg create mode 100644 docs/vol1/image/ch18/18-2.jpg create mode 100644 docs/vol1/image/ch19/19-1.jpg create mode 100644 docs/vol1/image/ch19/19-2.jpg create mode 100644 docs/vol1/image/ch22/22-1.jpg create mode 100644 docs/vol1/image/ch22/22-2.jpg create mode 100644 docs/vol1/image/ch23/23-1.jpg create mode 100644 docs/vol1/image/ch23/23-2.jpg create mode 100644 docs/vol1/image/ch24/24-1.jpg create mode 100644 docs/vol1/image/ch25/25-1.jpg create mode 100644 docs/vol1/image/ch28/28-1.jpg create mode 100644 docs/vol1/image/ch29/29-1.jpg create mode 100644 docs/vol1/image/ch30/30-1.jpg create mode 100644 docs/vol1/image/ch30/30-2.jpg create mode 100644 docs/vol1/image/ch30/30-3.jpg create mode 100644 docs/vol1/image/cover.jpg create mode 100644 docs/vol1/image/tobira.jpg create mode 100755 docs/vol1/index.xhtml create mode 100755 docs/vol1/xhtml/p-001.xhtml create mode 100755 docs/vol1/xhtml/p-002.xhtml create mode 100755 docs/vol1/xhtml/p-003.xhtml create mode 100755 docs/vol1/xhtml/p-004.xhtml create mode 100755 docs/vol1/xhtml/p-005.xhtml create mode 100755 docs/vol1/xhtml/p-006.xhtml create mode 100755 docs/vol1/xhtml/p-007.xhtml create mode 100644 docs/vol1/xhtml/p-008.xhtml create mode 100644 docs/vol1/xhtml/p-009.xhtml create mode 100755 docs/vol1/xhtml/p-010.xhtml create mode 100644 docs/vol1/xhtml/p-011.xhtml create mode 100644 docs/vol1/xhtml/p-012.xhtml create mode 100755 docs/vol1/xhtml/p-013.xhtml create mode 100644 docs/vol1/xhtml/p-014.xhtml create mode 100644 docs/vol1/xhtml/p-015.xhtml create mode 100755 docs/vol1/xhtml/p-016.xhtml create mode 100644 docs/vol1/xhtml/p-017.xhtml create mode 100644 docs/vol1/xhtml/p-018.xhtml create mode 100755 docs/vol1/xhtml/p-019.xhtml create mode 100644 docs/vol1/xhtml/p-020.xhtml create mode 100644 docs/vol1/xhtml/p-021.xhtml create mode 100755 docs/vol1/xhtml/p-022.xhtml create mode 100644 docs/vol1/xhtml/p-023.xhtml create mode 100644 docs/vol1/xhtml/p-024.xhtml create mode 100755 docs/vol1/xhtml/p-025.xhtml create mode 100644 docs/vol1/xhtml/p-026.xhtml create mode 100644 docs/vol1/xhtml/p-027.xhtml create mode 100755 docs/vol1/xhtml/p-028.xhtml create mode 100644 docs/vol1/xhtml/p-029.xhtml create mode 100644 docs/vol1/xhtml/p-030.xhtml create mode 100644 docs/vol1/xhtml/p-031.xhtml create mode 100644 docs/vol1/xhtml/p-032.xhtml create mode 100644 docs/vol1/xhtml/p-033.xhtml create mode 100644 docs/vol1/xhtml/p-034.xhtml create mode 100644 docs/vol1/xhtml/p-035.xhtml create mode 100644 docs/vol1/xhtml/p-036.xhtml create mode 100644 docs/vol1/xhtml/p-037.xhtml create mode 100644 docs/vol1/xhtml/p-038.xhtml create mode 100644 docs/vol1/xhtml/p-039.xhtml create mode 100644 docs/vol1/xhtml/p-040.xhtml create mode 100644 docs/vol1/xhtml/p-041.xhtml create mode 100644 docs/vol1/xhtml/p-042.xhtml create mode 100644 docs/vol1/xhtml/p-043.xhtml create mode 100644 docs/vol1/xhtml/p-044.xhtml create mode 100644 docs/vol1/xhtml/p-045.xhtml create mode 100644 docs/vol1/xhtml/p-046.xhtml create mode 100644 docs/vol1/xhtml/p-047.xhtml create mode 100644 docs/vol1/xhtml/p-048.xhtml create mode 100644 docs/vol1/xhtml/p-049.xhtml create mode 100644 docs/vol1/xhtml/p-050.xhtml create mode 100644 docs/vol1/xhtml/p-051.xhtml create mode 100644 docs/vol1/xhtml/p-052.xhtml create mode 100644 docs/vol1/xhtml/p-053.xhtml create mode 100644 docs/vol1/xhtml/p-054.xhtml create mode 100644 docs/vol1/xhtml/p-055.xhtml create mode 100644 docs/vol1/xhtml/p-056.xhtml create mode 100644 docs/vol1/xhtml/p-057.xhtml create mode 100644 docs/vol1/xhtml/p-058.xhtml create mode 100644 docs/vol1/xhtml/p-059.xhtml create mode 100644 docs/vol1/xhtml/p-060.xhtml create mode 100644 docs/vol1/xhtml/p-061.xhtml create mode 100644 docs/vol1/xhtml/p-062.xhtml create mode 100644 docs/vol1/xhtml/p-063.xhtml create mode 100644 docs/vol1/xhtml/p-064.xhtml create mode 100644 docs/vol1/xhtml/p-065.xhtml create mode 100644 docs/vol1/xhtml/p-066.xhtml create mode 100755 docs/vol1/xhtml/p-bmatter-001.xhtml create mode 100755 docs/vol1/xhtml/p-bmatter-002.xhtml create mode 100755 docs/vol1/xhtml/p-colophon.xhtml create mode 100755 docs/vol1/xhtml/p-cover.xhtml create mode 100755 docs/vol1/xhtml/p-fmatter-001.xhtml create mode 100755 docs/vol1/xhtml/p-fmatter-002.xhtml create mode 100755 docs/vol1/xhtml/p-fmatter-003.xhtml create mode 100755 docs/vol1/xhtml/p-fmatter-004.xhtml create mode 100644 docs/vol1/xhtml/p-fmatter-005.xhtml create mode 100644 docs/vol1/xhtml/p-fmatter-006.xhtml create mode 100644 docs/vol2/image/ch31/31-1.jpg create mode 100644 docs/vol2/image/ch31/31-2.jpg create mode 100644 docs/vol2/image/ch32/32-1.jpg create mode 100644 docs/vol2/image/ch32/32-2.jpg create mode 100644 docs/vol2/image/ch36/36-1.jpg create mode 100644 docs/vol2/image/ch38/38-1.jpg create mode 100644 docs/vol2/image/ch41/41-1.jpg create mode 100644 docs/vol2/image/ch41/41-3.jpg create mode 100644 docs/vol2/image/ch41/41-4.jpg create mode 100644 docs/vol2/image/ch43/43-1.jpg create mode 100644 docs/vol2/image/ch43/43-2.jpg create mode 100644 docs/vol2/image/ch43/43-3.jpg create mode 100644 docs/vol2/image/ch43/43-4.jpg create mode 100644 docs/vol2/image/ch45/45-1.jpg create mode 100644 docs/vol2/image/ch48/48-1.jpg create mode 100644 docs/vol2/image/ch48/48-2.jpg create mode 100644 docs/vol2/image/cover.jpg create mode 100644 docs/vol2/image/tobira.jpg create mode 100755 docs/vol2/index.xhtml create mode 100644 docs/vol2/xhtml/p-001.xhtml create mode 100644 docs/vol2/xhtml/p-002.xhtml create mode 100644 docs/vol2/xhtml/p-003.xhtml create mode 100644 docs/vol2/xhtml/p-004.xhtml create mode 100644 docs/vol2/xhtml/p-005.xhtml create mode 100644 docs/vol2/xhtml/p-006.xhtml create mode 100644 docs/vol2/xhtml/p-007.xhtml create mode 100644 docs/vol2/xhtml/p-008.xhtml create mode 100644 docs/vol2/xhtml/p-009.xhtml create mode 100644 docs/vol2/xhtml/p-010.xhtml create mode 100644 docs/vol2/xhtml/p-011.xhtml create mode 100644 docs/vol2/xhtml/p-012.xhtml create mode 100644 docs/vol2/xhtml/p-013.xhtml create mode 100644 docs/vol2/xhtml/p-014.xhtml create mode 100644 docs/vol2/xhtml/p-015.xhtml create mode 100644 docs/vol2/xhtml/p-016.xhtml create mode 100644 docs/vol2/xhtml/p-017.xhtml create mode 100644 docs/vol2/xhtml/p-018.xhtml create mode 100644 docs/vol2/xhtml/p-019.xhtml create mode 100644 docs/vol2/xhtml/p-020.xhtml create mode 100644 docs/vol2/xhtml/p-021.xhtml create mode 100644 docs/vol2/xhtml/p-022.xhtml create mode 100644 docs/vol2/xhtml/p-023.xhtml create mode 100644 docs/vol2/xhtml/p-024.xhtml create mode 100644 docs/vol2/xhtml/p-025.xhtml create mode 100644 docs/vol2/xhtml/p-026.xhtml create mode 100644 docs/vol2/xhtml/p-027.xhtml create mode 100644 docs/vol2/xhtml/p-028.xhtml create mode 100644 docs/vol2/xhtml/p-029.xhtml create mode 100644 docs/vol2/xhtml/p-030.xhtml create mode 100644 docs/vol2/xhtml/p-031.xhtml create mode 100644 docs/vol2/xhtml/p-032.xhtml create mode 100644 docs/vol2/xhtml/p-033.xhtml create mode 100644 docs/vol2/xhtml/p-034.xhtml create mode 100644 docs/vol2/xhtml/p-035.xhtml create mode 100644 docs/vol2/xhtml/p-036.xhtml create mode 100644 docs/vol2/xhtml/p-037.xhtml create mode 100644 docs/vol2/xhtml/p-038.xhtml create mode 100644 docs/vol2/xhtml/p-039.xhtml create mode 100644 docs/vol2/xhtml/p-040.xhtml create mode 100644 docs/vol2/xhtml/p-041.xhtml create mode 100644 docs/vol2/xhtml/p-042.xhtml create mode 100644 docs/vol2/xhtml/p-043.xhtml create mode 100644 docs/vol2/xhtml/p-044.xhtml create mode 100644 docs/vol2/xhtml/p-045.xhtml create mode 100644 docs/vol2/xhtml/p-046.xhtml create mode 100644 docs/vol2/xhtml/p-047.xhtml create mode 100644 docs/vol2/xhtml/p-048.xhtml create mode 100644 docs/vol2/xhtml/p-049.xhtml create mode 100644 docs/vol2/xhtml/p-050.xhtml create mode 100644 docs/vol2/xhtml/p-051.xhtml create mode 100644 docs/vol2/xhtml/p-052.xhtml create mode 100644 docs/vol2/xhtml/p-053.xhtml create mode 100644 docs/vol2/xhtml/p-054.xhtml create mode 100644 docs/vol2/xhtml/p-055.xhtml create mode 100644 docs/vol2/xhtml/p-056.xhtml create mode 100644 docs/vol2/xhtml/p-057.xhtml create mode 100644 docs/vol2/xhtml/p-058.xhtml create mode 100755 docs/vol2/xhtml/p-bmatter-001.xhtml create mode 100644 docs/vol2/xhtml/p-bmatter-002.xhtml create mode 100755 docs/vol2/xhtml/p-colophon.xhtml create mode 100755 docs/vol2/xhtml/p-cover.xhtml create mode 100755 docs/vol2/xhtml/p-fmatter-001.xhtml create mode 100755 docs/vol2/xhtml/p-fmatter-002.xhtml create mode 100755 docs/vol2/xhtml/p-fmatter-003.xhtml create mode 100755 docs/vol2/xhtml/p-fmatter-004.xhtml create mode 100644 docs/vol2/xhtml/p-fmatter-005.xhtml create mode 100644 docs/vol2/xhtml/p-fmatter-006.xhtml create mode 100755 docs/vol2/xhtml/p-toc-001.xhtml diff --git a/docs/image/vol1-cover.jpg b/docs/image/vol1-cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b21509b9ae3baac9236d3bedf7b687992709dae GIT binary patch literal 322173 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

4~)`i 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¨5zsbqS++m3$^EWj|pGF)W1P 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 literal 0 HcmV?d00001 diff --git a/docs/image/vol2-cover.jpg b/docs/image/vol2-cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e357ddd14e95c04be195fbc44d270eaefe178ff9 GIT binary patch literal 330581 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

*Eo_-)hd6OBSd3)p2Q#_GcL0MvJS}XoK1-9PY?= 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 literal 0 HcmV?d00001 diff --git a/index.xhtml b/docs/index.xhtml similarity index 100% rename from index.xhtml rename to docs/index.xhtml diff --git a/docs/style/book-style.css b/docs/style/book-style.css new file mode 100755 index 0000000..c5ee51b --- /dev/null +++ b/docs/style/book-style.css @@ -0,0 +1,315 @@ +@charset "UTF-8"; +@import "style-reset.css"; +@import "style-standard.css"; +@import "style-advance.css"; +@import "style-karc.css"; +@import "style-kadokawa.css"; + +/* ------------------------------------------------------------- +Windows でチェックするときは以下の指定を利用 +※チェックが済んだら必ず削除かコメントアウトすること +@import "style-check.css"; +---------------------------------------------------------------- */ + + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +外部 CSS の一括読み込み と 作品別カスタマイズ指定 + +【CSSファイルバージョン】 +ver.1.1.1 + +【当ファイル更新時の電書協EPUB 3 制作ガイドバージョン】 +ver.1.1.3 + +【細目】 +・外部 CSS の import +・作品別カスタマイズ領域 + +【更新履歴】 +2014/11/01 ver.1.1.1 +・「特殊リンク指定」を追加 +・「注釈リンクの下線と色」を変更 + +2012/12/07 ver.1.1.0 +・ファイル更新時の電書協EPUB 3 制作ガイドバージョン表記を追加 + +2012/08/21 ver.1.0b1 +・公開版 +---------------------------------------------------------------- */ + + +/* ------------------------------------------------------------- + * 作品別カスタマイズ領域 + * ------------------------------------------------------------- */ +@import "style-ascii-dwango.css"; + + +/* 見出しのデフォルト書体指定 +---------------------------------------------------------------- */ +/* 横組み用 */ +.hltr h1, +.hltr h2, +.hltr h3, +.hltr h4, +.hltr h5, +.hltr h6 { + /* font-family: serif-ja, serif; */ + font-family: sans-serif-ja, sans-serif; +} +/* 縦組み用 */ +.vrtl h1, +.vrtl h2, +.vrtl h3, +.vrtl h4, +.vrtl h5, +.vrtl h6 { + font-family: serif-ja-v, serif-ja, serif; +} + + +/* リンク指定 +---------------------------------------------------------------- */ +/* 基本設定(上:横組み 下:縦組み) */ +.hltr a { +} +.vrtl a { +} +/* 未訪問リンク */ +a:link { +} +/* 訪問済みリンク */ +a:visited { +} +/* マウスオーバー時 */ +a:hover { +} +/* フォーカス時 */ +a:focus { +} +/* アクティブ時 */ +a:active { +} + + +/* 特殊リンク指定 +---------------------------------------------------------------- */ +/* 基本設定(上:横組み 下:縦組み) */ + +/* .link-01 +-------------------- */ +.hltr a.link-01 { +} +.vrtl a.link-01 { +} +/* 未訪問リンク */ +a.link-01:link { +} +/* 訪問済みリンク */ +a.link-01:visited { +} +/* マウスオーバー時 */ +a.link-01:hover { +} +/* フォーカス時 */ +a.link-01:focus { +} +/* アクティブ時 */ +a.link-01:active { +} + +/* .link-02 +-------------------- */ +.hltr a.link-02 { +} +.vrtl a.link-02 { +} +/* 未訪問リンク */ +a.link-02:link { +} +/* 訪問済みリンク */ +a.link-02:visited { +} +/* マウスオーバー時 */ +a.link-02:hover { +} +/* フォーカス時 */ +a.link-02:focus { +} +/* アクティブ時 */ +a.link-02:active { +} + +/* .link-03 +-------------------- */ +.hltr a.link-03 { +} +.vrtl a.link-03 { +} +/* 未訪問リンク */ +a.link-03:link { +} +/* 訪問済みリンク */ +a.link-03:visited { +} +/* マウスオーバー時 */ +a.link-03:hover { +} +/* フォーカス時 */ +a.link-03:focus { +} +/* アクティブ時 */ +a.link-03:active { +} + + +/* 注釈リンクの下線と色(注釈参照側) +---------------------------------------------------------------- */ +/* 基本設定(上:横組み 下:縦組み) */ +.hltr a.noteref { +} +.vrtl a.noteref { +} +/* 未訪問リンク */ +a.noteref:link { +} +/* 訪問済みリンク */ +a.noteref:visited { +} +/* マウスオーバー時 */ +a.noteref:hover { +} +/* フォーカス時 */ +a.noteref:focus { +} +/* アクティブ時 */ +a.noteref:active { +} + + +/* 注釈リンクの下線と色(注釈内容側) +---------------------------------------------------------------- */ +/* 基本設定(上:横組み 下:縦組み) */ +.hltr a.note { +} +.vrtl a.note { +} +/* 未訪問リンク */ +a.note:link { +} +/* 訪問済みリンク */ +a.note:visited { +} +/* マウスオーバー時 */ +a.note:hover { +} +/* フォーカス時 */ +a.note:focus { +} +/* アクティブ時 */ +a.note:active { +} + + +/* 見出しの指定(上:横組み 下:縦組み) +---------------------------------------------------------------- */ +/* 扉見出し */ +.hltr .tobira-midashi { +} +.vrtl .tobira-midashi { +} +/* 大見出し */ +.hltr .oo-midashi { +} +.vrtl .oo-midashi { +} +/* 中見出し */ +.hltr .naka-midashi { +} +.vrtl .naka-midashi { +} +/* 小見出し */ +.hltr .ko-midashi { +} +.vrtl .ko-midashi { +} + + +/* カバーページ +---------------------------------------------------------------- +描画領域の余白をゼロに +デフォルトで左右中央揃えに +---------------------------------------------------------------- */ +body.p-cover { + margin: 0; + padding: 0; + text-align: center; +} +body.p-cover .main { +} + + +/* 画像のみのページ +---------------------------------------------------------------- +描画領域の余白をゼロに +デフォルトで左右中央揃えに +---------------------------------------------------------------- */ +body.p-image { + margin: 0; + padding: 0; + text-align: center; +} +body.p-image .main { +} + + +/* テキスト中心のページ +---------------------------------------------------------------- */ +body.p-text { +} +body.p-text .main { +} + + +/* 本扉ページ +---------------------------------------------------------------- */ +body.p-titlepage { +} +body.p-titlepage .main { +} + + +/* 奥付ページ +---------------------------------------------------------------- */ +body.p-colophon { +} +body.p-colophon .main { +} + + +/* 目次ページ +---------------------------------------------------------------- */ +body.p-toc { +} +body.p-toc .main { +} + + +/* 電子版用の注意書きページ +---------------------------------------------------------------- */ +body.p-caution { +} +body.p-caution .main { +} + + +/* 広告ページ +---------------------------------------------------------------- */ +body.p-ad { +} +body.p-ad .main { +} + + diff --git a/docs/style/fixed-layout-jp.css b/docs/style/fixed-layout-jp.css new file mode 100755 index 0000000..ad6ad57 --- /dev/null +++ b/docs/style/fixed-layout-jp.css @@ -0,0 +1,12 @@ +@charset "UTF-8"; + +html, +body { + margin: 0; + padding: 0; + font-size: 0; +} +svg { + margin: 0; + padding: 0; +} diff --git a/docs/style/style-advance.css b/docs/style/style-advance.css new file mode 100755 index 0000000..9844912 --- /dev/null +++ b/docs/style/style-advance.css @@ -0,0 +1,1566 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +全作品共通の基本スタイル(論理方向指定・組み方向の入れ子対策用) + +【CSSファイルバージョン】 +ver.1.3.1 + +【当ファイル更新時の電書協EPUB 3 制作ガイドバージョン】 +ver.1.1.3 + +【細目】 +・【組み方向の入れ子対策】リンク指定 +・【組み方向の入れ子対策】外字画像 +・【組み方向の入れ子対策】画像のページフィット指定 +・【組み方向の入れ子対策】小書き文字 +・【組み方向の入れ子対策】区切り線 +・【組み方向の入れ子対策】傍線 +・【論理方向指定】罫線 +・【組み方向の入れ子対策】突き出しインデント(ぶら下がりインデント) +・【組み方向の入れ子対策】字下げ・字上げ指定 +・【論理方向指定】外側の余白(マージン)指定 +・【論理方向指定】内側の余白(パディング)指定 +・【論理方向指定】行長方向のサイズ +・【論理方向指定】行長方向の最大サイズ +・【論理方向指定】行幅方向のサイズ +・【論理方向指定】行幅方向の最大サイズ + +【更新履歴】 +2014/11/01 ver.1.3.1 +・「線位置【二重線】」を修正 + +2012/12/07 ver.1.3.0 +・ファイル更新時の電書協EPUB 3 制作ガイドバージョン表記を追加 + +2012/10/29 ver.1.2b1 +・「傍線」を修正 + +2012/10/03 ver.1.1b1 +・「傍線」を修正 + +2012/08/21 ver.1.0b1 +・公開版 +---------------------------------------------------------------- */ + + +/* 【組み方向の入れ子対策】リンク指定 +---------------------------------------------------------------- */ +/* 横組み:下線 縦組み:右線 */ +.vrtl .hltr a { + text-decoration: underline; +} +.hltr .vrtl a { + text-decoration: overline; +} + + +/* 【組み方向の入れ子対策】外字画像 +---------------------------------------------------------------- */ +/* 外字画像のベースライン */ +.vrtl .hltr img.gaiji, +.vrtl .hltr img.gaiji-line, +.vrtl .hltr img.gaiji-wide { + vertical-align: text-bottom; +} +.hltr .vrtl img.gaiji, +.hltr .vrtl img.gaiji-line, +.hltr .vrtl img.gaiji-wide { + vertical-align: baseline; +} + + +/* 【組み方向の入れ子対策】画像のページフィット指定 +---------------------------------------------------------------- */ +/* 画像のベースライン */ +.vrtl .hltr .fit { + vertical-align: top; +} +.hltr .vrtl .fit { + vertical-align: baseline; +} + + +/* 【組み方向の入れ子対策】小書き文字 +---------------------------------------------------------------- */ +/* 【横組み】左下 */ +.vrtl .hltr .kogaki { + padding: 0 0.15em 0 0.1em; + vertical-align: baseline; +} +/* 【縦組み】右上 */ +.hltr .vrtl .kogaki { + padding: 0.1em 0 0.15em 0; + vertical-align: super; +} + + +/* 【組み方向の入れ子対策】区切り線 +---------------------------------------------------------------- */ +/* 【横組み】水平線 */ +.vrtl .hltr hr { + margin: 0.5em 0; + border-style: solid none none none; +} +/* 【縦組み】垂直線 */ +.hltr .vrtl hr { + margin: 0 0.5em; + border-style: none solid none none; +} + + +/* 【組み方向の入れ子対策】傍線 +---------------------------------------------------------------- */ +/* 【横組み】下線 【縦組み】右線 */ +.vrtl .hltr .em-line { + text-decoration: underline; +} +.hltr .vrtl .em-line { + text-decoration: overline; +} +/* 【横組み】上線 【縦組み】左線 */ +.vrtl .hltr .em-line-outside { + text-decoration: overline; +} +.hltr .vrtl .em-line-outside { + text-decoration: underline; +} + + +/* 【論理方向指定】罫線 +---------------------------------------------------------------- */ +/* 線種【実線】 */ +.k-solid-start, +.k-solid-before, +.k-solid-end, +.k-solid-after, +.k-solid-startend, +.k-solid-beforeafter { + border-width: 1px; + border-color: #000000; +} +/* 線位置【実線】 */ +/* 横組み用 */ +.hltr .k-solid-start, .vrtl .hltr .k-solid-start { border-style: none none none solid; } +.hltr .k-solid-before, .vrtl .hltr .k-solid-before { border-style: solid none none none; } +.hltr .k-solid-end, .vrtl .hltr .k-solid-end { border-style: none solid none none; } +.hltr .k-solid-after, .vrtl .hltr .k-solid-after { border-style: none none solid none; } +.hltr .k-solid-startend, .vrtl .hltr .k-solid-startend { border-style: none solid none solid; } +.hltr .k-solid-beforeafter, .vrtl .hltr .k-solid-beforeafter { border-style: solid none solid none; } +/* 縦組み用 */ +.vrtl .k-solid-start, .hltr .vrtl .k-solid-start { border-style: solid none none none; } +.vrtl .k-solid-before, .hltr .vrtl .k-solid-before { border-style: none solid none none; } +.vrtl .k-solid-end, .hltr .vrtl .k-solid-end { border-style: none none solid none; } +.vrtl .k-solid-after, .hltr .vrtl .k-solid-after { border-style: none none none solid; } +.vrtl .k-solid-startend, .hltr .vrtl .k-solid-startend { border-style: solid none solid none; } +.vrtl .k-solid-beforeafter, .hltr .vrtl .k-solid-beforeafter { border-style: none solid none solid; } + +/* 線種【点線】 */ +.k-dotted-start, +.k-dotted-before, +.k-dotted-end, +.k-dotted-after, +.k-dotted-startend, +.k-dotted-beforeafter { + border-width: 2px; + border-color: #000000; +} +/* 線位置【点線】 */ +/* 横組み用 */ +.hltr .k-dotted-start, .vrtl .hltr .k-dotted-start { border-style: none none none dotted; } +.hltr .k-dotted-before, .vrtl .hltr .k-dotted-before { border-style: dotted none none none; } +.hltr .k-dotted-end, .vrtl .hltr .k-dotted-end { border-style: none dotted none none; } +.hltr .k-dotted-after, .vrtl .hltr .k-dotted-after { border-style: none none dotted none; } +.hltr .k-dotted-startend, .vrtl .hltr .k-dotted-startend { border-style: none dotted none dotted; } +.hltr .k-dotted-beforeafter, .vrtl .hltr .k-dotted-beforeafter { border-style: dotted none dotted none; } +/* 縦組み用 */ +.vrtl .k-dotted-start, .hltr .vrtl .k-dotted-start { border-style: dotted none none none; } +.vrtl .k-dotted-before, .hltr .vrtl .k-dotted-before { border-style: none dotted none none; } +.vrtl .k-dotted-end, .hltr .vrtl .k-dotted-end { border-style: none none dotted none; } +.vrtl .k-dotted-after, .hltr .vrtl .k-dotted-after { border-style: none none none dotted; } +.vrtl .k-dotted-startend, .hltr .vrtl .k-dotted-startend { border-style: dotted none dotted none; } +.vrtl .k-dotted-beforeafter, .hltr .vrtl .k-dotted-beforeafter { border-style: none dotted none dotted; } + +/* 線種【二重線】 */ +.k-double-start, +.k-double-before, +.k-double-end, +.k-double-after, +.k-double-startend, +.k-double-beforeafter { + border-width: 4px; + border-color: #000000; +} +/* 線位置【二重線】*/ +/* 横組み用 */ +.hltr .k-double-start, .vrtl .hltr .k-double-start { border-style: none none none double; } +.hltr .k-double-before, .vrtl .hltr .k-double-before { border-style: double none none none; } +.hltr .k-double-end, .vrtl .hltr .k-double-end { border-style: none double none none; } +.hltr .k-double-after, .vrtl .hltr .k-double-after { border-style: none none double none; } +.hltr .k-double-startend, .vrtl .hltr .k-double-startend { border-style: none double none double; } +.hltr .k-double-beforeafter, .vrtl .hltr .k-double-beforeafter { border-style: double none double none; } +/* 縦組み用 */ +.vrtl .k-double-start, .hltr .vrtl .k-double-start { border-style: double none none none; } +.vrtl .k-double-before, .hltr .vrtl .k-double-before { border-style: none double none none; } +.vrtl .k-double-end, .hltr .vrtl .k-double-end { border-style: none none double none; } +.vrtl .k-double-after, .hltr .vrtl .k-double-after { border-style: none none none double; } +.vrtl .k-double-startend, .hltr .vrtl .k-double-startend { border-style: double none double none; } +.vrtl .k-double-beforeafter, .hltr .vrtl .k-double-beforeafter { border-style: none double none double; } + +/* 線種【破線】 */ +.k-dashed-start, +.k-dashed-before, +.k-dashed-end, +.k-dashed-after, +.k-dashed-startend, +.k-dashed-beforeafter { + border-width: 1px; + border-color: #000000; +} +/* 線位置【破線】 */ +/* 横組み用 */ +.hltr .k-dashed-start, .vrtl .hltr .k-dashed-start { border-style: none none none dashed; } +.hltr .k-dashed-before, .vrtl .hltr .k-dashed-before { border-style: dashed none none none; } +.hltr .k-dashed-end, .vrtl .hltr .k-dashed-end { border-style: none dashed none none; } +.hltr .k-dashed-after, .vrtl .hltr .k-dashed-after { border-style: none none dashed none; } +.hltr .k-dashed-startend, .vrtl .hltr .k-dashed-startend { border-style: none dashed none dashed; } +.hltr .k-dashed-beforeafter, .vrtl .hltr .k-dashed-beforeafter { border-style: dashed none dashed none; } +/* 縦組み用 */ +.vrtl .k-dashed-start, .hltr .vrtl .k-dashed-start { border-style: dashed none none none; } +.vrtl .k-dashed-before, .hltr .vrtl .k-dashed-before { border-style: none dashed none none; } +.vrtl .k-dashed-end, .hltr .vrtl .k-dashed-end { border-style: none none dashed none; } +.vrtl .k-dashed-after, .hltr .vrtl .k-dashed-after { border-style: none none none dashed; } +.vrtl .k-dashed-startend, .hltr .vrtl .k-dashed-startend { border-style: dashed none dashed none; } +.vrtl .k-dashed-beforeafter, .hltr .vrtl .k-dashed-beforeafter { border-style: none dashed none dashed; } + +/* 線幅 */ +.k-0px { border-width: 0; } +.k-1px { border-width: 1px; } +.k-2px { border-width: 2px; } +.k-3px { border-width: 3px; } +.k-4px { border-width: 4px; } +.k-5px { border-width: 5px; } +.k-6px { border-width: 6px; } +.k-7px { border-width: 7px; } +.k-8px { border-width: 8px; } +.k-thin { border-width: thin; } +.k-medium { border-width: medium; } +.k-thick { border-width: thick; } + +/* 1C用の線色 */ +.k-black { border-color: #000000; } +.k-dimgray { border-color: #696969; } +.k-gray { border-color: #808080; } +.k-darkgray { border-color: #a9a9a9; } +.k-silver { border-color: #c0c0c0; } +.k-gainsboro { border-color: #dcdcdc; } +.k-white { border-color: #ffffff; } + +/* 基本色 */ +.k-red { border-color: #ff0000; } +.k-blue { border-color: #0000ff; } +.k-cyan { border-color: #00ffff; } +.k-magenta { border-color: #ff00ff; } +.k-orangered { border-color: #ff4500; } + + +/* 【組み方向の入れ子対策】突き出しインデント(ぶら下がりインデント) +---------------------------------------------------------------- */ +/* .hltr .vrtl [class|="h-indent"] { padding-left: 0; } */ +.hltr .vrtl .h-indent-1em, .hltr .vrtl .h-indent-2em, .hltr .vrtl .h-indent-3em, +.hltr .vrtl .h-indent-4em, .hltr .vrtl .h-indent-5em, .hltr .vrtl .h-indent-6em, +.hltr .vrtl .h-indent-7em, .hltr .vrtl .h-indent-8em, .hltr .vrtl .h-indent-9em, +.hltr .vrtl .h-indent-10em { + padding-left: 0; +} + +/* .vrtl .hltr [class|="h-indent"] { padding-top: 0; } */ +.vrtl .hltr .h-indent-1em, .vrtl .hltr .h-indent-2em, .vrtl .hltr .h-indent-3em, +.vrtl .hltr .h-indent-4em, .vrtl .hltr .h-indent-5em, .vrtl .hltr .h-indent-6em, +.vrtl .hltr .h-indent-7em, .vrtl .hltr .h-indent-8em, .vrtl .hltr .h-indent-9em, +.vrtl .hltr .h-indent-10em { + padding-top: 0; +} + + +/* 【組み方向の入れ子対策】字下げ・字上げ指定 +---------------------------------------------------------------- */ +/* 字下げ */ +/* .hltr .vrtl [class|="start"] { margin-left: 0; } */ +.hltr .vrtl .start-0em25, .hltr .vrtl .start-0em50, .hltr .vrtl .start-0em75, +.hltr .vrtl .start-1em, .hltr .vrtl .start-1em25, .hltr .vrtl .start-1em50, +.hltr .vrtl .start-1em75, .hltr .vrtl .start-2em, .hltr .vrtl .start-2em50, +.hltr .vrtl .start-3em, .hltr .vrtl .start-4em, .hltr .vrtl .start-5em, +.hltr .vrtl .start-6em, .hltr .vrtl .start-7em, .hltr .vrtl .start-8em, +.hltr .vrtl .start-9em, .hltr .vrtl .start-10em { + margin-left: 0; +} +/* .vrtl .hltr [class|="start"] { margin-top: 0; } */ +.vrtl .hltr .start-0em25, .vrtl .hltr .start-0em50, .vrtl .hltr .start-0em75, +.vrtl .hltr .start-1em, .vrtl .hltr .start-1em25, .vrtl .hltr .start-1em50, +.vrtl .hltr .start-1em75, .vrtl .hltr .start-2em, .vrtl .hltr .start-2em50, +.vrtl .hltr .start-3em, .vrtl .hltr .start-4em, .vrtl .hltr .start-5em, +.vrtl .hltr .start-6em, .vrtl .hltr .start-7em, .vrtl .hltr .start-8em, +.vrtl .hltr .start-9em, .vrtl .hltr .start-10em { + margin-top: 0; +} + +/* 字上げ */ +/* .hltr .vrtl [class|="end"] { margin-right: 0; } */ +.hltr .vrtl .end-0em25, .hltr .vrtl .end-0em50, .hltr .vrtl .end-0em75, +.hltr .vrtl .end-1em, .hltr .vrtl .end-1em25, .hltr .vrtl .end-1em50, +.hltr .vrtl .end-1em75, .hltr .vrtl .end-2em, .hltr .vrtl .end-2em50, +.hltr .vrtl .end-3em, .hltr .vrtl .end-4em, .hltr .vrtl .end-5em, +.hltr .vrtl .end-6em, .hltr .vrtl .end-7em, .hltr .vrtl .end-8em, +.hltr .vrtl .end-9em, .hltr .vrtl .end-10em { + margin-right: 0; +} +/* .vrtl .hltr [class|="end"] { margin-bottom: 0; } */ +.vrtl .hltr .end-0em25, .vrtl .hltr .end-0em50, .vrtl .hltr .end-0em75, +.vrtl .hltr .end-1em, .vrtl .hltr .end-1em25, .vrtl .hltr .end-1em50, +.vrtl .hltr .end-1em75, .vrtl .hltr .end-2em, .vrtl .hltr .end-2em50, +.vrtl .hltr .end-3em, .vrtl .hltr .end-4em, .vrtl .hltr .end-5em, +.vrtl .hltr .end-6em, .vrtl .hltr .end-7em, .vrtl .hltr .end-8em, +.vrtl .hltr .end-9em, .vrtl .hltr .end-10em { + margin-bottom: 0; +} + + +/* 【論理方向指定】外側の余白(マージン)指定 +---------------------------------------------------------------- */ +/* 行頭マージン:横組み用 */ +.hltr .m-start-auto { margin-left: auto; } +.hltr .m-start-0, +.hltr .m-start-0em, +.hltr .m-start-000per { margin-left: 0; } + +/* %指定 */ +.hltr .m-start-005per { margin-left: 5%; } +.hltr .m-start-010per { margin-left: 10%; } +.hltr .m-start-015per { margin-left: 15%; } +.hltr .m-start-020per { margin-left: 20%; } +.hltr .m-start-025per { margin-left: 25%; } +.hltr .m-start-030per { margin-left: 30%; } +.hltr .m-start-033per { margin-left: 33%; } +.hltr .m-start-040per { margin-left: 40%; } +.hltr .m-start-050per { margin-left: 50%; } +.hltr .m-start-060per { margin-left: 60%; } +.hltr .m-start-067per { margin-left: 67%; } +.hltr .m-start-070per { margin-left: 70%; } +.hltr .m-start-075per { margin-left: 75%; } +.hltr .m-start-080per { margin-left: 80%; } +.hltr .m-start-090per { margin-left: 90%; } + +/* 文字数指定 */ +.hltr .m-start-0em25 { margin-left: 0.25em; } +.hltr .m-start-0em50 { margin-left: 0.50em; } +.hltr .m-start-0em75 { margin-left: 0.75em; } +.hltr .m-start-1em { margin-left: 1.00em; } +.hltr .m-start-1em25 { margin-left: 1.25em; } +.hltr .m-start-1em50 { margin-left: 1.50em; } +.hltr .m-start-1em75 { margin-left: 1.75em; } +.hltr .m-start-2em { margin-left: 2.00em; } +.hltr .m-start-2em50 { margin-left: 2.50em; } +.hltr .m-start-3em { margin-left: 3.00em; } +.hltr .m-start-4em { margin-left: 4.00em; } +.hltr .m-start-5em { margin-left: 5.00em; } +.hltr .m-start-5em25 { margin-left: 5.25em; } + +/* 行頭マージン:縦組み用 */ +.vrtl .m-start-auto { margin-top: auto; } +.vrtl .m-start-0, +.vrtl .m-start-0em, +.vrtl .m-start-000per { margin-top: 0; } + +/* %指定 */ +.vrtl .m-start-005per { margin-top: 5%; } +.vrtl .m-start-010per { margin-top: 10%; } +.vrtl .m-start-015per { margin-top: 15%; } +.vrtl .m-start-020per { margin-top: 20%; } +.vrtl .m-start-025per { margin-top: 25%; } +.vrtl .m-start-030per { margin-top: 30%; } +.vrtl .m-start-033per { margin-top: 33%; } +.vrtl .m-start-040per { margin-top: 40%; } +.vrtl .m-start-050per { margin-top: 50%; } +.vrtl .m-start-060per { margin-top: 60%; } +.vrtl .m-start-067per { margin-top: 67%; } +.vrtl .m-start-070per { margin-top: 70%; } +.vrtl .m-start-075per { margin-top: 75%; } +.vrtl .m-start-080per { margin-top: 80%; } +.vrtl .m-start-090per { margin-top: 90%; } + +/* 文字数指定 */ +.vrtl .m-start-0em25 { margin-top: 0.25em; } +.vrtl .m-start-0em50 { margin-top: 0.50em; } +.vrtl .m-start-0em75 { margin-top: 0.75em; } +.vrtl .m-start-1em { margin-top: 1.00em; } +.vrtl .m-start-1em25 { margin-top: 1.25em; } +.vrtl .m-start-1em50 { margin-top: 1.50em; } +.vrtl .m-start-1em75 { margin-top: 1.75em; } +.vrtl .m-start-2em { margin-top: 2.00em; } +.vrtl .m-start-2em50 { margin-top: 2.50em; } +.vrtl .m-start-3em { margin-top: 3.00em; } +.vrtl .m-start-4em { margin-top: 4.00em; } +.vrtl .m-start-5em { margin-top: 5.00em; } +.vrtl .m-start-5em25 { margin-top: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="m-start"] { margin-left: 0; } */ +.hltr .vrtl .m-start-auto, +.hltr .vrtl .m-start-005per, .hltr .vrtl .m-start-010per, .hltr .vrtl .m-start-015per, +.hltr .vrtl .m-start-020per, .hltr .vrtl .m-start-025per, .hltr .vrtl .m-start-030per, +.hltr .vrtl .m-start-033per, .hltr .vrtl .m-start-040per, .hltr .vrtl .m-start-050per, +.hltr .vrtl .m-start-060per, .hltr .vrtl .m-start-067per, .hltr .vrtl .m-start-070per, +.hltr .vrtl .m-start-075per, .hltr .vrtl .m-start-080per, .hltr .vrtl .m-start-090per, +.hltr .vrtl .m-start-0em25, .hltr .vrtl .m-start-0em50, .hltr .vrtl .m-start-0em75, +.hltr .vrtl .m-start-1em, .hltr .vrtl .m-start-1em25, .hltr .vrtl .m-start-1em50, +.hltr .vrtl .m-start-1em75, .hltr .vrtl .m-start-2em, .hltr .vrtl .m-start-2em50, +.hltr .vrtl .m-start-3em, .hltr .vrtl .m-start-4em, .hltr .vrtl .m-start-5em, +.hltr .vrtl .m-start-5em25 { + margin-left: 0; +} +/* .vrtl .hltr [class|="m-start"] { margin-top: 0; } */ +.vrtl .hltr .m-start-auto, +.vrtl .hltr .m-start-005per, .vrtl .hltr .m-start-010per, .vrtl .hltr .m-start-015per, +.vrtl .hltr .m-start-020per, .vrtl .hltr .m-start-025per, .vrtl .hltr .m-start-030per, +.vrtl .hltr .m-start-033per, .vrtl .hltr .m-start-040per, .vrtl .hltr .m-start-050per, +.vrtl .hltr .m-start-060per, .vrtl .hltr .m-start-067per, .vrtl .hltr .m-start-070per, +.vrtl .hltr .m-start-075per, .vrtl .hltr .m-start-080per, .vrtl .hltr .m-start-090per, +.vrtl .hltr .m-start-0em25, .vrtl .hltr .m-start-0em50, .vrtl .hltr .m-start-0em75, +.vrtl .hltr .m-start-1em, .vrtl .hltr .m-start-1em25, .vrtl .hltr .m-start-1em50, +.vrtl .hltr .m-start-1em75, .vrtl .hltr .m-start-2em, .vrtl .hltr .m-start-2em50, +.vrtl .hltr .m-start-3em, .vrtl .hltr .m-start-4em, .vrtl .hltr .m-start-5em, +.vrtl .hltr .m-start-5em25 { + margin-top: 0; +} + + +/* 行末マージン:横組み用 */ +.hltr .m-end-auto { margin-right: auto; } +.hltr .m-end-0, +.hltr .m-end-0em, +.hltr .m-end-000per { margin-right: 0; } + +/* %指定 */ +.hltr .m-end-005per { margin-right: 5%; } +.hltr .m-end-010per { margin-right: 10%; } +.hltr .m-end-015per { margin-right: 15%; } +.hltr .m-end-020per { margin-right: 20%; } +.hltr .m-end-025per { margin-right: 25%; } +.hltr .m-end-030per { margin-right: 30%; } +.hltr .m-end-033per { margin-right: 33%; } +.hltr .m-end-040per { margin-right: 40%; } +.hltr .m-end-050per { margin-right: 50%; } +.hltr .m-end-060per { margin-right: 60%; } +.hltr .m-end-067per { margin-right: 67%; } +.hltr .m-end-070per { margin-right: 70%; } +.hltr .m-end-075per { margin-right: 75%; } +.hltr .m-end-080per { margin-right: 80%; } +.hltr .m-end-090per { margin-right: 90%; } + +/* 文字数指定 */ +.hltr .m-end-0em25 { margin-right: 0.25em; } +.hltr .m-end-0em50 { margin-right: 0.50em; } +.hltr .m-end-0em75 { margin-right: 0.75em; } +.hltr .m-end-1em { margin-right: 1.00em; } +.hltr .m-end-1em25 { margin-right: 1.25em; } +.hltr .m-end-1em50 { margin-right: 1.50em; } +.hltr .m-end-1em75 { margin-right: 1.75em; } +.hltr .m-end-2em { margin-right: 2.00em; } +.hltr .m-end-2em50 { margin-right: 2.50em; } +.hltr .m-end-3em { margin-right: 3.00em; } +.hltr .m-end-4em { margin-right: 4.00em; } +.hltr .m-end-5em { margin-right: 5.00em; } +.hltr .m-end-5em25 { margin-right: 5.25em; } + +/* 行末マージン:縦組み用 */ +.vrtl .m-end-auto { margin-bottom: auto; } +.vrtl .m-end-0, +.vrtl .m-end-0em, +.vrtl .m-end-000per { margin-bottom: 0; } + +/* %指定 */ +.vrtl .m-end-005per { margin-bottom: 5%; } +.vrtl .m-end-010per { margin-bottom: 10%; } +.vrtl .m-end-015per { margin-bottom: 15%; } +.vrtl .m-end-020per { margin-bottom: 20%; } +.vrtl .m-end-025per { margin-bottom: 25%; } +.vrtl .m-end-030per { margin-bottom: 30%; } +.vrtl .m-end-033per { margin-bottom: 33%; } +.vrtl .m-end-040per { margin-bottom: 40%; } +.vrtl .m-end-050per { margin-bottom: 50%; } +.vrtl .m-end-060per { margin-bottom: 60%; } +.vrtl .m-end-067per { margin-bottom: 67%; } +.vrtl .m-end-070per { margin-bottom: 70%; } +.vrtl .m-end-075per { margin-bottom: 75%; } +.vrtl .m-end-080per { margin-bottom: 80%; } +.vrtl .m-end-090per { margin-bottom: 90%; } + +/* 文字数指定 */ +.vrtl .m-end-0em25 { margin-bottom: 0.25em; } +.vrtl .m-end-0em50 { margin-bottom: 0.50em; } +.vrtl .m-end-0em75 { margin-bottom: 0.75em; } +.vrtl .m-end-1em { margin-bottom: 1.00em; } +.vrtl .m-end-1em25 { margin-bottom: 1.25em; } +.vrtl .m-end-1em50 { margin-bottom: 1.50em; } +.vrtl .m-end-1em75 { margin-bottom: 1.75em; } +.vrtl .m-end-2em { margin-bottom: 2.00em; } +.vrtl .m-end-2em50 { margin-bottom: 2.50em; } +.vrtl .m-end-3em { margin-bottom: 3.00em; } +.vrtl .m-end-4em { margin-bottom: 4.00em; } +.vrtl .m-end-5em { margin-bottom: 5.00em; } +.vrtl .m-end-5em25 { margin-bottom: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="m-end"] { margin-right: 0; } */ +.hltr .vrtl .m-end-auto, +.hltr .vrtl .m-end-005per, .hltr .vrtl .m-end-010per, .hltr .vrtl .m-end-015per, +.hltr .vrtl .m-end-020per, .hltr .vrtl .m-end-025per, .hltr .vrtl .m-end-030per, +.hltr .vrtl .m-end-033per, .hltr .vrtl .m-end-040per, .hltr .vrtl .m-end-050per, +.hltr .vrtl .m-end-060per, .hltr .vrtl .m-end-067per, .hltr .vrtl .m-end-070per, +.hltr .vrtl .m-end-075per, .hltr .vrtl .m-end-080per, .hltr .vrtl .m-end-090per, +.hltr .vrtl .m-end-0em25, .hltr .vrtl .m-end-0em50, .hltr .vrtl .m-end-0em75, +.hltr .vrtl .m-end-1em, .hltr .vrtl .m-end-1em25, .hltr .vrtl .m-end-1em50, +.hltr .vrtl .m-end-1em75, .hltr .vrtl .m-end-2em, .hltr .vrtl .m-end-2em50, +.hltr .vrtl .m-end-3em, .hltr .vrtl .m-end-4em, .hltr .vrtl .m-end-5em, +.hltr .vrtl .m-end-5em25 { + margin-right: 0; +} +/* .vrtl .hltr [class|="m-end"] { margin-bottom: 0; } */ +.vrtl .hltr .m-end-auto, +.vrtl .hltr .m-end-005per, .vrtl .hltr .m-end-010per, .vrtl .hltr .m-end-015per, +.vrtl .hltr .m-end-020per, .vrtl .hltr .m-end-025per, .vrtl .hltr .m-end-030per, +.vrtl .hltr .m-end-033per, .vrtl .hltr .m-end-040per, .vrtl .hltr .m-end-050per, +.vrtl .hltr .m-end-060per, .vrtl .hltr .m-end-067per, .vrtl .hltr .m-end-070per, +.vrtl .hltr .m-end-075per, .vrtl .hltr .m-end-080per, .vrtl .hltr .m-end-090per, +.vrtl .hltr .m-end-0em25, .vrtl .hltr .m-end-0em50, .vrtl .hltr .m-end-0em75, +.vrtl .hltr .m-end-1em, .vrtl .hltr .m-end-1em25, .vrtl .hltr .m-end-1em50, +.vrtl .hltr .m-end-1em75, .vrtl .hltr .m-end-2em, .vrtl .hltr .m-end-2em50, +.vrtl .hltr .m-end-3em, .vrtl .hltr .m-end-4em, .vrtl .hltr .m-end-5em, +.vrtl .hltr .m-end-5em25 { + margin-bottom: 0; +} + + +/* 行前方マージン:横組み用 */ +.hltr .m-before-auto { margin-top: auto; } +.hltr .m-before-0, +.hltr .m-before-0em, +.hltr .m-before-000per { margin-top: 0; } + +/* %指定 */ +.hltr .m-before-005per { margin-top: 5%; } +.hltr .m-before-010per { margin-top: 10%; } +.hltr .m-before-015per { margin-top: 15%; } +.hltr .m-before-020per { margin-top: 20%; } +.hltr .m-before-025per { margin-top: 25%; } +.hltr .m-before-030per { margin-top: 30%; } +.hltr .m-before-033per { margin-top: 33%; } +.hltr .m-before-040per { margin-top: 40%; } +.hltr .m-before-050per { margin-top: 50%; } +.hltr .m-before-060per { margin-top: 60%; } +.hltr .m-before-067per { margin-top: 67%; } +.hltr .m-before-070per { margin-top: 70%; } +.hltr .m-before-075per { margin-top: 75%; } +.hltr .m-before-080per { margin-top: 80%; } +.hltr .m-before-090per { margin-top: 90%; } + +/* 文字数指定 */ +.hltr .m-before-0em25 { margin-top: 0.25em; } +.hltr .m-before-0em50 { margin-top: 0.50em; } +.hltr .m-before-0em75 { margin-top: 0.75em; } +.hltr .m-before-1em { margin-top: 1.00em; } +.hltr .m-before-1em25 { margin-top: 1.25em; } +.hltr .m-before-1em50 { margin-top: 1.50em; } +.hltr .m-before-1em75 { margin-top: 1.75em; } +.hltr .m-before-2em { margin-top: 2.00em; } +.hltr .m-before-2em50 { margin-top: 2.50em; } +.hltr .m-before-3em { margin-top: 3.00em; } +.hltr .m-before-4em { margin-top: 4.00em; } +.hltr .m-before-5em { margin-top: 5.00em; } +.hltr .m-before-5em25 { margin-top: 5.25em; } + +/* 行前方マージン:縦組み用 */ +.vrtl .m-before-auto { margin-right: auto; } +.vrtl .m-before-0, +.vrtl .m-before-0em, +.vrtl .m-before-000per { margin-right: 0; } + +/* %指定 */ +.vrtl .m-before-005per { margin-right: 5%; } +.vrtl .m-before-010per { margin-right: 10%; } +.vrtl .m-before-015per { margin-right: 15%; } +.vrtl .m-before-020per { margin-right: 20%; } +.vrtl .m-before-025per { margin-right: 25%; } +.vrtl .m-before-030per { margin-right: 30%; } +.vrtl .m-before-033per { margin-right: 33%; } +.vrtl .m-before-040per { margin-right: 40%; } +.vrtl .m-before-050per { margin-right: 50%; } +.vrtl .m-before-060per { margin-right: 60%; } +.vrtl .m-before-067per { margin-right: 67%; } +.vrtl .m-before-070per { margin-right: 70%; } +.vrtl .m-before-075per { margin-right: 75%; } +.vrtl .m-before-080per { margin-right: 80%; } +.vrtl .m-before-090per { margin-right: 90%; } + +/* 文字数指定 */ +.vrtl .m-before-0em25 { margin-right: 0.25em; } +.vrtl .m-before-0em50 { margin-right: 0.50em; } +.vrtl .m-before-0em75 { margin-right: 0.75em; } +.vrtl .m-before-1em { margin-right: 1.00em; } +.vrtl .m-before-1em25 { margin-right: 1.25em; } +.vrtl .m-before-1em50 { margin-right: 1.50em; } +.vrtl .m-before-1em75 { margin-right: 1.75em; } +.vrtl .m-before-2em { margin-right: 2.00em; } +.vrtl .m-before-2em50 { margin-right: 2.50em; } +.vrtl .m-before-3em { margin-right: 3.00em; } +.vrtl .m-before-4em { margin-right: 4.00em; } +.vrtl .m-before-5em { margin-right: 5.00em; } +.vrtl .m-before-5em25 { margin-right: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="m-before"] { margin-top: 0; } */ +.hltr .vrtl .m-before-auto, +.hltr .vrtl .m-before-005per, .hltr .vrtl .m-before-010per, .hltr .vrtl .m-before-015per, +.hltr .vrtl .m-before-020per, .hltr .vrtl .m-before-025per, .hltr .vrtl .m-before-030per, +.hltr .vrtl .m-before-033per, .hltr .vrtl .m-before-040per, .hltr .vrtl .m-before-050per, +.hltr .vrtl .m-before-060per, .hltr .vrtl .m-before-067per, .hltr .vrtl .m-before-070per, +.hltr .vrtl .m-before-075per, .hltr .vrtl .m-before-080per, .hltr .vrtl .m-before-090per, +.hltr .vrtl .m-before-0em25, .hltr .vrtl .m-before-0em50, .hltr .vrtl .m-before-0em75, +.hltr .vrtl .m-before-1em, .hltr .vrtl .m-before-1em25, .hltr .vrtl .m-before-1em50, +.hltr .vrtl .m-before-1em75, .hltr .vrtl .m-before-2em, .hltr .vrtl .m-before-2em50, +.hltr .vrtl .m-before-3em, .hltr .vrtl .m-before-4em, .hltr .vrtl .m-before-5em, +.hltr .vrtl .m-before-5em25 { + margin-top: 0; +} +/* .vrtl .hltr [class|="m-before"] { margin-right: 0; } */ +.vrtl .hltr .m-before-auto, +.vrtl .hltr .m-before-005per, .vrtl .hltr .m-before-010per, .vrtl .hltr .m-before-015per, +.vrtl .hltr .m-before-020per, .vrtl .hltr .m-before-025per, .vrtl .hltr .m-before-030per, +.vrtl .hltr .m-before-033per, .vrtl .hltr .m-before-040per, .vrtl .hltr .m-before-050per, +.vrtl .hltr .m-before-060per, .vrtl .hltr .m-before-067per, .vrtl .hltr .m-before-070per, +.vrtl .hltr .m-before-075per, .vrtl .hltr .m-before-080per, .vrtl .hltr .m-before-090per, +.vrtl .hltr .m-before-0em25, .vrtl .hltr .m-before-0em50, .vrtl .hltr .m-before-0em75, +.vrtl .hltr .m-before-1em, .vrtl .hltr .m-before-1em25, .vrtl .hltr .m-before-1em50, +.vrtl .hltr .m-before-1em75, .vrtl .hltr .m-before-2em, .vrtl .hltr .m-before-2em50, +.vrtl .hltr .m-before-3em, .vrtl .hltr .m-before-4em, .vrtl .hltr .m-before-5em, +.vrtl .hltr .m-before-5em25 { + margin-right: 0; +} + + +/* 行後方マージン:横組み用 */ +.hltr .m-after-auto { margin-bottom: auto; } +.hltr .m-after-0, +.hltr .m-after-0em, +.hltr .m-after-000per { margin-bottom: 0; } + +/* %指定 */ +.hltr .m-after-005per { margin-bottom: 5%; } +.hltr .m-after-010per { margin-bottom: 10%; } +.hltr .m-after-015per { margin-bottom: 15%; } +.hltr .m-after-020per { margin-bottom: 20%; } +.hltr .m-after-025per { margin-bottom: 25%; } +.hltr .m-after-030per { margin-bottom: 30%; } +.hltr .m-after-033per { margin-bottom: 33%; } +.hltr .m-after-040per { margin-bottom: 40%; } +.hltr .m-after-050per { margin-bottom: 50%; } +.hltr .m-after-060per { margin-bottom: 60%; } +.hltr .m-after-067per { margin-bottom: 67%; } +.hltr .m-after-070per { margin-bottom: 70%; } +.hltr .m-after-075per { margin-bottom: 75%; } +.hltr .m-after-080per { margin-bottom: 80%; } +.hltr .m-after-090per { margin-bottom: 90%; } + +/* 文字数指定 */ +.hltr .m-after-0em25 { margin-bottom: 0.25em; } +.hltr .m-after-0em50 { margin-bottom: 0.50em; } +.hltr .m-after-0em75 { margin-bottom: 0.75em; } +.hltr .m-after-1em { margin-bottom: 1.00em; } +.hltr .m-after-1em25 { margin-bottom: 1.25em; } +.hltr .m-after-1em50 { margin-bottom: 1.50em; } +.hltr .m-after-1em75 { margin-bottom: 1.75em; } +.hltr .m-after-2em { margin-bottom: 2.00em; } +.hltr .m-after-2em50 { margin-bottom: 2.50em; } +.hltr .m-after-3em { margin-bottom: 3.00em; } +.hltr .m-after-4em { margin-bottom: 4.00em; } +.hltr .m-after-5em { margin-bottom: 5.00em; } +.hltr .m-after-5em25 { margin-bottom: 5.25em; } + +/* 行後方マージン:縦組み用 */ +.vrtl .m-after-auto { margin-left: auto; } +.vrtl .m-after-0, +.vrtl .m-after-0em, +.vrtl .m-after-000per { margin-left: 0; } + +/* %指定 */ +.vrtl .m-after-005per { margin-left: 5%; } +.vrtl .m-after-010per { margin-left: 10%; } +.vrtl .m-after-015per { margin-left: 15%; } +.vrtl .m-after-020per { margin-left: 20%; } +.vrtl .m-after-025per { margin-left: 25%; } +.vrtl .m-after-030per { margin-left: 30%; } +.vrtl .m-after-033per { margin-left: 33%; } +.vrtl .m-after-040per { margin-left: 40%; } +.vrtl .m-after-050per { margin-left: 50%; } +.vrtl .m-after-060per { margin-left: 60%; } +.vrtl .m-after-067per { margin-left: 67%; } +.vrtl .m-after-070per { margin-left: 70%; } +.vrtl .m-after-075per { margin-left: 75%; } +.vrtl .m-after-080per { margin-left: 80%; } +.vrtl .m-after-090per { margin-left: 90%; } + +/* 文字数指定 */ +.vrtl .m-after-0em25 { margin-left: 0.25em; } +.vrtl .m-after-0em50 { margin-left: 0.50em; } +.vrtl .m-after-0em75 { margin-left: 0.75em; } +.vrtl .m-after-1em { margin-left: 1.00em; } +.vrtl .m-after-1em25 { margin-left: 1.25em; } +.vrtl .m-after-1em50 { margin-left: 1.50em; } +.vrtl .m-after-1em75 { margin-left: 1.75em; } +.vrtl .m-after-2em { margin-left: 2.00em; } +.vrtl .m-after-2em50 { margin-left: 2.50em; } +.vrtl .m-after-3em { margin-left: 3.00em; } +.vrtl .m-after-4em { margin-left: 4.00em; } +.vrtl .m-after-5em { margin-left: 5.00em; } +.vrtl .m-after-5em25 { margin-left: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="m-after"] { margin-bottom: 0; } */ +.hltr .vrtl .m-after-auto, +.hltr .vrtl .m-after-005per, .hltr .vrtl .m-after-010per, .hltr .vrtl .m-after-015per, +.hltr .vrtl .m-after-020per, .hltr .vrtl .m-after-025per, .hltr .vrtl .m-after-030per, +.hltr .vrtl .m-after-033per, .hltr .vrtl .m-after-040per, .hltr .vrtl .m-after-050per, +.hltr .vrtl .m-after-060per, .hltr .vrtl .m-after-067per, .hltr .vrtl .m-after-070per, +.hltr .vrtl .m-after-075per, .hltr .vrtl .m-after-080per, .hltr .vrtl .m-after-090per, +.hltr .vrtl .m-after-0em25, .hltr .vrtl .m-after-0em50, .hltr .vrtl .m-after-0em75, +.hltr .vrtl .m-after-1em, .hltr .vrtl .m-after-1em25, .hltr .vrtl .m-after-1em50, +.hltr .vrtl .m-after-1em75, .hltr .vrtl .m-after-2em, .hltr .vrtl .m-after-2em50, +.hltr .vrtl .m-after-3em, .hltr .vrtl .m-after-4em, .hltr .vrtl .m-after-5em, +.hltr .vrtl .m-after-5em25 { + margin-bottom: 0; +} +/* .vrtl .hltr [class|="m-after"] { margin-left: 0; } */ +.vrtl .hltr .m-after-auto, +.vrtl .hltr .m-after-005per, .vrtl .hltr .m-after-010per, .vrtl .hltr .m-after-015per, +.vrtl .hltr .m-after-020per, .vrtl .hltr .m-after-025per, .vrtl .hltr .m-after-030per, +.vrtl .hltr .m-after-033per, .vrtl .hltr .m-after-040per, .vrtl .hltr .m-after-050per, +.vrtl .hltr .m-after-060per, .vrtl .hltr .m-after-067per, .vrtl .hltr .m-after-070per, +.vrtl .hltr .m-after-075per, .vrtl .hltr .m-after-080per, .vrtl .hltr .m-after-090per, +.vrtl .hltr .m-after-0em25, .vrtl .hltr .m-after-0em50, .vrtl .hltr .m-after-0em75, +.vrtl .hltr .m-after-1em, .vrtl .hltr .m-after-1em25, .vrtl .hltr .m-after-1em50, +.vrtl .hltr .m-after-1em75, .vrtl .hltr .m-after-2em, .vrtl .hltr .m-after-2em50, +.vrtl .hltr .m-after-3em, .vrtl .hltr .m-after-4em, .vrtl .hltr .m-after-5em, +.vrtl .hltr .m-after-5em25 { + margin-left: 0; +} + + +/* 【論理方向指定】内側の余白(パディング)指定 +---------------------------------------------------------------- */ +/* 行頭パディング:横組み用 */ +.hltr .p-start-0, +.hltr .p-start-0em, +.hltr .p-start-000per { padding-left: 0; } + +/* %指定 */ +.hltr .p-start-005per { padding-left: 5%; } +.hltr .p-start-010per { padding-left: 10%; } +.hltr .p-start-015per { padding-left: 15%; } +.hltr .p-start-020per { padding-left: 20%; } +.hltr .p-start-025per { padding-left: 25%; } +.hltr .p-start-030per { padding-left: 30%; } +.hltr .p-start-033per { padding-left: 33%; } +.hltr .p-start-040per { padding-left: 40%; } +.hltr .p-start-050per { padding-left: 50%; } +.hltr .p-start-060per { padding-left: 60%; } +.hltr .p-start-067per { padding-left: 67%; } +.hltr .p-start-070per { padding-left: 70%; } +.hltr .p-start-075per { padding-left: 75%; } +.hltr .p-start-080per { padding-left: 80%; } +.hltr .p-start-090per { padding-left: 90%; } + +/* 文字数指定 */ +.hltr .p-start-0em25 { padding-left: 0.25em; } +.hltr .p-start-0em50 { padding-left: 0.50em; } +.hltr .p-start-0em75 { padding-left: 0.75em; } +.hltr .p-start-1em { padding-left: 1.00em; } +.hltr .p-start-1em25 { padding-left: 1.25em; } +.hltr .p-start-1em50 { padding-left: 1.50em; } +.hltr .p-start-1em75 { padding-left: 1.75em; } +.hltr .p-start-2em { padding-left: 2.00em; } +.hltr .p-start-2em50 { padding-left: 2.50em; } +.hltr .p-start-3em { padding-left: 3.00em; } +.hltr .p-start-4em { padding-left: 4.00em; } +.hltr .p-start-5em { padding-left: 5.00em; } +.hltr .p-start-5em25 { padding-left: 5.25em; } + +/* 行頭パディング:縦組み用 */ +.vrtl .p-start-0, +.vrtl .p-start-0em, +.vrtl .p-start-000per { padding-top: 0; } + +/* %指定 */ +.vrtl .p-start-005per { padding-top: 5%; } +.vrtl .p-start-010per { padding-top: 10%; } +.vrtl .p-start-015per { padding-top: 15%; } +.vrtl .p-start-020per { padding-top: 20%; } +.vrtl .p-start-025per { padding-top: 25%; } +.vrtl .p-start-030per { padding-top: 30%; } +.vrtl .p-start-033per { padding-top: 33%; } +.vrtl .p-start-040per { padding-top: 40%; } +.vrtl .p-start-050per { padding-top: 50%; } +.vrtl .p-start-060per { padding-top: 60%; } +.vrtl .p-start-067per { padding-top: 67%; } +.vrtl .p-start-070per { padding-top: 70%; } +.vrtl .p-start-075per { padding-top: 75%; } +.vrtl .p-start-080per { padding-top: 80%; } +.vrtl .p-start-090per { padding-top: 90%; } + +/* 文字数指定 */ +.vrtl .p-start-0em25 { padding-top: 0.25em; } +.vrtl .p-start-0em50 { padding-top: 0.50em; } +.vrtl .p-start-0em75 { padding-top: 0.75em; } +.vrtl .p-start-1em { padding-top: 1.00em; } +.vrtl .p-start-1em25 { padding-top: 1.25em; } +.vrtl .p-start-1em50 { padding-top: 1.50em; } +.vrtl .p-start-1em75 { padding-top: 1.75em; } +.vrtl .p-start-2em { padding-top: 2.00em; } +.vrtl .p-start-2em50 { padding-top: 2.50em; } +.vrtl .p-start-3em { padding-top: 3.00em; } +.vrtl .p-start-4em { padding-top: 4.00em; } +.vrtl .p-start-5em { padding-top: 5.00em; } +.vrtl .p-start-5em25 { padding-top: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="p-start"] { padding-left: 0; } */ +.hltr .vrtl .p-start-005per, .hltr .vrtl .p-start-010per, .hltr .vrtl .p-start-015per, +.hltr .vrtl .p-start-020per, .hltr .vrtl .p-start-025per, .hltr .vrtl .p-start-030per, +.hltr .vrtl .p-start-033per, .hltr .vrtl .p-start-040per, .hltr .vrtl .p-start-050per, +.hltr .vrtl .p-start-060per, .hltr .vrtl .p-start-067per, .hltr .vrtl .p-start-070per, +.hltr .vrtl .p-start-075per, .hltr .vrtl .p-start-080per, .hltr .vrtl .p-start-090per, +.hltr .vrtl .p-start-0em25, .hltr .vrtl .p-start-0em50, .hltr .vrtl .p-start-0em75, +.hltr .vrtl .p-start-1em, .hltr .vrtl .p-start-1em25, .hltr .vrtl .p-start-1em50, +.hltr .vrtl .p-start-1em75, .hltr .vrtl .p-start-2em, .hltr .vrtl .p-start-2em50, +.hltr .vrtl .p-start-3em, .hltr .vrtl .p-start-4em, .hltr .vrtl .p-start-5em, +.hltr .vrtl .p-start-5em25 { + padding-left: 0; +} +/* .vrtl .hltr [class|="p-start"] { padding-top: 0; } */ +.vrtl .hltr .p-start-005per, .vrtl .hltr .p-start-010per, .vrtl .hltr .p-start-015per, +.vrtl .hltr .p-start-020per, .vrtl .hltr .p-start-025per, .vrtl .hltr .p-start-030per, +.vrtl .hltr .p-start-033per, .vrtl .hltr .p-start-040per, .vrtl .hltr .p-start-050per, +.vrtl .hltr .p-start-060per, .vrtl .hltr .p-start-067per, .vrtl .hltr .p-start-070per, +.vrtl .hltr .p-start-075per, .vrtl .hltr .p-start-080per, .vrtl .hltr .p-start-090per, +.vrtl .hltr .p-start-0em25, .vrtl .hltr .p-start-0em50, .vrtl .hltr .p-start-0em75, +.vrtl .hltr .p-start-1em, .vrtl .hltr .p-start-1em25, .vrtl .hltr .p-start-1em50, +.vrtl .hltr .p-start-1em75, .vrtl .hltr .p-start-2em, .vrtl .hltr .p-start-2em50, +.vrtl .hltr .p-start-3em, .vrtl .hltr .p-start-4em, .vrtl .hltr .p-start-5em, +.vrtl .hltr .p-start-5em25 { + padding-top: 0; +} + + +/* 行末パディング:横組み用 */ +.hltr .p-end-0, +.hltr .p-end-0em, +.hltr .p-end-000per { padding-right: 0; } + +/* %指定 */ +.hltr .p-end-005per { padding-right: 5%; } +.hltr .p-end-010per { padding-right: 10%; } +.hltr .p-end-015per { padding-right: 15%; } +.hltr .p-end-020per { padding-right: 20%; } +.hltr .p-end-025per { padding-right: 25%; } +.hltr .p-end-030per { padding-right: 30%; } +.hltr .p-end-033per { padding-right: 33%; } +.hltr .p-end-040per { padding-right: 40%; } +.hltr .p-end-050per { padding-right: 50%; } +.hltr .p-end-060per { padding-right: 60%; } +.hltr .p-end-067per { padding-right: 67%; } +.hltr .p-end-070per { padding-right: 70%; } +.hltr .p-end-075per { padding-right: 75%; } +.hltr .p-end-080per { padding-right: 80%; } +.hltr .p-end-090per { padding-right: 90%; } + +/* 文字数指定 */ +.hltr .p-end-0em25 { padding-right: 0.25em; } +.hltr .p-end-0em50 { padding-right: 0.50em; } +.hltr .p-end-0em75 { padding-right: 0.75em; } +.hltr .p-end-1em { padding-right: 1.00em; } +.hltr .p-end-1em25 { padding-right: 1.25em; } +.hltr .p-end-1em50 { padding-right: 1.50em; } +.hltr .p-end-1em75 { padding-right: 1.75em; } +.hltr .p-end-2em { padding-right: 2.00em; } +.hltr .p-end-2em50 { padding-right: 2.50em; } +.hltr .p-end-3em { padding-right: 3.00em; } +.hltr .p-end-4em { padding-right: 4.00em; } +.hltr .p-end-5em { padding-right: 5.00em; } +.hltr .p-end-5em25 { padding-right: 5.25em; } + +/* 行末パディング:縦組み用 */ +.vrtl .p-end-0, +.vrtl .p-end-0em, +.vrtl .p-end-000per { padding-bottom: 0; } + +/* %指定 */ +.vrtl .p-end-005per { padding-bottom: 5%; } +.vrtl .p-end-010per { padding-bottom: 10%; } +.vrtl .p-end-015per { padding-bottom: 15%; } +.vrtl .p-end-020per { padding-bottom: 20%; } +.vrtl .p-end-025per { padding-bottom: 25%; } +.vrtl .p-end-030per { padding-bottom: 30%; } +.vrtl .p-end-033per { padding-bottom: 33%; } +.vrtl .p-end-040per { padding-bottom: 40%; } +.vrtl .p-end-050per { padding-bottom: 50%; } +.vrtl .p-end-060per { padding-bottom: 60%; } +.vrtl .p-end-067per { padding-bottom: 67%; } +.vrtl .p-end-070per { padding-bottom: 70%; } +.vrtl .p-end-075per { padding-bottom: 75%; } +.vrtl .p-end-080per { padding-bottom: 80%; } +.vrtl .p-end-090per { padding-bottom: 90%; } + +/* 文字数指定 */ +.vrtl .p-end-0em25 { padding-bottom: 0.25em; } +.vrtl .p-end-0em50 { padding-bottom: 0.50em; } +.vrtl .p-end-0em75 { padding-bottom: 0.75em; } +.vrtl .p-end-1em { padding-bottom: 1.00em; } +.vrtl .p-end-1em25 { padding-bottom: 1.25em; } +.vrtl .p-end-1em50 { padding-bottom: 1.50em; } +.vrtl .p-end-1em75 { padding-bottom: 1.75em; } +.vrtl .p-end-2em { padding-bottom: 2.00em; } +.vrtl .p-end-2em50 { padding-bottom: 2.50em; } +.vrtl .p-end-3em { padding-bottom: 3.00em; } +.vrtl .p-end-4em { padding-bottom: 4.00em; } +.vrtl .p-end-5em { padding-bottom: 5.00em; } +.vrtl .p-end-5em25 { padding-bottom: 5.25em; } + +/* 字下げ:組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="p-end"] { padding-right: 0; } */ +.hltr .vrtl .p-end-005per, .hltr .vrtl .p-end-010per, .hltr .vrtl .p-end-015per, +.hltr .vrtl .p-end-020per, .hltr .vrtl .p-end-025per, .hltr .vrtl .p-end-030per, +.hltr .vrtl .p-end-033per, .hltr .vrtl .p-end-040per, .hltr .vrtl .p-end-050per, +.hltr .vrtl .p-end-060per, .hltr .vrtl .p-end-067per, .hltr .vrtl .p-end-070per, +.hltr .vrtl .p-end-075per, .hltr .vrtl .p-end-080per, .hltr .vrtl .p-end-090per, +.hltr .vrtl .p-end-0em25, .hltr .vrtl .p-end-0em50, .hltr .vrtl .p-end-0em75, +.hltr .vrtl .p-end-1em, .hltr .vrtl .p-end-1em25, .hltr .vrtl .p-end-1em50, +.hltr .vrtl .p-end-1em75, .hltr .vrtl .p-end-2em, .hltr .vrtl .p-end-2em50, +.hltr .vrtl .p-end-3em, .hltr .vrtl .p-end-4em, .hltr .vrtl .p-end-5em, +.hltr .vrtl .p-end-5em25 { + padding-right: 0; +} +/* .vrtl .hltr [class|="p-end"] { padding-bottom: 0; } */ +.vrtl .hltr .p-end-005per, .vrtl .hltr .p-end-010per, .vrtl .hltr .p-end-015per, +.vrtl .hltr .p-end-020per, .vrtl .hltr .p-end-025per, .vrtl .hltr .p-end-030per, +.vrtl .hltr .p-end-033per, .vrtl .hltr .p-end-040per, .vrtl .hltr .p-end-050per, +.vrtl .hltr .p-end-060per, .vrtl .hltr .p-end-067per, .vrtl .hltr .p-end-070per, +.vrtl .hltr .p-end-075per, .vrtl .hltr .p-end-080per, .vrtl .hltr .p-end-090per, +.vrtl .hltr .p-end-0em25, .vrtl .hltr .p-end-0em50, .vrtl .hltr .p-end-0em75, +.vrtl .hltr .p-end-1em, .vrtl .hltr .p-end-1em25, .vrtl .hltr .p-end-1em50, +.vrtl .hltr .p-end-1em75, .vrtl .hltr .p-end-2em, .vrtl .hltr .p-end-2em50, +.vrtl .hltr .p-end-3em, .vrtl .hltr .p-end-4em, .vrtl .hltr .p-end-5em, +.vrtl .hltr .p-end-5em25 { + padding-bottom: 0; +} + + +/* 行前方パディング:横組み用 */ +.hltr .p-before-0, +.hltr .p-before-0em, +.hltr .p-before-000per { padding-top: 0; } + +/* %指定 */ +.hltr .p-before-005per { padding-top: 5%; } +.hltr .p-before-010per { padding-top: 10%; } +.hltr .p-before-015per { padding-top: 15%; } +.hltr .p-before-020per { padding-top: 20%; } +.hltr .p-before-025per { padding-top: 25%; } +.hltr .p-before-030per { padding-top: 30%; } +.hltr .p-before-033per { padding-top: 33%; } +.hltr .p-before-040per { padding-top: 40%; } +.hltr .p-before-050per { padding-top: 50%; } +.hltr .p-before-060per { padding-top: 60%; } +.hltr .p-before-067per { padding-top: 67%; } +.hltr .p-before-070per { padding-top: 70%; } +.hltr .p-before-075per { padding-top: 75%; } +.hltr .p-before-080per { padding-top: 80%; } +.hltr .p-before-090per { padding-top: 90%; } + +/* 文字数指定 */ +.hltr .p-before-0em25 { padding-top: 0.25em; } +.hltr .p-before-0em50 { padding-top: 0.50em; } +.hltr .p-before-0em75 { padding-top: 0.75em; } +.hltr .p-before-1em { padding-top: 1.00em; } +.hltr .p-before-1em25 { padding-top: 1.25em; } +.hltr .p-before-1em50 { padding-top: 1.50em; } +.hltr .p-before-1em75 { padding-top: 1.75em; } +.hltr .p-before-2em { padding-top: 2.00em; } +.hltr .p-before-2em50 { padding-top: 2.50em; } +.hltr .p-before-3em { padding-top: 3.00em; } +.hltr .p-before-4em { padding-top: 4.00em; } +.hltr .p-before-5em { padding-top: 5.00em; } +.hltr .p-before-5em25 { padding-top: 5.25em; } + +/* 行前方パディング:縦組み用 */ +.vrtl .p-before-0, +.vrtl .p-before-0em, +.vrtl .p-before-000per { padding-right: 0; } + +/* %指定 */ +.vrtl .p-before-005per { padding-right: 5%; } +.vrtl .p-before-010per { padding-right: 10%; } +.vrtl .p-before-015per { padding-right: 15%; } +.vrtl .p-before-020per { padding-right: 20%; } +.vrtl .p-before-025per { padding-right: 25%; } +.vrtl .p-before-030per { padding-right: 30%; } +.vrtl .p-before-033per { padding-right: 33%; } +.vrtl .p-before-040per { padding-right: 40%; } +.vrtl .p-before-050per { padding-right: 50%; } +.vrtl .p-before-060per { padding-right: 60%; } +.vrtl .p-before-067per { padding-right: 67%; } +.vrtl .p-before-070per { padding-right: 70%; } +.vrtl .p-before-075per { padding-right: 75%; } +.vrtl .p-before-080per { padding-right: 80%; } +.vrtl .p-before-090per { padding-right: 90%; } + +/* 文字数指定 */ +.vrtl .p-before-0em25 { padding-right: 0.25em; } +.vrtl .p-before-0em50 { padding-right: 0.50em; } +.vrtl .p-before-0em75 { padding-right: 0.75em; } +.vrtl .p-before-1em { padding-right: 1.00em; } +.vrtl .p-before-1em25 { padding-right: 1.25em; } +.vrtl .p-before-1em50 { padding-right: 1.50em; } +.vrtl .p-before-1em75 { padding-right: 1.75em; } +.vrtl .p-before-2em { padding-right: 2.00em; } +.vrtl .p-before-2em50 { padding-right: 2.50em; } +.vrtl .p-before-3em { padding-right: 3.00em; } +.vrtl .p-before-4em { padding-right: 4.00em; } +.vrtl .p-before-5em { padding-right: 5.00em; } +.vrtl .p-before-5em25 { padding-right: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="p-before"] { padding-top: 0; } */ +.hltr .vrtl .p-before-005per, .hltr .vrtl .p-before-010per, .hltr .vrtl .p-before-015per, +.hltr .vrtl .p-before-020per, .hltr .vrtl .p-before-025per, .hltr .vrtl .p-before-030per, +.hltr .vrtl .p-before-033per, .hltr .vrtl .p-before-040per, .hltr .vrtl .p-before-050per, +.hltr .vrtl .p-before-060per, .hltr .vrtl .p-before-067per, .hltr .vrtl .p-before-070per, +.hltr .vrtl .p-before-075per, .hltr .vrtl .p-before-080per, .hltr .vrtl .p-before-090per, +.hltr .vrtl .p-before-0em25, .hltr .vrtl .p-before-0em50, .hltr .vrtl .p-before-0em75, +.hltr .vrtl .p-before-1em, .hltr .vrtl .p-before-1em25, .hltr .vrtl .p-before-1em50, +.hltr .vrtl .p-before-1em75, .hltr .vrtl .p-before-2em, .hltr .vrtl .p-before-2em50, +.hltr .vrtl .p-before-3em, .hltr .vrtl .p-before-4em, .hltr .vrtl .p-before-5em, +.hltr .vrtl .p-before-5em25 { + padding-top: 0; +} +/* .vrtl .hltr [class|="p-before"] { padding-right: 0; } */ +.vrtl .hltr .p-before-005per, .vrtl .hltr .p-before-010per, .vrtl .hltr .p-before-015per, +.vrtl .hltr .p-before-020per, .vrtl .hltr .p-before-025per, .vrtl .hltr .p-before-030per, +.vrtl .hltr .p-before-033per, .vrtl .hltr .p-before-040per, .vrtl .hltr .p-before-050per, +.vrtl .hltr .p-before-060per, .vrtl .hltr .p-before-067per, .vrtl .hltr .p-before-070per, +.vrtl .hltr .p-before-075per, .vrtl .hltr .p-before-080per, .vrtl .hltr .p-before-090per, +.vrtl .hltr .p-before-0em25, .vrtl .hltr .p-before-0em50, .vrtl .hltr .p-before-0em75, +.vrtl .hltr .p-before-1em, .vrtl .hltr .p-before-1em25, .vrtl .hltr .p-before-1em50, +.vrtl .hltr .p-before-1em75, .vrtl .hltr .p-before-2em, .vrtl .hltr .p-before-2em50, +.vrtl .hltr .p-before-3em, .vrtl .hltr .p-before-4em, .vrtl .hltr .p-before-5em, +.vrtl .hltr .p-before-5em25 { + padding-right: 0; +} + + +/* 行後方パディング:横組み用 */ +.hltr .p-after-0, +.hltr .p-after-0em, +.hltr .p-after-000per { padding-bottom: 0; } + +/* %指定 */ +.hltr .p-after-005per { padding-bottom: 5%; } +.hltr .p-after-010per { padding-bottom: 10%; } +.hltr .p-after-015per { padding-bottom: 15%; } +.hltr .p-after-020per { padding-bottom: 20%; } +.hltr .p-after-025per { padding-bottom: 25%; } +.hltr .p-after-030per { padding-bottom: 30%; } +.hltr .p-after-033per { padding-bottom: 33%; } +.hltr .p-after-040per { padding-bottom: 40%; } +.hltr .p-after-050per { padding-bottom: 50%; } +.hltr .p-after-060per { padding-bottom: 60%; } +.hltr .p-after-067per { padding-bottom: 67%; } +.hltr .p-after-070per { padding-bottom: 70%; } +.hltr .p-after-075per { padding-bottom: 75%; } +.hltr .p-after-080per { padding-bottom: 80%; } +.hltr .p-after-090per { padding-bottom: 90%; } + +/* 文字数指定 */ +.hltr .p-after-0em25 { padding-bottom: 0.25em; } +.hltr .p-after-0em50 { padding-bottom: 0.50em; } +.hltr .p-after-0em75 { padding-bottom: 0.75em; } +.hltr .p-after-1em { padding-bottom: 1.00em; } +.hltr .p-after-1em25 { padding-bottom: 1.25em; } +.hltr .p-after-1em50 { padding-bottom: 1.50em; } +.hltr .p-after-1em75 { padding-bottom: 1.75em; } +.hltr .p-after-2em { padding-bottom: 2.00em; } +.hltr .p-after-2em50 { padding-bottom: 2.50em; } +.hltr .p-after-3em { padding-bottom: 3.00em; } +.hltr .p-after-4em { padding-bottom: 4.00em; } +.hltr .p-after-5em { padding-bottom: 5.00em; } +.hltr .p-after-5em25 { padding-bottom: 5.25em; } + +/* 行後方パディング:縦組み用 */ +.vrtl .p-after-0, +.vrtl .p-after-0em, +.vrtl .p-after-000per { padding-left: 0; } + +/* %指定 */ +.vrtl .p-after-005per { padding-left: 5%; } +.vrtl .p-after-010per { padding-left: 10%; } +.vrtl .p-after-015per { padding-left: 15%; } +.vrtl .p-after-020per { padding-left: 20%; } +.vrtl .p-after-025per { padding-left: 25%; } +.vrtl .p-after-030per { padding-left: 30%; } +.vrtl .p-after-033per { padding-left: 33%; } +.vrtl .p-after-040per { padding-left: 40%; } +.vrtl .p-after-050per { padding-left: 50%; } +.vrtl .p-after-060per { padding-left: 60%; } +.vrtl .p-after-067per { padding-left: 67%; } +.vrtl .p-after-070per { padding-left: 70%; } +.vrtl .p-after-075per { padding-left: 75%; } +.vrtl .p-after-080per { padding-left: 80%; } +.vrtl .p-after-090per { padding-left: 90%; } + +/* 文字数指定 */ +.vrtl .p-after-0em25 { padding-left: 0.25em; } +.vrtl .p-after-0em50 { padding-left: 0.50em; } +.vrtl .p-after-0em75 { padding-left: 0.75em; } +.vrtl .p-after-1em { padding-left: 1.00em; } +.vrtl .p-after-1em25 { padding-left: 1.25em; } +.vrtl .p-after-1em50 { padding-left: 1.50em; } +.vrtl .p-after-1em75 { padding-left: 1.75em; } +.vrtl .p-after-2em { padding-left: 2.00em; } +.vrtl .p-after-2em50 { padding-left: 2.50em; } +.vrtl .p-after-3em { padding-left: 3.00em; } +.vrtl .p-after-4em { padding-left: 4.00em; } +.vrtl .p-after-5em { padding-left: 5.00em; } +.vrtl .p-after-5em25 { padding-left: 5.25em; } + +/* 組み方向の入れ子対策 */ +/* .hltr .vrtl [class|="p-after"] { padding-bottom: 0; } */ +.hltr .vrtl .p-after-005per, .hltr .vrtl .p-after-010per, .hltr .vrtl .p-after-015per, +.hltr .vrtl .p-after-020per, .hltr .vrtl .p-after-025per, .hltr .vrtl .p-after-030per, +.hltr .vrtl .p-after-033per, .hltr .vrtl .p-after-040per, .hltr .vrtl .p-after-050per, +.hltr .vrtl .p-after-060per, .hltr .vrtl .p-after-067per, .hltr .vrtl .p-after-070per, +.hltr .vrtl .p-after-075per, .hltr .vrtl .p-after-080per, .hltr .vrtl .p-after-090per, +.hltr .vrtl .p-after-0em25, .hltr .vrtl .p-after-0em50, .hltr .vrtl .p-after-0em75, +.hltr .vrtl .p-after-1em, .hltr .vrtl .p-after-1em25, .hltr .vrtl .p-after-1em50, +.hltr .vrtl .p-after-1em75, .hltr .vrtl .p-after-2em, .hltr .vrtl .p-after-2em50, +.hltr .vrtl .p-after-3em, .hltr .vrtl .p-after-4em, .hltr .vrtl .p-after-5em, +.hltr .vrtl .p-after-5em25 { + padding-bottom: 0; +} +/* .vrtl .hltr [class|="p-after"] { padding-left: 0; } */ +.vrtl .hltr .p-after-005per, .vrtl .hltr .p-after-010per, .vrtl .hltr .p-after-015per, +.vrtl .hltr .p-after-020per, .vrtl .hltr .p-after-025per, .vrtl .hltr .p-after-030per, +.vrtl .hltr .p-after-033per, .vrtl .hltr .p-after-040per, .vrtl .hltr .p-after-050per, +.vrtl .hltr .p-after-060per, .vrtl .hltr .p-after-067per, .vrtl .hltr .p-after-070per, +.vrtl .hltr .p-after-075per, .vrtl .hltr .p-after-080per, .vrtl .hltr .p-after-090per, +.vrtl .hltr .p-after-0em25, .vrtl .hltr .p-after-0em50, .vrtl .hltr .p-after-0em75, +.vrtl .hltr .p-after-1em, .vrtl .hltr .p-after-1em25, .vrtl .hltr .p-after-1em50, +.vrtl .hltr .p-after-1em75, .vrtl .hltr .p-after-2em, .vrtl .hltr .p-after-2em50, +.vrtl .hltr .p-after-3em, .vrtl .hltr .p-after-4em, .vrtl .hltr .p-after-5em, +.vrtl .hltr .p-after-5em25 { + padding-left: 0; +} + + +/* 【論理方向指定】行長方向のサイズ +---------------------------------------------------------------- +行長方向と行幅方向のサイズ指定は、固定値、最大値とも +同じ要素内では同時に利用できないので注意 + +※以下のように入れ子で対応は可能 + +

+---------------------------------------------------------------- */ +.measure-auto { height: auto; width: auto; } + +/* %指定 */ +/* 横組み用 */ +.hltr .measure-010per, .vrtl .hltr .measure-010per { height: auto; width: 10%; } +.hltr .measure-020per, .vrtl .hltr .measure-020per { height: auto; width: 20%; } +.hltr .measure-025per, .vrtl .hltr .measure-025per { height: auto; width: 25%; } +.hltr .measure-030per, .vrtl .hltr .measure-030per { height: auto; width: 30%; } +.hltr .measure-033per, .vrtl .hltr .measure-033per { height: auto; width: 33%; } +.hltr .measure-040per, .vrtl .hltr .measure-040per { height: auto; width: 40%; } +.hltr .measure-050per, .vrtl .hltr .measure-050per { height: auto; width: 50%; } +.hltr .measure-060per, .vrtl .hltr .measure-060per { height: auto; width: 60%; } +.hltr .measure-067per, .vrtl .hltr .measure-067per { height: auto; width: 67%; } +.hltr .measure-070per, .vrtl .hltr .measure-070per { height: auto; width: 70%; } +.hltr .measure-075per, .vrtl .hltr .measure-075per { height: auto; width: 75%; } +.hltr .measure-080per, .vrtl .hltr .measure-080per { height: auto; width: 80%; } +.hltr .measure-090per, .vrtl .hltr .measure-090per { height: auto; width: 90%; } +.hltr .measure-100per, .vrtl .hltr .measure-100per { height: auto; width: 100%; } +/* 縦組み用 */ +.vrtl .measure-010per, .hltr .vrtl .measure-010per { height: 10%; width: auto; } +.vrtl .measure-020per, .hltr .vrtl .measure-020per { height: 20%; width: auto; } +.vrtl .measure-025per, .hltr .vrtl .measure-025per { height: 25%; width: auto; } +.vrtl .measure-030per, .hltr .vrtl .measure-030per { height: 30%; width: auto; } +.vrtl .measure-033per, .hltr .vrtl .measure-033per { height: 33%; width: auto; } +.vrtl .measure-040per, .hltr .vrtl .measure-040per { height: 40%; width: auto; } +.vrtl .measure-050per, .hltr .vrtl .measure-050per { height: 50%; width: auto; } +.vrtl .measure-060per, .hltr .vrtl .measure-060per { height: 60%; width: auto; } +.vrtl .measure-067per, .hltr .vrtl .measure-067per { height: 67%; width: auto; } +.vrtl .measure-070per, .hltr .vrtl .measure-070per { height: 70%; width: auto; } +.vrtl .measure-075per, .hltr .vrtl .measure-075per { height: 75%; width: auto; } +.vrtl .measure-080per, .hltr .vrtl .measure-080per { height: 80%; width: auto; } +.vrtl .measure-090per, .hltr .vrtl .measure-090per { height: 90%; width: auto; } +.vrtl .measure-100per, .hltr .vrtl .measure-100per { height: 100%; width: auto; } + +/* 文字数指定 */ +/* 横組み用 */ +.hltr .measure-0em25, .vrtl .hltr .measure-0em25 { height: auto; width: 0.25em; } +.hltr .measure-0em50, .vrtl .hltr .measure-0em50 { height: auto; width: 0.50em; } +.hltr .measure-0em75, .vrtl .hltr .measure-0em75 { height: auto; width: 0.75em; } +.hltr .measure-1em, .vrtl .hltr .measure-1em { height: auto; width: 1.00em; } +.hltr .measure-1em25, .vrtl .hltr .measure-1em25 { height: auto; width: 1.25em; } +.hltr .measure-1em50, .vrtl .hltr .measure-1em50 { height: auto; width: 1.50em; } +.hltr .measure-1em75, .vrtl .hltr .measure-1em75 { height: auto; width: 1.75em; } +.hltr .measure-2em, .vrtl .hltr .measure-2em { height: auto; width: 2.00em; } +.hltr .measure-2em50, .vrtl .hltr .measure-2em50 { height: auto; width: 2.50em; } +.hltr .measure-3em, .vrtl .hltr .measure-3em { height: auto; width: 3.00em; } +.hltr .measure-4em, .vrtl .hltr .measure-4em { height: auto; width: 4.00em; } +.hltr .measure-5em, .vrtl .hltr .measure-5em { height: auto; width: 5.00em; } +.hltr .measure-5em25, .vrtl .hltr .measure-5em25 { height: auto; width: 5.25em; } +.hltr .measure-6em, .vrtl .hltr .measure-6em { height: auto; width: 6.00em; } +.hltr .measure-7em, .vrtl .hltr .measure-7em { height: auto; width: 7.00em; } +.hltr .measure-8em, .vrtl .hltr .measure-8em { height: auto; width: 8.00em; } +.hltr .measure-8em75, .vrtl .hltr .measure-8em75 { height: auto; width: 8.75em; } +.hltr .measure-9em, .vrtl .hltr .measure-9em { height: auto; width: 9.00em; } +.hltr .measure-10em, .vrtl .hltr .measure-10em { height: auto; width: 10.00em; } +.hltr .measure-11em, .vrtl .hltr .measure-11em { height: auto; width: 11.00em; } +.hltr .measure-12em, .vrtl .hltr .measure-12em { height: auto; width: 12.00em; } +.hltr .measure-13em, .vrtl .hltr .measure-13em { height: auto; width: 13.00em; } +.hltr .measure-14em, .vrtl .hltr .measure-14em { height: auto; width: 14.00em; } +.hltr .measure-15em, .vrtl .hltr .measure-15em { height: auto; width: 15.00em; } +.hltr .measure-20em, .vrtl .hltr .measure-20em { height: auto; width: 20.00em; } +.hltr .measure-30em, .vrtl .hltr .measure-30em { height: auto; width: 30.00em; } +.hltr .measure-40em, .vrtl .hltr .measure-40em { height: auto; width: 40.00em; } +/* 縦組み用 */ +.vrtl .measure-0em25, .hltr .vrtl .measure-0em25 { height: 0.25em; width: auto; } +.vrtl .measure-0em50, .hltr .vrtl .measure-0em50 { height: 0.50em; width: auto; } +.vrtl .measure-0em75, .hltr .vrtl .measure-0em75 { height: 0.75em; width: auto; } +.vrtl .measure-1em, .hltr .vrtl .measure-1em { height: 1.00em; width: auto; } +.vrtl .measure-1em25, .hltr .vrtl .measure-1em25 { height: 1.25em; width: auto; } +.vrtl .measure-1em50, .hltr .vrtl .measure-1em50 { height: 1.50em; width: auto; } +.vrtl .measure-1em75, .hltr .vrtl .measure-1em75 { height: 1.75em; width: auto; } +.vrtl .measure-2em, .hltr .vrtl .measure-2em { height: 2.00em; width: auto; } +.vrtl .measure-2em50, .hltr .vrtl .measure-2em50 { height: 2.50em; width: auto; } +.vrtl .measure-3em, .hltr .vrtl .measure-3em { height: 3.00em; width: auto; } +.vrtl .measure-4em, .hltr .vrtl .measure-4em { height: 4.00em; width: auto; } +.vrtl .measure-5em, .hltr .vrtl .measure-5em { height: 5.00em; width: auto; } +.vrtl .measure-5em25, .hltr .vrtl .measure-5em25 { height: 5.25em; width: auto; } +.vrtl .measure-6em, .hltr .vrtl .measure-6em { height: 6.00em; width: auto; } +.vrtl .measure-7em, .hltr .vrtl .measure-7em { height: 7.00em; width: auto; } +.vrtl .measure-8em, .hltr .vrtl .measure-8em { height: 8.00em; width: auto; } +.vrtl .measure-8em75, .hltr .vrtl .measure-8em75 { height: 8.75em; width: auto; } +.vrtl .measure-9em, .hltr .vrtl .measure-9em { height: 9.00em; width: auto; } +.vrtl .measure-10em, .hltr .vrtl .measure-10em { height: 10.00em; width: auto; } +.vrtl .measure-11em, .hltr .vrtl .measure-11em { height: 11.00em; width: auto; } +.vrtl .measure-12em, .hltr .vrtl .measure-12em { height: 12.00em; width: auto; } +.vrtl .measure-13em, .hltr .vrtl .measure-13em { height: 13.00em; width: auto; } +.vrtl .measure-14em, .hltr .vrtl .measure-14em { height: 14.00em; width: auto; } +.vrtl .measure-15em, .hltr .vrtl .measure-15em { height: 15.00em; width: auto; } +.vrtl .measure-20em, .hltr .vrtl .measure-20em { height: 20.00em; width: auto; } +.vrtl .measure-30em, .hltr .vrtl .measure-30em { height: 30.00em; width: auto; } +.vrtl .measure-40em, .hltr .vrtl .measure-40em { height: 40.00em; width: auto; } + + +/* 【論理方向指定】行長方向の最大サイズ +---------------------------------------------------------------- */ +.max-measure-none { max-height: none; max-width: none; } + +/* %指定 */ +/* 横組み用 */ +.hltr .max-measure-010per, .vrtl .hltr .max-measure-010per { max-height: none; max-width: 10%; } +.hltr .max-measure-020per, .vrtl .hltr .max-measure-020per { max-height: none; max-width: 20%; } +.hltr .max-measure-025per, .vrtl .hltr .max-measure-025per { max-height: none; max-width: 25%; } +.hltr .max-measure-030per, .vrtl .hltr .max-measure-030per { max-height: none; max-width: 30%; } +.hltr .max-measure-033per, .vrtl .hltr .max-measure-033per { max-height: none; max-width: 33%; } +.hltr .max-measure-040per, .vrtl .hltr .max-measure-040per { max-height: none; max-width: 40%; } +.hltr .max-measure-050per, .vrtl .hltr .max-measure-050per { max-height: none; max-width: 50%; } +.hltr .max-measure-060per, .vrtl .hltr .max-measure-060per { max-height: none; max-width: 60%; } +.hltr .max-measure-067per, .vrtl .hltr .max-measure-067per { max-height: none; max-width: 67%; } +.hltr .max-measure-070per, .vrtl .hltr .max-measure-070per { max-height: none; max-width: 70%; } +.hltr .max-measure-075per, .vrtl .hltr .max-measure-075per { max-height: none; max-width: 75%; } +.hltr .max-measure-080per, .vrtl .hltr .max-measure-080per { max-height: none; max-width: 80%; } +.hltr .max-measure-090per, .vrtl .hltr .max-measure-090per { max-height: none; max-width: 90%; } +.hltr .max-measure-100per, .vrtl .hltr .max-measure-100per { max-height: none; max-width: 100%; } +/* 縦組み用 */ +.vrtl .max-measure-010per, .hltr .vrtl .max-measure-010per { max-height: 10%; max-width: none; } +.vrtl .max-measure-020per, .hltr .vrtl .max-measure-020per { max-height: 20%; max-width: none; } +.vrtl .max-measure-025per, .hltr .vrtl .max-measure-025per { max-height: 25%; max-width: none; } +.vrtl .max-measure-030per, .hltr .vrtl .max-measure-030per { max-height: 30%; max-width: none; } +.vrtl .max-measure-033per, .hltr .vrtl .max-measure-033per { max-height: 33%; max-width: none; } +.vrtl .max-measure-040per, .hltr .vrtl .max-measure-040per { max-height: 40%; max-width: none; } +.vrtl .max-measure-050per, .hltr .vrtl .max-measure-050per { max-height: 50%; max-width: none; } +.vrtl .max-measure-060per, .hltr .vrtl .max-measure-060per { max-height: 60%; max-width: none; } +.vrtl .max-measure-067per, .hltr .vrtl .max-measure-067per { max-height: 67%; max-width: none; } +.vrtl .max-measure-070per, .hltr .vrtl .max-measure-070per { max-height: 70%; max-width: none; } +.vrtl .max-measure-075per, .hltr .vrtl .max-measure-075per { max-height: 75%; max-width: none; } +.vrtl .max-measure-080per, .hltr .vrtl .max-measure-080per { max-height: 80%; max-width: none; } +.vrtl .max-measure-090per, .hltr .vrtl .max-measure-090per { max-height: 90%; max-width: none; } +.vrtl .max-measure-100per, .hltr .vrtl .max-measure-100per { max-height: 100%; max-width: none; } + +/* 文字数指定 */ +/* 横組み用 */ +.hltr .max-measure-0em25, .vrtl .hltr .max-measure-0em25 { max-height: none; max-width: 0.25em; } +.hltr .max-measure-0em50, .vrtl .hltr .max-measure-0em50 { max-height: none; max-width: 0.50em; } +.hltr .max-measure-0em75, .vrtl .hltr .max-measure-0em75 { max-height: none; max-width: 0.75em; } +.hltr .max-measure-1em, .vrtl .hltr .max-measure-1em { max-height: none; max-width: 1.00em; } +.hltr .max-measure-1em25, .vrtl .hltr .max-measure-1em25 { max-height: none; max-width: 1.25em; } +.hltr .max-measure-1em50, .vrtl .hltr .max-measure-1em50 { max-height: none; max-width: 1.50em; } +.hltr .max-measure-1em75, .vrtl .hltr .max-measure-1em75 { max-height: none; max-width: 1.75em; } +.hltr .max-measure-2em, .vrtl .hltr .max-measure-2em { max-height: none; max-width: 2.00em; } +.hltr .max-measure-2em50, .vrtl .hltr .max-measure-2em50 { max-height: none; max-width: 2.50em; } +.hltr .max-measure-3em, .vrtl .hltr .max-measure-3em { max-height: none; max-width: 3.00em; } +.hltr .max-measure-4em, .vrtl .hltr .max-measure-4em { max-height: none; max-width: 4.00em; } +.hltr .max-measure-5em, .vrtl .hltr .max-measure-5em { max-height: none; max-width: 5.00em; } +.hltr .max-measure-5em25, .vrtl .hltr .max-measure-5em25 { max-height: none; max-width: 5.25em; } +.hltr .max-measure-6em, .vrtl .hltr .max-measure-6em { max-height: none; max-width: 6.00em; } +.hltr .max-measure-7em, .vrtl .hltr .max-measure-7em { max-height: none; max-width: 7.00em; } +.hltr .max-measure-8em, .vrtl .hltr .max-measure-8em { max-height: none; max-width: 8.00em; } +.hltr .max-measure-8em75, .vrtl .hltr .max-measure-8em75 { max-height: none; max-width: 8.75em; } +.hltr .max-measure-9em, .vrtl .hltr .max-measure-9em { max-height: none; max-width: 9.00em; } +.hltr .max-measure-10em, .vrtl .hltr .max-measure-10em { max-height: none; max-width: 10.00em; } +.hltr .max-measure-11em, .vrtl .hltr .max-measure-11em { max-height: none; max-width: 11.00em; } +.hltr .max-measure-12em, .vrtl .hltr .max-measure-12em { max-height: none; max-width: 12.00em; } +.hltr .max-measure-13em, .vrtl .hltr .max-measure-13em { max-height: none; max-width: 13.00em; } +.hltr .max-measure-14em, .vrtl .hltr .max-measure-14em { max-height: none; max-width: 14.00em; } +.hltr .max-measure-15em, .vrtl .hltr .max-measure-15em { max-height: none; max-width: 15.00em; } +.hltr .max-measure-20em, .vrtl .hltr .max-measure-20em { max-height: none; max-width: 20.00em; } +.hltr .max-measure-30em, .vrtl .hltr .max-measure-30em { max-height: none; max-width: 30.00em; } +.hltr .max-measure-40em, .vrtl .hltr .max-measure-40em { max-height: none; max-width: 40.00em; } +/* 縦組み用 */ +.vrtl .max-measure-0em25, .hltr .vrtl .max-measure-0em25 { max-height: 0.25em; max-width: none; } +.vrtl .max-measure-0em50, .hltr .vrtl .max-measure-0em50 { max-height: 0.50em; max-width: none; } +.vrtl .max-measure-0em75, .hltr .vrtl .max-measure-0em75 { max-height: 0.75em; max-width: none; } +.vrtl .max-measure-1em, .hltr .vrtl .max-measure-1em { max-height: 1.00em; max-width: none; } +.vrtl .max-measure-1em25, .hltr .vrtl .max-measure-1em25 { max-height: 1.25em; max-width: none; } +.vrtl .max-measure-1em50, .hltr .vrtl .max-measure-1em50 { max-height: 1.50em; max-width: none; } +.vrtl .max-measure-1em75, .hltr .vrtl .max-measure-1em75 { max-height: 1.75em; max-width: none; } +.vrtl .max-measure-2em, .hltr .vrtl .max-measure-2em { max-height: 2.00em; max-width: none; } +.vrtl .max-measure-2em50, .hltr .vrtl .max-measure-2em50 { max-height: 2.50em; max-width: none; } +.vrtl .max-measure-3em, .hltr .vrtl .max-measure-3em { max-height: 3.00em; max-width: none; } +.vrtl .max-measure-4em, .hltr .vrtl .max-measure-4em { max-height: 4.00em; max-width: none; } +.vrtl .max-measure-5em, .hltr .vrtl .max-measure-5em { max-height: 5.00em; max-width: none; } +.vrtl .max-measure-5em25, .hltr .vrtl .max-measure-5em25 { max-height: 5.25em; max-width: none; } +.vrtl .max-measure-6em, .hltr .vrtl .max-measure-6em { max-height: 6.00em; max-width: none; } +.vrtl .max-measure-7em, .hltr .vrtl .max-measure-7em { max-height: 7.00em; max-width: none; } +.vrtl .max-measure-8em, .hltr .vrtl .max-measure-8em { max-height: 8.00em; max-width: none; } +.vrtl .max-measure-8em75, .hltr .vrtl .max-measure-8em75 { max-height: 8.75em; max-width: none; } +.vrtl .max-measure-9em, .hltr .vrtl .max-measure-9em { max-height: 9.00em; max-width: none; } +.vrtl .max-measure-10em, .hltr .vrtl .max-measure-10em { max-height: 10.00em; max-width: none; } +.vrtl .max-measure-11em, .hltr .vrtl .max-measure-11em { max-height: 11.00em; max-width: none; } +.vrtl .max-measure-12em, .hltr .vrtl .max-measure-12em { max-height: 12.00em; max-width: none; } +.vrtl .max-measure-13em, .hltr .vrtl .max-measure-13em { max-height: 13.00em; max-width: none; } +.vrtl .max-measure-14em, .hltr .vrtl .max-measure-14em { max-height: 14.00em; max-width: none; } +.vrtl .max-measure-15em, .hltr .vrtl .max-measure-15em { max-height: 15.00em; max-width: none; } +.vrtl .max-measure-20em, .hltr .vrtl .max-measure-20em { max-height: 20.00em; max-width: none; } +.vrtl .max-measure-30em, .hltr .vrtl .max-measure-30em { max-height: 30.00em; max-width: none; } +.vrtl .max-measure-40em, .hltr .vrtl .max-measure-40em { max-height: 40.00em; max-width: none; } + + +/* 【論理方向指定】行幅方向のサイズ +---------------------------------------------------------------- */ +.extent-auto { height: auto; width: auto; } + +/* %指定 */ +/* 横組み用 */ +.hltr .extent-010per, .vrtl .hltr .extent-010per { height: 10%; width: auto; } +.hltr .extent-020per, .vrtl .hltr .extent-020per { height: 20%; width: auto; } +.hltr .extent-025per, .vrtl .hltr .extent-025per { height: 25%; width: auto; } +.hltr .extent-030per, .vrtl .hltr .extent-030per { height: 30%; width: auto; } +.hltr .extent-033per, .vrtl .hltr .extent-033per { height: 33%; width: auto; } +.hltr .extent-040per, .vrtl .hltr .extent-040per { height: 40%; width: auto; } +.hltr .extent-050per, .vrtl .hltr .extent-050per { height: 50%; width: auto; } +.hltr .extent-060per, .vrtl .hltr .extent-060per { height: 60%; width: auto; } +.hltr .extent-067per, .vrtl .hltr .extent-067per { height: 67%; width: auto; } +.hltr .extent-070per, .vrtl .hltr .extent-070per { height: 70%; width: auto; } +.hltr .extent-075per, .vrtl .hltr .extent-075per { height: 75%; width: auto; } +.hltr .extent-080per, .vrtl .hltr .extent-080per { height: 80%; width: auto; } +.hltr .extent-090per, .vrtl .hltr .extent-090per { height: 90%; width: auto; } +.hltr .extent-100per, .vrtl .hltr .extent-100per { height: 100%; width: auto; } +/* 縦組み用 */ +.vrtl .extent-010per, .hltr .vrtl .extent-010per { height: auto; width: 10%; } +.vrtl .extent-020per, .hltr .vrtl .extent-020per { height: auto; width: 20%; } +.vrtl .extent-025per, .hltr .vrtl .extent-025per { height: auto; width: 25%; } +.vrtl .extent-030per, .hltr .vrtl .extent-030per { height: auto; width: 30%; } +.vrtl .extent-033per, .hltr .vrtl .extent-033per { height: auto; width: 33%; } +.vrtl .extent-040per, .hltr .vrtl .extent-040per { height: auto; width: 40%; } +.vrtl .extent-050per, .hltr .vrtl .extent-050per { height: auto; width: 50%; } +.vrtl .extent-060per, .hltr .vrtl .extent-060per { height: auto; width: 60%; } +.vrtl .extent-067per, .hltr .vrtl .extent-067per { height: auto; width: 67%; } +.vrtl .extent-070per, .hltr .vrtl .extent-070per { height: auto; width: 70%; } +.vrtl .extent-075per, .hltr .vrtl .extent-075per { height: auto; width: 75%; } +.vrtl .extent-080per, .hltr .vrtl .extent-080per { height: auto; width: 80%; } +.vrtl .extent-090per, .hltr .vrtl .extent-090per { height: auto; width: 90%; } +.vrtl .extent-100per, .hltr .vrtl .extent-100per { height: auto; width: 100%; } + +/* 文字数指定 */ +/* 横組み用 */ +.hltr .extent-0em25, .vrtl .hltr .extent-0em25 { height: 0.25em; width: auto; } +.hltr .extent-0em50, .vrtl .hltr .extent-0em50 { height: 0.50em; width: auto; } +.hltr .extent-0em75, .vrtl .hltr .extent-0em75 { height: 0.75em; width: auto; } +.hltr .extent-1em, .vrtl .hltr .extent-1em { height: 1.00em; width: auto; } +.hltr .extent-1em25, .vrtl .hltr .extent-1em25 { height: 1.25em; width: auto; } +.hltr .extent-1em50, .vrtl .hltr .extent-1em50 { height: 1.50em; width: auto; } +.hltr .extent-1em75, .vrtl .hltr .extent-1em75 { height: 1.75em; width: auto; } +.hltr .extent-2em, .vrtl .hltr .extent-2em { height: 2.00em; width: auto; } +.hltr .extent-2em50, .vrtl .hltr .extent-2em50 { height: 2.50em; width: auto; } +.hltr .extent-3em, .vrtl .hltr .extent-3em { height: 3.00em; width: auto; } +.hltr .extent-4em, .vrtl .hltr .extent-4em { height: 4.00em; width: auto; } +.hltr .extent-5em, .vrtl .hltr .extent-5em { height: 5.00em; width: auto; } +.hltr .extent-5em25, .vrtl .hltr .extent-5em25 { height: 5.25em; width: auto; } +.hltr .extent-6em, .vrtl .hltr .extent-6em { height: 6.00em; width: auto; } +.hltr .extent-7em, .vrtl .hltr .extent-7em { height: 7.00em; width: auto; } +.hltr .extent-8em, .vrtl .hltr .extent-8em { height: 8.00em; width: auto; } +.hltr .extent-8em75, .vrtl .hltr .extent-8em75 { height: 8.75em; width: auto; } +.hltr .extent-9em, .vrtl .hltr .extent-9em { height: 9.00em; width: auto; } +.hltr .extent-10em, .vrtl .hltr .extent-10em { height: 10.00em; width: auto; } +.hltr .extent-11em, .vrtl .hltr .extent-11em { height: 11.00em; width: auto; } +.hltr .extent-12em, .vrtl .hltr .extent-12em { height: 12.00em; width: auto; } +.hltr .extent-13em, .vrtl .hltr .extent-13em { height: 13.00em; width: auto; } +.hltr .extent-14em, .vrtl .hltr .extent-14em { height: 14.00em; width: auto; } +.hltr .extent-15em, .vrtl .hltr .extent-15em { height: 15.00em; width: auto; } +.hltr .extent-20em, .vrtl .hltr .extent-20em { height: 20.00em; width: auto; } +.hltr .extent-30em, .vrtl .hltr .extent-30em { height: 30.00em; width: auto; } +.hltr .extent-40em, .vrtl .hltr .extent-40em { height: 40.00em; width: auto; } +/* 縦組み用 */ +.vrtl .extent-0em25, .hltr .vrtl .extent-0em25 { height: auto; width: 0.25em; } +.vrtl .extent-0em50, .hltr .vrtl .extent-0em50 { height: auto; width: 0.50em; } +.vrtl .extent-0em75, .hltr .vrtl .extent-0em75 { height: auto; width: 0.75em; } +.vrtl .extent-1em, .hltr .vrtl .extent-1em { height: auto; width: 1.00em; } +.vrtl .extent-1em25, .hltr .vrtl .extent-1em25 { height: auto; width: 1.25em; } +.vrtl .extent-1em50, .hltr .vrtl .extent-1em50 { height: auto; width: 1.50em; } +.vrtl .extent-1em75, .hltr .vrtl .extent-1em75 { height: auto; width: 1.75em; } +.vrtl .extent-2em, .hltr .vrtl .extent-2em { height: auto; width: 2.00em; } +.vrtl .extent-2em50, .hltr .vrtl .extent-2em50 { height: auto; width: 2.50em; } +.vrtl .extent-3em, .hltr .vrtl .extent-3em { height: auto; width: 3.00em; } +.vrtl .extent-4em, .hltr .vrtl .extent-4em { height: auto; width: 4.00em; } +.vrtl .extent-5em, .hltr .vrtl .extent-5em { height: auto; width: 5.00em; } +.vrtl .extent-5em25, .hltr .vrtl .extent-5em25 { height: auto; width: 5.25em; } +.vrtl .extent-6em, .hltr .vrtl .extent-6em { height: auto; width: 6.00em; } +.vrtl .extent-7em, .hltr .vrtl .extent-7em { height: auto; width: 7.00em; } +.vrtl .extent-8em, .hltr .vrtl .extent-8em { height: auto; width: 8.00em; } +.vrtl .extent-8em75, .hltr .vrtl .extent-8em75 { height: auto; width: 8.75em; } +.vrtl .extent-9em, .hltr .vrtl .extent-9em { height: auto; width: 9.00em; } +.vrtl .extent-10em, .hltr .vrtl .extent-10em { height: auto; width: 10.00em; } +.vrtl .extent-11em, .hltr .vrtl .extent-11em { height: auto; width: 11.00em; } +.vrtl .extent-12em, .hltr .vrtl .extent-12em { height: auto; width: 12.00em; } +.vrtl .extent-13em, .hltr .vrtl .extent-13em { height: auto; width: 13.00em; } +.vrtl .extent-14em, .hltr .vrtl .extent-14em { height: auto; width: 14.00em; } +.vrtl .extent-15em, .hltr .vrtl .extent-15em { height: auto; width: 15.00em; } +.vrtl .extent-20em, .hltr .vrtl .extent-20em { height: auto; width: 20.00em; } +.vrtl .extent-30em, .hltr .vrtl .extent-30em { height: auto; width: 30.00em; } +.vrtl .extent-40em, .hltr .vrtl .extent-40em { height: auto; width: 40.00em; } + + +/* 【論理方向指定】行幅方向の最大サイズ +---------------------------------------------------------------- */ +.max-extent-none { max-height: none; max-width: none; } + +/* %指定 */ +/* 横組み用 */ +.hltr .max-extent-010per, .vrtl .hltr .max-extent-010per { max-height: 10%; max-width: none; } +.hltr .max-extent-020per, .vrtl .hltr .max-extent-020per { max-height: 20%; max-width: none; } +.hltr .max-extent-025per, .vrtl .hltr .max-extent-025per { max-height: 25%; max-width: none; } +.hltr .max-extent-030per, .vrtl .hltr .max-extent-030per { max-height: 30%; max-width: none; } +.hltr .max-extent-033per, .vrtl .hltr .max-extent-033per { max-height: 33%; max-width: none; } +.hltr .max-extent-040per, .vrtl .hltr .max-extent-040per { max-height: 40%; max-width: none; } +.hltr .max-extent-050per, .vrtl .hltr .max-extent-050per { max-height: 50%; max-width: none; } +.hltr .max-extent-060per, .vrtl .hltr .max-extent-060per { max-height: 60%; max-width: none; } +.hltr .max-extent-067per, .vrtl .hltr .max-extent-067per { max-height: 67%; max-width: none; } +.hltr .max-extent-070per, .vrtl .hltr .max-extent-070per { max-height: 70%; max-width: none; } +.hltr .max-extent-075per, .vrtl .hltr .max-extent-075per { max-height: 75%; max-width: none; } +.hltr .max-extent-080per, .vrtl .hltr .max-extent-080per { max-height: 80%; max-width: none; } +.hltr .max-extent-090per, .vrtl .hltr .max-extent-090per { max-height: 90%; max-width: none; } +.hltr .max-extent-100per, .vrtl .hltr .max-extent-100per { max-height: 100%; max-width: none; } +/* 縦組み用 */ +.vrtl .max-extent-010per, .hltr .vrtl .max-extent-010per { max-height: none; max-width: 10%; } +.vrtl .max-extent-020per, .hltr .vrtl .max-extent-020per { max-height: none; max-width: 20%; } +.vrtl .max-extent-025per, .hltr .vrtl .max-extent-025per { max-height: none; max-width: 25%; } +.vrtl .max-extent-030per, .hltr .vrtl .max-extent-030per { max-height: none; max-width: 30%; } +.vrtl .max-extent-033per, .hltr .vrtl .max-extent-033per { max-height: none; max-width: 33%; } +.vrtl .max-extent-040per, .hltr .vrtl .max-extent-040per { max-height: none; max-width: 40%; } +.vrtl .max-extent-050per, .hltr .vrtl .max-extent-050per { max-height: none; max-width: 50%; } +.vrtl .max-extent-060per, .hltr .vrtl .max-extent-060per { max-height: none; max-width: 60%; } +.vrtl .max-extent-067per, .hltr .vrtl .max-extent-067per { max-height: none; max-width: 67%; } +.vrtl .max-extent-070per, .hltr .vrtl .max-extent-070per { max-height: none; max-width: 70%; } +.vrtl .max-extent-075per, .hltr .vrtl .max-extent-075per { max-height: none; max-width: 75%; } +.vrtl .max-extent-080per, .hltr .vrtl .max-extent-080per { max-height: none; max-width: 80%; } +.vrtl .max-extent-090per, .hltr .vrtl .max-extent-090per { max-height: none; max-width: 90%; } +.vrtl .max-extent-100per, .hltr .vrtl .max-extent-100per { max-height: none; max-width: 100%; } + +/* 文字数指定 */ +/* 横組み用 */ +.hltr .max-extent-0em25, .vrtl .hltr .max-extent-0em25 { max-height: 0.25em; max-width: none; } +.hltr .max-extent-0em50, .vrtl .hltr .max-extent-0em50 { max-height: 0.50em; max-width: none; } +.hltr .max-extent-0em75, .vrtl .hltr .max-extent-0em75 { max-height: 0.75em; max-width: none; } +.hltr .max-extent-1em, .vrtl .hltr .max-extent-1em { max-height: 1.00em; max-width: none; } +.hltr .max-extent-1em25, .vrtl .hltr .max-extent-1em25 { max-height: 1.25em; max-width: none; } +.hltr .max-extent-1em50, .vrtl .hltr .max-extent-1em50 { max-height: 1.50em; max-width: none; } +.hltr .max-extent-1em75, .vrtl .hltr .max-extent-1em75 { max-height: 1.75em; max-width: none; } +.hltr .max-extent-2em, .vrtl .hltr .max-extent-2em { max-height: 2.00em; max-width: none; } +.hltr .max-extent-2em50, .vrtl .hltr .max-extent-2em50 { max-height: 2.50em; max-width: none; } +.hltr .max-extent-3em, .vrtl .hltr .max-extent-3em { max-height: 3.00em; max-width: none; } +.hltr .max-extent-4em, .vrtl .hltr .max-extent-4em { max-height: 4.00em; max-width: none; } +.hltr .max-extent-5em, .vrtl .hltr .max-extent-5em { max-height: 5.00em; max-width: none; } +.hltr .max-extent-5em25, .vrtl .hltr .max-extent-5em25 { max-height: 5.25em; max-width: none; } +.hltr .max-extent-6em, .vrtl .hltr .max-extent-6em { max-height: 6.00em; max-width: none; } +.hltr .max-extent-7em, .vrtl .hltr .max-extent-7em { max-height: 7.00em; max-width: none; } +.hltr .max-extent-8em, .vrtl .hltr .max-extent-8em { max-height: 8.00em; max-width: none; } +.hltr .max-extent-8em75, .vrtl .hltr .max-extent-8em75 { max-height: 8.75em; max-width: none; } +.hltr .max-extent-9em, .vrtl .hltr .max-extent-9em { max-height: 9.00em; max-width: none; } +.hltr .max-extent-10em, .vrtl .hltr .max-extent-10em { max-height: 10.00em; max-width: none; } +.hltr .max-extent-11em, .vrtl .hltr .max-extent-11em { max-height: 11.00em; max-width: none; } +.hltr .max-extent-12em, .vrtl .hltr .max-extent-12em { max-height: 12.00em; max-width: none; } +.hltr .max-extent-13em, .vrtl .hltr .max-extent-13em { max-height: 13.00em; max-width: none; } +.hltr .max-extent-14em, .vrtl .hltr .max-extent-14em { max-height: 14.00em; max-width: none; } +.hltr .max-extent-15em, .vrtl .hltr .max-extent-15em { max-height: 15.00em; max-width: none; } +.hltr .max-extent-20em, .vrtl .hltr .max-extent-20em { max-height: 20.00em; max-width: none; } +.hltr .max-extent-30em, .vrtl .hltr .max-extent-30em { max-height: 30.00em; max-width: none; } +.hltr .max-extent-40em, .vrtl .hltr .max-extent-40em { max-height: 40.00em; max-width: none; } +/* 縦組み用 */ +.vrtl .max-extent-0em25, .hltr .vrtl .max-extent-0em25 { max-height: none; max-width: 0.25em; } +.vrtl .max-extent-0em50, .hltr .vrtl .max-extent-0em50 { max-height: none; max-width: 0.50em; } +.vrtl .max-extent-0em75, .hltr .vrtl .max-extent-0em75 { max-height: none; max-width: 0.75em; } +.vrtl .max-extent-1em, .hltr .vrtl .max-extent-1em { max-height: none; max-width: 1.00em; } +.vrtl .max-extent-1em25, .hltr .vrtl .max-extent-1em25 { max-height: none; max-width: 1.25em; } +.vrtl .max-extent-1em50, .hltr .vrtl .max-extent-1em50 { max-height: none; max-width: 1.50em; } +.vrtl .max-extent-1em75, .hltr .vrtl .max-extent-1em75 { max-height: none; max-width: 1.75em; } +.vrtl .max-extent-2em, .hltr .vrtl .max-extent-2em { max-height: none; max-width: 2.00em; } +.vrtl .max-extent-2em50, .hltr .vrtl .max-extent-2em50 { max-height: none; max-width: 2.50em; } +.vrtl .max-extent-3em, .hltr .vrtl .max-extent-3em { max-height: none; max-width: 3.00em; } +.vrtl .max-extent-4em, .hltr .vrtl .max-extent-4em { max-height: none; max-width: 4.00em; } +.vrtl .max-extent-5em, .hltr .vrtl .max-extent-5em { max-height: none; max-width: 5.00em; } +.vrtl .max-extent-5em25, .hltr .vrtl .max-extent-5em25 { max-height: none; max-width: 5.25em; } +.vrtl .max-extent-6em, .hltr .vrtl .max-extent-6em { max-height: none; max-width: 6.00em; } +.vrtl .max-extent-7em, .hltr .vrtl .max-extent-7em { max-height: none; max-width: 7.00em; } +.vrtl .max-extent-8em, .hltr .vrtl .max-extent-8em { max-height: none; max-width: 8.00em; } +.vrtl .max-extent-8em75, .hltr .vrtl .max-extent-8em75 { max-height: none; max-width: 8.75em; } +.vrtl .max-extent-9em, .hltr .vrtl .max-extent-9em { max-height: none; max-width: 9.00em; } +.vrtl .max-extent-10em, .hltr .vrtl .max-extent-10em { max-height: none; max-width: 10.00em; } +.vrtl .max-extent-11em, .hltr .vrtl .max-extent-11em { max-height: none; max-width: 11.00em; } +.vrtl .max-extent-12em, .hltr .vrtl .max-extent-12em { max-height: none; max-width: 12.00em; } +.vrtl .max-extent-13em, .hltr .vrtl .max-extent-13em { max-height: none; max-width: 13.00em; } +.vrtl .max-extent-14em, .hltr .vrtl .max-extent-14em { max-height: none; max-width: 14.00em; } +.vrtl .max-extent-15em, .hltr .vrtl .max-extent-15em { max-height: none; max-width: 15.00em; } +.vrtl .max-extent-20em, .hltr .vrtl .max-extent-20em { max-height: none; max-width: 20.00em; } +.vrtl .max-extent-30em, .hltr .vrtl .max-extent-30em { max-height: none; max-width: 30.00em; } +.vrtl .max-extent-40em, .hltr .vrtl .max-extent-40em { max-height: none; max-width: 40.00em; } + + diff --git a/docs/style/style-ascii-dwango.css b/docs/style/style-ascii-dwango.css new file mode 100755 index 0000000..f4f0c51 --- /dev/null +++ b/docs/style/style-ascii-dwango.css @@ -0,0 +1,1126 @@ +@charset "UTF-8"; + +/* +Ascii-Dwango customized e-pub style +---------------------------------------------------------------- */ +@page { margin: 1em 2em; } +body { margin: 5%; text-align: justify; font-size: 100%; } + +/* 見出し +---------------------------------------------------------------- */ +/* 部: part */ +h1{ + font-size: 180%; margin-top: 15pt; margin-bottom: 12pt; + font-weight: bold; text-align: center; + page-break-after: avoid; + color: #06287e; +} +/* 章: section */ +h2{ + font-size: 180%; margin-top: 15pt; margin-bottom: 25pt; + font-weight: bold; text-align: left; + break-after: avoid; + color: #06287e; +} +/* 節: subsection */ +h3{ + font-size: 120%; margin-top: 20pt; margin-bottom: 0pt; + font-weight: bold; text-align: left; + break-after: avoid; + color: #06287e; + text-indent: -2em; margin-left: 2em; +} +/* 項: subsubsection */ +h4{ + font-size: 100%; margin-top: 15pt; margin-bottom: 0pt; + font-weight: bold; text-align: left; + break-after: avoid; + color: #06287e; + text-indent: -2em; margin-left: 2em; +} +/* 小項 */ +h5{ + font-size: 95%; margin-top: 12pt; margin-bottom: 0pt; + font-weight: bold; text-align: left; + break-after: avoid; + color: #06287e; + text-indent: -2em; margin-left: 2em; +} +/* 小小項 */ +h6{ + font-size: 100%; margin-top: 9pt; margin-bottom: 0pt; + font-weight: bold; text-align: left; + break-after: avoid; + color: #06287e; + text-indent: -2em; margin-left: 2em; +} +/* section */ +section{ break-before: avoid; break-after: avoid; } +/* 見出しの泣き別れを避ける */ +.heading{ break-before: avoid; break-after: avoid; } + +/* Info +---------------------------------------------------------------- */ +.cover{ + margin-top: 2pt; margin-bottom: 2pt; text-align: center; +} +.maintitle{ + margin-top: 100pt; margin-bottom: 10pt; text-align: left; + font-size: 180%; font-weight: bold; + font-family: sans-serif-ja, sans-serif; + break-after: avoid; +} +.subtitle{ + margin-top: 5pt; margin-bottom: 10pt; text-align: left; + font-size: 120%; + break-after: avoid; +} +.edition{ + margin-top: 15pt; margin-bottom: 15pt; text-align: left; +} +.author{ + margin-top: 150pt; margin-bottom: 15pt; text-align: right; + font-weight: bold; +} +.publisher{ + margin-top: 200pt; margin-bottom: 2pt; text-align: right; +} +.address{ + margin-top: 30pt; margin-bottom: 4pt; text-align: left; +} +.copy{ + margin-top: 15pt; margin-bottom: 4pt; + font-size: 90%; +} +.ex-title{ + margin-top: 9pt; margin-bottom: 8pt; text-align: left; + font-weight: bold; + font-family: sans-serif-ja, sans-serif; + break-after: avoid; +} + +/* Table Of Contents +---------------------------------------------------------------- */ +.toc-part{ + margin-top: 14pt; margin-bottom: 5pt; + text-indent: 0.002pt; + text-align: left; +} +.toc-chapter{ + margin-top: 10pt; margin-bottom: 5pt; + text-indent: 0.002pt; + text-align: left; +} +.toc-section{ + margin-top: 5pt; margin-bottom: 4pt; + text-indent: 0.002pt; + text-align: left; +} +.toc-section1{ + margin-top: 4pt; margin-bottom: 4pt; margin-left: 20pt; + text-align: left; +} +.toc-section11{ + margin-top: 4pt; margin-bottom: 4pt; margin-left: 14pt; + text-align: left; +} +.toc-section2{ + margin-top: 4pt; margin-bottom: 4pt; margin-left: 52pt; + text-align: left; +} +.toc-section21{ + margin-top: 4pt; margin-bottom: 4pt; margin-left: 46pt; + text-align: left; +} + +/* Footnote +---------------------------------------------------------------- */ +.footnote{ + margin-top: 4pt; margin-bottom: 8pt; + margin-left: 8em; text-indent: -1em; + font-size: 0.8em; +} +.footnotes{ + margin-top: 4pt; margin-bottom: 4pt; + font-size: 0.88em; +} + +/* Index +---------------------------------------------------------------- */ +.index{ + font-size: 0.8em; +} +.indexmain{ + margin-top: 2pt; margin-bottom: 2pt; + text-align: left; text-indent: 0.024pt; + font-size: 0.88em; +} +.indexmain1{ + margin-top: 14pt; margin-bottom: 2pt; + text-align: left; text-indent: 0.024pt; + font-size: 0.88em; +} +.indexsub{ + margin-top: 2pt; margin-bottom: 2pt; + margin-left: 25pt; + text-align: left; + font-size: 0.88em; +} + +/* 強調 +---------------------------------------------------------------- */ +span.k{/* ゴシック */ + font-family: sans-serif-ja, sans-serif; + font-style: normal; +} +span.kb{/* 太ゴシック */ + font-family: sans-serif-ja, sans-serif; + font-style: normal; font-weight: bold; +} +span.it{/* イタリック */ + font-style: italic; +} +span.bl{/* イタリックボールド */ + font-style: normal; font-weight: bold; +} +span.link{/* リンク */ + color: #06287e; +} +a.footnote-ref{/* 脚注 */ + vertical-align: super; +} +/* ml font */ +span.b { font-style: normal; font-weight: bold; } +span.tvr { font-family: sans-serif-ja, sans-serif; font-style: italic; } +span.cd { font-family: sans-serif-ja, sans-serif; font-style: normal; } +span.id { font-family: sans-serif-ja, sans-serif; font-style: normal; } +span.kw { font-family: sans-serif-ja, sans-serif; font-style: normal; font-weight: bold; text-transform: lowercase; font-size: 90%;} +span.sc { font-family: sans-serif-ja, sans-serif; font-variant-caps: small-caps; } +span.vr { font-family: sans-serif-ja, sans-serif; font-style: italic; } +span.con { font-family: sans-serif-ja, sans-serif; font-variant-caps: small-caps; } +span.tcon { font-family: sans-serif-ja, sans-serif; font-style: normal; font-variant-caps: small-caps; } +span.modsc { font-family: Courier; } +span.errmsg { font-family: Courier; } + +/* フォントサイズ +---------------------------------------------------------------- */ +span.fontsmall { font-size: 75%; } +span.fonttiny { font-size: 65%; } + +/* 数式 +---------------------------------------------------------------- */ +span.f{/* Italic */ + font-family: Georgia; + font-style: italic; + margin-left: 1pt; margin-right: 1pt; +} +span.fb{/* Italic, bold */ + font-family: Georgia; + font-style: italic; font-weight: bold; + margin-left: 1pt; margin-right: 1pt; +} +span.r{/* Regular */ + font-family: Georgia; + font-style: normal; + margin-left: 1pt; margin-right: 1pt; +} +span.sum{/* Symbol, sum */ + font-style: normal; + font-size: 160%; + vertical-align: middle; + margin-left: 0pt; margin-right: 0pt; +} +span.cup{/* Symbol, cup */ + font-style: normal; + font-size: 190%; + vertical-align: middle; + margin-left: 0pt; margin-right: 0pt; +} + +/* 2倍ダーシ ―― +---------------------------------------------------------------- */ +span.emdash { letter-spacing:-.2em; width:2em; margin-left:.5em; margin-right:.5em; } + +/* Text Indentation +---------------------------------------------------------------- */ +/* Indent */ +.in { text-indent: 1em; } +.ih { text-indent: 0.5em; } +/* No-Indent */ +.ni { text-indent: 0em; } + +/* Indent: words */ +.i1w { margin-left: 1em; } +.i2w { margin-left: 2em; } +.i3w { margin-left: 3em; } +.i4w { margin-left: 4em; } +/* Indent: index */ +.in2 { text-indent: 2em; } +.in4 { text-indent: 4em; } +/* Indent: hangindent */ +.hangindent { text-indent: -1em; margin-left: 1em; } +.hangindentl { text-indent: -1em; margin-left: 2em; } +.hangalpha { text-indent: -2em; margin-left: 4em; } +.hangcase { text-indent: -3em; margin-left: 3em; } + +/* chapter title */ +span.chap-title{ + font-size: 120%; font-weight: bold; font-style: italic; + font-family: Georgia; color: #979393; +} +span.chap-num{ + font-size: 200%; font-weight: bold; font-style: italic; + font-family: Georgia; color: #979393; + margin-left: 4px; +} + +/* description */ +div.description{ + margin-top: 1.5em; margin-bottom: 1.5em; padding-left: 1em; +} +p.ditem{ + text-indent: 0em; + font-family: sans-serif-ja, sans-serif; font-style: normal; +} +p.din{ + margin-left: 2em; + text-indent: 1em; +} +p.dni{ + margin-left: 2em; + text-indent: 0em; +} + +/* horizontal line */ +hr.chap-hr{ + border-top: 4px solid; + border-color: #979393; +} +hr.hr-gray{ + border-top: 2px solid; + border-color: #979393; +} +hr.hr-blue{ + border-top: 2px solid; + border-color: #0000BB; +} +hr.hr-green{ + border-top: 2px solid; + border-color: #006600; +} + +/* Interview */ +.hang-interview{ + text-indent: -2em; margin-left: 2em; +} +p.iin{ + margin-left: 2em; + text-indent: 1em; +} + +/* Cover page +---------------------------------------------------------------- */ +ul.cover { + display: flex; + justify-content: space-around; + list-style: none; + text-align: center; +} +ul.cover li { + width: 40%; +} +ul.cover img { + width: 80%; +} + +/* Division +---------------------------------------------------------------- */ +div.blockquote{/* 引用 */ + margin-top: 1.0em; margin-bottom: 1.0em; + margin-left: 2em; +} +/* column */ +div.column{/* column, body */ + margin-top: 1.5em; margin-bottom: 1.5em; + padding-left: 2em; padding-right: 2em; padding-top: 4pt; padding-bottom: 4pt; + border:solid 1px #000000; + -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; background-color: #F2F2F2; +} +p.column-title{/* column, title */ + font-family: sans-serif-ja, sans-serif; + font-weight: bold; + padding-top: 4pt; padding-bottom: 4pt; +} +/* newlead */ +div.newlead{ + margin-top: 1.5em; margin-bottom: 1.5em; + padding-left: 1em; padding-right: 1em; padding-top: 4pt; padding-bottom: 4pt; + border:solid 1px #000000; + -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; background-color: #F2F2F2; +} +/* lead */ +div.lead{ + margin-top: 1.5em; margin-bottom: 1.5em; + padding-left: 1.5em; padding-right: 1.5em; padding-top: 4pt; padding-bottom: 4pt; + font-family: sans-serif-ja, sans-serif; + font-style: normal; + background-color: #F2F2F2; +} + +/* Note */ +div.note { margin-top: 12pt; margin-bottom: 20pt; font-size: 85%; break-before: avoid; break-after: avoid; break-inside: avoid; } + +/* Enumerate */ +div.enum { margin-top: 10pt; margin-bottom: 10pt; } + + +/* List +---------------------------------------------------------------- */ +/* none */ +ul{ + margin-top: 0.5em; + margin-bottom: 0.5em; +} +ul.none{ + list-style: none; + padding-left: 2em; +} +/* parentheses */ +ol.list_parentheses{ + padding:0 0 0 2em; margin:0; + margin-top: 0.5em; margin-bottom: 0.5em; +} +ol.list_parentheses li{ + list-style-type:none; list-style-position:inside; + counter-increment: cnt; + text-indent:-1.5em; margin-left:1em; +} +ol.list_parentheses li:before{ + display: marker; + content: "(" counter(cnt) ") "; +} +/* ul left 1em */ +ul.left{ + margin-left: 2em; + padding-left: 0em; +} +/* minus */ +.minus{ padding-left: 2em; list-style-type: "− "; } +/* circle */ +.circle{ padding-left: 2em; list-style-type: circle; } +/* ref */ +.ref{ padding-left: 1em; } +/* loweralpha */ +ol.liststyletype_loweralpha{ + list-style-type: lower-alpha; + padding-left: 4em; padding-right: 1em; +} +/* num */ +div.listnum{ + margin-top: 0.5em; margin-bottom: 0.5em; + margin-left: 2em; +} + +/* Border +---------------------------------------------------------------- */ +.bordersource{ + margin-top: 4pt; margin-bottom: 4pt; + border-top: solid 1px #000000; border-bottom: solid 1px #000000; +} +.borderconsole{ + margin-top: 0.5em; margin-bottom: 0.5em; + border:solid 1px #000000; + -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; +} +.borderterminal{ + margin-top: 0.5em; margin-bottom: 0.5em; + padding: 2px 0em; + border:solid 1px #000000; + -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; +} +.bordergrammar{ + margin-top: 10pt; margin-bottom: 10pt; + padding: 2px 0em; + border:solid 1px #000000; + background-color: #EEEEEE; +} +.borderfigure{ + margin-top: 4pt; margin-bottom: 4pt; + border: solid 1px #000000; + padding-left: 1em; +} +.borderlist{ + margin-top: 1.0em; margin-bottom: 1.0em; + border:solid 1px #000000; + padding-right: 1em; + background-color: #EEEEEE; + -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; +} + +/* Program list +---------------------------------------------------------------- */ +code{ + font-family: Courier; + font-size: 100%; +} +pre{ + padding-left: 2em; padding-right: 2em; + padding-top: 0pt; padding-bottom: 0pt; + margin-top: 0.5em; margin-bottom: 0.5em; + font-family: Courier; + font-size: 95%; font-style: normal; + line-height: 150%; + white-space: pre-wrap; +} +pre.tabbing{ + margin: 0 auto 0 0; + line-height: 1.75; + font-family: serif-ja, serif; + padding-left: 0em; padding-right: 0em; + font-size: 100%; font-style: normal; +} +pre span.kwd{ + color: #3366CC; +} +pre span.cmt{ + color: #993333; +} +pre span.str{ + color: #006633; +} +pre span.mcm{ + color: #9933CC; +} +div.plist{/* Program list */ + margin-top: 0.5em; margin-bottom: 0.5em; + break-before: avoid; break-after: avoid; + padding-left: 0em; +} +div.plistc{/* Program list, caption */ + margin-top: 1.5em; margin-bottom: 1.5em; + break-before: avoid; break-after: avoid; + padding-left: 0em; +} +div.plistd{/* Program list, description */ + margin-top: 0.5em; margin-bottom: 0.5em; + break-before: avoid; break-after: avoid; + padding-left: 2em; +} +p.lst-caption{/* Program list caption */ + margin-left: 0em; padding-left: 1em; + margin-top: 4pt; margin-bottom: 2pt; + font-family: sans-serif-ja, sans-serif; font-style: normal; + font-size: 85%; text-align: left; + break-before: avoid; break-after: avoid; + background-color: #545252; color: white; +} + + +/* Caption +---------------------------------------------------------------- */ +/* other */ +.caption { font-family: sans-serif-ja, sans-serif; font-style: normal; margin-top: 10pt; margin-bottom: 10pt; font-size: 85%; text-align: center; break-before: avoid; break-after: avoid; } +.filename { font-family: sans-serif-ja, sans-serif; font-style: italic; margin-top: 4pt; margin-bottom: 10pt; font-size: 85%; text-align: right; break-before: avoid; break-after: avoid; } + +/* Text position +---------------------------------------------------------------- */ +/* 下線 */ +.underline{ text-decoration: underline; } +/* 中央 */ +.center { text-align: center; } +.center-border { text-align: center; border: thin solid #000000; } +/* 右寄せ */ +.right { text-align: right; } +/* 左寄せ */ +.left { text-align: left; margin-left: 4em; } +/* 両端揃え */ +.lleft { text-align: left; float: left; } +.lright { text-align: right; } + +/* Navigation +---------------------------------------------------------------- */ +/* パンくずリスト */ +.navigation-top { font-family: sans-serif-ja, sans-serif; font-style: normal; font-size: 85%;} +/* 右寄せ */ +.navigation-right { text-align: right; font-family: sans-serif-ja, sans-serif; font-style: normal; font-size: 85%;} + +/* Text color +---------------------------------------------------------------- */ +.gray { color: #C0C0C0; } + + +/* Equation +---------------------------------------------------------------- */ +.eqnParent { display: table; width: 100%; margin-top: 8pt; margin-bottom: 8pt; } +.eqnEqn { display: table-cell; text-align: center; } +.eqnEqnl { display: table-cell; text-align: left; } +.eqnNum { display: table-cell; text-align: right; vertical-align:middle; } +.eqnCenter { margin-top: 8pt; margin-bottom: 8pt; text-align: center; } +/* Equation: number */ +table.eqntbl { width: 100%; max-width: 100%; border-collapse: collapse; border-spacing: 0; margin-top: 8pt; margin-bottom: 8pt; border: none; } +table.eqntbl td { padding: 0px 0px; font-size: 100%; vertical-align: middle; white-space: normal; } +table.eqntbl tr td:first-child { width: 90%; text-align: center; } +table.eqntbl tr td:last-child { width: 10%; text-align: right; } + +/* Image and Figure +---------------------------------------------------------------- */ +/* Figure */ +div.fig{ + margin-top: 1.5em; margin-bottom: 1.5em; + text-align: center; + break-inside: avoid; +} +div.figconsole{ + margin-top: 1.5em; margin-bottom: 1.5em; + text-align: left; + break-inside: avoid; +} +p.fig-caption{/* caption */ + margin-top: 4pt; margin-bottom: 2pt; + margin-left: 0em; padding-left: 1em; + font-family: sans-serif-ja, sans-serif; font-style: normal; + font-size: 85%; text-align: left; + background-color: #545252; color: white; + break-before: avoid; break-after: avoid; +} + +/* Image */ +div.image img { max-width: 99%; max-height: 99%; } + +img { text-indent: 0pt; } +img.icon { width: 1.4em; height: 1.6em; margin-top: 0.5em; margin-left: 0.8em; float: right; } +img.middleicon { vertical-align: middle; width: 1.4em; height: 1.4em; } + +.image img { margin-top: 10pt; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; } +.image10 img { width: 10%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image15 img { width: 15%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image20 img { width: 20%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image25 img { width: 25%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image30 img { width: 30%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image35 img { width: 35%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image40 img { width: 40%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image50 img { width: 50%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image60 img { width: 60%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image70 img { width: 70%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image80 img { width: 80%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image90 img { width: 90%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image100 img { width: 100%; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } + +.image200 img { width: 200px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image300 img { width: 300px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image350 img { width: 350px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image400 img { width: 400px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image450 img { width: 450px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image500 img { width: 500px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image600 img { width: 600px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image700 img { width: 700px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } +.image800 img { width: 800px; height: auto; margin-left: 0em; margin-right: 0em; text-align: center; break-inside: avoid; object-fit: contain; } + +.middle img { vertical-align: middle; } +.middle10 img { height: 1.0em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle12 img { height: 1.2em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle14 img { height: 1.4em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle15 img { height: 1.5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle16 img { height: 1.6em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle18 img { height: 1.8em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle20 img { height: 2em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle24 img { height: 2.4em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle25 img { height: 2.5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle30 img { height: 3em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle35 img { height: 3.5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle40 img { height: 4em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle45 img { height: 4.5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle50 img { height: 5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle55 img { height: 5.5em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle60 img { height: 6em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle70 img { height: 7em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle80 img { height: 8em; width: auto; vertical-align: middle; text-align: center; object-fit: contain;} +.middle90 img { height: 9em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle100 img { height: 10em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle110 img { height: 11em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle120 img { height: 12em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle130 img { height: 13em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle140 img { height: 14em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle150 img { height: 15em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle160 img { height: 16em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle170 img { height: 17em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle180 img { height: 18em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle190 img { height: 19em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle200 img { height: 20em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle210 img { height: 21em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle220 img { height: 22em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle230 img { height: 23em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle240 img { height: 24em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle250 img { height: 25em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle260 img { height: 26em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle270 img { height: 27em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle280 img { height: 28em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle290 img { height: 29em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle300 img { height: 30em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle310 img { height: 31em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } +.middle320 img { height: 32em; width: auto; vertical-align: middle; text-align: center; object-fit: contain; } + +/* Table +---------------------------------------------------------------- */ +div.table {/* Table */ + margin-top: 1.5em; margin-bottom: 1.5em; + break-before: avoid; break-after: avoid; +} +p.tbl-caption{/* table caption */ + margin-left: 0em; padding-left: 1em; + font-family: sans-serif-ja, sans-serif; font-style: normal; + margin-top: 4pt; margin-bottom: -4pt; + font-size: 85%; + text-align: left; + background-color: #545252; color: white; + break-before: avoid; break-after: avoid; +} +table{/* table, common */ + border-collapse: collapse; border-spacing: 0; + margin-top: 1em; margin-bottom: 1em; + font-family: sans-serif-ja, sans-serif; font-style: normal; + font-size: 85%; + break-inside: avoid; +} + +/* tbl00 */ +table.tbl00 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl00 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; +} +table.tbl00 tr:first-child{ + white-space: nowrap; + border-top: 1px #000000 solid; +} +table.tbl00 tr:last-child{ + border-bottom: 1px #000000 solid; border-right: none; + white-space: wrap; +} + +/* tbl01 */ +table.tbl01 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl01 td { + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl01 tr td:nth-child(odd){ + white-space: nowrap; + background-color: #C0C0C0; +} +table.tbl01 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl02 */ +table.tbl02 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: none; +} +table.tbl02 tr:first-child{ + white-space: nowrap; + background-color: #C0C0C0; +} +table.tbl02 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl03 */ +table.tbl03 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: center; vertical-align: top; + border-left: none; border-right: none; +} +table.tbl03 tr:first-child{ + white-space: nowrap; + background-color: #C0C0C0; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; +} +table.tbl03 tr:last-child{ + white-space: wrap; + border-right: none; border-bottom: 1px #000000 solid; +} + +/* tbl04 */ +table.tbl04 th{ + white-space: nowrap; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; + padding-left: 4pt; padding-right: 4pt; +} +table.tbl04 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl04 tr td:nth-child(odd){ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl04 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl05 */ +table.tbl05 th{ + white-space: nowrap; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; + padding-left: 4pt; padding-right: 4pt; +} +table.tbl05 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: right; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl05 tr td:first-child{ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl05 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl06 */ +table.tbl06 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl06 td{ + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + white-space: normal; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl06 tr td:first-child{ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl06 tr td:nth-child(2){ + white-space: nowrap; + background-color: #EEEEEE; + text-align: center; +} +table.tbl06 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl07 */ +table.tbl07 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl07 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: center; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl07 tr td:first-child{ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl07 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl08 */ +table.tbl08 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl08 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: center; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl08 tr td:nth-child(odd){ + white-space: nowrap; + background-color: #C0C0C0; +} +table.tbl08 tr td:first-child{ + white-space: nowrap; + background-color: #444444; color: #ffffff; + text-align: center; +} +table.tbl08 tr td:nth-child(2){ + white-space: nowrap; + background-color: #666666; color: #ffffff; + text-align: center; +} +table.tbl08 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl09 */ +table.tbl09 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + text-align: center; + font-weight: normal; + border-right: 1px #ffffff solid; border-top: 1px #ffffff solid; +} +table.tbl09 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: center; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl09 tr td:first-child{ + white-space: nowrap; + background-color: #C0C0C0; + text-align: right; +} +table.tbl09 tr td:nth-child(3){ + white-space: nowrap; + background-color: #EEEEEE; + text-align: center; +} +table.tbl09 tr td:nth-child(4){ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl09 tr td:nth-child(6){ + white-space: nowrap; + background-color: #EEEEEE; + text-align: center; +} +table.tbl09 tr td:nth-child(7){ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl09 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl10 */ +table.tbl10 td { + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl10 tr td:nth-child(1){ + white-space: nowrap; + background-color: #C0C0C0; + border-right: none; +} +table.tbl10 tr td:nth-child(2){ + white-space: nowrap; + background-color: #C0C0C0; +} +table.tbl10 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl11 */ +table.tbl11 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + text-align: center; + font-weight: normal; + border-right: 1px #ffffff solid; border-top: 1px #ffffff solid; +} +table.tbl11 td { + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl11 th:nth-child(1){ + white-space: nowrap; + background-color: #000000; color: #ffffff; + border-right: none; +} +table.tbl11 tr td:nth-child(1){ + white-space: nowrap; + background-color: #C0C0C0; + border-right: none; +} +table.tbl11 tr td:nth-child(3){ + white-space: wrap; + background-color: #C0C0C0; +} +table.tbl11 tr td:nth-child(4){ + white-space: wrap; + background-color: #C0C0C0; +} +table.tbl11 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl12 */ +table.tbl12 td{ + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl12 tr:first-child{ + border-top: 1pt solid; +} +table.tbl12 tr:last-child{ + border-bottom: 1pt solid; +} +table.tbl12 tr td:nth-child(1){ + white-space: nowrap; + background-color: #444444; color: #ffffff; + text-align: left; + border-top: none; border-bottom: none; +} +table.tbl12 tr td:nth-child(2){ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl12 tr td:nth-child(4){ + white-space: nowrap; + background-color: #444444; color: #ffffff; + text-align: left; + border-top: none; border-bottom: none; +} +table.tbl12 tr td:nth-child(5){ + white-space: nowrap; + background-color: #C0C0C0; + text-align: center; +} +table.tbl12 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl13 */ +table.tbl13 th{ + white-space: nowrap; + padding-left: 4pt; padding-right: 4pt; + background-color: #000000; color: #ffffff; + font-weight: normal; + border-right: 1px #ffffff solid; +} +table.tbl13 td { + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-top: 1px #000000 solid; border-bottom: 1px #000000 solid; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl13 tr:nth-child(6){ + white-space: nowrap; + border-top: 1px solid; border-bottom: none; +} +table.tbl13 tr:last-child{ + white-space: nowrap; + border-bottom: 1px solid; +} +table.tbl13 tr td:nth-child(1){ + white-space: nowrap; + background-color: #C0C0C0; + border-top: none; border-bottom: none; +} +table.tbl13 tr td:nth-child(3){ + white-space: nowrap; + background-color: #C0C0C0; +} +table.tbl13 tr td:last-child{ + white-space: wrap; + border-right: none; +} + +/* tbl14 */ +table.tbl14 td { + white-space: normal; + padding: 4px 8px; border-width: 0 0 2px 2px; + text-align: left; vertical-align: top; + border-left: none; border-right: 1px #000000 solid; +} +table.tbl14 tr:first-child{ + white-space: nowrap; + border-top: 1px solid; +} +table.tbl14 tr:last-child{ + white-space: nowrap; + border-bottom: 1px solid; +} +table.tbl14 tr:nth-child(odd){ + border-bottom: none; +} +table.tbl14 tr:nth-child(even){ + border-bottom: 1px solid; +} +table.tbl14 tr td:nth-child(1){ + white-space: nowrap; + background-color: #C0C0C0; + border-top: none; border-bottom: none; + border-right: none; +} +table.tbl14 tr td:nth-child(2){ + white-space: nowrap; + background-color: #EEEEEE; + border-bottom: 1px solid; +} +table.tbl14 tr td:last-child{ + white-space: wrap; + border-right: none; + border-bottom: 1px solid; +} diff --git a/docs/style/style-check.css b/docs/style/style-check.css new file mode 100755 index 0000000..04a7288 --- /dev/null +++ b/docs/style/style-check.css @@ -0,0 +1,88 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +チェック用スタイル + +【CSSファイルバージョン】 +ver.1.1.1 + +【当ファイル更新時の電書協EPUB 3 制作ガイドバージョン】 +ver.1.1.3 + +【細目】 +・Windows 用フォント指定 +・チェック用領域 + +【更新履歴】 +2014/11/01 ver.1.1.1 +・「特定RS対策用」指定を削除 + +2012/12/07 ver.1.1.0 +・ファイル更新時の電書協EPUB 3 制作ガイドバージョン表記を追加 + +2012/08/21 ver.1.0b1 +・公開版 +---------------------------------------------------------------- */ + + +/* ------------------------------------------------------------- + * Windows 用フォント指定 + * ------------------------------------------------------------- */ + +/* フォントセット指定 +---------------------------------------------------------------- */ +/* 横組み用 */ +@font-face { + font-family: "serif-ja"; + src: local("MS 明朝"); +} +@font-face { + font-family: "sans-serif-ja"; + src: local("MS ゴシック"); +} +/* 縦組み用 */ +@font-face { + font-family: "serif-ja-v"; + src: local("@MS 明朝"); +} +@font-face { + font-family: "sans-serif-ja-v"; + src: local("@MS ゴシック"); +} + + +/* 組み方向のデフォルトフォント指定 +---------------------------------------------------------------- +@付きフォント指定が不要になるまでは、 +組み方向が変わるとき明朝で上書き(書体を継承しない) +---------------------------------------------------------------- */ +.hltr { font-family: serif-ja, serif; } +.vrtl { font-family: serif-ja-v, serif-ja, serif; } + +/* 組み方向の入れ子対策 */ +.vrtl .hltr { font-family: serif-ja, serif; } +.hltr .vrtl { font-family: serif-ja-v, serif-ja, serif; } + + +/* 書体指定 +---------------------------------------------------------------- */ +/* 横組み用 */ +.hltr .mfont { font-family: serif-ja, serif; } +.hltr .gfont { font-family: sans-serif-ja, sans-serif;} +/* 縦組み用 */ +.vrtl .mfont { font-family: serif-ja-v, serif-ja, serif; } +.vrtl .gfont { font-family: sans-serif-ja-v, sans-serif-ja, sans-serif; } + +/* 組み方向の入れ子対策 */ +/* 縦組み中の横組み用 */ +.vrtl .hltr .mfont { font-family: serif-ja, serif; } +.vrtl .hltr .gfont { font-family: sans-serif-ja, sans-serif; } +/* 横組み中の縦組み用 */ +.hltr .vrtl .mfont { font-family: serif-ja-v, serif-ja, serif; } +.hltr .vrtl .gfont { font-family: sans-serif-ja-v, sans-serif-ja, sans-serif; } + + + diff --git a/docs/style/style-kadokawa.css b/docs/style/style-kadokawa.css new file mode 100755 index 0000000..bd9ea8f --- /dev/null +++ b/docs/style/style-kadokawa.css @@ -0,0 +1,319 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +KADOKAWA リフロー型標準スタイル + +【バージョン】 +ver.1.3.0 + +【細目】 +・既存クラス上書き指定 +・ページ設定 + +【更新履歴】 +2019/09/25 +・奥付のEPUB ファイルバージョン表記指定「.release-version」を追加。 + あわせて上の行のデジタル発行日「.release-date」の margin-top の値を変更 + +・奥付の「連絡先(サポート)情報」に + 注意書き用の「.support-note-01」~「.support-note-04」を追加 + +2018/06/01 ver.1.2.0 +・既存クラス上書きのリンク指定を削除 +・奥付(追加要素)の「.p-colophon2」を追加 + +2017/06/01 ver.1.1.0 +・奥付に「.p-colophon .support」とその配下のクラスを追加 +・ロゴ用クレジット表記は .publisher-data の外に移動(別
となる) +・これまでの奥付との互換用に、今回変更された従来のクラスをファイル末に記載 + +2016/05/01 ver.1.0.1 +・奥付に「.p-colophon .publish-reception」を追加 +・奥付に「.p-colophon .publish-phone-editorial」を追加 + +2015/08/01 ver.1.0.0 +・公開版 +---------------------------------------------------------------- */ + + +/* ------------------------------------------------------------- + * ページ設定 + * ------------------------------------------------------------- */ + + +/* 本扉(標準) +---------------------------------------------------------------- */ +/* ページ全体の設定 */ +.p-titlepage { +} +.p-titlepage .main { + margin: 0 auto 0 auto; + padding: 4em 1em 1.5em 1em; + max-width: 22em; + text-align: center; + line-height: 1.6; +} +/* 作品名 */ +.p-titlepage .book-title { + margin: 0; + padding: 0; +} +.p-titlepage .book-title-before { + margin: 0; + padding: 0; + font-size: 0.85em; +} +.p-titlepage .book-title-main { + margin: 0; + padding: 0; + font-size: 1.5em; +} +.p-titlepage .book-title-after { + margin: 0; + padding: 0; + font-size: 0.85em; +} +.p-titlepage .book-title-demo { + margin: 1.5em 0 0 0; + padding: 0; + font-size: 0.85em; +} +/* 著者名 */ +.p-titlepage .author { + margin: 1.5em 0 3em 0; + padding: 1.5em 0 0 0; + font-size: 0.85em; + border-top: 1px solid black; +} +.p-titlepage .author p { + margin: 0.5em 0 0 0; + padding: 0; +} +/* レーベルロゴ部分 */ +.p-titlepage .label { + margin: 0; + padding: 0.4em 0 0.3em 0; + line-height: 1.2; +} +/* レーベルロゴ部分のロゴ画像 */ +.p-titlepage .label-logo img { + height: 2em; +} +/* レーベルロゴ部分のレーベル名 */ +.p-titlepage .label-name { + margin: 0; + padding: 0; + font-size: 0.75em; + font-family: sans-serif-jp, sans-serif; +} + + +/* 奥付(標準) +---------------------------------------------------------------- */ +/* ページ全体の設定 */ +.p-colophon { +} +.p-colophon .main { + margin: 0 auto 0 auto; + padding: 2em 1em 1em 1em; + max-width: 22em; + text-align: left; + line-height: 1.6; +} +/* 作品名 */ +.p-colophon .book-title { + margin: 0; + padding: 0; +} +.p-colophon .book-title-before { + margin: 0; + padding: 0; + font-size: 0.85em; +} +.p-colophon .book-title-main { + margin: 0; + padding: 0; + font-size: 1.2em; +} +.p-colophon .book-title-after { + margin: 0; + padding: 0; + font-size: 0.85em; +} +/* 著者名 */ +.p-colophon .author { + margin: 0.6em 0 0.9em 0; + padding: 0 0 0.4em 0; + font-size: 0.9em; + border-bottom: 1px solid black; +} +/* レーベルロゴ部分 */ +.p-colophon .label { + margin: 0; + padding: 0 0 0.3em 0; + line-height: 1; +} +/* レーベルロゴ部分のロゴ画像 */ +.p-colophon .label-logo img { + height: 2em; +} +/* レーベルロゴ部分のレーベル名 */ +.p-colophon .label-name { + margin: 0; + padding: 0; + font-size: 0.75em; + font-family: sans-serif-jp, sans-serif; +} +/* デジタル発行日 */ +.p-colophon .release-date { + margin: 1em 0 0 0; + padding: 0; + font-size: 0.8em; +} +/* EPUB ファイルバージョン表記 */ +.p-colophon .release-version { + margin: 0; + padding: 0; + font-size: 0.7em; +} +/* (C)表記 */ +.p-colophon .copyright { + margin: 0.6em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} +/* 制作底本情報 */ +.p-colophon .original-books { + margin: 1em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} +.p-colophon .original-title { + margin: 0.5em 0 0 0; + padding: 0; +} +.p-colophon .original-first-edition { + margin: 0; + padding: 0; +} +.p-colophon .original-used-edition { + margin: 0; + padding: 0; +} +/* 発行者情報 */ +.p-colophon .publisher-data { + margin: 1em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} +.p-colophon .publish-person { + margin: 0; + padding: 0; +} +.p-colophon .publish-company { + margin: 0; + padding: 0; +} +.p-colophon .publish-address { + margin: 0; + padding: 0; +} +/* 連絡先(サポート)情報 */ +.p-colophon .support { + margin: 0.5em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} +.p-colophon .support-phone-editorial { + margin: 0; + padding: 0; +} +.p-colophon .support-desk { + margin: 0; + padding: 0; +} +.p-colophon .support-contact { + margin: 0; + padding: 0; +} +.p-colophon .support-note { + margin: 0; + padding: 0; +} +.p-colophon .support-note-01 { + margin: 0; + padding: 0; +} +.p-colophon .support-note-02 { + margin: 0; + padding: 0; +} +.p-colophon .support-note-03 { + margin: 0; + padding: 0; +} +.p-colophon .support-note-04 { + margin: 0; + padding: 0; +} +/* ロゴ用クレジット表記 */ +.p-colophon .logo-credit { + margin: 2em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} +/* 奥付中の断り書き */ +.p-colophon .kotowarigaki { + margin: 2em 0 0 0; + padding: 0; + font-size: 0.7em; + line-height: 1.0; +} + + +/* 奥付(追加要素) +---------------------------------------------------------------- */ +/* ページ全体の設定 */ +.p-colophon2 { +} +.p-colophon2 .main { + margin: 0 auto 0 auto; + padding: 2em 1em 1em 1em; + max-width: 22em; + text-align: left; + line-height: 1.6; +} + + +/* 旧奥付(リフロー型制作仕様 ver.1.0.1)互換用の連絡先情報 +---------------------------------------------------------------- */ +/* 発行者情報中の連絡先情報 */ +.p-colophon .publish-phone-editorial { + margin: 0; + padding: 0; +} +.p-colophon .publish-phone { + margin: 0; + padding: 0; +} +.p-colophon .publish-reception { + margin: 0; + padding: 0; +} +.p-colophon .publish-url { + margin: 0.5em 0 0 0; + padding: 0; +} +/* ロゴ用クレジット表記 */ +.p-colophon .publish-logo-credit { + margin: 2em 0 0 0; + padding: 0; +} diff --git a/docs/style/style-karc.css b/docs/style/style-karc.css new file mode 100755 index 0000000..481da27 --- /dev/null +++ b/docs/style/style-karc.css @@ -0,0 +1,68 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +KADOKAWA リフロー型共通スタイル + +【バージョン】 +ver.1.1.0 + +【細目】 +・リンク指定 +・ページ別スタイル +・ツール類に自動追加されるスタイル指定等 + +【更新履歴】 +2018/06/01 ver.1.1.0 +・リンク指定「黒文字用」を追加 + +2015/08/01 ver.1.0.0 +・公開版 +---------------------------------------------------------------- */ + + +/* リンク指定 +---------------------------------------------------------------- */ +/* 青文字用 */ +a.link-blue:link { color: #0000ff; } +a.link-blue:visited { color: #0000ff; } +a.link-blue:hover { color: #0000ff; } +a.link-blue:focus { color: #0000ff; } +a.link-blue:active { color: #0000ff; } + +/* 赤文字用 */ +a.link-red:link { color: #ff0000; } +a.link-red:visited { color: #ff0000; } +a.link-red:hover { color: #ff0000; } +a.link-red:focus { color: #ff0000; } +a.link-red:active { color: #ff0000; } + +/* 黒文字用(マウスオーバー時は灰色) */ +a.link-black:link { color: #000000; } +a.link-black:visited { color: #000000; } +a.link-black:hover { color: #696969; } +a.link-black:focus { color: #696969; } +a.link-black:active { color: #696969; } + + +/* 下線[表示] */ +.hltr a.link-line { text-decoration: underline; } +.vrtl a.link-line { text-decoration: overline; } + +/* 下線[非表示] */ +.hltr a.link-noline { text-decoration: none; } +.vrtl a.link-noline { text-decoration: none; } + + +/* ページ別スタイル +---------------------------------------------------------------- */ +/* 電子版断り書き(デジタル追加文言)ページの全体設定 */ +.p-caution { + font-size: 0.9em; +} + + +/* etc +---------------------------------------------------------------- */ \ No newline at end of file diff --git a/docs/style/style-reset.css b/docs/style/style-reset.css new file mode 100755 index 0000000..8498d57 --- /dev/null +++ b/docs/style/style-reset.css @@ -0,0 +1,104 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +CSS リセット + +【CSSファイルバージョン】 +ver.1.2.1 + +【当ファイル更新時の電書協EPUB 3 制作ガイドバージョン】 +ver.1.1.3 + +【細目】 +・css reset + +【更新履歴】 +2014/11/01 ver.1.2.1 +・「-epub(webkit)-text-align-last」を削除 +・「text-underline-position」を「-epub-text-underline-position」に変更 + +2012/12/07 ver.1.2.0 +・ファイル更新時の電書協EPUB 3 制作ガイドバージョン表記を追加 +・「text-underline-position: below left;」の「below」部分を「under」に変更 + +2012/10/29 ver.1.1b1 +・body に text-underline-position を指定 + ※ページ内すべての overline を縦組み時に右線(傍線)、 + underline を左線として設定 + +2012/08/21 ver.1.0b1 +・公開版 +---------------------------------------------------------------- */ + + +/* css reset +---------------------------------------------------------------- */ +body { + margin: 0; + padding: 0; + font-size: 100%; + vertical-align: baseline; + line-height: 1.75; + background: transparent; + + word-spacing: normal; + letter-spacing: normal; + white-space: normal; + word-wrap: break-word; + text-align: justify; + + -webkit-line-break: normal; + -epub-line-break: normal; + + -webkit-word-break: normal; + -epub-word-break: normal; + + -webkit-hyphens: auto; + -epub-hyphens: auto; + + -webkit-text-underline-position: under left; + -epub-text-underline-position: under left; +} +div,p { + display: block; + width: auto; + height: auto; + margin: 0; + padding: 0; +} +body,div,p { + text-indent: 0; +} +body > p, +div > p { + text-indent: inherit; +} +h1,h2,h3,h4,h5,h6 { + display: block; + margin: 0; + padding: 0; + font-size: 100%; + font-weight: inherit; + background: transparent; +} +img { + width: auto; + height: auto; + margin: 0; + padding: 0; + border: none; + vertical-align: baseline; + background: transparent; +} +a { + font-style: inherit; + font-weight: inherit; + text-decoration: inherit; + color: inherit; + background: transparent; +} + + diff --git a/docs/style/style-standard.css b/docs/style/style-standard.css new file mode 100755 index 0000000..df43e78 --- /dev/null +++ b/docs/style/style-standard.css @@ -0,0 +1,1675 @@ +@charset "UTF-8"; + + +/* ファイル情報 +---------------------------------------------------------------- +【内容】 +全作品共通の基本スタイル + +【CSSファイルバージョン】 +ver.1.3.1 + +【当ファイル更新時の電書協EPUB 3 制作ガイドバージョン】 +ver.1.1.3 + +【細目】 +・組み方向指定 +・html指定 +・ボックスの種類 +・改ページ指定 +・行揃え +・ブロック要素の位置揃え +・インライン要素の位置揃え +・リンク指定 +・注釈 +・外字画像 +・画像のページフィット指定 +・縦中横 +・文字の向き +・上付文字・下付文字 +・小書き文字 +・訓点(返り点) +・圏点・傍点 +・行高 +・文字の間隔 +・フォント指定 +・太字 +・斜体 +・文字色 +・背景色 +・文字色の白黒反転 +・圏点・傍点の色指定 +・区切り線 +・打ち消し線 +・傍線 +・囲み罫 +・罫線 +・罫線色 +・行頭インデント +・突き出しインデント(ぶら下がりインデント) +・字下げ・字上げ指定 +・外側の余白(マージン)指定 +・内側の余白(パディング)指定 +・高さ +・高さの最大値 +・幅 +・幅の最大値 +・最大サイズ +・禁則処理のルール +・自動改行のルール +・長い単語の改行ルール +・【参考】回り込み + +【更新履歴】 +2014/11/01 ver.1.3.1 +・「行揃え」の「-epub(webkit)-text-align-last」を削除 +・「縦中横」を修正 +・「文字の向き」の「.upright-1」を修正 +・「文字の向き」の「.sideways」を修正 + +2012/12/07 ver.1.3.0 +・ファイル更新時の電書協EPUB 3 制作ガイドバージョン表記を追加 + +2012/10/29 ver.1.2b1 +・「傍線」を修正 + +2012/10/03 ver.1.1b1 +・「行揃え」の位置揃え用の空白数を調整 +・「文字の向き」の「.sideways」を修正 +・「傍線」を修正 + +2012/08/21 ver.1.0b1 +・公開版 +---------------------------------------------------------------- */ + + + +/* 組み方向指定 +---------------------------------------------------------------- */ +/* 横組み用 */ +html, +.hltr { + -webkit-writing-mode: horizontal-tb; + -epub-writing-mode: horizontal-tb; +} +/* 縦組み用 */ +.vrtl { + -webkit-writing-mode: vertical-rl; + -epub-writing-mode: vertical-rl; +} +/* +.vltr { + -webkit-writing-mode: vertical-lr; + -epub-writing-mode: vertical-lr; +} +*/ + + +/* html指定 +---------------------------------------------------------------- +デフォルトフォントのみ指定 +---------------------------------------------------------------- */ +html { + font-family: serif-ja, serif; +} + + +/* ボックスの種類 +---------------------------------------------------------------- */ +.display-none { + display: none; +} +.display-inline { + display: inline; +} +.display-inline-block { + display: inline-block; +} +.display-block { + display: block; +} + + +/* 改ページ指定 +---------------------------------------------------------------- +端末の処理能力等に配慮する意味もあり、 +改ページは、原則としてファイルを替えることで実現する + +ただし、ページ全体のスタイル指定の変更が不要で、 +かつページ数が少ない場合は、ファイル数の増加を防ぐため、 +下記の指定を利用する可能性もある(短い随筆やコラム的な文章の連続など) +---------------------------------------------------------------- */ +/* 指定したブロックの直後で改ページ */ +.pagebreak { + page-break-after: always; +} +/* 指定したブロックの直前で改ページ */ +.pagebreak-before { + page-break-before: always; +} +/* 指定したブロックの前後で改ページ */ +.pagebreak-both { + page-break-before: always; + page-break-after: always; +} + + +/* 行揃え +---------------------------------------------------------------- +本文は原則として「text-align: justify;」 +ただし、両端が揃うのが好ましくない場合は手動で以下の「align-start」を利用 +行末まで均等揃えは今回含めない +---------------------------------------------------------------- */ +/* 行頭揃え */ +.align-left, +.align-start { + text-align: left; +} +/* 行中揃え */ +.align-center { + text-align: center; +} +/* 行末揃え */ +.align-right, +.align-end { + text-align: right; +} +/* 両端揃え(行末は行頭揃え) */ +.align-justify { + text-align: justify; +} + + +/* ブロック要素の位置揃え +---------------------------------------------------------------- */ +/* 絶対方向(横組みでは左右、縦組みでは上下方向のみ利用可) */ +.block-align-left { margin: 0 auto 0 0; } +.block-align-center { margin: 0 auto; } +.block-align-right { margin: 0 0 0 auto; } +.block-align-top { margin: 0 0 auto 0; } +.block-align-middle { margin: auto 0; } +.block-align-bottom { margin: auto 0 0 0; } + +/* 論理方向(行頭-行中-行末) */ +/* 横組み用 */ +.hltr .block-align-start { margin: 0 auto 0 0; } +.hltr .block-align-center { margin: 0 auto; } +.hltr .block-align-end { margin: 0 0 0 auto; } + +/* 縦組み用 */ +.vrtl .block-align-start { margin: 0 0 auto 0; } +.vrtl .block-align-center { margin: auto 0; } +.vrtl .block-align-end { margin: auto 0 0 0; } + + +/* インライン要素の位置揃え +---------------------------------------------------------------- */ +.valign-inherit { vertical-align: inherit; } +.valign-baseline { vertical-align: baseline; } +.valign-sub { vertical-align: sub; } +.valign-super { vertical-align: super; } +.valign-top { vertical-align: top; } +.valign-text-top { vertical-align: text-top; } +.valign-middle { vertical-align: middle; } +.valign-bottom { vertical-align: bottom; } +.valign-text-bottom { vertical-align: text-bottom; } + + +/* リンク指定 +---------------------------------------------------------------- */ +/* 基本設定 */ +/* 横組み:下線 縦組み:右線 */ +.hltr a { + text-decoration: underline; +} +.vrtl a { + text-decoration: overline; +} +/* リンク文字色(デフォルトは青) */ +a:link, +a:visited, +a:hover, +a:focus, +a:active { + color: #0000ff; +} + + +/* 注釈 +---------------------------------------------------------------- */ +/* 注釈記号の文字サイズ */ +.key, +.ref { + font-size: smaller; + vertical-align: super; +} + + +/* 外字画像 +---------------------------------------------------------------- */ +img.gaiji, +img.gaiji-line, +img.gaiji-wide { + display: inline-block; + margin: 0; + padding: 0; + border: none; + background: transparent; +} +img.gaiji { + width: 1em; + height: 1em; +} +img.gaiji-line { + width: 1em; + height: auto; +} +img.gaiji-wide { + width: auto; + height: 1em; +} +/* 外字画像のベースライン */ +.hltr img.gaiji, +.hltr img.gaiji-line, +.hltr img.gaiji-wide { + vertical-align: text-bottom; +} +.vrtl img.gaiji, +.vrtl img.gaiji-line, +.vrtl img.gaiji-wide { + vertical-align: baseline; +} + + +/* 画像のページフィット指定 +---------------------------------------------------------------- +「img.fit」を用いること +サイズ指定上書きの都合上、CSS ファイル上では img.fit と記述しない + +

+---------------------------------------------------------------- */ +.fit { + display: inline-block; + page-break-inside: avoid; + max-height: 100%; + max-width: 100%; +} + +/* 画像のベースライン */ +.hltr .fit { + vertical-align: top; +} +.vrtl .fit { + vertical-align: baseline; +} + + +/* 縦中横 +---------------------------------------------------------------- */ +.tcy { + -webkit-text-combine: horizontal; + -webkit-text-combine-upright: all; + text-combine-upright: all; + -epub-text-combine: horizontal; +} + + +/* 文字の向き +---------------------------------------------------------------- +【WebKit対策】半角1文字の直立はセンターが揃わないので縦中横を利用 +---------------------------------------------------------------- */ +.upright-1 { + -webkit-text-combine: horizontal; + -webkit-text-combine-upright: all; + text-combine-upright: all; + -epub-text-combine: horizontal; +} +.upright { + -webkit-text-orientation: upright; + -epub-text-orientation: upright; +} +.sideways { + -webkit-text-orientation: sideways; + -epub-text-orientation: sideways; +} + + +/* 上付文字・下付文字 +---------------------------------------------------------------- */ +/* 上付文字 */ +.super { + font-size: smaller; + vertical-align: super; +} +/* 下付文字 */ +.sub { + font-size: smaller; + vertical-align: sub; +} + + +/* 小書き文字 +---------------------------------------------------------------- +通常の文字を「ぁゃっ」のような小書き文字に見せるための指定 +---------------------------------------------------------------- */ +.kogaki { + font-size: 0.75em; +} +/* 【横組み】左下 */ +.hltr .kogaki { + padding: 0 0.15em 0 0.1em; + vertical-align: baseline; +} +/* 【縦組み】右上 */ +.vrtl .kogaki { + padding: 0.1em 0 0.15em 0; + vertical-align: super; +} + + +/* 訓点(返り点) +---------------------------------------------------------------- +縦組み時、上付・下付文字の上下端のスペースは調整しない +必要があれば、class を上書きすること +---------------------------------------------------------------- */ +/* 記号(縦組みでは左上付) */ +.kunten { + vertical-align: sub; + font-size: 0.67em; +} +/* 送り仮名(縦組みでは右上付) */ +.kunten-okuri { + vertical-align: super; + font-size: 0.67em; +} + + +/* 圏点・傍点 +---------------------------------------------------------------- */ +.em-sesame { + -webkit-text-emphasis-style: filled sesame; + -epub-text-emphasis-style: filled sesame; +} +.em-sesame-open { + -webkit-text-emphasis-style: open sesame; + -epub-text-emphasis-style: open sesame; +} +.em-dot { + -webkit-text-emphasis-style: filled dot; + -epub-text-emphasis-style: filled dot; +} +.em-dot-open { + -webkit-text-emphasis-style: open dot; + -epub-text-emphasis-style: open dot; +} +.em-circle { + -webkit-text-emphasis-style: filled circle; + -epub-text-emphasis-style: filled circle; +} +.em-circle-open { + -webkit-text-emphasis-style: open circle; + -epub-text-emphasis-style: open circle; +} +.em-double-circle { + -webkit-text-emphasis-style: filled double-circle; + -epub-text-emphasis-style: filled double-circle; +} +.em-double-circle-open { + -webkit-text-emphasis-style: open double-circle; + -epub-text-emphasis-style: open double-circle; +} +.em-triangle { + -webkit-text-emphasis-style: filled triangle; + -epub-text-emphasis-style: filled triangle; +} +.em-triangle-open { + -webkit-text-emphasis-style: open triangle; + -epub-text-emphasis-style: open triangle; +} + + +/* 行高 +---------------------------------------------------------------- */ +.line-height-normal { line-height: normal; } +.line-height-1em { line-height: 1.00; } +.line-height-1em50 { line-height: 1.50; } +.line-height-1em75 { line-height: 1.75; } +.line-height-2em { line-height: 2.00; } +.line-height-2em50 { line-height: 2.50; } +.line-height-3em { line-height: 3.00; } +.line-height-3em50 { line-height: 3.50; } +.line-height-4em { line-height: 4.00; } +.line-height-4em50 { line-height: 4.50; } +.line-height-5em { line-height: 5.00; } + + +/* 文字の間隔 +---------------------------------------------------------------- +本文中では四分アキ[25%]刻み以外はなるべく使わない方向で +---------------------------------------------------------------- */ +/* 標準 */ +.lspacing-normal { letter-spacing: normal; } + +/* クリア */ +.lspacing-0, +.lspacing-0em { letter-spacing: 0; } + +/* 文字数指定 */ +.lspacing-0em10 { letter-spacing: 0.10em; } +.lspacing-0em20 { letter-spacing: 0.20em; } +.lspacing-0em25 { letter-spacing: 0.25em; } +.lspacing-0em30 { letter-spacing: 0.30em; } +.lspacing-0em33 { letter-spacing: 0.33em; } +.lspacing-0em40 { letter-spacing: 0.40em; } +.lspacing-0em50 { letter-spacing: 0.50em; } +.lspacing-0em60 { letter-spacing: 0.60em; } +.lspacing-0em67 { letter-spacing: 0.67em; } +.lspacing-0em70 { letter-spacing: 0.70em; } +.lspacing-0em75 { letter-spacing: 0.75em; } +.lspacing-0em80 { letter-spacing: 0.80em; } +.lspacing-0em90 { letter-spacing: 0.90em; } +.lspacing-1em { letter-spacing: 1.00em; } +.lspacing-1em25 { letter-spacing: 1.25em; } +.lspacing-1em50 { letter-spacing: 1.50em; } +.lspacing-1em75 { letter-spacing: 1.75em; } +.lspacing-2em { letter-spacing: 2.00em; } +.lspacing-2em25 { letter-spacing: 2.25em; } +.lspacing-2em50 { letter-spacing: 2.50em; } +.lspacing-2em75 { letter-spacing: 2.75em; } +.lspacing-3em { letter-spacing: 3.00em; } +.lspacing-3em25 { letter-spacing: 3.25em; } +.lspacing-3em50 { letter-spacing: 3.50em; } +.lspacing-3em75 { letter-spacing: 3.75em; } +.lspacing-4em { letter-spacing: 4.00em; } +.lspacing-4em25 { letter-spacing: 4.25em; } +.lspacing-4em50 { letter-spacing: 4.50em; } +.lspacing-4em75 { letter-spacing: 4.75em; } +.lspacing-5em { letter-spacing: 5.00em; } + + +/* フォント指定 +---------------------------------------------------------------- */ +/* 明朝 */ +.hltr .mfont, +.vrtl .mfont { + font-family: serif-ja, serif; +} + +/* ゴシック */ +.hltr .gfont, +.vrtl .gfont { + font-family: sans-serif-ja, sans-serif; +} + +/* フォントサイズ(%指定) */ +.font-050per { font-size: 50%; } +.font-060per { font-size: 60%; } +.font-070per { font-size: 70%; } +.font-075per { font-size: 75%; } +.font-080per { font-size: 80%; } +.font-085per { font-size: 85%; } +.font-090per { font-size: 90%; } +.font-100per { font-size: 100%; } +.font-110per { font-size: 110%; } +.font-115per { font-size: 115%; } +.font-120per { font-size: 120%; } +.font-130per { font-size: 130%; } +.font-140per { font-size: 140%; } +.font-150per { font-size: 150%; } +.font-160per { font-size: 160%; } +.font-170per { font-size: 170%; } +.font-180per { font-size: 180%; } +.font-190per { font-size: 190%; } +.font-200per { font-size: 200%; } +.font-250per { font-size: 250%; } +.font-300per { font-size: 300%; } + + +/* フォントサイズ(文字数指定) */ +.font-0em50 { font-size: 0.50em; } +.font-0em60 { font-size: 0.60em; } +.font-0em70 { font-size: 0.70em; } +.font-0em75 { font-size: 0.75em; } +.font-0em80 { font-size: 0.80em; } +.font-0em85 { font-size: 0.85em; } +.font-0em90 { font-size: 0.90em; } +.font-1em { font-size: 1.00em; } +.font-1em10 { font-size: 1.10em; } +.font-1em15 { font-size: 1.15em; } +.font-1em20 { font-size: 1.20em; } +.font-1em30 { font-size: 1.30em; } +.font-1em40 { font-size: 1.40em; } +.font-1em50 { font-size: 1.50em; } +.font-1em60 { font-size: 1.60em; } +.font-1em70 { font-size: 1.70em; } +.font-1em80 { font-size: 1.80em; } +.font-1em90 { font-size: 1.90em; } +.font-2em { font-size: 2.00em; } +.font-2em50 { font-size: 2.50em; } +.font-3em { font-size: 3.00em; } + + +/* 太字 +---------------------------------------------------------------- */ +/* 太字 */ +.bold { + font-weight: bold; +} +/* 太字解除 */ +.font-weight-normal { + font-weight: normal; +} + + +/* 斜体 +---------------------------------------------------------------- */ +/* 斜体 */ +.italic { + font-style: italic; +} +/* 斜体解除 */ +.font-style-normal { + font-style: normal; +} + + +/* 文字色 +---------------------------------------------------------------- */ +/* 1C用文字色 */ +.color-black { color: #000000; } +.color-dimgray { color: #696969; } +.color-gray { color: #808080; } +.color-darkgray { color: #a9a9a9; } +.color-silver { color: #c0c0c0; } +.color-gainsboro { color: #dcdcdc; } +.color-white { color: #ffffff; } +.color-transparent { color: transparent; } + +/* 基本色 */ +.color-red { color: #ff0000; } +.color-blue { color: #0000ff; } +.color-cyan { color: #00ffff; } +.color-magenta { color: #ff00ff; } +.color-orangered { color: #ff4500; } + + +/* 背景色 +---------------------------------------------------------------- */ +/* 1C用背景色 */ +.bg-black { background-color: #000000; } +.bg-dimgray { background-color: #696969; } +.bg-gray { background-color: #808080; } +.bg-darkgray { background-color: #a9a9a9; } +.bg-silver { background-color: #c0c0c0; } +.bg-gainsboro { background-color: #dcdcdc; } +.bg-white { background-color: #ffffff; } +.bg-transparent { background-color: transparent; } + +/* 基本色 */ +.bg-red { background-color: #ff0000; } +.bg-blue { background-color: #0000ff; } +.bg-cyan { background-color: #00ffff; } +.bg-magenta { background-color: #ff00ff; } +.bg-orangered { background-color: #ff4500; } + + +/* 文字色の白黒反転 +---------------------------------------------------------------- */ +.inverse { + color: #ffffff; + background: #000000; +} + + +/* 圏点・傍点の色指定 +---------------------------------------------------------------- +インラインで .inverse を用いたとき、行間に表示される傍点色が白になり、 +白背景では傍点が見えなくなってしまうことへの対処用 +---------------------------------------------------------------- */ +.em-black { + -webkit-text-emphasis-color: #000000; + -epub-text-emphasis-color: #000000; +} + + +/* 区切り線 +---------------------------------------------------------------- */ +hr { + border-width: 1px; + border-color: #000000; +} +/* 【横組み】水平線 */ +.hltr hr { + margin: 0.5em 0; + border-style: solid none none none; +} +/* 【縦組み】垂直線 */ +.vrtl hr { + margin: 0 0.5em; + border-style: none solid none none; +} + + +/* 打ち消し線 +---------------------------------------------------------------- */ +.line-through { + text-decoration: line-through; +} + + +/* 傍線 +---------------------------------------------------------------- */ +/* 【横組み】下線 【縦組み】右線 */ +.hltr .em-line { + text-decoration: underline; +} +.vrtl .em-line { + text-decoration: overline; +} + +/* 【横組み】上線 【縦組み】左線 */ +.hltr .em-line-outside { + text-decoration: overline; +} +.vrtl .em-line-outside { + text-decoration: underline; +} + + +/* 囲み罫 +---------------------------------------------------------------- +線幅の指定には、罫線と同じものを使用 +---------------------------------------------------------------- */ +/* 上から実線、点線、二重線、破線 */ +.k-solid { border-style: solid solid solid solid; border-width: 1px; border-color: #000000; } +.k-dotted { border-style: dotted dotted dotted dotted; border-width: 2px; border-color: #000000; } +.k-double { border-style: double double double double; border-width: 4px; border-color: #000000; } +.k-dashed { border-style: dashed dashed dashed dashed; border-width: 1px; border-color: #000000; } + +/* 線色付き囲み罫(画像枠などに利用) */ +.k-solid-black { border-style: solid solid solid solid; border-width: 1px; border-color: #000000; } +.k-solid-gray { border-style: solid solid solid solid; border-width: 1px; border-color: #808080; } +.k-solid-silver { border-style: solid solid solid solid; border-width: 1px; border-color: #c0c0c0; } +.k-solid-white { border-style: solid solid solid solid; border-width: 1px; border-color: #ffffff; } + + +/* 罫線 +---------------------------------------------------------------- +線種や線幅など、細かな調整が必要なときは、 +無理に既存のクラスを用いず新たにクラスを作成すること +---------------------------------------------------------------- */ +/* 線種【実線】 */ +.k-solid-top, +.k-solid-right, +.k-solid-bottom, +.k-solid-left, +.k-solid-topbottom, +.k-solid-rightleft { + border-width: 1px; + border-color: #000000; +} +/* 線位置【実線】 */ +.k-solid-top { border-style: solid none none none; } +.k-solid-right { border-style: none solid none none; } +.k-solid-bottom { border-style: none none solid none; } +.k-solid-left { border-style: none none none solid; } +.k-solid-topbottom { border-style: solid none solid none; } +.k-solid-rightleft { border-style: none solid none solid; } + +/* 線種【点線】 */ +.k-dotted-top, +.k-dotted-right, +.k-dotted-bottom, +.k-dotted-left, +.k-dotted-topbottom, +.k-dotted-rightleft { + border-width: 2px; + border-color: #000000; +} +/* 線位置【点線】 */ +.k-dotted-top { border-style: dotted none none none; } +.k-dotted-right { border-style: none dotted none none; } +.k-dotted-bottom { border-style: none none dotted none; } +.k-dotted-left { border-style: none none none dotted; } +.k-dotted-topbottom { border-style: dotted none dotted none; } +.k-dotted-rightleft { border-style: none dotted none dotted; } + +/* 線種【二重線】 */ +.k-double-top, +.k-double-right, +.k-double-bottom, +.k-double-left, +.k-double-topbottom, +.k-double-rightleft { + border-width: 4px; + border-color: #000000; +} +/* 線位置【二重線】 */ +.k-double-top { border-style: double none none none; } +.k-double-right { border-style: none double none none; } +.k-double-bottom { border-style: none none double none; } +.k-double-left { border-style: none none none double; } +.k-double-topbottom { border-style: double none double none; } +.k-double-rightleft { border-style: none double none double; } + +/* 線種【破線】 */ +.k-dashed-top, +.k-dashed-right, +.k-dashed-bottom, +.k-dashed-left, +.k-dashed-topbottom, +.k-dashed-rightleft { + border-width: 1px; + border-color: #000000; +} +/* 線位置【破線】 */ +.k-dashed-top { border-style: dashed none none none; } +.k-dashed-right { border-style: none dashed none none; } +.k-dashed-bottom { border-style: none none dashed none; } +.k-dashed-left { border-style: none none none dashed; } +.k-dashed-topbottom { border-style: dashed none dashed none; } +.k-dashed-rightleft { border-style: none dashed none dashed; } + +/* 線幅 */ +.k-0px { border-width: 0; } +.k-1px { border-width: 1px; } +.k-2px { border-width: 2px; } +.k-3px { border-width: 3px; } +.k-4px { border-width: 4px; } +.k-5px { border-width: 5px; } +.k-6px { border-width: 6px; } +.k-7px { border-width: 7px; } +.k-8px { border-width: 8px; } +.k-thin { border-width: thin; } +.k-medium { border-width: medium; } +.k-thick { border-width: thick; } + +/* 1C用の線色 */ +.k-black { border-color: #000000; } +.k-dimgray { border-color: #696969; } +.k-gray { border-color: #808080; } +.k-darkgray { border-color: #a9a9a9; } +.k-silver { border-color: #c0c0c0; } +.k-gainsboro { border-color: #dcdcdc; } +.k-white { border-color: #ffffff; } + +/* 基本色 */ +.k-red { border-color: #ff0000; } +.k-blue { border-color: #0000ff; } +.k-cyan { border-color: #00ffff; } +.k-magenta { border-color: #ff00ff; } +.k-orangered { border-color: #ff4500; } + + +/* 行頭インデント +---------------------------------------------------------------- */ +.indent-0, +.indent-0em { text-indent: 0; } +.indent-1em { text-indent: 1em; } +.indent-2em { text-indent: 2em; } +.indent-3em { text-indent: 3em; } +.indent-4em { text-indent: 4em; } +.indent-5em { text-indent: 5em; } +.indent-6em { text-indent: 6em; } +.indent-7em { text-indent: 7em; } +.indent-8em { text-indent: 8em; } +.indent-9em { text-indent: 9em; } +.indent-10em { text-indent: 10em; } + + +/* 突き出しインデント(ぶら下がりインデント) +---------------------------------------------------------------- +「h-」は「hanging」の略 +---------------------------------------------------------------- */ +/* 横組み用 */ +.hltr .h-indent-0, +.hltr .h-indent-0em { text-indent: 0; padding-left: 0; } +.hltr .h-indent-1em { text-indent: -1em; padding-left: 1em; } +.hltr .h-indent-2em { text-indent: -2em; padding-left: 2em; } +.hltr .h-indent-3em { text-indent: -3em; padding-left: 3em; } +.hltr .h-indent-4em { text-indent: -4em; padding-left: 4em; } +.hltr .h-indent-5em { text-indent: -5em; padding-left: 5em; } +.hltr .h-indent-6em { text-indent: -6em; padding-left: 6em; } +.hltr .h-indent-7em { text-indent: -7em; padding-left: 7em; } +.hltr .h-indent-8em { text-indent: -8em; padding-left: 8em; } +.hltr .h-indent-9em { text-indent: -9em; padding-left: 9em; } +.hltr .h-indent-10em { text-indent: -10em; padding-left: 10em; } + +/* 縦組み用 */ +.vrtl .h-indent-0, +.vrtl .h-indent-0em { text-indent: 0; padding-top: 0; } +.vrtl .h-indent-1em { text-indent: -1em; padding-top: 1em; } +.vrtl .h-indent-2em { text-indent: -2em; padding-top: 2em; } +.vrtl .h-indent-3em { text-indent: -3em; padding-top: 3em; } +.vrtl .h-indent-4em { text-indent: -4em; padding-top: 4em; } +.vrtl .h-indent-5em { text-indent: -5em; padding-top: 5em; } +.vrtl .h-indent-6em { text-indent: -6em; padding-top: 6em; } +.vrtl .h-indent-7em { text-indent: -7em; padding-top: 7em; } +.vrtl .h-indent-8em { text-indent: -8em; padding-top: 8em; } +.vrtl .h-indent-9em { text-indent: -9em; padding-top: 9em; } +.vrtl .h-indent-10em { text-indent: -10em; padding-top: 10em; } + + +/* 字下げ・字上げ指定 +---------------------------------------------------------------- */ +/* 字下げ:横組み用 */ +.hltr .start-0, +.hltr .start-0em { margin-left: 0; } +.hltr .start-0em25 { margin-left: 0.25em; } +.hltr .start-0em50 { margin-left: 0.50em; } +.hltr .start-0em75 { margin-left: 0.75em; } +.hltr .start-1em { margin-left: 1.00em; } +.hltr .start-1em25 { margin-left: 1.25em; } +.hltr .start-1em50 { margin-left: 1.50em; } +.hltr .start-1em75 { margin-left: 1.75em; } +.hltr .start-2em { margin-left: 2.00em; } +.hltr .start-2em50 { margin-left: 2.50em; } +.hltr .start-3em { margin-left: 3.00em; } +.hltr .start-4em { margin-left: 4.00em; } +.hltr .start-5em { margin-left: 5.00em; } +.hltr .start-6em { margin-left: 6.00em; } +.hltr .start-7em { margin-left: 7.00em; } +.hltr .start-8em { margin-left: 8.00em; } +.hltr .start-9em { margin-left: 9.00em; } +.hltr .start-10em { margin-left: 10.00em; } + +/* 字下げ:縦組み用 */ +.vrtl .start-0, +.vrtl .start-0em { margin-top: 0; } +.vrtl .start-0em25 { margin-top: 0.25em; } +.vrtl .start-0em50 { margin-top: 0.50em; } +.vrtl .start-0em75 { margin-top: 0.75em; } +.vrtl .start-1em { margin-top: 1.00em; } +.vrtl .start-1em25 { margin-top: 1.25em; } +.vrtl .start-1em50 { margin-top: 1.50em; } +.vrtl .start-1em75 { margin-top: 1.75em; } +.vrtl .start-2em { margin-top: 2.00em; } +.vrtl .start-2em50 { margin-top: 2.50em; } +.vrtl .start-3em { margin-top: 3.00em; } +.vrtl .start-4em { margin-top: 4.00em; } +.vrtl .start-5em { margin-top: 5.00em; } +.vrtl .start-6em { margin-top: 6.00em; } +.vrtl .start-7em { margin-top: 7.00em; } +.vrtl .start-8em { margin-top: 8.00em; } +.vrtl .start-9em { margin-top: 9.00em; } +.vrtl .start-10em { margin-top: 10.00em; } + +/* 字上げ:横組み用 */ +.hltr .end-0, +.hltr .end-0em { margin-right: 0; } +.hltr .end-0em25 { margin-right: 0.25em; } +.hltr .end-0em50 { margin-right: 0.50em; } +.hltr .end-0em75 { margin-right: 0.75em; } +.hltr .end-1em { margin-right: 1.00em; } +.hltr .end-1em25 { margin-right: 1.25em; } +.hltr .end-1em50 { margin-right: 1.50em; } +.hltr .end-1em75 { margin-right: 1.75em; } +.hltr .end-2em { margin-right: 2.00em; } +.hltr .end-2em50 { margin-right: 2.50em; } +.hltr .end-3em { margin-right: 3.00em; } +.hltr .end-4em { margin-right: 4.00em; } +.hltr .end-5em { margin-right: 5.00em; } +.hltr .end-6em { margin-right: 6.00em; } +.hltr .end-7em { margin-right: 7.00em; } +.hltr .end-8em { margin-right: 8.00em; } +.hltr .end-9em { margin-right: 9.00em; } +.hltr .end-10em { margin-right: 10.00em; } + +/* 字上げ:縦組み用 */ +.vrtl .end-0, +.vrtl .end-0em { margin-bottom: 0; } +.vrtl .end-0em25 { margin-bottom: 0.25em; } +.vrtl .end-0em50 { margin-bottom: 0.50em; } +.vrtl .end-0em75 { margin-bottom: 0.75em; } +.vrtl .end-1em { margin-bottom: 1.00em; } +.vrtl .end-1em25 { margin-bottom: 1.25em; } +.vrtl .end-1em50 { margin-bottom: 1.50em; } +.vrtl .end-1em75 { margin-bottom: 1.75em; } +.vrtl .end-2em { margin-bottom: 2.00em; } +.vrtl .end-2em50 { margin-bottom: 2.50em; } +.vrtl .end-3em { margin-bottom: 3.00em; } +.vrtl .end-4em { margin-bottom: 4.00em; } +.vrtl .end-5em { margin-bottom: 5.00em; } +.vrtl .end-6em { margin-bottom: 6.00em; } +.vrtl .end-7em { margin-bottom: 7.00em; } +.vrtl .end-8em { margin-bottom: 8.00em; } +.vrtl .end-9em { margin-bottom: 9.00em; } +.vrtl .end-10em { margin-bottom: 10.00em; } + + +/* 外側の余白(マージン)指定 +---------------------------------------------------------------- +字下げ・字上げと同じ要素で同時には使えないので注意 +【NG例】
+     →字下げを内側にして
の入れ子とする +---------------------------------------------------------------- */ +/* 四方 */ +.m-auto { margin: auto; } +.m-0, +.m-0em, +.m-000per { margin: 0; } + +/* %指定 */ +.m-005per { margin: 5%; } +.m-010per { margin: 10%; } +.m-015per { margin: 15%; } +.m-020per { margin: 20%; } +.m-025per { margin: 25%; } +.m-030per { margin: 30%; } +.m-033per { margin: 33%; } +.m-040per { margin: 40%; } +.m-050per { margin: 50%; } +.m-060per { margin: 60%; } +.m-067per { margin: 67%; } +.m-070per { margin: 70%; } +.m-075per { margin: 75%; } +.m-080per { margin: 80%; } +.m-090per { margin: 90%; } + +/* 文字数指定 */ +.m-0em10 { margin: 0.10em; } +.m-0em20 { margin: 0.20em; } +.m-0em25 { margin: 0.25em; } +.m-0em30 { margin: 0.30em; } +.m-0em40 { margin: 0.40em; } +.m-0em50 { margin: 0.50em; } +.m-0em60 { margin: 0.60em; } +.m-0em70 { margin: 0.70em; } +.m-0em75 { margin: 0.75em; } +.m-0em80 { margin: 0.80em; } +.m-0em90 { margin: 0.90em; } +.m-1em { margin: 1.00em; } +.m-1em25 { margin: 1.25em; } +.m-1em50 { margin: 1.50em; } +.m-1em75 { margin: 1.75em; } +.m-2em { margin: 2.00em; } +.m-2em50 { margin: 2.50em; } +.m-3em { margin: 3.00em; } +.m-4em { margin: 4.00em; } +.m-5em { margin: 5.00em; } + + +/* 画面上側(縦組み:行頭/横組み:行前方) */ +.m-top-auto { margin-top: auto; } +.m-top-0, +.m-top-0em, +.m-top-000per { margin-top: 0; } + +/* %指定 */ +.m-top-005per { margin-top: 5%; } +.m-top-010per { margin-top: 10%; } +.m-top-015per { margin-top: 15%; } +.m-top-020per { margin-top: 20%; } +.m-top-025per { margin-top: 25%; } +.m-top-030per { margin-top: 30%; } +.m-top-033per { margin-top: 33%; } +.m-top-040per { margin-top: 40%; } +.m-top-050per { margin-top: 50%; } +.m-top-060per { margin-top: 60%; } +.m-top-067per { margin-top: 67%; } +.m-top-070per { margin-top: 70%; } +.m-top-075per { margin-top: 75%; } +.m-top-080per { margin-top: 80%; } +.m-top-090per { margin-top: 90%; } + +/* 文字数指定 */ +.m-top-0em25 { margin-top: 0.25em; } +.m-top-0em50 { margin-top: 0.50em; } +.m-top-0em75 { margin-top: 0.75em; } +.m-top-1em { margin-top: 1.00em; } +.m-top-1em25 { margin-top: 1.25em; } +.m-top-1em50 { margin-top: 1.50em; } +.m-top-1em75 { margin-top: 1.75em; } +.m-top-2em { margin-top: 2.00em; } +.m-top-2em50 { margin-top: 2.50em; } +.m-top-3em { margin-top: 3.00em; } +.m-top-4em { margin-top: 4.00em; } +.m-top-5em { margin-top: 5.00em; } +.m-top-5em25 { margin-top: 5.25em; } + + +/* 画面左側(縦組み:行後方/横組み:行頭) */ +.m-left-auto { margin-left: auto; } +.m-left-0, +.m-left-0em, +.m-left-000per { margin-left: 0; } + +/* %指定 */ +.m-left-005per { margin-left: 5%; } +.m-left-010per { margin-left: 10%; } +.m-left-015per { margin-left: 15%; } +.m-left-020per { margin-left: 20%; } +.m-left-025per { margin-left: 25%; } +.m-left-030per { margin-left: 30%; } +.m-left-033per { margin-left: 33%; } +.m-left-040per { margin-left: 40%; } +.m-left-050per { margin-left: 50%; } +.m-left-060per { margin-left: 60%; } +.m-left-067per { margin-left: 67%; } +.m-left-070per { margin-left: 70%; } +.m-left-075per { margin-left: 75%; } +.m-left-080per { margin-left: 80%; } +.m-left-090per { margin-left: 90%; } + +/* 文字数指定 */ +.m-left-0em25 { margin-left: 0.25em; } +.m-left-0em50 { margin-left: 0.50em; } +.m-left-0em75 { margin-left: 0.75em; } +.m-left-1em { margin-left: 1.00em; } +.m-left-1em25 { margin-left: 1.25em; } +.m-left-1em50 { margin-left: 1.50em; } +.m-left-1em75 { margin-left: 1.75em; } +.m-left-2em { margin-left: 2.00em; } +.m-left-2em50 { margin-left: 2.50em; } +.m-left-3em { margin-left: 3.00em; } +.m-left-4em { margin-left: 4.00em; } +.m-left-5em { margin-left: 5.00em; } +.m-left-5em25 { margin-left: 5.25em; } + + +/* 画面右側(縦組み:行前方/横組み:行末) */ +.m-right-auto { margin-right: auto; } +.m-right-0 +.m-right-0em +.m-right-000per { margin-right: 0; } + +/* %指定 */ +.m-right-005per { margin-right: 5%; } +.m-right-010per { margin-right: 10%; } +.m-right-015per { margin-right: 15%; } +.m-right-020per { margin-right: 20%; } +.m-right-025per { margin-right: 25%; } +.m-right-030per { margin-right: 30%; } +.m-right-033per { margin-right: 33%; } +.m-right-040per { margin-right: 40%; } +.m-right-050per { margin-right: 50%; } +.m-right-060per { margin-right: 60%; } +.m-right-067per { margin-right: 67%; } +.m-right-070per { margin-right: 70%; } +.m-right-075per { margin-right: 75%; } +.m-right-080per { margin-right: 80%; } +.m-right-090per { margin-right: 90%; } + +/* 文字数指定 */ +.m-right-0em25 { margin-right: 0.25em; } +.m-right-0em50 { margin-right: 0.50em; } +.m-right-0em75 { margin-right: 0.75em; } +.m-right-1em { margin-right: 1.00em; } +.m-right-1em25 { margin-right: 1.25em; } +.m-right-1em50 { margin-right: 1.50em; } +.m-right-1em75 { margin-right: 1.75em; } +.m-right-2em { margin-right: 2.00em; } +.m-right-2em50 { margin-right: 2.50em; } +.m-right-3em { margin-right: 3.00em; } +.m-right-4em { margin-right: 4.00em; } +.m-right-5em { margin-right: 5.00em; } +.m-right-5em25 { margin-right: 5.25em; } + + +/* 画面下側(縦組み:行末/横組み:行後方) */ +.m-bottom-auto { margin-bottom: auto; } +.m-bottom-0, +.m-bottom-0em, +.m-bottom-000per { margin-bottom: 0; } + +/* %指定 */ +.m-bottom-005per { margin-bottom: 5%; } +.m-bottom-010per { margin-bottom: 10%; } +.m-bottom-015per { margin-bottom: 15%; } +.m-bottom-020per { margin-bottom: 20%; } +.m-bottom-025per { margin-bottom: 25%; } +.m-bottom-030per { margin-bottom: 30%; } +.m-bottom-033per { margin-bottom: 33%; } +.m-bottom-040per { margin-bottom: 40%; } +.m-bottom-050per { margin-bottom: 50%; } +.m-bottom-060per { margin-bottom: 60%; } +.m-bottom-067per { margin-bottom: 67%; } +.m-bottom-070per { margin-bottom: 70%; } +.m-bottom-075per { margin-bottom: 75%; } +.m-bottom-080per { margin-bottom: 80%; } +.m-bottom-090per { margin-bottom: 90%; } + +/* 文字数指定 */ +.m-bottom-0em25 { margin-bottom: 0.25em; } +.m-bottom-0em50 { margin-bottom: 0.50em; } +.m-bottom-0em75 { margin-bottom: 0.75em; } +.m-bottom-1em { margin-bottom: 1.00em; } +.m-bottom-1em25 { margin-bottom: 1.25em; } +.m-bottom-1em50 { margin-bottom: 1.50em; } +.m-bottom-1em75 { margin-bottom: 1.75em; } +.m-bottom-2em { margin-bottom: 2.00em; } +.m-bottom-2em50 { margin-bottom: 2.50em; } +.m-bottom-3em { margin-bottom: 3.00em; } +.m-bottom-4em { margin-bottom: 4.00em; } +.m-bottom-5em { margin-bottom: 5.00em; } +.m-bottom-5em25 { margin-bottom: 5.25em; } + + +/* 内側の余白(パディング)指定 +---------------------------------------------------------------- */ +/* 四方 */ +.p-0, +.p-0em, +.p-000per { padding: 0; } + +/* %指定 */ +.p-005per { padding: 5%; } +.p-010per { padding: 10%; } +.p-015per { padding: 15%; } +.p-020per { padding: 20%; } +.p-025per { padding: 25%; } +.p-030per { padding: 30%; } +.p-033per { padding: 33%; } +.p-040per { padding: 40%; } +.p-050per { padding: 50%; } +.p-060per { padding: 60%; } +.p-067per { padding: 67%; } +.p-070per { padding: 70%; } +.p-075per { padding: 75%; } +.p-080per { padding: 80%; } +.p-090per { padding: 90%; } + +/* 文字数指定 */ +.p-0em10 { padding: 0.10em; } +.p-0em20 { padding: 0.20em; } +.p-0em25 { padding: 0.25em; } +.p-0em30 { padding: 0.30em; } +.p-0em40 { padding: 0.40em; } +.p-0em50 { padding: 0.50em; } +.p-0em60 { padding: 0.60em; } +.p-0em70 { padding: 0.70em; } +.p-0em75 { padding: 0.75em; } +.p-0em80 { padding: 0.80em; } +.p-0em90 { padding: 0.90em; } +.p-1em { padding: 1.00em; } +.p-1em25 { padding: 1.25em; } +.p-1em50 { padding: 1.50em; } +.p-1em75 { padding: 1.75em; } +.p-2em { padding: 2.00em; } +.p-2em50 { padding: 2.50em; } +.p-3em { padding: 3.00em; } +.p-4em { padding: 4.00em; } +.p-5em { padding: 5.00em; } + + +/* 画面上側(縦組み:行頭/横組み:行前方) */ +.p-top-0, +.p-top-0em, +.p-top-000per { padding-top: 0; } + +/* %指定 */ +.p-top-005per { padding-top: 5%; } +.p-top-010per { padding-top: 10%; } +.p-top-015per { padding-top: 15%; } +.p-top-020per { padding-top: 20%; } +.p-top-025per { padding-top: 25%; } +.p-top-030per { padding-top: 30%; } +.p-top-033per { padding-top: 33%; } +.p-top-040per { padding-top: 40%; } +.p-top-050per { padding-top: 50%; } +.p-top-060per { padding-top: 60%; } +.p-top-067per { padding-top: 67%; } +.p-top-070per { padding-top: 70%; } +.p-top-075per { padding-top: 75%; } +.p-top-080per { padding-top: 80%; } +.p-top-090per { padding-top: 90%; } + +/* 文字数指定 */ +.p-top-0em25 { padding-top: 0.25em; } +.p-top-0em50 { padding-top: 0.50em; } +.p-top-0em75 { padding-top: 0.75em; } +.p-top-1em { padding-top: 1.00em; } +.p-top-1em25 { padding-top: 1.25em; } +.p-top-1em50 { padding-top: 1.50em; } +.p-top-1em75 { padding-top: 1.75em; } +.p-top-2em { padding-top: 2.00em; } +.p-top-2em50 { padding-top: 2.50em; } +.p-top-3em { padding-top: 3.00em; } +.p-top-4em { padding-top: 4.00em; } +.p-top-5em { padding-top: 5.00em; } +.p-top-5em25 { padding-top: 5.25em; } + + +/* 画面左側(縦組み:行後方/横組み:行頭) */ +.p-left-0, +.p-left-0em, +.p-left-000per { padding-left: 0; } + +/* %指定 */ +.p-left-005per { padding-left: 5%; } +.p-left-010per { padding-left: 10%; } +.p-left-015per { padding-left: 15%; } +.p-left-020per { padding-left: 20%; } +.p-left-025per { padding-left: 25%; } +.p-left-030per { padding-left: 30%; } +.p-left-033per { padding-left: 33%; } +.p-left-040per { padding-left: 40%; } +.p-left-050per { padding-left: 50%; } +.p-left-060per { padding-left: 60%; } +.p-left-067per { padding-left: 67%; } +.p-left-070per { padding-left: 70%; } +.p-left-075per { padding-left: 75%; } +.p-left-080per { padding-left: 80%; } +.p-left-090per { padding-left: 90%; } + +/* 文字数指定 */ +.p-left-0em25 { padding-left: 0.25em; } +.p-left-0em50 { padding-left: 0.50em; } +.p-left-0em75 { padding-left: 0.75em; } +.p-left-1em { padding-left: 1.00em; } +.p-left-1em25 { padding-left: 1.25em; } +.p-left-1em50 { padding-left: 1.50em; } +.p-left-1em75 { padding-left: 1.75em; } +.p-left-2em { padding-left: 2.00em; } +.p-left-2em50 { padding-left: 2.50em; } +.p-left-3em { padding-left: 3.00em; } +.p-left-4em { padding-left: 4.00em; } +.p-left-5em { padding-left: 5.00em; } +.p-left-5em25 { padding-left: 5.25em; } + + +/* 画面右側(縦組み:行前方/横組み:行末) */ +.p-right-0 +.p-right-0em +.p-right-000per { padding-right: 0; } + +/* %指定 */ +.p-right-005per { padding-right: 5%; } +.p-right-010per { padding-right: 10%; } +.p-right-015per { padding-right: 15%; } +.p-right-020per { padding-right: 20%; } +.p-right-025per { padding-right: 25%; } +.p-right-030per { padding-right: 30%; } +.p-right-033per { padding-right: 33%; } +.p-right-040per { padding-right: 40%; } +.p-right-050per { padding-right: 50%; } +.p-right-060per { padding-right: 60%; } +.p-right-067per { padding-right: 67%; } +.p-right-070per { padding-right: 70%; } +.p-right-075per { padding-right: 75%; } +.p-right-080per { padding-right: 80%; } +.p-right-090per { padding-right: 90%; } + +/* 文字数指定 */ +.p-right-0em25 { padding-right: 0.25em; } +.p-right-0em50 { padding-right: 0.50em; } +.p-right-0em75 { padding-right: 0.75em; } +.p-right-1em { padding-right: 1.00em; } +.p-right-1em25 { padding-right: 1.25em; } +.p-right-1em50 { padding-right: 1.50em; } +.p-right-1em75 { padding-right: 1.75em; } +.p-right-2em { padding-right: 2.00em; } +.p-right-2em50 { padding-right: 2.50em; } +.p-right-3em { padding-right: 3.00em; } +.p-right-4em { padding-right: 4.00em; } +.p-right-5em { padding-right: 5.00em; } +.p-right-5em25 { padding-right: 5.25em; } + + +/* 画面下側(縦組み:行末/横組み:行後方) */ +.p-bottom-0, +.p-bottom-0em, +.p-bottom-000per { padding-bottom: 0; } + +/* %指定 */ +.p-bottom-005per { padding-bottom: 5%; } +.p-bottom-010per { padding-bottom: 10%; } +.p-bottom-015per { padding-bottom: 15%; } +.p-bottom-020per { padding-bottom: 20%; } +.p-bottom-025per { padding-bottom: 25%; } +.p-bottom-030per { padding-bottom: 30%; } +.p-bottom-033per { padding-bottom: 33%; } +.p-bottom-040per { padding-bottom: 40%; } +.p-bottom-050per { padding-bottom: 50%; } +.p-bottom-060per { padding-bottom: 60%; } +.p-bottom-067per { padding-bottom: 67%; } +.p-bottom-070per { padding-bottom: 70%; } +.p-bottom-075per { padding-bottom: 75%; } +.p-bottom-080per { padding-bottom: 80%; } +.p-bottom-090per { padding-bottom: 90%; } + +/* 文字数指定 */ +.p-bottom-0em25 { padding-bottom: 0.25em; } +.p-bottom-0em50 { padding-bottom: 0.50em; } +.p-bottom-0em75 { padding-bottom: 0.75em; } +.p-bottom-1em { padding-bottom: 1.00em; } +.p-bottom-1em25 { padding-bottom: 1.25em; } +.p-bottom-1em50 { padding-bottom: 1.50em; } +.p-bottom-1em75 { padding-bottom: 1.75em; } +.p-bottom-2em { padding-bottom: 2.00em; } +.p-bottom-2em50 { padding-bottom: 2.50em; } +.p-bottom-3em { padding-bottom: 3.00em; } +.p-bottom-4em { padding-bottom: 4.00em; } +.p-bottom-5em { padding-bottom: 5.00em; } +.p-bottom-5em25 { padding-bottom: 5.25em; } + + +/* 高さ +---------------------------------------------------------------- */ +.height-auto { height: auto; } + +/* %指定 */ +.height-010per { height: 10%; } +.height-020per { height: 20%; } +.height-025per { height: 25%; } +.height-030per { height: 30%; } +.height-033per { height: 33%; } +.height-040per { height: 40%; } +.height-050per { height: 50%; } +.height-060per { height: 60%; } +.height-067per { height: 67%; } +.height-070per { height: 70%; } +.height-075per { height: 75%; } +.height-080per { height: 80%; } +.height-090per { height: 90%; } +.height-100per { height: 100%; } + +/* 文字数指定 */ +.height-0em25 { height: 0.25em; } +.height-0em50 { height: 0.50em; } +.height-0em75 { height: 0.75em; } +.height-1em { height: 1.00em; } +.height-1em25 { height: 1.25em; } +.height-1em50 { height: 1.50em; } +.height-1em75 { height: 1.75em; } +.height-2em { height: 2.00em; } +.height-2em50 { height: 2.50em; } +.height-3em { height: 3.00em; } +.height-4em { height: 4.00em; } +.height-5em { height: 5.00em; } +.height-5em25 { height: 5.25em; } +.height-6em { height: 6.00em; } +.height-7em { height: 7.00em; } +.height-8em { height: 8.00em; } +.height-8em75 { height: 8.75em; } +.height-9em { height: 9.00em; } +.height-10em { height: 10.00em; } +.height-11em { height: 11.00em; } +.height-12em { height: 12.00em; } +.height-13em { height: 13.00em; } +.height-14em { height: 14.00em; } +.height-15em { height: 15.00em; } +.height-20em { height: 20.00em; } +.height-30em { height: 30.00em; } +.height-40em { height: 40.00em; } + + +/* 高さの最大値 +---------------------------------------------------------------- */ +.max-height-none { max-height: none; } + +/* %指定 */ +.max-height-010per { max-height: 10%; } +.max-height-020per { max-height: 20%; } +.max-height-025per { max-height: 25%; } +.max-height-030per { max-height: 30%; } +.max-height-033per { max-height: 33%; } +.max-height-040per { max-height: 40%; } +.max-height-050per { max-height: 50%; } +.max-height-060per { max-height: 60%; } +.max-height-067per { max-height: 67%; } +.max-height-070per { max-height: 70%; } +.max-height-075per { max-height: 75%; } +.max-height-080per { max-height: 80%; } +.max-height-090per { max-height: 90%; } +.max-height-100per { max-height: 100%; } + +/* 文字数指定 */ +.max-height-0em25 { max-height: 0.25em; } +.max-height-0em50 { max-height: 0.50em; } +.max-height-0em75 { max-height: 0.75em; } +.max-height-1em { max-height: 1.00em; } +.max-height-1em25 { max-height: 1.25em; } +.max-height-1em50 { max-height: 1.50em; } +.max-height-1em75 { max-height: 1.75em; } +.max-height-2em { max-height: 2.00em; } +.max-height-2em50 { max-height: 2.50em; } +.max-height-3em { max-height: 3.00em; } +.max-height-4em { max-height: 4.00em; } +.max-height-5em { max-height: 5.00em; } +.max-height-5em25 { max-height: 5.25em; } +.max-height-6em { max-height: 6.00em; } +.max-height-7em { max-height: 7.00em; } +.max-height-8em { max-height: 8.00em; } +.max-height-8em75 { max-height: 8.75em; } +.max-height-9em { max-height: 9.00em; } +.max-height-10em { max-height: 10.00em; } +.max-height-11em { max-height: 11.00em; } +.max-height-12em { max-height: 12.00em; } +.max-height-13em { max-height: 13.00em; } +.max-height-14em { max-height: 14.00em; } +.max-height-15em { max-height: 15.00em; } +.max-height-20em { max-height: 20.00em; } +.max-height-30em { max-height: 30.00em; } +.max-height-40em { max-height: 40.00em; } + + +/* 幅 +---------------------------------------------------------------- */ +.width-auto { width: auto; } + +/* %指定 */ +.width-010per { width: 10%; } +.width-020per { width: 20%; } +.width-025per { width: 25%; } +.width-030per { width: 30%; } +.width-033per { width: 33%; } +.width-040per { width: 40%; } +.width-050per { width: 50%; } +.width-060per { width: 60%; } +.width-067per { width: 67%; } +.width-070per { width: 70%; } +.width-075per { width: 75%; } +.width-080per { width: 80%; } +.width-090per { width: 90%; } +.width-100per { width: 100%; } + +/* 文字数指定 */ +.width-0em25 { width: 0.25em; } +.width-0em50 { width: 0.50em; } +.width-0em75 { width: 0.75em; } +.width-1em { width: 1.00em; } +.width-1em25 { width: 1.25em; } +.width-1em50 { width: 1.50em; } +.width-1em75 { width: 1.75em; } +.width-2em { width: 2.00em; } +.width-2em50 { width: 2.50em; } +.width-3em { width: 3.00em; } +.width-4em { width: 4.00em; } +.width-5em { width: 5.00em; } +.width-5em25 { width: 5.25em; } +.width-6em { width: 6.00em; } +.width-7em { width: 7.00em; } +.width-8em { width: 8.00em; } +.width-8em75 { width: 8.75em; } +.width-9em { width: 9.00em; } +.width-10em { width: 10.00em; } +.width-11em { width: 11.00em; } +.width-12em { width: 12.00em; } +.width-13em { width: 13.00em; } +.width-14em { width: 14.00em; } +.width-15em { width: 15.00em; } +.width-20em { width: 20.00em; } +.width-30em { width: 30.00em; } +.width-40em { width: 40.00em; } + + +/* 幅の最大値 +---------------------------------------------------------------- */ +.max-width-none { max-width: none; } + +/* %指定 */ +.max-width-010per { max-width: 10%; } +.max-width-020per { max-width: 20%; } +.max-width-025per { max-width: 25%; } +.max-width-030per { max-width: 30%; } +.max-width-033per { max-width: 33%; } +.max-width-040per { max-width: 40%; } +.max-width-050per { max-width: 50%; } +.max-width-060per { max-width: 60%; } +.max-width-067per { max-width: 67%; } +.max-width-070per { max-width: 70%; } +.max-width-075per { max-width: 75%; } +.max-width-080per { max-width: 80%; } +.max-width-090per { max-width: 90%; } +.max-width-100per { max-width: 100%; } + +/* 文字数指定 */ +.max-width-0em25 { max-width: 0.25em; } +.max-width-0em50 { max-width: 0.50em; } +.max-width-0em75 { max-width: 0.75em; } +.max-width-1em { max-width: 1.00em; } +.max-width-1em25 { max-width: 1.25em; } +.max-width-1em50 { max-width: 1.50em; } +.max-width-1em75 { max-width: 1.75em; } +.max-width-2em { max-width: 2.00em; } +.max-width-2em50 { max-width: 2.50em; } +.max-width-3em { max-width: 3.00em; } +.max-width-4em { max-width: 4.00em; } +.max-width-5em { max-width: 5.00em; } +.max-width-5em25 { max-width: 5.25em; } +.max-width-6em { max-width: 6.00em; } +.max-width-7em { max-width: 7.00em; } +.max-width-8em { max-width: 8.00em; } +.max-width-8em75 { max-width: 8.75em; } +.max-width-9em { max-width: 9.00em; } +.max-width-10em { max-width: 10.00em; } +.max-width-11em { max-width: 11.00em; } +.max-width-12em { max-width: 12.00em; } +.max-width-13em { max-width: 13.00em; } +.max-width-14em { max-width: 14.00em; } +.max-width-15em { max-width: 15.00em; } +.max-width-20em { max-width: 20.00em; } +.max-width-30em { max-width: 30.00em; } +.max-width-40em { max-width: 40.00em; } + + +/* 最大サイズ +---------------------------------------------------------------- */ +.max-size-none { max-height: none; max-width: none; } + +/* %指定 */ +.max-size-005per { max-height: 5%; max-width: 5%; } +.max-size-010per { max-height: 10%; max-width: 10%; } +.max-size-020per { max-height: 20%; max-width: 20%; } +.max-size-025per { max-height: 25%; max-width: 25%; } +.max-size-030per { max-height: 30%; max-width: 30%; } +.max-size-033per { max-height: 33%; max-width: 33%; } +.max-size-040per { max-height: 40%; max-width: 40%; } +.max-size-050per { max-height: 50%; max-width: 50%; } +.max-size-060per { max-height: 60%; max-width: 60%; } +.max-size-067per { max-height: 67%; max-width: 67%; } +.max-size-070per { max-height: 70%; max-width: 70%; } +.max-size-075per { max-height: 75%; max-width: 75%; } +.max-size-080per { max-height: 80%; max-width: 80%; } +.max-size-090per { max-height: 90%; max-width: 90%; } +.max-size-100per { max-height: 100%; max-width: 100%; } + +/* 文字数指定 */ +.max-size-0em25 { max-height: 0.25em; max-width: 0.25em; } +.max-size-0em50 { max-height: 0.50em; max-width: 0.50em; } +.max-size-0em75 { max-height: 0.75em; max-width: 0.75em; } +.max-size-1em { max-height: 1.00em; max-width: 1.00em; } +.max-size-1em25 { max-height: 1.25em; max-width: 1.25em; } +.max-size-1em50 { max-height: 1.50em; max-width: 1.50em; } +.max-size-1em75 { max-height: 1.75em; max-width: 1.75em; } +.max-size-2em { max-height: 2.00em; max-width: 2.00em; } +.max-size-2em50 { max-height: 2.50em; max-width: 2.50em; } +.max-size-3em { max-height: 3.00em; max-width: 3.00em; } +.max-size-4em { max-height: 4.00em; max-width: 4.00em; } +.max-size-5em { max-height: 5.00em; max-width: 5.00em; } +.max-size-5em25 { max-height: 5.25em; max-width: 5.25em; } +.max-size-6em { max-height: 6.00em; max-width: 6.00em; } +.max-size-7em { max-height: 7.00em; max-width: 7.00em; } +.max-size-8em { max-height: 8.00em; max-width: 8.00em; } +.max-size-8em75 { max-height: 8.75em; max-width: 8.75em; } +.max-size-9em { max-height: 9.00em; max-width: 9.00em; } +.max-size-10em { max-height: 10.00em; max-width: 10.00em; } +.max-size-11em { max-height: 11.00em; max-width: 11.00em; } +.max-size-12em { max-height: 12.00em; max-width: 12.00em; } +.max-size-13em { max-height: 13.00em; max-width: 13.00em; } +.max-size-14em { max-height: 14.00em; max-width: 14.00em; } +.max-size-15em { max-height: 15.00em; max-width: 15.00em; } +.max-size-20em { max-height: 20.00em; max-width: 20.00em; } +.max-size-30em { max-height: 30.00em; max-width: 30.00em; } +.max-size-40em { max-height: 40.00em; max-width: 40.00em; } + + +/* 禁則処理のルール +---------------------------------------------------------------- */ +.line-break-auto { + -webkit-line-break: auto; + -epub-line-break: auto; +} +.line-break-loose { + -webkit-line-break: loose; + -epub-line-break: loose; +} +.line-break-normal { + -webkit-line-break: normal; + -epub-line-break: normal; +} +.line-break-strict { + -webkit-line-break: strict; + -epub-line-break: strict; +} + + +/* 自動改行のルール +---------------------------------------------------------------- */ +.word-break-normal { + -webkit-word-break: normal; + -epub-word-break: normal; +} +.word-break-break-all { + -webkit-word-break: break-all; + -epub-word-break: break-all; +} +.word-break-keep-all { + -webkit-word-break: keep-all; + -epub-word-break: keep-all; +} + + +/* 長い単語の改行ルール +---------------------------------------------------------------- */ +.word-wrap-normal { + word-wrap: normal; +} +.word-wrap-break-word { + word-wrap: break-word; +} + + +/* 【参考】回り込み +---------------------------------------------------------------- */ +/* 行頭方向に回り込み */ +.float-left, +.float-start { + float: left; +} +/* 行末方向に回り込み */ +.float-right, +.float-end { + float: right; +} +/* 回り込みなし */ +.float-none { + float: none; +} +/* 回り込み解除 */ +.float-clear { + clear: both; +} +/* 行頭方向の回り込み解除 */ +.float-clear-left, +.float-clear-start { + clear: left; +} +/* 行末方向の回り込み解除 */ +.float-clear-right, +.float-clear-end { + clear: right; +} + + diff --git a/docs/vol1/image/ch01/1-1.jpg b/docs/vol1/image/ch01/1-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db1571f86c6a1240fc750ff089cba23c40932273 GIT binary patch literal 44686 zcmeFZdEC>~(g57&VU<-DQ4r-35Rvkbrfs?)py`q}-P<%tTSZOUv`v$?X_~GsxT1oh zf{3E%6}-wKpr{}y?i-2=BB0`e3o5R-;Chwsv}N_;z25hG-|vs_cf*f9lao1f=FH5Q zGiOdt_P()qhw5k-hGVL>_O`b1ZR1s{yZUrgtv4&4Ne%4EU4UA|N`uA>_m zsx}qCZT;Q*zO#^46lo#^<%$!SM4sg)#PeCG%197AK?A8KonDogxWFkLESKVQlSh92 z@M9x8_{8LqG~(5GB`cTaopqTb>b`KiF2v1=k*81THK{tWnw7Gg!gN%#Vy-x`I(cN1 z_(T9VilLDmO%z3#JQ8iR+7a;vI;?q_>o8BybjCFrxWj0k0PDFptJjY2&}y_=2-ZRx zZ6|D=2x}+m^&R`JkyCmBXp)>rP7K+weeHp}$s_l5tWv2=sOTo-QhlS&Re zoBG!kQxKm`K}V{dh##mam1MEmvqT)?L@vwalp;_Ze8hS{C0_4=sz>BDn>}L9qGB%t z0sJdVDTZqj2Zgv|z9h#vdl_&t>PXBNl@NDOH%DaRa8dyMpn8DxCxLEEw8|W#!m@)Z{^OoQ+YqDZtWnof=)I))aja}Pe}&3nxPPRRPw>gwAE{{c4PIb4)?&kZ5a|!q z!|76%%`v=KY>tZq=Gq(}sHhxX+K^|%!bQGm=n^9rxrQPqkKC`x10&-ArF}YRSn$LO zpHR|Mw1}a})*(d)xjImx{!(!EN4>7e)0!LG+<& z4cfdcD8O%Ac67|BDta0kY*YqU5Vb&R+)LXcO9JuxoY=HlxD-_jPYKcZws#(9@Bp7p0^=JhYL>ru0iV0n)(nLx& zk;rIPY2BxqoRe`e9itokq?=5UF?ioSUpc@b8QqU0w1~tUa4FURo87lmz`fACFE)r; z@kEXioA;UqCss!yD~bsKwz_O?wk)ttN?{rx)M}ZfsdOA5S8-!-!gmhV}w!@S_yXLM-CT93TkF zKm{h%iT1B>n*@(o;b7Ij1nnOjhjLhIj$K={ z>JLY?o-khW5*B-mj-?ZHRfA(q#bsD+wVa6HskqLPj%vx2hp^O1Az|I$>i;Rh{f)H# z{=p7Cm`jXhsalLiGBLtJGc=`RXe8IP-E2roIK(o`Tcjq30QlE7Xsr^U>tZ}h0p*Y> zsxfZ0VkuSwqeqJfOe7?+T78P4^{FPoe`EcJbKbnOXd4{vdk~fadKAM!gcsfxpc#&AnEh6lY0T2I-66<+{_^R_0zSjtyJb$T10^3$jRx5+8L0X4;K zno1xA`f5`LgAQN;b{q{V7F*FypdrfQ@Y>_SklKP*?Aa8Nw|JuVDjE(q30nMipn|a4 z64YQ$l$0&uJVpemsD+MWi3;to#G;s#qG3y%#Nc2=v?QYrODalR__)JY0kRPV2a}2! zE%}P0NiY{=%9bL~W01{Q%B0g$iN`FpqB9Uo1T0#+Gl6mr3nDmWl!Gj0+=&E}dMjGQ zot0G0YLDV{DqXVTI4-96LX)7?qsKL=OwJl8y6mVRTElr)xFQPHh~UapvVxV(yXuvk zXiXN~_Fz6|&1l>dDiy4GyE}^(O4cIj)}eCUS}A&(1o2c6vBGu_6D*-tB;_fhW!$Q^ zd(^=SVYBAF!Ado5bCTXns+O~PQLi>wuiJtepDP8UHY)E+pjy9;5qy=3j%yOMB~yNT zMPITBf0l1C3nY^!T3yE68nT`aSFjLH`79KTMSzE@(q@c9X<%zvOb}?+ z!UQlGr{Oefz^a-^Fq9B6y%3SpNdkl7QAah6IvixQ$swQS%MKqIRi}lNgCt{2H5+oU z@t7`@w>$VeLxv=sL(((VkX&?BgRH-*WE}cDTTGW3CyK}2=_=uL7UTJ9-PR3!_o-q%;q`KVo*CvLegF}shwIODO%K!Q=Ly?gvEk8Dygj1X2%0) z+G)jbJVK_M1oMQ`k0*<~tLCEcJkHBCPXe#xGk&WtizC5Ig%4C*7LyPrLME5HC}?@o zLJ6}EUHQKeAR zr9J6rDQq=ZJ#xHcR^;H7 ziZ$5g^?5bXda~};ke+_qPm>&-|4tWt^#}pNcNtjNE@}X?PQP8lJP@Qr%338ewN&x>&X!sD} zOSqh*m?0R^WwPgWL=JXW8^Z+ld9p&84_hT~T&NksL6?sZwBc}~>UWVyDJ&-fsNLLJ zr-Tt-Ku4iD(uoC2u-!pYmQWUUX2}djBr%VZtop(c*k2%_7#S3a0OeCCH%7r!+(p~q zSez<|v>8s=DZ~|Na;V2rW!ecxYp}r3v=}R4c_;Y8NTLkW8j2OEvKX;Z@w8Z{BSa#> zVLDeNEpaSnFh?rpWRz0ZqbQZ4wAPkCj0URdu-3sxlN3+T?s&9p$pp3jNK~x|L9jTB z`9(26(?pC*WCJuq#7gO0fabz6wU`fRd7AN8rJy#;FiEUMkZ=@|OgSNkwWS;bnTwRR zR%U}~CF;;3Y}!>~v_?ByMarB53dOBTC7rXS;$f*OMx2$npwy(C*Aj=}ddV3in_W&g zEtryufR&u6HQXhhlsKuFb^A>9!lT&f6)r-4{RGF|*dcPqJCYKZ*&ZJ2W zE9j&Cbk6O7^>JewQR5aoE%9E1%d5}Engscz!5zb8H($4U#C+M5arnKpyr!Co@jgh8 zWHUuWz?WBZ0?Gtg$wmudb*SLNLqe`V=nl>n+v)OrCe2;OXZH_G@Qw7YOuet?Yfyow}?n0nYamxv& zEXi1{sByz~ndM7O4n2$^EmxT`Z$#0eldc$KELBV}HNxnz7VCUnmV=_=s=;<6?N(9_ zEyuDIMa%2-o^-6_b0CDAvz9U?gTfYD1WN|agtIla9HPw`quyQ46Kcq4Hk6?V8u!|Y z6*_6rn_S6?Qnu0F07x1*?e!w%sm3#oP?5D&HBM*Qlrq;m_14hy7qdt$lW{AiqPAva zy}o!2u7@K&C9c=jWj5e5sr4FLE?83RCJk#O0%ngzqX~zrO2`F!%T!p2gkUj3Yki4$ zv&*pB7LEBbc`aR!nG%v#TQ0LHUj@_Qa>DM@(z9S3NVhO~}hFsoT;!OsUl{9{dHIyQ9++Q{taaOT&+PIO=loY=i zHJa)bI$#q`5lb>yHj6imS%P7EwZb~8#kjL-N;bRP z0Gj_R_C_e@v!R+OXd&uIlOZgWZ#~S|Z%I>gh?R-3HC%uv*ZK=}LARn-hiZku4#(0x8 zR7;iZVz3?x3k7#AstZ_sWH2Wf{B>VC(ej5eXV|7G;kYaBby?G?SlR_dS0FT$;-lOa zxu%B#cGw@*#3GFZ0S#9Z5z$P?v}rKdl_E&1m7}^4oX92gTx(8|j7cY~PU`&jbd+)O zc-GD9YrxReRskU>QR1T6Sb@#Cv|J8xXCybBl?=R8D3ppaV<_hv@&(<;ZI&QuZ+01& ziQNjUf^7&mZMRvhjS$0*ks)6iPsOUKn7x)~ofXXM4Cx7<6{B2yylk(#Y$01J%@Aab z=A*!oSag9_-p0qd?5S#k6e_7^mtC0{=HL@T0wZ;%g1=s=r6i3yP*1xELGgx3BoGo4 zV67^#5e()ca0o2T6M2S~WVW@efJ>})zYPAg`!>-9rdWiJWu;O)7c(SkqhcF#I&@GR)CqHR(r$FY$nu9>I+7UEWnILVaufAPnGgfBX3t1byBV1j0kqj z7D|O8NsJ0ZwxpIkUxWxkf0`qHJpbKsY)SXH4{Mc90lQO$&i-HYNy9x zC>fcmBG+Id6pdEBCUYf92jiF+kK3IAz2FQQjdIQ64q}l|xsEDLf<6lJlq#mW77}Pb zp@wOK))e!&Sgf+HL^i557X*z`gY!Bo6XE?NQ?zL0nzpJi;aUJl$Ym-;9OW7plG7e* zlVF{Ru{jx85oDv&Sc3;;W1F5Tr)y2V+=#6%N|OaH2Qp^Rfzf; zDn=TGC=g+hF(Gs!C&f!*xTO@9t2Wd56|rgd;{=4JPA;T}GmR z@zl~b7~|)C%lLwoD3!W5aHr-PPH1+ILTyK4;7)9 zOqv)fcrQKSAil+SW zoaBLRtR`Qe!<9%bTQkEz9kF~yf)!h=9&yM%dtTtZ8e`l;Slz8I)BcQNFO*E_NS^bB zLPgR`lzkz{3&LMCt$5Nkmu#f*M4+s&IS~n4JarN)ib9c1YSh4u7hM$MPKfR% zhsJt1#uyonkujeS*18SAa2OpX=93;u&1f}j!I>+GJWTs_Zan1);AVvgLbjk-h+?rS zqKS#70+X-hV-C8t){CbxiQ@eg1PhUBq>?9cHA&7EJP22$A~kctmJ0D1*(I56rV^#K zsU2=fQRmDQ7`qY+JAoBAm;|Jy^aUN#R>rgD%Oa) z&f^NigEUnyU?Onfo&cIFa4C}lws{=3cra|vWx^O6v@#YXYAPGTQW=Rxl39bbLN__o z+s*X=>n((IUW3l3tMeHp#%5_&V>4t#N~()Y&IR@vY84kqfq-F}BNT7Z>?|d{qJoGS z4X;myLkU|^@+6E+f@RSja@w3OMw=-pHBFd|Q@qnI*Q6R2cS~jjFP3pFuhpi5Oeo=? zIjCZBQ7nN(U^{J6JQkc(7m0k{9`I2@lVHZ_OF8n4jm4}SN0RpDGIRcnTFrf0G~@1aperBKjyl6t`0j5Xw>rR{ zls0NGCMj1bcfcQj+#Z7nRZ}b$;Yi>ZM2FD^W$eIzXE3s)ks;35Qc6G_tp?P2LRY1{ zaVjdRqfVg;d8r($SWTG-r6ja=4OKGLB{q(G3=S>^(ikRZQbQ&v1XaUcDpZmgAHu_) zRwxpo62Y`aN0jg|%o2ExjM;rQm%}60D=D(*c7n+~Yba){z=xo~CTVlkhX{Nrnhl2) ztZ3w|h_B#6j4&{(mdDnDd8tI^@V8%)Q4*R0$A{uS|M?W&7%duofM707K1(}L@-pI&W4!)_{|!{ zkeqeL@?b4l0)Ysf0hzpz-&)Y>JR+@lNo}?)u(bqdu);>Jef5zs-DA)rrcs+3Ocg#P@ND3#si9Ai*)iZMgA2$Ctm=^(tCd`Ry|0VB_* zwRSNrQA(`lb#NFe+Y@emAp^z)c(*0ZMWsYgEcx(qoe70CT*7URp}bVnS)f?3m3GER zON;Zr%q1G}XOmf*vtZ6JHo9IZ*>kb9DWEpAR`ggvn>5K7nf#+b{ve-!Bbrdwlxvv{ zW2|vHmh=%=)ydYZA&M<>h!(9Yk34qjyvOhu3`O8T(4&x&Lc0$nS`Qe{`7YKjv%7NdYI zrVBPOr?5s4TN((YY-kb$aRG#)um!j##SDGzp@Bom0dEXMhXxMx6}6FILbn3MitSLuzr>*}NSnkoA{AxYZv-&_hZI4aNBi|6 zL&o(nnIfa{8bjLaiGUNMgNGYklf(TMDwG;rIVqC@nH2{JG(8fm;|qzytL(=HE17%) z|A4WArHH%QB>3kRTOb-nUCVMJ=ql@P#xVgc?Uvv}JYFGa@Z~uk4DX7rwE(Y5X2loq z)EI&$9KKwPuNLTNO2}a(4`(6)TujS$bw-x7IXOuyvX6_fx*~{i6bt6C+ex8l5<(FT z5{ps6)-;-8lOiF3j4KnZOHM>klWaZYOTdI)lc^bK4S0)142R8uvYxFOau{#K>$07t zZ5bPGM?y8qN8vu736mt*)ao)AAyvo|5p znrFPSJtf#A4OrI1oP}~W6EZtfAc0->Xfx@A8!J2IVo_r*$1H3~pQ80@nP%!$F{Yzk z6R=y|FyxB3nIwaX+r`EZJm#X6Bta%Ah~nMx zs;_1=F>GTPirJdRMwzkJehP3%&SKOk1bl2nV1gkLE3tIU$muC7WpVSgD`n-hZYhbF zG{&&v)0AM422-M}AHg&{&scr9PM`G?dBlyjWC-j%O4se$c-RiRGNb_ZbTCrX*lG~S zucZvE$0I4S%j04yMWbSI(6Nj|a=F|_0nA*$K5Y@P4xw&^%0Zfz46DF+8%rz}&YCm< z!psyEFG#(b3=wnP$$=L7g~M%qeBQfNQddDWlV7Y*cI0 z-|R24RxM*L`2sE zD2~Vlog%q-#DcasGR5e+_SZAUv0zqD`Vk+o-Lcj#x^~u#}#f&BDbTQ|z3k>7N z^jJEZwzCwQEy_h4gkx%_KIM-EX~EJWs1}kr8A+DRHVg!6aZMZ;Tng6^ibFtCSV53$ z-nvvL)e4Sl^RmTPr$8{Om26-fVFj(Aj>Tky4rB~US#6@}9ICNeIBy~YR=tq%`gA@P z^Q5d;RIh{LAcKfQp19E}66tJ2?I?S45LGBbYJu~B$qA$ZGLaltDJHxb4VMhFEiJoi zSpmjyouKGpJ|=kWAX%M93CW!Tk&RH!V!BApSO^!Y6kJ4VGOEFGJ_=i!zP-@`iZOBk zlAMi1LyJR-FJ~dJ0EvhOHiID%9;Q6Bl`zACR+Gp%Sbsg_aMuIosMpJ4I)az#HoGN@ zaXu^9X^_;c&t6OrX(Cd~wbFeS$>u|qI;W%31%e1Uq6LW-{Gtxa8$ni9CJg#wQk&+p zf+xLB-QFnF*! z>ZMQ}YE|536BP!@BX3ePfcIJ*x>ABv@R(jr)IvnKiW`a!f89;*({hzU4GE_@B8ml% zA)lZWk4)tRE~F48w&W(_T;5ui3OcY?1V{7~cr66%(lI%V@(|IotCS5JG9WKijX1K5 z*yPX?*V#)Mo!y)QNht+!$D~|Popse~iL4q!zz$GG0a+12T>@D#mtR)X39v^AoMWY? z)5;MacqvLP*CSX-Q_pIf1Vvt;Fnc)YaXPS+)m=Ww~Uq#TH!ww1|QKn#w7BX@qoWvE0tAbo!HiQ+yHj>ex)8uucVkQYw zONI!B)G%w^S7Smsx6e%?P64w3r|L6X;BYM?IfM$6bjqUW1-s()uo4ftHARh_r5P$E zlNLcpJfyDz zx8(&n09-*$b&l36R*lvjp=7_G_QUDc0-W&4JV<+p8PaaY3aM0M?m+`sQe;8=KnFmO zDOA8@u4q#SlA-W%j)u<18oK zCQ+x915O{3D%xX+(Iu0#QEMWpGGj<2syfnF#_Ueq>CpsTPT3SmVHCLVav*}Rz;n}T z2IP>lVXC#F_h?`b=V#m?!K^iMg(6&a#&diK&q>Z~26hAA;Pt1glCPKqqOkfP4-o*H z=00b(rsb+3kLbaDE-OgZMUwfJQb1$}wmt$8f$}8ze3Z+Xg{)Wb)iDnnNV?z*0){_G zIKl|ThY2GeAQ41@t(=JY1CdgU&1HOkjY$&hv0SW`#IU;g6cw-+iMZQALweaHC(RMQ z3K%F#n-#JHQj8_aM`RLukR1}DZakK*;iRA`R6ru9wH-_$X(|ht z$QDv!CRR_OtRPfnWub49? zZOH02xiwLZOj@&GXO_sBat5)W$ed1>bz2#@m<5?iP1#Tfk%qb$$`-;U3lY)=HEuBZ zq#!KZ8Y#gvWeG9~#KOabhYllP{)*s;pEby?WYED89*}N`+A?-e9EM6_&=b+8Ll9r3 z9M(vUb;&HFB)KTdK_caBy@>&Kf;dDe2Ngj??Ws&AoThSUK9Ur4&Zr#)yCpePClas# z8WmT64p%g$tT9~DNQp>X0c&ZyJ5eCDAc(3|xG)$12q@ zI4vj!jVWa%!f^y+yo3)^8!c9nN{CBl0`ht+lX21*p+v+wXsm@0POlKg$COVhKg`87}7UCs~&#m#h^Eoo0 zrjlS{)3OG*qAr^1hH}IhX>ypv$N*Scq+qBPP&+`#0^z=-35*IHB=$gH*}6-Eg+ElY zMIam`)S6hRwRxv+Vl``<&?dnq>Yos#VF;m=8s^6sW0I)?dreAep=?td^_h%5&alw} znDGHl-C)WUOs$tffk(}mWx26w6@UasSsj8ZTCki(EHW7QU|EaqzY~%sA4n9agACvj zV4?f(5GP~!hf02OT&9hqQ31S?N(0Wos{P03k^rz>h0mK9$1xdLIctCTeB zssT@>wOgS9?mlfxnhILPQMM`xNQoAJJP#L81Rcda%{T`4X>pqAedUHO@idwke=sLV{0BG_gh|o@7m(2E+h& z>a~cb)5MrKaFmSY3|_&0eW%f=(;{&;q17|3lS6>?A=Uqhv|r}I@j6C468A=yi<@9=rA+#R{oEgc%s(~dYvZd{(tJL zS|051326VM_Rka6{;8gmc`&zN4KLG}zyAI4)k)3c#}kh*$s|k~6CBr?IumiDrcWL#nAb)WRYfwL=`jM#T|KCOmtv(!q z%)!?7OWt-+!21J(mZAVw^Dh227!P$T4z~TS>bq;u}{}bRK+y5uzTSWic$bTf< z|BCCs;`)yy@E;-n*Sh{IuK!2^{}J+kt?PeHT)hr{K8VYKZw6Js$AR{K&?kaht>*+n zehl~6!MBK1sy9jli|J(;4XKI9UFdpaF47R=}5$0svc=0H6N>@MQoND~i-8-woiw ztk8hlyEb4MFbLq|8gQxwH$JH}m~FvlG~h%wmjE~oo~1-K(SV-@@Rj8f2jDIq08cOT zTm`_d19-Gp%JKmI3BZH198*-Oy7p<5D_lGcU=4u#$l;I`z>`#}o_)aUqz7R35Ln@= zfKQdmnwM%ISWGJ&W84b(kyDh;0Qja8c;^9paVaY?xtdDV>T{!(YG6aQ z9YDwi*laL#Y9|2kAGrSI!vk3V8ffUYh4Edmsk62r8xNKptb4F5zfh$z?E$j6?qC^v zvr4t*a+T`1w+@z#{+mkG|1y z4#=*<#wD4OsB|=h8qbU1^GF><@JTJMqw|kO{6DUE2wR8nF&-=?IGF?a$_@%x8J|l5 zb>|X%^Rrfb?$0#*Kdg2L4-K$o*8muF=kKb)=S)x?{mNifmoGP}x(@2C>T=d?;7Qv7 zy?KtJRE?2GkNBiz_W%aZo4<$sv|kHu+lzdvqfu-Pg*)OUx!i!km}vZTQ}t5yR}EGT zRh_6Br5da1RB2U4)oH3TRCbk1NcGV8mPSxkC-Krl{zqYlt^=RwcHmGfA+laQ4 z+th8^HdEV_HhY_=Ez}lmJGU*>mTN1uo!@q8+swAvZS&jiXj{^DU)$QYC)zf&ZEAb7 z?ftf0ZQr*2(%z-LPy68Z6WYhLL+z$^wB6kvZlBtoYA>|c+b?UM)qYd^!uEUGSGPaW z{$l%<_8sk?x9{nq>e9Q*kS-^6>Fi?aV(sGZ66=!eB6qp4%Zx5Jc3IeEMVED5p6jx? z%Z@Hzbose!_pXDwc69CRdRkX!SF&roYoY6fU9avszw6?ztGhnkb#vGEyYBA#d$+#b zhIdnUo7fHS7U`DiR_Qjq+l}4s>h@r_XS!|awzJz0-Me=m(*2a~#_rDU(e9b<=XJlj z`-1K(yFcE2Q}++M@9EK_$Iu??9+P|cdoVqe9@Bf=+~b}ekM(%1$Ic!<_3YhqL{Du` ztY@reuID8^Z|u3W=c7Ge>-kB~UynNasFRPHc$ELB#8I`Qu086`qt+eu%27Ly`nA`9 zUZ?b$+$-EG)9d11H}zW4>zQ6}_xi4P@7^POn|lX)^Sv+XeN*pydq3a%{oX(K8Q5oB zA8Vhp`jq<2>T`FW$NRk5=exdr`;O^*M&DRprSGi1OZq<5_ualf^&8Z0LO;A;qTjTB zxAa@x@3nqk^*^fr$^Fs(XZNr7zp?-Q{a@+-#nDF{J?3cZ(ag~o9(~KvYmeS`^qv8O z2EYUS1F{3I9@jf6K>NVNz{>_M8u-+}4+nJ_G-{A_P<+s(gYF#k%%Giv zyAM8PFg`dlc;?{cgI^xJ`XVb6C5WcMobyOkGNsPVV&Nj+0(K z>DQ5`j3h^1GIHg}cSiLZWg3+nb;GD9N9`UxVzhVk`J(e?<6HZ%t z+NYCFnZ!-HbJB;CM^0uY-!XZ|l#VIqPWjuE9jBjkI&=EM(?2+4)ES90?mFWW^i(v1 z-h+N+(O6{5gO(qy6Rj6mAGdX}Iczg*FWU#&N&9^JyVyu9g)PH&I}pctj>nzdoNnj! z&TaS!cpP7X?{*no7r35w_i+>M`R)%q<2k+#vZ=^YU$ zazW(9=&&dseJIu=M#b)m?K#ta=G-%Po`sw>{j9B1PnlYsy5a0$XNzaAKd1jW%sKa; z+wENX+@qGCP3C5EpCl(IXD2^RO-{{8?Mk1X zzA^m;Z{_Fn-(;Mb+cQ53e&KFmuSkn4vpuutX4mEh=7ikS`4jWi{3b~)O_z2QCKl!v zcFS)0u3}qpYVjduFbJkLmd2JYFTG!$Qog19Q-!MBUmZ}*RX5hg)vl_2Qpf6lKd`T7Cl)iM` zWhY#A(PbZA?znu}^nTOj>D#V2?TXv4?0O}C<;z#;uDbcE-)AIdyf9NU^TwI~xH^9I z3)jHc+;q*}S;<*1Uu(Gbw(GiIm%DE3^`~FIc=mwV_1PcJ@y=O&L&ps>ZuoxgIdeDM zsK4>{dA;V9=Iyx2bJIgNkG}c3oBuICJ%7tBmRnZdI{enFZvAmVV!>;-opIZW+fTTC z=Iy`yjsM#lcR21?y>QIJ8y9t7R9^J)oz$Jr{oVBUC3g+GYvx_Q-JQF8$Kuf9r9xz+mz9?7y63EWUR`cm{?Llf6?d#0vU29Vs(VZKes>5*I3AG7}2M|(Yb z*`s?Ot3S5qaq00do=83M;gjb)x&5igQ?EZAeEQ{Q+|NA!EcWbE&!Nvf_Wb1MAK5T* z!`c^2FRXdd@Z#!?$i@d>LSB0CWy8y>UopP&(5vQG*KL}#>Cx9tf9;9Qw$0DJj=%om z7T=alTgk0&Y&&b)jyDo-eEO#N<~MJZ-}-g?MQ?X|d&WCQzjNce!{1%_-l^}c++omwnv#;~PI2@yU`;wVyt+3)}VTXJ>x4^KP3;oL{zgGUy;~zKucIt2Ies}-=_TKE?y?eh>^=p0%Qk8fd!~$)5x2rBw^#XHL z&mO&c_UzTa7x+K0Z?9f`2M#{^=z&KcJ$P{c0pRLCc<`~u4Lk1G!6QbTbkc|so#V%k z@6;Z++Isiu)w@scetr7%8`!U3zk!3nPrt!K2MicEV8GChV+Vul*pA^R4jVS?#Nnex zb##mxrBM6y-%y=HP$`tT@H zj%y>3IrKVO)z+oGy=(Vg{kymI>fYW3bgjKh*KPy4pEPjuv2bwEV5$dt$H>|7Mam7w zkWArXZD^Hl&ix-EbB7p`*WYIuRV?W@z0b;*EPTxxHtv4nNn-S!-&|@tdES73YH9CV zsy=|H_5oc6s7_bC{rEmEy7!+Le#L#mN@Vc2Q-*%H=;lrC7aN6aODT^QY|4HH19%WDToYRO+Cx5(C zTC{l0i@KYoCDBcz@yOHEn(k{ZeZvr3e*el(wpV`GaN&Z#MFa1wtuV93a##M^<59nO zZ+^W$-S3R12Jk)CBjIS>5ZdB(jNfy^z2m=sZG33a=$r4kaM|`J?(k1JAh|C;SAXF; z{VV-Bz9%2)xqkcaOE;cVy&&+;W1rpg%#T-W8FJD8ec9kO+wWdD{=scN_q>k-`01mT zFIlaV;eKjG=?ucp@yyJ^SY&Rw(5 zK&<7xs-^cI`|gNvIk0EJ+@&kl^ct$>m+bm~v(F)8m((cQfqKJl${kUlGO7WmNL->(2gaYxUf@ ztKQsdczxqO^@#WW#Oy;T((GE z-1xb5e&^8IsWp1)&AQhX-LS>^bN72@zMYw{y3_u}9k;hb2fAn6KO+A2e_Y7kPk9#K zzjOOFug%k+^Ij0|^7m_2(M#_;>%Ggaxn|iF>%`f`drseQ>|>+n{MfcF_t@I+A9#M( zF|S14yl3e{OIIvqmj*U_U&Ll1FWvrbXs^n9`!Rhl&i<^Le9=Dt@Ynxz{o%rY%scN} z^P{6?3_S1j3*GB~9{%2d#}ncR=FIbN?7xV=4*sG4y~`hU_t^Bn^GBqLtS}+#gOJ@#8S)ZszPm;e!oy zf8=xa!}*KHm%jcx*K6m`OJ2L}j^xhTyN`SonYtmfcIX|$XWsqhMD5NmH|?2*{xsvR zE#BeRIgXi)&)+qYdgA!FeQ{#uUD(n}Z0QxZEdOlH)Dz!c>)W$s;hl>gIjckx-Jd%C z7BF$%J@kaXPhRwS=k^KaV#n6A=KnM<`?)ydlkD`QeC>?8T*(cAEn7D&{^YLJJ-a@0 zC`2)m1Wu;cwi2WcJ0gAa?17VV>@@! zA8mW@(;fCxvuk!OxOw~!JJ-Isa`2vST^l~U4y)Gw&WW^_3gHx?$~S^CrBWyk&b@z4*P!Cpace8~fRn zZ?F62{NV$xA$J%)7zwU(uexJE&#zW>lC!t-`5#t)KJ|-%-@Q;?$gZ5}fR61xc{4G5 z@67VW(Toz=HQ_hK4ni|(an|KG`c=!*tbw=)LzwF^3sd9kodGUZ;ZV2KJN+H zm%GM?PTurN-TC_2U%vL}_~9!afBf6^g}tgTBBy81`3LvJ3AgFaU%lsA=#9;{emryD zx4W3+ZT1zf-v8q6;2>B0%iV3ubluO}_)TivQNjhs?mA8P(Ou&8qu<^%#fxOLfr zF^_$_=YjVhU-G6Q=G``M;W+EL;i+R6KRE51*>lYUx1sa3w@qE@ljq*B?U=P;=&||y zsqe0s6IFgxe_g%TGH>jAf_TiX+4oO+C~RN&V&TH+ByrbtU3A(tOBVGnZtpc|^*=uN zs`%4_8~Qv&%&(t5ck|aj`-mIKy(&ka$#YBx48HxqXdj&TBrK$Ni+6DUpgl+OF4Ce zd(0{%c*3{vWBpFtaO=ds|NX87!Q|z$m!|FK1>d;v^>)X3>(8#gw^y~Cy!ZHbKKpL# zUe#}z|^^lRF=ww?rqr{^*R2`dQ`my%*ebEz3Ke-ucv-j{aYI zyLCSN#V_Z4`rJ2x??~?R$=qABzX`gYdpmvoOLs4x+Ank3wf%;lcHC~ZyL0%sg=5r@ zyElCjS+RD}t6MWEI~+Vz94y#2*%X6>ji-TnSo@w-)vNo?U-x~q5Gqfg9Q zmFzwFmpQk^GPjVvnU~)BI<<_xq6hNnEc*|yewz}W65kB%lIT(A4DX*X{lHys9{bq4 z@`=9X%lkc$ST=S1HPlO^&;KBN_F(0+RXZMi&3ts9&vUD{y?uKo8}_Z$PKkbhgq9_=sn(@z8HQ_lEAx-0kCObV&NaS2sU3`Pm5}*NyO1 zVqyCF5Rvf#3SG>Ft}O@)^$-SFC;P(=Vp2UX(fSi#dDd|9WTNM>oe7 zJvd>F>4I@Dy?BcBrPo^<{@%3d6HWblAfMmz`>N-D9cRFfMc%D%dvWzVnx@_&S51E4 z8|}@r*H!Q_V_&~&6?P3hrq`o8j*pyp{J6KbZpPMRZENot|H=8cuivTp>fXtZ_suSt zHf8%`tKHv!X}}MO5R>Ci{CV=KCm!81dEt~NzMivv{PABCZ*{q@IU)z1z+G^aD!MY+P`yvLbItJ->DZ_F$>{(>^-O|F_rr&q#@=o^&gTMJ;`PTSm za>G5(*uBGD%9Izg7tDLrJ!Htsxf}R)^BZ^ed>J3Qa@Lyln`W6VUjFH-S^4!JeNJlq z{EX?YjQNg=aqcNwuDS2UVb1T%z19sn6Pt6(&W9&%{&>=ZFL?RvnV*dtc+GC&g=a_2 z?jd};Vdcy@^riha-2Z8M*QaBbe9E7>#Oof^aq*0$Ukp7yc(rHhj1@hn51BJM!sq)u z0^g5E2i%Ya zOa3-{UFr5TzJA2Kljdlq-gc9t+sJWG&v@*a(QjlHRd+wV_~AFRm8HnSb%bH*+_ScQ zn}23dbmmNY$kJ1P%ssHZQ!1X99j(9aA3Y;mNB*i_dexP~7QQ$8{#o=|ozZG_$oI^d zTbeq*PvqXw%kKFq{fT+Q@-NTBXPtccn&qB5B41&v{=RkT$DiIfd;P4-H=ccR{jR&k zRq(bmyUpJHH22yiy`Ijmk1i5!eQ(cMOJ}qyY z?DZ#>dwX8F;Ib(fUAl4FkHjf^RoG*no)}7s_hmM2-4-}&5ow#6J|%e-JLle?-g)Ef z*B0!d)ExQljPEA7KEHhZD#PrlsgcN-%zeMTFk$HjGvCy9_&)kInR+nvlKp~*9EIt} zjv6~|zzTfpX#dY&$-B;ej=Ny)*n?K+D_!yP$R9tNec=aJ-}-s~Z|z@i82#Jh?&xnj zq3_@PCh*3P_pU>J`~Nh^)YL9D@4RQtX!z`9=4GD^c=>Yksfn%F(ov6M#`m9kQ+Gx9 zfd@7(9slYo(%W-o=CuBAUF7__vh0;J_p0_RUETG$$UE`G_O0HBws+1u@$7XMI%dzj ze!)$j`3KMX>dvc{dxmY9IxaiH0g!hwKd;`ay6&5IaEKd||w;3)R;>z-XX+c7G3)za5r`y_3VcWs>&yhBFap*5LL zKAkc9-7SlY+pZe^@`t~DFl*fw$2pn#n*&>7=J#Wj2aokFTtiq^a;NoDqS}|HKh^(a z{*D=QH8$m%oYp+({pY_p`|Hvfvu1C(?f#|j*XlbruG_OYcX4UiDeMnp=KM5yVV~(*_JHs}r7{z6n35^@j5P^>1J+Q&D zAKnlnpE@7dfL{KssEeBrjSvCx?APoJ4-d#AmwvUtp@|5WF#-ujHY}tH%mTs*jC;9U z{OK<)i(ypk@81NS5{iaZk=~FYwP2%Qh8v(49aW13io_=mA{caq3KC&vvWI}FJL08X zd2}s0%Ry zih8P*JSZlqVRW^`GXgqP)I>?{r_yk=nl_X1y@Y*}Gn4kQ7=}+~mUY-g+1p~BDXqnqMqknQ;*ASfE)3Rh`;`Fo%L0DgWSsP2yL&`^%uJ@VeF3)4{7?`+D@k+&U< zTMVB5-GXH}lLA+<8Mf9EWOP}~FiY0v!mCHv2?n6nH1av*S8R^01Igl$p=qg#9Zh-Fp&L(E&8=6|_R zE_iM#OQxrDNUR15r&8CVr@F^uDJ5+lz(~=xmle%iMb+=Jc0X#ZEl9oj$4ukLU}g37 zG(+K1r*k8STaK|{GSV~@3gPNgAtNeU!s&)k_%)F;lcmG%Wfl-pDZLSHNP%S+st64` zQP^>uci{JFs8~2CMMl5G+zvpeS;IApMQbLnb@1xk9vCw|dA6pgf6*U!ct$#5G30O; z&o%Ml#4BhWuZq@&7lD@Njbpn&i{>Xns=^5rgxX`?1-qbU=DCtKuCh_>6&g*?;T5q% zE+-d6@}i+9(BtJInO?i}Zk)$Qc)q*2Ky)k^u&C9mX{DGc^IQ0-t6TS@qKR8VQFbiu zAriD)+_djY>J1aGg2Y$drc_%o%(vzS(wp!@MnSvpJt)~_y$pGF+Bb*ni2h9k10j=o z!6axvUOcn(=K7-t)s(=p?oK7ikA6x78IR`{KsPTWv;RW(TD>=Pfg*50z3=s4Z%`P1 zkP{`H9v}nd%neC@o|<1^Wol_K^4Qc^pkIdn)1Km5bldUyoR;DC#pe>@!R8wDt^=+Q^2Q;vgrbo)1mf}( z=z@`|VKQZP)uL_jS<*XgDiw6N7ym@l*!?AE_`%B~K_ym1;>-*pS>0$~FR&>EBUc4z zWB5xpFusLd?X$LSXj(13kK}k^09Y5~XI!A971{`qftg9UlkH z1zz>}Tg|=K^9u^keP=803Q}WV`Qy!}zjMBH2R=05nYNKMjvehK*7DAgqdQE-d{f?N z-E>e}-1Ub$w?0*gM#qFT>k?aFz~ChyYYD$|N8j!DgS5FK{uhW0XW# zYjRs4h^#rPdEE}TNs=v7DBFyvjx)W@c46x&$gF4>NFOE+9+Zso%0-<|ixQ1i%h~wC zQ)Hm~q0|$asJMuYt98S;ia1(|noGn+`4e>;)ZcgR@;1UX5(`l%J1XR>HrcWA1Hc>g zwrYsf72Jue#BK{`I2;jEJn=YRAe^`?XW-Iuqv|ZabY2RGNM-2A>oL^lFUD`&7gY~# z=5`Wf2wQj1%=6bG^0AJZy0-Fx11BfCC+b3lW6HwLL6QvHQ}P3BaH^57JEFy*ZbuwE z1JkGQKsv(+vI%9YpSqX7=tQ(6<5ev~!w$!%S`4K=X+!ex=?M{Oq^y`%IKcr4dB^S} zn`yai@ltjSSLCJ?4eji)GNZf{22 z7mJ$Wfjf3@Q_ecl4AO+VG0`OqKe_Y2(*Q7$1~OeUmSq5MaHK4*4r1VG|Mll6Y$h&4!cv%gw??HNwj*Ar#Em#(1KY=gb)693K&Z%^e8kvJl6T!f zypZ0~8H@ce-(suzRi_)|>|8&3>DP!6b1AR4N;S_IaJ%wZhRt5Oz~+T%{mKRE3Fot# zUrCXl!%8Q}Fw^eBz+^t_rliVH))CmF0Y-eqd~|Le{k6d?Eb-<^YG-G zzt{T@{M`G?KU@EsdPdFJ4?7so@KJfCU;bJC?L+;rk+Y9yn5<~FKe+@3Rd<8Rg593a zGTq`Woo(NjE-%J?Q@h$`_S4R22K_QVhfe>EgP3Z|_OY1lXuh6T1%LeeC;NTv2A(gn z;sPWkZ?ix-FKsX$o$nV1B$6gznMgGg_VgbXS=gs`e@i`1Nw=`l1{4TpQtCLJKE5fJ z>}UP&l(fA7#n&Qynj#A^1i+8T*{B~5VwE3y=T&#S=B%K3i;B%Rh-R38z#5EL#tV7Zl;*3D5N+9TFh9NP z?n^p8x9z!79S=CREWs&^dO_1<^0TlN%R|;}nbD!(WC=AtZVv4*G|s4-{RBC@iwvHX zem{MpSm+mp*@IIiAz7ck-UsZxf*bj2;Jek})(EOu!%nY84PZ|_?HMKPT+TRfHD;=8 zH*RRxJ4LSD^V`{qosUY6Psi520IwX)t-T?-MgGo~U3Mkasm+(Q0n+mbzSy38`%BPe z_L%?U+f^9nFuLwxQ~|RhQUK>8I^_^neWGU5qJ5mOTt|*8KgRb%gfCFPkgm-&i10hw znRF)A=(mSL5C8V)Yn|rBlq*dXu&$C_MeN1S&Y(DDs3Os&9(~iwe(ppnHGtPgTJDRGsrb z5D)%=?MMIR?K&Gd;ukFqq|e&iE^jwdfX2Ps;wSsULjfxCgTIEzFLmEla4edS*G?1+ z?>FQa^laikm#^QL6-z?%LZ0QziNc?7{bP~$A2L%y`<@+Qo7nS4h0TlW>c4&Sljpw2 z{}wrqy8TR3-)qI-&uQD8Gjmj^4`+(-mDXT{IoDFr6;YelX~BWU>7*;C2WoO9dUOxm z`X9FV_x0@0R{vN1<`H&ypj{Q9y1S944ttSu9l=F8M>cX-U2@@l!ASYm`hY_IY^hN*R5mv^ z0w~$%`WWW9DgBjJR_}iBJDbl4iF6;<$%*GQ|4AYEk1AJ{l0Z(sD1O#qW8V4~)BkLl z=Kl#$o*YNcW9tK3%Q&FwoDg5=yTZa1pL+x%frhdnq9&Hg-TaSGHC*yu60!HRD+=N+ zn}AX2(=)yIWIykzd_+>-#(uN594~zwT;a)JR7<%W>^Yb}vShiA@^IFuoAn6=108U9P%G(&rnT_`gz{MYGpFKc=a#K*IJzPcHF& zlal9b^IEs?@Sj*Q_Rhb^QlL05_;WI;)$(($QZh;PIqT>R_nKNG;OqMEuW$f4+XRm; zT(+nIaN-diufMa^_TQ&I0PZPy^H*xKXbe%YTLSA7^V>{T?A6x6_HQbean~#VWSDzc z={tYv+6P0)?ka!+kPj56dO*&s_?M3gaBSH}WA_VxrT)SE`S&}*Pg~*RFH73Z`!c?$ z9mN*Zv+U|$sm!AJ4f7|{-JL%f80~cGg7r%T8~TH08gJX>Ta_BGBUB}m?$`Q<681_39P=~1uobd+ za7Anee|z-+^Z1LyieP z-)RNL5{ThwQdpuDH(S)to?TPRH>hd_X}Dn`&)bY!026RfT*P91(k;TU)`JYUp*R0i zUCShj0Ewd!Z*y@YJ})b}ODQ4#kRFu|q+_%|XAQh~;R0_59Y@JJ$ zyq^VGc2bizZP}{K1hG=IHwsiC?9j)s z=_ue5;CdtSOKpEi)oHUxiS%ItDVWpYGa8=WlGg$R+NH8-E&oG<{|TucUX{Pv+ka1Q zuTwmVQ%sJ;zfWBLtic0aY56J)14SD-t91C4i->sT`P}x+nAqOjn5%j5jBC*UR(5%3 zci%OP8`N9plKX?hYi`jxRH1NU(kRU@SxLRXqxdeTZKA~U&J8S5hIsR8Qt(%%8xldR z%|3dI?I`Eeypa=?bt;bA?CI7nYU=L-%tbGNgvf?L-PTo(Qp^}9Xd9P(EP$ea1Ps0l zxbUnA6|*I>I`Lis`@Y!qO4g}&SI_>^wqJt#FSTrc4oAffjmn{-w#_`?O8t^%1!SdD zOwq)j#BD=}>4Uj0ZS!N*ep-)z?+N`o#u`nCKz}-^QlLZ-%feWcWw&F{1)`nV*O{C@;@K&KWB$#$Awvq2Y5od00OO*LkK$G2`wya8L-!`n8`=`rZb|BLs$%BQ)hweuiTm`-A3U0BAgo~;@=r&e`^73q~ycFco9CAFy{(LvqKxhjOHA@rgm zaYL^A^=Y@%M@b$7arLvvC~gg*?xuwM=|xhR_KAe)tU^O?Lq(bRp5zm0LUX}&N6QMs zG1E5BCJP%Y=o4GKw$4I^iJ4)TVMNx;m$j~vV-8*_e7wFEbWMNBI&xivglVepYp8-2 zmp;zLY*R@ku1IN~%6G5^db=wh=e3Vh$!^|QsLKQ^G%w#r?~%4Yt4&{#6p$KxoVHA@ z!PdNWcFmmkOx5bZ7m}4K1N@?a)U8W_RYp#?F+%*YfaG|^ntU2ZW%r6G_&d-Jo2?e=oez*rubcp;5PXAk2(DW5#|brEW|hK z1om1etBaZS#m0hAU4k(SmsN{*A{=+0?w0L|nrEN9^RmYA@C@>liGjJ7KB7O%N(H7T zb~t?5l{Qk+;VeZS59#lB^YeiYlSbO}tQtNF$@l>Cd(Mtx#n5Cc|m>GC-L+qo)bIdb%=Xa-+Aq`|E)-xP{ny#b>Qn z#O2Akrl?(06#R%)`R=l`)>#poC8fao=9rJ5LVI_^XI5SapSH;pD{&w{{FPU8Pi1@q z@aY^}4(NNKIuQMqFSuENT&;tzV|~Bf>(kCYJ3-D?xAWYsy9M3Wd}+yDmmg80XWki^ zpN>yJsG}p_!C@9aijwvqQU>%pw4!ijlOwPqpSS^3>4*-j()7V6jDr@Aqot~~iEY?> z+k+Ciz*7eM6T7Qg#eh>FKt8mQPx%ptLGU==1ky7r?U*e#EEe3y1vYO%Xtnw<%bUqz zW!qM#b#FLYw4{!p3TqTb;^M;6(_L(sn?C4SDmAtxA2ybyeb_tcOsQTkkMx~N`r7d( zx2|dxYx8#0wA&C)>H`I7wW(kZk6N|NnwR}tHF+A_`P>1YGmW_i@kPbZCMwPglF6S6 z)!_|Yrt4uXZS8KB(Et4CtAUzMA=J96nWPQjZRBH&^2%waqjCNRr_l{CE?CH zXaBEx5tXjT&dz;tF2Ds$$NE)txKSSS0k^pmHih0lcSi~J ze)Pp>6Bs%xruq$P(7SwxfG+!5<9!{)5yhor`;q$>eCpx)ll5KtAC7;_;$6rby}ioi z{kk>Cik#q@nOE6BkE2mu!c%%cUYkrBlxezyb|}iZZ0rc_CY`6(U!uk-A<-JDZS>fA zQ5+4|p>0Q8I-;i8ceABsj$?6sHX8bNQsUhDCX>)>NQZ7r-B6FWyf>T`v3|qG#lutt zdGE5m|GWCSFXp1$ks~TcdJQ^$cS4^?oq@$oUza%J_0ng2CYyCO$gqaiF(Hyif`rjM z*KMKR**Oj%Dk<8kz3~K}khhQhL;fSZ?~1G!2a34HBE-!{{pZ8vQbPgeA=r@Z|*8MPOn1**YL1w1yel-&btW>pXsJOcRkTr9J%p(^D z4{f$wiI8j0nEXb+_}|^{{g5${vM8Jjz0$1ARJ+Q(Rktb*UfKM%KlIV5)GP9ir(}aW zbr1aD^yB)?plVgU$I3ZmAaT(4YQ3>G8TlgA22F?B7=7#Uvbxb|g8SN-8>Tna+*QPn zD~O%<$*mD01FbkfEG)OrPBE-UepFN4AQNiR0NZWaRgihn-)c8A5Jfl#ez~~ zP48(ZI%m~%>6ssuKKUA4oX~fl+*=>*p$Z*31aof#4@=Fstpm8b90i|*Z`zKfodW1< z<EN~SzJL+ZC!Fa`HQO#EAo|hbC_b( zw$U0CBRx6y+|kchqTJVCiwE$)Hs#v1IvJ5odO~^$277H>uO7aG>Qis_Y4xM{MLbV$ zIoLPfFaQHC>79(Rc9ycDcP<1~H!sZXerE%l2Nj@;a1?_@(}}nhMtuVPw__`iPSKN# za3r;QtGps8A1aq{$Esa@H&jyk)u3nR;M`*2jW&$CC`=&yROHDa@S=lpV+FLkr{)}Z zDoIw)i1Tf_J}Jn8ayx4RABwQNf$1grt!Aze8J;WaX7r6`N1e?Fin^yY60FT;gv}KM z{o^i91dii1^-u!6AgHy>6GOSKw*dvoZ!_Zr9kp+kS*5s_$WR?syJ!LuU0Em_%>D2_ zBvrADQwaF_P?@5YtX@V|@nFHTe#x9tr6NSKWZqO?qWJxbQn?IkY0X`k#yz97VFha} zzH?(**OR-~DvvOojgE^0P2@n~l@_4b{yVDG%ZG)jWrEnXWOK*ToR)xmLthabtb4`n z{?{QAR=dL6h?Ak&Xi^HZ5KNya_l>M0f3o}p%i&a(5{ro0m!{B_m!GPebn8|@$sPRq z6XrshrKe@(V(OEP?GTg9{VBFsL=QDMf?Kg*S#88_{@|*$r(rGJBc~J$Q6eu=r45`C zKX3OB&8~^^312+NclvK;2kGl?N4i2gg5#G*28p{NS5L3x4k#7;IQn-Z zc{U030fXWZf6L@(Dc$)IYrrFHzpMLtOQCJCc!6oc%A5GT_UAUL^yfB8{VJ;oRVk#T zi==oyDfU&5X`uraE_1k-DhCDGSj}@yl&PhCs2&U?zNEw+A22X5YUz>RuZgt51f~qD z2qewTjD0+}JmB%24Og(!vPja4pJ5bb|K1!q?=YsBXnFu?8J6%ZiGpP|3VCZcWwJso zy963Q7g*7jwcOknx!In2TEZL(vR@KQtOY~fX^BH0dD(KO_xXSFGUbY&p04C%DB z?xM6=!1bgFw3Z>b0J3Bq@@X_%xbQ^s*A`M`*%r2~j88u2K`4?q(TMehf8&Lk^yeIO zDs&Ree|5PlI4C)m+AMWqpYtRD3J@MvPr7xG=hL)B+J&cWr@ym3Tz>Hi6%RluQY(l+ z^u36T9wsY(}1Wzdv2V&d5?@4Vi|DagR7u1o&Ger zff2g|vFFF=S%(2%Uv$~$8uvVKDiB}({y?!*Y4sy?YP3b42748NKzyCDjUO$4Ip0)L zMzkVp2rs>4C?8Tti0uyC5K9}h4=l8HM9AvNGWoANLMhO%bx(xG`tA3#w~Y~Qd=?~piLL`<=HxFYq6q=JZ%UbrTKU4r3fvsh;B^?j7T*>e44Ggf#Vc=G;w8)#6+BTsbjqHQptv5IXY3vmKS* zT*EV~hp&vv2RxOYicG9aWv*Vr;;gmHa7xMX;zjn6>%*dV@4k}D_!amVxPZ0#&Su~j z5?Jkk8S`)|lhtLi(p<(HK^blK+@{c$$Rz;&Wk>1G=jUW_>z9U18nM&~+}$Og_^cY< znsu;gK!{wcCjJK1dxVUgb!uaL?bhHCWkoNuwhQ2@utHX#@l)EtyI~zF-8sPLQjW0I z*X=iO1%VgLX8CEt=PBLcQ=erIIlqb=_rKjCjZf>W&%Z=U3=(n>r8x`J0BLLXIHR3<#J04S_Vz<3%K!UM??mc* zI9LlySx+dKm~$l%okBDKM49~y5hm|lBH_9fR`a-4_w?8*@+L~?S1Ux{IkgKXl; zOl^^pj+B>ivu6OFk~23oY2;0qhIUy1Pk_N;0?Yb$#%rb*9t}TR0&HH&aVxiyu)wt> z_3AnLnzcb~CNvol`5sTY-rQDwTVXxpIdDx?ps}aB*XkIq^jseoG)`}?h#J$QY*9YQ zd{?vRJKOc|Y?e_bW>IciDPlLXUL|^1(L_Wj(vR$7N4EAn_+egM2PK#R&$lP!3ic-v96^B6I3V!w2_rprMB@=xBHd)Az|llk;O6vqHZKL8 zDcNAXEzhr~zOzZOQYyD~Sea!rp%#vp#<*N-tjTxukwMa3^f~(dOOs2w_Ga7JK7}Vj zh@XHTBNo?`&C<^1Y*$s@x-@Jtl%JoKA#Eus1HqIas$G`48hKf9vALIFScCl3>sOpG>n^a0UY-_RRF;o&JQ0XE+dZOWBZHREn99i^i`S|*INg!$KG5kv#(U{O zpse4z-`d(I69FIIS+T>ko$S>taNe*taQi@_qm4gC)iJBI%S7s9FG+`fS*ZvLUE+V8 zlGqe6(CM6sK4sJUmQ=ZG3F!6wqZ14r~-82uvcOfml)nq;dbk zBk2T^Z?Q~rqRV2!&6aI6+0r2|kUMTpxxy~nAb&_rl{4NW=zaqD@<*Q2WQdK$xzqxC zIH0qSD6Xm=B0n6jKrOvDhqh`o9*|LxHqxhs3Pp-!D)TnD{}uu`u4?e@yzkk$kHT+t zfahh<`*XEL#1kMoYC>1veMp;G_Ox4hK%`;J7kPC{=-%LxLKSwkP$3i@pm=kv znW6c`7Hx+s0-4eHo<8|JB_*ajsJSs~Q>gN_AmkoPI`bYHX~}0{goI0NREXK+_NIJT1L%Cbx9cC*y4{f#sG` ztEbqZPWpx!CPtv?3!PoMO(%xwkXqgXh-Z~OOq-NStX|I>xU6ter!^U4HYWpVeJ@fg znjhNA+Z0}&i7b11V6^dJ{Y?}YE1Isdbgb7#_}IMmVAQ;V-~s}akH~%X!f;(!4d|gl z!CyRv14g*w(P?CDB_-XtJpKl1xd=!gFHHFHa4ayhWq`7oAS2_h3Z;`#cpVv%qeE2( z2^y$MHbDV6kjCa^EK6pYBQ;^Zv=qwVuCi<{euhkX7eTg%@*Hxlhd2r4-EL!LUo7hm zbY+|c0*kbR2^*t%i(Y%;h$MU#K8{F%)f#a?S6W4~EP8XvG3|`m59@i$j8@>H#B1p~5Cgs83wyAL<1?uZKh0cKrDQz|@kCSqx{D#7$bvP|i`iRA`!F!8#itGNrruSn)Mbo0&d zbY{xl%=d1@@|#0*lF8C29vi0lP*O#NxB#;%%Fk;9sQNARPnm{k{`NEpl1+$b!3_pbIw0%OFxaNN;Xs&kT~d7+&U?SYpM zo;Hez;wBn}rTs%y;&fj`bn8ylA2EWfbU=_6z4%1vsHW!SX8nac|7t5SgKy1ZuZpz% zj^ngdkGG7BP5VftZjKEgWH{;;_Vi)Xcj|)j+CA+`hk212_Bz2r7EA^}H=TP?yR6^D zp#jypA)K;ZuiVvPThHs&(3EMX!|M`lFAyG$1Ygk9G~R!mC%LHppkp>ZhZ5)VF(=Q_ z0lAk-F&9NL>Hd|chBgrgtrr}ke8mvz7%d%8Ga4w%4wS?cP0nkDrMpP;=HoE|)@uDj zUhtZY(TFz@Z^9kk2;jG#liZ8UDewSu^|^VRix?s9JWQ!xpsnR@Rxc6`&Ht#*mm>YP z;0oN5u+(>#Fo;--beSQkRNl;SnlRsguerGpgY@258;3b_2%|oB-hXfUoo#+;Epc67 zp0tw$T3`2*ky$D^Gwu(m)(fbywx^v17}ZO@EPH>%J+ZT=b|u4|}f`5q8WpDegpVe@eqqgnW~Oh81e5>($s zCehsw13oeMl;cj2);KK(6U|^0osUzn6~3VSLFehGQQVQB zN=auZ&0^M*k00o!q|%Fz%c0Gh%TqC!<3>B`Eh^x*F770} zZWa_w@~`;5i&W6EObJyj}I6(bl2OxpyZbOCi-r@rS11G zxrehTpO@iyaRfAVsaC?03sWnt2rw?9isQ%yftE*AmJ*}v@Up#(v92)j2ZLCIG~=_4 z>_8a4y5dTrfJ!?)TPyyHpmE0}bVvX){w>}ERS}vT)*6UPufeTK!c%l0eVQ?oeoAl< zkIB*{Qmp4DJ571&QrkB9fKXeWJI}eX9OPuQw^QY~&%AQ~8xF6(nVWqaso&WoMrz8S z-}Z;Oyq&(%yt%x{2-Z0Ldw}Ue3jD`Amz1Do6P(Dz%gxk)^QW|X94#MQWgU(FhAI3J zxqd%+%70+PU1H7tOZY8X<4$bAigWUy^FT>PSIqe7lP_3}?B!5my@!NJZ86ulN!&7x z1d>kR1ulLO3!Ly!XZqLl*0QJ8JGgH!q^S%PubvG5d;MKwBaUTwH0cciHTjz4(5h(F z-D4aJVmc-d(~H!im#w81y-o{FMpf!y7fLpW#9sKNQlZxI$l#NphVV6wGRd1q7JEG+|_SQ-GI0acoHWJ6lI$ ztpdo}5^OC~K&}~@m!aoLNE&z~e@*x-aT`!LMh;6;RrDH%*Y4--EMmVq$jc296f*pK zMkZBJWX~!TZlGgw7HZWNf)ne-x(Y?xn?`r|KRLZ*eXDmwJSgLI4;f{*sW3c&D2hu1 zus(~bu9hpo?otcMdFMKG#A256yF@dMe=_d znNQ9Qu9cCp=461I$T}UURCdT&YZ+}S6I%YAjh#aDy8Vz}U#uJz9hh4|fBV%c+3k5^ zW{4)Ny2yWfz-Hv($f`e_6MMff%APw40g5&hpc`^?s~rvxV!H%K)|a+lKO5BXGJ#$w zE)&=n`hdd%$I6TraaH&9C>9!m(wg$}KkzmdJ#mzU!3Ja`ecAvFl@Ow`RNkP)@Ip`+t*j^SLl2~lSv;t_|91yIlRayF2IY{VML>{XL|l zBe^x7x7t*^+P1Z;IvtZ`%mdX=(w*|A3e;3aWw)zbKGOEp2?mE=*WkJ|9(HI>=SuCQ zn(C4E1J&q3Jpf?;5qx$i$UaPwfsojO7rnT5m1O`p|FBn8=FWA?aGkPUP8<<_;U@5p z{pzFZ8~4Anbp_YoI26KQg%5kCYv_HRJkJ^ET|Sh5f;s8uj?b*dP~y^$>+Nj_$3(pM zEu0h@d2+{7DJu*0ZB6j1?4AR!nV9Il%})1&s|ZzP+YybDy=%W)wi9NCgM$us{*zGS zUxfcb@$BjC8z?=xoDh7>KIKa5Ho;_SsM$LCV@bD`BQaawGEv>3*l;E>PsnAX@`F13 z%ja|Fzq83My*R$cnjc177FF|h^{Ts=Y%v|DlI3Hb*UX5WKiu{u@l&6f3?$(uTxkS0 zn;Ql|s6p)luSA0{S{+C_-Iw2zV8tihH=Z%8QF8HvyN>q!_Kea)n-Gows<2?e@(U*C z6y49GruwnVftk}~Dc~;J?pMwi|04X0;z_ca-n#tl8?9hQOhWk|(tF8@D445E!+dm) zl!X=PGtKk*H&umUG_zp=;OOrD-hIvg%?hCJ1meW4vcX%)#AdtP&^Wof;C6e9iEsGE zf6Jl&Zknc#8_My^&WU!+!yS@8H~4m1)?V+*Av07$LT8Twc7C0en`bj845YK1luLVF z{Y#_&7uvC&Qj?NZ+0B+^O!xDjpy5#opc+Vjpy1QiNVdL&eDsM6a4}ygt0C4)>H7EG zzVYAt7}W|C;|$Oedy|e{Yj3bLsNK1;D6D$vl-uF&Y^(xx4&@WKvuZaQVh#=Nz0z6i z9m6U#bNLih$SQmjvvz*So>hnyU{zohz7qY$q0G-JbPQwB|0w+b4VUy*RFRouy`G=-Ac6B!~C2>_r>GVwt!ja+!MnTJm>>uv=KJb45hnoci literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch01/1-2.jpg b/docs/vol1/image/ch01/1-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..946d6e7189faec703b7c830bfa4a8eb11486000b GIT binary patch literal 79866 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch02/2-1.jpg b/docs/vol1/image/ch02/2-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..793de156358350bba4db083649a378d1e6e04eda GIT binary patch literal 53067 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 RiAmfQ727}kb@AUAe+M8W!?gea literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch02/2-2.jpg b/docs/vol1/image/ch02/2-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..796cfa1edc0694cf6554056663579531d255c6d8 GIT binary patch literal 66529 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch02/2-3.jpg b/docs/vol1/image/ch02/2-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4a02ba3be8734843f44767a7b170edc95de6bd61 GIT binary patch literal 112707 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 ens#J`cvp<-%_qq|F@d%E@f@Ni?e~d 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 KasbMC_%S!$1Ag zzx>m`{O))E`d@$dFZ#0?o8j5CKahXGe#Z(I^?&@Yzx(?9=dTjK`={SQ+0Wm9{lEXW z=sAwXLjED#M(4F+KPyafBY|h`A>g({qa?`RWb%YysEMu{`mUyk8k0BgzsOM z(I0A#P1^v!+zLtf51bA4tCtX{6Js?fnp4blfTDz zf25c{;?xh{K0p5DKf$*@^>O+~^B{hE9{l?AkKa1BEXyAj@()e_Kyi-aP>etc;`dPE z_rqF`!Rz<+@XsG1Kgl^HL)2&Om^JkeUvh)6nZ`f=_~X}ue*Szq7Dqonr=9xp{ggOD zlQOB2dK_R7arC$9!SMWC@i#~QZ&W&6s>k22_&~Gj@wc9-s(-(7RsCkoVKkG!4(M;T zcd*wsLCs`nranrb_&@(v4~FqL!$|%;mHVZj;|#<2o1)t9ruY{vf*UaGB>MB5!j%0f zj{cZ7eHDy<$*SOypn01-{)GPZ>R+e!tLT`GW%AampQrn+V0=0L^6Ho9FAXWPFU9*~ z8PqU4uiwW>8cgN*<6ns1<9|Xw1%6rabM=?<-tGDIqyGe&^2dFj1Y^_NO;i5mvs^A^ zISpg~b@c~=`2+pK|Eva4R(~z~|K(5Uuj_o*yPt0*hhR+p^0lyjk8!^z2pik|5&lnc z2*&*p!@d*pDfufIY7=Ma`b!zOO%Pu)Xzu>0{#~J8R|g{y2V?L{0l(b{_4~5Fl4C!o zDy)O79DX&vUxWV3;r&eIPt)~vzYY2!`O@1z|M-*Qey=otoqHIxuZ8!=C5y-BUkI9c zckjDPe{I!&Tj`l(kLUOof@1$#>)W-zSM8g+O8W8i*LvSB{=Ir{{r(He_Zn*74Pb6}vyekIA_1Mf&7hE4W7Sw+7=yg+brP+d@RR3T+W(hVwd;tU;Lwo-dBshKG=$1oIQwx&o_Zz zU;jfN^F|75{8iO`*Wca(?`!r3mN9(& zbeVfUxd_kh7<_$2KTi%l_ZdMUf&Z$+7xBr>1Nb5wzJBs*RGOCYb^q{n|DoP-(|Qa1 z{^IRdg+K`P?mkotNr8@FXAjQCLq4hP<#430_TyolTrxblSiHxLw?LTP{^m=?<*3b} zFFeB<`h7CXhyacI_Bqz?*?xS@yp|tnEx(OwM!kNz|LyOmg%SSNC&_eFLbVG*%dl0+ zKPvI73jgruXAHkDCc=zmKV3L%4k-Kkml>*_SO&kLk#PH?++XE>78o*6^pN9l?NIze zsE}1KQ6uF*y*&7Z(7p9Fd-@ap83(So`&$09K)41KU@bf9BRHE_bZBOUjLCSV+q?_z(i>|5Y(R`_exf77?07RUE3oZf5qaC=?t8==^jNwtLI-Mc?y?}c5&_r&EP z@tR}*@`y;`c_W;MVhNj5#QUF~`v0lGpC0o0`zt+EM5(-2?t1s={B8+e;JIYr(e+z* zE3=JH0`)(n8`TIJ!e_7D=GOApd9OvPFty`j;?klVwf-VBzY(s*21RnKx3;YM# z|I3!Ye+k4_3%}j4Tb<%Xk)2?5>TiKyk`Ftu0)n7|CD)?*ts&yu5`QWQ>fXKapou&$ zMk!6;<<0-=vII;2^XL0X`F2s(-(PC2y|1531}-_5lZHq2?Wc<0)}_PmAH2>B27fa6 zgx{;5l_GG|0Kn++5Ax*aZtI`Z4&U@V%>=h$R zvF?wzi}!d=`^)80KCh`-PM*Rk05nXk{K0Lsm?y4>pwO0uOx^+y>En7_sOeA?*E>(6hjzG* zkDYaxD1C3RDIiB_FedZhA9crk3p~Eye-3Mg zCQMz>n5%hij*rNao|1U14C^V#`EgJ!>ZKlzt7;oB*hneWZUtRDB90?GjaobwPVlro zT^41`*`D?ynip3STu=1DLcKgrOn47;trCmE3xz-z`-_J^Lq>dIzG23tNELqnOf3Rhg$Sx|3#eJY`Mbm@Ro~so-Vy!|7#&*VmYz zs3shqb8zM_k^FpF=kpLXuT6amJnK$;e&Xk|&&QQX9?r>S=oqwM9;^pEy&$qzFI$tm8kV&iLUYbkRuS$Gbn*6%g zstax8OQtW9z!tV;vXVR$MCM46{V0RI=Sxvka_g;@z@9(XfP4#-rbm6+$C5-gb+@LG z%wvtdK3}qYY4Cke8*=EE?1APT6Kd73D-L`bQQYw1HXb?d_2 zY~raWJaReE5540N>cBpA;)pgmn!N=YdyT&z_my#t1=$fhBX|kB;<6aEv>zRXG`9AT zIy!Ii+R?-;*;HxJW7jqBtwkTk0xY&(8kC5N8uKGyjo_lZ+%TGL6Fubs1KO!)ES zxPn>X=gP@ND;1Tq^U`b|zjh9KcZ|}~U2Sw_(Z$_J@(%bta=X&w@c8J`lK*ZYB|c{F zjNewg2t2R6PhxY1KS5jexQDr6>CUBpaHD6rdA=3LiAYNRvrR&g;rxY5Z!WUkc=zEF z`;R@m>940voU&W$W|k*Mw^_&y;_Ba!u`nPwyI;#v_dM&K#Fg#^)_r=`x|i5@q-=B| z^MdQEHHaz*Qt>0uI(2C<$GuHVb%1h%ORRHfJjdIKpu?v$1;p+czUVnQp=PunmuG!= zM0Wcs{qqtPuDBfuP5C5 zvvqK(EAxcS<#Dm|r;~^sb-O-m`Gix^?nxsT;qq)Vm624cy1xZxDI?!6y_{`(rEF$4 zKV8+e!Cv`2(@=`8@`2H{21yD&Fv9lW6*gja(#0(5&Z1~dD|Uf%ku15?E%zJYN8?2u%ZVW|Q~e^+j7FK}R6Ph; z{3v!42AR~!Ub6&w-04*-2E~hUs5YpoQx_=hOw?hQJ~~luUUETpLDik*PVW}EkAu1G z#dW}B{Md)t^lqUNFwg!K%-N3ThqJdZz4#d7V6}G2e%P|D?~QVlR{Xg0!()S20j^16yk;Cn-uobwx^_w-pW(5rW(A7u3wSWe(KGj*d* z8Ou0fi(T80nfyMw&b!?u9FGYR?Xr9tuN=Q)x5d*BCF?6M6qQx>Rc|e7V4SMpj_!Xv z2d*Ls1WjZ_sHsjbC?rZ57wv0=Oj!Y4Z>Uvs(@ZPqxS?T+q9{UrMVLiMNF{%=KYn+L zhWy3&_}Ie30Dspx3J*sV9>qy8Zqj~vfXnt!4tyi;mqz|_m=FB&^`CLzDgDT^*Mp$i zqF~s^*AkvyLv((z>ATBcU*7*M$1hh-JMh>Io^U%o9aA)$&%K|@{DZ&06!=|Xlm(c_ z00;IfELe^v&tFX5P)$BXkNhVLKLa8Kj{NtLzahQ_^2_A}!OMBi7tlQ@@a2sEy0F3T zp|>z3(PeKm3Y6Nz1HfrF_HYeG1Z032`v`ofCg1?##k{->_jo!I$1J)X9ko3@g_rj- zGF@=S^HY7@Gj?yTkNH>{n`sxFyxvHCuQ^6tFxO3c#vgllKidavx?H42mG;la{VBoF zbr$B1nkx(aN}>7@zuMT{{{jd+{1y8p=iP}XEcS5#SZ%(MCLY%@m3;P;c9))UBqguM z=PfvAmrBm46%-xW7qsP;ZE~ybU06#*QqywY%3jqnS=)8f&O_Fpc>QFKi0d3oGlkNa_L!t)}kXOptDz356=G#@wVU>+XNz;aeE zyMZAQNd1G`Xo+-uyke(V9`7zo`CU9^aS@9S$#&OmSsyKi=-X4Wicz&4S~trWV%0YE zMLh9w6GHR23B0xsKVbzvg~U%|@He}EC?(ip>Fi#$Q&iuXwCJuy8w7PHS6#=fW8Wb& z8hmD%UqDUx{qalB4lK_(RJRlT+jsvgJ-hXrcYD$IL6dPgw0u1EnqH=-U3{y`qvDO5 z?E3gyU{Ts}Q=<2mCDy1s>uQZU2t%U0DzqeeSF&+JX_ux8l&MJ%MR*KFc}0rc5z6fQ zZIe)3pGK4wTJ$aO7j>3>%i%N1Uk*099ES4cfr;o?c1<~Z*QY2Sr060PlT7T;(yuEU z?b0|z`71nTIqcp7KhOF!jThg~;=k(g+NT~b{i=EY&0|=8In^ky-#=l+zo$$8s5kEx z{(HLgk9zYK_?ulK)ZmpMcU_um-wIFZc21e?#^g7$7z&LVhpSo~3*Ic%qa!iah`-z# zEyK4!{~lX8tz)`1$tUA`Z2{#e+#ZRlNkQUqM_=aN!tE7&_w${=k!;;ZzQc{&?P-}r zA)oQiWj9rQX*-(c`Qx5@OstTQ$ft- z*!tEsjbSew&SIfhxO=i;^47d06UlI%?`wXh=?mTZ?Do zH$-g|Foc$KmLyS3k2m*nvuTfI(YmIW>p=SDyM@SkeH~h)3hIctH8YM2_bg1a<%VQz zR&}c~kFy{0)ng6UJB_lKg+zV7n)Eg()`lbU<~!kahtc%;(`BV26{LC@7CIm0ndP@c zU^QIWD<~|&yhF?s6!${SNORgP-DV}pX)n?(EoRT$86}zCcU>Np)pg-t?-m+MzMheL zJktwHCZVQbbR%(qO%YC9CkuYtEW6hjntoPhaWMId%kQ{&*jr+_jWmV(_84LF+S9@C ziI-!8-GZSgmu6~D`4~c!O(aRw>}esSTsLVEs&vomj)vB2_)Patwo78=`pV`VgBKI0 z;Ae|0wNYn2o0Ma}PS+@D^5%Sqt-b0R$8&vV*I8vbG)}DkY~AAh06Ea@F>8K8t0gUk zMSEc_kK*&3Ga|#2q!wdE@7-k+Em3+YSd3Bhh;(Zt=NydL)fnma=SmW@X?J^E#mJ#$ zV;v6EnTZ@VVbQeewMMVg^+mhbx(C~+eO%(XPtGpg8apKg$>tnuxe6{D}1=l7f-(B4CMN!8g zW80MN&*rY3uTGVpj&eI5TA8$t5P~5+cfUWaQg)W+_7ss@N*4^-!s2{)xnVm-X<4)k zu)t^P1JD|zlzEC_(Mt;N2wCQ4;M?6KP2D@_G)63!+)@R}0-QcVEToeBfJysVXuu&#tYwy-HeT1J8XlyX%@4mL=Hx z?v@z(wQ3kz>rZ(=2j*v%VZpAPb{4upn>Ib1B#g86!Exfzy(s{0lh*{>YU;2-?ZnKzpy5~po$M+`M?itOQ)p)=bU8@-Hn#{t0A zG{|yMQ^}XX4x_&Duq?M!ib=mXSfgSap+yzrjeC!wgLgrcdet*1a^vMuv^?L$96jES zElG>0dT>S$-<%l&NZT&3ezRLO@Q;IYtb1^sLhC5psng{U8P>-oUc%N%D8bFDB1zJ% zW3gaI*W;|HdO4kKj>jQyIi^@KB2slclPH#5x2c`QieiYM=|JC`?Ho;Vds)Bk8r+>1dFAc)Kx7JA^92z^fHwBbztJCnR{{1 zUq~-DbT4NFn;kpY1X{XAY;Q)=SRZEX;}YxTZf(!~Sdi5fO{`t&G(E)QZYJcMMz#Au z7IhiOAR&J&uc!oyTz5XbBXOEuF?MiRj(Pvb>XHuLS;ZjPbzkZuBm>f0ka6$0tIba=rs- zJ#utaUl(k)H3ii+cH13n#ezWTmSQ5K^`Y4wj1&Hz<8eAASEaJu9k%lJM3_lVyvJJM^&#-;KwsWfcjSLGu!M!aHj=nqG+RL&nZuql%L5z^R@ zr7$tn-dP*$gWQ=Bl;A{Z)P-8E?khr?+^p`4=K!j`mv{KfneF+aR|LtD$Y<$s3j112 zB%2z8C7-?jya2Z3@(JacCoz)uFQ4rq0<)2>=)nfirdR7x*CFzU z^yGUCt?ue?2OSCKN_Xa!8+QTaKZRQow3-`Jp}8Y)1Id(_G8Kg>901{E2(58SG-uke z06w87mhkGzQ;oO4B-wG4fT^U_h(9)&&3q9< z>6ql|E-eYFPH0$?S^)X5XJFuQ7*JM?e7rCE$j408UhE)E%z4`nTEwpYwFvO$SeM&2 zhs07;WB7CcQpF)7*C;KoyZHen+$Io%1l&D32xywbKAyt{eg&ir$n|yZu>*4NIj~9i zUVd>J3aKumf30GdClfEp_u$@5V~`^Wl9T7Uw+?hXU*hX@ndPx6x=#RJsBF)pUL7!Y zcD-d1Z$ETAD$iz#7WLZpNrhHAaytzqH(WRs2e3JBhc84-MD0*fiHrmstKd65jhc_ zbc-`Q#9C^LRK)VLNl}pBK0qD`IgHt~#$Ou&xSIwr)qIvk!g_qtPdpHn>;5%#<00@M z?RQK&mG|Q;D|4*V=3D2T5fkjgTMwUXuE0Vi$l}bY1ko^C%#=csw#hoCkD9tPoHjeU zrIfSXV~a%GMLJ;z0F5DHJzQXw=oM*Gn()Lv$%U;LH3>^jl((ytjeSaz4q4um@L<10 zPR#Q>d=n6DC$3z$;n8HKzl-w;@>HKseXGTNsmJ0$|Dr`3vskpRd~N zBAu6;cFOl6PEA3268zEU3%1hG%5Bf}=IGlA%TU--&znMfm_>2{K5Pl`7FhNtqP@P* zbQ(51#2N+w7~)F39CctvSmB$1LxQpQz4^jcnRn=31%6~;k1~v|l^-wjTqPz!FgN%1 z!5o^TN-H1nv6yVUC*o77b}s3@N@y&Le8zLQsa)tnJu=(#fr^B7Hg?E~<3;;m!1C*F zql2NogzEVGF|Z`k!2Yqy+`PMziD4LR@XBQT>6!Lvhg1(TY^-#ai5K`lAb{E-7Qov8 zWL&_0zE~H}i0kA`l7LR1ydGsGvyZnUno%iWs>|Yx^DWjeX2UkS_wDd>F$lLjoI_%` zNEb_%j7)*VMj$sQdTGp)JYRRjf!${1qu5pI>_~H`B4NzqnJG29eS(T(6r{39!L9@d z@9B0zFwx2CC)K%RX|Eyuz|Y&ELo0G?1qesbZhTC|N3o}z*s6QzE%eE|PRVjz=@~LjTFMAOA2jXAa+;YVzsX zK}cJ(E~m7s(E&RHklcFLYI}K-U|m+S$gZf|529UPxtJi9E>BmSowme7FV_bneKvYC zlbK<6mBL9C0bIH#(E{pFbJP~*efAjaaRkTsyz0Ubz|ogG96!=#hC=MarLADk~%~z zj@-vR+vMA!t)`dfM8}#j$56>RZ+r`+u#~!6uoh4F1zFXDRQVLb9PcRRGFTE5+Gr!I4YJi_9euX z{q6ywfts6J()AZqtgZ|=?^*+~>qtZPJ_(g=qjkU`DAetJ$NZ#_(q?CkVBpox!zW)E z?)OZj*JFX+2@)~({V7$n9-dUp+ksv}8@-@RG>j2G?Qj{NUf|^f2durHa%lVTi)X^;j6Yrsxjud;?ClnddnK7Dw z%_z7gbjV%cKHOsY-A}icgEph(jOA#{*XYle-(BV*cK?lg09LU4&sCQF3T>!U3hdzF z3v>N?KFfbe?Em)icSH8>@_)~`S*fGsTijQ(=k>|$gAz|$ zr9H!q;AZhoV8t2X4(9N>&5GvL?LiEa7A<$^e4W>qTm1u7e78{UTs$;MRm##PaxHC^ zrn)Gw6FO$S4`y2DX3%Hy-}LP*@ZVba-%{=^@ZZt`4R{(EIf$3+BsagxJnTfL!otmO zr{S|w<_@X6{kon_$r*R+u9=$?6(^zb8dq9nEeu#khRgTfC_41Zm1Y&KW?NSrv5teP zXoeo>Bttz>_~An_TJ)5dBDQpDo}%-$TN7W60xhns?go24%YA zP9+CQDT&eLbueuMj0DX_ zatxhg6F1*8^AHf+E?n2i*uSVIA6^Y_52_0k7QF(n%lCG+(O1axi9?W)1lv#tAJ3rx zf=e!%=%EWvwLvwu@|BQU=FLa$^%sNU3P#3ZU(CxC3uFo)|1R{FqB;g+w`)hp1?kF)zG$YsJdfE%Mj=RyA_;( z6pD{_Z609x2w^qia#t)M@rlDN61@LiAcX;{e2BHndWx`|n&ii`!+Wfq;=z%IUS6N& zh^#qQk;zWj^-52ZMP??$rqS!M6z4~Gk(c42>90IIdKx~dKhko zF=yfd`kb_T{j?q>^p&}{rPmVlb>F#Hh$WwgTUwv>h6#3ET`@2A<1G313z>*ayBT_5 zxaW&$`$r&_6rEN<1NC&@_h)ZIf-`*}@m=bzhJS5fM$XEyv`^y}inxh&o_@wJpDiFt z&J-omB7lT;!0G+h4oH?HfE}9>ZJq=0Xv@sX!8@7TZeZ_M2sU*TXeb;IwevMjMhM%+ zp6)T?ldV{QmQrk)CJ~g`=;IZaLzuaSJ}T6$gR_Q6AhZy_3$5c0 zVHf&$`c?vC>gYJfgKgPo%AX#}t$04kZ(aTrZm zOh>hsatv7u$lKcCf;#ohxh&GH1@DfwA=^sB5J)*GQ&s%^Q_y1ld-lK z-Kn@B0@%VUA?<+@hRS}KVC;-IFk>uELQ=4J1#vp9Z-Fl($gkbFS>%00_ETfy`>SS;*vl&((ES9hEghA; zl-rmEls-`Rz}|$|X?ubJ*^~yKdoN4Nk&Cd8K!(ot)M*3`=>-x}V06~kh1f18_8K*z zMvHY%g?1a;_+jNlI>dX2_A31P%ByVh)a;C5kV81idD-9}92>#YGf@A}+t(^617aGM z#L;C4#Qd#I2h0%%tW*+QZU76OXaS?l&gZl=59(ly9IQsl#LdxXqL?2Vzb3A_2CQS8 z)4JnPF*hqhA@^he=dRy12Pb=w5ZWw0OU?3JIOni1P`pN*J;=}nHJjbZJu3hIPNQ2kda@_)CVk~#f zhy-GJ#|iWB*+!Q>#2duXl{|5Aw%2d3H8_sb*eKG|O)bYc&nwZd3{EnXqkM&y-T^Y9 z@i^{B;JVDAx6wUNDQtoMkWVt@*aG`xUS1tAp}-Xo^zDFkG`nkQ3+qm{v+KljfoD75 z8jd?&ZaM8v_BI?1Iv+3E3%`Qb(0`~K?=HihSXVh|Mw z;3#f~b?)XWpi%lYJ_@$)DE0+7sdisp@^~+R40jOZPYZoCt@j$F5`x>2b2{wc>8m~| zC(^?)FWe-0w%{mTP2zRrS53vVPL_C#+fZ{(DgysSm8*qH&$wb2 z(Fbz1R;KSU6dnns@A5GZSP6hP6;=C{q+gS=D#k0;&-X63e3hFe;YfDJhj5U^dv?7d zgt(8$Xf9Es33u)e_&fGzPiZY_H0Snuyu^iJcG&Q2*NbU1Jv+F!nZ6<;1of&))*1aM z#!>UgU||Q3WlG5orghenYaX_c&xLavAH~*za`;wwr^=`?H<)$GBx4_vNJb)}xul4>0bL4Ay>u;HX;B z=(XQ^TE@@o2Bxc{P!pm$?u=R}hTrT+H|xAcCzOl>q_%ekL+w{l1YjJoU8KUMwn8os+&4&g+|IBO9AI4^e9bwk5sE)FK-KoWYKaQqxRd?@{=0iN zu%)-W552*6@O`nIdtRdY>FcOOjRYO?b3G*@$xVLKvybPU5#al)H8GG^eF?VT9h zHZb5s)3DF3r@dqp!R0+EO(VK)!wb}5|D-wOp3;@a73GUI*+D}}UH6(x7+@GeAS&@H zy=Oh0L^t!augt?P9$Dw1Hf)x-O)9?y)&**%3T6whmYasC$aVs4yR;7+r1o^98gs4= zMz8y^Tw*I*PM0tVYHepF9#J+2ukK8>cXT74RQE%<1b>^3FlFVCTTS1XuqksmB;`cN za5PN?coVkQZ9_2Z&eL`*sN?La^0}xwrb;)BWr^#P0iO*m!KQr#W{`Jve5Vy7pBrpO zti`qQ_d4s;00mt9;y8P5o&yTuLRKRp0DHA>uAWrl;WX=h9oXv#VTr*=pjz)PgSTg& zh_O%Y1}`qfUVJg7C%9HOB!z=~Ih2uJp`X_ae6!ZTMT*#&aufaYbSS z>8JprGwlil9iHs=?=F*c^jsi{a)#i1b0D$i76uS7T#?rv0>=LgPPKlom*EPjz3u+B z@1;U&2N7Kk`L&762{@SIXB%CLUFe=j2v4z>Yfj2_o9ts)?XS1xD#6*RY;p?V(zVVx zBT(no_22jT9gH{q-3xrDBtC)9F(9L^KP!??n_Bgqyx}eIKRjUHb@eBqZ-M{rX8fHNyaoQo zgZ{(Mcnkcgx&L7)-wAjN{Qupg+;ZeLO~@@)a}4MWr+^%RoDjP?#`W3m86?_;7+X3c z+lDozey%9WKop$4%0P|nucGaAVix>Hm)MxH4I5kR{A zD#|NQ2N=Bfte-IjiFDN20uv?oEx2@_F$4&UWJL6OM!WlXL3h6@&xn8f?r}_VpmcIr5t>%A$Z~xwwzXihR{ATli-EyaxQ!TBx z6+BaHXU*yf5?~FHG(?O?7rYNF?*kDu93*2O$63>zqkR^=2=T}C)VBVMIg9)FSN6HW zOC;iE4GBkxfC{9n$m4l2f{{U``-eD@!?fKtkqOwV6*1|2;A$ZVh$QpfO$fXJ$D`|I zmk6h_Ds&@$k6s;21`!-kY6A_U;GNy&G}23n^k$D>hHk zQDuq6?_M5@)Ir}yB%Z=nJ&Su^oG(EMoBu_g;PB?z-)EH=m`DWNEl9d_A%wi|Nda<( zRpxEU=`B{0NTmd1ukfbNk=n7}cT>B|)BZ7PYRQ(6HX>-$=D7ONysOO&i|Z9awuTmL_mINm`m);7`!XOa+P2m z`WP;6(RTU>j8tpq-e(*falEbRjv2*1sTm)5wjI!epYg3kdd5yx|0t4zq?+!f^`7Vi zYxC}K_QQt6%9?;uwgnSKHPx8su-*-L) zQ5!I*nURL{N!!ik$u|2^amaB~LuUWsiX6dFR8!UHjJ62xh9~SWAU`W15L7vDRuC>@ zA^Hu;O=*b=D3s*X0c=cQQkkK%ILX!Hryk)G8TjYMte3DMcw1y*B=I*+U zVMbR2os!XN5#4ZC5+fCtNS)6!wadleMz$zjqgC8N@+5fP(X!P)`INvfESq3w#v4l7 zT)Q*)H@qr$$@3%xNo}e-v)S4udWc1Lcu6O!yN;?X5^|^Q5@O8n8#$8lAVO;YlWf%@ z`x?l_7sP(67kD{<3)mJMWh*_s2Ciqqa6)(jD9B^0@wUm-Z9MNYpm>Jzu{$H%{KZ)` zUR=7BIP)=IBOUwf434P*Ov8Eaqok_n0?!VSDbG?!^yn%0ZVv+W5NX15|OE6Tg`Y^VDXNCxYOda+iI_gR|@24UfFak5E* z2uT1|Tnc-wiu=@1`St+NuAH94qS$YNR~-^0iajfJiGcMD@x6K5dCN1oBesy3j_ZDL zVD+Wb&--UcJ3!o2&t+|mk#{6krVbYJHm;=FNX56%EOEu&n!QS%)%oXiII(dSN&|OF z{>GgmYoER~rk5e9i`(ont7!oWn&~AX4`uGW%l@$1))`V)}*s?nhCp%-hC?{N9PkDQgG#^j&we;u@pw?}6fTXP;@Ceb_A6 z*^xN4p0*C3gR;GxWp=i!OgPJBoJC>_PAw20YTs*n?-9EhP4K#WiM zl2MRQui#t<0_hESf!ile8N+&`;oxI>yK0Qb5rU*&OcYe#fWX8!PH;@eQXr+HZY-u< zMhdlui;H=9mib|R9BcW(qr_FNi)Z>-dN}O(RgJjUx^Eos*?-aXB^<0byqTljWx8{_ z(f3m+uinn(9Janf&Rry4J{SrXP6Po`45Uf}4}D$vq(7u_OefvSafFzT!Jadl5_o(% zyj6+4i2S-sxPWpMAOu&l4yXzO;l39nUL4_&^11Dhkb&%Zf7bW2^nqDQPOB2{@_a2| zmKyW1x9YU$Jqi{G%?5c7?>O;KPv0vTxqRLjty4q8A6VNSFC6BO_M^YLh?wKT%lL%1 zHmI|NQp{ZVV0C|{O|>DCv||J0$=r{k7PX0*c?JGlGK;6RU?_>>_!_7E4vW2@PX{g% zoDb3-vJ?>URfwqZufUQ)d>_s_csn0b0uEqA0hP_AwmY7HA3tGdZpkfu+M&-m1ET46 z=;IowPQkNxncy3Nr}o$qUP#!vnKQo5Q{a5<;^cb22X%we9o{100YL+s^v}RrzKjQ ze9tJiJ+MA8RlMxH@X(Xet4?2#yU6y8z}X*~7D818hPv_L;i;Ah$Gv1YaFA*xJRe>h z=Sf$h|E#!Pao zn{?`*bfT(1t3+ z)*@6nuj763Kd|#F@usK0;Cu&@Pp~w$UzqQl(;WR0WjX>Gc2knJ; zX?X{=pySQx`>Hb^+MS7o!$%K?9%<#E!^qu~H52MLW(Kb!OShQK03u0PIQx(=^DWy= z;~68^0t1G#;DUH>S1$FIW_3*U0| z4c*-lII99&rQaaZ{+dJk9>ed6v_2ME;JtwH@_}}0Hf&mf z&JK{Zz$yt6H$C>AgBYk*)1S2rHd2ju9Z`El`J`Wu@fk4noy2U9L(d^w-emSJIUS_N zdq{f(E`S#Zs@U5o0rPT$t%I-OaC;oUR{xolbh?A)G&Dsq)^Jry`qru6XtXAsXDo@< zV4t?s6KOh1ArCd_*u6!%mll%oPKx+eUgb7WU$56^qpx>&J*oYyVbmP5aAK#Xbdy$L zL~^-uZmUjjGjG7KP!S{L99lqm4plh&%RWwR*3v4Z)#lZudr*MSS_V2IQGA_J5b{|G zS3I^G^hBZ7ai&UrwnO#1vHCv; z18|!58>?*J0qIU(QTka!9&MvrY>%Bx4b?y!LOzwEk@{#J3{mH%i!6(*B;Pn|%b z(JPSid^}vAH{bwj;A=CG;c}JJhD$qm5k=GM_%#}ar@xaA7`!tDvUu)6SJq|x%yMtH zoL<0MK6;7R$JlA%G+aI&m_zmiE}+LQNQ7QanVHzYNN9q#&l%5uV6_`7-qj)|ApXHF zb+7LB2O?MwktYa@yGSqxi4BJ;u#^Sw!G!}%5(Otcw*J&v3>p#sZnF4MyR^wmnR>{! zC@&fq$y^7s)%n0|{%iq|@gNevC)c_4i`3OLJalho;Q4U4cBA?|k=M>^U6t$UwneT) zu`Y++I!JCPUS=>N9b=mb@Bb>i%KLz6T2nj;Wq(qoRo^Ild9zPymqV;;?q7$X?1po7 z-h>uII`ZHHXYUp~!sN1QBfMpYfCKZuM#m~bO-u8wHi$cQL{cG<5CwH#)nrU3Oxtor zn1P2KoWdvLHQm!qA{xP&<%;lvrJg8|UT8^TuR;0wXmJF>tI=8QvDswsCv+iwRf(G6&mYX{4N0=AqVV1qxmW@447ReCr;0!o%1+Eq3 zT!`oN@ek)!?=fwLOk3oiDnBp?M)nFgV?@H+s6@+?G#L^jhqSEkew-sdB=y$$;*Yxt z-pq<;(?xRO$Wgm*?%pTA{Qt7|-eFB<`P+B^6%hp~q9`iT6c9ps0-{1fNTZ}fK%G=b zFC>9r9Sc}M=?I7p2nZ@xq}azUU_)$xjEZ3Iid}yPnHk-k-F?6NefRoZ?;o2>!^u<5 zbDq=B=iK-G!3=;^xS{`mlE=n{gW>IW+#FD@is9;Gu_~xafC_*ClAlfoY|$buHXNvn zh*C9?QrsZwKAc71r)Y686oyC{8lDp68>$H4VNh&n1jh(=&zNXHijt%f)UmiwRJ6{Z zg-UM4+casbdrpG!P2{ z`YGXhy@+Ls!H0$d%{iVD38rjHJ(YtS9GA7EBr%cjca~E;U|;+`PfiZ`W1h?&pcniF z-1h@A_gjSDjaxD!Dn)|*HeE=@e}mYD-~s>gZwnhBfPRSK`_11%e@4g+gDMpoUjtC- zO+Y6C#wamG#HVSs`~(2vGU-EPK)Ds@sL|0HDxIGStYbtj)#wXAd^i$SWlGV&IFSUX zfjI~<0;|9fhEA&Dfk}>mmO4NJVy0*S-jx)lk@%Wo2H>w)ofOc40ah;Qn-)O|H3kX< z1OQ?cN<|u@!Bmh)1L6U{n@ojF1r$sG2Ee)hjqv|A4`UHJr9sRa0DTHr0Kms$31V34 z$SA!)2~c2Slo-i_8%R>V2F0KUXwXqql9q%LLoonhl*HiyFhtTI>PuDuA9*#}H@{ ze2QL+i{Qj2L*?Nxo(V=oL<%`vP^wfTCI-M#fbAS=()q#$I|m|^0BqNPJ^8;m{;gvF zry?7O=Uaq-pX`B@v9SRxx>_H}ltSsDQZ4^4!XR=50tEx$1Px3F!vutgW7G;2OflF} zWD1c$M53Dj0!|mIMAA%18Yh7&5XgvNY(uaG(QI6lUc^k|F(P>}NfDwHek#yXMrt?& zH4MmIYIPyN`Ul`{pj#arMsXy*2~3|t^oiO?lS09dG8x!>q&$?$P{2Ytcmxmzl!mbM z00pB-lmaZHimRst!~h*L08d2Al62u@Ek&S=#j@FkHb}L^M1mj{5ur~dk_22ePp1_j zIBaQHtQIAYRZ6k+NHlJ6X~v0x!%_t?93x2x2WwzBR-1^_sFeh@Nu}oS_z5zw&d~ne z?`gO&7#|VAlj}8dm5ig5(NdB~A);`qLC>KeID?>2Is=$-v<9kHlq#gdVMc&Q13G4j z3=Jhl&0?^L+{jQi4$xT!U|i^MFzv&0!1e~1rD%|xP<|3cK#qUtek%5FPk7v`FbuVEZGMgB5bv0A30JKfrV@=c8mC z9)%3_o1|(KnWNETpmB9Lw42!G#={1)M0B-(IT6cnspSONpsnlK2W!kK_18$yg# z(Dc4wUmcmEhAE;n*=iIunXT z&;TL;7c#(|mGWaFsY#*;eJoiZU{g>)G&g{Y#itmsF&Z734Wu4O0l@Uf0BGeDydr8~ zR{pz%GZhfKfzbz@DitH-Dm?|k1@I$^Kzy<69iDIf+zqGGdb9qp`m~j2MTmy z0x&mWVK`zopy4ycCbE&EjKvI^S=5LqY8Zg4Nt8q)&{9FiXywrgC>Iwig#qhYN;03v z3l{@+KO=?&lSV3KV9yOkB^hIY00q|wR$MAFV5JiR2ohiBU|WtfDEWI`m3t1xIJN&?__;t?zpN{c{AdklQYg`>QA9#$C<+CWqylje z7Au;Zk|+<5u>=W(7-)nL9nOXMe#^rUPNa$-3M6(kTy2yf(Lf#8)}gZDSQJ#D05n`Q zsE8^s^h3B^v=z5GV|2BjgI0md0eHz=h1{@K}>RKuw}3ff1aLpovrvz~acH16m+luxK}7 z_~^lk4Q%c>Ca_;{D83@7Hb9gjG(lrTbb6v11CYHuUMN}^4cCxjbU2lUjttNnS-?bq z66k;hL&u7aG)QAo0N;hcV^TPD=Tf zLUL4M3Oxl17EP&P`e+*P)dKcFRcI*62qT9h0%90QJV_-M)7e}gq7W-%VOS9`AT6f} zVTygh+8Xq`sj^h9N`ZqD23MnSZUVvx1KWn-VrDp#8=HVjLCf^45CFO}QlWsk3q`4+ z6b!I&05hIYgyAuPU=K7oDjINXwQ>JsZxoK2G~9c z;9g+000IldLB%2sMb6@3v`8|ZtW6LqQDK6R0AdKA$kqepsTkh`iCh2xW-u|(U{nl7 zsNt%aF)~Jo0ha={Y9nMOAwPtuH9(0Xtvn=_XcWmL@>G)wWx`^72X;M_Vm>AkN5IO_ zkvzDN62LPtL}(3-&mboZR%}#wiZlU5F@;IkP$6B*6^r@MR3cE20hUuG1t|O^^9?Gs zhOAFj!&Oi&*n(!7q|r(eQ$|Zha8-0!I4nfWk3<18&mf&7Rl-VDL4j^+Y$TA6A z8>bV8>B4~SEna7e2uLJw@IZ?v1PM<_qyX|{2$~liL63+=iGjoh*pDHnAZ2VFpt_(1 zBqLpcLM4O`>>1#xdKT#XzEvBkJ`9*+*a9e*29#sK_@&kXkOW+ZX8|@uB0B{g6KjN_ z=s+lxj06iyU#0+n-xElH87P$}gvgZ%BsLgT0h>Qu3;z}&z&!x?0!k7tvjrSI$EXURum|yn zCP1C%5fk)0RcIs&aEo-n{6^y7p(Gp^u$6q7fU67V`-(8kfJ7!j9~&JRi6e!EhN&50 zj96MMRjUQs_Jk0*kuHD__Si|7@Bjs<4&o@l7AMjGX)YCXR%{V)oJ9}$#^WH%Wk8My zbc((bRv5xJT*nNE0;us6swTw1p0oHk3aQ~lKFU|&O}GU0+e#!7$zO8?-EHY3OCjifWRYQ zNMo3R3dS{G5-Kc~C>~t+a3f`azN8`mcN2InOeG*Ev5CfSS;Sxf1?MCHQ6NfwFkEm+ zVm6el{W5Kamo z05~%M2K!q*gojggSiqNL0VzR63=ItLD zY4k9RN&;4bMjbT(NGym=##oMl#ze^m5kXXBf}BJF-I|cgNf4{akpwB&@8rSt3O=1H z(uB#08UaH`00P)R2APqfB{GO?K?qe1sQ6mlpMw}!#v2TSudD+~`ZRHP6doTLt0pV( z35rfB@{pNVySQ6+A+WP6h%hp|Lpbw}0?hfZmN5Sc+)5fWjsW&@sYc6n(Ue zN6_jqfGdeH0px^%qTmcJe1N{Si3;>|ziezkOTHZ0Njs{k3#5?@RV4YX0LE+s_^ zB#nT^11ALNC*g%kG8!P7h(JSop!EL6<^jdYgTK398uYF7_uiNO9S>gv?zjG-&#D1G zUl9?31ho*bF;#jpVJ0}>FOrG^#R!BL&KIEl0{CK)A5sjwbqN52%uk2}Hc=50AlNX# z$=F|R|DMX3VIZvRWvQ9yJ;s^TktNWH-T;tz!pQ6abx92y=* zfWd&ME)ItbfrF(<7#u$E^N(czgZuyT41!oEHHt+B}{^j=XX&UhRHh5a}*8)Qc;SvEH zCh(Jp;7C8D5RLG|AuxPDF${+YzzKx`Xo={L*nhbFAH}ZzUuW!K>i)s~-yicw?*EXp zKR8kQz1EPVNqV);^uvjPcOUSc#uRJ+_UIocfHS;*%e&e)r+|Tc;efxznMr(5$OE|p z90mSy?0b^GdsiF0;2)Ij|1|dp;{W0HfBp=B0aF1#c`%e84DJ_zWx-H^NLU~W`G=pp z!IXTv>YqoFq?YKD0oOGo0W|J^;KL7(2R<%gf9J+;Fy_C#^`AdNmhArH<`wPSOv0;&j!k z|K^NQCHmc4sr0)e#6RBqhbaI1>fc+;KlDTSA1U?!>o)s88{+=bKab>Z8(zpaH?{xT@8`iy9cMQ;Q5jvF`T{C>r?7 zRY(OozRm>P?qV=Apnr4G?>RI0oF9DRe(UuIj{=Xoz}qkMPj|n684&)ge*ek9KPa;Q zWb}h^{r4gNR-XPhyZ)P9|5gtCTNnSgcKtWI{;eGNw=Vu~?fQ>p*N7RjQZ#&_T&#B$ zt3<(W$!@b|e!Vj?hK$G0i)KU-$+R$tnHdB!l0=iL)aIih5T!~F3__u=6)nglKy2!H?dUxk2}Adt&`q-a;y@5lc~Av>W)r-wky zqQTV&kvK^R!plKek*wDY9DfeNj=((v2%8TX2j8Wf zgabf$q>jbFgYXOpWcbL0AHsqk!g_HENGAk>S8GhbVvwkJohI~lh2d~mSKu~LA=c~t zqCuhXbs|^1TB+fyOc2Q6I}h9iu^-4=SCGkQ7!Hm0gZqQ*|MT-NPyTt;zYYwP?cf!! z=--ei40CMbeH8dg9c<2t?{^Y{e1-}pnaen`i3hFBs7>`Cw_4ya{PRRSn(l}I|Un0A$_{#gnCFK_!H z4Fkc!dJO^&6<;8Z^ZX&BFE~Ohp0q-SI9Nk0;x~dbW`C9&&58pVXnEYp_Xg`d2!r$A zzW?USd>!~{o+M3h9XO0R; zEs%?lE09jeEl4lq5#%|fAM(-6%*@hkl$nE>v)N=bPcvULxEa=LrdgO7&5U6dYxa{_ zf|<(9V79<)nb{h%9J6AxGP4@9-DXW@znYyjyJU95?6%nhvzKNc%q`4Enmd|LH1{%x znq$pF%&F!q^Eu`T=34Vq^X2Ai&DWckn{PL-H~-bV#r%r-E%Qg_Z!91d))r0{Q!M-} zuoifWC<~s2#6oAW$YQlcfknB+4vYO3r!6j9+_HFV@qWm#Ar3=ahxiQ%8bTVv9wHo~ z9kOUh#*pG6)kErsoEUO>$n7D|hkO}2YN*Rl-=Tp+$wOm?CJap;nl`jxXw}etLr)I9 zGPHMS|FB`hoQ6#uh8ad07CTHfZ2qu}VWq=%4m&#R(y*RkZ!9e>oh^MWgDs;h`IdUi zG|M8(?UqL@+bnx6-wn4OK6yBNIB_^{xN7*);RVCD4nI7+ZTP+6AFW1Pd0GWpMOlfg zOjhfxDy;TfU9jr4`Z&UF#MBYNBUmG3BYqySe#DLuCr5ORcx7#E?PiU$rdvy`msqd2 z-erBp`nL7^k@h2fM&d`tk2H*2J95j&qa$yOd^Kv+D6dhoNAX7KN39)IGwS%L?osb- z9Blk;$TlLI#Wp22^)_ubPi?JiJ#9m5=h~*)7TE5!y*jGH}9JZ|;4o#U>I`{3;A9Of){&US8azBzu#c%Sj~@yX*ijz2m6 z@dU>SK@)@%R!`V7p~J=8#m9x=GT&vhORLM9iIXOVPt;5-ns|KT<4I1FW>1n$%A0g} z(u2tklV?trPR^TrWb#ATF|Hx53fJ|nCtROTahXDzVwh4k<@}V7Zd2XZZcE*Ey4`di z;f{5exaYYabARqJ*(1VZfyXwF4o@pjtY@NUq33DOw_a1dxL)aA4PN)Bj+;uJnmTpc z)UIixrp=nBomM`r-Fuif)?4mf>V472+y~{8=u_fz!Pndu?JM;y^}RHG=ycq4)%5b| z*ZfBMh4>l$w)x%mck-wCFZFNme+u=0@}Sw!)6g#g0}PXjfKHe_i~?H<+YfsQ_kj!H zCGd8{CN6UH)}eQxA7DH%KVddtu3;Uq(bx>^ z8Qf4@C~h(CAntu2I#3_DC-7O2UywX#Yta1}Q)h^0RLtlJb_?bQmj&ON={obLnZL}u zHEYT&{;cv@cV@fK7R|1jeJ{j2L>96=x)BqI+lbG@QQ`B$kCKLxsHAMtHS$EVkX%E4PQg$XQch4uQkm3Z>K&R7O-I`w zVIDz=$c^ZV^o&$RHbg<9$WggbH>0OUYoia)htZ?yCG0%3u9Vh$Hz)z8+n#I4zG&$CN3;4Kdv_(6`vM= zbD10QEEy@!; z5C@BM#P=k@k{rqXgy4kSga?VU5(^R^OYzcT=?fW2wn_F@9wpx*|El0Bb}EM}e^NH7 z>{W8r3H2m(iu#hqSCgi>r47{PYoF_=x~e3zq&Z2AdPgvsYBfwVtT5a*&NP-7-z9UB z_ompTs8U)@KBiTsd#S|K%K1a)3+EqOFlE8d3vMqASy;BnY>{BmvBmC-moM&J627GR z=Mg{4e?GS~U}?_M*UPxe_Aj5fe97{j72zwkrP-wE(ypZkrEgj}WTkZF`BjKjMXSE7 z7Oiex6R@UW&8G}uMsp@CbA9I5wUV{x*P+*K%o>)Z%DS38E4w98 zb>8dzdHH7xkOi9xM-&^`TZ!GdC$}0L)oLGFNB(!Ab2A2)1HoPqrm9}l1y>Z8; ziJR7J`tXbNm+NKWW%cD=RE@7%Q}ua^YRj!^M)iprOij&J zm#yoznQt>}d$2uz`^8#9ZQ~BV9c4S6cCOh4*=5-EaQ9EUukNAlIkp$OcSoIP-G+S* z`&QSR)tl;{HzYRPYK(2X)I@1Iwm)e9z61UTwj7*tu;kE~L+cKYIK2Gu*CVM%-W=5& zef(>}uRX`+9qT+EbG-co{lxi`)RSjU5l zC~myyFm`<+$PJ3eaWW&>GPwSq|e%AUt=6UZ6-HWd;GhR8r z+VUFt`q-Q3H{Jcp{*P~0zjJ<9{T}=N^at*TdmocOS$n7}fZ5kh$a2UCFh&ix95HsY{*bc3-iA@G?;Oo|_3L z?0$Ik;B&rqKt@`afizm!L1sZ7A00gU?c3Zfe*6A=g>#hXl5Obw1^q%S;jZYg4AZtb zcz>1{Kl|;Qu>qg&t^06jCTr1+Su2ZX-M{)3@~fV^WZm}@!C|elOg&$AM&&y}%xAU7 zAAh@X*2CBDqrYDf0~!7mLQk^oPWcMicDWb-=QZ@7Anu?4yxsQuC1Fb-|8GBmXyd&8 z{C=TkOZ*&4U+~F0H6CR5wnr=q zX7=~Y$4(CDIrq6|&JImvj$*f}dxPygFFUN?+OmrhN7`|mY2!@^ zUAcdsY?fJ;?Rf<`RqnKb=vL$N(c4OY<`ZW;gH`DaJYdXvxc=2$^<&0Y2yOoJxXJ5p zeH&uLJ00`#65&r5)E|!X*FnbxUw?9eOmF;r=wXR9y{P)ZZs~*Tl*sdYCXaeG!TWSP9(OKN zaSGw_;p*6hTc5f!$dt(LlXjo)kC1oucHxqB8+v@!-Yp@d$MZ!}ri>*n&JxX^zhzg5 z?qmMD(vPDXZtfU0qb3L2#l%H#SL^}GC~#5)eEMUj7jXBQRNwxlNccl^PEM7R zNaTt$&A;GwyT9KL+wAZ3THA;i11pFyEWF~|ceOUGk|=!#F^LQ8drSJe(p?ItH2UVO zf2Dl7GfwUaM*JIxrg6R$J4YKsPVRYB`NeSO+>@KNMum8lm3FR5nz!Q6+ZhRQbL?3= z?$rA3`VbW8lwVP>%ySBXm~Ypfu}+)4BxlcJJNV*DwO=7i?{7C8Q&u)gQTFz-ww$eN zSMcl%tAeJ!aG3ge{BQ64S3h?#K3ad_$i0+0ahzwzlkF{6+a&c$zk6tpEBG5-pCz+Um@G6u~WKVJ}z+L z8dn|=S6wX}abf6hPfD4Ul~IB7bgar5LoXc+)}f)X=(!uDwr3i8F1hCwy>!1aBI`~@ z-LAsa>hha&i(ikL$z6q7%46pWay{@m>&&gJu>D(NveI4fK&xQCto&V&ac#vjhvkRI zjJi4XxM#}#nmu**tM9&-z3g^j-#dqRTs$|V)fcw4_>CRr-jMetRW}z+eR0}#En?dP?fAABd5kS>gKn*4EM!)wkgboNFFt{@?CS?(*ZbNr3@{*H;Zl&s~| zZ3!n(Q#`Blh;#0GoQ`nmf0ovpJo0Ho-^5>?4$RNCvxApx&KWhd>}2I|x}EDe!!vI3 z@?q2&rN0&#Y%yc*X!qG)T##&&mRqBSjGbgP}?_#soKIdFpN*D-3& zWQFoJ&-3oP1@nywb`i8d$5T0b$TbnZjeS+LmV*Qe+&_D3;qtzWT}{vTyk9prI+HAI zBNMb?-ItDbEWc(*6fRtPxB2XgtNxMo5ma)`s!XS2)N_y7!&_TdJ`Bg-j2>?lU)I}2 zI^Udgyf&OaLVIt_lw*|WrR|lIx|dE_)*R1sx4+j*caA4HtfJS_T~OYOWK?oV3#0$a zNi=Z|UfS9OjS7mKYEGd+sqU0*#t|N>)$k_$x@yP(*PoZHli*^lygY#@r=9R@Z_Z%pB&3wDygR`_X}T6 zAKUG2sm|J~Ss&+7>{mJI&a=W_d9Rt1&h&-&yfrlHUewbCc^~pUTgtYbo0B)M12<;+ zrw4YgUoZUm;qk(lqTc;;7c4imEU)f&9(}(4b>KZiB7+kjs-35k&D?l&B0)RDwx4I& zyLiT}C(BmdTD<4tEZ_I{AO_#bE9aUypM!RewET49D`eL2*z2D{pASDTU3C4YS$$LA zzndMHc>F+AMEw=?or*^^?9($yr#B8HX5PC*gyr#C^ed{kJ*PwKwc?ll?8-2_`|~Be zG4)>CKeT16^JyaIF|OV-?{3*J?a7pVHTx6Yg7-xjnf03=zRj2uU^%6G_t+}Rk|@ub ze)jlHloECn!#?N6{`_v@{L_2hn+kiN2i%7pv8+G$y9mU+lmZ+@`jisH-aJPYx;%AEH}hFH$(X{XrN=Zkg;!`JH8jBFHM zt$7){;4U?N;@eEYgXS1pPKg4x`6R-l^1l+FuP9eqb+P1^ZqxK&f?M4JZPNq zO3*>3!7H5dtUK^l&zh$A-Xy0>Q)i?dz|+`hj$P&Tz7HAoO;dc~J8FXt_=Zl*u*B_K zJYna&-f5qvEsJf%we33Cwi}h_%ZtnEm`L_XRGZj3eG>CU+4%BvrfCaKk{Td{qcxg&z4((&t3>*@*Y>lP*auA^Z;uMnDA zo}D~!LMvL8)40yzTrII;+nTUR%|&(_&mlW6!jn`2VbWvWV$BpaD=uSMVRTWOFxN}OJ&gETE*5^%o z)FGPX8nfMarKI4IK1Lq=aBYjy`IBEoT8fqR_d)u_6wwzq(O1akxUZ0*m*!e*d}Yz! zWAWK1>MNwxUxirT5O?=NmR{gaH68zWwM{#VEdcWgW2}X}ycTIj%`X-Xgu5KXvjUYcp*7(#okF&w2b!+7tuE8H4e&Wnc-w+$J z7H}7Yd zV2>t@IpubEm7U^ZOxC4`%D&C;6_sIa`JO{WKY0{4i|#Zj+lH~d+xB*G7}NKbx-&`c zH9K%Mo;NS^#L`DzKuYbH|*6!Cl)E! z8SS~ND~;WQe8{NVw8F=IO7E~M@&?z=hU0?qwyDCpv^6`EM6P78I+ttXHG+h`tVXIs%mS& z&7NJhR#|1|*Ea5rQL(t*C-`?gPhF`v8&+fO?p~HXZqzWVwY$Z8k@Z!S0^kj&H?P6! znBtwdOSUR9?@5<;dW*9DvQ$}@Ga`z*@NZg=63>r9};q;r1`Y&MnPAN=v?vK z!s&a@?nj4xd9lTDX*W?{^R(*bo#!cMS2@KIPt?a{H6N7RB>PRhO<8%y5_djn!lH21 z+^MS@xzx(miz{k!P{@|Rw#vo^?=9t}%dSE92Ce-F&BpT?>rZ8^&*dq$?p>|S^|}Kn zW54aa4VypghOz;zjJv&i)aLG$Ps%FZJXNd|Em>Q7E*`c<+PWqf;o&#yLrR1v@nskM z=`WY6YHB|5AG8EHw)p!m@0xHse(J%y4K;Dt7CA*=VS#LA4Tn-dADYrP+6->>+J=|8g z@AR5`Z58zoo$i!Q9o>uke8qZugKftCkCvGIu`jxm;V60n2CeUFD;F1Zc#iGQD{If2 zU(Z^ZPA-+#$J38D;swIR_V`3Y@ca$#ld@fpExm*o5kxQYu|qf8cTh?WRJ*xO>iKi< zvsAc5S$r<|`Te{LSc{sNfnjfv@~prsY8fSGk1WWc;L&+sU37X`4P}B2*{ns=+(r0p#C$FQQulF4sI9k?{^rI2raLs<{6^1I}`{8*lxN$)blbt?l|2mX*kzGAiFHuU((!<>`2$i92e~FRvv^v`(JYvPRcHc73tw9euq ziKn!MHu|1|A{&Z$YFVDAPsrQWHO50k@viD1$nl>O>pIEghLCk5^LrePS(hfKr{y>= z`My8~TSB2{KM~G;g%BIQSeG9R6=6SLD!JQoW$WuFO*d9b8#$9Pw7A<`i^kvakIsmByBG2U`ok7VPkBllk%T(A9qFKX?H=d*4k zPR{@IYMK0xM8jSP_my8(3cAxrweQ`!c3O2ptt?5qm}EJ7pjuBTtNixommhQZd)RE* zOxq1kzi#VaIBPT=V)a|X8#OPU4Gl>?|D$rapxdw z&N#-wA+5{IE@kfwO<7LpwT|_8$bL{(I&AaQ`EHqJ_S;9Hya>rwr*9u%Fk1`Pc2aBY z59d^ue7^5;rz&`D*V8qD4>TROU^lo?b7tC)JKynsXEt_4MCoMbrTO-&R;HiI-t~~z zo?G^5kN;7}{vgluzv)Y1NjHr*X5@TO?y+6n_|nOs$?D(yR4?`0BvgGexo5PqUPP_^ zFghNu^vIOEbyoV&a}1O2pcc4kUS3mS7i{~ybe0oK- zbBTs1P5$96yY@fYWw{CVDgh>6zzStfH5R{&J~sKwIlqcCH?`+#%9FkJJ$USFD`~9Q zChG~xKEBSoFVi~P`EGWZEMk;WUOR36R@Auj6Mf#G9&f{Bw6A(Knv^ax4e6oBbmtYj z)X1MdebA9W%XoSvJw{8-Ji5K0@2&%}o%xD0{N4FaovDdymj%y**lv*A)HRJMf7(rG zzkxm(WHWy^YfDV-gj1pMA=Rs(DOIvByiwic4Z`)uTVW|#_3>G`afE`ay^P$lcguwn z3dgmoaKD zD3aC>nagi;XSC+z)NI*)>Hx6A)TLnF?_FHFHZWjhT*+l&XT>3N9HqEZ#!5L=JLJxp z12ygQw@!VY(dR{n~;PgwpvaLW&EbL9Jxu6mw zZuph8w1yo#HS|Vxi=_7Tbqkrr?R!Q1%7Y);F8gKIoOTlBReIK)qXaJ}c)<>~zod4Z z^2@qUbK}R7x7X-UA5JjlLAhJ_m<=VtzE)WHTg;8ip{F6 zRy%|5g4rSkGjJV+s>DF9FL`IUS|nA^sH?v$lEtloQy4kjGWugTmk-L9_coG@=hie< zH-4nvz6m|as?nF{oro+hnsmirO!+lo;X#bJzDc8-zG{`CEmtr>^yqXAp}2Bb#nT-( z%j4c|v%cB+tZZtFbxdoCUFT0-ab3uqlpRIhva04o$$fYIfXQ2|5e1-+^UgmSJFL97=B9V4|;IAqEXyXtncGbIbM*LGy<%i4nb>P+Nc2 z%TR6?@3n_eaSDOFf_heDr=;f?ANW2n z{KvS0zB%%`EP4t2D@1fU%;jxR=;K)NGB}yxAPZV}MHFY>a!Qmw_IhsYCy&|aSYnhx z?p}Y#IMX^gXc;x@?pY5xe)^WV?e)2SvYF%ehi`7IywO*%?GzWM$f4bwcH)GG)NczL zeWQByriF7aJu0{z@RI8msfw$AROf(5*JLcboBgD%{6_Wu`mCb~<_B8dZ^-q^H~!4q z;h?N?SB*W9(!t29>t`*I$sRzmTwP^dp#M0blG9zjXDD6KOKALe>j_$ z^XX-n*O--CY<~`%y0MB7e%GJpbIo!&g~F&PZd~JO=Q*_Dr%Spw`Q3Yh`W1I*o6jY+ zKB3T~&j%qX1!3*AR_|mMb5$U=UG(ne5wE=mWSgps zHD^g$%dj%(3r_LlkFMy>)A#RX=w88Aw+T<2_ry5w@u=(QaY)O{j?S%#dTon&FU@b+ zD!J#dK^oVo+=mQ5VDbu^dC_KVKyCkg!#>6ptDMApGiu<~5>W%U$3IOH#?#xDOx#}U zw7$O0q#FT8YP()stGmEBV9c1F|9H3Gp7WUTh_#0$g_SLuwt^8QV~C2e#;ad^m-p_QKf!=>5` z`Zk|Ur9PogF*oXP*QSzIQL6en$tjunXpbYsd61ctOjYCKF8KNF>4;Ea_j*)%lUePX zgHPbs@A-J}Ov|{171MULI2>Fe4?ED!sVi|CNdKPnzY%h)+K z<74*S?w|HfsT@B?dUkr5l&+@aRAy&q?%GuN^X*sSAb)mMP}@9unbSm?{}|- zKP$SC_2$Ff+RT$nS4_+J7=M{!tjNP$8%aDq^Vo)k*H7H6@d?d3PE5R9wt(ju*Sv)h zsCUk2iCB9 z)Na$uqBqis!$uA_-p>qOdd&T#sIIO>L?(}2a`^fgh}k(PoSBovIHy?kDtmWblTT9R z9B%`Umd$wJ={dANb;V4+s@31_MrLMLOv9ApNSfiqw$&u~i{e;W*=v>i$2*f#7EMr| zblow7?fstN7)dLB*1vZ9{tAELMhuEi#^N4k%!tDn?-z`D+ zH`J)7Rp+`r49{5nel^|gH)wfKepAjI$)P0e2+z3k!(qoW>kqX>9&cOZf2`_N%@ect zX}5Q~-nN@wm~tjdJ#`%}omt(uW3qi(cw6SGcSB{P^E|SadX#w(K$Bd#Mr&vLi&?t% zKu2waLxXn)Ude9T(nU?JITE?o=h=O`z3+D_O+7!aKEBwsY2%5?<=)dPzQDT}^2jzH z<7!2^)1JGTM9I_B6RUS>J42>jW=k2!>dOt}t5xj#Q%cqKaZj>yoo+f;XJ2lriY7%Z zfBkIc#nIUT)P6E-+s1{{Hz@aBn{<5K1LwV8AuB}*+ioGg`vchdj|DRL)85Jip{Z^dHYxW4&*EP1(c$S5=S5#+Yq%N^dD^?atFPoM@dGdZwsQ%LZ^90=UAw#N&(IR?lB`!>Bn#=P*ZbbPeh-bg zG#n8%h4~o(^USfU|d6Z2i4}x9hrD)^&0#dMSUqI zM`qqQ3>hoUDlT}D^Fw)9tW3D}c;m3e!H*R0J%?RvjlB?pKku23rmXE~Q`*;EqUiT2 zCYC$aPsIxqV);7Hx*2WzFWw3d^X8OA^?i*<=)AaRFQEbM-ctidoj7+K z-CiD9(Fjb-o5H+1ENUR72W~d2EN8wlJGuANz9T+}RS4=z#M&+PqKb=W$uoCkTdxo# zcjY>-NL}oIFyQeH|Eg@y<77>@Hm9t{&_SxUX|%|hH#T3_C*I$8;O?4pY1H0HLI>K_ zx`*yugABE4b-uGRGnw@0Cy(iyPS7^JmM^}w-}l6d+;^*TzhtUEjU{px=FZ9#wv^b_ z9SD9)cd{RQr{w(AH1TCZ#rY-Pvy=Lt(@tLR_2&ptV{;=S{G!V$6990pI^S+m^TmS} z(2<93>f$DLUpDG{x@(^vQRc(F?{l_#?^(E&Nm==*u_1ppZ^^RH9r3|04yQ7XY>;YO z=G=~bS>E~5H~-WnvCmBa5;#3ReuaI``ZJNWK2@)FJcK+v>Z&TFt(khZQrP(V^1e=%sP14fEGa4ph$x7WZqn9BtjTkJ$L@{)jVA;#m!v1~U0f7Af{CB(eE&O#k%y>=t*jMe*Wf43J3vi8jJZJJzFKn7Y(?Ud z-u<1E9CAvF>m4e3N%Yz)PY_$%=eJ6hKx_+L@QF;Y$JQ~teP8u`LRejE>(Pafy9JN; zzn$N=u(Un!^#WBaCE_s5k4#8gFTT^$cw^$2niE$7*NBI1oS#eE)zMSlaU&?X=?r1o zkV7@pwVylIRBdWD|HX3FT68UdimKexmiCY&;v_QCAnDNRo zH#@$=gHrEsE=qi8xjKN5%A9lR5cwT#=r1-($!D{7Csg?Qw}8QW7|)+^3l_uRp{)|KylewN+af-NqbBB;kc zKZ!)|=4QsjRt>9k@-t6c{A^%bRrsf68Da<;*j8;CA2;yFuXTQD^Cb3im`&WJ>xDBe zc~@z^EBlLmq9aENUE%UfIdb+)bF&_Q*nRl z@r$dAlE-v|%;E;-iA z>Q>$a(vw%J`@N+P%CetMX+Nra-PzOiz9}cJB460D=Xt#U$@g1jb1Dy}UCwK;Jb&7E za`EENX|p`fs0zOHRZd8_Rpae>9q)AIlj_joyv@(cM;YUiX4nR$e#+yF>bI!j4PToM z4_u^9j?EcyWP!wjud1S+Gwr=_M19J6+ID?mDXuzivE|~&qd$K~D^2ic-PllnXF55z z-f)Go$ups6@&vizOQr2G335XzVc*M#GS{YK#ar%HA?n=Q9@H&WvSP z!|lDjt;aS<4CTzUR|Vcfhw}=KGRt!HPAJ zE4<&mlAMu}mW|oxd5!#L%mn=^6!QMeH;W*S&ip;wefq0Lc{SJOtIMwI7?wJP|bsQriUv@AqLeQAM%rL&a{K)EpHY(_shAsVWtl#{sND;f~q=(zHfLp&5 ztT>Ui6oq9l4Dz(49h-v>SeGAYShwcSUDC`1lvA}1R?@zFLctp4ufB~Qx!cIoE*;lD znCC#*k1ksBN*K_`n|?OysjE7Wv~xr5{m?wti}Pbm9UDJ;l=Lyu60NUrXv z*tnuX@9H8nZ|ZfJclg-p7;zEYKdO0?p^#nI<|K-!@37maa?ZJ+Y93*A?cgJ8mZ{05 z3d$MUSWww4&XM4~_Lg(Y_IMOif2~_2fZw`PG&f}3oQbrkS^1Bwg%_Ns*wnq5zlu>W zBfp&=x%pag!+MA9Q#0ba2`yJ{Tphn|Ouqfq9BPfeE7og2v#XM3xdr~@?Z?gUI<`lD zdJn7e60Szs^P)y}-q!wq?Va~iQ{C3bgCK%}0#XD7r35834NX8mDS^XbZ zS+i%Y@AtE3i@^;+l;2I<^FB7duid-Soh)?^K4T`(2!SSN%^iTHXEQ}3kpxqtbwWdI z-^)t{V~1OSMTzU}>yorBbWyPEGHA4!w#hrWnstYm5co}`vP&Q}vGrX-@92hLkd2Gh1b9&FN|Az1yO!TFIlmN@BnG zLiZ1FQhx-7l!qkT;u6d1OpB;{i5n++{UD_O>fl%SlVuh)%K5!=D)i0BZT8){wM9kD zN>JT6nEu9q6m7JKj>!~=?f#9;8D6)_g??3geNlb&PRl$)MqCq(F%Tj#SWpn~?3H79 z%Y@hZ@}utW?w*hlA3n8CJH#g2qDUm=KtZz^+_VZs z31VK=7pxmEQ5_K+dnh3A%ZWmf;N$N&f=U(**2mCKFAM$E;>Y)LMh|jRj;xE#HT)Vf zFZNNJ>^(S)Utp6(9sndhcn_sWGJsn+oLNjKlyTM5K?NF$!Wtlo3xoJop}EP{#D=`C zSfHK*$mX^Nbp^mvGtL$@nM(>k-M}25DB6`p8grul z*v4P^wUa!zsj>&iy_!2G@qKMz4`9Cs=!`g+H63NrO#w#n7**E;XV@9eaJ=@JpB@^GN5<{B_eHa zQ%pUg085xskTqh`_5drzdw_c>ty0@WhmLK`=M7CDsE(Fom**YxE0Q;Z!gB@qtjCga zwTr}~h>`&NgHb2;0Ec%{@JZN~z_{>gyCDRKw77HJF6gUtuCcbNlO&XWv#`OfuB^id zt8J`l{!Hb5=wadk&dG{(>}g^VTn_4?fdilk;%$M^J2CXo&oX`8-==vxN7l^t=Ew zYq?xL0L8|&J&`F&?RHQu$DgLVjE@d(H0McQN7FCuDBd^e@n~L1!Rr2eRr`aC%9E?O zk;BGb9vkaB%uU}xsk1B4;TraU7ue>pAzod1aV;#;TM}tu)v{ zP@6rNN^Pqz#sG{^SV0DH917eQ4fxe?X67dHQd{E2UTsq+kC;X2#Cq#mH+kQERV1&; z<`63%eU(1VMQWO2zW)<}qSGlF_O{ZPlci3=#V|&gMRYM&OT~*4^LlnypfLTI>hRiN zB-)x}fE-8sng*uowlke(ZPO4QePysNL= z_+97POq6Sz>d2Dz+ZxD^Yn2!L)S7(toJ0xFhMW*J6Z;8!iOVqTb=4M&lO9OdT8dsq zwQELbnRtz>At&zr|I`0F8rr{mUT!($ zsPZ2+De!b5>v*77nB)vWv-F9|LU+#5mIGDTiCa3vf2Ec7Mti)gH01R^|Cm>GcVVLM zM4VDbS2mChd3^A&BK1q2z6ccIaHL{^``!T$N0%k5`o2U%9%ilOVq^#ZJqp^oaEQWF zAnXmI!-kBwtN`4dCZEhgon)%Re-=VmFvmy8eGgcB0Evmzl1jXCCMg{mf7kjXT99gG z6;s1zxL71c%N%#9)(1=i1eNZjK9_0(PU7D{FEnaoX?wA4^vBOk4wl>B2nBq6_>OLU zee1ejmrpjL1Qjs`^j2IIxx%U#j2~=RFbVlWoRGiE%SzCdDUS9}Ed2mPGUMR<>&nW7 zUne?(f*w*&5#%%r+*76*%$ltDZ0~e6W}bG%xcs!-dk&lMoGfFKAw?rr%ilO+C(M4% zG9BUGz=_IjYKKn558ZN&lduqFfnBUT2rIp7Hc<9P?eGZe3@TfX8TRK4nC+eQGQ_sQ;m8eCfERX+KuC{+CE}~qxmb2sS(kqs)Bp+g z=|cV^>pg#lyRMru3$*dJq}TwWTeU7q{ii1aEf2REHXm>)o&XgQ2(4~p$`OJk)QHhO z_&6|s1}d4I=H!12DRlM80$_VT1Xefn(xZ{;$555J>H;J4(C|v0=&zdccA>dwsNs|T zJI8-DboK3TS!sc-0aVK_n+P{IO}a$-?MgYNO6P^Dx2?IgJLEX!5gdRT4o7^toFz#M z)9@huQzKmUTIGtBbzjt!_;YKzbJEuX32pf(Oa{BN#v^?r-m`JhX! zl9)_##nqL33<<~sLqYjD#!h3f~=F9scUkM03}=UCWqmA8=8jhrVd6(jn`(As1#Qf*RxZg3xdX`>@Zn|C6a%qtNwEg=M^0(cRzg9zl z27M}Lj@%U=TK#&XH9P1=cYJbsOTY6UJk*Qm(Ea=RsUngN=DkeH^}x+>+CCI={5x1+jV4hPYd4dj`Y5ruBWS zl7q*a+psuX89jS|E$ftR&Y90f8ns8GdVyqdZ~0+2g3=FBcJY2MptEDuecMg%M%OuF z#Z7*fGS0V;er^zJtiqb(s!lTtRHooZ%i+hsLWHIXYn-jU z`(Iide11z*-~mf^$j>Hgm1S))qh>+3QQbroOP@YjOgORrXzEs-fj|8naWPbP+%%<% zRSx542&ASXtvVDv?jN$M9itLk*+UFzp&TS#jkzpG%Ar_8tnrq;I5|DwmR`^vKqu`_ z*-SCuT|M&ijn9UDOmOD3QNFs)3z}ObFRH!E|6Oaq0&^}u*UI8XIMEuC(MW}rr`VVCiZGkohixXJ_qW$)HBl z=-4F{4c+J1uN)@D+j4iPqJkrokbvdf@JZn;3Uv*1oBj?Gbi35jzHKR9^ z*B4^fW;&9Ct|^i}$PR>t^BaQf19F{362c|PKgMaun=gbbh~b&eFvS`%vYzP{+1KO< z9ady{CGg(FPgNy@z6=@W#ijR-8DM9;P;qH1jPLaWldhNDtr7Rl8U!}+%%uh+u+X4* zM*!b?dO6r=*&tN*O%S(vx-qd(peD&IelbOo{1u+3MNTGv$2&NO9sA6cmO4w!3*qXm zYihBGXF*r=Ih#U*x@CKS?{^$x8;BEb9Zi!~&&KEQu!9*;1(bE^`{4IWVB~XJbGo|% z*vDbZeO$c$qp$i$zrYt)$L^VICCN42`)vg-;MkWnv-KB_iM@-bOAU8n_9IG4>|07r zn7`QJ*s7X{6cqNjuI|&SO)epNjCG*lLCk34`k7}pjt1NftA5~xQX5E#<30hK>-BHE zspp`jJA|Mp?*Y8acv}qG6~>$~U7m>(c?Dm7T)k!@gz?F!n$@duJ%d%*#@)fQEkoPPubieG!7;c3BiCBi3RiJUn#!5#j6ATFcZpw)!)`IgRHr?FU9Hz_v&X+*=EdJ(6KJ%BR2ce;77*;u| zF!zJ?k%9*yw7}^TH^e^K6pg6-rwqE=$V_hOR*g~uvv@H!Lx#P$91d35Vu0?jTek4n zDb1n^N;7IT@hM@?jSn2Ip%wSJs4SS<6h>!+v*GR*h7G#Z_?Pg#Cc#PfC6L(L+KR`=~`HO6Q* z1Bbtgv8z}xHz_B0V7_OkT#|}FN!8AXhhVRQu+MsY>t9H=iOpOn4`wa#pOlk*)f;${ z+0c&!GsdrPWdNHlnitnFEp}Y{fwYzZ7YuaJAQtXo2>ImS8NWgrM2`+a&aG~!1}qDY zR7r#AI*_a{GH#2WriKWA0@b3Nu0Q-t=Mvz6t}6YDE@jS}(RF(?MSnEBdloSVY7ifg zuy9wdDShVma^l`-GIESQF0FNLa!3v3INjG8@ZP69We*_D+Yf;JFgRI1tK%iCh6R4e zDqv@dkjXsOg|+bF^6q*^lXd{F%-E+z1D`Be|0Vm>$CoXWi%nxSw@76%yee^H0rx|* zQK=r}Y;~)Q{OiGQL708RN>2Q(bQM=g=Xvk_V^+-T7i^>j8{_zNG78OTBI&Q5R1Fp@ zd|%&ZND4+haIxad_5`t}o@cdBTj41fLZm0nu(eFkVqvyZ^f%yk4O;5ZVXQ1*$i$xQdqXbbPH`DB)PIjW@S?;46nyO|J{=#5LjwL18Rf5{7G y%u42}kzv|$JfmS__BGAO1jlP022l5yLDpH2+~16bdJ!x{=;!{}e_yBeM*jyiM^+&K literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch03/3-2.jpg b/docs/vol1/image/ch03/3-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f5aeffd4d39387a6d96489be30be27f8a93272a4 GIT binary patch literal 40096 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 vXWQ0092c0RZxDB literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch07/07-1.jpg b/docs/vol1/image/ch07/07-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..148c65721fb911f2790fccec1928950ed827b702 GIT binary patch literal 32511 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 r`4&hH^fK@qr!&Kk-H1?z`E`MN3 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

*PaCDF7jY}6IV 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%0A(LD+unfEd=U{QEz{F9+*f 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

=)*rEIR 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch13/13-1.jpg b/docs/vol1/image/ch13/13-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..987df22b08b8b4693acfff8bdfd7ffefacac8585 GIT binary patch literal 50998 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 NKl<%IcP#aB^zT6fJyZYy literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch13/13-2.jpg b/docs/vol1/image/ch13/13-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..556f63ee480175ec5b0285e8888ca330ab8155d1 GIT binary patch literal 59052 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 z z<-zE~AqRa?D4aH6HKky_w<837?G9xKo@i%}wnD?JiBba}0qpy`PG2vjv+_f{OVR9j zip#udneEB;@=k87c7JAoqV$tT1TT|ZQ)C=BMUYuJ&Lr+)lo5RNk?D;4mcGZ$zbO5yUgLk;++XC8`P+8%?RsDB{i(pb8%B=4`1zXq=dIdE*;!DX;Er^VaPf5 zOt)%E5%4~;g6p}LV}D5S<7Z(;nSGZr)5k_;=FW6aSg*!41?%#@*hRUBY>O=d8+q9q zW}*Gp_d5pGz*#9-Oi$DLl_aNsy& zrRz%)lFG#mtu$zBHsc910zc1UQ4rI>OazP^@}r_rsHi$WNzgmvY%^E;akp}hx_0mfH(>?Z;UT@{ z=ET}Q8@UkBM}P{8#{rJYH{>n{tX4{gn)$^m*$xQEfnu-pD_SOzl?7h6L5eQ3{d%{D zvC#Myca8ou1!I2OlUE8nhu|^`%%`6JWq|&*iC-oU^0&?Y)+br|?S>yZ!*zXm#_@GG z{qy2q>uG@E zp8>O-*)-?5H8Ks5(RI&UEQ338b8@qTsrrUu?A|dpQke*FG{PBNP`7W>^ZGZH|6l*j z@@RR6l$vmH*+bOwt7rVY=qEookHP%oLEfMr)qTYLWZjC>M7nsW_q*+HD{w)`*}xjG ze9(*C*>mYun~w3ZAD#Q7ykDa_@}n#NzvulTyVKv@=g!BMmN5x$1p~rIymRZ;Z!{rm6h z>vtHNpOiTGho=6Mk_P{9{`VQb#xeH&Rey){w{wA%GJW6dYP4kLM^5gaLdqO8x$4kqKxjq@bp7x)PF4F{UhL~qa&5j#0`pkQ z2wUOHW@vO2l{Ys{bwr{w-4~V#CYSbz@1KhxUJ;Df7}C8A=hChT`eBtn$o%Wn|9pWt zEgoo#5KK|wWvM{{3)_U=k`$Bzx9#680F_8irirwMT?cKFYSm)ijDxFvR7A5!5_kMlJ>Cf&zS02 zb-zvCUR1=VJz=3L@<9rc1=%q`k`JfqmHkEay~fM?rV9l$#MT}^#y+oN5qCJ9xu^TA zNo0olf++kkEhy&n{HWbqc;~y}C%GDHf2443OOggmQkI>@Xqx7Jpfn9io8WOLNHCSg~Om=)Kv&&jg zAn`pJZHlUySsmv^;`^&X&}~L$C2E!gHRYcCPGFS@E>!z~@en+Zx4~8PY2=;6Bcz`O z`<5tliK>h=`?Y9l&>vJ(Mdc|LYXw;8&e(yhQ8IOa_G8`3ouD(*jCgVfmHx5U4-AHt zYfI`TOB!ELR;gFz%lDXTO`dyWSij^O(I?KtU9O&`>}Gc5&InN{F7hsCZ+Yz$5PzIX z0&Rn_a@Tm?WYCPc|I(SBF7yY${DQ{qo7mg3fsZek%2e0{BiAPO=)Pd~%oj{WeFS_( zW56c(*uJ3l^aj*VY{K!>Ci;Rdd_nC7)Txile^RSxe2PjcS&l@r)mG!nYHtnbL18fC ziAe|l!q;LJQQgllRnmy?fYw8uaCPIPHxt3IwZTaw_L?WZ)_(QccaT%eOS(c5cyQqp zy`gTh4MYiFHe_KjD!Y)nU@Ah`sH;Gubq-=K6Hk)J4Nb%fjQva8zK+uA0zO;V|Lf2o=jOy}i%DV;BLYNtRdquJ%__)^t)j%egiwW&bf z*5BP9cpps5a$%}QlPgW3xjd7Y!sfFYg)V5|DUe1r?PR4uvqD1dWD+SpH+{_4k3Bi2 zljo+7p->;>D_9a~-dUFtc-jG=y#+*E(&opJKk}YHtGTo_U#awBsGJQ-Fd@2Yx zqBUbWn^|OG`WUQHYiHCK?6l;iM5kd2GMR-SsMBDY0yBD)Hkc-LA`pUTAiW0GPKFIr zb^58Wu5-^bW=0uliCOuj5nA2X&=(Y~kEFpk|y>Ck{(GBkPlQ1leK z@W}zq0tujyRuKoPbiRh=GohSHc7IYjCgeSHr zYNG8aa}Zo4UCuH&nioq4^>3ro5A5F7VD25TMtXskN{I&hPam_F|GToy{?P}0*O%7p&R6$QNW}JL5?UZ}2V9Ofg3acetKeN|zLy%H78jQz#pXNI zpv2s3 zk)HC!;V|9=>>3$6C=&qDHJcBLFK0r!e}##f(@YMu+YuI71aRD*$Chi3cB(P*{)`RvXJWFC*C~6`_xx>9$ihv2 za)${Y;)@7~pNDGROp7HBD)0|qTYcCyn;nc8zc<2KCjhfI-@=TKvWxT~I1(hcn7fg0 zA0VR#S*;lu#94&{K+Sv>43w-RK)DQk0H_6Tj9xGee&mu#h)4aIeSjbi6aaIX@TF*H z7-FsYidV~Nxf)uCQ@(NxX^wm|+u`yy0S{SVf6;#`w0ClJrLf$byVjTzh{Ofw;tgV~Hg2%F=WU5CZ0 z<~-(rFg9h@V$Ld-3RxVOtAq)dg~Z%>ELXJ%m`A{*l%>|9(92>K%xcDbF|1a#hA=;Y zAysP%3lNyT3WQxShN-Jyp$f5PYsePC!h+dZwTT#BGW$|C9Tw48^u%yeZPPwdDs%o)g zE)L^k7H`$1Yf&iJEO^yTU?OCRSKSJh%UjZzCx8`FmVC-n!lam`8uEHEnXu?EuY^?y zAhW>$Dlw}o>tb8g!VS1NUN(JU@!cIcT@3 z3BsHX3QjY6 zy8=Z+VNSH`gs7BG;&u%ib0}%d;UHp73i&i&arlXtIxVCe1QDl|Y}moDacwwnbMSeZ z2p6=Df{s?gQpur&n1CW@9J)MHN>^wn=3+f*1$R12Y+kARnt;wA!8y~g(;3CMY*=e` zCaMX08pWL1d_pwq)y}ezv?)fl6A_Z4S*>xZ^C>%SHoF|vRMuj(xq?{QX|cOpQ6k+0 z%;V00D_P>*H8<(XyLhSQTj-c+FqbA^Hd__z_H-vnHbfb4W*6d0)Vn zLYowtBcde`HKG-34h>{tdd^y`1`ecqtAR&zlIVJukdnIP^m#Ue;Ln84I7 zE1C)xF}2QWOa~F0CZEypO~8=FkHu}4Y$(8)J%qg&q7}12a8*M&w?!tr+EBe}m}ldPMv!f}=?ij)cFY$WQA zHYwEEQx(by$7--ZQ%Dx*o&G6p2_`@-P-u(hDGHA#xNMN3 z@pw6%3sQ+lTrK8<2v5-gr4T~0G@Z1!0C7h#Nmn>2f|PT###ADaT7?Ov<(LCOnY6o1 zBL*9zpp}F}6J{-PHJ!7j*hoPUqs}TT$hAVwXJ%ozUUr6vW|KLm8LB&pJQpKj9iWRV z$cWm>QJlfAvqjV8gik>|xvV>p;Pl~KQA||BhM2ZuNm}g2RJ5K>5_VHQsxv3EZgmr| znlomSy08X~nVl&QZ?@#^Qi??^K9>hiRd6e*3+U5eaY?x%nKY5G7j>~fI_Gh~I@XXz z)h@FuUEqCsw@;UiHv##i-V=989=>kziusB$;|Ta_c}U5`dA~-7W-}#y(4SW)1dI+b z1uG>))ZwDr6&7+uT!;Gof`KMnZrmdVak2>*MWb%Oc~lN%J))M1>fC8x*2~A;?rbQV ztkJYvBD0W(kTlL)!><(z^fc~qm%JF+RnV{b8bo}qbn(L?2{bcQPi zvjsaXD0)IyptD&=k@glUNRBBcQ$@QcuXqG)kh97 z0YNGiCgrc%wJwRX`4LK+t|#)cv7ps!QvR~Vq$48fdcYmg$(2k@9h6XKP|yS@8=BH) zn}A{&=*{|E-dE<0dV(oHfdZp1Ms2af6^&7^qS1JK zMkQA-XhM+5=Y@%2w52(ivRXu~NqE%eoURxYbZR!KCpA(|txX!unp#YQ=S<}a>ea|~ z4U^PpG-_SL!W0<9En<#HOYcr<7|a!F>DcB}2bLShevlWW{tr8)ghx&Ay1;9E#YKD&tT}tWz;2n@w&6n*XY{hAQW`Vo(g! z5Obu7usxh_rR~l05B?qq*d?>Z2;4lO6jo@M1yx%Z!(3r3o5P0Kcs6Dud<93^tWZjb51I+tnf57h-e?KeQWcvRs)r*&(Nl|Q zgBCv#$_e^F-Jj-K@-XgiXv0B3 z!3q}@O;j97gUK$JfLpB+(}rO#$LSKSHKkxkI$?EE8?dEgw3BybJ-n_47+q}Y!<*3OrwL-Hmljv zP%&(FBJ5AQQgI~}x7G5DvugJ_!#dn=v6F6|t=Q^rYuK7f(>PJ1_!tl*W^J(LxA7<3 zwv@sVLN(QFvO5#EJ9tju?1a`>4AiT&Q~^>4>uEPG$i4`H2E!r;Y}Eo2wZn-h90sO2 zm#3+M#I(!`xXd7X``}NTZx!8OiADK%woqnsaeY!K2804l=Zc<+DRwHH#*J?(VB!W^{A+>N`S2XA$mgG!yz*APsPJ1*-Wq7G_sN^Q#Kgjbh zB{u>8oQh(_?yV`LC+Tx$ts%}q1tO#gmpMOJ>}_5xYh*DlT@Dq5IGsad#RAomHYGZe z(E95%!WkH?ACCL06_+bc2tt~L)ee$$dz?%j@#O1v3q>nv&M4C!2-nw(aITPvq_VcC z2t2=03xu*Q;XuR_q=%P%1XR=p%6d1gMCws0PeC?P_Q(~shS$US5?fDGl)I*2B$!Bo zhchWUT`^N40t$(E%6osBP2T_dPljw%B?`2%WDqDcrlKv7^A>D=$!97gTMo&nPz8E4 zu5~)JY`{(^)u+88Sv-BT1Oq zL?jq+>H|hC!bvebiB+;5wH>HuOpPNWqTTNFKq;yTSXU#4P$Ey0#d@}Y6l-D>iqza_ zM%L7=StF!{j4r+$s@IfiJ&i6!5)nj z|C>L&H!ATW48sa()#aOjF-=f|`3i;@ko%0MtWoEAM8RuTyR}4ey!0>qGy(rmB5apn z1=s8Kx?wsd8bK6|Ax>&FRdd)b^T2K4aUQBsEeij&)*jf#M)Rszqj{!M(V%Gp zVu5BGGbY@qB%&s7*_+V9LBfD5WpByIP!2SgNhb&xD>$T5f#FjA5*cyYErPcQ`yn{* z7W@$J^_a>IXG>}KI?y=D7NUYZE&wl=qTp$%9`)Nw5`vVxb;3&{6$ye$28yNw0V)O; zaJR!1H)*OCBG#CF9(yiHkp{EgBsM8z!&;xy4VeJ<3lY(wgkjW!djR|30RUdcQ8||r zQaI_zr7c<7O_@2&gjd|*a)7krWsf~-C)~wEQ6DXktx<;2qKE=#Ic@Wp>TJzzby$=< z7G;ZNR39sZh-A)NOM6)hk^x$tw(Ll&OOizfem9@f3MWZjx@ZhW)Ikx_8B9$IePqF* zj~5Ygwr7Y=+kuEEa`)q`rx7%^r%4SmvNj79u-b$L1kT;ws zvT%lAqLEmf(uHeU7Gf<=Iw!lB7!YNP{q8mly&rtFMZCQ-~2!dYA> z6g7wgmBQt85wwX+8xb`bN11@bN-++KAuy`sY6*uj=sq1`1ESYltYLOMn3f=g^zR)# z6XWG5QURt_9kxWOVhLI-0A?Y9-3=B8U@ydq0z5pQrP<_K zgg41`hg7zZgj~-%VjkRVaN7Nzyiu=?;NDUuDhFJppvjOiF)0n3v{y9=jnn8fNV4+GDInt{psHAX!nXj%u=CO8_?8BQ0gg z5Q-uhDv^yuIoa*DK_xhk8+>qCEEfxQcg+{I;X+aLkm{NxZLMm=9GaJ9MwYZ;mnmQ@ zRRgI^C0r0;wq$QHHl3hx+(sD%OSLB9gu^eIY1EDU@w#IX zrmnXc;i{Z-dl=3YDY^xlS+GNOPut(p&4vcZ~OEFw9-xkwdVOi`0gWii;I-?OHm zfv7taNN6K6UzE^-F{_p9XaKH+Wk*gZd+VfulL&uNG_XOZ!%2$XV%^J@Jmw-~(Ey83 zA>2-s*LaiBWXmBLDCi5tK;BJ5WpBXEcq3u1mPPzp6P1+<5jG&oR+hy?*j4liDGBzF zdJmEkHC}67X6bY+n#gNSGFt9Hee0;qmVb^jpBI&Wk@7+kQzR*YD!sHq3zdRbrQ^(n8VWmf3ZaV`w|v_wWrNMPjZ z5etskEL0uJm21X`q81gc+Gg?*h*%1ue!5-@X*n@(suxgF7lkn3O-0y9#mp!UO|!`v zE@pO{0Qa*35j7+rkuFsW4B-MAK{n{;5vowdBXrWmXb2l@uem+4E0th0p|~{|*ZSh= zC@hMEY||4&oiut{aC+XG-)~MeM(-fXSfes(#L^Dw0A*7*9VnSMm(oDue;+P;i zz#0PfiBfqf9cEk=qk{@+$SNGwwEQ+MZBl~)RhVRRf+hmHy?|At7CS}i+y=c~;5o`n z6!kvTY&ILga^f!pQ92Q4EG9=W6EQgxCa=C=^~dq3UupSm=o*zM)U&!U6+?;|u+kwJ zozWAJoH`LK^fHX93AG%l>C;7P))FN$MVn9-!{A#)1R^VREozCnX%FszO}MA!x2c6) z$&4u;##2bZgMg0+fV>UJ^Nfs$+#0W}`rel_RR!rDYhl$Ws z$f#J+$LVynwf#W{f~b!Ys}(Upnu3rvQZV^ZuOx7#AZ4!=MYpS97ZVQ9$3D2?sEe?( zTGGQz8CWrXug0CMTjNy<@}u?w(sJFq?MVu*vr3dxluVAYIA{+QDmY_awXqzeh#DWN z*~^%<7EBeGgjS!l+pP}4=kYr24oqNa%u_7p^LD}-!>lbGJDub>mJF#6sgn{ZBLY-q zJgYI#qO4JXgi8YRw2M+sq#!V;Zd|HcH7(5{4hpyhT`{Nr2bNTx2cIexxWiT7Wb6hF zCJ&>*yoaMf^i+I6xwnDpvynfLxz~zl0`8~(K=t`h765LoGeB_%)yqXnt8pNnf~KpX z&;%@zxHSx#-J&6!YfL#ngBPyX-FbCdV*Ev-B*e<7BQ0wp>1@smRANY>1P^X=LOO&= zRux=eov55>8IJ{>yPz|uqfp*eiL!D$TC@uV2OfiIo8LuJ34a#&oXjb(;>a#dq!QGM zNkS?+pc2Cap_BzCAO)2*S{DTt<0gd~3Xc_mrHEU?bcE&LfCrL-C}PaI<5Hp`sdL_V z&=a$jBV5(usuex5!|65RIwwiP3MGm%Y5>ccJ?Bq&C4UpJU}q2nh8Uh?xO`HZ30q+y zYx3*Vk$ebjYE~NRRiF+>BZis|m>h7{R+0<)q?8WPR+zAXFNF#UBLLTVz|*2I+O=03 zX4OH;Ru_YPA78nG{)%QVb5=1XwukAO6z(tJ_8MwpLDm*+usUw2Y0KV}tE9+GIiV#h z5xc!uVv2Ie3hXwqTv3ORipd8wgDM=LwPi!Vpf0z}TNAL#qXg!lwW6FQB)8Y0bwVhT z$8>o_?J32Bs3#gP8HzPWIWL!DC;^$mw9mo&fUsdoki_e(xDW#0&*;>-CWXeZH-RY> z6z4R8fx-0|tC!L05ugxz!x71B^>~p`jc4>qtwNO@9Gp$);)tzQvpMtCfZBtUN@|x8+37eTH zVW9!<8X!95kA`?l!d2j4v9-BS$;gJXgMqSqPG__WL^@qV8Npug7f>{$@p`nz5)H|k zSPjYLvrtNQi*~`x*{Y#})#!&Hsa%RAvXaABj1a9gMF%*uo;ldu{uhS2YC#H2(%2a4 zW|RMsklE+u*~c_3$BiUOe9?KJgP{qyS5gShtX5NqBuz4o0MoT$6>BhaSHICd#QmIh zP^bwA47h(R=o&JvYTe7q4LJ)G$hx_Z;3=bDDSB&RB~s(HO+em9_#o7m@zgPUj1XcL z-l^j~3AKkv$w9E+kk$&Uguo`h#}xyr7)h3Z(+BL|DglEr7)A+8)W&du3<)N7%OM#x z)-{+VYUMPf+fYteSSqIv#Uj8)w-u2JR!bD?6-%+`@r28?v65E9KbVE4=;(ujG74wxSEjTT3HDy6do4wYK7NP9=|*4 zjzEE^32fz98P-XcTc#OQR5V!*^$BHz15(R%1$=}M=D{Wx1r*mZ8@9@NG43KQ1%;27 zBQ`7VF*UpjNHmwM$>4jf3a5#tX~cwjN-Y5^n84n9OhY+YU=WqPaxCJnS*?6bp8{UJ z0+h?uYe9#>?M8V>agrMF4Oqp?+JdC0v)MH=83sGGK*$#hsA6m>?YP%fqtSvvvSQvM zA#owW&16M)HjhB@Vvq-}gSuo|j>{hVSzr;zs6 zCq}>^-tRH{C#G;Fn#|0?m}G#fn~Ajd=YI+%22< zU>fx}z#Pdm(c zS)sL2xaJ|5Bpl;W8D-*S7Oz++4X3pdY9HYbioE3HTpBmc;QmP2A1=u;o&raHvLzQx zLu^6M6o5;yr61OKGzz<2LMFzh6_hk!gh$Rp8lYo{v=PD$!K?+QBEWvoa}GNM^CiK? z`<>nzX(%WpY>R7)SdH`eY9a--7@IMsHH7Tax&3j%19nNkCj=p|u+zM@Or&r;;PH4& zB!oI(E9A?BVYh}ed4NA8XVjozDc7P5EQOg0nTHsnn$ITmg?U#v7HWF61xA71G&oJaw68 zP4RW0AL^i0r}^4Yjf@ynsHpd?mw&QUHUanUg&bl{`}6hkkV~Zw*#j6f{;MwaKa(L% zz%DCqQ|-fSUD}p)l=Rv{IYTAkI^lL?(mpZ=GE&B3Y0yh+CXBk-BT1kU4dT&CHn=%Dbj_Fw=@XZQ!@O6o#)VwyW z%T+75nR1ZVw$wQ{SOkIBwnUdJHNRR$a^mw8iPa1Mi z%@V^4#e@X;fk2{z zY)zn^f{r1oL{?j@nNxfkK?4|8Cknvf6tO6Kxq82qxHr_Ku^K5F!@9A|4BIXmP5t;V4?pKq!wSCZ)*n{ZiY zfQTtP&rL;4CZi65(aAK5LX&k#9Wt3Q=;+CML(*iTIR-YONRz|^i|?m$541JUmKz5- z_ds+1B6OGHe}E21JUCEGi(T@R%K#s>B9PI9=uBF(-D-wm6Rg9Gs0p%aVH7f2jC;vG zMEO6|5l-YdzHyAz0^EhA83iey2glX8* zD*wkJG3oTcnW{@p<`Bd*S%)OJ$&AjxP1b=kxk)W*(835f+4hIx`)O(%lWZk(e;gGE z_2I@4bCF2xUpp8szTOpCfhls{B8(w~k^ z3+ABo{SbQxugl!_v^xjlzm^^HTWux=_0P1PCq z9&&9_(#-YeAf0NUDImm$%@1Hpt z{=Yh5ThsVJ5xiHP|50R5>oQTM;xaACC2&BlJ*8Wn(B+bi=6ckM z1y^{0>q9jA?hpCHQnhbx{7(kIVkl%-E~lh9RBq` z-F5i>IVkl%-E~lh9RBq`-F5i>IVkmT-PLFR4P?Mzo<61u?ibtrVZW%$VmTui4%l5@ z8@SF)rRwMO^0|Eb5h_(SCre?6xicDzclLZ))voHT>Y;*FDw-`7e7HT*xCqTaOxonODc^WhqxGdKQuL0r9D&+(ScX&bgk_w-w zg7E7gJWecUc@X{?gokDmbV;S^)~^vSC)hLyLm=Ewii9m7JWZwQ)i2d0%ybFM2?fxp zQd#na8gPfC<<1k>6Fb56X~s@)fLct*^5h`67LJxUaA{k%K<8>IRjbX7QmVm?zU>5^ ztcOi{V0}*k-M{ZSY~sFLhYvKyww2?%P;<=MhQG8wZhzVRarq@GmGKAAH&^eEV{TBX z9==$mI%?DYxN(0`sRmx8Qa$uam-Y;A@JpBLuZCtA?I2MRmk0LscDLzNG3lq_3)D<}DzlZQr{Y+0%_!eCA`e!8prs0ONrsz#`eQH@od zpqi{gR0h>as#8=pm0J~1MN~1>=_*#0R%KO^s;Zi$I$w2(YL4n^)dJOxs>Q0Ms%5H` zs{2(BtNx~XTD4a7qUu%E8>)9zTU6UrpR0DLepKyhYisM-*1v5?+laPf+m3Hjw;^rD zwi#`)V&K-`)OD`_t_&w!hK7 zrTz2vA39VWeLIGC9M>_q!`NZz2z10dk{wdVIUTb*7IrM@SlRJt$MYSpb!_SQqGM;b z9^Hm?>+CkU+ezJ=-H2{%w_>+*x?R!j#%_0Yd#Kx*Zm)IwpxcgazjyE7eN=aK_o>}o z-J{)8-K*U%>AtZ09o<)Tf3Eu*-M4lBu}6;{!+T8VVd&xP5$loZaaNBjdfeRO-X2f& z*wABZj~{yW>^Y*Ry65zsfu3|vx#uN4Z|He<&nJ6s?76My&%OHgI<^s{-8Rqv&}AMO20?`^$z^%>M>LZ9h$ADfcYXWz9n;s;H`JH!dtTq``~J1>y1pOu-Pvz&zlr@U{bu$n_q(#+ zo&BEb_fEg>`uFcYzW*ux~(a^aArL!KM5ZD^076Nb8mW`@og zde6|8hwd0Qc$jV&IZPS0XxQV!whZqWK7P1sxH$Z(;r9=JbNDYujy@7QGI8YPN3J|_ zldb@WlE9F;g~_EGm9^~O=ZjOZL;8zGFCH{#(D?~Uv>a^lF)$m+;jMm{(4i=&4g zebUkF(X)@f|L9Gl+DAPjZnJ|VJbHSK< z$GkVT&sgKwDB;_BhdaqHyBPC%!tdeIhzBJ#o>*SJdrly_#3w ztlluG`y|t(+@vLw-kRKRGB&v~dBx-prVO9ropQmHho^j{8K;SB=4qbS{0^az2rY%) zg$KiK_yYJ*_*-Nm!Xk^1*R}n%cI~;^N3`GQ)VhT37Tw$E5Y&fWiavw>rZ?y%{Yw3( zhH-{74L2FyG7dEcjaL}gnYx?IrgKeyGwqzJpDItif9lsKO+HCDY57T?Oq(z*F>UFz zt<%R$r>EaKeano_8E4M;%Zx22A9pf+@{*H3JZ0=D+$ndQvK>1S%V2k7Uzs7ZWL{mwam4{ zZE&CMUgPNpPEOtE`OrJjD|sLFwfo$@YkZsi$NO{shXbmBD{xKVz2JmkG5A=hM<^It z6#6&}hi8SK$A{o&;LGtJBj(6ek#~s`h%)gEIgp%5E+c=UtkisJOH>m*JNja5WQ>nJ z67Lx&<9Eb=IMsIQf>XE6L}y+y^Uc#HoTi+%{`8Tji>E(+#=tY^Gafjz`J9~c*N6SIT0u-CDlbEk0Ea-SxqC*~)%C#NUpCqGF|PhFGxG<|YeC50`;sl^4w9g;`7qtsS9 zt@MaI6ev?Kl}{*NT>hXkqq3;-bCs+-PHXXLUP^J?oiS$IUu_ z)(2-}XWx2G+d0fR&zw8<+>6fLcAn$ByUy=(zHt8EFMuwXf5G<`QWrjY(ddiLyJ+jh zj*C}ZGT;*FlD95B>C(lQb-Rqe?B&a~m)~&t@3XntFU*1FES&S}73>u+%!TJ(KX><) z$tz#JN`KWYSNFI&clDd|PM&wy{6X{U^S55(yXK*5JFlI6?e`1LSg?MfZsFqV`dnAO zZp-!F>mRvc+znUX@av7~8{b%DUUctGqi(wVrk`%+Zr*syDYvX#JbLk*#lQT8|I6FA zI&OVv$@nD;Z|iYe<+hKPl1rbz-FW-5J4W6y=Z@d*%-y-=uJB!JmKl~UTRv*}RV&(8 zlvjLu_sqLry~ldbBP%Dby!GDU_s;pN>aXR$es8;P4@yxr=MxT9sO=!)_&v~9(x7NP)+2^t6pIkS6-QU(vUBCJT;|mYJ zsDJUHm(Z71{T==Ls+aXIKlF;>l}BDRz53{eX&au{c=E=lU$efp_I20mFTUY_W5b)o zn{U50^Q|p!b8mn0j`+?un<|@jy?fr~?we=7cf@-O-yik9# z5dZMqt?bs%KPr9n>$ZzN?*H+^?Z<9k_6hRI-#)c}`s!z=ezxuN!solbxa7-0U*7c9 z312<<^(kM!v?ID>+c(lTyT85SyAj{r`MvJ@XMPC&@cxh4A9wvU`{xlq-?h`Y^Z8$> zU$*b6{@U}`>wi1(w?}{X{Jwd2cK7bxU#SK(oyIEeDWD6q?S5Bvk*W_^qk8r1)2mmX zfqlTg!TtO6=|6br5l0L@;)tO`2Mz+yz@bBrJZj`oM-Dyq*yD~n_SngjCQX`*?0ee! z_UY5NU*7@!`VAO7V8DREL&490p(6$j8a!ywh|VL2g6GK2QOArNIr5lMW5;%OjvcF3 zpQu*vE064cN;Rlgd${AT9c^P&?StAn2DR;8qq+*HH|^~mU3HxHjvhVRy7%hVFo+I( zj!?CAbZZ0I`}FSJv!kOsXj^;7puyd`_c*R6JOmpvG(;DX`yY^p9ceg!gL&*V5n{N0 z-mPJ2<7?M0Mek!Sn6Dj2E-96Fe4~5%8T|F}gZ@y#?oFzGfR^?_9fMRSt2RGBtdA`+ zATyK}uip2U zQIQYd8fNVC`t13|BMzJp|L(V5zFvdV!*#1}_f1as9A;egoWK3yLAn6+=1)Vg#dE)$ zc4g`Te*Vwjgh%~t;cc0ZZvW!8(B+@sX@B#Qm$v+pbKUk{I>j8hKjf*Pk9ab>^C_H>|k(wGUPgp0M<)=WT)5h*?*!;!3yNOgz#1 z_xHa(|J#>sbJyMZ!RC8@PYQ#mA;-PGnz-kQH|pUZSKsmgQQ!5%4)N7iCzNL{I+DHN z)|c15$?Y0HYu-fc>e(M}y6dhdN8Iv2=5qI)=ii2&{KT%w$Jl?^ynN>5itf|7>TgTh zL2oUG!*eg5|NXBYwtaHp%FX#zBaLI$ZTjfpkt3Em+0wk1SG-49ZyWUDC*SOVa&O%` z?!xL5Z|1)H_?4OC&R;fe{)^L`+fV;&?Wd349$)r}W&2kS^_HEnb06FFc4hF%XK2Tl zc5ED%Ssgod*v56UmkGaYn9;q1Kek6@mt*CE>qDibVf0J$6vpmF!as!_bj?*#mByjPVCofO=;HcnI|@_AeMi&;r&b7 z9{6zKi63&WK7PMtZ0MVH&pFV)OT?(RCfLC3Hm+w+zDQn-t=)OYf^W|e{<5_n^To&2 z#beY=Co2}HzJ7X6@thBfPxz3nXRaS-x@`7GYu9JsuQJMtY-!Vz zFXAWuTiMIC)TQe?GQRPSg%5VjzA66Uooy=~dv3St<6{1f$F`YM?_R%jQD|{L;ydp7 z1@m58yB%J4?XTmPZLU1<$f9Y_`>y%hrN_^EVP|pH7dI`4epL=dUpapL$nOKQQ?rIR z)<5|62P?3tzcE^*7+_~oAM!f9`ueT<5EZ}u(SH+*s527J?qYv)g2^*Os$ zh(7q!#OIHl^1+ucew|x&{qp%IkG{e?r@ra#D;uon@9{V=?=~urD`0j$rS5x3gyGCtZoZHMTxo!KBO>3mh-)A0O zDXpG0^U2?yeRSKRxpyqazr69D(vP*%+1MBNt@^6G@}AS2H*WiM$5DYzff>71&mvFS zuK8{KgQtvq?8^y@&;8(rGnTCX{iB_QU5~x+-C~_GlinF-mm7||dg;cghRLD9R!+$L zvSRC3M~iQ~ck6D|%#V+C&)JSVb@tNlzW!CK{yui{=BpmOh+FEndP^9xFT>8Z(R9P{+aJe<<+&p&kbjp%EIA~zqH`>%V%w~&R>vSzq9WL zALie8U3lNy>F)}wZa8NB;%OD^>g6AAS`~PKQO{qt@h|hKji1W z@$B>SDRBJZuKDV5bLZNu`KvBFdhqZS$IZR+=f7vh{CdJA_kDe3j}D!(`ir%fuiltM zOvt>su9<5tIfK|3-sZo2;~g7yU;VV|w`bn{$bZ90k4S&L`J`(EtHeA$uL zevF1z-nn8+k4;bSR_(ZNx9Z0mz74K9>B(RF-mqKsSkISrSG9k*`4!g<^TzL16~FxX zs*A^7IC{d3van&@!{?lR&qH(F@;CSXO`du0!!vhPA9xuYf_gGE4_V)1)Xow8*;xF( z6@A%ReE#tr=ij{Jl@CTwc(wQhf5+YHlH{|Go_eY4_I&4};mdk-duPzrwQs^lt$pI1 z4S%nX(LDFlXNj3dUi{tJ12&rU?_ToJXUzGpKG6GyAup^sgBWXnUVGHq+xSm@?z{8e z?6&vB8y?@7{O#1oGGnG%DfnLUp*J6UY0g{hvd`X7zuNCq_WA0|A8k5q<%E$J&Ycv4 z9|9LZOnmI+uWcZASHqV}GqavHv{&nkbcW?eJKlh<+XH`Y+nYydnzoUG9)J#zVkLCqYQuU_4) zT3H%+yY0Ihk{i%!`rNlnmu_6L^QFJ)FY5yF?+mt$pEvH+Nxa~`G5+d+iA7=dP2F>2 zTx(8g)H(982T%U|re{A5&H6a@pzpLz$Num#{rz1}lqU5DPT&8X=Z_-!)XVnh96eTk zIq;Y5&@YiQObfF^sLG|km99T~qUNR-JJRRmQ(Zq7BU!uUwN=-=u$DxJUG~|k%j+xVFDT8MI_Bm* z>Yl2fAZ(s8`mUF+JL9i!FEw5L+TSl9bEAg{e`J$GtDorm)%o);T(Y5bI=l`!W6oVK zdvChzosVanJSF<(nn-s2$M-GxY}uAsyH5XL$Cq~b(cdn4Zp@39Tt0~(x-q`|y3lDu zbNLH){e}C>C*R-n+MKU%kD{j@wf$!G&IOL=#w;ll!gyiSvK`0$^rd0s;lo_wG#+%oE5Sw#!@yGjCf9HKk*-Eo4RS}c6B_`Ct%kJb$O$hBTJ?z$@V z;~CSr%+u%IkYD(dFP?pr?luDd>szA<U$$CVcy&vU9_W=U=e>0rl|gtryyC4zUnZ=8mFF+}a8986Pgkxe zy{z1E)!26)I_rcF)&=JFjqf~t)9q(ho_TAax4!HM9soycS<#UAd-WhS# z#MO7LpEvS*(iC51U%md5?@!#+>{syf`NL=ZX1}n%w(?HzxmRpo>Z`B%dd241A7%9V z)$jK|zn5!&OHGLjY)dxwTM*dh^zT*$o_Ou6Z{C_fTzAY& zm*?&?V#}9B9QVCmqCPm~B$fQ`%cniB>+|N94{TjK?^E(QhwJzwZ-0NLue9vzSGN)` z8QnKK{*KXmCn8w*54Wm0F8FTru}8fx zoqNyHS?9cU?Jd45N}q3Y%`0bj{QOC7>#}Pu|As&2({UTO%y2AU{dHy1#BI_K1VNUG zj#0aqExT2B|NWPqzaRJGb3o;bE&6`ouXf9>Th}~Ef4*Dw%(K6p-z9wBjB4Uj)49WL zNy1XO7FxG(-IdJpHQPS-U+JE{z+(O8o=a70U;oIqZdJ|nn8W$Q^EdWfan!sOM_rNG zsQhxvg{?^bcYoqX)po#EK{!Q)eE7zSn|GqVI?d#^v_&@EvcU03^_b-gYjLuka5CQ2URYQ|* zsLn`;6hVX}lmH_Mh=d{uoq#$HQWFeFZw`n+LcjnC1O!wdv;fjO2!YUhFXGK}@4C;- zyPjvf_r33L{nmQd{pF9WZ_ds+Cpl|>_xbF7K6`(o&^meVTpVzW=9oCwj$JtdA;HE5 z53+`82=4+U`>4C0>#1Ram>t_8?}IiG&{Mwg(JQQHy7?TmXxSZHy{or-L zKt{GagfG2-y4o0S`M^nKrRjb?QMJG~1LO0-zl%M)d6c@bgHMEsYw5_?5acZ%2$qpW z79m%NQ6?wKbo^R(?3X;B$qq>!bV3XWI#VW6U0#OhijNg4Eg$FA_LC-1%+2dN0*fMX z&i9m)n5jAV2Xd+WMNkbn>-!AH$QZ}01kw_%(|)`E3zx7KJ+8wSbMK}iWF=b8yqG>- z3hyOQNyOSOTz4~@1U_zxBj}BcHV1Q-ur(O0C>saB<-WpEaZI}-B&lY?_v}d2%;x>o zvh{!!e5l7A%EK}h7V6hT$U-u8-pSUArCDPz0z+ef3?5P7+k4A#d_oDPrJ+Az(ioCJ zF|S_~EqTS(gHs-PKJ-5d$)5FTLcZFg81BwUo5Ow~8EFF*ouWCaAzat&>hNyn2y@Dc z+BM@UrI~u^E=|D~4~Dql+Hw3#&J;lH!jtVC7N&G;-OTe@hqr;sYGO%Je`&#xX#W9) zN?zN=msIL*-h18N_;Kzhv&?a4sdzFhS9pdR*?$0^0j;myBrSulu~Mo;&+!%P> zQ)E{~r6{wR;HrIHyvQzR=nI!etsOkFPKdh8Gf~q%Xqw+^#;9IkH_y6C@w&wWi#8G` z4!QuLhsR3~_f>4;!eguFUx)Bknny8R1|(^_BjH#amP{>zwVaC$UH$o-wo@@<$)hJ)Zz`=peK36>28G2{jczQ{A(mwU3Kx z3sM)oiGPhGZ_XNe=_@#XzwbHkO&(w9QkW%1IWu5 zo7Vmp<;{l)Pbxc>I})@m7bnQ`zA=4M!T@14=_`i2;)PDX^VA&Wzx8nrTdxx;%s1L^ zJKcCbd1hoiF|xKBcSIaJVuTWBheuaLl&=tCL{x01+nPWijH?S@oBJ28+G0=Y?wuy~ z$|`?=pdWF2s9MPRpt|jmF@KU3v!boEHmyJF>C2BkM?0#oRYRrHw(VYrc&^#D+a+x9!W5wTBR`&Eh4FC@W+wvhX+6B>I(IWo@j+w<$kL9I8`a?#OG9&Iv5nFu<^DWZ+yWJ1OZdJG+G9F z{IpY*f1EiW*VcK`W1O}fYkzQ%9#S^SVd9*Do5nL0EJ-=X;=LOK!+Ki>NDb3ePLHVjUf+@UgRCWYT?^i9iVl+DaPPhsAl~$?Or?I zCzeqyA6;j373#pIw&_Y10pr|%3}V89S~OErG9-lfPJOqdqx77VRX`jmX?0TM?Il@W zDAx)5u6;MP8jDwJ{pnV~HPyXoqg?*EUJzQ3yp00UIVZa3LL0{lyOB%2M{xnPE+ng? zAnUz6D}2io0&kuo4ETb;fq*+Ll^z-PI@$G_C32n>Elo{{ZKa*5q7A0la#I1>W^!)d zg&7m&mpo51(L6ANYXdEb#0}a0nUdc1{kvbdMs3x^Bxb_=XHa1>y0>xffy!!QE;EhI z*a}VO)ufL)ucd%#OC_fRaTc6-?iB9~~$S5oLF6PA?vdeXS$0e7x9MA8sstU>z z9TF&^b;b;^PK@tt#<=-aIrvYU;guY6{q%tj6l|UeNMYPMkQ!yviWe7hF2xyiuQ#kH zW%{c$@d&)fC)}5guaX7Y;SuoJ@ezGMAV4U<8)zQkk~iRft+d-AN#N|&gg7J)y6=JX z&Z!}z3Rbd+g->_EYIu*J+KN+%l)X0;DH|I4!+`u03~H1U=DF=y_$m67ZOgU2;*wOi zI*h9DZk1b-D}q_Z7$_p66bbMHQWumxcHC37Dr)X%nw#tvAGR{wZ!$-4$J;{g=jY7e zhp{JN^&yYy{l+`r_9@U;5^KF=p{9h^{u*7o2Bcfe8m+)Dqb~Eaal38d2!n~&(3c9$ z7we*dz_&_{rgGzp&0jzdv-ZRg*YBSiUGlTV${UCat-r=&-x|vjI!sMxyimXZvEmaqJ2@r5 zKDJ6RS-QcPdbfs`iTTyka?BHq2xbP*gEBT8L!RVMz42a8Up|x3AM&j^5k4>SsKmSg zXJ}vdyg?^?6t6~~+E}2f8YpvW3z!PXm9-hwl#;OwTJg49QtuwUQ)~#~-x()0<#({4 zgbb4xHt(~mJ}Az$J|ol;(#``|&8zoF%U5gP5WA>J(=Zt)P+AC+1BLOwdeKBWx@VVY z%EoFkA38YrwxGc;3&rc{$@gCGMCR0FwsmQcbi(jad7a~6R&iCPO&s)YYQiZB3df6!zO%|ZlAOR(U`57 zh4_9|TPNW*sk=BroT2Gl_UEf*zCr2jFo6Vv6te*~LeqFdLRhts@9wnwtJ^3@%j7~D z>`dH!_r0w1I`!>FGl-eHx&gk12uDg@T{k4uePS*h8p_tv{$#JY;J&oYpkYk_z=R&= z1_2(4uNv04a~6_OQ7uZ4pt33-oXpXpOCjvP8OLqGD`Qx~4~p zoi2V=ygYR-5i?BcI$OPaGb*fp;0srH#32`A;?FSxbiLEvfa+z9g^3#mVq|OugKa5V zZh>2q0Ix(`_#9F4h3m}uo%1Aa)BJw=>cFpvdsT*pgu%6@3v|Bsq7*9Nq~Pdn$rZZR z#l~#@eeId#%c{%ZT+5hg;`rVinOr*`{ouN{Nb8C}3#2c0P-G(}ed*Yv5S7rp7=i?s zG&%8WogDEj?)lX6X2?8c&*$zwM05d8%aO9dqx)bVpJjJrl(b?-ml-?QHqP^tw6Ck` z7D8v03Ed1viA7}Xm2d5{%UNQ?mPQ)f<84iB3ZbT%QX_@o?F_LD&H-K`AIX9n4^11{ ztiS|Ml?lxzrIYQ_E%JkuB65u|gVNjy5$ulk7whUTk(@lo?0+=+iYHG0ymCqEX-e~q z$rmoV%*5lp>lOZ$Z*?&j#EK1{d#GGSs)ArGYUR|GhHDvx|{({`J zTDxbjQ_yWf<33w+)2eg~$d1YT5MFs;~aTc*zFFZp#UKdObi}Sbm18qh; zpP7j$WaJ-ydo7q8uK|iD&c2tj#A4x(ku@(kg{JD7J`gq*Mx5Wx_Q@|c4`xlzgMnFk zXT4*l)*%ziK8H_3G|wm(lvdfWHu*b!i$ijtL|6{3=86~D{3(Q?p@x|Mbjzj}TMPrx zJA<_vR~$*7P!8uGUdQj+R305%K@R>>d~0I@Us9`OHC3#`-$mCIc(HavHEi5RR8KZ+ z072@A&@#}L7Y)X=&;}W{|`(K@2-6dCL?M7|x91>8KN+X!uX)R}B z^Dr`3^qAsch&ICei4I7m8*)oezTJHu`sk3{w%#q4-m}R!918=A_?6uH45IVpruTdV z=Ic)XQ1`ii>PP7j&HUL}syG=D zCKC?|&aKLk&%&8(Ur%^&{@e3pA1@}FXw{L%UuZm4>BZx<4LWJ2i<==R+#Xk0W z`U%(m%qMBatW2Sw5jD3(gmlH>_xKTO0n<6xmktY$EbH}?>hz*Rha5Vl4#gNG`=WXW z=BA5LY$^gOt4$o4RqMbnrbX9&pDDk1=?hno^i!ASz~gjbUoW&CGaIIg3~1kc6F81V&tIFppDLGp`orJ>d_rZNG)gR(o~t``Q*PzFW=!Q0HF?iVgF4;bd=^BAnv|TE8zpJn7$*ihQ7ke*0MfAtc2%gz0No+e`a;5OezY z`T4p)`YS6&?4`gjT#~5SgTg{&s*U#s+Zos*@4(lm2LlpmM_kyAjg`gq{HC($z$nev z;2dMIHWomytl>Ctstt{Objjabz-Gxe z%29p7!__5@QEMlNdrnHT!|m#qv~NpPEXIRLs(R^?CZtSQe!56krr`LT_cQqn1}T03 zAW5%PcY4?>_I5@2(np_@lOFd8^vVsBX$I0f{%P=4J+jmo z8?#|X(EQWbD1p-3O1c&y$sdX_Da1UdKR1B?9pwH0hzk9$_mscE^^&!VpE}FC-F?sMpxKF$wEL&^;2rL zmGQD!YYej3meNvJTDQgqj|i`lQx zfOO>bIr**z3Vz?pvJbn_BIE$Q+rT_UZ^vW{2jQ*Jl6{J`eMA}ah>DuFkM5OAcDSX^ zhPHPwN;KuxRtSIVmNz?X2CPZj{v&B!=}}y(+KyRc16G?UKxMWQ9t0Ds7SkbmZvw8>&v<$Q4yc!AmI)J!25X<@$#zA*qyxkIeb4}CGXM^8O>P-^B+!VcV8bX)us-@CTgt0i}7 za#%_E46ECtrbC1k0W!@GgCv>=v;%vHQV7>|c zM*HQom6tB?`iu=Z?}3;dfoB2GQk;5?WZeK<1i`F z(S3#{Ie%PLy$*eJxd$=jsg)6PRW)}5Ch6Y9@7Rd$4&>e1cAxgtmWvdE`DtMXj7B{^ zOV7s@qC8sT2gO%`9l4hFI`9Rn550Tl*@$+X#PX)N2MlVr)@@;GA>fym*UjkQl7JT# z`i%iwB0Xa|N}H=1W*@6>E&YDb4Q|v?ArwP4y4n`y3AFr(JWd!o0;8l{#(3YeSa!i| z&c_DdbSn>^WhFe216-$)EP`${R>!o2gujZgebX57@LGOTRH`T9auRbuDq9-GrY;&9 z&J}(vNki*TJt!Z2B&+bOk&q~um_aEMhZ$TQFXI(13ik8?^)R@o#$FTHZvS;_%j*5*vCEvLJ2O5z~?=vq7L8Jp!_XB{K8 zm{jXg`?eSb+f<<~*2(qQfB1c!q6ACzP6##pI8u)eEmGo;`J21{8o(Sh<1 zK(yW8oooN&q-0++n0b!&?eOQ{uj-4=MJbpNBMYMO=45N@oE!k)DlYWJ!}CK}reCUzn^1Cz&i<|Pw8)r?@^j^)86E2Hx69JNnQZSor!H+$x!G}B&rRh>qTDGEP zGsf&r#SM*x14&~e*6&Sco1gHgbb)T zALIA_`s-b-k)6sP2+8h7rP5_!XvK%Zi?J3KmB^pYIysGm@fWv8=$yA9%pmB};fw04 zMs!^f^*fWUVmW^*)sI)&M4JpUs;=K4xcR?4d*5j! zi@&(l%TbA_o=J>ux-~CrL{w}hdvI{RW$2Y>w{}!Hp>p9kM3)_#4v3EFva~ejQt@4` zIAzx9d0SWC59Lnk2Xtp|@gKuJmA4G{QwsWXG{`0zgKbk%=bJ0LbRWgYe z(vf4S973E8n3>ONp;j}aXPl0fSq{o8Usvg`yE(#Y7r z4I)5cyga@OYsE}-JP7I2dCAe)zERR@GVU{fw(^x>+2R=|>|5`-qWz#7oRa=2Z zYrjHv&DKH`=j_>h{NXaqxBA>Ox(qYZ(uE+CnhcQCq%}#|f6AJSf2@x^E9wv?dg;2) zE1SxtTa!3`Xg~Ez6bwK-<|`UrTT!cI!pE{|bu;ooON&x{U%0jw0}R2El6k>EJ#XyF zyGzH}zxgOCnYf^+gvR(jl59w}T3Wd^N#K6%gv8IIuAe4nSq6NXCy}gMFR*v1qJ2lF zL%Gfd*uJ|SMpEQdDfB6mAz`FLUM2PI+9c@B_3iN--(n?cf#fgT8jl{JG)MPwmJqZq z%f%2H3FBebd3a^J;WETZvVqjaT2D)!K+P7?gPYqAA-43WJik;rnXoF znZG;HRrky%d2Xm_?6;T#+%ZC>-#AzgUP70yW3Ho*EyE&W=k~T#>+>7UY-Z8=*0sj` ztx<-H@>%)rTuqu8+!4#A$!a<j`Ug%SzOLe#+wQR7S{iDgBD~uBN#rU>SH*4wUwa04&b0x%*lF>Frlfe70?T zri{v~8n!bHbL7Vt=o8`Q4IE9-R`NWOs6M#(g-erF^Op~wwDDbExK41+B1;T9Z@E4b z95(o*_h@@|fBr1zaP)i}s&K&T8ggLi53^WcA={A1?(YN36*Z#bqqD+Q>Pqn^4&{#+ z7Q2jJxk!S-XU*Jvd{PLAcZ{a9o@=N}Nz}qM$xAyrAB9)PQ@0GyVO;ScfM5}V-LrmzB*^mp+U*t zka7sFnLETB8m&b>{Zs8^0+%G4x(o#Z1|)L{p;ulj%6VLuCV=^JFJEt%U*4H&QKx zD5JJTungY@wmD;j#;k8&Qy~DW!R%W00=&>M#u5{w9FEyq{&4j02^dEkd+AZEJv7y4=9j7g0Y#7X!Ae&e%2m+EyE{>sQjvs)}@ zDH}$PlqKJLUcPt#V0--IWtAF*OOMeMw|=0cc~eZZi|ob*UYVYQbJZWWUO%-|vMFRR zA*56Sds6T&#;G`5W$hE_Rt^YucLt^mBNF?dHP#25|26S={alC1%#sG7C4L5iE%JR% zZ!KT=!gYCx&bb37&cMj;8g>*EY$)s6{g={k?qlo3D3;YCmvhSJH=hQFR9tS7jM~qP zD0pp_^7FRar_rh)?%NjMnF!f%A%q+%Cv8z``F%#S(wQQY2mwIkl}3zwh3 zMBvg^#{HXr;JOyBY&6&D@fM0ncf<9cQec`%FPxtt? zxdm}Sogkg0LFI?=V)ILD_2Y#de`r*n7cz52^sJQc8} zt>LKB+5Rataro>$-P{wp>vtSa<|A&IMGdiYR<8Tr3yT!;)OOB%nl>F!Tdr~Xg+{-|L> zDLub5=(q_^m&$ zA1~;Dk4}{wzx~3ccRB5nliL@r$J<}H2C`>gsonV3LB8JdHB#l*d%CYccH0=o(VfXJ zIHW;zNv)&S78LvT<=+r4Pjq3tKYgC~n7>~kHvi}KiC+J>z4K0=gN}o5s$Z-9tId7< z_4)r*`h$9u>=T5koppErV;`#+xb-J_p9|)a|N6y$Y558s_?Pc;8n|=V6Yme}{;=5e z(&_p0n!8|GVokj6VDo6}ncKb4++%J|(An`(*7Np%H^^7pzQTw6YCjH9_n&HI$zhtd z*6s&RblGlfJpLP+?kP}v-P7GizhtvV1M>g8K4tlr{qDozU-a$k)BhW(bhmWccR0ld zR;G3*8qF1btR9majIaN1uyVQoRH|IJwCcprjrF>mvYD9^ zNNv{1vfV{-IQ^Um>6^2`N|T%5wWuJ$z8{NkqAg?5V8G2KntY~SmdirqG;P|?;Q2h| zu&#Y5wmr)cFQjpr7?U6hDL$|>Q zv(eXP12UF2^Lb#1;5av}Vdg=_l$Ce6&0<3QU>0Q($nP*q(QYUhCk>3QYcQ1ks^d~x zko8^f38JUTsq4-&w_?$L*1@GNRI3Rc#|Bft!cLd+XITr8)D<`zptGO$Or8;fUy)p< ziTJgoEM?GTj0L=}3fEmo+V?JrsCw)v&fWRz%;3=Xb9%`Jy!Nxd;OWGH{sBsB)QX?Q z&(X^v)Y{fz5yz8x#o2id2CTN&Qr%@e#SMc3w2bzsS!QoxWZ9j=rrA`kACrNcE!== zz1A|C&3=l{WW^5@TMR!HJ9LA)eCujWE;eyyv}h@yY3da{9%=&eMzcnc|K_mU6W zhSzE*(2jc5gG=lPcvUS(Mxrdd1LjB|Cu=U;?Q^nKG$-}H7G&%l9;R0hdj;5HK;dW7 zn(sx~#TojwiF($E_fv7^HQL0ZpS<3}-=l zp)tx=*W9UQ=vO{_BVw_^v<2F(-Z3DH%QG^-4jVa@boS_hbLO$Ns;Vongn(L5v0DI+ z3FZh-WKVA>dh32{R36UDGI9Hjh`&JVE(LbxvhG1voI&26sRTcQscEqA7LFQJ2W;3#1hh!50r?*>CymY0a&0 z;5x-2TfwbuNa}5R;?)pEa*ZIF_r_|qPxX-Z_1Bv9_W`$4W?P$DaVRAtJxeNzmqWGt zvGw+u4~LM$me)@)+oe-ZQX|u}Gkv-h_SOmQ-jMvQ+iQ$LMk#U8@&ak9e5>HX-&@ZA zw4LLB`~>GQ1}haF6Vn;~d*sq!7Bki#XsLt&L=Tr3LQshpUelV}R%j!4#$}YUjBenN z7hJS|kiw*1$dNR-yt0v~Ed$ZLJWal%B;HP`fdwCxX$R#&-&`! zB+(dDqR5%F9cXr97xvBs*Ez(9xpFgWg7ZZ7pQ3z9)oj?Mrz}g*Om^!oiEm2M-Vn6l zCnRj{_pX9IlyU$3qL>keIG8SyZ)ifKmVz$O459FX=uCct=c6yrK^iJ23il9U{DVN0FK)+iog0sHU>bT76Am4yt@bKs2JADdbth7 zJKqdPluDK~%%1_m`}+zaX;e!IK_{Q7ABUizQrd;I(9zux*a z;``To3jYaJMGXJqS^P)ldi|#%(Xap2e=q${b6)=a^j~lN4^q0jnD!)rlBxr-XV@%r zS$%1*G*eD;N$QJi{>WM7xIef?eyu<5+dH-Fw6V|0)%|Cd$WJZ{1-&q!Tkis~_WKB@ z@Md-3=Ar({PCog|mT)m`;3m=~?Oniuf{e0l+o9c-OfbcfUAaw1Rm#XX;sY1_F%ONn z`WKWut`wUT#d+Mdo2i(}VU}<0`Dr^?4b_J{jo(u~NEVb|IHF5i+ubDiDO*>3Xbd>| z$@>yeLcFELOICk?$0Hv=eFG-&O~d4(rG#hf@=iKQu?DTGMbuCcxaX}-XNP!=wulhG z0G(f3xB~yM-Kef=W05kUMxjTS70+E8#(Pd8#z@V5u$HfNG!q&M2i8>3V&+^5<_vd5=gVqNsLUcasx z^r_L}W-BBh6FUEBY0MsE6XmOWu&}!pZ$xwc*^DUsu)BuZjs&BXFtm7iQJO z-Dc2QABY4x^!Lr3gG_e~f8gLACrA@XzfcM|5=X?p<{tLqX?GOG#>g|h!aTfg{ff?` zuxjks@E0Ih)$qXR)+MieE7HtplkYgBEKJ-~7Nar+F4d~B+bwHDy+*|oaxE2Kigcen z5=})$NXTBzixQqk;Fd9ILl=r*8bo5`g72=y%Yo0;lfWaGH{Dh=eo@ZD_-O(LC1vTj zYD;#E9x13@eYvo!H#mm$n0-HakX@A9=qKH5Gn2Idpuz{&`-r%b--z4X5A>E1qPxB* zO9*V-{Iy2I{z`gcXW~hkLgZLvKYb;Wb3TrT7}8qAYvW8VudnHUy4i|7QYd=lJTjG2 z#VJjD^dx)Ir~_ipm(MH{Go4<$5WAPfCn{5A4(7C&l!x)wHu zu7$MN>O&`-cr>eecg#}k_PW9Sctc}kXv^v!J>J#i%CPZJC*HnLA;| z^=fz;75FUAKa8<>zu6`)liw0jOw;vq&-GeEmpDB<_tI~%rcZW89rZlhu1No5%1-rh z;sd{(p*?vk(MhrQG4b`uC(Tu-JlE`svv~m(8UoQp;9!okk+XM|ls#IT08#vUhEI@Pd` z5OFhQ=e^UHhE$CbR1E+R08Kz97}ms(5+i>Tlkk5yDg9CMOgiqMrWu-U`Oxb&O)(SK`9?EFTaA#G%}uiH<76D zz&yXFrSjQp@qRGAF=@=hIFmcEx!4v7!jx>gk)2e6B~N6^NwO9r=`H0AaOp=$bbYMj zUH!x|X4Oc|LQSaU+Mg}I>nqEgk6+^A`Ul#g5ZtlHe|XdOrssT4LXwlRB&?k-N=If z?GWnF;65%o%bC^MVo6=AZbN_E8*8h~g_HePPl(2VK&|2Y{06LRS*`PLMw(Q2^vg=s zUitD#mXMH6{KAn@7I>O9mIN2&Ze|=dUX(Wa-tbs`?IHxBa0w zwb*pDv|-LkWXWBo7fq|-1w@}*ct1X`sj96Q)+DG3&FhH!(;9`-IsSf?dh)$w9%++u zaHo`{dkGyz6y_u`it?rv-JW<=>k{3ez(>+1l$0G-^2vtzH`G3&yyQne#DYZ8HgmO~IYMhe zx$j1iE40;ZX2U`9$lr)9Z&?#8Nr!#Xuk{}FvU+(?A$1-m8faTdG22&V5n5ZOL70~i z{H?BHXSv_Dxm};ypo^!_p9OM_Gq;hv2KwLm-_I89FMV_o$1Ckjfz(oqAx_g)QVD6s zg_9|V$Drs+`Ub733(quaY;Pe*34`d+fy)DD<7jZS0$fRGyZUQRmdo`zCc^T_h*?H(%SCjHa1#V%PHPzOE!le9pkq&A4q`?lW;N_nkN)aKWUb-_wn`3%Zc&Y8Wg?(BcSIRCm9YSniRkt{5HfY{TtMF;D$>bU`Jji zt5u`OZX1CD1GVLx0-1qLURzifjNoZ_YE6~;GjF#LF(a8U|qnR>{V@RNz|kHY9@vtK5YT9?AtXf!}(Xo`P7g!E3IbQ z5=7t(%>V{lX5O7F6%}I_GTWFi6ejUJx?-kLDr;U$UdFQxO(N&AFm8$S-7gWLrLD~| zA+@YvW)pi}>bHPNlhx=rFijK4sWG@s)_rhyywiKj4j0yDPi={DdSjMIXp3jpV|dB< zwpTe2JgO>$UC+|J31+BF@D%f-W-2yFlus16}u+R6V_dj$j#3Z3arjr^Y9P;z0R>&jNQ>|jp!2+1+4C6Pp)*o*2;W2 zj4p<>+UB(&))674(kKaNM-gNrWdw>Ra#ABP>&No1Sc4Yz{Xfr?I+opOyy7j<1#A(($V4E7t+riY(4<(h0(p!UqYKkwrE~O+*=+X~)E^)HtE# z2nkk*(ekzYw&csP7~!D_VG8d&$PUaWP`=v+l=G;plWc=8C7I$<4uZ<2=tZ!utBcg7 z5Y%e-OIXp^+UGij4zI*o|INX~(j^wi2C9y^+u+v=lOzS_1|Qa3L4}QXrbY;aRqqnT z)eKe@V;Jy%+FKLRUk)JHM{ z`Q`cKv1oaC;ldI0SU7&zE;0XAdtm4JE}uvV zfnt7-_#6&1RdJ)mJ z1;M1kPSY)tV;_=FT|)HOo_V{^E23mwTnm#7mgg{HZwp5Td_qiAiYo6YDIY}|JiP9- z1b5p1vH8ZO-G3Tb0mK?!21gJu*UuLQPKF?(jY{#T!3vF*)to=ZA8Sm6{EB_6FIO@3 zKK)|c9)En(@xUKoSvK5Tinakd`9Vl^!$&ea#WMuz8=Px5jlET&Ijjh|{j{`y(({_@ zz-&Xp6jHMV;di%?HTA;U+OeSU)4e4 z2<;*x7o^vSMR-n#v`esI@GT~0v2y1Rzf0apa2Rj}lh5&EO0ix=D8Btz&=`KoWX8I+ z(;cv77%wbW)Bhc}e&Z0T%qLm-ypm`Jv`#}+Yp_5$C%?0Y#vjy&9e7+LgnCTFGuelxdBFC+~1gc&culYbK2drwh?VZdgun_3?jRTea27OM~CKW@`vWc3x z&6m-OB|H13;!3Qo_js;g0x5g>YRxrP6La${d z#W+SHGcZ&vCeHJZk$dgQn%3WMMaji$I4j_6M$7TCik|5FsLfgbfGF2Cf^J+Ja$l|P z@x@-qoJMSOmQ53w%QD~iLh$Y~^HZ7M zBMsyo#>DE8V_I?TiT!8yDXeB3GgxKWrH7~yS&%I<{zqwL-8Zba4jsu3d=p7KgG=-= zY*K%@iIm;Mo?ZCc>~J@r&ZYG04zrBt!O|SRc&cER9RLvQHho8fF|HTp{ZrTH2kk=i zwitlyR8x5PdDCf}+rH0hqZ~j^V4u~;ELr1mk0sf4@T88UEW1TPRZYmTH<1ZegbyyF z^XqPwvqHpWp)B6 zWGEGKw@@1Gw>ZbWJf)+gy=;E60+t%NpTod8#Kb9hhq(2R7b8TA_uBev<7+3~j^9q% z?vXwBdDVth2v?m{C2V=+KTDGy{jk2CH8^*@ze_VvZN~I@zqTfgv)@VTC;r3c*8R@p z>ao*%^>z`}=vN9q@>CG-D~APYyCt`|JYd-iec@8g?8N?*Iqd0bY6%lRThd9?5XaTj zk`hT>SbpuJlTJ;6UI}>QED~k2(~`A?E!dSJL`D+{jL0aX9J=|4&Z+bFqLc(Y6te|f zM-(hfa$X9T=>Re6=+{m@>&SuW599>?Ybtj+g&A_nS`bJ5Rax72T0{Il>z6%c-4+iW z?$^Js}pXlHH<3` z_r0Jpc(9;CDHF4dZopZ#mljNK1>ZRrFg%to`o4WyC}^lMaOlDe;Aizsut??w`pVI8 zO$(IR^KK-vU>dC9-nS5)b^2N5;khZNVh;o3^Bk&-rmQY6>%D+(s8kdV7g+=C&nx)u z?_lqLP{8m{GQ;07Wc~(rf3^9)qSRkqp05f2Z-`R=|4HdiJl;57TBuwJ*?!|(cQ5^% z?iTo!B?Thyxl;q_{levYcJGq%`IRuat0QW*Jm02t?gUsU#1TXzcYp;HDsLg$azg0A zn$SNg7oGDS%L27k9{lPuU&<%qAk$@jc$v_q+Sd*;PTS5S+gYt0a1C)43(8O8R@O0= zut{qLPOq~Tk2glgEn?oJt6uuUU)Jg+PO>VxRg$*YH(pUy$8>r8HD&s`?Eln@bJXmXzY z4K;I-ib?F#M5Nb4sq8b)wNHUGFE;mUEQ36|sY3RdUA&?0hvNwna^n zR?;HivfiTBD0dorLswU(y~m>%yG2ydZ3>D*Wc3ClO+SJX^RDjQ*dL0iU5=3Izd>Kj z%pI(4Dvf5`Wz#I$Ia#bB-eAd`ZJn&C<%;w$$kPwL`)4ADh6kow2jn5G)4tJo=r)x= zTab(DQIiiHJq8zLJ`_9!E)HD{g)HT@`(|fADWbDBI8NqLfLLSis-G_DRQdzTfZ|Um z+XOzl5-7>Ci`+a;tJSi%UgOT0*eQA8=I37J89Q=CCWKG!j96UM06eL#%_ClF87=1o zj*1VUi)WZR#_i3gi%py-XqZznJJ{H~b<|#M{@^TTIKdTgc+(~eP>h-K@bIp-hU{u5 z?e@5lKlHncT_C+8pa&$&JrSrJiim|ps*`y3?>zZZ4&kF&=$(7WBH<$in<4d;oLa*u zPsnc?dAyME?DG=0&yLXH5o)nM8SvZ4XeKjX>w-cuKq`fy)*nAJAMhJ&qVVaanTPqQ zW?vn#Z@qs*Hi40b)QuSXO==0&P8F=@#_0y6>Ft&?w9R`|wegD$7J zydr&2)H~oMzU8r*J8@d41(R~1e-Wm6jGxO||1Dpu0sDX)_Zw;;5J#QZVfs0lj4c&@ zV=$4&9-9nIS1{Lz;OP_>g%9g(AXrAt2$xmN@Q9?Lvv!|p;XJqLTCHOH&ftEjTY&ic zi)uwd=XNq8z2g&WpQ|+2=*jm^Xvcam9UNsfeUE!m&nmbYft?(d-K8=IN+9a5lap3L zLNm*IkPBi7noyJ4GZ}M<4(q~f%eYP9l^1_duj{wPFKw+br)`QFT9RN&x@L%6Cs`bg zt;Z?EK$f55mioGJ_?q8TxM(a4_5e literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch13/13-4.jpg b/docs/vol1/image/ch13/13-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8900579aff6cd0b79c6620ca24e4e00245353af6 GIT binary patch literal 130769 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 z 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

J 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 z zDPsjdHoQ0Hd%DN}Wquvy%7zu|tT=dePCSKL9obL!bxp%l^{Lu{53aHH4AD3Kwb1_1 zp#MI{Mb6sOfBERYx=kXXUHA0u{ZTxp8((+xW07sdk_*SwMK|<7>~&Y#{z`p?uqTh5 zoM2Ou8hYcNw3)|u_C

*pp2+pov`QuROP8S7D?SdT<8eokF|bjZ!aXPop#3Wg~a znP}$YNd`AfP=q?P{4xjc|0qNMOInY0%-cpiX@oEvIk$a>7FtMAe5Y zICtjPdBoS#)oKjlthT+U`%cW^#u`*rcr*(~Wb38H|1z;iCfEx0hdlNxO9YpyhVA^r zz)E;R<9H*gYpi%e;|9g4zns|r{nXd^`_xyJ4XbJC=)+bWI{ONs@jhQc;HPJ}^t0F~ zIls-{ZQK6~lk$(2wg0tQdO4YLez(Xm;FVKzL9aMac)?{lFxi&uqrxNN4toPppFr7c zY%tB8Ld6{&ag7t@l(PMCo&+pG*E; zr?M;@Z`~*Um35!yo8jWD1^kswzoKrlDGSn!$MlNyusev)sFn1(u8^xsc0x(;Z0)aU za25Zgc{dJKi7nTZ)W?X>_O=XcnkyF5ks}G*NP<+uCHd%y&VoJougTX}x|)Qae2VtM zrJ7J!|5f8>LN))zWHfT%k#uSi69`(9Dx95v5?Dz;b^&6iLm4j^ad+*ubEZa=@Lw2& zU-Rbwfywyq&CXxv_;rV{8=66#mQ_ruO2L&2tTof=x4?B&II!!cYFoGPw4G(T{ju2p zvA)p9s}1HaeNIoXOafx?5M=Qb)>-HF_)i5O){9s=cTfLrX>Bd7SYDtvPxgmyJG>Q% zWFBfKd7)|@&bZJ3h4Iw71?X6_YB32_sR|_k^HOwFAPf+8k`Kj_E_ald3?H%M_oW}P zTuZ9>GhXrE5Wq}cGwLYXOdLG+#8)}E+S$v2sgGCL1LKGm!3wQ-ZpYDE7q2U6cW_n2 ze2bmUdT2jd`V$a{{H`AU&2W7rnshc7Ueh#$DdW{Qa536IOwiV+c}3yF7HDoh%h!IZ z)A%{{&W1q%77WsNQ47mWNdO08dJLUPFz_UD=T#ytrCUQ)@|F`)_c7~z8kRTu9#oAW zD7fJzEhTM4^{I(|gZ$wVb6aHXr_3Ma%N|khW^e>X@nobWPkcYfXlWI;QoNyRCN%8b zyWlr%g1%{IS;7+GPT3KV-FZKyEx&qYPym($pH?u9G%-w>NVee=eCH$T+;Bw<{u0dd zyx{POs5sZd_Te3I&dtrmFz=PV)giQ($oky}hoG9?vTP}H9})Eu0Rr|y9d|}a(teEh zcf~%{Jhhrha#bKqWG#2f87rt&quHdu8v-mn)KV-a-?x=Z4yZ;4drrO@R!8u)mzjTk z<2EbsX#Mo|y0IcTs?%*(50MK`;$8nXz1is~?zbO1(0Vws)NMz|!1w%X%l)+W;e-fA zD;uhbl~}Cz%1Ll8cjSip{mPQ9yEN(#>D3PX!vZM_a9wo5GmeH3&TnZ$`}(f@=PI1y z*OH2nVhhQWa87_sL3QWM@ea>=CGziX(|8r4&?{wuvoG?J_1(_EzU8 zr(_OMjNXpPf~~JoLUn*_nVr~uCtS-^KMqfusW9*<0Rj5^U_;^Kn)7V zZ)dq0`8s%XW@aFmtlyUEZ|Ka+EC1N~`10b-xsBd;*Q4}H<*F{;y|Pj>((PE8rga-r z(?V6uAcccIl^*#U|C_q~A>&W{k|Q%9(=5*SzL9yf-Ak%J_;{v6^fK!H!z89>D;wF~ z)4ra5p&7}n5$?{^#a{SLtY`^Tk|}D^YgGQngZmgDt@|-i&6KdIJ=;Q7zylx+^~rjL zBoFCH=QNY)G*7yy>oM`Atxycc)@_T;$Ju|PFhbln!!0~=Z`z*A=uJE`2YQ<{qN6SV zD|9OSg!fcXEIb~qZ;QA&lAsb-Ix47ESR3azBUB{HGBHg~BRNV(M3sllC-9s zIH|r~ZVzpS8}i9dKtM^+%$=9af>oMdg{6ff+h(k?rY9W**ONE{rzV8kR=_Q=x~*%tOa+o^mtkoR)aK-;l^+9!nNS2 zJUj&i%0uGrtulR1gG7(a2t+}zsBwl3ymD!IlshpYH9s{lJ0d>3(uJu0R>>{}*hx}4 z%9c}5#r;NdTp({@{v?pB4i{lEG-U5Cr5y>&s=K0&jOI8&6l>=Rg*hU1BZK?&jIH9? ziABDhZ#@;bo(92Flc_|7zj3F&Rq{1jmFN=&ba=dfT+YU#L2KKk6n~BH45n^Ty zTF-{07=!y~!Zh@jD@&d{yNeIA$A20v)MxeJqq!DSFy7%E#>iUL82n7x87)GYt#HAo zdVkCs0Rf6xYdvRt>FCy&oyqjDaN$OLQ5_}?ZKyXPu2-?yI+>XyN?z#=UdqjIN_#Of z!fO_`CHLFqgs_TZ!}fv5{oBMulm_hSEgg1*nMloJ@?GuMz0qshC7_%;}>!(Nh`yhSi*25^J`EL%+aXK^W${iY`;WpBMukL*T#Xq^pfGYWbz1z z8F4$5yxot1e8=|VQqmM1ZHw5 zG0ewSwX&ZlPK`oWG2w=~#LSGgXF_7bBR?24-WvMeP(Emz@2M+3@<3mxglF5c_(tH;wt3Obu>U%NEKO&?OiH<)GcQ}i)NY$d! zD7_*hz?{jAc-j5!@yD-`fiBgfOCR;^k@>Zp2B^H;p*&_S6@NY;EcGX#ogT#TK7pdy zwdL|6U-0+Dz;;!fIP+pTcd8;sL8+=yqAvslfuYgp&zclf++@$zbiJFE6P+7Mg27!d zTv^?i{|(kvI%8a8;0-Y|J~#OKVSgEWk(hf4cYBsbf`iJmP7@l(ozj%8&j=GGZ?dms zo(g@mb)BA4YMkOHAkl#27Is7DTZAt^JX0w_0fW=N*{=p7fn@PCr%7#Ka^SH28_X|m z4KrODQ#2q5uu6x=X$w1`M%8txs9D+6tt{8z3b8exa2f^ zuvlKb?uc4&X-+ayr)QrnFWzFo(Bqn4g7w4ulVVzag3p26r(T=T4tZW3+leGY*jv7| zWT~UTD%R;bsIwBPOoaOI`CHYz`5v7<7hg(CiIxuIZe3pPmO=jRx_R=uMwxcm)|g?3 z1efizMj|VT-iDbXt0&S%Y3*##L`Y`7m8LB|aECZThw9yD#_(NH1B6*_(02U0`&Ut09yXh_nx#Fe zz1o;TcA@>7{X%LjQ&CyC(3*rNmD#&w%N(~1BaAm7KW;X3m|?jD6wwGH%Wj>T;1+v- zXHd3eWx?}2C?xI96k~kK(hM{nSu%`d{n4ryk>W9})B|D5V_r{uQCDen-xjfXO`FOp zP`Q@<#nRU);l!0?_y+uyKgO_OqQQFBehf8D3Nzyhd{5aE>F%vosF?YYCU6u2%l6O> zz!5xgAnX7~Eg< zT2&sWK4EjxaBq%-aLN;6>}lM*s6l4iP2RdyeR4QScPqH04}uKuM+@qE-lRJj-=1i> z5=5lFh&DlNU7^%LXEdwpoIc>4B!BVhi=}`Te@{6j6+-@#QxyftCieVP>f>uTqX6SvT%N3)%RDd9SXYW8i;;G?UZU^1Q|wDPucM1d-orzVc$z) zpQdXgeblX@K^c>%HTz|0VS#j3QNH4QSr_NFrWOgm#&1{KGZ@w-9JC?|x^c*@tlqXm zs;m)n2*!!?MVBM(K_g4D+bJ=!Ijk@a^! z0XWd^S8qIVl+rch+m`)h4#I_z?b9Q{WwdCEVc^5m3~g|4(@STpaaVtPgmM_A8ULo1 zVe{t#?c~62k);ApkA1-*o|+yq-aYfa8q~BC%HC+8SuGBCNzQ+4X%*C`CsCKL0v%ze ziGz*#KsJg4HTkHA338s3Wj3R{pn-HqSijQ*$Y0Rs&Y@52h)d_z<|LHA$?cMk=QXXb zy)zQN#6@P&LO&J-hs$6s`1p4ZicTw|P#>BM$4Q79y(08{+d2LAY)Qu*4}XXlyhw*- ztF9;IIq(YeJv~+HrFQP^Ns}yNWAB{d`QV>7%q1Mz>RA0vO}-Ej5#c})!|a|NSdHu( z(OkH-!1w|+;m${PC(sG6w*mrk{+phw5o9V3eJo?)QTPc#KDnT91F_zEY@xU#iorDu?OPO1!^^;uC|4j@wkaD>kcd zP0f^>m6Np8hIN^<8_;76%+3oYjW@|7t_8B;YUWAOV1Jw+3~ zHmC$-NsDufGd9&kKOLg5r0Qi%-*)Ig%_0%a=#Y}#S6Hw3MkG5SABqlD?jZ*ivp^vF3)RuO&ucqlXfzG^T zgNuYFpy?7mdLC6tQ;G2975I9jPV8x@@~{h?Wt!lk>1%5*Zgbral>71A2Gb3F)7!b8 zf**xvr~79bhLb!n;>@x#s8QlirYaHD3naxEP0qBEh3m&mnL@4GzDImEH2|Ky5hoBI z93L{q&DpL%-_TSz56mCJpE#vgm9OJT^cK2EsaGr-JjPH05fvImxZW6Nn?nkN!w?22 zqxeydK@UUZ%R8s0X>rdQ*!Zu=nj`Xan-9QucCYUVhb<;DRA*2Z4R_ln(rMfYit=D`t#+TnLiac)uo1sjwyO(ne!!U4bl)MWe--T5D^w|HEKuPM#s`P9Cez8)cGw%~Rjwz1 zzWGtC{+2%%=qePJ`Yu(qGu}kX>Xj#GCj!o4BkBA825H#)>&}^gfp1C{J-|f9Sjypb zWbrcRQFoNDcSJgWslG&Gt6*{)@i5SusGc+NU0HR;lbsbB)o6Fre4(h0`vThMp?>hK z{!jS}aE+>)l!yY3n!J&=mUCLN+KMZ8y8~K6hH@upE?5q6IAR{QIE@_b34APrUWmYB zp}u8&B=UT!PIsu*F5aifc}9}(HPgrQ56BZ=fU=duj||2fm>#?4Vti#SIJy#|9hTM*asgsygB&;j_Fv-U}st3V&BUwamAyGw3Bz5``D|&}4vfNl* zk4s%`U~nbF_m(yseFF<}o3hR~N|yX$d<#U|2C18)iM5HJ;$DNaZZ}5WD;?0_49LjM zg6kxGa>OsWm3BzMzGF&Moj%nSDB;ORmlMz7#0{4)@ds`8WsvxMWA_w$rYaCgE$fg@ zZe3pY+|K<6R*lT|lroJGW?(Yy5zQ{OoSy(@>41+Iwb8fA6qxRTdRR*GqD&_VZ*f*G;Fm}+qlIkE9nMfrtC>hp-_09|SPRXY zEUoZ_BY?5ma}){G4A-# z>wM>TXQROPRNOpf?S8MQtQ`7Dl#m`sqnJRd7v8+o&Iy&NAsl)6oOft4j;Yl~l zLH9%r%KBB*)%&G|FdUwa2>p+yS_Pjr^vh=>9tSHtEe&zt9l2XLKUvn6kI=U6T@|~@t=vjyYIS{(m&pB(#NIeqA%)$52!gq zJNu3t7Y`8cU@7S#peR_t(?gg!kI$6$w?LB=@n85nJgvMEFQYUczkGbnD$&mGI!PCW zgQ-GUVGXFLLAl2ql$Uj#-*+hc!Lc@dt}S6qu3PBIaAL0ZGAFoN+z0D9%01SwwS3o; zKW)lHmt!ckP|RJW@xEBIEucruJ3$?z(X`;x+lV|A#uWm6Y+BLYtx3W)ZZ4-b#O<~u zgCiW?>xFvyVFH(dM`I=41k;3n|KWkbq@7u{}^F4Vt;=g&)!NR)$( zkf=VLm2UgwAhCsV;3yKez=L=Z*&{+qlyy!1M^EX&+?E9UKk%ftOZbDr@cU=?Jl3!F z8z|m?p4Fq;KghO(K|VFIp0-(18uq^>g5thF&V&#C$g2!bj+jbVEBk~$qcETa!Z-=zBg?%g*cCJf zK!51C$)dnBlL+SVE;W#3S2=Re^DRmI|bHrgXs&yHT zj10td`$5a1sA3s_rzxDSXV{o}ii> zqWpk{DlyV4#3ko-3cO%|Gc`2AmPg`j`K_+%7MU!qO;x@TE9btoZ)wQ(`#IG5_n7+n zfNH0jGG@#6rlRtw#Fj-Ui;YnuFCuaQj#{cAlgb`Pm1W4?B^UIF_vlKDv#d81dMMJy zp=zhLD9lMHPYz{6JerOX;Q8&jGBC-jRd%`Ma{6eusTBNSW4P^z*=pn+2K3WQ+G(v+ ziHNz!H}!oeOBP?Hq$iHjr}e8fCwwQ#TjVwa-~-q}Q&g-Q_{!isS1(xX1T9XpOx2ts0~sGi6!Ft10~x@C49L zwt0!cfp^OCc=98s3L)|!=8DkbK%L*HM;soo5j^ny zq0~LG({x2`g3aAbA}y(awkGQCL0Sj*=ND>@Db5tUl$~x#ei1Ot9o`AD$1LD(RAr=V zrCE7z1U-9XT4pfTOp-xZ=y{DUwjLp5W=`V8*HGPAzf`qR-e(iVRJYy#=Y(QSQC zRF%mZx3lv)`%>IXS{ku!K&K+}91XObQhVFzj`|QwL(W;rJ3ygi=cF;2vS$Ir0C&!uq{_B7kCkT`~7mdn+^?T+$~VSBGIY4Pm+JZ=y@T;zWX7i zrdAy7`;sbeVe4+PaM!7u&%}y#d)UM_;1MDbiXItgec()Dx^p!-Ds*L*MWkDuwW}OM zHbdR(s?-K2M|B$-F^V^1wX9I5YYFzeRU<2g6h^aS!q>ekY^auB1RUO3IfB-CG z0$bdelGX=2jfLx!Q!bGgce7}`BcqpZ(RlYLrrqK``#*!3j22#`lP3LnmBtB4@lU(D9fbchsf1-Y%8Ry zV+1kwLs8w8d30kVjdu0~SY{Tjyh`RM!cwxsA5yxo_UV$&9D}%bSO-z?MAYHPy9J%x znicn|nMLa!z1I$u2?%91XWjKwGaL1kL4o309&apECADr4&xakg<0A)W>#E5&irew= zDzQx3I}W)~9$CTlnYKYHk6yr3++MH$4SeVe*d1v%YuJ?VzuLRG=X>Ax=U%?w=lL%8gv9emV~X<^ChE2`&ckLQzC^;heEin1>#tynrWoj&eS31=%V5oXDOaBP7k4ZXhZu5RIj~h>cP? zftJ{3)}wY0%eTlHG3Cl=Rwk{I+=@4U&V%G6xS0?Vji&|c*kiRHjl_*WO4ARVW?`*V zX@I`*a|rcwhU3IkO{%ahEhb!$)|SzXwI$#u?t+m^*(n7A%MzyU=BMYX|!<@_qL*lZ!gGw~@OzLcEtVEIV z-JLE+PcfbP&9sk()z?fC-<`+EF+i^@TaOpzPIC+y6(1ez(cm8SiaZrX^YENx*+>hg zclK{C2QX%gKE+{UXPj3^k#}D3v6D2 zP(Rjf;it!7xNiYpHj(rbzsFB7Cdy~DRO5~+>6b?+bWl18DPZ(U1uEi7O_Wk^P&J@-%yeh|z8h(_9se2yHHt&?D9>7Siz*rDxjbYzdXK_b-u=LrZz++gkDQ znIj2qMu`$FuMNAHkV{W=RmJ-+1|}<+-vdq$J^_vZhj{8zWEQ||m$dw-oq1&Kx~c4Y z_VU@_-0F*tmFdMtCQT051f+H**tA~k*TrV}JR&c*7o7l8fN49_cIswa9YJGjm`wFhprxK(EZ$2B$d=~35NbSA{zrO&{>vH%G?}w*s@XjpzTJ2m& zFkhA*m7^CbmsdA{!Km68>6Xdo|Hxh^eeb?()i~}^n_MY_Fkm&bCQMz}vs(3;puUZN zqAGvx-#*k{#2oC>(_(YX%0)dlXN!^I!#B1)l_62vf)YHDrZ->Yh*rF8z~ zLk~=>gexJ3F?E8&_`F?En)ZmY4y(BR;@1pU8E{#|DPZVi?(m$N+tAO>f_~|g#a+kM z;I7DeH|LS`+`G=W_^yGBoCSX=I(}H@iE50atn)N1ZtsPfqlREd%?4wvc8zSn(u>y zr_&Q`eMWAjMcp0>uz#>`DROyLmW9*9HQ2>1vz}VV^2h`G(=Yk59;NdP^br~D7jRU( zF8)(Z0dcA|+zLC>`V|cF6QZcj_RLSmds|SdpRAS^6d0`Dk3*|Ds#f@D8_*X3lc=F= zX6!5c90s<2ILUxpS97ogdCM{{b}E7HSVsfZr*roF;y}#v+~Dut!3$URbFO5#Hj3(x zb0`}<$yCku`>+K1=01alW-oqa2 z2jehU-P(v$%)T?K0wXt$EtdE?tk;YUH;H84s2O{qs)T(cEP|xoWUZSkRWU$36jE0fID90F(3OCP926ueyHTl?bb`A*;vUO%?P33$FS0u! zG3DBqOEL_jFEn#@*{V$nh`0uEM?}8uLTc(IH=+73i+c(Z*!WIyCST^D*zH2z?s}nz zbJEe_p`ut)K>}A;#Edz011F3_v6s>>`>@1YkX_=+NSyyi&RA=j6gp!L z)|j_qt0fJRn7iqSRCB4K6!H(0h1VZuuIaIIN5q$9MrCy6SQ4i`g36$kZd}ovAh}CP zJX}28E7oIA6w1%qN00CI;vzTB#F#Aylq+6_d1IZ?H8egAy7VK=lmxB^!1tNf21K|n z)E4~IU)zIaPFRtG!_*d(biTfOMYxtqtLRE{LK=p*`90duI`SH{arQi!ZBS2pwp0As zC;P>rZqw&iz(P8==~uzY`i^}CsaBenW7Fe>9il^L_)AO=`qDzl4m#YDV_twv_mzHV z{*PTYJCxGC+={cq`mgW)pdYYmnVGgR#lT0~ooAlF{94eAX}4}mVFsf&qz5??X5soU zfKei0ct*Dz57n_#YdPXoH4L1=5-$XKBx3!J(#`ToMDqt@1%!L5(IGbGL4NOi_}gYU za}VDOfWl;s2RJT;6ybxNpBMyyY)%$w^X2M449c}K3jmQ5;$>!tNuv;uPu*Rdu0TMgdH zBslg#_RtG`(GfNmw1bdV+VByCV(GBm-XJRmCvJChEE_7afu`6#X4yNL>65%`xU9he z|3r^1SgYfih>U)so0Rlc(S|0w*Qo4)!v7;I>!@#_|G}&?_$yfcM1KRGui1E5x#q5; z-&ho|v^BOHjWmAWKpT=kv%dxZXDhdrZ1Snx!iMX%tNHJZe9u)jJaN+_;WD2f|3pa} zHw6HkX+z;}3R3sUep@!O?unG^lFTR+rhL<{A>S01?URrq>%jpayp`+!hmGs=530ew z76x#p6c*J)hdI;Wj_xFF!An z+_8I;g5LDx8OU1{8)>f7QN|b`*yFI!enFZ~lv>7$K}iZtJLJE?>ATICCfG5|b6*uf z`3`=`X|ZSS>>8(Yo7D7OrkQO_`-Q^en^f*-n-#;U4|HO-3P}sMbqw!RKf^3GY^Bwv zHs8^TH%sp^@Gy4oTEt#?61BBjPTbPw8@B*K{WW@{#v7>lh-Mi)#t^q`#BL)aF!ju> z!?=Y~3u~eP4~u5$vAtSL5L?@Fbx)!LSK7L~0DQ_@847?8Fc2UN&<>CozfOoi&;r5q z{h-~9%%QhX`o^r8ON@OqXCJ3j zBv=UssZreN8zeHTCEs6nxrBT&&IYJy->-E2>CULNzN6JUnbi(I)qb})5raY$@RKE( zGBF{nJvHhP=c;Ib^s(7HX(av#^rWPf+by>ngaDoUlL&gsO*4TGkc5zU{u78FX=Mlk zWcJrXzd@isk2{^~R_04s5K9~*pQ+kW0Rm;x&*JjgG;*d!lOI=eV&C)2>W8*{eH!X@ zaUZ2GY8`wrX89$5f4~mqU!upCOn*=XmoM4;?EioNdGjLPRXvX`som*R}b(1^-#hs@%z~qw>z&) zmH(+2%g;8o9VkpU79{D!ctQCQ!_Q5Dl9%BpBMv%O6X>&mCyvuloJ&`g64UzmGgUv zKJtx8t9p?`TkA=Bsn?S0BPdC2xiesxNwWXu82QCjAQzOy89S30=Rg?7T^wVl z4>cEe&A3a1M7@1sRYWb^e5J#L!^@LuDo6KdgWx;Gi#}zVZ|F-1o6N>ev}g}G8IV~; zQj4gq-Rce6zI7XcZ3MOv_!|-EO^|$F>|crEmis~yI!?lj%JH&-GezuCW- c9AXUIHFZ+H0*^vv#qUF-2YkJvCmvrCTq%9z(Y15`n(=<(2Q4~=TZ~+w& z#9a|lT-Y~JKtWkl6jTsgZ~+Ar_nqHqi-J5nKJWW}-{1G2ui-=Q$vHD~=FH5QGiQ>M z)9;-AK-A5Gno&_*eO=wCx=|w0=@X(+u6SBVXX9zENj_RCg0*IQ!wFI4>Q;de)rkOX z?eFOiwO_>rfoqXS*z9N`k`6~llj)SCNN^Hpv{WJ*JE6!CWHKr=g`+W=9XI654V#BF z(UEaOaHU;p=XB9HZ7TCoZ`t7^%Slob88Tsfhq1+$Vv0*e1)`~#V%Tg;aomt9@fJ|7 zR7-|5RY8R0xFJZT*QS8o)uc=F(I)k1Su-h>N}JT0(NI{WB-ENwO){xWCXuQnkh~dE zwiEuh6j2kkf($Sw+ZD0}d&wjWZ&s2Mfkdi19 zO+{HD3xo(sE`$ff^C#j3CI4@bjOJAA?-64XIu-kOecJ7RkDN+f5Hl-yqGttqL4LEo z5*L+tqSZVa=v&j6=n&V$(|?QiqQWm-kLK1P*|m%Blv8zV*cZX{9*s+n$2151KCyPZ%cuW z2=VbUrK-x;IaO!5`d6fQl#a!P@iO=<(wVBi!#ZQH7MHVM~s>>Vbm1NdV9`}APRSqaUfzTQoXbYfUjHz zWcbh`G6r#1kiq3fv=Xt|jvE-g8`8M_NsZC#FQNcY3tH`7Ly-%oV4VTngmI;mWGp5( ztqtN>I;MpIOEJV!BZveMyBk4*xT8!OAfJZ;H{kO6F}>O3@Oq@?>iu7STw%PzQRR}B zAhTZw$bst&!AkLeba{euZ7EVg#j5z_D#4HuD+ddpB3R)}n~lglg(?tL1@Z?|LhU|Q z<=js)@ep3&CthXBAA-)@(}h1d^auX{O4f*kj8HCADOQKCEr9!E^*&o6sxwDejH%vB zE1c+zkrcy3K(RJtO||D_*n|m0r6{TO9LBLY34pXn1qn$;j97vI1+Bhvi`YrV<8@cs z^_BLRJp_5YRf6YM2G0WmL=@HG1GKPQt0X~uK$zSytI^Jx^#-NW7mIm~m^^I6q!AtD zt`Y>=<%0oB(rj?#!vSqP%z|+nJq#%W7I)?{uvKlxDw=mB3`$2LDA;L5@sIX1e`_3) zP}QC+9=}~?_a$WxT3WItY9?_W!hgK2$?#k-6lje8qe5Ty17ok=dBS!aWrzz{BxtS~ zcLnZGf?*W^)h8fOr%(QcsFqFvMF|Q&z)KK+A*%CMwC9S0A0ewrh60Ynp9Dc2Kmc>u zZ;ufskCfD>^EP=z9w{lg5N^)}WmU~r!Tt`mO7MaRXHox4r9URexg6%Ib5|cMI(U`+J@p z+E5Dz}aaDJpG^7xk@=xX?0Z#tb+@c zYE^E?;x`)|5XlDrKs+-q{fI7xxDc%yF}jf`qO;d#iWL|-qBkRs0-~;Xb&p$XMGP=- z!rBmmDv)47n?{UMgp6tBh^c_Y+&Uv-<-fhar|U!WMK%#F|9-n66ag&_*J8M6X5c zL8MgByAg*UkrnhY#OX&=1>o#lK}1{t3zeJH>fHt(;z?>v1p|Y4vs!!1pg?>It;dbp z5zMTu62#qT48cilIEF$)}~^{I6@?~S+`M%kOpnZZSo+Iq*mcJaR_DB zieqLy5-aFX#2i8Bpw3n>D{34j4LWbZ;zt;%E>y4-5jL%hBUUHE#dPVIHH+{;UBPX$ zA%b70Kx{mc_XD2|6j%)E&2GDZlw*2#!Qn!nw7yC(6mygixk69JoH(K~>-m^dg}|g< zT5!d{SoLDJ+XyVcU`E`6R-ZL^5f7#{+6|=JBi5P=hE&X(*4l!GBI5H^32L1NpaP#* z>z1M>#LsJeY1He+f?AwJBL&>34FypyhC^D?k3#MMqosmIZ7hguY0~H@0NF4}BM}R! zwdsPfN|1FEd2JTx(H%}`^L~@IK!&uXtjXn$xU@2ZDS||eT4mD2BTT(>ltPDO z&89-Eq%#D~cr2dNnaySC5`|P!7fxHs z1(wlKS*yXFW_1av6+^g;E^V-;kW5aO^;_i#U)B|}wkkn$EUVN(1{>kdAv$HumPPVr zo!DR#y9-{uE^T)gilpA;wp?nxVrbeiycIJuEi5JeB4H5T1rXHiHP73pv`o+nI*nY6}>UXv+Hri*2J zm7vMxkC@_+$rL~$DUV!liWZ`1T#1-c=_sRBiA}jAWhla8lPpOwTCv0=PRCHMR%8V0IyKlMXeT1O9lGVA^YPnyD;pDOoUc+D!8$Tf|&QC!9J*%B*xJ3bd66(i!7yE-Z4Oe< z>maQy5EL>cdE6Ec=6pJp&c>5DH4P_iP&%LVN=!D1qTujpvv#YyAS)ZZc7M7UOBhvl z%3QK0EVanN&SguG-tMqVgJr7hRM;g3skQ8392SLCruX|Cekl|$2XqcfDsz-WB}Yaf zQ~AiGLx#v%Jr!_j-3q^+wma=HWtBs%kI^{;urjY_mCi&^713u(&K#_^`2^mnN~=}+ z0_!sRVNPF8xV&af&?k$#qKMe6SH@f!M6A%mahJ>>Nhc(9m7rVaKtcvx%I%D3t$sA) zCW=~h(p+$}7M<;fuJNkxnqX}I7iW2P#> zsFXsyz<+zCw8!g+SWJE<;UyRgY)H$!EMzTKrU~S*rILBtr{nBovZV64Ee>x|=JQ30 zPK#fe^YIZEV$js~DL$pcCC3ofZ$jNU$YAtiT2BfxrThuhOQANCzv%D@4pJEH#jRv8 zuT8jR&OlHsB;8V!g^)yGI5S7ZXF0+|#_ z9BbE-5LC{Y-2Up2BPOl1Z1SfgK@3s=z9O6;6PqG2`s}WL=>bO#D)|%rSZC6?Bid3jdkfv1DkeRpAWu1*l z=i!9WX)mRv#YBj9NEFIcBCB#a(&A_mA>3h3k0*U%PsU>QB-xBtp>#NsYQk@}c&&`f zi&Y5*lmQE{Je*aMRz{8o6qdL>WurqDOUj+1N(5oyv6R#r=9LAKHK$085=ycWYt(H~ z<=CQ(qLmU=+L(&TtZ2=!(_w7q3$&k(7M$(nIx3RXTs9S?I%=2zWu#_N!8n+5DqbwQ@7X%qCSJ>jAoWrQ}@~keG$f<;Iwni|gio)h_DV+D< znuJ!kx0w%atMxaGFd(!jyVdb+{{M|4jC?wm!oL` z=Hx0#%#qV+6n_&88v_K@JS?5mM0F(}N0D^Y64%7jO02;uJ)d%^q{njTwvvnSmyQ z2EUy%#_9;x}mkjbZ) z=FDbG+HTRsW1+YOh%V!mVuAy+YWb2v;xa%^pEMMxBnWV*7zr>MJS2;Q$u49;S}h-x zd!Ps#QABHN3a6$_keHG?4e=mhqRlBQttbIQ7weKrFUD}uU@DXevldyDRaz6A6;E+0 zn#*KzS)Nek(-rxG;hXhZx8G15GB6W^4p>FFBH*||uhmsT3GCiUuvg{60ThY`AP?A@N74k&@!{IG0?LJDf5_n9 z4qwk$z!IyZLn$stvLO|f%s7)AL9iKXDw9!_1U@6qONg45kpeIiL}#ejnI1+ojxt!m z%-SO6(?kQsqMJ$O#NmiRszWUr0@7Iv@uX5~3CR>zZ#v`gt0S;KZG|Lus>D@>;}T_3?Bi2TqgRjfL`^A9GGh*4nv^ZC3d$u=UJ*4HF+?swoMa$rEyZI@ z7!N8Xyf>rCqhTuy^J%qU8i%Uc*e z%7+{on^&%{#n>?EEx5~G+Uv2PajPdwqanSDr(Fsil@OZ%q8X#gX_#^7NuMnu*Cqrb z>s5qRJgJXCyhV@N^_WX$%B2gGrmE#IO86?{x5GIVlNOY`gSCxnKNmF29E5}N_igHDTTrCllWH<$k1x>0*7V|6eWgDFG zrum{u9=0cJWj(CYCsZMZ_e%hMc%OwfUU|^y~r_~cHWz=%;geS(^5q$|q z%W#~|umqI~DP6gA7{^^$nyJ~LCPAkJ%C9dPy-pJLhujK0t(55GFqrJ|BF4GO4mb^~ zqs9Q(x!H2c1dcn)U>8&1?S3s`$IN025zJ%?Q3|fDdY*8u7|VmOjDeg^1=s*sY)*?Z zpm8WY`m$AOGFZV3RwJxHXLMPrOu~#@N*JY(-Rmvc(_Wb(n^o$4e3+DYYuj6^+~5_8 z7Eb1hkr;=va6x0R8xro4SB}c!EFzT|?fFPvgXb(ZJP_BpXd;<3FfN1D>jWb($XzT| z(h#0fDS%hahV$U6LMjx}TD=KG24@N-KNd5()Fli>wQ#`f=l#J9!)U~WobeVRlg21_ zKz2suMH6u}Z^t7k1BGIKTOf(ERe~O;!wO5{Dn%ykk+3GElZmsbL@pdp^C5N0s-RRH ziI_EPK@-9=F|Me=s63duls6CNQ-;VCy~SLJP1;0OPX{Xu( zd#!pbp0i^iG^8r(Bc*`dZ;#sr&YZ={#u9^jWC^byfe=YB>4%KgGz%#y6RNAtWvx?5 zA}neZ6S4?v0TY3OyugofP`QMqWw|m==6DcaW@MHmq0@oso-A>NFl(S<4S($v5!-!i>8fn~*L1EMwOL=v6XToDqks*I9jQYifC{o1myvt%@WSU$c$Ctff zuOb(+n3XJ>jC)vn(##o^K{{{IN~;8&fG06RS>?!(w7Ij9w-Ty6Eqx;C6tD+ zo|H;Tp1eAki6j??jYf>s0!$pk6adAx!ziMvo-E!FBG zB`8g?Hkjp=LQTtFS4kGOsCB3*ui$u)yNucsM8Jd=1*V)fpKb4N6LJ zC=-=Pokcj0Djb$bIId7=to9OEPHh&QiH-|WhP8N@AlR5$F%bU<8d73)6LJ;GDr^2w z<5fx-y#u9+U?*p^TCFl;nzNd0I*%dfjahL&Wh@x2h62oqDOU-~nFS;-n1ql`7bsgC zq|C?y_h+;x3tm!L)w0i;^$-?MIpXCkz-I_z$Rl`BNE3{@BTi`^(|B_(3&2O(2foLS8 z*#ZT<0VD(wUNb83dBi$10b>Ca6N+I8VhOt4E*p>XoGe+CsqW9q|{Ke!vJ_m%pBq@wh$3EQVN%kj_a~|A4%y;7CFY@ zut22*We_ez$uL`DLmUZSKO>4pEFYkCMJCCqlEI)|UbK``J6lF;nDU_sefVWD+RzzE}O2sy1FjJIE7%D|ez|yLeD4Z_TUy#~hMYxv7 z#syEnr*`=)dEUmERXVTN;g)mekS;ALC5mYm2z^Tq%8v77Fu+J7=_GiX7a|n2t7x>B zVqhE+hJ#_u?@<4OzlwmYx3R+<2@tocldm`V@=D9%Y75v5i|)d&(~ z#u#Q)x|Axe^x6|z+=GgxWh|(twRlb*Km)#L*v2`177hr;#A`!Zdj?J*iUesj>4ZRv z(1V59tAb0acx@*oQ!tD)3*rP`KvgA}@fu=iLh#0UArGb+SUU5{VjfLK?S#)PO@>&k zU;&T(gt#$aGRMGPqyTbR;X)A$fQ6?zWFi)0f&?B&#KDHK=w!hI1s+x<^$J{1vr>?t z^t#GEswfUcoRF==Q!0~%ltF5f1yOT0qX)JVCEjAhO<0tu?E(^hvDA*aqm0U@jAkjD zCJx?*#H2ZgQ%ak0A#Wp7W)}<|6Z!e1J@4eDN|%s>NGwpqB@7XgO9jfB)feT0V5+4E ziZ&}uN)0fWjYTcUTvIunRcyvtUkIbLoQo-_5_&!vNM@jbKM^j*!$}G&nv*u*urZmj zU?7anm?R_yIy$3eLM%_fc^bSrDWl=62lqvJ6pX1D&Lyp!UF9uhj09rEIZYsF#{ z8Q51C@Hiey3VGO8EEZImFfPv-(#dQs=a40($yg#9a@xXH$Xg^aIT}rsGN=%y+?=ft z4W%WPtRLsR9Ku5BlqEzng;)&3(@wgGSl!W>%n00Q#^HiIwcTjglZTzONySCIK6gMD zuyTc*h4W_13}X(($|$WNz#}d-@G{v1Bq^0S15?PF7^^(XVM@84Ms0+>P4RfHoMN>_w^bSAC1uPMP@EGpkN(y-zwV2f) z>McbhVNxX+1t`tcwiT+Fq2vyP^G3OjFBVbotUH@#BIyDMaZ$fi(0Jq7JfFnCu7&it zz4BxUR|G-&MyVIXYFd%Esu49sxB?*F^@po=$od5vE6(fGSzDwWahGsNZnEp}oY@w^ zZJunxV<>rIJ_mScrO3lPh*l|o(WD6yAciwiQt$E z1PV@T-lYk`kOaJD;DV8K4u)Az+7>LhRDO5d0~S9rsH1!eI03w0g&?K1>Ug1mRKtdGQpidT z0p2c6SlynIPAWDj6`9%+;Bv4MM8~UDO1%Uzr^Fcvp7%*e3b(>}pVGvs$&4bC3;-Cd zULpjj1f3DvB#bw2k22zf1UwZ{z!{0h2lgtp=nKxo(u^w;aeBq9kJa!A*x{lQl}Q{n zNv!E8aQhrga0Rj4n^&VQF<6o@3vj#)h6W{=n8!GiD&T@#S(uX7{Gl-)PH5OlmLm(I zM?a-kxH7CBY#B0suvZqFK;JQm(yuPlTqSHVrKvFQ6AGF77cpfR;^_i%ut>TnfI&0WG*iSftW#78?wZj&4Jhm*XZLaI}4TLD#7K+xcnNxtjos$mrYQT z0+K0dygrQyY}{Ec57>_K0cj3VLJCP1wqiiy{y+B1NrQy*NYo{9q8ye|>T;s2u#^>= z4D3XSNDizh8L0%$B$UQH6jDyWStlzMi>-o9g4i=jNl=`L*`cEh%+*8zWcx#Vm@IDvNzKYF0!O zMTI^AQY)m3H$twksth`Ife;V3W(;6K(`8&$JJcvuKsp*8WGgdN*~FB1&=ns5yFXPJ zluR6_l0#vs$|Mz28Ip){d2c=pQDP(5$>E?gvpMPkW}^V(uO)TW5dy;VQlPFl&4+>X z5=xfQ_?6Ny6M(Ez8OYn@7!vd7fhk$Dc`50n(o|Xvr8r=hULa-(Eh$AQPU1Tw!z|{G zC?&w^RFFjz5pxut3#ipl4zL5<6$4`w3%05f@P^WvnH&{YvP?`s4wb?Zy$fgrQc++_ z=j5U4kd;xkWD3ZX{vsxkXp-a3zNlJz3-$c>RR24#LRVf_zTnHfl^3Gz_7*dn6$qA$ zn)TyB#b}z2v=9VHh*Q!?GZmFdn-zpo-5gdC;bsVeA-RfBk(9Ld4(?yk&vJQ&v_4Jd zDu)2hkdFK}NuPuMFQlD34Gv=v%sDW*9H6h%%cQVIrqIZ>s9p;}8c2b_N{v)6hm=xS z_b1yI!2g#%JW)16SB^mF7$Tb;&++Lrc-1*VRkZ_#eqQ^(;OnD2od>B|KAox_qWI5m zNsp}_GiagzRV7NLhEhvOs9CO7M4J^F4be*lsivf)k|I?QF;?;~=x2GVykcK# zj$A-1QZ*Eo%T&!o7z#Hlq>!{3R#H?mEYrYJLI%UYApW3!4*G?tr~k)_sd0A!{0nu% z|6ASE$eh=Hmc$>*J4ZR^yzqX;a7}a;9I7at(@+s#C$E}>^j})? zY~;-8v~y1N{4wrxNd7bQv(x2*2ZsJvwEllSVgE}@?7z(S^R-(U%sEr>Z%#Cw1NHBT z{B`2}S56iEU!AbEY5Z3g{D(jPSC>8ZoQcxn6$oC)aV|bh(cnzlnFD2i194VJf1z{c z1eG@zzVN}Tv66FXo(FvnO%O)30A?aNGRmLvj4p6?lcB>r!IzpK<><;Ww7)=|!LAA6 zoCBKG^{7@0j(>uqr;?+S+keFM_wqTf_3y;h;q2Edz=nC;kOKHN#p#ba1H2OWQHm9Kk5Stc2!@*4?h)0C+KbwVAd!e5vz*l2_n1C*J9z*XwM z0_C3JWTjl+s#4|wgP`1}QjXQil`neq4A;t+SIUtT8v!sCp1DXWQYmi(<(c_h6qFlm zpnPMVjut@qEl|FM$)#ve{t=XWrobaEk*HOtO1%&z29x(jjr7X(V}R6ZrH7+yqYFFi}Bhc7acd5PSrD@FT?$Y)K@ljk$s) z>Ryp;6A-cr(x|}hdo&RLpV!|u{t5N>g^F%#5Z}0~I;-oo>ulXw+_QD*heRUyJ0P3e z&(?+S5sB8^AQJUCaJKG}2SlQ-Gen}*ubnfVUKM*e=TjtflpI|V=%3er1o#v3-xtp5 zZ*--wAB5n zH(Ps5RGE4BpwDV{56Ymu`umrk`rE*5eU^?jRjPF!UlVxOEMF;uIZ^p(E$SfZD(Wff zE4o-TR5Vi5ERu=TqA{Y&MFx>Y6Ri<#6ul^VS+rC1x@e#1py&h9C!#MzUx~gK{Zdy~*S4;6U5~oHb%W}L z)rsq5b#UGIIzyeU&QlkxyRt4;$JXWQrq*3wH@j|L-NL#D>z39%Teq(6#kyDO-l%)G z?!&rcbzj&0T;EXNslI3Z!203!l6trvskheq>L=I7>NEA_`Wf}N)-R}ksQ$_N)%7pd z@2uZf|3Up1_1`s!8ag)gY8c$m+yFP|8k`NG2C9K?xTaxN!~BMa8kRS#Z`j`OX2S;! z#~XfX)uvUCR!yy%Ta9UDYUOW5w#u}+rq!HQ3tK(jYIUn^t=??)VXLoN{ocBB>jACB zty@}~TL)UlS{GX1*m{2J$6Bvy{Zi|Ftv_k~eVaCIdbJtRM%~8LCfFv?=BhSx+AMDK zbek92ywT=JoA27TZQHl4xb3*M&bCBbq3w-r?`ivF+s$qFw*92-kL^0P8`MtL4s91| z$F`f^ZhpHb+CATHZ@bUh{nEZ$`(f={+B@4v+Lzkj*8Y+9>)XH9{*(59S6`PLn$2 zI^Ei7Nv9V&z1!)V&Ye3C?|gaZP-mg@t(}*4-rD(a=O4TD=rX#Cxl5$Wv@VOftnRY6 z%gL_oyAJD$biJZ$x$FF{E4sec^?0}T-G+D5btAf6(``|=b=}_X_FZF-MyS!*m};EU z_(bC?jYqq;?LNG_p?jqJjP4J2-`f31kA@yYd+2(QJ+ANZNRO9#eA2T`&k;S%Jrg}= z_k617o}OP_)cqpGMc75fixyq9>7oyMHS`+Z%iN3Ubz86JdhPG^bMJw@k>1hXH}_uN zdvEU_`t9%?YpM$p?5*wUi|#U z#|HHnG=300=*~f#2YudjQ4`X{G%aY_*7Vij0fSA0bAuloyl3z)Lq-ho51BsX=^=-P zb{Gl|rH0-)bj#4ME*W%*{gSDdEW6~uu=c~?Vew&i58FQMhv6fJ-5!vgQv*_Zn>*J$>|=(I+LBfCrItCEF#xOTqhS(nq8Rq3)0c znhvdpzLs4kBV~(ZZ^=8$QTa6aTKOr3SP@m+r+7!%Lupsuq}-zXO{G@xs^zL<>PysD zs_#|54fljy@EmxDrnN?^nWovO`Kd+KBD6f$^5vN3G08Dcj5#`X#MtQAN5&o*H)I?! z?!j>%jBgr$<@g82e=uS21Y*KN6F$0p=;e{iAG`cBsaFyInB;HoQGT^Tp8B}cN@3My~zEk2l7ny zZ1?u?PVqkB{obeb-R3*!AL-Bew_shdN!U{C2V9TO!#@Z}0#^ri2Kxo+;M!2z5EgnY z^xZ_m#JeVbGD$h<#!34pkCDbF;=8ap zd~f(GQb*oRei6Ama%bdNbX;^^^fPK4HIF(P8yCAHb}T+2K0kh(*3k>;QwdYz{=^SS zXL3pMG=nowr`n~iOs!+Pvq^Sa`r>pk{RSuIZsb15v}Eqee8pS&$Fgp(bMx=BBC}qdEuB4o_OEluIj`OV-Ll}8)3;K$?zv5M+kLmU zxt+az|J(_4AD`DauRQO_9rim`-`RBMtUJHGYsy`(%va36|LzWV=kESsfo;LsdoH=> z_IrL^7+<(=k#^D3_YS!C=6iow99g{gzRT}he*eJxXW#$x1M~y$JZOAy^+UrSn*VT{ zhw~4A`Uv*O_DA7Imp<0-vDuIPwuD{s!Q-CCw=GpKUHZg;CvIC-zbv=x*prin!WGtRJ&})rQd*!8?(6j=syhd+I>` zz%K`{eXsRHANAp!#6bhx!k9edPV<;1Tl37awOo{`Hd?pLYIq z{%3bmKAf*z2E9{QQ$IxG#P=e&dP86Zf7Rd2;2Kmw&nItH4*EoZ?TN{(8W7)-?_d!{C(>CUw)YNW8WVi{|WwS`_K5#pZ!w!we7D9e!KLy^}kzxfA4ha z^y$+lMO~^%V^QP<5DV0uJ}8HyZLc5OSfYuBM`2k^gp=MEh@ckkJ)Tla3=diLzv z2(GR@d-m?ruTSrug9Z&AJZMn!s8OSuWq)3E9XoXB*r{WePMx}R@6x49_nzRVOV7TI zjolj?`!@CN39jBv11|2@uiwQ3h7N6N8ah-gzEmv!6JK`v1yN%=(Ym&E4Ru3A^^J86 zjdiEDi5>*uO??B1B`Q%%?P_RK-@0w9x_0N*)mplV>KYpA>sz;P)v8_lc5PdAtOpg1 zty*_)Gq?wY4C&d{O~~f$_1@v@mAP){MROn2dY%pQ&&jiI_I_jfLn|&(2!550yz`M^ zN=*ILiyxl4e(Ufp53kG}iOkq$xa(1B{s_GB95!lQo<1Pz)Bsp)Y-kis5FOw7iF^O( zqvQ7}M-6=Y)d%kIB-{zRY1mr}?+o4HX`dVZXs<`!nm*aQ)UZ_9boW1v{|Mp#F-!0p z{ogHab=MTE(-*^$?;5*>zi6AgXXK%_+jFzmk9l(7>sLRK2<+!hCXjUJc-&uP8rkm?n6)imRmKU z<=5HYw3)g@z2WPAn#t=n_0!DhC%)q1dC|h2eOo`C*mv&cczW>-KQ#|nV!!4V3%n!r zd;z)A@Y$x#&u)M5u;gTT<@6`VzPpR;uvwQ-Q%`*Id!IBm??}tRn^c_#waB0Qa!q~n zfzrBLI=*Uu_k*!*uW$OI-2*E&t$6-gmRUY@{hF3%cDJ8%?YHG|?FJsa{wXY7Ix(ly z!(H&f12=wRj0bNu_r3qY9fNxeX9tenp`N+2&x!9=eqG4#&-Weq+4>FP;^0Qrh}RF? zJlnPUrX_B7`t`=%cMrRL)ysiN5lL6Ws%LsWcenLeuczC5QTQDB-0<>ESN*tX!{`xr z&>`jX;~Vzw+1hba%Z+CCmoAfqE;l@T;Ho#TI+UK6+O&4)tq1S!x#^?2nff^kF1~#3 ztB-#C;e+2k@cGPj`+qvs@3d&({M*>nhWv(I7tg=*(7o@p`*F^doql_0N$;oI{N7=Y zRVZ#>!(6gq7dq}R^~nt{ZfB;>8(!{Fz#rH==qEJ)M3?=uo>U*ad+0Mwo42j)_2Ie| zHwI=dXmy3|%F@6EzjXRJM?c-+r@LkA4vm+Fs0Uu0G&%n2d(w@nUpMrA>!nbB+kpOW zTr&?jG#6JH_nj8qIcVSdY0ziAB~CGZ+4W2C!mkr7n>xIF?aYloy#0OP7jnb%Yi~Vp zV1k1-UmM!k_le2rx2}JE){59i<6qgdAvtF1%1J+5J!EgExec3y*CThfx_J4oBY*YZ z)%Gp_?DreLx8HK`-S?so(=UB{2P(6S`tD8Ryr!na1m{K1Z9O@u7dvt0v-pGg{QAad9kr5CKaIV5(@meMdqZ2v2Os&edyjVX=po--CcHg; z`E9fMcUnGXLv-ssOSe4TbJs=epuJ~86Hh(-?WcDxXua&kg^%w4%`~pv zGSxLhk1sm7dc~TZhSv&vo10$gHs)=68}sGJ=U;BQ?IrbZhmSmW(0lmAn|)56xPS53 z880|gZ`?fKk!>ax#pMoD)G34W`MsPnaS_}1^z2oH2b@2~JX1?w-@nw5a()U=e z#=0e=-hcDMQ0dLBllN`@=9d{CJ-@#Hz5YdGB7Gj74uqqcZ5-KZ@pm`9>s;4%l3`2J z;cLW^C)3{qzIZAyTRvX6W#EFZw@sX^*fC)H19y~siUpY_VzH85FXz0c7{b2f zgT*IpTMo;TtBbEJ2;*9=Bn8WY;LgzJnYw z&Ah&S+q_}GfRp;EKWD$aP3?Sm`Qj%^PdswD;k6TMdRepSx3`B+cInim%aW;?ufFUd zKN^2;(XF@mKYab$X|kj3lz0C!yX$SQ1V8$6v<83sORGufn=Bvu_S#9t+d$4>;gXY+ zH_hFVZeDfgnw##4Ug;h8@xtp?`foULd@gj+lplioUaaeV>ET7Y9(@0*@>n*~wpVw( zrp@$BvG1&_dnjL?_r{h9hmRhc+;97Y={t6PMShK~$v(4gqsuv9$)k_&30=PU*h_6* z?3sP7^~w?Bwq4(;vE!ZdcG#MR9J&OYM~{XEb^jikTtIgjc0Z+rcf29sKgYUE`N`Bg z^4W&=qR5;DFT6X`cEyv&f9ta6)pd8A>Pm%|&)WOLrG4IO*w6>!58bd_Af^u&rZY_NJDyOIR72L>)c&L*~HNi?7&|eE0JH^LjV-oWbtKuI&C)@~t(d zc1t(hzwN}j>-g0(-yeDh+dwnNkH7TRUh6jF$z?yy?=K#@nScA6$cojc-XS8h=C5v1 z>|ExB?@uf_y6=APntN`a?B>Uw7R_9=LA-9X>i6B(EjTgf$Y*rJ?T1IaIe7oHt)lRU z+rNGM$-+%HtNJhMJpDaJs@(m8V&2$HVxgv^)p_ZeK7vFQqo5m#S3c>JzA=iWCpCSBbOUHeRXlpQkSoyV^mqk4LiPdaAN%j33o zTJhn@t9H41w0iWRms@(Q3N9Vl@NLt{$Jaf5)1q%C%-cQb#HQ`tR%_q0AE0{8`EJ|s z;oaNiryl=kC$agqZ416^x`SS;f}8kt`I83@U_%P~4zFLicj46UK1a%it@)Fmp1O&9 z)_L=~{tKFJ*M_Cf%?ZALOZ%CkW6nd92W_*S*nR6k!`0VHXMOtKLhCC7uf6xm#u4he zd+wcbOUp9Hj9x1zO}J?Bsb!K|na5i2bMn{$zd3ZvX&52L@{?{uDtcY!Vyb%eDviKuc3eA-sdCz zXM{Sbemro`&Rb8+dBv#Q`Lp!)dr@EF`Rf)SJ8zonyzkIe)7X`g1sjuBoLV;Tz$J5c z+LifmkFwImHex4#)xNtrl|0PPy=m$k>beD&jQC{7uFKIEx}4f~|My4NeE&nY$;iOn zE3a2{pFO~H{j=@cXJWnC`N(CL{XX&P6QjnxpWX5Cky)Rw9C^d7c<&FlI8685djElk zwxqkMruLryz44B=YuCpQw-L>|eE3~Q2i@GKn{w)xTc2uu%SF>JeSY<0Lx=rzg|6xK z_w(YeqrFSyZ@lHct|PwZ^GV;II(St%{=lv)R;^qy`(9$_d}Ai|=(JW{?w$I$I{x6S z&krYE8*fFgqKDEq;>XvFS~Ri8=a0fAf8w)kCvHxOUmAXeZ1@+mG>;9sqR*~rp^hQR z=n2D!J684Ic=fgdwjJvm9zJ-Pu%^rED@J|##ld&l4BGwW!>flTX0Y4%G1y)4BjL+R zN3UmRJv-s%{=*ONKYY^m_}Jbp3x|m28y}ahYda9UJ8E!uZ-+OwVmKQ4ZD`N{CA z>qovc_ETt^r1J|a=8m76GWO`0`FefF&`8Ocx3l-JJND(&6(@iG?PBWgH*#IYje%#Mn%REQ&1y@RiU9_V}eqR;Mrsq;-eU#pA0xO?%!2YbFeVA^N(>aP2zzcYJx za_%!5S0ulfIP-|TI_-8||9tKrB(CI){hS~hLZ0H)_R`-0Sl>HW=;cJH1za?7Vf z`;Cb=zK#8IyKVOD?ayzt9$K@e>&g=c4(~biTV0=l?^s{|bZ6n+eJ}plxz~|My7MQu zALa>l$4&zezxC7Vr@CGLO{;5fG!9?3Z`=C&?JetH&$YT@)MI4tnXA7Hj#+!6Y581@ z`6jn;tkVQJ2Fh+(ob6Z_KuDF`@fz182X{Fn3;3+%Wo|haUTZjO>1Xg1K(sX zy4!qb%w*E3_U}!4wcCsR6Z3-YuWdE)(H*nq>{(Qn^ZAbV5a9EZj~p4^ z?@e!~hen^+{^5dVKn!bS9l` zH)*1!2QoBqYv7eR?WR1q?ZzjMKjJ?z6W;OtW8()*KJxy%+F^YrZ;W4E3(x#7r7cVGIIdarWi3pYIRJC1BJOk8`aBQ-HHXrL<8xW0F0 z_=6k6_RzDoEvHtjYI!A1ZCWvX-@c=dx_sH*qT5$dZIA59k~-JkptlQha- zynXleSH3swH3Ku^z>3z-mHJ|R=HF?s3L-UgMI9nQNwFi`Q(* zpZw&O&CToCZ!C-NUD^KSIeUJ)>6$l{W%Q}fkj;jRcJEvD=*GL%o*BJPsg@3#`;I=i z{=LOm$CoboJdE+LVGX5#I?6hc)g6;Xu{+Z1)A6&J5^@cUKe!Aa%-(h!nR^ZS~ z)0C$c-#zTqw5YtW`_TKZe6iz}wnE-%d5^vvcDc1eC2HSL8p z>i_B90sHyqpZ9Osll<5{?UQTZj4!qv*nmQS(Soi2Y&j|PcXfxTzn^an6)&Srmr zI8?S>SM1{+e|Vt0b4{5%<${w?8j8<(ppU2WQ}HS}LB__wCNW&Azu{zaljf#i4-v71 zh@=txw(RLdtv?cyR^14QnF-9%?zs6ziyeZyRnqVLpOx-^G6hejx!V!gqL{Jt_Ajg zu0Mb3B1X5It~*P9pPpIf4Z0yzb5>c^3O|M&zZuL5zwQ5+Wg{`etJ>r?&$;L<7PVCr zJFomOj+5QYiSts9PD<^*)UdIEu$N;Y?3gPhEF~lP3asc;A8m<5@;a7%{mrhu&Z>p1 z<8B}N>t7L@{gMa2RF98b#8_~#yi%}QXmO8&oG5XNWpP;(2LMETo7`tg=vl>v?lZYD zOjJwOs*(#38x+)g{P@ede#`Aph?-Tc_qlj`j*`E_QE;Bb%k6(3wZlO2H?Ntgw72<| zG~oAS>y+lL%O7JcJA?>%?K#(gJcg>$o0`#6*w8&bhrIN2jygkWSIWzSW5Ns4NSf4G zsOMht5vimm-)DWciWo(WoYy4N;dOdhSeUcxk)YShrJN8mYH>@uLq|FMG*V@K;_U-# zpzgqn2us04sLvY~io|zW^w~k^Xq5)vekqZawhi-FE~3>&RY37@X(HVQ;qHF~DzlO+ zI}Kmly4lXH9FDkEs{9l)cO{$nDd&m>gd?n*d4tS&w|^@_<7yK2)rbDURmHz>mE|WL z@viz{e{ILpkhcnlYZwjIIWdRCj!_Zx`0)O4d~RV)f=d4R%YR3riJ5idJgY0AZQnko zG^3s?Lv`8fV9Ir3FkRWz20y2uRLe=yiz)2Qn}1u~`FJiK{BlkJ?RQojIMheqC~E}` zj0}u^(@@twK0Ok)NM^No==3tavG&JzY7R46@?JF@o{y~FK%hrs!w)bib+vY_zX>9j zdtPm>Ti{F9(!@G5$V;~K=B32b*Yo|-OFYqMfM0pB%eKM>21@P2&)f?WMvPOIC!hhZ zF;+*~=Vext@7K17%M@Q-oFE=JNw(t3Eg|M~GqU>J;LB{>F=gsPl|=`emv$1RTO#mE z5?F)bN;|z{=OmJNDqyB%K+T&l?!;VU?fqY=?|=0ymPy0)qOFa25C~I?ezlGYbL#li zg4<|Tyrt5L0_|hwt(WzoAc$uh!okCu){OA0S>(Y_xah-^Is|KVZ6o2Oc|+*(93%q@ zhMONEL(Pea9_|ja7fPh+HxrNUuitCL?s6z+H1fAY3&*%ccjI;}IibrVa;QJU+C_nJ zWYkSmz*6B6#wU&~HH`1a({XbfY^aQZ@(VTMY?utMlx|K@Z%`iVQcQ!CNrp4V@tilf zrfNKPnyvP}`l`il=9l-j95*H9v9kV7*w%W7LxXmf1g>`6W&Y}L6+^h#&}87HNkJB# zxuX68lb*jG>8OOynK1J2>h{{m4de0jR)G#r&73j6$vUrda*E+VRvrLjaI~wes-*U0 zmf6%>TvYzY-e&2-jll_M*YERO!1~tws{>d-qKV*|uJqUniSM2~rN{jH!A`J2iUnhe zw3_T_;A8_+?!AMIg3E?yeD&)(Y1s@^y7-Hu)`9w#|6r<6j-;dd-k#WAPR6Q_EmtV* z3(GuTiULGun%As!#o3Yt64)%FXMULPF7Mtr>;|EdQ7Z?N6sxYE zT)CIV22$QJ2q)s4T2OFeDLq~}IF-9nJDcb;2~IBJs#xa5{@^H;NwkJsq3uM6Sa*c$ zj>KkFE)bsrn*_E^$6b0UqU<=Wos`R`8o|?jvA-?2IqcN!?TG{tq-t#BykU?nOTaVz zxeg1TfY1h54<;+?kdO-2X_X)P2Eq@5+$6ZQ#j|3JQ<^$3{=E%km{V6?1Wy%1fYv0&PNgQvOeN@`Nr+)o1_dLj{E= zD<}&G*VLUTqF^5B{Em05uWO~5KDp3gpzf zqq|ZX=aTkKEhF`0*{t?nSWKR|2!}bytR58pt7p_3@v(V#nDmSsOg$&rVlBD&OWvti z?ILNE!-;7riqM-?wj^9QqY_|Ywt|aa&T5l=P`+1Tv;Q`ABS~d*@1*pRJ70^?%I?yj zY2|W6=-zHVVH({6oIi=a0cP7_aQJhfO zw=*R{HIVFfI^$#TjcSaiM^)8T;fes`Tl?@ZMi(N!2RMy&aX^`7mz+j$B<~!eRqQ%p z__*KS5d}UgQWw6%Ik=)K(#R(Kp51%M>9EdMG~-GHN96CVKY1h*qyO77c0aUm9II7A zk_(5=h0b)v^8U^jd)%)q9uba-+5YQ7?j(w9=q4M06w$cD=>t6-2LX`mHk|bjUq;fs zi&h|FC^ly+Dr}OVc{}Z60kOFE1$hS*26T<$91gM`c}#XQ?H`^7VTk3yjZPGZyE#H zPY6}!l5^$0OHw9OVYA!uud&K3PR;X%&#`K}^tJr!mVvS&`2DmMuXptsVGP2fH_}2S zYg)Sjl<=(1L#!&izAE!Ckl^ibTm7?dMyIq5CBg>HMb)BOdxUt#lg}B_?r<{ojBjqM2bx#y3q0(1w<@nEY&8lH3-d2@^%hJVqeCC; z@1g^(ym%RL6UqdEQA7$@j`tnxpfq3HY3OfQb;Yh+$yVJ6dvg#k)nMk2jEdfrCC+p9;XZ4xfLl+Es zCD_PEm)OE5icdEG!4BTxWYL;zFWup+mzGV>wM9-Jt~i6}(@>JSxd_q1F#b`FmBHO9 zb@%Nh{m-sDS>-EF=Iw~ET@_8`jfCdr2s~M$L1ne+1gQInXlmdPu7zOmjEi> zwcdSS2*oO|b@$r`Ec$wQg0}d7#hYBVtyxDU4Enm<`AD77(Y#aessYB*Dp!{{9pHDs zrGT9s0yNms3(IES1;ljlzzxWqC(}?I*3o^K$DOLWr)`!ZJsi&U#W~57?2Q7a^6tbh zN2t(n@vuBQIKW^mp^0OQIdTUQ;?eS22{L&~kP zV}eFos6R>|67@;>X1&6=~>V?+2j0CGNh<=o)Yy~+Y>2n1K;z4 z_!?Bdqm`vw;2S>WwOJ;13#Pg8`xBikeW+-VE})U=HXFBRA*eP^P)~yr43~C#C7Om- zZn_p9=*#pQuG@P~^i8r)=sD8zh<~J?&41YGM{qGp=cFh~GBtGA)dVVKPwAHN4@2&X zzOvPQ)TGCq8oMAf)9x^9z%WQTKZ`F9ralxWKyfpVySOmBfCr8K27J*0BI%naQB82i z3sA0c+B@7#kp=KL6I=@U*O z2weg68l~6PA~Zkdo_p0Cq+z>KgIJ%uh!va5t+QY;pJEC6CuDk)oAI;HK_y{h6+}n( zdY9!%v}KnC;F*$lMBkdnF@aV)mXQOO}SV-wO$mr^5Y*y&K~-} z7Mbn+#+gQ2pIECphuygxjfre9&$_l$;RGhNmDIq=@xtftb*$DreeA;xqRWdFCh?QF z0u4TWopLa<Th2oQ@&j+xpoK2k3!h{jDW67jj2jx;*OBE9f z=fv%<3;Hqe*N0h0Bp>D25(6{3@{%moE{AuEFhPDkbq2h-%CE~TJ>iaP{^xjlgTYHRzXk)9gQb9kA9j<%tk z{tS+j@Yy>YN6)C_Ijw~i$54B2ug9ss9%DP?M1r6!shtsjZWVk}JZ=Q=&S?@I?r=7g>@Sh67pkaQ zk>N;y_t>i^&GiOEf5>Ma^f|r&m#~ruvE^-57NC#H9pRIQU&n-HAoEj7+Dj3I_3OGV zg|Bt0loscs+@F#lkWg(=M@4&)H&)DzY2_=c;fd9flG{8A(#b`iO$M3)$(L&W^Zh1@ z?FK%2`7w7mu>y&4JBEob5K?Bt4Ef^q&wcE@LbZNP2N9l#`#&I%eKK8h`Y55xc%^Ss z)cM_`*2Gj2s;iQ(Ulu)5dk}n;My=HA*fvyoH#715UWm5O9frE5Y~b=y>&9Km3n!&g0CCWbzTc&+Bea{doVXkN*p$?tM(!vK?+Jrpw1cyjDD_n z!9J3xH2B+F7+8@3_Z67EvVVzIeN|CVPxi8_NUWDGE~uF;oU!h>92$|qCY;$&HDH?0 zG{F5lhMe+&Ou~A%RvN@Zz{{p?GQ*;)X>AP&Itq)e3!IKhVSfuAR4(qZoFTYQUkE!0 zH5Ret?RSuQ_Ef31fi>AV*n>W}llftX_Bd7t!o)*ev-6-<^Eu>nR@SAd;XdcUrBmiqN?Q9YfWvM*4bBQ>}8a1~!|b4WPWxY|EE3}oa3!b)PB0~_j)OwHm^v_2n}~;d6@Q;+&30-1 zb6_$1W0KwB_tnmF#ck)Za31TbexkDkb;2%Jfy{45nC=8&_qQ+J-{H_XUMseP4ToqQ zPj9AJRv)s$leEHFf-x=t1UIr+XtUJ`BTQ2_1sGCw&7iUeNVT z+tP_H#c9{?{DL&9qEu&{k+rG3JgauW)s(c2UYR;Md_kS-<;G)NwhZI+?$ro#sGZ#- zJF?bHBb`%3*yOAUpPN@)Yi1cQn~Q^crh#ZIs!J@~v+zgLqDDi!=@NNdO6L_!cM z0y!Fc2lNjqhELyeF4gEyo73nrE#KS9r4W zdud~k^^K$jg=TDvJXhQe6|$f`;_8|jYEOgYMvN$E=oO(VZjCdg&Ba{$CTQ7@w{D)+ z(P;lmpQhvYI$D0HRwAYw^td74+U%+8z;N!u;5{W_821o9HMRhb${1}NpnC>XP*;vw z^>bot_R&YzJLkDrjq|mRSICygt~acnUeWkqV;0!2{t4JMhj{*|I{GloNkA?F4$$R{*DwRt#2d}lesl#&d^*!nKBVYzvxJQ3F5WuD}K!V;(9Kd zX5cGzaK`Cqm6qdN+vbuMh-Kv9@KO@@aI@rm9wjb$V0GN#z!yQQx+!q+QfUGF=>10p zMF*#{G>rQ*_K!Ly-?!dhqbI&;9<0Z>pbvbboO|rUdRdmGm<08?IP9Da0$~#IQXJ(YJq;y zH41MGQ`+uu&Qsh2bQd^0R%nLJ%=4S^f-9<% zo9BI|%KMJFH9t+De#&!z*>CVA<_$b7T*RZT88@wbGJlB~q~g~T)>hrJA%QTX%e0A4 z&erga$rxNor(_?GHh_|5Y05JP>6VdqB_b^5Cw0!7<8=^#TNi!uc84W`o0y&UqVr-1 z67)k@fW~?{4VBkhi17jVTAVo!Ezc+kQlZHYUIw?VI(1S2QvS#r$1Td0&m)jt&`?ZE z?@}v!uiJ0EZqEwwAA&sve>*glD#jt&_Zm$gSrnjT82qQ&SdZS(QP?Q+xgHKXn6xXa zsiZV}T86_CcNhru6sPZ`5as>zo|#s`!~h_Ev|LeWS4+C3&2SaAa8X_x)uZ3>?D##= zMSbAUr~S`~gp%@k)Yblu-r@Yh{W{ih)8bFpmz51nD`o0| zAu`(A9qp>6o7uH`A+xiMhoifz@|XA}O@9`B)ksNSv>mbSJMlpYp<=>k5AiIhMR<)o zJdkz;_j9_`f}Rr*D~ly{oh8!sT5gp*4uaV*xN9$5Z&)pr@-R(czPp z&&47`dnD~-@lB7|+O#&Gf36=JDi!0YULj863HrM0GM$P^1-S*HLx%DX$pnTbN)ts% zk$APgk@+Lpu)Jsi)dzvHD&LNSOV5;0s%8KQL^Vz5&VHM zFUPf+NFn}5Ggm*4#8WjNId_g3A(i%lJ*Dvu&m%v)&X~vv)6{&jHhAvS#NQaYB3@JI zD9WyIAfSXx-!pECbvd_wUJnaUe)?m?$uBXa-HDqgD_+vV)wOeUhWwitLd-(M0y>o+ z+yvWNM)(UFz5|O%BW+%g2x`1=0t>sEGRN}cfUJ3V{>bRRUN@j>a1;%lYn-EzcS&kN z2Bx!ca7OZ{i;(#n@Qd2y1Ueh({6Fro87;Rzd#xNjw2?UC+`^;33R;*(^VrjF`=`i_LLE;jdYtCfvuLEu z@OV8#8}cVFbswolZ9|V?5_bLHqx6Ic`c}&hJ!d-v^)f~;{u8O=62d7m4JURkhtgEIU+f!D-FaXUTdbaGbRS*= zotgAk$go&KLV=|APC0e^@l9V(MaU;&`Z>mm@9$iuel5$`@XA+gW=azJ7#r_&WqkRz zz6HwhZ8|6LQHIWEK-8f>?~c)Oa!>D`y^m^{7U6>KF(BS5FO{=k^YJxpT2F}0y!&&W z6~7E5T2y38Que6HP>ybPNR*$3W#-N34Mu^;4#R}icKiYb`_rK{6GiM*uzL>|`|E62 z6LjZWO`n!zj~_ZYuYhWYR+VPPEqJIq50Gl616mQ^OFzA%baCZn5b}V}7}$HtRRaM& zeE15=L?h<8ZV_|H-0i+mRSL&2>8&grt*u(oETM+|dY&xOB&SQiV5 z`&$NLw}13m?7*!Sn9)Dv*w51~vDcanlVP{$ShKu*e1CYq&Fsj=Zar}F+8N?cvQVkw zW8clw$&|9e=aVf~JVs7W)X6tGBx0z!%lVTe%ofINIg{+;CO|tc_gFv~NSI1M@9rHz z7$Hj4>&uOvY|N~PdLpS zFa?6(Upgmg6P3glIcwTE8MfEMNz(g@LdUOW3bUDV-Hg`a4xul6602&Xt!B?2FA0LK@`}T4hlL!1xWL8atwX)5P>`3lw%PgDy60(jU%tf)F3b37g}m5vBj zh=^$9m{^{(H*u@GHc9SB~vrNQo^2puHTd%4Nku#-US_ zXZ)lP`7SLx+uGXNlHLdGz%8TWw=RP1oO)yxM-WNJ#%z1P48_9qo>@xc-aJHAVWl%7 zXCPD5=UW^}VD@nQO#veZ-ZJk^|BM<$)vrg zhlu+6w;@73CIy$EmfRSOaX#Ch!M0!H6_82zWc-unGPx&Bj)h`*)Hu}OLh?Mpr?JMW z+#DT*e#by7hEDVPkzbKs9#Y?eoj!27n4Of&QF;8x;QWT1p@B?FayB~ll^2K=?(;vm zFCZIyg9(XQ_|af=J7IMQu)*w=(dwgn1@3*#v5o<#DR19{M~%SIGDC(>0tO~sv$M?Y zmiNYstD^_-W>52R=%KCiA3n!VuSK7d*AQ=f{nW=hoDTGkrm5)xcs*H(G}!=DI^D9u4n1M^a!MR1iI{TPG zO5G(q!Te<&Ma=_e$_c8cxqKuHd?v3+BL0K;gY1b+ab1PBND{cx04-Q>;>)>%(u9J& zGv~$r0?BO|cvhF;1`-`z7>`rI?n{vH z(%Oa*#dDkcqwdGNPOl zj9oOVW)&$b6^)c8PM6Di;ISV1*q9%r@LO@mf-<pVpNq`Y3}Efwgv~!AxPA?=w0F(|j7LA#G;N#A}(crWBIlsTsB` z;}dxYpwG1T(HL}KYzL?RDYe!X=-XQGyRLe7^gn~>j2{b8e}C+%#_#@=LPVuuf^UlI z?7xI86x69uSC8G{gngdaEgza0nx9^KHALGkn60UXc@i@4Yx1AciqD}@Tf=ltj)leY zsRSCBoZPDpSVuq#-6O9*9-a4|V?fXF9ZujK&Xvg>P9yJcBxfW*({E2|5y~ak(5WAG zNu9Nfo*#`8vI95O_7)@eMHx=%q_ zk^J7&buMiooz~=rvI5}=*>$op<7Ct#5OL>d)JzMM)+JP)1Wauo8#hRCVs9I#%Y!SQ`g1D`Lxeyl@ z&%ctV9xy{sS!ykLxRmKE^Z73EpE--vh-GIks5Qv@lBWDax!tbR>#|vZ^_~HJ9r|YQ z8&_s~dSc#rB-l_Z3LRt4V$CuEj4u0I?s*gS8D7;QXofq*WJ_qU^3eJf8*7b#8Qa7Q zRjqfL)jO+lGc=rS0UKbG%fvez(WmuJh4ZZ`vp3Ax`5BXwP=Af0IMvato$9f%Nn|v@ zq#NLiL2o*`uT{`>8)REWO=Ja|RIM*!o-{ncGs9dE9A-c{;}J!kaCovxX;*5eiE5)) zmTL|nT!hqhW#5f%QWBlL_|sz<6NC2latqJ=vd(6qm;e$ z^2VWS;X#LHB&}29f5^%4I1gJ`;oQ{5m^vc^6f*%r-9Vwb^}K?&A*-or$Fs0NJdjg! zO<3pkq06vveHFlXWJfCa=>5RN=onexJ%H?QBCb)TJ+xi4O7xHEf(-@+mE=Aja)M#wugrQ?CxZo!vb794QsdsG&>tGZr)yLo&vf9M+~eE&;JZoJJlF!qILkFv!^JbD zx>=8HXeYs(c^6wlVhjF17=d*`!-$<|Oi7yj^{<8zutAHN=hJgXaq z07gCh@*slh>i620dJ94EJyu2vgCnIU6%pyv)0o1sFh^vQnJv8q$aS~Vj9oroeKy3y zWqjTp;L8NLPGOo8Iy1(Saw-aK{*kcNDB*T+PW2&*!T!yBM0Il&ol@ATvGIP3hgYMc zyP0Uhuw=^deDG^bwQfdeBE2x}DgjUL<97=q`|5*Cd{*CU%^Vymo^Brl(^~euG8X?h zbSn`}nEy)C8ffI1=*W%#P}_x^?Q$r(k35~#*766)Z@RL&-Qno%x^qLqjh%=OnI^m* z`CQv?$BzG&*LwqAqjWvFPpf;Ow9@6{AcBajc6xxJmu;s8uW#$UwSG%%ul~*{&WT&%C#D3?ITsA_%-vF5PG@Qe@ujn|u-O;geHE-Qno4jFoD+U(nbD zlp0u%{OSYvf0McQAzNG z%m*$rHmAq1c-89q=CndM{tY@07@xO>Q)e6>PIx=P6y$!Wy>#!ZK%XErW^7;hMngp@ z+=NbzR=%CYCOge*{~dV)?DmeEgEA#8_rIIpq+|~Qh6<59!Pl>_Lc0!Un9G>V0T<@GmL@I2wW|OhS z1{G!dCe=^)I(e3A1lcYOwTW~3y~!Aw_3}6&i!?YxifcbU=j4vhKXWu%3I!tj-)q++ zE&OQv2(`o;C*qW;=0lIcHZJCjibc$)*!zFg=< zr#l?J7Oyw+jv(sdnTDV=O7a-H;kJh2GW?)8>@eZkDaGx)s_y{xsU!b8HzG=mZM@>F zb}{lT?xiOr#q@vV@BL3*`ghWvT;W_QrdtzFI-B~q-jdyA4P(cgCjgA!iOCEtpG2ju zNWDI!1h^lgH<;^Qsc9^$fO%hgn|xODVjcZh`8x%qz(h0tpP7OR3RDKoS?oUTv+m{~ zfL9Ds&%g~dCZ#bj6N1hToiV`XxqHlf`!5;Z|F4gD0vJicPC(}1+&Yu%Gwqa*&+-T` zm^Kv1f53sCAgT(1>j9t6riafo=5Pggo?ZBSarW}udcbKe!?CBJfZdX4VtvTU%*y&O zci%6kN$^5t|A4N&8aLu67bxBHN%5Y7+6TLe3Z|OMD8)umFrVE@_Zf4y6U))!R}K*H z_2;c$=(My3qd)(^5g}-R;kfwRVB&T6C3-p+_tgtW3!}%b!*BhhxyQGRUg?PVpLKy} zy;iH~SklqxLPTT}pF6YI#+%NKOo!Q519VN>X5)p?Gi-441B*eTXVE-v~ z{y%`#h87MJ_c%ETH_Z(T#Coa2J*cGI)%KFQ%qnRZKgAazHJC$Q^~OA^)pD-pjh4;Q2s} zwOs12CrbTta_OwhU6UmJ%DRor5oq(>0*LO&V|NpwU+#rTV;|HGfQ*0-Yz~i=x5*QawxEbFSteTFo$z+H zq}x*G(h0V5g~W*}k(?wg-S<#m>$N)$jzfm%x7 zXt{Rf^Ut^v{}RzjQ@3QVS#jRo&hD2*$rxnx;K$%Pa$*K_*JT!7wRwEDJT3Z5cu3aO=PkLa`+llf{J_7%AvJo*spQ?dds8a?Z==rv`dwJF-r>AJ zt)FpufxSMDRVF;)$ol8CjyjiOC?30>uW+)~(%#JxOIq$kr7FOVdP1&}RPbLC0P{ge zpUlrU4nqC^&UpoVsZ1$Ndnv!QCGp9~n|ku0ICHE#^&@@?7Mk&ay$Ogp z-2Z9#^d7&i@O#YK00fd~)ZeZ3o0KKmd>!0A;m0ft4FJC0`0qj@M18M$?2ph_^y+0a zIszDaDCrv;7V(&pnMQelWX<@yWtoLY!DL;hc770>U`@Rlxpiq{V;HU_wco1(<=AF; zpRU0wk5T{3wm>okWONUACS)!r@9X5A->?JXzx0AV8-h)>aUgUgiUfiUG&Oi%z-I1KE#Vkm+DI*Jbc&I zVD6xa|NV$yX_#BS2aZ&e8ak151++N9hI0exxeOIx;-$1&&|HB~SzGrT%I8}g=61EU zBj+cw)O!DJajGc8^Ivv$-P3}DB*lR=iUuXc0;B2wO_=`kxbBsot<$bqQ)st+VC>Oa zc=;l$wK%P`G|`Pv}4)390+IvxJ83? zF8JW!Uif`&(5md9zBIF7i{D`OQQGIty_<)RHdq%?>Ol)vZfsGA=B8dfiwX{Ewz}ja zJpNL58XJ?7S_wkNq|sWuM-TWpm^sWTXi6nzsUeX62E)G$uiwwadpjH?*q7$_voGyI znl)-gurJ>4ep7vj_EVr8@%=eSW~T6en*SRE#XhM3I}7JKoGH|Gn~~*Sd0?i7DFyhO zt2N}tKK}g5_Dt#{=RNLb6SXfKc zB_%)|oyCuEraLj;st+Zp%woyy|BaiumD+TNsa|H-+hjSvOdCv|=Ho4`X8pCGX zJm*^_J>WG-fd=5LR5G2|-@l}y*cQ<=kc9eY>jntNYn>J91T68miW6FN-fBDpSbwW9 zKD zHyhtl1|gs2Oop5oo894Phurq~X)G*$^z0BGmn1naU-g`hB}?lGY63Aw5c|eymk{O7 zr$sxiib$3cz9=BK3bMN7BwqqhsahQlrxF8>>WB8%5>)O1S-C z1uZf&Gvh)t@?=Cf*ESCa^9sD<-Tc}&vSCQV@)*~%+P8uTe+8Vua>T+l@6~9Wxefeh1tHwo1yG<18l^UG! zeW=uCV&vDQ#Ancv>bYP7cBEhDD@&jZjBTD6BvJ-y77r+a#5A1gqo*CxaMY1))e5ivsNnab z!FXG`)#u%Z4NG>r*8*JmGmOnGzPE|G+hG(ytMn+} zBx(YU)^*A7@i27U{d|*+<<^kA-vZhjZ_$4t3n^0rA7uu$VGQd}m`8gMqHgDLJW=4U z4jJb9puRJ)l7q7^jLMwGIjXP{m=POzxmI__%VNN4K|mn8c>U$Wg*T(=LfwkSQg-!J z6>Atl@cgYFdMWbFUO^U@X{l}#miGMz$*L+hTjMFx@kZ-M;Js4rV4XDLaW8vnit@Y} zWwPwtA1VCoys=3DOabg~x5P4$Uypk;KLmkvv9K8~u1mo)%y8D-^Ex9DbpkU?(Zhdq zB{pRJK)?ZJU(1O?|DpC%I>~k3F|rU(a!}&fc`>)v;A84$@A+g%-apjZ479W5U$~4+ z@*L3SmMLDir^cm&ebE8AWRs)gPH3rN*O1b&FqB+q z5}_l?$8LU-_e_pDb?fr;ui|UH?KyfW3=RAAG*3rHk7f1!@6^AvqgN}+Q8cy%dpIS6 z^wK-UkBlUFy0#nqNeQjKc6CHmPtE-pUp~r6YfO_0-P2rSh2F>2@e!pKf`c(}^yiFA zqTa7A=5{n+USOJ^{A}=h{q0bOC#%5LuPJ?g!AcjcM24H*dU_PB}iX?;3VY-(n(kutcatE>n#s~!7=T1UsMobr58@7n@*n2%&BJ_)WZcR@4>F2{Wls{yT+ zM7xtu1>R&ICBq`qa9J}rW80%zO?gax@~m%x7>NBTH!~(9(P`b`P_oJtS<{=t(If1@ zM|+%AuPCLdO~bhfxlgC#v(G;7d5H??UN-e!6Qsje>Qo-1cs?n&v%775^+yl!j~8BN z=A?LN+ZkvBGylEbNR<6CEUJfXq`r~L7nObU&gBm0<}K+R&i6MB+5c1o0bI46aOQ+8 z55CVf8dQ&ki7GSPQ_n>G4UTJ!bo+NWyp4A_{C4Hbj&TW(wO&cIQv4@acmJ$M%CJcyaSB;zHH(hDuNG8!w0pBOndBwhTo*Im89cQOer0pLVxXE=Efq2&(Vs}ZDnOx7H zfUg^TPTU#-T|i|Nh?Bzh$qJZHsc61%4&B(qOKngJ5O=CvW%)Xa9~gtIfxO8d+YFLb zy_vHSPnz^X-KHLbH<`U6wsRBA7l?Kk6 zi58A!^PA}N(Y}oemUe#n4=ZJ9KLzpg#ePX$t7O!w3l+Q!DuFSip|^*-vQmP?%@SLB zvRZ)5=Z!TiE=@L}P-@UGQErUhHio8>$-*hN8eRnh0qk|Z(kf*2O|wxya8&F%7d&BJ zm&~AQJrLu$J_V{rtxP_+5evPdfM~gfPSmQsXlPxDSPEF7~$_bUjlrvKH@n)ZMFn^WlbwHEjvof=e^H($SxCX`nwTvt{9) zn<+M1XC;{Kv;8eNq~w?Hn54fht$r+?Hg?&=iQFam*@g!%P?j0-6GGTZP}(86$PxAk z_)6!jN=+ee3=I%vA8%a}rS6AIQ*O2rcmyA8p0gDPpqVqC&CMabMenB`ji?b>$eTEX z4V$4GiT$_tt_@{&(}t2PY}+JohzU1*)5)5yIWVQF&2rAJ)P^^h{I^W0-klJkpPQqj znuN>i@_)%<{J%o#I*8%XfnPtTig^v;BV??JtWQ1vHT@-t9X3&LnjL#m9=rH@H~cE zK8{tvZScW8HD%53p5G~MMMo^Went9wY=fMeFb3z#TIV>LE&WR@&FcSo$@K7!!tvCc zIc?OOy{vjB?ir&klI>+y7XIsM>1WP@D%aqsg@WH}9%r;6GeY~ncUlH^4k3h{%iAhl z7?Jez<`r>x(hlCEygDQ7_EW`5^*)~Eay8pT)SI8~YC~8VS=S|r3^9M_SB!H^Ao-Z| zq)9EANZLrdTkw)fqvztXboH-Q3zY8|Qel>b6nqM*MEcU49Z8kHg^LU;4$5NbTF+Vu zjBvvc`2ASIZH)&$b%`%~7t!TwjT{vP3cs8Bi7B4^w<%Mn8@l2JMD)tBe2k+{NYpC986BW^?g7@^p6a zkkthqUdGH+!N0lZf|_B#*_EA@z}&djl$6`+o6h57^VW^20Ko@JZIlYZRW{Zv%zS7x68IW)(vffiXP(G8_idUU-PH-49G5wM zYMe299+NYHJ*^+GEzp7#1ke$g`4@8HCzb=3h3O}L{v~63BZF&nH#$Ghzv{&K(z{FKTMWrbk=yX*dvmFqH-f}KK#7Ps@obE zn>UKXb<4wo#X7>y&H{!^SNCFQXsa}2*d*AIxEhJPQaerJlS<&=v(2B@y~<3bqC1Ny zc1{RS{^O|6=|h?l-h3RImg^r-e%SpTgj+(ig(*9QX{QD(P*HBv{w`hcNK}TZ%KJMv zecajmzj(?*hWXsSB~ohs=t;8d*l9K`8P3ZoKE!b5oN+}fda%@owm|#VgwL|_bItSP zo=aYDA5eWsxyb{Ecr;8@z;^oRr_uiVlWL406CoH;pWk$;W7a0YMk{Sxa=sJxJIedc znw`AoxhjvdNL8N!GqZtc8<_pBy}iG+0}vr5Qsw3va|7tJ|t*q{!vR$;8xjSJ_#)=nQk1ow8%AG@JB~u ziPU9e3V$$pg7K!;&MPJE6#4tiyj2z+G$l51inJ8C4DAxVp7g7P2d??jf$CICNO>ZcIscC?l&xl~ghl+3~W#8^7W2yG2

^Cacfx$$fHWB{n^*pkfE~ZBh^A|gXfQ75nb{pJYiRtyjMjBKSqGaI z28E12Yz<57a6QRTsBWH$dl~$QX~1wCmO6uuVCa12?BW3qBegIybR)I#xYlGGXC`L9 zuBS8Bq+{udluuAulS~EG=^}){d*x!7HjagrMerOAiE!<$(kox#|59wh_L_xjIU=46 zv^6Wv+ZeyP5ILdr`!n%^ExGDEVn%OAr<=&wnUUjM>FG%=o_p#P>=%6cjgvoN*1n5A z7T|0~NPHt5x-#>0){$+O%Kk%bGAQ%nX>NdslJ72S?$FLHg(GT^9$n^z3F9`~*3lyS zcflNiT3EI~5q|1Y{G=o2L>8Z;%fZ3hD1&KAwkP zuV2%axHPxbt3{M6Xfd02Dh2cL0CoUW>ox>ZUM^&3nQ9Lg z1&Sv#xoqCR<1N_Zk6dC{?-fajC8Ffw{0bgrz} zXDxgliyAxzREZ33dEdDV`;8-sPyiR!!TPQ4TMX=VuIu4Ve(P!H=h^nhp5dh_Z9=|D zWHK1!w27Guh`#XGf9Ms`(XDS0|C+i>>de|<hM|u7dRu>`ztFJEU zFfqZ4C+5lbJwuk33ofN7f8&Uh*pk}{-sINFUf_Cobng!k3v<kh>K@BE(?oOgJF)!AB!JORIx#%79mRP~-tndNxO}M$yH3PTmRO}s?-@XzD$c8R- zVlnS)xU{q-YzLp79?1XamDMSbOxoy&+FcxueFv7$R!obaxU0ZmOwk2x(lRqyK*y`=oxYthTzeeSFA!xF>yww z)NaFfzW1x$d27|U@vXi#Ago!MV=h`?X=@*%KgHSd9$1*EF2$(*7Na(!eys|whGwHs zx2!jwGWQCb*HLHBx-K({R;!!zt1I7UvxGDIA@0P<-g-w^9-JFsdMU9NfZH0VIn>M@ z1b;SI|Awxo(N9i()4eE|`u(9qE9Pa@t!1M2dI+YYrE}Vhe1&v4FR)#qoVi)Bp>ao< zRn&D|g~OEEB5*2}%Jff6eDXE(uYC~U#DB1S#)VpUc`yHgVWBQDmh@zNry=pn>`l*6 zJ7-rFayWM0>@yZwyAIi#eU)R8aZtDjQGXX0fd)SgsrZ`p2#Rzu_j8aBV`zZ`zEw~z zwVLPFK3_Aoc~7PJAHk6JPQPDA3QMBI>i{WX74iklgKJtQmNUWu25RHAb?nCepUwAw z{71T?2>)JxRZ%rh2=OR|(&+gJ<8a<^iKsCmc)PSl(ekQ=!R+H_cNO;_Rq_S8y6HA7 zpVD6V`321{7_5y<)%6qd6vi~zikI7^bf)=a-ct?tG~+i;>xL0)s_u{+k)^|Q^zq#d z(CPZwt3Wst_>HIQ}++v07xaaGg$r?KSqS zdX@7FPO;{6b_ZFc{((=r-8ISj0(yhxf|@8e#yWSptYdtcNYKvO#T);{< zWZ+x4O7*ky{wWn^7vbz`fl%!yVZiczTc z@y#&Y3s2h{NBfA7q`9?>s}XrUReuHBUrcL960=fnl+rL~no<3xawB!dY!VSdK4sA9VSCoRqJRmLCg}XX} zKSETK<5&180wu-Mq^Z?rlKmi9YA2ASoG~MH*n4p`^Cyw3ijpL+QmjcxuCKhmH28Zf zX;@H2jlb6cd3)2jprY^}4lyms*o+B%)Sr~Cd~oVqE@bPzA5i|QWQ)u=)m;bxv6mZC zc8-uYQyuiY%>?aS`-o(OJ-4mhYimiGp>Xb(Y>+z;8+MJllIRR5m%J>Q=#nL5ief_s zyo!-?VUgS$zgiS(oXMb-BcYV)u-_rvx!Zs0@B164BU|25j^2c{y(8d&n3S@gvO2#3 zLOs!r`G_H~ z6IF;ROy4{ac!~Qq`XEu%75;%(xVWyf13%Jx1%odR2~Qfjca2M$xfz%6rvMHKCA^B* z6)EhJ9Mndzo?IubbUK<{2qS;v1cN}o3}p4JObt8hs4vetJq7(Nx%W4HHw+o{pB{Cq zPxT&lSIq~!d>uL)sAr+7U43y^>8AWsh0%^u=(Wxs$d696W+3F|GCZafPXy7GQ6j3+a*X_hQkdE^s6Lh7LS+q`|UwxVS|F*NGd;mDx0nH@eR zo)C9CUqosJxedO_ktxpHToj&tyBB5%;z!?{(xbwU*sVEZVjV7FnKWi58zz^dGLEGl zaCp%Epbu61U34!^X-hU|O(6YMlwxwM?>DYo<_dV#*4Rq+QgDsLN< zhuv8*e`n{5=X&tvqe6Ul2u;AMq$vl>b;qe}l3J*2U?&w6DYENCBO2bl0O}N_<0{%E z+3C4(PFTKu#^VB9k`ze~kqF=_v0xmV3Dwad6!os~v$bRbj=M80sZkJ=9-pvP0(Ul; zY}?YbJW8ezrOBykMjgTh}O3ETE{=gc>YV1%i;U5wn#5 zQltpcKmeskKxzm9*@%K7MXG>EM?h2{7z7gtASDn4B2^%e(0d70q^SGGa`u_)xo7U3 zJ@?0*`)|#fcRlaBp66X_zHe3=2ksK9>n$;EpxkscXEcf{z=bEdNn^YgG2&jIOCt4G z^=!n(6Z`mJ+|Qbfbk#gvU9s@p-dAF_Y4uNxd(LeTtkM49RhtG#;I0Q}U=}9+ zIW*dpijg(O8O3({)6I0VdpSX2z&bz^%ZN|r zA>0eu%T?C{vf5Xau5j8VsFgFNQ{dQUs;jz~DVhlkvi9xI0*>tJ&E&l&a50_Iol(f; z5Po$qZO81f@RCAAPbb|PqAA;r1h|i=R2@JXXqrZ10{1JAdZtckcs^Afv?}87tdiI? zuRL@uzEn!A4#xb1s4PL*UeubtK4qb8(g4}MR61pb zbyC^i29G(B09PjxE&K_UDPUi^U@1%FU)f;RTta*bj`OXm7}DOhmbaQE)M5RA8TxP zi%Pj_ZXhL|-gAQ|BVMFo@O)lRpRQJq*jIuIU(3o7&U1W0yB5bS!v}+Ad7R_(LsEHI zp9Nn9?@3w-gV4b0{4emk6Y;2huzJ>>uya$FXDQvgjKk%YhwG@ekD)aJRs?gs1`m+E zgONS|u*}DQ5Ws)(*_=kudQhLwUu2I&dgNl?u!S(m#SZH+e+!qsV)5~ZG$uJeYNW1O zVE2C)>n|H!jh{-)X`t4Fx|>6eTKv@WFO!SnFWJc7AphbYe(u)y^>t|6a%-qmTt$)y z8r+SF8vc$&j^87{*L_g-VGu`rIg^wiXBJ8R9(O^!eLo7XM*ZX97U~_|sc~DhwW$BmQaV5bl5-C%x(l+ECk_eZ{mP@jOjA3*Gor7} zcn&FuIX)Q3B7khID_hU0XN3s=-s(jkRzT|sWt;%!==%fnjDS;`#*Z~+Gs7Y=mYF%e zTnZB6H5Y&%cXEM_kd4*%&^O_!Hn1U}F|Wa~%Cd3?`y!J{5?^$Fxzf-9wFjIREdRf7tMn=+E6UZU`;6eF)cKHV(TzGj49ki3t>o?i!7STjnGj(0m z%zJJ7s(hkO8+S7oqX9Cxxjx`~{WVwn;fh@=H3Y_&{iTt5ceH`?yT)8KWfp(?qr$J=vt(Kd(BK~}#RY^^eZ?`LUYN0qfmNU5pbo7#2Dk}Z)VPkzx3wYx(>Ru9w`Jmzse1$zD zDh<+L_^Jf0{Z}YFzFWXv0`(AZ#AQ5{WS{*Y+-N7Dbs~@82$<#$J8Zlc-2t<<#_w0^ zzJ4?RK0&(_>=1)oGe!oGN)CPucpsxbSNl%?ST4s&SB|OdZek=u4;_$c23}^(D_+ab zRU@BAT+=^3_C9VP0*+ZKeORf6ZZ46uysHslD>6u9-=zt5!=Zqo#|3+fw`IH`S!!zH zmf+6E)i7k!1QSU;`GRJnFP09+ca^HS^(3du1RDCm04Y~mI!LKwhUH*)_OPqjK09A= zD1i8L`Q-b~i|bliZ?sD}#gQ;UnvqKXo83E+cQ}MLuPtqvdbmVg>f6M(21_Qfr*T2L z=lE(iL#8Ve)JQCHw!Q@|m(?--5V`KT`TT{t{#ea1<~YiXc}*j>B?CJxKNZ2 z@Z6{Ej}I+PPI*%Niv;Rq;~U6{7sdCdQ!R67l=OZ~oR@7`@W*-oEI}-jEW_uoekuWV zYzbG*FR|tBxv;PqG<_hFJ3J>gI4Pg9p1QYjVqTs`J(w(fh$Zbc#&6!+W&-LrGpMWa z8)6w2Fj6pUvXA^B4a!pGJaS}D|DZA}9Dd1xCBxtPp`>X=>h!bmvFe+o6y-kv@@`|r zJp5J3EpxLAd@?~pshM{`W`N6mjEftS#cryn%d`Yi&;^d!16p454xNRPi8CF$S89Dy zSkJlktXhyhv?C%-iMLvyd23mDg`c4tV=ag4MW!M22+G(w0GtA_Rcz9c3JirGZOYjA zz*1KFO<>YjGzAPPK4DjnENq=UB?6G*%fUNe1}cQfE?UYd+f+OIoDohu>}~kM^FWic z$dxwo0}kZ0)sr~`^?dftDkBw@;5nPy3&P-cpb5TWv9%P3eg(JL)|cxd+M%m)zqfA? zHB6FX1D_?pRqj~jOz-0~j)ZGP3|v9oJ(|}-my}p3$rYIzQ8!OCWqONF^T}uqf`Afz z9ie6@tfh0+_!0Qj+1qY+(bI3A>dNJFuZ6%2oiCl}*1kiE7L>+Ay}REc#^DY)ycB7}Jh!R($~oVd|0#brfqUq~3L&Ph>?oBFi*$?q zlVfi4nwyx|;@2BsQ?c{+FJ_-2Ej#g8wU*4PERI#t(>9mr!M+>s6fK#rgoO^!6#e+A zdQLoOsk#rvF1{`uFNZs>Mou=Lqm@1}Nh-zxDy1G4b;j^-8McxrOZE<95p6Q}^Yfxp z_s1DaM<=h4A508|l~w6pjN_J?pc)I44P-T>_GYfmynZL@4RMrp7R8!fj*Uo(U=G%| z$r02^H#95aF7%NN8(hY1X{Ja*{3@Jo=k>L8d-~p6?v6M}fq+?LAvOp?jKYE_ zcv|YcIhoXbYLSqbwti`TDC*IX#S&0>*W1NW>L;)t0p<+xpi?qL0|Eg?IgO2^()`~C z3#mg#sxbO#epAAl8n`s!U6*0qD{h=61i4ATREA6cV}Aak=%mnIKBLkFx!)}>EcRNr$BIL z1oI?I{*#)Y{XOcC zVM^U6#atr#wJGtdai59y(5?a(D@8X_RPD69)e5v;PF;iU+VGXrR?~(FH1XB~3nmq} zoxR3JkHX&1YJ%B2^8%W+y?mTVHIDHuoW#q+(RZn0g;gR#%l+_F=S>!JrOEjqhGO;r z`s8_+g0aMwXw!}83Q*)34O2ILiS9U?>SVZGZEy1wq3+2Y*#kC~#~DM=j}!XK){uwr z)rDuLS($bNv147@G)zu-MOki?fo5=ky*FZd$V0k)*pX_?zKEh3IBlR+*^qJO2GMW& zLpH*~clJtn#ivtYXy8WWll!i{9f*B1FQ04Xrmk)b)&qUxTC7Nmw#UaX6(uT-M`W>( z(LA7*R5oL|0;P1%(_flJLv8>qi>yMF)qXSMR@H26>lh8 z$eMq{-+vGMJuCiJls(8(Cci|vcC?Y5ir<_rvGb0+1Y&7TN)5IwBv8hHqwnidGWOl8 zf@@CQ4s=_sL#Bt~3f>gna-H|@bBuXfR=cpN&rV^8U4qqmK(?wN&twmQo zuKUZdl*W<0>#*C`x3wyX=~_|CTO)o``=dv^Wd{fqF`UN0T;Dh5THthOC#x6(6?%js zy|91lRDP>Eze>HE9DAw}be%8%esiY%9)#KC+Ox@GSSPXcHKphnStZ$Mv%if#Kotr_ zTI>^#vh`>7I+IkA+_B=pLs!?C9p8shsBT^Ll`%iR<3s2P;iqX&*50ZVrcXPw=Yw2h zE@AVTC1~Mv#>DPEr|8LsbOjSPvZ0-hP({kV&KUMz_5=RTwnFIG=m-z{QzX;|9{?JJ zb)J7HR8eS`#y%Klyx#&xRUWTQJ$di41LM6v)=SpaXH~PY!5V<yjo3*V0M~YE1NjqQyo&R{+e> z=VRi|ycCLm(}ggS*plC`+Kky14n5spf?9##RU^dOii%zME8S0A=U0$rt_9{F@nL=b zWX83$Cb@~S9c!qx+qPWEgKZcGZ=-mFSA0vNpDHY5wG^xtj=O~Zvk=PuX1y`Qen%D2 z6wgD4m(&+&8t#Ai+^Y#xmu_=qqSVE%1(r{ZM5L~UD4Z!+rkJ^jcRyoVerYQ K$&-(@G#PmyCG-IT|C%aEm_%jFvL1(v~r7v+6{{l*X%fYx@$gk)9L z7`jz@tz6fT zAzHTdrYXuG`=YJ2z_KGPz{#&txy=zpT7ZpPMWv`})3Qz8*3GRW9G79B%Uh$z7^f$j zH4A(Ih1}3a#Q<_YKoXaibW`K)m5RofWvFV%p;YvrIK9Yo2tEVC21;k`v7Q|W%HuL)XgytDB7~}1AxLUPl28% z@irgkZFyzCOD%N;mLh?i%fB4)E_cIDS75ozbpZ5*yyF@+_@+xrsk=EAe-3dEu=tAW z5p2q|Me&d+0|GWLzI7tT<=h$$-OTB_x^ieh;+yng4Dl{Q$M#9_B48Xag!>LD8em&r zW(#z=N>dZ+yrNoL@VC$O&DlE?<_3ZFzZ<-1$$j--v2cU_k5`*b(g(cj_uu7hMY1a^ z5!5@NYh2PMs=ipLA}i&Jy%P5NHDYn zNYG_0h?OJ3Bo?tSEDZT5%wnRImJ|*2_-LRV52uCQrUl=?T7KEJf6cV`;2r>n+ej%(TMcFD3fMB@)ils!A&QksF;r{n>stD8B z0mAW#g)K4xB%VR@K{3G{L`C2r@G+{Kh^CBqID%$!<#IO4x`im~l0q;wKnSF37V<U58h}Y#o;Qy6^#U+hsxd0w-KS>1zE#Y z7^H=3n;{J<8W5E2VL-VmzZud{wl6)h0)A{OP%Gxs)r|;28YlqzGLtIvG1?`D^;Xg? zxuq^@6uDHhfD9x*$o5rv2MD)XU{ler1#RdY<0)(o`fj+;$>a)1G8b>AvcX7^D^?_~ zvgi(03J6n9W`jMZCWSWC`u{4z4V4W4ZlQ-soKTAz+bwcvwU`ZZ zJjc3u4y_M#SECInsz*p;FsFMXvS4E8l!ePp6zuzKiv)Bc_2SICmo;C!; zQ|38Od4TZWX#eJv58i@EpThMYat7(aaNOSny^|au1SUD`16CjyOaV)t7V85I!3UOj zSSXkZu>}lhB8K5&2}NMFkl)lTfu-O0j2FuK!~{72>S?3c9VSsQ!Nj9!SgaQ|6kOjg z87x%BNGwQUQ3{i>P-@sy5JBMPidYK^2eDKE>$bxbmS!-d9WG-T2J^Oo zu_FtZvke9+N(_dnNDiZG!B{(@Vp%JgDn~q6&J(05JcY6G-~b^<;bn{ygF+dHv3xsN zZby??F&@;)(F(@bf)*7;F)Sh*d-vABdOg;25`_Y5hl zMMBv&!C5uu}-fsg#ZN z%3-RVCNWqK4-gj1=`QB>gq3oJ!@TjZS97*z26APi`q=mKOA!j7%q}thVNKaAiju?(HscN}f52vscLiKuK z%9SR{FcxO@w1gpKZChA6)pc16g1 zIp7VW1=4CmWZ2oJLNumDA}Ojs2b~eZqMCF#A0ZiffH2Yl|1o}Apn>Rko$k^xJyI64 zM1{a38kMaC6V-^7%6dAfaHN~cQ5`UldQv$fNa7JE!vrf-9gox)zLFg_8Be&FUM1JY z={TDXvK*cV7OKMqa2ex(u4#C!#tA{5#LYMdR|GHKapfsmQgKf$Z&pfK91;uBP6dlb znZkfVrJ}T=X{O+;)XGtYDe@hSjtXMYP3w`UqVo)GxTA)L@6e_d?NCCdV^^adU9c)G zK8D4`M5U9B#Vk?p^il(aF_MvD6*v~lW0FR@!!fxn;}sN(X}YWiz0O#(R*H1|&KOcF zsX-?cbLwS08w|#y?XngMN8%(_iG}cZJkL}H2=#0%6E9f`(Iwcp9#_n6Qi`|rY9^G{ z;wV*ZD`cAp`fIr??I#je4N(|^$dy$-#N`Q5R0G{YodEW{(&gO)ghaDkkA@_IaO?F( zw_p_vPLLrGI?`V@aH3G1y|7K$YyPdl9pTB!upMtYHK ziqSjeYSf!5#k+|rG4vc#hSi0`sdUO!=#_dIPYQ~-51XGRpXkaIZ>c$^ao1N@K-HNTV`R zFu~vrithw{wRoGV6Cs;Px~ZNKE-@rVW9bO($|mR(3iOy|>7s$VYXybYq-et>wCNrj z8z7WjB`gc7;XcIMZODB15TJ zl1Os3y$0SV3i5 zYCg=06}89Zvyvp^ZX#bXWC8aE^6fyWz&d*cj4iWBXlM@$WT%otqDrB}Dp@We7Fxk7 zg=F#tr(L7K4+Sh1>9z!_Vi%$aDpZIjkN6@&2W`nwh!#V3yHXFA#hlSm^Rc#Av%5w;6%=8( z*Njojpvh7!=<3B7T`I7!2hb%MHsXv)oa9S;BKb;FPIb^kT_a>!^3wH&Dz|B0!QBd# zLb$)2?^Q|+9?0s= zj_0ZsM#dYSLZ(trL}8EUtDw$!FkUf~l$S_(wBi7vQt~E>aWkRxLP=F``K!@Ps;j#? z)uNJyJg8Q+ykuH;$~BCq1S8DVa!$HI#OYeSk@cYIbj`;zaUz>g$t*iSm`C#j&^)e= ziV4-tg#>he5cvYIO)m}pz9$2Bp4!nL}TkSW63tap%-f<|95Dr@IiN7fdn;y#Zz(r(@`{Q)hmO8de#Z~0^Sys$HY|F zYICKa$4`{nb}P)KNDwrLMS2#S?18g%!y`o<-5Tw--%IP-lj+;^>jd1QtPu6X};r2r1bTbt2Fu6)EL*zVmt6Ff9 zCK@AaP=<@3Ww$m!s5XJ$?5*pmrsDT9g5k;-g14DB#Z1fRiwkx{Mns=dZQ7Xt=JWU3 z92r*q`D6!z5-ESD-ZLP|6-XsvhRhE=hk)iroRFMw2J4;%S@Sr>l9z?dy3<|q2cd2O z%GLwT7Mg_Y9wd|?2y%M*Gt8QR5GoeU4gKyCBw%rB=wk=V6!3SMNU+S{!E!AcqzXi+ zT?Q^&IT^PMPnr>f(@tP zF%Xdgj{NwUKZOqvV(oYoOkQFktOl9~GW4DCEi+SC2(%WkM2v?hJqdD!Kn1{Qr$QhN za0K80W^9PCoT5P-0FTr04#h^I5hS9Bg$R=}qLpBW>re_AWb9Za)hR0e5Zx`eA}ZCR zbG1gITX2)1G(**E-b^oDk%soL7|VrS&3K&9Q$(mzE>;M@x<=N;+G#csG`k*%jKG9VI*ESo@7Q_#w zjJ1K9V4+A~&%%Dp>o4_U{xwi>zNrl52;)aD1~c4A(&47w+1o|xkP+%N%^D}EL1}cmhNe?Qb=IP1_ih zzoeQ0!mp@s>nOKI;-DJ;a0sY2WS(>)TFIGEV5=(e8dR}nr zG8mi?Z<|iUc-^Z}6`AZgRn{9;8dcd{!_{KXt#-N*+>ZKP1|6%FDp8}@Oo@e}J3T-c zv>N3a@PxCZA453;jYD(|*dmi{1Pn4QaIPZl6zitD9%<9*h+V{Mg>=_r>2c0TVNWw@rT4&LREkbMkcMM9v+H%aviTHT zj}-G3Qms`~!ecQ^GSR4ex)m&)U^{Hk$&e&&qee5S1~P*tSGZhOF9>or#&}Sgh$V>> zFzj)L0aLM3MG!R*nrb$>!k6`q@ya?txP_iFYTfT~=Jg_4Ad;015%SSpjLKP9H>R{3 zRx#*~2{>DKrlDjW!a}ZWDG-M{5S;6Hci_-U**Z>B*^Cnt!N74bn zvUtedBr8fhKzHnzl@a{F`V>5kt`CYrstKuj4e|~sq|GWYSB9riv2%XJ8G$UV2IO83*98+`Ma59YMnqR8TPBK`vlV(>58cYi@|P;6x)F zCx$}F!#*QW5Y&zlsCp8xlMGdo@lx06?{RfCL1sNtv0R5U?G}-Qut?KWwR=1*qJT`P z$kxC-iinw6xrWjzy?z!DO?R7KRS=vxACx1zme6&Za-(B}g-*Lo_1bMR756Z;TqT$Z zw$rYvDp+7A;5XNwF`)k&?Hft6Yn9{Pu@!275mZnIW8(GrLP%z&sCK?pq+F>=+M z+m|p5s9Ng6P#1{Qk7d(hDZu!_FtRamqnrmkbPqM4FK1UZAA>M_paEM|i=js31{x6< z>PkADfulX}KNw+#Jj}s@%(a5fWHPUG7%0?cD@`(tGr9iQkaaVy6j$Sm84Cv+Wkl2L zv8ZHqNv{3fC)LEfZeJDLna0J z>#h!~@PVKojQ_y&4-gJ5wh0&=^3*_|becFvLuv;ovu=l>j;cXuCWa@80Zkz&?S^6{ z1=K=AU9p5S);KZ-2peT73;MA)oq^D5yyPURc)rn0Y-Th3pelC@jzQy^!jWDTEyK-N zkHB@cVpw=@*q7}FjM%-jWMep&0Smn0gca$SY^P&zEm=!&nV26oZ7I_bI9P_Ye45^=*&OKLqYR9TFt7b z)mS)zX5%%y7=)PuLv)l%h?g2YzKB|pE`qyDsvgY`-8nOpF2-Uxv7+S!Jeg?urCceH zh0PL_O~)V@SY?7tm%vhyX}~o#!1H7YDObg0qNyX@B<2xpuafn{rM8hr2Rtk^zxkM#RbQM+05>BupLuRUQ z-t=2+D9_dFc}{TWN(rYyBdi$&wnYj>y*Y0iZVxE*XUSOH8w^=uR`qtE7z2f~YM5&@ zT$)rhqm8apu=6gS)x!d3n?jzg$7@2vt4Riv00FoHNp)Bd=~v9WI_%4wM8Tylloq`e zZys(WJgp>)*e*Vkt_ZnSC>qN6jaZz>`{)j1DSp+-qe-w9U{`dxkuPVtJd{mx!I;9E zwPDu_b!rUgSq&NTcs1Znn;ZnXH34UAW&tN;D`t@Fh5ddv z7!>kZRQJS9&DDx()q16*M%_fg$q1oB#2oN2S|*WhH*I?g4NMcGExzH_5X2>WY@eKQ zHPfkDtHmfanT5EjTB#NjY613yVY`|&C8?<;^eE!*c%h`;(uPryV%-jw_?VPyBd#)V zn+T6bkQ1I*gLc|oGzN!k%H!uHi={ZTq!mf9I#N$G)oeZhi@XqPsE8Hn`N5Wja$&gq z;Z(ySgmbNcr<(wNQ46SGw+E$?Y=H8kJeVc|(RTQ-l$U&l-|VG2tsGh8e7O{u;j?sz z$5=GhvYA4})f;+WOv{hSRp5vhx-m#8w5_jYYnX6a&s2KeYOEn5b~9Fm}N^@Tj#f+j2Z^ffTC4rA*2`^t^JQm)_B+3}$ z1$x5K&MZW@M8-vYm)y+?h&}VP6NGmQ-I_$%a;jlT zNIXV?>8Hq*w05ZO#cO~);T)jKhS=el0w`wH8stfnUXLzqq63TfQyM<6fm)!DnFQ_> zUxLB>2F~@05Ik%oz+~pFQo0)NLOM5)G9{MjyjCxHMYdQ%V^*@;_P06+?2Z(QaIIDZ zLmbu7Y(P}R4vw08Z;n!J-zFj z5gYP+V++>P>$NN(2y7g^?cjj90}A^bHd~uS9IXdLmO)&l9x1xnx))e`s?+Xux=o1S z5VoAN!g=8EMK^c&2AVZ=iL3q=2%F?fP&*99;TD*!fba}(z9L0;oW+Al&?7K6(P2>% zrC~DfhEi@uqFMsSC0s2y8>M4NAV{!DB;OdWfWwSskulV60kbMwKnmlv_-n;rI$0D- zLETbts5ZP^0*a{>eI#Aecwe(Ba{?&NXLq11`QB7r(aJb-5tu{+-So|nRTXMhQdtO z@9J@0x~sUGr3T9Tb9Di*LJ459Mf#d1gau4$xNKZH5x*P?5MckjR52P&GkvLmbvjp0V z_}R8A-HUQrqETvAePGT&3;u42NPzflkZ4ef(@?~2uS@3$0rW-4t#eUNF&Iv{XhbU1 zhZL55Oot8UN?HevmLsKxn{`>1Www(-N%t|NiPfrAu2_@Zk(e1TWx+BFL3cSbq%$tY z)h*>D+LCe>;A1j0jBqBkZqoy6HtOlIdAh@L(L|&SB|)@GbpusGTs|L!5hQS!fWa?h zHOngjH%90g4aCT}B(NROS8NqM~G5;pi?N^+l3ax@VR>SI~h_zEqLh4bpD}u&BkG4Y(t^ z@s8+i@$R%LVL$|yp@0QEqnifX(tKSDOC(&q;e46)dp(9NC7oQll?)fuKnX5*t43MP zcEG|FAMz-bx{{4%aTd1&c~7dA4HTLz-8J(iJRFl^5TW{nURn&v)X-^{nK*6qc*%fm zN!4nq%b@Hg?5ZM-RzL@Cyc=_aO1@S~mP&rH2|-u}sRIxrK+v*Cg84wQN)=kEXcMflN9xU@nRUYnmzCr_b$du* zE|7N_af7X~xkRlI)+&jbpD)MwicU4~Qoht}x_tR`%nD@SFdLx3$sw?M(uwMEflew} zxW$HYR96%Vv^W$>B95_DwpEEjTtjoEL4+}?c6i_r#`0-aE((>Tt)fV+z_ZC@Am(o} ztR0Kng6J=mi+s#ep**IL3M6cy;c^Wq^tu7;Iags!?kn-d`GMlk8V2)M6 zf#aDjaf-VEmP47m(9zfe4@DTJl6AZ5z>#gpEiY*Z;&5@niE_bK!yiEDa);D8o$9r$ zuvKp)^Qfl*I$XduonSFfU?IjfwREwNj~98}gC^u8mP%J$ao|O?)<;|h6n>2ri3r&P zEhu?{un>qrMmUg=708={XcF#udjZ}PbCm*~mV0PmV=9c6f>2svDoMfZ3gm4lNvauF z8cA|K434o?8R9CU(zWtzHI@>30f>`PJ{Mgc}f$W&P4+(tPIPK#8UzD%wcOd3tCWN>6wN?AHq zbNQ=7?~8J?V0(nK2{yrH-3cmdan)KR=TsA5zf!hpC`K-s6EeLPlu=>H3ke|9=&tg0 zuL_1gS##&Sa?GX#9&QoBFo*#H&IC%takilp8730%`c=@!YS2~`n@NGS477-Lnx!;b zmu1lhb(=!P=B$=0o!QX!l&YpS<5WK4PZ$JFHeIlHjWX_3E{muQqDT0Ftwh;i92+8}3@?eQP^Rc(lO`DD zx?m$-&!{yG$|#UTCXO`as7`e{zyg@wTA?D;f>z3(Cb5`}x}kI)q6IGF8(JID z3*?&1r=nWRNU=q;OEUFJne!TaqfjUcqS+I19C-fuW}^;)-6*Yw*g|WF-Gx*&>2$+c zKALBfT^B>!fq`PPWt-4zRbEnQR;@Op9IK_esdj*1!v1IiSTH~8B^y!zRRQaIwCUsQ zkS!ESj3=FJ3OrKs_Ts&e$7$Q-aJ2%-wW2QIamP(H?9ZoS9x-8gY@8K1oUNoSodzQU z;9G|(1^vMyS@D)aSrDTQ0k854ooqniW|7Y?WRa9c7_KudSJ6;AjbMeBGYA+23N9z? z!o(cAC96;lqmGPq7g60+U-WJBr0Rv%hx^ESxQBy*0teQrYSBVh%VeusB14fmPYKDkJ8X?~ zCZS}jzr@qVYG^-94eWHzaDtF(BhqUlQky6;d96EC8;+^)F4Ip%6FT&7ne-+68HSX# zp-{@fR)B7hP7*`_`T=Xs8TSX3iaR1>U>f#?U&i0S!aWVFZ(F@myORxs$E}49c=%te zt)d+QYLyxwBp8l@^$nu!(RrY-siCvPG^r3(27wA+$POwdMznefn3ckC#w%n&K(t;+ zhT~FNLURcvmtm8=q)2lKKi$!z6`6{FO~$yIO~NgIml!T(W@>7+>e6kZh$OvgBLybc zpd~bAqzYL@t_F(Ln%XePm=<(3;9M^1Vqm>L}p?EC@0_Qki1cMOZ8t}CfMPO^9f)mW~^uerpYpc)$gj@UYg|t?N zAOpSt*aKKiR-u|lWYQT0MC960x=eLzEHIJfDn8tA)3i&;mOESP-Q z73=1VXq7igUL(piZ3+&thLLQ5b+;Bvb)#mZW-%$I9<*B(u#?bk23Vm8^sCPizX4X{ z3&mj|$Wt)n%6~Hn-Q?~2-Eg$)?{LF#pW)W4E)^Zj>bMM(?O-Y3HXBCQbos$dJQLGE ze+9do>rmXA1R;i)NP?{!Yz+*wF?tY#2=|g81VMnv%0MV!rw$0xnU5G!fa~K77zplYAZIK zgd84o-0~pge{$Hie;{_N$4C1|Zd0k{@w#R6by1FoSAv9PiXttS5D)6{d0b0HkKkVF zk-XwkzlZlMb-^gi3y3Vi5;`Dp^WvMRT#q`ei_QKq^Yy5u{}A=K;$J`wW(eT8Kd+9< z(`*9#D46T|1BfT!4&vb;3W(G<}QjUnn1zO{FDExT$M{WBUL89PR;wgY3(dFN(y4x&xA5axIm-0e-2+ zjYvy*aPz>@0Pm9B9+5{p2oT8^if^K+e~5edS^A<>V7K1|`%rW#>_SURJ^m8Blt+QU z5y2lQc|_F5yQK}-#}(ficKyE=%#gaRl;2u4=9kK5h-QoLn^0^J-ZPx=f7w-0Pc+eGrFv)025 zTTzd%E5JVfamBy9j&?<^uRntCU5fZ~uzR`3zue{Ba0Guy$spI4BeC?7-R4ahD+432 z^<(hv&5ywk(QaPu%khg9a20_pt%NqPZbQPBMYe7)zY)=idc7r^_J1HgU6^OCRS7J36vWVe40W8~}~Sxkc`AIDs3n91tTlMcG_$ z8Ns}NOjQJvH@jmnx~zZE$!59MmmV@<+!a8B@o1O|E*Jur8$layH~PX*wXtt}lfb5C zeUn(X!1cdMwqVFtzy6P1U(KH_zW$G0TQKCSU;oFhujbDdU;oFhEg16Eum5A$SMz6! zuV2NkX`Ajx1QX^J3)|rK!*#Dr&&NZdLr6M<$CD9o*`mWSJ(g7J`shrDL#x{+9Sx4< z3&pW14>?91+c+jWV26VjEhCl1bNy=?gd~8EZ7Fgaz>fiVPqnEj0R9xfb2XW_9FB?8`{}kU zRsie*@N_drhX8zl!!dPwc^oW^gKfD3=yW(jI*3E|Z$%s1N8EP|T<+)}1J^sKvTZLV z!KIbFDS;~`HG{8r9gbm}`=uPS`@9_kO!mS7FPMEV1MJ`UeC5ZDxxO0c%XXOKLuw$i zk$DenO50R+Q<}cU;qZS1cyscmG~q0V<4a{ltCa0RK)@zMG)1CEJvwslN6_^05@$VRy(w_zRqp2sbCW2pB42Hyw2oBfQQ1YSoir99S84$-+W zv1zvYFz6HgpGl5sj_ny64xZm+d$K#G?9WOavcl^ci zzT;!ZXCoscQ$}Wt%o*8vWWmT@BhC?I#6PlfBr=j5p+^cMhmMp->LbmO!$-b1a{S1t zBWI6XFml<*)gw2K+&*&O$ipK~kGwqc=Ez@1{xLdXbo%Jr(cMNDk3ysVQEW6Znj8Jr zXnC|T+8aG)^u*CKN7syAIeOjb?W6aPK0f-==wC)Zn&6nQ?Sy#~_L#7Af`3A2LS{m7 zLTQ3I;fM*VC!8^1&4jfRZklkn|Rm6M<>2K@%@RPPnt1l{v_w5<&)x*@{`Jw+LMl*bjGBMCtW+~?n#eN zdVSKzlP6D}H+k>LzR9u4g~`>)hfV&`Z~=adywGE?{| z_LO6%oHgajDYs2|WXkJPKApPl)CE(Ksrc05)cVw;r=BtO@~O8@ePrqzQ$O2g<~Dn6 zvwWM(HqtiTZBE+eqHS*4<`3JvzRhRTW=-3B+KOqpY1L^*O*?bi+G%%Bdv4l?+itt< z!fgZFQrjxqes|k5xBca|_ip?0wtt^Kd-{^;q3H)tZ%#jP`X$qUJN@bDAI_LDWATgw zXB21HGftdw*^E19yfEX_?dEK^Y`ge&(soB~cg}X#ZTHA_?{2@%_IquQZU61k)|^@JtjsKJ){kagKI^_&f1W*M_Tt%* z+0yJ|W?wk_&e^ZdnJ{P3oX{L`&iCeAH0SO)ug{%4ckj9Jxz)MH&;7;RhvvS&!|WYA zJFq)+b~tB;TXuM9-h_FJ=f&r#^G=#~&Acb({bR@7cEom+cRX&#wL3nt<0m`qy3>I> z$vdsy>8hO`-{~JakL?`Uxwi8uJ72%^^SeykWyvnoF6~`@y35_WyuIt(UH9Kr+;#P? z*X;Vt{L%SK=F{^Jn}6Z_2j+jY+wQwXcQbZ7YqvXhdwchJyC1lFb@w0de(UaUE|{}m zy|Sc}?$H@0-3o zeTVwa^*!mI>nHs`^4}Yn6bJ^64E!eW_vPN@_VR0%zqkL={cHPQzW<*O*!uwafQt@z zb;ZIJ{E7=!ytHy`<)JHow(_M_d#vJDty%TTfr}254!rolH?V!NDt0CIZqOApgVzQ> z2`vwOC-mF!gm5&xI{Z*%c7%zX9eDv?h?nsz@b{x=^swk}W0PWu*eS6mL^g4D;+5o*q?x=aHJTz)r=^}t@0G5nug^F#@yuzN=gGav26;0znIfrk zs6Wv#eK>tjc24$??B&^ybHUt6xo4Sum?m=vyFGg_dl~x)7v@goUdluH@8s_<>{3t) zHx#E7+2X~;j}D3)boxQBAB-M+?7>fbYwvG$zIETXcloyZ?OP7n{t*6Q0~yn z5B(>f;n(mV331_E;e9bA{zUwXbfENO=}mcse5(9LX+`PO(x1yK%BPjztgNb>QF&Vl zDQ7DmRAbfitDn>|wM%O2R8GB0o2nhE-B_Ppuhs9;ch@`m!-ms1)_AG0ym5NteKTQR zY>imovTm^F0%z)h=045uH(ze8Y@O5kw9U4E)tS|)cOK|2=^od8qlfo?e%Qpr#KZ15 ze2>GAI{fADVBfjmh>;_NBknkI(UHd-`TBRG-@WvxX-CzLdhlr1(Wf5$x9@S^yXlzS zj`{8}uYN!J{VR^$?pX8KCx5X256=JL#2+d@eCRm$ac3R(`D$tP?~ivKf5!3u{E_&h z-=6@VaOMf?PAr}H&`I8tetPoclj|oxamuPwE((q@bH;^}FKk`-r;FH&?)ka@=a*f)%f-iE{I5&um%MZ- zed%47`7XQc^7)sabj9cu%`4u#^584~_>1r_Zdki??FCoOyXyE~I)2&wnE{q;_iEYhyU)* zd$4$ZV@W-1TKH%Y7 zA6fOt?T>~Z{oP~n$L@bT{rJOAFi$-7RRuI(6Fi)4;#kGp0?OF?;UJnX_lkoI7{>S>V}z z?%W-B+GVF5=Pp>V#~uq7EZuLv{gxsdpOI~+P1|<*w%bjgzTNEYw%cy@T=28q+?{95 znmudQ&SN{y1<#IS^LO86mtA(Bzi83e*rG*F=e|zo#`4Iz-#TVZ9Tg^AJYi&^V|3QY zgjpl&?sA+5+?&w}z?bNIEyHK>lnE0jO$8U#k4qbVndumr05VVBZpJoKz@I6gZKELX ztl5+IfKQ?4%$7>J+{Ly`N> z7oB_FqUg)VzHr8FGxwYG?dxtm_Qlc1o_y@?c>3{h;gZ7yVaeNJZUyB%ceib>eD#TW zHy!`IednDpc4>3fyf-d7a}9b@R5+o&(;Lq@*LJVHWzEZpWk0#(#3K#~q_u58ihEw)3x3-t|q3(vMy9?Ik}wdf(aIz22ps{(udi zP+juU<+rG9$FEK({^jS_JonV|#+65(aLvtorY}9^ltt&=uJ3f&>XTRO_|U%=Uvew* z;9gh%jeg+CUwDpNl6-PM%|0>udHsO%?*GoIBM<%Q`d?R-OaJ`N!w)@q&|a5H@16CF z+WfUFI`4q1tlRcD?6m_|Oq=%5vwt|^)Kiqo6KCIYQhUc~_x^d!y{m6j(K@b#a3u#0~2Nw1ImX8SX4ys8?w{KV=z(Z!GDR(^MV@B9Y;eAl|Ce%+IAp1Jcu z#)&Vwmz?=)GkH?}#U)q2^U4cXU;F#V*vr?duB7+$U$@qFetqqdzkWOa%+#!V_D^vp z_@nBpXPt8GBXafC)t~J9EBglYh1DnJpS|o->5Aqq*@sTM;+eZnLu6}*8=U9-;5#=z z6`1?a7vK8*E_+?~>__Lm|19#Fggg@QoFH60?TLrpob_P(jDuYhLTBA_2zB@+HyrfV zWj|ZpD|;_^eD1@@#M9-wuR8q7<92z$J@1oy&*}Yc_rrg|-ut)b+B;qPl6*(;sdJW! zf{^^v2lU(arDvVK|Bs)i#S87!g)u6T(YgE4;Dwi0<=jIb)dSfZ!{J)v;F-@q_Duc7 z%e2|gtljz4op+dj-=c$ezvuc}4r|=)J!~xUYwi5-s_-*wnU6m!ZIgT`TcBpFI;MK) zN2kVjy?OOA|7Cl%F1u#!`Mz-pVnM|%fWL`&K>#czixTF`j5jNxSG1+>ezw_hb;8% z_7J+KaHR3njn=m1vy|UFZJu%b>Qdo}*r%Tm|NQ;C?%k0+g_mwP^td0CXI^vF0{h7$ zum8y_{!0Qsy!x3d_PX)lx88hug}mz;+4)-XzTNHKjSp7ee(PrF5b@Wr2>@tM5i zxvyRHVQb&>9{%9IWu$B{5@+f@~v}x_~JT;apa%ZIX*pk=?%YNZ>TLe zWXAkiPZFz7Wst>QZsFP`C!R6~dGE*Xt(td*JiEB}nhTFUyL#4=Z)Nv`5nt@R2i78i zAFh7=ZqB~W^WbR@%-hAeYM&;zsFYrD-|62v{`BYHU3UAN`Lp1sj{WI151(<%xAYTF zyzvjmy}#;5mt1=M^aq&a{4@8Tn=|W2T`}qAb3SXXJ@LI2J6wM1vSooaSK6KrKFKdS z<$)t|2S4>LfBozTW~{l9y89q(|0T-eNdDpz8ns_C)t7F)xhG1Ki#+L8gQ}3id*l~j()O!(&`H@iNu~=efc|#b?)omdfYmlIq>-E zirwrRp1=4P7oX~jEb&b|<@YC6uf6oS{U3k&m#?pLWZwJDJ}Y;<6_dZ~%)I%pPrg6p z&i1_v9{udSY1<$B-pPeSr#yyy!_~|KR^G)4tcom z@T2~<>elyv_G$g^lg@DbV$~&|yfAmcj2Fj_{J(}Y@Zpr_4{^Gyxdhh%r@8gSCE5 zR2$_QKV`-n3*OEhx%|D=lV1cqys`fqFMg1Z-+Rv{__tpZ=Qo&b<_nF_?~Z=B_S1{* z-6-P;`Z?bTcIxKi-xkd7ormpt{U7h!^^^zf)qlG2iq%V;ttI!p%fm63eng`Um-`)Mp3C#2NKR#+*RQH_m zJhYU_{`GfHzj*W!+4D}n0ln;DX8Au#x2}D2;wQ_Gxo`d>(#7BRUVHWb;qJZTnq1y} zQS2@e6d|A#Q9_Z>q&E=@y$2FPNdT#mKm-y%DRxnUffX>6AVq2l1OWpC1Pi??y#}Or z5Gg8xo~$Bkt$p|2=bXEL`=0wb`D5O1l6hw4otbCmneVjv;*(S+46t#i7*8_lw@g9^ zL2WfQPozYEB0J%nxNf~C`~yf8R)iX3_*-CeZ_p|9pJiloZo6;83dwCXIWWL&L>bCy z^cr_q2vWFc!y)gYmqJ&mN-1&hE`ZLO+o6+VR*G3^OLN!R0bxyTi{H{XSnIL!dd z2Bu9&n$U(uurMnhPS^K&)GOIFlYT-*K4^|xCIMP)T3-?MFor;w4*71XO!aiW!j+Ld zeR45f6@ZWsamsQy6m{-XR*Q%DY9FaG@a71&}QiOVtj5L}Ld z<&=45Qs#cg)9YrNBCe%%!{*q7l37c=uRX;MH=JePtTfmAhrw?4E;OfnOT@ljJ9R)5 z>^-wgxX=qn`O++=b&4IQOoHjsMDSA6;%#pTQmdvHO9~)qOk@Z0&da2hO~;fs@d5tkok%9MF)~LacSPh+1VHjmQby7ASL7#bzEZde5y>s zu(t#GpVbaL+A|~%wVDaPu!*DziDjmCYx6q@1Cfk8LniHBi41&cwlAIkpk_!=&Q}{$ zwCTDyHdq|fFK+cp8*qFQsiW>^cm*dZ^L%cXKn%>H{1ZZ2LdNl!bv6WgqgS~^o!OYc zH58(=2V*mLU1j`C4)xAbCN)KRD$h)#JZyHz7=)gLVJnOZ%`xDUNj)1nSFF;u7%S&l zPWfi=F8H#0QZVfB7rMy)(GFeIdTpom+f6xOE(@C-lA$%~=W1ve1yho-mxq6a@&r*8 zp6^XCc3S#;W}Z?235%aZld(!wYE0=#w~Df?JMZdGj@pP+4e!0*UZgbBY%YUd!uP7+ zk5R6CyzzshxUj1I<-f4`_(xC&#xg)4kZV*S*d%1z*U_UVBknK|RjgO3!D6WwJ}-OZ ztPwQy@nV2$Fj#?C=?90$pk1YxYlPU|$Wk4md4*c0 zsa9!yytnUK(Ds&9@}JRxzTe!oP5;4hbA*!k;!s5jOErI8L|;UNl*F*Tni$(q6Q;-n z5!^jN#X8Z|Q2|#XT8Azaq*uI0i8#7Hw3a$uTzeS%q@Nd5SvXdg73TvlAOHY1Zo#}< zbe$u`A?6RfihYE@I=kk6%?X2?Nx7JPW2TF688DYX zG_;ruldiKeB*GIx-#r%UF&XA-K+XQ>rM`7*RoRvYt$I#|(bzY@=El&MAr%}6bMK%9 z&I_Qb>&@$YQ#!%MZR;LARk3wFjk!oyqa-0)yrSEt@@2uN$)l7CnPfohqiB54y^cQfL2hEoK8?OJ*AOM?8Fkyge` zEo>c8d$XMQout=(eLYj5t zRF1R?L)wDQcD@q?c~;Yy<+mLV$k;fGb#4d_*5tPh7_F+E^K1DGQc@e=&Sf5*Eu^Ca zdo`UV^z=hM;HW8prbo%)_lVRyvo5WW@|MplVf1q+#B$E`7B-5bA+x}N+xjo+B3FxS z=E7aq%Mo*l{pndm-9?JsT1!L!kx-oEl8&gC_jxzLy3FH`dQ^D?yUcia)On85sA?IAQaBv1^Zg-cd67&gf;z+nxqC* zOBBm_SWpd_`~XTPWlWkqA$BOMtTmKnp`9D+0qVE^q5S{lFCUy3zB)M{ns1$=<)^&Q zzVylcp^P0J>z(A4DpyvT?i~^`@){l5b<+-s6oubhwB@!zEO{3gEtmZjqtu6H3Z%?EPxxAsq08cs(1F7=!EuC$+#Ry$1Q zoi0dEjW*?aC);8>{@`ToRzi4jdW9wZw0|TV;SxcYrl9Fg--WG)Ti)GyLz9NtUFBn)V z)S=l~UHkTPW}$74^z%t8lPP4V9*w0*CnKs_j#y$jWsghe+9%Q>)%&WiJpEZMcGbU{ z(~yla>6Zq{NYF5Ye2_-LiZXPtOxdif+1U+?H#|LQH~Ojqa_25=?xcLD#E|*|C!&YW zD*ek|@&8D^{(lqc?v4yGy6-!e!wb{96Q0;y)X5mNAllTLHM*O?@nN6TBxTCVb1M$F znfd8UJg^BM4h5F$4^RTqAr{$iiDXmA?9ha5hD+kY9`>TDKR*Z5wnK9Z2ft!JHfvvR zc;;gTEF!V5EF^>asG<<5f-u7S0X^1`YAw%&^bA;_)%zbwWj85r1iQHd`j_&deND)S zTnF`Z{|;jQ)XP+X4?%=Q+=pOyDbCFSx1<9RL`O}DFz^APJp z%5r73UuWrcsnBJ=p`F!_21~DKi z+;_??k66~w^?$?WAUDW(kn_Px%Rr8S9q)ewVh)*0$@Skt(jI+s&|?^~)MGZ*b$LFR z+bnRd>W=O@|N52k_oI6s|4rgAxEE-(Il85#Taft9@0BNM;)>NEbp zBADO2;?*sye7a-F4~}6Kwzk@t@+D?BGR?&~=?BNbUpDrAP5XFT z++|1N@8I-5Dx%H)XY18pu(zBQQ`6oAb{$Ut!)xSxiXmB6@uF(Z9flQ1r`x8XQQYV1 z(Am~nO=bwyZ}vt<9=YT~6DnBYRdb4aPLBIixDSdbIEnNMq2^u`pzr(j;Q5%I(!ox; z%6dsp5j9%MRIsMEt~Mn2d1aAiQ*_Xr?~v+RPB&+|zUHZz&$F^Z! z4uYpZZUVRo1)*+uL0VFy5Q$Qn8O>q53wF6JA|tP~xV7X7wE!q#+^+Cl89f1c^ z0>k3J5lg6QnZxxak9yr61|G}3z-jQOp5}k(?LFg=@2djBl`X#e^f;}{F&Fn{`v=F9 zeUA<;Z$@EP>~vp!dbrL%JNEq6t;t=kyDPqDu+G^YS>AfKtzUjUPjuw#1xu=HyxqwL z4?79Sl7yb2OVxT`# zM{+{bY#v+MQgf$nJ*VEj+3~k#2t)rouTT87YTEkALQ20F6qOQHdh0a(jSjI7%L4`j z1o#kSvh}%9h^kkz1 zhLrdj4gqx|6)ppIx9kh_oHoD~cvM)w5BLSnwDrvFdmK=JsneI2M}}&|pW)!(F}dlV z2UV}@cg1BR5lWp|)H-qdcBsI$6Um2d?wT~Qm3;5f)qK>Ln@^Z)wRn;szGWRYHhra> z)~Qwy@`J;snnIP04*?;o=!{nOp(j zcr8e{m(aV%tmfT_+Lwu#8dW`_o~q+r9o@H?}Uwx~;J0 z){k`l=5j>BOMQQEyu7N5d{pGi`nLJN`BqBT+LLuIJ(#||ArKr4a0K&~q+C^4h8(;_^>jKC%zWPYOP&nr#g}O&h4@pR$PGzs_A!2>sC8^rA>%q9swP8Z9>>M%)~r zj+$&bP(i^pKR9mT6fU;H2LT5g1j1}CD<3m*_aV^7`^Xbc<)R)^=Jqh7?@IArZ@=@Q zZ3~=t8~XOD_YL=DyP*pE@V293-wqaTJo)9wzwMxpupAw2>~m%($(gZ{-~CHRg>l`` z9~|XT7_N$$hm*f|>$iP5IL7D9EzzA=LN}}gRs>t|ahEgHgdHAvGLNm)F}dO+?6j>_Zq~8mTQakSshD4A62{Hg`t) zoEtRu&-Sq-d)Scb%qp9vFg!s(621Su{_gg@GJ11(Sa=$~Y%n9DXG+tJhA)T_$jCYF zAFHh-uT6gF3}am@sla0T&uE65W*Jl_iOSo$(2}Df!ObrY3p(2yl2LR%e6~a2vmmaJ zSLcJKFpAYOY+Yu)h$Swolj5n<*UP|Nj#p>I-BGghrn{?wS*Uhg>=dRD(o#`jdhlS$ zv+4bfxl1Rn<>4~y+wr0C{E7~b7HeuhDSP)mcfPv3F*S6xA9xz`w8p2Q=M}#^XCXZx z$inGm$zV=r0;rL4I+hL!G@`OK73haZa-t-uo1aH+gQKRizq~e`BK}$}-XYIZ*B#m$ z>}CTv4cS_lEypEN`Yr9EiHmr;t$u=lJOsM6p%EDQHUs2R0S>mJe622ZoKcm)zfgJJ zQDUh2&WL@Z_~f`Fqn}4{cOOUO+~N)6+#HX?N9BCm^z@Ac%T&peZ|yYeGjZY;f*x49Tb*6k~#!*OL@$>3vh06~eutXZA02 z6diXb>A%$&Ca6FKrYRduxWNl+Bjn+VAL|~BJl*W4A1R%U3W3o8 zU=NIV@?*VP;XE7wIr+Uu$5rS?xgo;8MDLr5ZOEoKnBiZ2>{1L&OBF>-a+nxGM8!Zj zXE-<_kul}hL>K370vo;mGHvdtT0U23`N462@3-As@4j3(_S<%n|L5l@{__08k2Bw^ z+;nvB&QtFF!&2P;+ai5->)jgYeAzN*Nu{%^7NEDbY;-zwptthY^Im!Rd7d^Od54gZ z+#v?^$rDCV%Xejbyv8Jk_i*BLfV@!IF&)!qd7H6RLF%j&?y7yQ*y||W!<1#ao`m%jrIXcPTQUSUb>1y|At&16n)fu9qQW z(TRTi&YoU@W<<5aKvpKj{l!|;9#1lg;Hp1fR`2qC9V}P@^LwtE?;++bbU*5xw}`%W z@}AYwUjU6!;Ha3un9F-oV6Er`%H7oc{%ftdt*lEMo*}OeBY;`>Ia=|R_sp3nou*bp zucS^T(nIdkE0xF0BNNJDstsl99Ag+8n`;lv%t_ZX<2AEL6u_dPYND#(S4F4EGIjQa ze`JVy!?Wjf%U?GOocC@-aZbwPsBFa<;Ib@khHIa1Iv2I7DW_BZ{( zQFY5-^etkzP`+d})R_MW)2#SaCg1hK6#d|^%DY#Xg-712&YrnClQ~8?sXHJNbLgbDkj1~wM!(FgYeQ-o@%D}JS&4ygm>iQt9UtD!Ff z8uG`+QOSja;9xBe#zns8?>qI?A4E&4S%&pwD7cUIVfmjHnhlVyB2*m}8^Kl!%V-_` z44_@q`&vO`c4Lssn3ksZc71e^x+ZTo7NL23%`A3o4FZ!2$*-s0bnu`}twPFE=ekHZ z2HvonQ4v7>VgOoPLj1Oz;dSzx)^1$tmxQuxib;G6;}`xQS^FXCWMAP_HDFXUBr5rv z{Idd+%|@zQ%JIJL)1f?6d_7kTe*3Jr%6bQoxat+tvn8WWh^kqy^+*jlCQ$xP7muip9?aY z9qI)E72ogzkEa|}Q-D>ds;VO7^xu*MQzd3=j8%N&1Qh+2geMSL0;JGN>fJ%7rn!L- zSd}MD=v*Eis&oYh97>GU?p2HDY;8gj^}4~9S{V&}sWqNw9u0v-g?gWLs_15JdezZx z#wv8}(st_y3W=i)>(&fa7vW%VP)5eH&878_2+r`s{F}$mc(+?0@>DysDlbE%+;z5&(yH8X>p#aNRMU zYYIN|9Gd^DKZ@SgQ&kZ}wi*vvz1{2wTOaHe@Y-ON`fH2J-+hN+zB;58Y?8PbB55lH zZN6t!G?*jz30hu0iVt+`754b(YjMy1

DXUu(hbc$b?X-pz)sb$j(TcsTA4-l#B- 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch22/22-2.jpg b/docs/vol1/image/ch22/22-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bfb30b553f55586d72271776e787fe019fdc501 GIT binary patch literal 84679 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

i)`A6N65+BR%D@RnEc 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch23/23-1.jpg b/docs/vol1/image/ch23/23-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..621cdb2769c468a61a785067c53b43772ed99597 GIT binary patch literal 36486 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∾^T3J}n8?2w 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 RZ8$Bin{lzCam$yE{|D-zs9FF3 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch24/24-1.jpg b/docs/vol1/image/ch24/24-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a9354987a68fddf142c9c9be70cdb5340c272bc GIT binary patch literal 67207 zcmeEvd;IH2S$BWu?Dgz@_pq?b!X9>k1+r(;Bu$$hb{CSgX_GW*lQc4``ViqSSu)C@i zf?|cEe_h#ruHBZX98^Hr{l5=<+NjO)JUIo!(c&({j!ow-D-Pk(NMPiyDqOkyS!H5a zzLTFY9oLKQx$SR%@mFs<;o0}xrsG0YNN8u~bvK!#Y{a3p@vWwP+q3RHc6WKI43p5w zjT2=UM2l19J-6+^Pl5C{8@}ztu1N0Ra~rvB^~6XRoS@^(InlTaJ!w^|)f0{8U5Hu7 zjYjj%6KEAh;c6X5u#-sRRIPprshv3ex$WL#Aa!?UPfy7$=5%}D+da3P?$~Ozx@(2q z6=yDtG@DJhioz&*5|lW(SVy^0o{Sc^??KMsw48;Nc}ecY(TOdtVaCh+p4)EQHgxuL zx?^E-wxJ7-;KNkvu%Y|N62!WSIrKp4k@c1WxEg`2tKFa>06FN(A9- z)eBM^h8L{4$lC=NfJfq##c-WCuemE zH|WMGI&+LX&W3Ru+`H!=HVBrBJlp1;KtT1M{N zyXCZ#)#gdGIYiJ?C9I?WZ^5|#o<)+9d=NvKNhJ`@ScZ$EAFskfKpGf8P%8GIy?f+1GW z+d)f0nv&`_JBnH|pdbaF3QD_7%#fhl;ESo_RV(1Sl1GhoEp{makmQow9*`W9f<%&I zUEEl0WGDyV3-~Ci)?&M&B3Ien_w)V?Onpny_ETLWtV#no@Hq{*O@3V;d5lqOds|i8 z)!*y@Cmn4wUV)79mNIH#WAbWOXu2z;j>CNa-Q7{HTET3hZ|Rxsh*BrW>F?g^EQRX$ zOd)>{GU*`8$u_y`KD7eh{oVJ)7L;b~NDFq~t6NIwjvWSp4U+pVH+L=jW>?FNZ4%zM zZ0g#~0);4YTZ#1Tjy5+yf@*EQl7bb;inM*++CF!M2_h>yz{8p22NeP!wO#i?H4~$7 z3!E`VS91A|kg%;b-XFTI($O%pqg8Dhk#>M!cC+z_^Vzmom?LUtMxfsvIj~T`ai>4+ zXgAyLcIL%-8yDx}T<~h;ndhhf-BV~GJAUG1RX~NIkBVM(-J9=O;z1R@>eu}k9xld! z8S~C$v^FYW_T4wx6m%vqF2IrC@t(Q2<<0_{bx^c5M?hZ7KM$1hLNHNzO$GJl#(AK$ zvYoxb4E)I#O@A^H=Vt*y9;g7;vMRVnSFT#ExaeUvX0P#Nq6^D0x|{i3u}3Pq1H52` zb5$Qz>dfLeOyP33c3b1JKOCdIA-fb5sy)#sGg~jKEVG-qxrvsAJz`x8qh@1Nb$bf6 zQGJ^})9QaI;F(7D|2~Khdkhy$LTx?K@%codbVJuLL&u{X?}l<>cY?z7sANYWNIWtR z(xn2r9$29UCP#I(?Yc#Sh0@%q#E81}gv)hUHl_-JM#w6fGl4PtYjv~Q$bZ%LKo&N0S z@T8p1DZunAKWlBtp76%~`6DrvbCMs`=EE72X2U64LWYa|zw(Tes--X}AcUhgUF zS!6-BC{h@c>s3o4MU_NXEtl-8WPJrTyTO=*R^XtLEUG27hotON-Bmjvl?5fZ?HW0( zQL@Acq{dP^KwV;7Qnx76We{?-qTE%dM^0EObUQQB@TrB=!AYx4t);F^+CEj2x(PXD zDad78q`RUSlC?>1O!ro7ZBL=!rj-?^l0lW8thkblVtPjMeKK+B*yR^wHl|lnuSe!8 zT_bxLS*T#o1`}A0TdXAH4DD{(*~acc)Sam6)>)mon0*U38D%G`dPB&=3-HE=;+ zTaYAm00*>LQp%~;qOFj!MsuSI_^;JSf@OzBd);M1b)YGCk-lIb#{P}WE9i_ z%%fz^sY2~iD{Dfn7u|tm4=A+VwMnN#;eIzG9hhpeU0j;hXmY`JSMHi_k6GQFEoqiz z1J_G;fON0MR^53-4;EaT^aFYrbHi2O(<7gouR@xtAgxNP)m4SLyN+4{ zDWKA3(~_zp=OScFi$$A6`z^y4S1Zif0k)=YzrCt0TfX0)kT~2*7X939D6M5}Kubi> zsHWh_FZQ9s=ApC zSB%VRBBklf2<%X$-eeq72fP+CzOS2%QM`mW7DXSw%wgaZ-kFwcRVPI?ADQ9G- zqmFkJdNZ%+i0T-c`EEy5Cq@~{9n+d%a@_8Cv7yQd)=6qcDQAmLDVhB;pLc4pxtJA3 zmt-w|Rw~`@!ivj{umkK4RJ%Jvy4?|JhcedcIxB~n;bb?Aoq(!C-K9Tmmju*B{b@i! za2JYQMxiLSvvNba)n*6etV=U2J5pymz*y<_+3CXL)||%1te35OHoJ=FeOe4zT$-=E z!HS~@f2ha=$1i-;Q#o$v1_rHv6<^{d~4IupJ<`bfXS!a~u{&>3VAMWHlbF zXC=?GF+%$te&{B~I<$G4Oi3?B_|Q$mbvEEvY$ken!sFGfs;rn^%U|pOO>gb>L@RI6 z2-O>n^K^~Pdb9CzNZ09JW-S{Y;rEcZ@D;e*gKH~sNG$|jTA`b^BB*ic&O3Es%C7l2 zx0f7*WU)qCf+$qSo9U)s6X150-^hW;)v9Pq9g1odnQcb2IIW`MX0jI38d@J(zKD`o z)S8a^lvGn&p3oOud`BTQ4Cwxdz>8Ld_vhof-AdQ}CDG^&^Q>Qw8}-&I8gx`5X>H~M zg>8<9=xpGS5Zl7tK}tfk7BL&3Z8)C8-VRWrMRL-nL#c05yvn4KQBn<`T}cr~=V}j= zHc4x$4oI04+j3RmWdR3#tZDKjVK9H}$)VjztL94HXx$y4Q=O6u*uRykCo7`Ob=6?5 z7y(DLV@!z5s>C~>0Vqr;(H_Bj<_4l{c|wwrrBWr&LdOd}(; z%ScP4-BC444v}uC&KYIO^tx&(4o65oRpE&$16v_ z?I^4@t~Xy(T+EsYM!F=*0`YN651b)q1=~%ayID)!9drQiDQQY-B2dW zSv1g{;RFie0qW^Szf2@FG>j>;2UI%g)F|w1h%O@oZZ0%*U6|4=A9qmPoN-G7ZM4l2 zFPsi6TXepfMJ?AFCS@?{t}H)aCy_u|2(nprC3V+jyGvC!T{X7H8d3vv*-4HKWrMY-6o7dh}xB zZL&-Xa&C>Z8#++RgQXCtv8!2#SX4y5xtx*>$$nu11{?h!J2EckoD%gQR9nP zf#627Uce*L5?YIuKBZ~|H(ljLOBV*fXwYqM7Fw^g<{f!qw#sU^TM%w@-P`P!UVjnd z>-n6|i3PfDn1X1nk_>ey`K#5s{*b=Vb`bhD-oXPZ7Z ztmVag3=J~8JMiJY-o{-l+yMqlAUD^eSXg>QT{V+xKQZgeQD*gvMuRo;wu4#?Z@$d? zO|n63R{Ee75TjlR!@NM0(I$bVYE$ST>R_~&9GW49La@U_R8&g`ehspwbq&rU2%8cV zydJ|!)La&L56(BRIfY>us%0$npN!nKEDH-}3;TCX+X2c;mnMDCJy2jPj6b-rMAD$QU`Q;Mmf{{LMS})_&@Ry+4~z)F z0NdCe&=q802Vhv4EhVkpX`^k=8n;y;>CC87FC}k4sd;xMloOAj<+WS118E}<{ghvi zu>mcrQsmeB8*ygu_rpnd*s3mBmWu_Bp1G452Zk*cDm2*4IK|I}p^6XWzy`W%VvZQZ86h%I&F$FGlg!+!70A*= z&y2ytcE1&H;E2V&Nti6HXi}g0Y2Qx_BTD%&P3!ACOQ8Zb_Onc`0Gp6>d&_4nf^3TQ zEOSCbqdBtl65@cGfNAQYzNJ&`f4um$gmZtI7|nWna_ ztXiNbL4r(mnsh^YpeB*0ua^xKScxL5q{U&OxC1UHG-Xb#3t_aUuthB6`UtBFOW^YH z7LAeG@m<%O`A!z#NfvhMv-!Lx=W5kK#HM`&{93082jxj zz|6Ye%{8qh_=_ph$NlA0cU3tfxk-o8ilNme^nOiQ_mrs^1<+tk*geF7d|2)xA(q#s z0y9q=ovPO=cVnn9?Wx+E*nOp24RW_TS5hLzu;_QvAuOt*JK@TBjzaM&h3dQvq4rXw$u$g5cG&f_EXqSG$ z7$dD)E&XLQ%P|EpmBC(^O7QwI(zc^w7~GL=kfd(PX;0>vA%% zR_sQkm#ID=p|shkCvq485p?9?YaU~KJ@NT~fs|Z9G6m+te556gtozGEOc39Ma56Uy zo+k37u>)LSa_9zTJtJ&Ho@_RBRbe@zzn%qxh~a2aE7tWYiX*dHwuBHG4KBM!!U6ajn*H zFt6aS**seI+`LtH6;w!oa@kM4Icv1L-d_3|dOQ&lz`qj<-MUibqiRd7akbGBkHltg zkOC<+%@>Z{TB$2&fprF6xakCzrVI(h2J<~^atMtf1`$;En$%D)BwHlV5@R;Ntwf2P zqLJ5t+&5ox$r$h2EMiZGyel-cPK}=h1wJxd1j99jWhQa2qh$ty@M4m%=6>n1{K8$v zVdUs)iu-)Nwo@UalMX|hMuG=k6{?F%WaeNLJuB3_Ce_VmO3Vr`ZNp_w!H8iGVPOBV zz=pD$6w%?A@QO4gkf9~W08YAHc$ay$cwH{x&B)6N0+ed%kqTJtp``%m4seV7u%Ls; zLCF*f>b^HmH+n6mYEg~Qh9f06s~c@R?2R|H+FR7k83J~u9bmxQrI*T(*3bu9w#12Y z)wJf?Qw0qkr>IriD|u-t}{mGMi?GJ`q*4Ln+3CM8cTEH1?y#iR)ZbjrrW8Z z{Gd;=WUZ0a0~sr|wn0JTD46O^sUJ$iH5z6lGfQ%~)iXvdzR==os0~!rUI)fFU5}X2 zIBkGGJHTBk&F3@E!=2DeHsd9bH?(n67yC({&lZ~P?f7a;$IH(`eU4&71 zMVk(TT273ZuGlKPjIWtW)wOpNMzh)6vjeR&VQ4>{ahf9a-CjP#BSw>b*-IwC7=*J5 zUlnP7UZ-U*i{z0S*IMj~ohZEPHYM3hQJSXrMvR$4)8cqMUNLiTuJUQxcQtuIc`1Bm zWcGv7V05vLL*qdZDWVMYK7WBU(v{kWBE8+tu|a2U?kJok+Dt3kEwm|Rqa3hnwLw&2 zKHp5G`qY8-oGG%v4f0kR6r7RqxJdfe21uXa#Fv^wwA2EKUuZ;CU+nioAG34Z%bB+7 zDOq=#F4t>m-I?`ByM&`^sg2-X0}hyM1nU7<5ySa74I(@-=1w*?Cb1Uun^_Nc3(6Sn zOc|`7UO-FL#7lbBVVpU{~1yi0haS0Z&_0)m%d=MenrUeEl z8zoMZYKiFRL@Tj?b#DzXF;Ho5`>HcR+Mjj6b^#;+EdtVlF>Mab7=tY-2g@=|=0+8C zdIIBzA3$j+X2XIY_YVkCMeE{jQo!L<(g<8n$7tS%aeWHu5xjj0W9{AuK8LrW&wD`f z53R8SJY0?B_IM;CF6V%{Esdv1*%BXspqA}}=2;2^g(!i9-UW9-C8rxa>C;M$WM%@T&D2 zg1xrDy2p_!JQVdEg^NknZ_L|%ui?6cE(e%a9h+%Avh_}_&&Tt%4NcHFI`H*=gQ(R@ z%D}>CIIK@COlZs|y;-JtZC@WW%wn(JGNtXheZ0@B9B#t+nk8n=SagQ1CE7!03~_V zgqN&dz$BxVxnaZW1x(~%cTP>a16EFL28=zLVCvBsKu~pEh3g?E7trCS8K`vLgH=l# zewD^{WB5odUa&DgBx=(T!H4;@XV>ANv0XlJwuqJe_64EBn zWV3HUXt>NV1jnb#CRgC$(#)h@o>68h5ea8nWg?n=ys=;tX)a=W zffMONe6j%>C(QRoBPeI!wFOR{Y0!k%9+JT%UoBv+TxiOOz%m+!LiRzN$nq&)+`=g{~DXkc4| zAh(ZjuvSdK>!1b+9_=lhXXrab#P->F*(eK529RYIEL7BC6SMrb9vA~dCe-Risj-bo zl61t=b{oec{dt_G3?pvV*hdVGuQT7)lv$e0-Bf(y1>m8 z51M^i&?a-$M^I9=m9oDg>k*?59d)pdcYxKFHf4PkNG^I(KG960ns-EZd2iIK`Z zzUU~T@6pt<*Q%wpM2dm}j=;u1`UaID8=IqA>2f}@ru$ghv43H1*irasS>n-f!w&E)gMAg2IB(kbEcp;_ z*pFdA;8P#RrI5%+fWKzN8cv!)M(~MMpA1?Q(}ocb^>st+kI9-Rl|-x21zny)bI7Xo zpi(!ua1Ok!8*~Rqxcqvxj)9+zPr!L%j@?=;Ef;mT9TdI60LVc_I{{w)jjX9H%Lg+$ zhW#>b;-)h)3%!SOF$W7w)kJxE2Pj!11<^Uyw1j@#OPG4l$9iR{4W=6ktP)jU7EPlE z`?V#|7J%GDaSjRb?m~L8UJ*&1nzq#Ocw%CjO0}JML}a5jI3>qkFCf}`)l6PEv{y_SUEd4d zXT;0Xa`^r$fx|*?-NIXW*3t?wulDB3q~Xv?y~v{BWNwC5oDB9Rg0ejziFtP{sCc^x ztR>JW^1JJGpBNc{Y`sJ8gQ(y~ic1jK9mwUin z>cM}!Q8)x!4(}9(ize%GsQ1$)xj^7C(0JC0OS{c+Pw(q4LykZ=%R-YJANG;mq~QI9 zx$HEGL8j*;X1Q{(ezI}$&OBRo+ce$p1|zGTsG!nh<7M3em?~U0K-_IyKtr#VHi)8t zR6U&@!lP5 ztmeWRD38m{dP!6^7Yiq=&sV-F zWTm2UI31OHs|YVk88`hnh`hAo&B;@qCrt0Qm}TH84UM@COCpu7jK zcVlRoj4s#G0Lq|o(Szn}RxeXKNm6l{jV!_<*}4hhd4M`lh1I5rbbz9sG_jVW<7gWx z*hSif$&S(n2jV`?;j|)mPNh4S>P$BSm>h71V@@Gd1U1zj=czLZ=0Uy?*tiNeCRzfo zC!;p6>-*4-_>69N4(LItN1oZ;q^2W$=1lgJ0?RoIYz%x2PQX$R#6h)87+fybK)dt( zMuzE~j)?R2n%s&QW<2!=Yakc4FmvSrfqxW2d;>9>$-v(1wSZc|*Eo`3bZ-tcysQli zq1#f-GPj7-i4wh7P1~82vbA2^gMmk5KJ*p~)8?aEP)}tqFVuoBLK-7h(4G&)KC;B5 zQpN~+9Wrw*#@LuJ+jiArh7B;%Ks!6kjpz7sF@Xhe91uZ*=Wt_;#?!s2N?L@R!nBAO zJX~v7Fog2}C?vq`E+rGwn_U>~5UvFa-K{d1!F!?IgYkY3SUlDcn7LNgreUB8q>FxS zAcV70n}a>kY8B%i4*ZofIMzWZ@wkBw^LBuf1g$KbwKwrqxQ_DaUYvu*Q%vK5(1nef zjyuos1W%}LtDPyzT3i4nT=i>d0x88>gq1GvWFkC7tf7g>E^|o((8FE_VhW0CPWEON zW1{M8*;iSuTr<;LTLB4xfN_-?!_8rVZ-u5Ba7dDfyq9BQx`gY|bYsI9!vG&)t(tGk zXrw-XcPoWt`f%8QmwXR?XdR#j%0Mbh=W_)G3Z%pU=?fT#K{E}{gPZF9$Rv5U*M(Di z4=4h)Qw2)mp*qOfCRWtxIw`r>0^2~@eVF28&)Ylwf!Rsho{C_NpKj-HodoN`{Xxga z#G+?nKwjC5M03Mdt*Q_vY`qWc6#P0QUDvI${XJv%%&NJ@V=ak0ZhaaDA>ju}k{4ZL zH4rpmrf^aktYcX*T8;}$Y-6yeKHRpn8^c3;6Fr6OaWrZsn5W4Yhr87dA5VZwE|{uj zX!qLRJ zTCQZwnNfgjaJ>qZesi#H;F(mPRJ{c-z4yXNO#>F_vRgL=w@&tV6ecFj1FbWY2Rs%4 zzTyc2b;fN(=~GDHRzo!BYP~@?OS2&XYkpMoHQJv|nW2|e!T6UAdNu{g-0aK3kCnugu58zU(b zOTi7gOv96=lkF0i;?O$l2^u)0+F=4T6QC(-SS(E&jZtF;wq(f#hg36bp3B}(%IRkq zT3{_^b)c~6U2eMbKU3S@u_a*{Z+W-raOibak`M`>_ zE$&ad@J8GE6wV@SvsNUs-%J3)t}-wyfNWAg&RE(XM8~f9mNekKIMi0^cXDH3DOrn} z>ck?0Cv!#XjH?(5BAPYFfTJF?>$25ZIEp>27DJJ%rahHw6mx61Xkt{C9S62M9@l6+ z%((hQRhYi0Fe4w2V@@H-vHw3&1pm0zK7ciE2T5 zXifycgrX`NYBQ0sdMs_aUVrQvlfEVuE5yu)z_3DO5YV6sSOjM)h~(XMdA*qeF9f7F zmH9#kZ?Uay#+bNVcbUyldTUQKq0m#{wpOQsS0P7IJxB_PIfH4*D=AXQrn5m3_2+}|hn8l3u_OWwSsM_%Dq6M3!)(?ox88Ip^ z_VaqHl-jUkX%Yeh^)VaP3azM_^u~iRd{9>v*l7YsQ*MGdXz-H6tY@No6G0-j9p5+N zbr>!AIin5XRyV-l6ugZJY=ylM6z;Yx!5K}V%rt?j#^%%dcE5ROxm}mRcJ!zUU#MKF zLvFoi4toO=6$Ev!jhYGT@f}7Uj)9gF5shhp;5IN?#7*05XREr+R;#K2{K0lKniHm_ zK&x!%t?H1-11F#a_lk8fHHJpLf7;AK=%H@eWw&LN{q-DHYTX>~PI7Dl4?}0p6nWP- za%l!a+Tb-pq^tFMxezkW(x8PDPF8*d1tFvg4DY9VwW872l%g|VB-B<5>vq>>JSK8u zhFf3*wFgL_2mY0gVd%gQkb(Hvk>S|Mq+`vBTmbeWuLb)Vq%HkAP^NZc2;KwMdP}CQNtLj^XwZCZ4!q>-X3(-kaa6CW zlYQ)5Q_WdKUO}C?3W;@>K+|fz0K(~dgj+y|-=ubK0wWMGbA$?@voGQ)kc7vRuF+v| zMVWNwvVsiteCW;gx?T<(0TH@fV*LfW8A=#ar<%5_$TM@J@M*l*l-=4?rCA2214*m{ zIUblZol&z>)p|3r2SjaknS@Jj6%6;Y>^m-paWQyJg%@4X6*L6{K6kPhaA*Yf`e?%# z26%PRX-ttxvgrwRC|Ld^=%H&r4LtM z(c48s9Im-tMyFTG!?&J`xK1pEM6KIqb>O-bM2u5^0p5KMMyd(I)ckRsaTKouf*yle zi#-iU1yv49YA^^R1$u0;V~xhRxdt8+Vps=C_yh+O3J4zSzQiRS$7Ono@p>oVczTS4 zeyd+yxFFtiANR$JINfjZHV9=hftFn-vK8<*8uPX|K~j|jXQ<(&!1x0kd1%k|fFoj} z2$YO=c(k03Y;q7lxT#OMcwXHf0a`rV7}%_vph1m+v7s#`rR=WIRu%6dAiNJtqaYe( zqYZ^mfx|x2hTYb5#R+T#AsxM2%K5OFbkd{=f*W>So?Jk?RKsP_9|U0)0sij7mS?%B z2XkG=a&uNF!dg(ki?EKj2A(7-0fxztPp3f1-`gCpV6(=pdeCY$CxxThMbb=%l7eX^ z%f@Z4D?8@gch(57XY@Tt61zZM<(-Ms0b?D~5|d;QAx{{2zEtxah2se4sP+KWB#lsp z1$Y;M!)HW-_9Ki#h5)GA8?lAw6+Kbz__LA4StTcPwGC*J@IXugm~+B|i~%v+OJ8~q z_yA^5HZqx7uZ~bDn}yVd5nQgGZ6sod=^>xMk6?1!S<3eIu^ol7gAc4hTbj0-H6ZVw zXAj((0>ME=0Aq@y+lFnR_B`dhCEl+}1gTQQCCQ`JM3>|AKgkF*Ig)>*OPSXGpYVGCz z)a!&Y<0S-D>(eW6YP!G+)&QGBDipxMO4o|535FBl&2VpNk%7Mtw?@Eh157Yrvpnk< zn*%HSjzUsc_I7rd;gqQEtU9C-un2>rZf`To;1C4=X1%?+55$Lcho;WvR=vPy zz?{v>iNcrYLYX7{Or?yR5hWftJbZ7+T41KW&2K-zdg4|lzz#E3Ay-dLT1tkwE4klx3VOvo<3)>Fx zu$gUZGTYYyK@-5jM)G@W-p=^9YMmqPw6%<+&o}<<08d*04;c)%O#m(GkcExp&o>yx zBW=3oa}yXN*Y!EkaLgfRu9SVuQrtl#Mp?5uV@Pw;1a>+oqF`WiO++H@&n!n6a zo!a!QVZZ9ny9n@0*`8uASapGyQn?{kTRsF<*d2wie$EOD3}dGq89Q@#f}|kAcAAC} z)`^Tc86acKGUX9duzXqvKKU*)noq-s0Iv)aQC-_d1R0TOz-EElivTA?O&=n)cFO3& za77e4#LhIF?GTEk4d?P;Z7qRmaJGcSFkWFu&|Yt35QrJC(Z!s1l>JJvly$oha--{l zn6^QW8KuBIc46D~WI$1tr04`;tXD(6YAuGYkb(Ee){6vXS#j@%6EsJ~FkGx7NwplU zlXSsWV;=&6*g(y}5Fj+vR+up9LE!*Z?G6ivrIwa3H`hfuA_=6P&~}gNru9*>KU3Dd z<`_id3CM<(fH2)m+Ojgm7n%c3KS?LrR=aJK($;n#`y>celD7`SG1-a*ZS>&dXg4Wm z44^95iUhEfO7J!rn4GZ!W)2s@M%jYbG+-kRJPRT?>~8Z1>+y_p+;KeKMuLHD&O;D5 zlXrkqB4U7n2j6Z%XIwX=5CO-U@9+f${74HB_m&s@qCYomb2u3D>k+!dfV;8o&D!Y- zt(r?aT@S$qQB481hxY2rt8f3IS4c~ z*tBo>uHU8G4A309KqEM9<=p|E`}(L-0q8VLvb9dK6;HUW=O+ZwX&|BibY=&*9jhJ~ zpG^zw9zui*l3z%IDjae`07ne{U>6=RvGheRV+qZfzy!|0kfQAmsS*In5sY+KV>%p& z_1<{eSfOBxr@SHT0VdOcfAg!IqNklsI|?6CI2{2820_kU1B9HDD<5=iZG!W(3;PTV zNLi5!VEhsK+x)3t(n^y&y`cA9KI1?JUD&%-ww}tJ0~r{2PCF&>2;TS+KpSlsu=jPQ zusWrHFOk6Fd{-yra0CmZus3RKBoGyZioNP)*lll?0HJlz@-JX z7@8YT0phAF1I=zXhE*7B^8#VaQ@aTSk*PqJT!zd$TrKlR5Z1g#de&eh(+YTBHC}j{ zNK2B@Wx$~)BBq`%o29KJlv#pz5%#+czml1*w-F_BoMIGEizFFqw>*WOXujvGh~|$q z&7G1!^96prDL#X1J0=9P1(w`?wnz>zA>h9qg+Lf1!IXiA51O(wvvt)|HBx1n^K?mo)YD;>B=2i3Kcwws;WJc3poC7%uxq~s-?lOd_tAak%;4K{*D zv%sCyZ0XLbvucc)MXw-eI080AdL(-AJ|f6P0(i)nt<#Ti3k74^drJb zqVP~nAXbi+rK3QL2H&4e>fn4f$CA641BDy$B?Rmko%$GQ+Hk1FsuS*|ugt_IGhiO< zxk){uNwi60bUI6iVRsyc{GtPkL*UunY?k1SSrrJA{o%$;EFtz)Jxxnb?KY%pxfF(7 znBDv6gLNZfeZd8B!Fj<&IKDxvDlx#r5}NZ~(H+S>aafME?#d_UWHw$$7^N)TS_4`;$7M=t*-g+mx$#(mEWov7%0g*TjH06oj{?Oc{rrFE#V$>#r zH7Qsf0;)?}pFIKS$WPOYrsuz>8Q0 zxPa2h7WYoGI6Pq_N#I$=77b2fU_snn{CFad&wElt_UX$py>r(Lo@w(CtFM=hv&`i!YICm8TX<^4kE@KwskLH(z`s*K2^7yrqwWrlZ~c>pR8H+>Pezj#ZQ_J zf!8o=YT+ih?s4Ddq3REw-R(T?3$12O^hh^H9xCOM&vs7z3`c?oymA`l?!w2KKJ}}yxTl3xbC-G4|u?Sy@UUd>gR|&4c&^Z<@UbQ z)AMRS>UrHmAFBQk=zivbyKar(P?;_3Y@09$+rp|ScG9Xj*vZ<|Mo$trVw@x};2I}T ztU9gZXGY}$Fb`>}uVZ;uc`1ixa%9k^)-#a*Hri$-1VO}T*uD+ z0)i8PpFLQC-#2*R&#xS@H2vIx+-KNc8~mI?rE+Dr=SA_6Yb%v7$}_n`ofwTLCocVP z|IxER? z@Z$~xP#UwrFBpLI3qd+q<;gbxevm$H`rGu8i?-{{W<)94tc*r2h$|kB5%2s8lYxa+{w! z)(oVpAblkW4W&W)?n>pdE8RnB^H4f>NKR%cDd%c^emV4W7M^3>wH?s2pRZcrY{`dD9BS{bZF^_O?nKL(8p|L*u^m(^4!|!woLGQg z1#wQCd@vJ#-4zd!b%>5Tfi40rBLdp{2@PP>gc)t64 z-k&2c17D9UJom&lo0f+stYubg(_l?(|6E)-R=K8fymC|JiIv+cPph1)pp{1DnU!Z( z+7+(SuM8{W%C}Uk%B&JrvdXIR{K|J#UQ~HWxBzuKZHv z*DAkR`Q6IzRX$$%ROP>0R!OIU`bMS_Pw;cS>gI_rKwS(V2_~^kO9en!W3kU!2 z;9rg$J#yud<42xw8;?He=*gqRQTk~A=;Y}1Xm<45kG}ZmE04bM=-ZFJ_viYebKuv`oKlMf6=Ee zy8ohozxb+)Z@Cz{_|(Ph#iNVei&q!F=;Bvi{N{__dGT*t{PBxFd+|SBa>*q(UUJ7J zjZ3uDI;h%h1c1%O;mam%ZS!S6=qk%YNmuk6re;%f52?wU7@h zFSjpWU;eVo-*owVFaOBppS}Dm$F4he$FX~k4Uf%_eb=#99eew+-#GRs$Nv6`E3UZh zislv472Xx!dBv-)_}MFd>xxfb@y}OYf8{f-q_2F=mCGxC;L4x6@_kqS(UpIH)m2wL z^{QuIHMuIk>IbfR%T>RA)t_DUPgmb?^<7u9SKC*A$JMXB`dwFl?CQU{=JIQvat(RS zw_LNi=9Sm{{52oB=8M-}e(h7QrLQ%v{q}2Ld+je=`^js+blnZtA=mY<3$J_Wb#J}y zx3ByB^_O1%)a%>V+txS>X;Y~OE#tol6e#!AWj%e;oht@%tZh{bOp6(H>Ji=CzOc<;UE2=t@qyQ-TI1KfA!YCJn@(l`_tQx-A>#-z5NxpzyJ38pM2|+g(pA% z$!~k|A3x>trw~t>J>^HA^1-Kk`Kfn2Re$RDKK0#C{rnw|yMw)BbI056_>-qy^|WU_ zEq&S>pY{h&zvSt})BUIa*wcUS8AqOhKV$Zc*FNJT&=IH(dC-qRAHDP9JDYb#cfRq? zPoBK;Bzdwp`L>gvzU#)jdUw6xu6N({H}I3;3H(Fw2jPFO;?k$rl0rFnt z|Dn%7E%deMA7EEu4E7z^d$7N&K{coLlod-3<<|5k6*v-;cXUuZnJ@w~?C z8lNPN69eL<#BVh(Zc@$fX#P_3pHJ0K<)?n`)ZaeyEIWo zOQeDHTInxjM1H>fLFESJxyoCWe;iW7mkmFqK22S!@7J!;o};}*`?B8BU#{Obf=Ayr z`rYx(V{iPP$)yu*^5)5xzN!69Kk`kVeGdMd7d___-+ae6m*4!`-*WS}1mE(@&%Nfk z#&duEc^5xVf8JZ4_pe6Zc%$(plQmyw-fz*?k6M3aKihtV{RQV9=jG1lruR%=KK;CV zkNd;!7iQ0zy>j+NkM>^U{oTAffBpQ+e&7Eo|A9ac-Vt6FJ}>-*==#WyJ`g`KF5{0T zQ1YVWzVuZ3BkBDapS^i;u=wW1d-CHznEKH2Y0K|fe!94~cx~}dD{b}j<#lCLerWxS z_4ltow_!H_{aY{kR_j~e|NJLC|GS?5>2D*y?G4|4@a^WezyCXK|Be@a$7jE@^PNBa zUB|x5|E~Z2g6a!i{(^t_ZvDI8`@$!@@H=1lneXX*&)Z&f^^39>ee!#s`Mt0IzKg!k z`@RoM#58AH3uT zqaXal4?XLLe){Fty?pcX&-}3P!|!^Y&)$9Cd&cki=r3@;@c#Ec^S$r<#k+p- zr+(>4zx3K)e#|ew>{pKc$_szxfnVMH>X+V^yzh&@=Kk7e-v8Y9f9lsqzy1dwkUsF? z-{61aw|v`dyFP?}=$-!?|KIQYaQ(yY z`bgs=@A^ml(;{P9;l^__om@t?f-Pp|#cSN_>8fA+@z^Ys7oj{EBO{qm<;M$FMWae!ted%H~r;j|0?;buYB=Ee|_Cw zzwU3I_Ba3QZ=e0QAG&{Z|7ZU$`@0AJ-%J1groaEGf2jS#`@b~!(x3ff_>W)t@{9lJ zrhoeBej$uACLtO z9{5z{g_UFAjJoX7W0zfa?3!cX|LdL_k6(N3_19i|{P;E3fzLI^k3aTtH$U#N z$8Wv$Nl&`<){}SMdFM&=?C0Q$W5=$z@`|gkyz=VnufF=~>yLv!S0BIWy6djL?z)>! zJoY&FJodybPrUi&o1b{g?YEyear^BM^mGV1TOWPkeUQ#jb$55duiUQI? zkrsMDsnUX=G)25QXM65<&id~8{r0-+yLa7nzw`bx^JZqAnfIB=JawMo+joF(-_Lhk znH=_J{{ap!@i(sJ&*$)wgNKeD;9N!bPrvFJi1We9^k`{h)5t z*#RR3TRhYvj;mar-P_=qN3FB8G*EnQq-0UncM-n@5}TvBg-!uKctC9WhWc9VjDY6m zYA6GRyF7_vs%Dr&NtIe&`IuFF z=q`xH1BEFD)b&+6wbs?<*v~6~V6d>OCEhBbF^knC5=F9roUb3U*7)@<0r&yGI1Ul2 z^3)DMl4XI>xMOr;s#4$VQOSr|V$Zr?uVRt{KQmx^H5vv#v6%7toHKaG>HNmhG_?|V zM;2xUW*Rs(E=u(`-jQ<@1~~IO*a0ixxxUFa>3)9&HkUxxcDOMr zb#qS|FP?pT`v_T*0Nya3b`;OP<9Uu&oP(psL})v0PiMx8zT{6%(6YNQ=-MCHK5SLk zl`ivqaM;JZo<$i8Ei|--3^EH#loXG3n9X1d{o`1tRc`W#;O0Mt>gd!qKo2Qdy=@)T zWBWjIV+P;^6qPgOo`0Y6W;-KEb8~g{RC3jaxng(K<=+;9Qf+J)x#(VRXWI?K94Z>6 zFf>IIg#q*Lr(3Bd=y;_Y4v&Bb3D<@p1tMCn;|#r;YLAo3_BV*!{YzpfZ0!sL9w;+kX@0X;BQU1VF9kqn^^CcOhLmkvPdwX~h+1*r4ZyPqIQ3av z3~uY{m(JwsiH9Z0n!1rn-NVDZvbiC#0IT+xsX6Tl+0(ajz*#%4TD@~B#*dSj8lbP> zfx;Xzw(|~h7k$V7Vb$W+_o!IPQm%q~jRz((OwJ^z%G#V~KHg3sK$X!pIuIY=H^uh* zq?wfI>Sj;=$#pHi<}Ji22K4~0NU!*vp%SJ|uA4EtWQ=Q|ut0l2uL2e)wp+--$D<%Y4^hyiud-Io=dbthX&R6(>$I zpzS7>aNY~=C5z*zDf%ckBv9)E4fD;sOBT~DG*jj9v3+fzNIlauATNP_ew-O}vnW^w z1+y<0G3P#%c<}SUb+ONSrA-QuwYFv>P*;!(4oO@D0)9kQ>dk2@f3cb<_*C%852nF) z?VBcp{+a@#4h?zU+CHV22TMD{v*4G0R~Mk9aGG&`iWC!CtwErPo@`+1U*k`V2rEvb zYj-*Q@g7~9e=)*Rfw7Grt$#MPxVX3#`0m(YCu&zE7`0Jv`a+5BfU-*AUN!WWBM+9a zTg3fKo1q^?zC}=9lY?P4&JTZpH+%ZkBIxf39=s{=n{9%Zq2lhISe$I>7$U7`({UCd zg8&`x<4K{R^;Iv2<6~MtOBU^7u`#Z(=#rmY{EPTiKt%&c)7f-D2w&~MiFkq^UVPHM z;VkYn!q?T{@EM||^)_Ml+b&Zgm|VhI`dDT4`_<9B1YpPmD?1rORXSjJyC}>J5BSMt z4olyN~8d!&<6nfQ3R9+)rD>kNB{vo8|nC_ku^nBE7b8@!095JUwVU-&bS$ zd*ciVB9*W`?E1icc*MgLaVf?4BW_ILl<}#|B3A&_d|V_tzv2iENw>CFn{Al~W6=iE zCsSnGVhZ6PRdY8E`C{p*%{CI|Z&r+x@q^YjPy>jRtAU{; zJUT8c<{Mw7owP4SJu#E7!8igxr3y`r4x;-Ky(JyPk{w{``Asy zW~9u}t3$&-V$@6A1SF=W?c83Z?^yVh8OFJ}f@z?qXJ!#alr`shJ%}^R8KskPX7y_T-5(QcZGlrId*NpZ+C?IoqDc6-W66ytC~oU1ZYL-0~~ zsttiqeF0{{aIN|qKgNI1{N33bs%M7uz~thoWzt-}tArhP>%}X}XRX>rW{#xjY*mB^ z{Ms2}qL%w`usDt|z7-VwDFqj@4Y5`?3z8&?XY!062=!8z^?9PwZZ4M6@wfpAS!{mw zK+bRxIrXf0#d_PG*RQxtU~9QfbO~y+bZrYVZd+4Zt^?@UGI>}W#_ye01}Ii`kggh^ zHJ)+_k23?TUwPd&HUj&}wSG`@Yp~9}bYgV21JKhdm2feo&d#)OV;PjC%c>r}=9)sG zZt;Nh+^4YRfPR;GD;i_PhD;@1WCJUCZ;*ZM(uXMh!HC7yV0t020GUI`3n?#;C+tD` zbYar*VS(eHks~8v7l*%`>JUHp%-#L6M7+U`=9uuc?ar|JvAg4Prf1f+tYjC0zQ2%tNYNaqhRM75_%3VjslRDBE-DOxU#9T& zTS`uk1r__6{}8mo#Gi3cCSGAr_th_@UKJUd8<2fFF->Zx+jB0wU);v0z zs>ce=Uwt)SLml|>Ri^gOMtq%`*z_9q$Ne(z!w?1EKmF>$|5u~nKVe*r4rUD@?|wUh zp|4m@UUT@>NbG;xj->`;X)UPaOI8DVYt_Trl&XRUY8P&mIh;){ZMMM1$HqFwtnk!( zawMXnPOYbfq2Q(Rq9J!_i+JJc!j%>+RuBPD@5X?dFj;*+LK`U>HciK22G@UbjT?@* zruJs*4;q5v2}CSY@lyY-SXK9LV;aw95{jN;6M4~2t(wN;q?j~0DMd927D){W_-uSp)wbgY zyTofXn~T;wVd+Eczl~H@j1RatohLdJDmE1DT9i$Zf}zXF?UZMGvd%JTrJ4AlTOAcC ztns!TEgQNaRKHbnYQ95){UWf3j`?1{1C_Vw85)@5ZLl6)Znhu5uDaYhe#s>7>;oYS zaoSI=W@|lqW2Lilx>YI54drYHCAZSL4S~%#H7VGrYLF~7s}cYGjLlcxDDJrKy*qRx zQQPP%SknWLB7Yf6OM(UxNz6n@_l}NI3Zm+HD7ZPjIAb?0cA0e0yJd;6_$&6s<%%U8n+L9-EQH_IsFX?;{YBye0>ds1y+Sdo{U zhouA*;(?ENJpl4l9*N zt7f~H6sPF=ej5Xo&I>7+Xo|GO6a{HhVjYKMldNxCUJ+n^tzaNASU7RWNJNuBfeBOh z7>ngyXII*_=~0?Z9^D{SXbZkDrZh{WQZkf3>8@zzbhladppsFnW@xZz)amBy{6b&- zZ}KHv?MIk`C0@#<7?7DQA@ea?rcovf^anpq10-g*+k z3sf!+@|9K)(tr+B4;LmfOMo(%%)IW9M3gSTsW-Qyyt9LK%VxI5z9t<>IyL(#W;R$p z-|n`IPx!82wZ;ecFVE}&y;A4Odh8`uc$8q^0SZ5$8IrWp06*R(+X0-_93CWAPz$z1 zSq%{8)-ev9rhK*&<-dM8+AJhqM`R#8Ez6e26P4t==eXNJyUQ2eniGqYQ+$X9iu!)f_d_I^3^NVj{*; zh^f})oNBB>eUY{5(xNl)p&nXR?u+Fp&sRQtbaMlwrj4c#-|!WS#ZAmv6rEmiJ)#3X z$|!OpcEY)ap|?Aj z^~kShOWTo5E@%XQk;zaQaQ`;!r_rPN@S=3^i$YFBbQBCdTqR4cL<4v+8?CxlLlvSj zSy>+Wb zj}Q1WXAzAQ$x$S*7hzkz7|qZQ#MsWO$!YJYZFi#Jr{vNdGT1)Ixd{8GihZ3W*Ii2U zb1iR>=%##piQ%@HBS+a5mg6aYjL>!fGf|t&j7_-%jLpUz zZ?bp+3CWPIv~gxxVo+z2g4LO>746d4_>BM%pv&FtWJ9+#GQ4f3nO9dP>L-__!pqcB z8Ylr?j18}OzW@W{9G&J`x;#OwW=DaPEdgv!t>Vr$h zpRIcihuV_5`dTm9;c@t5w`?jz@OFT%mxjQvSZK4wH}>YyyNC*OvQO3)fGp}LK-1E} zSE$XD6?XfO2Yj$#cbj!TL*nU$)>B=<@kMaui;^x?lH^Zp*@WXs@)VWygy|Q4*6UDJ z{vO4FeyOxgXv^%ZGzJi&Fga!}ak^_ zc0yy!7LdbgKlGD4x0AG@WvVy2TcMq_wzf2B?(bhfxHmA~OjVIi>p5#~ zXnJ&onHH6rx(w+&?lqj3?yX70+2|&aT%?0;<%lCX11>8sATrcxHg;b}NQI%{lK6TZ zPerQ%a~OPdeZq3 z#zU+G>!J|9*x)c|bK-t)ZpQ1DGD&Ijz$~8@-*EUa<`t|i&;wlHORG=-FR3M5 z%&+GtR>gvh+p_bUFEfnv#0u6-bz&|~<>ccubEMpSP^SkP`1nXqpFTDC(gH;{DX=~% zT9>GOM5hRog#?}@-3e;h((6W?{?G^mkBFM{xSL6%M4styw?#kwtv2W3#^WqNNVT}1 zzEii@qel!}MFRa`K~8en+j%`~a%?Qj6_az9J2M}2#$|WYmWPuHgtm-v&4*8`NA_r`4vCqJ)%Qr&$`k00z z1@o>scsZg{uvnTlIdeeaE5mL{fs&EPhS=Dbz+(D?nr~|$bV|T!UO&0i@4e#@crY#sE6+0wHazQV<-a6-$N9&^po zlHZZOpr$44Sjc3Wduk6;bwWfUmg|fRAeT`~`-@WL8sy~sa&cNp8s@>Tu_gV~Qo2#` zt-!5-cdxr7{5s4#Ly3Kw=sZe3UWYD{Ywl-3P(+IrAqM(LhwE8`;xQ3zN=$2JiZ@xv z3Y!WHgQ_9k`AaW5vh?BtKz8x3%Ze@)F7lq5mWExLieuTkdGIM#g{lrUN%Y1>GJbFz zl@FC6a?5m{A&Px5qBoL{7CPE*YF)QyPdqe9Rx<}Z^k#!VRtOcE7q+0<@-q#>zZO_& zkrNX7lk4rVi(LD}IyW|w%C3&y&J@umQw=xarwm<~4kU`$koCI+?SemGFz7+2^#?qE z^7vwZ7Y80yrumAhhp`&9qk7AzqRe~JU9xBqM;^$W&9(?5laKgEGl6Tce$g7M(g|E?V$yHg`Mm29~c;2e4EAF|V~ z;~P)w2Jgi2;KYdlzN%o*C}=Hf1X{kCKY`4MP#iJ^<^a=PYv1j<q7&FoneDG&6hCa;tDTvM-eDh3azr)9vwRuI02YM+mh3N$>{oPv&DD_)p=ILru_FfT2W+kb4tJ`9BSorXw|6etCf1CERb4Ci zkX4#jVu=3&uAz(}fMjB;8neity_c}3d~g667KZrP;~SK>-^gNdD1TZ8=7Sn_@mnQ{ z>bg_2SlntFgURjN?QnF*-cgQ(^Z(wn%L$Av1Xf-=^Xh2Ut&)mN!P5AuYn1Kb{$<$R zcHJmI)TeTg*HH0pIT;(Tdu%kU%6y{5xK;HN&NUv=g=jWlU8}F^EduzIcjTR}2X2ni z9X{-DJQ$pr*_#D*So_KKlS@>h`;rd+Djzvo&_3E70oSGUcuie$)}FJ^?{!-Weia*>GGIc~N3`m7?^=g%g>|AAmkM?JbWB&)Y@e~BznES= zP2|R78#T5BDvB!bJiZF@=jBJt&EEeZ=7lxG0PAQ@qvfJ(=ApYc7wMa6+RPO0O6A({4le5&8Q;b`xJ!E+-KwA^fwmcv1ClgdF)Y|Me?=oftYpadQd!<% zWZvAjB!mG4E8f23cUM!+WqbGXM^N%32lZJVgFOJ4)TdK!CP~5aN&9;XO>0%Xvb)eF zu%_naG;%JUulMg-cf@&8LH3RB=Xs0p{s_m3+bLg)KvAA9F=^GOhg4=ieBZnm9ocXR zbioL6U`+88?Ti4{(SEL46%~&G-;el9Q^NII=lmf056(p;z#=r0-#`EyO|HY)o1cHr zy>(p9UeC?cJ7{)nKV=n4(7c_qmdSnPL#c-47PZv~Re#gXk0QUom+IK^jzTxCB|weo zYwyTa)3U4Q_a<~WMlrI&mJl}F zER~AJeLoUSCBbxqy3oic-R@n^(GjeBfgvCa|A=a@{Is zV5*RRv~m4oLu&T23*0lWo7uYmjf?9F$BIjy2TDOyVThwopDge%U1oo`Fs^=oYOzcA zREms2LttjRXtGd69Q-`M_xkLTN};gCyta?v2Gd3M{EI)tb52&Ik7B~ZVp9@MXGcGO zH{b@LiL`(&7}7K(CBwM4$fnTqrF}LE0a+iVa)VRDATcE+bt~NU3%B$?s88$bNesMg zb$imE*K;I^6eU2kF1|1ua5`87HA_ud`5kl|8W>~UAXGXe*MPy0h*Pie=jR?g)0 zJ$G_@rQBV~Y_`1*{JJL+C0pz*%o<447h6kCSFN!B^ZVT}K4Uzx;InZtY^qlROVjR{zG}m}b3fA3#AdiQ^ z4akQRN&`+(O8zwD(WdNX5jgLwKgFj!kq-djO6 zxq$qJJ<}|$Z@sM((Dd3)JB->{7BmpG*gA?#y;l8`EA9cjS^+A+;iRGUhn}Alv8UU& z2}4cPf$}qEt|@X-!!u3{?W*kM!=Oewo^>7KY`p?T+D>XvS3pmx&f$d8On^mXH{dp& z%|eQV<)m{{6$dTb-lqMC70qM43CY-)42u-J;VXdpgAFZ}TWGj_el2}+1ysO(d3*oh zn2pV=KX_%5qaj-UPHsc}TjxoW0mtr~$Md%JUf@K4PioiLw<3A&iSm(}T-Chr(+Qhq z!g1{g`YrG)BX#$OJS$W%{KLpt>_Xmhh5q=Kcok8_>NWxGYhzVaZAFN+2g|-epT;rq zXV!JWVMFD{vQ{*DXSIJ}toxkI%*QO_Nu5oQW9{Q>m_oLZSh#3W!P*LwiLa{e_`^PJ6Bc&zTGnC$GptifI2d<}lv3i&>>0a_hRdCwX|y}dT(ieo z0ze_I&%COx{`&>-w-OPtrF5wd?I7ynjFH(p;{{je()2wA{@RzvFi(lwM4d0i_=+X> zju7_R%k8bQ*Tw0(k1lS}5cNl%!Gw|Eg1oLF9}hAqe(&jm2AND=FDpjF1uR1D=<{?@Jjx}eF)RIqFP)hjZ$pC~*tkye!n|BYQb?UQo2?ydluH#l;z?#+~uFU!}{ z)b|jmK7}An%)`EJ#68AYyYjK;~N>)apnC`)XkmzLFP(@CiSw=IgOGH?Ie!1 zcCHEvruFr|`8b7=3{Fp)ub@Jb9se-`D<^nrWAsF7lXuaz3|Qc6;Zd zQBVE#5sxqH0S|2cQ|mvN_`kI#u6c+x2X=;?2&@kBqu6L_nTVd!bMtQ)G-Q+gT##Mt z;AbigX+ZCwuYT_IgTp<5` zj+?^rasEsLk7CO|1QM_A?H0L?ean-spwHPjEFg!gO2gA7RRULx?mZQ)n$a7RFLKK# zn;i~fgx6me_qa5v5^}P@=@w&p(S+Aq`TzqCcw-+=bE!1nG!H4<5{q-LQxukfN4ip$ zlm#hn3UTWSuRX4~tEY>Fe=oYBB-THOP=;p{XMHzd=-_Lupte>6^TN5D*I%Cy2tT=! z#jLesi{d`s8H}b~Vi~W9J(f@<6R)@{Um|RU5W-Hxe+7qGv{&%mtBABNItaHk!v{~0)`%Q8VzThE&&3wwO6{}f!A{OND%jg<+M*VF#}}`!AFq+q zt2&MeS&-{Q{b%`dzk&X{X|@&2Pz{eF4<<8_G+t(S?9{!{Be znD`58;=&62JI?EU3i*4@n9?=l76R?*K%T>Ucr9pp#x?WT$r zP7GIzW-?+{hjaF5-|6lvC3|73$FzTCxZ>_}2|C_O^uMh)RsIj5=x zoVrpE#Jobz=R3|09s=OcNJOQ7ORUz?zBuHRJxrXth?EOEK!9+3b$X(!9^Yn47$vHV zPKH#qQo^cemyBdjM4fyzJS5(#ea90MJ*@cOaJh$bG^{2lKK(r-Za8j6@w*~xGU<8C zD#Mti4_DX-(W=QEyRYz~W`GK(Et&_z5#)^gwR-8Jb!~Y1z0O%hkqBgjt(~Pg|JjEc z4e^Ept|FPar~rLEPOp4Ur9t0UcdpSB1X0Y!XefA~k0O0plN{#A^7x(?%uL>(g`z9k zR(E0!HIOKIE)ir}WOK7t?AvVhO+<0qPIh%dzXXj?vN*4*%5pI7IoN!wIr1gq>RcXWDIkD^jY8kzk>|L-6iv)m?9qkLu z_yqNL!D%Zx_ITC*Zoaqx_ndA=ZVYmx-ti8mj7a7V-+43)>ez$R>Zc04BtS_?8|7sX zreQ+AwQ8@qXr)*yk&<}(YGDv|r!qrE&#FdvG#UU7wX%^tv0i^Ftm}(AkRF41VpB~8 z12b>?B%_K1s=V&lZkKAUOt&79;}#SL`G78{g-e@oR79Pa5CY*r`K)DgQseBy&cmj8 z?5vYXYa#iGxv=pAY!hD5#~~U5(7^#^zN^ic8dTIYlupU!eQd1{gEjDj$;lh+`WkH~ z?{(G#L0j0~rRdLM1)p<+c3*hs*VGI<@=nvx8ENG{nmbP+2=Kw=@wtd*A?uTrcE_q8C*-~V!4!VV^OF*5cAzGDIz-cgI1Obf;#hGnbx!qi3qkW^j9jb#{kF1=$DTzfJ6pDRn0{xy&J{#uM@yfouu+~)n+ftS|N5?PVB-ix zfFe`+o&54o*EqaY_NDaNx09Xy;mPprK^fL=`OD>M`}>~bDw~*K7;)W@JK<|$QfzVpI!aOfUEo%%NrHIFx4&louwBnWt;{$ ze5i`<^ke>nT zf(m?*P}cABEG$|*a0U_csTJ*VFYu0>!I@Ld0=;y3+Y!l#o11!kUDi&G1oi_{`?9*2 zsX@YkjN(#_z*0dz$ExwLX6{ERXvIjiZH_ucn2JJwDR_|?f*}%drf%#$3V3FQdGDj1 z*uYON<%3oh*__iu!9_!J1m(GM|L902&WOFQ4yJDg3(#l5G`21c-KwCC)1Yq2Z`ik- zAln~tr?swOswCtGVBhi}w4qG})$Ih+513)&!aAc_d!Y)4M`eyPemta&nQWM4`LmWS zzz4Vq4F6>XT9l&WdEI|JeX&YabS%r~f@QVkv7nhdk5LQ(aNE5(Wp&921S;`Rm?tE9 zQ_*5@=NuuM@QUcJ#LL$YHB3`GjgRBFVyXQd&3tjw-_Ok7{hS#8D|57sYoB}Tj^Gvhx)zf7O&bnH(S|DFFcrAFI(G;Lu9+LFmyzJUDE3wASWT&}@; z`2kn#eM4f3%U_#L8B?~d@YLT&-@L*HfdGUAIC}fL_y2Vif9>s;GWnz2|EX1e&b9y7 z=i59^Ju@>lVHtk%)n5blueFW~hIAh9sP?E|h>`9!EF>B%cgaNy;-*sp?0x#^nzZUA zt@pf^gE_RP-Hu-Nxg%E`=k*v{ z@n47b*WUiRR_w3A`{!Ecgnx3KXO%sM9V#iy6UU`TN>b4c?-O9naX3v^ddqZ7jS+T4 z_5=4D-I>leDLUmf%_yQFV}@vg%;ngq_K+tZ?F|K9xW+lI7?*f?)Rm*=*6aVuE8QwovJeTSBlWVNw%^t@PnY<5-hW_LVQ2fai zrm`rbTwi%_Wp?r>m+wz5#{E2k1fBVlc{&N1H>&3m+oyl71nO~Xx zoc-jNxh1Bjbb2=f)4saz>)+t*bC~b0AT3+fGu>QKtEVZ_p*lT{D_t<=wtwp~G`MVZ ze^UXOnESY&Y1VeuBh^$PKF;F%3(_O-o1zy_^f$0W8kr09q_uX1I~A4CMz}`$5nWH= zjG(TtWAfQyac#M4x%w+=hZjqwKW`n2JYt=$i7lFy&n=99vkH_BeYxIDde0@XvQ#5Q zi3e<$8+?~}a?M}cdVKU-N86T`lsvnqRg!v?fkmR5F-Oa!Ad$_W(iz@YMK)gybmRib zvGuXh;&il8^5W_GCybu#ts2g_s?<_VMQW3A$OQv)&c^d%d-z+!;>wcV zA@JY`zN%hN?RUygt^#gq`MnV4mZ^g@`iW;(4^qD#8-k_x_tXW3il?^FL1U|-S5xl) zWz0vRYkqS1bCguy{r9X7$uli~ye<1N{)Uu9|Hk^sRhfG4MX;|{?*8O7o==**<`LSE&+P9~w-^9hI zEnVl|wH{#hGxYABM1_^RpwY|$LE9WU%hkl+N>Z;VEH3HO8<&Z(J@vYG?3RdH!b^=g z`YtO3sVAB2%nt_#t!^L9Y)g-l_!!jq%1!N(Wu?)pAK13Yx=*CTVucs-yk7#d9|Ip0 zXOc*yf*2qWC~xB_MuE7H{X9DS&5)_pOD-=Cca-WhZAb&)i3-k%HWk)3vH68D(iRAHI38|1XVE5d4|&^U&Mo|*{iGng2Vsf<^OvVxo`hc*3_aR7Q*jXgbwM2N)j)UfrZ`X z;uY_5zf$Pm4L;HKZ|dn)6}w6p-qh2nAo!lJdWF2B^TW58&e-cdYUXjsZ22s%(tsY)>HUbM<8aUuZ|@&h4UOVr?sm4Ka=0Nk(i#j~z3J={Ib zy?wt@E}iKYD>aUn17Aq}O68=!Al|#a?0R!Q_*Z(OYF^iG=;RB}qrcK)ZM#Fk!}DMK zKZyNG4^Xwc$7oIS!j1n(gRX$aH??=iwvYTuxt9Jhh<~L28O)y;`VVG)t)2gQ&3w9B zfgy~ z&CxoM_w~K~FZQB;U-VxR`UxAwpn4F?HMyqafs2)KLSGZm+o)y8pKxB{E!RO&s;Dbv zUCDKrb^H8FaVWI(X)96>D$y@7%Q;`^E)6J8>>VhP&L?4e!Oi0~dYsdcv-?Sl?3vNp zVq=z@ojkf=Mt>Qp61&$}o}y+&>Ud9TPj9SL8W$_dPcb*n4UHnR8-QWb$d8k&f({-B zZYG|gXoWPIJW*gBknhVv?!and zm<;1bR7G)3)Y;=vH}mW(=TqaIK z$)EB{6#mc*;YW8lKYBT3;LGgmfoT%-E_z`wCy?w{f~PN?Upia(pzQ66hb~(8d|jT! z2%8h->Oj%u;(qn9zWRxG^K?zJA)Y@qTGhz_7SI=)N3LVHb1}4s9C!>?Iu3;>w5!=c z?5Q@}^aPZj-i0QM)jMyVUXEC-@5Mtg%m{cHJ0e)ulDqba@$(&GEaa!XqU{8HdKQZ6VxwzVNa z&K+iaXlgB}Yv}y?oFlfcS>ZLNUtsnED>(TsuP@8djLw@kc=&cQt_V5i%U!j^VB#+6 z`aFg^8LR+5v9kkb6_ecjD_+1Kv^+jSeucv17Zjg7d+{A=FRV0J(BNx<=ZOB2k217pHZBE0PcO<3U$2<@{JI+^j^-wPG$GRRz8Zm_6P|e&}SCx$XKn zjcz}~&Xyx|S*uHG<_Tt5FcyNf`YrEoRJ)JrG}}q->M!Lv4m49Hy(P#UsbI9D#A~x9li>$lOIFYG(_>lGgD~`U$AV2&D*Y!{S@f%F zkLY=1vmx^#sHaq=$!YVpp!eKi++Q zke8EFK+Qb&fc_q#9K@Ck9nYN_@r`0x#2ZcPg|thutHX7TXfom;F~{UfUM-seEZ7Qp z(=y=Slj;9mOO7PNV0to_XfUe^k#PIs6gU}Fgn|NKFaUqExuueR2Sq?JBtiM~he6rW zPZm=GKlZkmvNx-{0;&;9Fj>^;McedC0eedPM-;4NV4=8S!NXRaT8?jNslw;S%x?yN zF7J>nL&~^9`1L3IY~;6;4*U6Qi-WGFHnYgLJE~3bgQ#TtmG_UH z#z0|VC&-Da4pR@)k;`4!NX=3zn2CW2t@%X91*ybFO;y58Bq_CMA-#iN1DnNo)B#wM zyYx5(5GK)D9aBYk5cnJ3=X+?CxnqZoJ*ntn6xm*0&Rw6^AOWyeYX_iIk%&z)b1&XR zo zv5c-Dsb-{1c zh_C_&{O=2<7Refm1t%)ysMJ>2C124hd>k#Ee11XQeG$)uDwZNt!NN58S*)|DNLD;U z_np2Y=ymG>;6pmG-88V1sRo%)*K1#suGmJoL_hDRq3w9Bt{{YF`NOfU%oV865Ho9QDkRx_(Vh+A~BTU z+N68n>C_L5r_;gs`I}p%nQg_^u6FE?H4o0#OvqNeH_bXfpHd@_$ca&)@mAHH!|q83 zH;YzYfH5)mescXLBUsxmgPuSh%89VjkuIoooN}^HAsk|w-8Lj1zgxNsSU#hjqiJO; zYRSXVX%5mB!~qom3mX{B+%uA5pP8%~y2ulGyk5uD(T7MdB)=Wz9HxD?M$4e%VS#;D z*%iZTvC?>)x4-b*w+&+D028R=X5?2*ivB|?niBikV#qZ>T1f1>U!`Np5af4fnc$na z>^11`3nE3S0u3DpSb5|$71weyN_@~=pV{tHIUD;T)#w_HuMbwCqowG@wnU&OHVl`% zS`S!!GwV8Icl=?(ti>2bQMJg|=QAZI(I#7D)_8amNxkUZ8qk`cIQBK2-)7}%rLrds zO#OX4=K8{kU1vGQuAcA3CBJ>H?%z6oAQWcm9darLP_AOCor&8qFWu${lG?f#y)=fD z%YzWqdQ7A*YMMffXjMNY?D%x%yGIGcY)nJATEYH%@?cD9G^sY%x<^NAs$hyrZ`*qx zfJG5OI#gB;QKNlgZebIwZM*jU*)^vhxSj$ zX~*umZ@&&U>+f%e31p>$ zVbJl>4t#aFFG_4CsO-28tZI?HX>4Pi!#Sx8iu6_51LF+sLz#$EnVf)Q7LY*OR6A9h z51CB0FTs32+}v`V8V75PM&AwHyU+iD>p)8c**;{DguiGXjZ@PWNxPR0E%#Esed0a3 z>b)~Z#-7czr{=p`m%POnq3+mD+kE^S=(OZ2}?uZ;=T-o?RT;&xvxzQr@cRKmG)T2s`?g#BB||NXWQ5)_OihPgIg7ccq!<>X zOLZ?oM0|Tn#Il>=5*C7>5LKaad|3ScJAa*)?|TqZ105qY?_KKNePKecW3HSPF2+b9 z>y4yNXHYp_wCn;>LFZ;0%t3@6Cil)#C~`RbC@r#^T5s+>84LZ;f)|-smnaX_O?HvW ziM0ZaCs+dXx*6Y}9v&HK9^OuheuCzBFWmXsXr5eezjj^iPRz?VG72$@0A*bkluyz6P>jwkS;nMNc>d7!H+OyreZ>8z`2U}1(R_b5l9AV=BY+iYzFVp* z-i!(uw-}*oY{nkZ9H8Gbo<*k>G6$F}n;J26YPlcR4yHFQn1!Q2U;zd}AMhbkfv_#^ zsV{?vd?(}!*4ahWai;BJnRv&Zlk81873?+B@IJ95>NH_fS0>@QP7^-4{A-|+d5Q?p zlu=SyEPD6@sr2nYC~(G^W_{py7c!n(w%3hVk4tN8*7 zGkjh&t|Y@NSS|g(a9iKK!4Q5kHcsGd%nzmTXt`Ox1$o@ zG3QS=^-V9CjYU}{ce)BwptfXcg7w|ir+5v&Py5f(>R%?(8w+P-^JbR-d(W)8Ej(O? zYwd(%77Nl%(jsuaib{B(vYiyt1bdJ{Z;LL<@BQwE>u_Gs&bTn^FbmRPkVhHrGq%{Q z1as>~L*?@u*kMUZrS%2_UXxVG(_&ZCHb8ffhWA^FinO#FX<-kHzSH-g>V;5pXf?UV z&%l_1;1^vP^RIJ6y)Yy_fF#z%neb=7Zh%+D;I5Dny}KBDyE$c9uIp zQ(s=DEQRLVV+^n{9hdxq5gq2h@C^y6R9-$Up{m1EV6ejpi-dTXo(Ri7Sb{R*bAwu1 zd~g4mTZ~FnD=Y>X)J5jO}( zXo4VO0CfXW145b*iqZ)^5J0-JMF<8Ay$DK&goGMO=+dN0N$5opkdE|@H}0+HeBb@< z?>qba&e`{#dyfBPO=i~2yt8J_`>uCpt>@{!_s+z@`UO%ttK84)erM6BeMV9S6j%5% z|5%iYHA<<@6g~WO;bWR3y%Ijh37r&0dK>^#Gj?2^u)Cr`JS=q|T!jmf0jkqMJ)!ea zorl}b-b06n8IvcNdVX_%F>WrgK)a^E)h(_3!o*fTi(1ZMZ1KGd*C zkFag~%vXkPLw=F7`tLO}EJa9ILh}s83^uzf!g^|36$x0@LbuZHXJ0qwglw96LUZh- z;5f;GwIPs_sXi}{+W;9wsAfENtIXk*Q0&9?aI ze*4MvJnFHiJ=c~dQ?8bPa(ibu7rIc~Y;TrNysztHG~oQGc1!Q5kO?t5+`h0C2R958 zyCexL2wI`pWF^Epdvq0Ly%f%r<}}Wk7TPS$n|N#vUsy2hlV1rjXl1A1G4XARvC*QE zY0%UBBvE8PExQq6*bcRc&n9+Ol)QQLdHbZDsD&OTF$CQrWn2 zw4{{_v6;0BYk&+jEIozTM!9PWq_;1O$HTi=p}rS~=PzzW?@yXlm6ZA}wZWkHxKn)< zl23`HMc(dLkxX1O?03@!BFdj4$=B?~dN-g_@!1xleau`3s(j)I3P@~N{%vR_@k-qBUksZ#CdIeH56VY6`!B9Qx~TfXqR&0N24pV3cX;XOps@fg@HAUWZ^?)av{K}N%^r)nSsCVJFpvbMaa5|veLWi2p zT}coNSWTM`$9gS{UHH6@)?Z!-_NZi%eZZ#CFRDw#o$t0I0C9>31 zUHxt<4^|0j-8GIZ9=Z+%_0KIB4D~gU_yy;%|*`6WT&*VC7B`!mhp=;?&9m9<~$= zI5u~`S5LHmEGb%843UN}obdGTe3&>x3qh)mCR^NTbCX5qEjf-VFZm^`S$YsF#s^Le zY-C4TH!EHtQ1;apObsfAA)214*}V@$3SBwnMbm?MRMIR`4CbU?;VJJub89tT;qkV2 zYRZP#hSjD|o2XLW4MPoNoEF!yf|^(Q5feEqBZhWEpERa+Gx$I8k;&*{i8+&m0*#Kv z(c8+K4}S!ND&Lj2r`#4_C+|x9-28i-{NK(j9<}k)G{?AvIjupi(2X?^nY-s{vC{eE zs`1`>*JWJuiwr{!(?c)f=Y1HQrd2Y42h#IB>S06%f%)AX=DihmaXv?4I%NiKK zG^EV1YnU2}TKX1!`g3zC#uJtAtxFZ?Trh74E++^F-*fU)p|z~`6fw>~3qQG!PcQJP ze!%A4i+^Flr=K`>$?w4CB)JV%%A`-PIho*sWq9xErz!t=;JeKt_#QTl(STfz`JSvhSVG-l?o>5NX{=h@PYur zKE@`Ytga+vn1F{y431(4>4ix{-?iBdF&Pk^%+TkEj2sB>Q#6;g0&pY0xflhkHJMx~ zg_AbUoTv7HPMG;AT)_yLy6EQR1WjeG%QER_mStv^Wz0D>ve97<(2&fhlNrOy zD=_xUD#LO}Vxp{B+|8IKi`qyWQOTKJuA~Q6|2RyqJ~GusOj$*_>4F;%Qk$n|*lwge zRx|#R>cdGgYL2~pww2k_aqrL1TEA-^_y|?ehM%v$U+2m0%uO{K5P!JAa95ly$gaTE zSaWUH;I+rXbZ(0bIz;JBLSNn5?yot0r9O@2m0MS`Q!)9mtIHXf)#171byi@#x13}b zRY7nwziy5dTog?4(_^5nRDEUWbbh`w3^KUACPCd;_2Xsj7FjE3rl7}B8J^sSCcCvF z)(5O|YtT&XI~ndRA9brlVsPhg@Y?f%Pk&ITrnmEK?3ECKTWVY{uz@7cp-ik2hz13- z&AKENB0iT4@vB-34dg^A&$}`)=i@0%Kz?pi#bkRSDdbHNnJVkUE>H$_G?B^O8X65) zo0E_d+_?i<;W2z{LEQik>hF*>T!fP$X2+_QUIi2PVR$#yd~|qE+5~!TJ)lNwUZNsm z5%q`;2IPhmFZr!S1Z@{BB5I3$A}k#4N=jmCZ=AnSDJJfpc2aij0c{ld#dlmps)tK4h1deAP}a?OBPL?w1 zfD1F0X(p1-|IFHnKq2=+IYCuZG6r0Ec~ z>*PJv>o(=r7cXpyXU7*IO41SSfQfWu3U79JgV)VnZa42&HiN_3?qVH2(rwNhRIy3@iRU1_dp6t7v7Idt%FcYBH0 zc6+h@-g!ZvpW5mW%W@v5T3GoV#ZgC-D?(5(=Hh_%#FG@}h6uwKU)r2g{R2wWS zp3OX808ip*vyJF_G^iA9NZPn2qM6gfrq?=!>wqjn@i9b}O_dwiVMx6WJ--~PU?U_n z!|Ni=Bx#k9)cKC;3|u!_Qh?VyJ)0eQKiA02oJkQ}=%^5tDk{wO+(UL{X#%3KUNiCAj%= z^QP)pX&0jofYdXGdk4 zQ9N&r`k1}p9X^spnGkNzux-PPf<0rU@xqt#l-9b+!`T}QeEN4P#yW$lEgGoum+F+{ zOnr_Hrgj|tjgFL)Ne2Kq17$p6#{2laaQEo^f{lL9&@akpk(Ly#MS+P;(ii)%(ulXQ zcRJDH@t+fg@)O#cBVCRW?&WM6gtJ4xkmO@}ol8eVof8TaN29KjizT{}Q;b%l?iJ5P z#z@kk1QTW4wVsFEQ{yx0Eb{JgJ^!(|s?34g<|#e*pBrW8KSM-Js0@_O6~9mL7Qx0x@7WI?jHN`xW;B z8#+{KVs_UnExi&DsZ`&|JJU=x4rR{u^rkY}GcYc-+vt-}$w#103on9%N39*-CYgIl1gKnV3#T*eWZY z5xl4weu%MiPDz4ak$?F@e#t3WuuDzkseZW2+sHdl*8C$rmFZAEs@7>FT!*>{#F~P7 z#O<2afprAD+|+Kp8Tzy{Z3AH<9VXuroc7E`g*V51K-#dXUtYkltF-Warx;l%@%{OL zu~qCms9h@y&B|WV4@L|zzVZ88GykdOV+~Gwp(|DHYVW=;95Q2I_+Em*n)JPxiILuQ z5k1!NUa|^_N9-Xz4UKy(rcv6vZND}PD^v=NhhOb#t*g(4-^+L7n3}Lq&`myo3p261 z0V`~vDk-OjC@al3k3hY|uH?N_MtQ4iMA>P9>e7M|XD_@k-c8>Nds1MVG1Ky7E;W(uHKW){(00tj?&bpN3t?r<4}>^y%ofXX9_{Y;dNfW5%OZ zlhohwWvV7HN9u=>F9qU57M@(*u13gXZzo!^cs~?PYU=X>?3Y$6^pAxi%aSw^qZ$2+B|;Dhs+~-hI4}eC3t}garZ?|mG$1R zEle>XIonf-I~*?%l7a*6!wR}L$&!nR*k9MOSjZ>svRy;&dQ`|C}-|hhIm4Qz@tGMsPynY?1O%+Tjp+=12t|*cp>um(`65nC#>u|ezYDp z${c&)k@%eLdY2mjtD%qp<;++pI|~%4)B|`lgbMfcvQ0~U8XFk+&eY6KX-LUbCu{NC zrHXk+9kBU&=bdJc3%cn7^~^diOmcWvm24b`yR?Lm2q~u4QGY)D)kRqeMmw(OW#-b^ z5o>CG?RwhBugJkno0gyK2)D`_csKnL%vZe}TW`}7%++K^#*qkp`7(wwI$)i-+P4qF z%1M-tNW-?mHac)`SJk1es)s$vZcF!Nrs-%htXjvhL70kH0QjUz&xw>i&9%s_@Xo6J zN&uO)cMlG*c1Zg4biHa{ZD-AM|HHoa_Di|STtES?_=j4iW=b>;*-ns?v*i@wL65xu7D zcKCj(_m73M;y+Hr_d~yF_Iq=1Kb!T_TCIPLZ-oiH-Y%H3J1lA`yX}_RoI8W!3L%|_ ze+m^A0Q%{B8?8l)Ipq*iy-N$#K<70`VcBtgr56KEa$Xx2tY@a4-Jb8>gze|0&3%tO zen2Vw+n@@^7JTw4TM=Ten}bAP@`Uw3JmCr;EH7(AeMr7bi6P}ycDbaDTvRV`sZbj( zQMHZ2SMi8HNG#GVYVW~hKTkk-Bx7OkotzV~NcSvKN!w8;9WRR=I*4&0I{-QJ06%S} zb~!S0QdWLq9^iWa^jmeG<@6KZfa1(=ft!|NW+ld_@2rL?axc_tH_Ae&lbrMNVI$kI ztlZae2<DH{883Z)t-R`6rCkkkIqE@|bMuqqAhfWH z9Q4T-1#=i|*&0<=r#d6sX;#Z#y~uWNV{l*SP5*4xlNid2tAc`e7=P~*3(yILhC`OWV-b=-W}HL?jKr~|Kk+F=BsA%{G`28>FSZlv>NP+cP& zs)nTdRrrhwXid?rHN?X>b~b4VlUC|b2+Oby&|#!IO`so<&_{H4!Nu@6*ZZsUvY9fr>r@GEEGy{rYJmt7*x zKwZS_qwucAT5C0|K)a2gilUXf&d&sr5(;GI;)4C-hn(T+Y|w!=oAS=efN9NUJba;H zb;$TduRv4|`b7E$)u5x5tfxPjTOn0+BGMUJLi%L+Ok!xLzH*8)0j&USRx~!5#q>;= zbXDdHOsVkJ-jZc52!=I%dfn40XBg}ap}GEQE~rnFW8_$P^lkoHa6D2QvwxKv*ryfRaJ`8A~9MvQVR zE3Q~L{2C-HQ;BLCUchooe^@99&Z^aSuGODLY~FCRw`e1}T_&knPo-&cOQuI94gQo`M{K&)WbXM(O8Bs79$rC zWq}q6$7VFa^u7!;Y`Mr5)L2BoDw8HOP-%vG)BI+g)3vN7vkxokhrq;nHxAFVqNq=r zCEc{TrWB+0vmje`il4dP?`Qohept1QN2hL7jSX)Xv*kh7_V)d4_C-etj!gS+e0%L* zzb#(Fikk$@9NlxB-WB$J(6#=(5&s@&gu@4VLrhk8Yfs0qn`+xwe$rue)SFatE(^xD zK}N+nX+0<9)AOfwwm5FS77ov!hjdUEN?m?wf|Aj0x3)3;G;@5GS9ohCh62BMsbc)g zj?{6n9GX@5wGNn5p+(3?Df(quVF>yk-u(T zLCq8qm$Jivc|)SPE`Z;BBk09FOIQwxE2rwLeBmcx-`p18{CO zRi+$C7+mtb$_(U}FATU?R0Q0H+M6qHnfitU1QCRUu>*<4hFhU zAP!$LF08RnQ(9uyw|4BlLijRLvES&3Q#$&Y|IKpPb>JbI!~~&u)c(LwL5E3NDNEmI7oFA>BDgIAdH96$2t-+1oXt(jB*= z3ShutK5(>&m6~2@iv;j1!*SrrQF;EkNDK3)83L1Wa&1=hV)$@<)o?}WuM8t~CEhQv zjc<=CF|rLhrk4&*lcY#J>4czgB|;L~C~&+U=;0E3hmOjV)OvAH#C#k=fj4qZ#iR+d zN5uY)IFB+NG&r}`ys=>+jIhs64GRf#6HmTjuBEe7ta5d-SWyS=tUlFsWc-JB{XcQ5 z7lSMX<{CrS^149$hrxXGue{E$ri|!ebQ~0VXQGuXa(_}-vs*r|mfIXSj+>!x=zl<0 zp%2|>-b^QIudkK$eAudup$NzBVGU=xosKFy-_9dc=-XfB26oH6o}YCi)~xuaKfXQK zvxxBje8yyoWVtTwMgY}uv$pOxkk+hA{9G0_mwk(gBgIGC&&1MSkU1bK?9aZE4Nfk7 z-A5ZC%A9k7U*F*=&rclv_DepF~oE8mSy-}h5cHIg5#tZX42Ob?ol{&x6|PL z9C8sBA9z%2^}XPZ$MCG9*N30&{Atgh{`vDc`XA6Qu`DRNsZy%TEQF#X%(TKDu!5bV zP>pB9&jZfMn0qxh5Js(tHu@M6s#`rUFdk3HeBcd|z$TYA$JkUp7^o=c=mnTgTxF}% zlKg}_ZHBsdD&lmg@SCMDP3?2>pj#p&2W%l#Pq$x@V! zlhWzF4cvUFI^pyL>ObZQcWQ$exJkX?@m3i&Mnv!^^N#JH6~`=I!NYOqExs}oe*Wdr zdpVY+TgV_z77Ij=CVJok98>z@NxQ@9&raioR!>r%XbH_I9LXPS8 zjbX`-ywX?@jC}iIpJLS2DI1%#@vGKp`1r%9#*^H9xgZ+N1n|M~|LZXgmf&V=>jo61 z2-`J872Sgn5}O~VM7B8yjMwYR01p91{&7G)?Eg1k1avD@^cL24XiaOY(kw5$uj@Bz zGk;Px(qTUYCrgOE`6D9wr+`T`de)(SS!RiNiQYL`ofPrEy+oC5`WB1+`PR75#;7uty_-ALdM{pX*rt;J0rFT+E;?Z#D@nPYmEB3(C7N=?SHz0~J{x(P z?Y{izFW4*3YbPW|ukz%V(+p<@)$9m(*YRr=)58$ths2rK9G@$K*)|kqMb>22o=gJj z7A!qdb)XXP@b$&%l=3%f6u+bg^X$mo+xyB&j=bwzM})ue4m#N}%>_L)sED*%?`J*{ zP!LIfg@6SthiWh5XLf%3?X>)ckoiyzNB;a>R>dzh1&;{AK9jJAtD}Iqda6`Vj)Ebn z2SiOFbW}{X){WFxPP_QY>fe&1;lv}NIq*VOGuEjp5=Jrgy!HxGxVTo7Y)SHm3{XFb z>P9dW?Ft&8(lpgB4rACvf=^*`9J2SjUi}ZZ>0k3yDxFZm(--@dJQioZ9N;**a5CVg z)ll7mST}m9Or(Brjf78vl^T+3x)A*_O)qy}mhqj}{`>7mj@T3v`kJS@Swrih z&teE;q^-<6L)prlM&qr=jcXt0JNB0{rWyXJ^dmR+-IinSPDr1MJJeiNHHpp#X7{0wKjnqm`eT-saUb!d5IV9y0^v1c|o$8qCOYo9Y4Rgluw;8lGi}CVFa_!~>a3uJ*MOO);+AAsf)+N_d!`zM zd`@9Eyhp0pj72iWT2oy|U{3{5T> zaix&A_%i*eK_V1>N@&1y08=sE$jaO6lb4yS9ME~5MimQa9)~qxC{i+t2_FtBdsXV_ zStWpV=Zq-7JX2sE9?<%12eO3r>lRCna=#J>^`txnA@9jbsaCx_xu#tuA;%RD|oTQPiTwOq~~f#BJblfAuL9qn;S!GG$ek6`%tUhB2SN`?*3i+tRiom`E)DRE^O z%-zKsL3Z7EGAlL5xW0JC-_ko`W`Dv5?ke@7JjqTr*f+LNOt!JrJ## zG)3<*?Z0CY@e`~eiEr0tHDW(l0UZ;(Xr%@GW?LtAMQL}o+sa~sh0gi9NIj0$*asx`-|h5Kg0orLq}hW4T5*M z82=Cq+D{Jr*!_q6FLIc&Zx_eFOoJc+_zyu8ytTbvR9GxmGgR&Kkg~R4@UWZZ5U(?o zroHv}wV=}iRQoti*)oR+8Bc~_eMhS5>FCy$LyVUm&jRZ}hujmRyY+^Sn_WNg%d0@mBoG&MM857660M51hy?^C7ugpTEMPhMPtnWg!kFPUS zdxvzb)muM!?Hug8jOUT7vFeYnT#(3Puql1|J308HRyJ&G*}^Bzb4SWzM8DC7H*oz_ z`e}lnUhrT2K`^PcE3Pi72XPwqx#9tfSrLCkSWYpF1qT`)o@qUL(GPfy%YtF9`hWJS IvtRrF7we|8JOBUy literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch25/25-1.jpg b/docs/vol1/image/ch25/25-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e0a03ed4b9051c8c69a15c8ef0e69c675b678d9 GIT binary patch literal 39820 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%0D3BssTL1u@{X*CD+ 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 H`8@bvNv@r! literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch28/28-1.jpg b/docs/vol1/image/ch28/28-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..66717122dcd8ae9c1c2d9958f6c983e20301bba9 GIT binary patch literal 88698 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch29/29-1.jpg b/docs/vol1/image/ch29/29-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..33d7dc5639a063194756986124c3dae610881a78 GIT binary patch literal 39157 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 J9tt=e{$FQGeB1y4 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch30/30-1.jpg b/docs/vol1/image/ch30/30-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dd46b293590b4124eaf2f5417541e290ef0bc928 GIT binary patch literal 46786 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 EFMNTfhX4Qo literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch30/30-2.jpg b/docs/vol1/image/ch30/30-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b1cf1776ec01d514b2a3bcfad2eef98fcde5899 GIT binary patch literal 31382 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch30/30-3.jpg b/docs/vol1/image/ch30/30-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce8f226380249a6825e1a6753df47edaba83f401 GIT binary patch literal 59133 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

Qt-*qWvvVQj&5j9x#nx(Z-Mki(oDU1T9M?k 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

*98=IfZB+n#hz_f6T-HZv? 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/index.xhtml b/docs/vol1/index.xhtml new file mode 100755 index 0000000..8b71683 --- /dev/null +++ b/docs/vol1/index.xhtml @@ -0,0 +1,59 @@ + + + + + +Matz Essays Volume 1 + + + + +

Matz Essays Volume 1

+ + +
+

はじめに

+

1999〜2003

+

第1章 言語にとって美とは何か?: Rubyにみるスクリプト言語の実装技法

+

第2章 Free Language Report: オブジェクト指向スクリプト言語Ruby

+

第3章 UNIX系OS間の移植性について

+

第4章 連載 スクリプト言語: スクリプト言語の歴史

+

第5章 特集 開発ツールをもっと便利に使おう: 最強の開発環境を求めて: Ruby最古のユーザーとしての開発環境

+

第6章 初等Ruby講座: はじめの一歩

+

第7章 初等Ruby講座: 条件判断とループ

+

第8章 初等Ruby講座: オブジェクトと変数

+

第9章 初等Ruby講座: 配列

+

第10章 初等Ruby講座: ハッシュ(または連想配列)

+

第11章 初等Ruby講座: 文字列の操作

+

第12章 初等Ruby講座: パターンマッチ

+

第13章 初等Ruby講座: 入出力

+

第14章 初等Ruby講座: 数と電卓

+

第15章 初等Ruby講座: CGI

+

第16章 初等Ruby講座: Rubyで作るCGI

+

第17章 初等Ruby講座: CGIの道具箱

+

第18章 初等Ruby講座: ファイル処理

+

第19章 初等Ruby講座: ネットワークプログラミング

+

第20章 初等Ruby講座: 番外編: Rubyカンファレンスレポート

+

第21章 初等Ruby講座: プロセスとフォーク

+

第22章 初等Ruby講座: スレッド(その1)

+

第23章 初等Ruby講座: スレッド(その2)

+

第24章 初等Ruby講座: データの保存

+

第25章 初等Ruby講座: XMLとYAML

+

第26章 初等Ruby講座: XMLとYAML(その2)

+

第27章 初等Ruby講座: エクストリーム・プログラミング

+

第28章 初等Ruby講座: 独習Ruby

+

第29章 初等Ruby講座: 再入門オブジェクト指向

+

第30章 初等Ruby講座: 最終回: ここからのRuby

+

初出一覧

+

索引

+

奥付

+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-001.xhtml b/docs/vol1/xhtml/p-001.xhtml new file mode 100755 index 0000000..30941db --- /dev/null +++ b/docs/vol1/xhtml/p-001.xhtml @@ -0,0 +1,28 @@ + + + + + +Volume 1 + + + + +

Matz Essays Volume 1

+ + +
+ +

1999〜2003

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-002.xhtml b/docs/vol1/xhtml/p-002.xhtml new file mode 100755 index 0000000..71db8fe --- /dev/null +++ b/docs/vol1/xhtml/p-002.xhtml @@ -0,0 +1,508 @@ + + + + + +第1章 Rubyにみるスクリプト言語の実装技法 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay1 +
+

+言語にとって美とはなにか?
+Rubyにみるスクリプト言語の
実装技法 +

+
+

[TransTECH, 1999年8月号]

+
+

『ドクター・ドブズ・ジャーナル日本版』から改装された雑誌『TransTECH』1999年8月号の大特集「言語にとって美とはなにか?」に掲載された原稿です。掲載誌は今でも記念として私の本棚を飾っていますが、「美とはなにか」という大げさなタイトルの割に、この特集の中で「言語の美」を直接扱った記事は、私のものを含めて存在しなかったように思います。『TransTECH』はなかなか骨太な雑誌で、記事の内容も好みのものが多かったのですが、残念ながら翌年2000年4月号で休刊しています。本家『Dr. Dobb’s Journal』も休刊してしまうし、紙の雑誌は受難ですね。

+

記事の内容としては1999年当時のRubyの実装や言語実装に関するテクニックを解説しています。YARV仮想マシンが導入される1.8以前を対象とした解説ではありますが(当時のバージョンは1.2)、20年以上経った現在でも有効な内容が多いと思います。言語処理系を作りたい人の参考になるかもしれません。でも、今だったらRuby 1.8のようなtree walking interpreterではなくてVMを実装することをお勧めします。当時はまだ20世紀で、その頃はtree walkingは珍しくなかったんですけどねえ。Ruby自身は本文中「やらないと思っている」と書いた「VM」「世代別GC」や「JITコンパイラ」なども実装していて、隔世の感があります。

+

それから、他の記事もそうですが、記事中のリンクが、Ruby自身のものを含めて切れているのがインターネット時代にはかなさを感じます。むしろデジタルデータのほうが消滅しやすいですね。ただ、「GC FAQ」だけは2024年現在も健在ですばらしいと思います。

+
+
+

はじめに

+
+

最近のコンピュータの普及に従ってプログラミング人口はますます増加しています。ほとんどの場合プログラミングには何らかのプログラミング言語を使うことになります。それらの言語の中にはCやJava, Pascalのようなメジャーなものから、各種アプリケーションに組み込みのいわゆるマクロ言語や簡易言語と呼ばれるものまでさまざまなものがあります。

+
+

このようにプログラマーとは切っても切れない関係のプログラミング言語も、実際にその処理系を実装したことのある人はそれほど多くはありません。自分のプログラミング言語を設計したことがある人はもっと少ないでしょう。

+

しかし、コンピュータがこの世に登場してからこのかた数多くのプログラミング言語が設計されました。その中には世の人々にほとんど知られることなく衰退してしまったものも数知れずあります。The Language List <http://cuiwww.unige.ch/langlist> はそのようなプログラミング言語を集めたカタログですが、ここに収録されているある程度知られた言語に限っても2400くらいあります。知られていない言語の数がいったいどのくらいになるのかとても想像がつきません。

+

なぜこのように数多くのプログラミング言語が存在するのでしょうか? 確かな理由は推測するしかありませんが、プログラミング言語の設計と実装にはプログラマーを引きつける「何か」があるのは確かです。私自身がその魅力に取りつかれた人間の一人ですから、間違いありません。

+

プログラミング言語の設計と実装はある意味でソフトウェア工学の総決算ともいえます。少し考えただけでも表1.1のような分野を包含しています。

+
+

表1.1●ソフトウェア工学の総決算

+ + + + + + + + + + + + + + + + + + + + + + + + + +
人間工学モデルとアルゴリズムの記法
言語理論コンパイラ設計、最適化
アルゴリズム文字列処理、記号処理、数値処理
データ構造リスト、配列、ハッシュ
OSインターフェイスシステムコール、ネットワーク、動的リンク
高速化アルゴリズムの選択、チューンアップ
+
+

私の経験からいうとおもちゃのような言語を実装するだけでも相当いろいろ考えることがあり、これほど楽しいプロジェクトはなかなかないと思います。

+

一方、機能・性能の面から「使いものになる」インタプリタを作るにはただ楽しいだけでは済まないいろいろな工夫が必要になります。この記事ではプログラミング言語の設計者・実装者の立場から、オブジェクト指向スクリプト言語であるRubyの実装を例にしながら、プログラミング言語の実装技法を解説します。

+
+
+

Rubyとは

+
+

本題に入る前に、Rubyについてご存じない方もいらっしゃるでしょうから、このオブジェクト指向スクリプト言語についてひととおり紹介しておきましょう。

+

Rubyは、私「まつもと ゆきひろ」によって設計・開発されたスクリプト言語です。Rubyは1993年から開発が始まりました。ライバルであるPerlやPythonよりもやや若い言語です。実際、Perl(真珠は6月の誕生石)を意識して、Ruby(ルビーは7月の誕生石)と名付けられています。

+

その主要な特徴は、

+ +

などがあります。RubyはPerlが使えるような分野にはほとんど適用できます。具体的にはテキスト処理、CGIなどのWWWプログラミング、システム管理、ネットワークプログラミング、GUIプログラミングなどです。しかも、Perlよりもプログラムが暗号のようになりにくい傾向があるので、まだまだマイナーであることを除けば、Perlの代替として十分機能します。

+

しかし、作者の目から見るとこの言語は単なるスクリプト言語ではありません。というのも、Rubyはオブジェクト指向とプログラミング言語に魅せられたプログラマーの理想の追求の結果だからです。やや大げさですが。

+

私はいわゆる簡易言語が大嫌いです。簡易言語の「簡易」とは「簡単に使える言語」ではなく、「簡単に作れる言語」を意味しています。要するに言語仕様における手抜きです。言語仕様とはプログラミング言語の使いやすさを決める最も重要な要素です。Rubyはある意味理想の追求ですから、このような部分においては妥協できません。もっとも、本質に関係ない部分では結構手抜きがあるのですが。

+

さて、本稿の主題は言語処理系の実装についてですから、これ以上Ruby言語そのものについては解説しません。参考までにRubyによる簡単なプログラムのいくつかをリスト1.1に示しておきます。

+
+

リスト1.1●Rubyのサンプルプログラム

+
# 由緒正しい Hello World.
+print "Hello World\n"
+
+# 入力ファイルの"From "を含む行を印刷する
+while line = gets()
+  if line =~ /^From /
+    print line
+  end
+end
+
+# 引数で指定したファイル名を小文字にそろえる
+ARGV.each {|path| File.rename(path, path.downcase)}
+
+# TkによるGUI
+require 'tk'
+TkButton.new(nil, 'text'=>'hello', 'command'=>'exit').pack
+Tk.mainloop
+
+
+ +

より詳しくはRubyホームページ <http://www.netlab.co.jp/ruby/jp> を参照してください。

+
+
+

性能向上の原則

+
+

さて、実装の話に移る前にプログラムの性能を向上させる場合一般に適用できる原則について紹介しておきます。

+

プログラムの性能にはいくつかの種類があります。空間効率(少ないメモリで動作する)、実行効率(処理が速く完了する)、操作性(使いやすい)、開発効率(プログラムが速く完成する)などがあります。が、プログラムの性能というと普通は実行効率(まれに空間効率)を意味するでしょう。

+

プログラムの実行効率を向上させるにはやみくもにプログラムをいじってもあまり効果がありません。むしろバグを増やすのに貢献するのみです。狙いを定めて対応する必要があるのです。

+

プログラムの性能の問題はほとんどの場合はプログラム全体から見れば小さな部分に存在しています。よく80 : 20則あるいは90 : 10則と呼ばれるのですが、プログラムの実行時間の8割はプログラム全体の2割のコードで消費されている(あるいは9割を1割で消費している)ことが多いという経験則が知られています。性能の改善にはこのようなボトルネックの部分を見つけて対処することが肝心です。

+

プログラムのある部分を苦労して改善して半分の時間で処理が終了するように効率化したとしても、その部分が全体の実行時間の2%しか消費していなかったら、プログラム全体としては1%、ほとんど誤差のレベルでしか実行効率が改善しません。これでは苦労するだけ無駄です。

+

ですから、実行効率の改善を図る前には必ずどこがボトルネックであるのか分析する必要があります。このような分析を「プロファイルを取る」といいます。プロファイルを取るツールをプロファイラといいます。

+

UNIXでは伝統的にprofgprofというプロファイラが使えます。このツールはどの関数が実行中に何回呼ばれて、それぞれの消費時間はどのくらいであったかを測定します。商用のツールになりますが、日本ラショナルのQuantifyはより細かく行単位でボトルネックの検査ができる優れたツールです。

+

ボトルネックを見つけると今度は実際の対策にかかるわけですが、その場合には以下の優先順位で対応すべきです。

+
    +
  1. アルゴリズムの改善
    +もっと効率のよいアルゴリズムを選択する。最も有効な対策。これに手を付けないで小手先の対応は意味がない。

  2. +
  3. データ構造の改善
    +たとえばデータをヒープに持つか、スタックに持つかとか、無駄なデータを省くとか一本化するとか。

  4. +
  5. 小手先の改善
    +関数のインライン展開とか、ループの展開や置き換えなど。

  6. +
+

決して逆の順序で行ってはいけません。というのも、小手先の改善では数割、うまくいっても数倍しか改善できない場合がほとんどですが、アルゴリズムを変える場合には、ときには100倍以上の劇的な改善が可能な場合もあるからです。

+
+

プログラミング言語における型

+

プログラミング言語の性質を決める重要な要素に型があります。プログラミング言語における型には大きく分けると以下の2種類があります。

+
    +
  • 静的な型

  • +
  • 動的な型

  • +
+

静的な型とはプログラムの字面上に登場する型です。たとえばCプログラムの変数宣言、

+
+
int i
+
+

iという変数がint(整数)型であることを示しています。int型の変数は整数データの格納場所になります。静的な型は変数だけでなく式にも適用されます。

+

動的な型とはプログラムの字面には登場せず、実行時に決まる「値の型」です。Cにはこのような概念は(言語仕様としては)登場しないのですが、たとえばJavaには、

+
+
Object obj = new String;
+
+

のように変数の型とは違う「オブジェクトの型」が存在します。上の例では変数の型はObjectであり、その変数の値の型はStringです。変数objの型(静的な型)を見ただけでは実際にその変数の値の型はわかりません。

+

プログラミング言語をこの型の観点から分類すると以下のようになります。

+
    +
  • 型のない言語     AWK, BCPL, アセンブラ
  • +
  • 静的な型のみの言語  C, Pascal
  • +
  • 両方ある言語     Java, Eiffel, Perl
  • +
  • 動的な型のみの言語  Lisp, Smalltalk, Ruby
  • +
+

静的な型のある言語は型のチェックをコンパイル時に行うことができるので、エラー検出が早いタイミングでできることと、型情報を使ってプログラム解析をより詳細に行うことができる(それによってより最適化できる)ことが利点です。

+

一方、動的な型のみの言語はエラー検出が遅れるというデメリットはありますが、変数の型を厳密に考えなくても気軽にプログラミングできる、オブジェクトに対する扱いに柔軟性が高いという利点があります。

+
+
+
+ +

Rubyの実装

+
+

さて、ようやくRubyの実装を見てみることにしましょう。Rubyインタプリタの構成は図1.1のようになっています。

+
+ +
+ fig0101 +
+

図1.1●Rubyインタプリタの構成

+
+
+

コンパイラ

+

Rubyはインタプリタ型の言語ですが、実際には最初にプログラムを全部読み込んで、コンパイラ部が構文解析を行います。構文解析の結果である構文木を後段の構文木インタプリタが逐次解釈するわけです。このようにまずコンパイラでプログラムを内部構造へ変換する方式をコンパイラ・インタプリタ方式と呼び、最近のスクリプト言語では主流の構成になっていて、PerlやPythonなどでも採用されています。

+

古いタイプのインタプリタ言語ではバージョン7.6以前のTclのようにプログラムを文字列として扱ったり、あるいはある種のBASICのように予約語を1バイトの記号に置き換えた中間言語を使ったりしていました。このような方式のインタプリタに比べるとコンパイラ・インタプリタ方式は、

+
    +
  • 構文解釈のコストを削減できる

  • +
  • 文法エラーを実行前に発見できる

  • +
+

というメリットがあります。

+

Rubyのコンパイラ部(パーサーと呼ぶこともあります)は、UNIXでの一般的なコンパイラ生成ツールであるyaccを使っています。

+

yaccはBNFと呼ばれる言語の文法の記述と結果を出力するプログラム(の断片)から、パーサーを自動生成してくれる優れもののツールです。yaccはRubyを始めとする多くの言語処理系で採用されています。

+

パーサーの出力は言語によってまちまちです。たとえばRubyやPerlでは構文木と呼ばれる構造体のリンクですし、PythonやSmalltalkやバージョン8.0以降のTclではバイトコードと呼ばれる一種の仮想機械のマシン語を出力します。

+

構造体のリンクである構文木は柔軟で実装が容易であるというメリットがあり、一方バイトコードはコンパクトでメモリ効率がよいというメリットがあります。

+

コンパイラ部の効率を改善する方法としては出力をそのまま書き出して2回目以降のコンパイルを回避するというものがあります。この方法はPythonやEmacsなどで用いられています。Pythonはスクリプトを読み込んだときにディレクトリが書き込み可であればコンパイル結果のバイトコードを書き込んでしまうという大胆な方法を採用しています。

+ +

Rubyでもかつてこのコンパイル結果を書き出す方法を採用するかどうかの検討を行ったことがあります。しかし、プロファイルを取ってみるとコンパイル部の実行時間は全体にほとんど影響を与えていないことが明らかになりました。コンパイルはプログラムの実行直前に一度しか行われず、かつ内部構造へのコンパイルは十分に高速なので、ボトルネックになりにくいのでした。Rubyはもともと書き出しを行いにくい構文木方式を採用していたこともあって、この手法は割に合わないということで採用を見送りました。おそらく今後も採用されることはないでしょう。

+

結論としてはコンパイラ部は現状でもかなり高速なうえ、時間をあまり消費していないので、速度の点ではあまり改善の余地がないといえるでしょう。

+
+
+

最適化

+

コンパイラの実装の中で重要な分野として「最適化」と呼ばれるものがあります。最適化とはプログラムの実行効率を向上させる処理です。たとえば無駄な処理を省いたり、先に計算できるものをあらかじめ計算しておくなどの「小手先」の改善をコンパイラに行わせるものです。歴史的な事情から「最適化」と呼ばれていますが、実際には「最適」にすることなどできるはずもなく、本来ならいわば「ちょっとマシ化」とでも呼ぶべきものです。

+

コンパイラ型の言語ではこれらの最適化は非常に有効で、たとえばCコンパイラの最適化オプションを付けるかどうかで処理時間が相当変化することはざらです。

+

具体的な最適化にはたとえば以下のようなものがあります。

+
    +
  • 式展開(x**2x*xなど)

  • +
  • 定数畳み込み(2+13, "a"+"b""ab"など)

  • +
  • 共通部分式の除去

  • +
  • 不要コードの除去

  • +
  • コードの並べ替え

  • +
  • ループ展開

  • +
  • インライン展開

  • +
+

しかし、残念なことにRubyのような動的な性質の強い言語ではこの最適化はほとんど適用できません。

+

まず、第一にRubyには変数や式に型がないので、型情報を用いた式展開などができません。x+yという式を見てもそれぞれの変数に数値が入っているのか、文字列が入っているのかによって実際の処理が異なるので、あらかじめ計算することができないのです。

+

また、演算子も一種のメソッドでプログラム中で再定義することが可能なので(その気になれば整数の加算なども置き換えられる)、その点からも最適化は困難です。副作用がないことがはっきりわかっていれば、共通部分式や不要コードの除去やコードの並べ替え、ループ展開などが可能ですが、そのことを保証する方法も提供されていません。

+

プログラムの解析によって実際に起動される処理を決めることができないのでインライン展開も行えません。

+
+

Rubyの動的で柔軟な性質は、プログラムの書きやすさや使いやすさにつながりますが、プログラムの実行効率、特に最適化という点からはやや厳しいものがあります。

+
+
+

C言語へのコンパイル

+

最近のマシンの高速化によって実行速度に不満を感じる機会は以前より少なくなりましたが、やはりインタプリタ型の言語はコンパイラ型の言語よりも10倍から100倍程度実行速度が遅い場合がほとんどです。

+

「インタプリタは遅い」というとたいていの人がすぐに思い付くのは、「コンパイルして実行形式にすれば高速化できる」ということでしょう。

+

しかし、世の中はそうは甘くないものです。Rubyにはまだありませんが、同じ分野のスクリプト言語であるPerlやPythonにはプログラムをC言語に変換して、それをコンパイルすることにより実行形式を得ることができるツールがすでに開発されています。しかし、やや意外なことではありますが、実行速度はほとんどの場合、10倍どころか数割改善されれば上出来という程度のようです。

+

というのも、動的な性質を持つスクリプト言語では、コンパイル時の最適化が難しいのと同様の理由でC言語に変換することによるメリットを受けにくいことが原因です。

+

また、実行時間の多くはコンパイルすることで短縮されるインタプリタによる制御部分ではなく、もともとC言語で記述されコンパイラ型言語の速度で実行されるライブラリルーチンの中で消費されることも関係しているようです。

+

結局、実行形式にコンパイルすることによってインタプリタの制御の部分を直接コンパイルされたスピードで実行できても、それは全体の実行時間から見ると数割にすぎません。その数割のためにかなり複雑になるC言語への変換ツールを作るかと問われるとかなり悩むのが正直なところです。なにしろコンピュータは放っておいてもどんどん高速化しているのですから。

+
+
+

インタプリタ

+

コンパイラによる改善に限界があるとすれば、実際の処理を実行するインタプリタ部はどうでしょうか。実際にプロファイルを取ると、インタプリタを構成する関数はたいてい時間を消費する関数のトップテンに入っているようです。

+

Rubyのインタプリタ部はコンパイラ部が生成した構造体(ノード)のリンクである構文木を解釈します。インタプリタ部の本体はrb_eval()という関数で、その本体はノードの種別ごとに各種の処理を行う巨大なswitch文になっています。

+

現状の構文木インタプリタは以下のような高速化のための工夫を行っています。

+
    +
  • シンボル

  • +
  • allocaの利用

  • +
  • メソッドキャッシュ

  • +
+

これらの工夫を具体的に見てみましょう。

+
+

シンボル

+

プログラムに登場する識別子(変数やメソッドなどの名前)は、コンパイラによってそれと1対1対応するシンボルと呼ばれる整数値に変換されます。インタプリタ内部では文字列としての名前は扱いません。これにより識別子の比較や検索が大幅に高速化されています。また、文字列を管理する必要がないので、メモリの節約と同時にメモリ管理の単純化にも貢献しています。

+
+

allocaの利用

+

ヒープ上に領域を割り当てるmalloc()に対して、スタック上に領域を割り当てるのがalloca()です。alloca()で割り当てられた領域はその関数を終了するまで有効で、関数が終了すると(スタックですから)自動的に解放されます。サイズを自由に指定できるローカル配列のようなものだと考えることができるでしょう。alloca()のもう1つの特徴は、例外もありますが、ほとんどのマシンではmalloc()よりも高速に割り当てを行うことです。Rubyインタプリタではalloca()を利用して高速化を図っています。ただし、alloca()は多用するとスタックを過剰に消費してしまう欠点がありますので、1つの関数の中で繰り返し領域を割り当てたりする用途には使わないようにしなければなりません。

+

メソッドキャッシュ

+

オブジェクト指向言語ではメソッドの呼び出し対象になったオブジェクトによって実際に起動されるメソッドが決まります。ですから、どのオブジェクトに対してどの名前のメソッドが呼ばれたかという情報によって、メソッド呼び出しごとにテーブルを検索して実際の処理を選択する必要があります。

+

Rubyのような純粋オブジェクト指向言語では、ほとんどあらゆる処理がメソッドによって処理されますから、このメソッド検索のコストは非常に大きくなります。

+

そこでRubyではメソッドキャッシュという手法を使ってこの検索コストを低減させています。具体的には、メソッド検索を行った場合、このオブジェクトに対してこの名前のメソッドを呼び出したら、実際にはこの処理を行ったという情報を、クラスとメソッド名をキーにしてメソッドキャッシュと呼ばれるテーブルに保存します。メソッド検索が発生するとまずメソッドキャッシュを調べ、そこで見つからなかったときに初めてオブジェクト内部のテーブルを検索します。

+

このメソッドキャッシュは単純ですが、非常にヒット率が高く、ある調査では95%のメソッド呼び出しでキャッシュヒットしています。これによりかなりの効率改善が行われます。

+
+

インタプリタの効率改善にはこの他にも以下のようなものがあります。

+
+

インラインメソッドキャッシュ

+

これはSmalltalkの一部の処理系で採用されている方法で、上記のメソッドキャッシュのようなグローバルなテーブルではなく、呼び出しコードの中に前回の呼び出し情報を保存しておくというものです。

+

この方法は同じ場所でのメソッド呼び出しはほとんどの場合同じオブジェクトに対して行われるという経験即に基づくものです。

+

実は、以前実際にこのインラインメソッドキャッシュをRubyに実装したことがあるのですが、結果はほとんど実行結果に影響を与えませんでした。すでに採用していたメソッドキャッシュが十分な効果をあげていたからのようです(あるいは私の実装がまずかったのかもしれませんが)。

+
+

threaded code

+

threaded code(縫い糸コードとも呼ばれる)は構文木のノードにノードの種別の代わりに実際にそのノードの処理を行う関数へのポインタを埋め込むものです。これによりswitch文の分岐のコストを削減することができるはずです。

+

これも実装してみましたが、目に見える効果はなく、むしろやや遅くなる傾向がありました。はっきりとした原因は不明ですが、おそらくは最近の最適化されたCコンパイラの生成するswitch文の分岐は十分に高速で、threaded codeにより関数呼び出しが増えてしまうことによるデメリットを補えなかったのではないかと推測します。

+

JIT(Just In Time compile)

+

JITは実行する時点で動的にマシン語に変換し、それを実行するという手法で、Javaでよく用いられています。しかし、この方法は(当然ですが)各CPUに固有の方法になってしまい、同じインタプリタのソースコードをいろいろなマシンで使う移植性を維持するのが難しくなります。

+

やればある程度(数割くらい?)の効果はありそうですが、将来のRubyインタプリタでこの方法が採用される可能性は低いでしょう。

+

型仮定

+

コンパイル部で最適化できない理由の1つは動的な言語ではプログラムに型情報がないからと言いました。だったら型情報に依存しないルーチンと、ある型を仮定して、その条件が成立するときだけ高速で実行するルーチンの両方を用意すればよいというのがこのアプローチです。この手法は非常に興味深いので、後述のHotSpotと合わせて将来いつか挑戦してみたいと考えています。

+

HotSpot

+

HotSpotはSunが提出しているJavaの高速化手法の名称です。詳細は不明ですが、基本的な原理は実行時に統計情報(一種のプロファイル)を集め、それを元にボトルネックの部分で集中的に動的最適化を行うもののようです。

+

統計用のコストがどのくらいの割合になるのか不明ですが、実行時に情報収集して、それを元に高速化を行うというのは面白いアイデアだと思います。

+
+

このようにインタプリタの改善にはまだまだできることがありそうです。

+
+
+

メモリ管理

+

オブジェクト指向言語、特に純粋オブジェクト指向言語では、配列、文字列、数値に至るまでのあらゆるデータがオブジェクトなので、プログラムの実行中に大量のオブジェクトを割り当てる傾向があります。

+

これらのオブジェクトをすべて管理することをプログラマーに要求するとしたら、大変なことになります。プログラマーはどのオブジェクトがいつまで生きているべきか1つ1つ管理して、用事が終われば1つ残らず解放しなければなりません。もし解放するのを忘れたり、あるいはまだ使っているのに解放してしまったりしたら、深刻でなおかつ非常に発見しにくいバグの原因になります。

+

しかし、実際にC++というオブジェクト指向言語ではこのようなことを要求しています。まったく信じられないような話です。

+

一方、C++よりは「ちゃんと」設計された言語であるJavaではこのような問題に対しての対抗策が用意されています。それはガベージコレククション(GC)と呼ばれる機能です。ガベージコレクションはもう使われなくなったオブジェクトを自動的に検出し、解放処理を行ってくれます。もちろん、Rubyにもこの機能があります。

+
+

C++の賛同者の中にはプログラマーが明示的にメモリ管理を行ったほうが(たとえ少々問題が発生しやすくても)、結果的によい性能が出るという主張があるようです。しかし、最近の研究ではコンピュータの性能向上もあいまって、ほとんどの場合には自動的にメモリ管理を行うGCを使ったほうが性能がよいという結果も出ています。

+

ここではまずGCの理論について簡単に説明してから、RubyでのGCの実装について見てみましょう。

+

GCはプログラミング言語の中でも重要なテーマです。最近のほとんどのプログラミング言語は何らかの形でオブジェクトを操作する機能を持ち、C++のような冷酷な言語を除けばオブジェクト操作機能を支援するために何らかのGC機能を持つものが珍しくありません。

+

ガベージコレクションの手法としては以下のようなものがあります。

+
+

リファレンスカウント

+

リファレンスカウント(reference count)はオブジェクトを回収する手法の中では最も「手軽」でPerl, Python, Tcl(8.0以降)を始めとする多くの言語で採用されています。リファレンスカウント方式では、あるオブジェクトが参照されている数をいつも把握しています(図1.2(a))。この参照されている数(これをリファレンスカウントと呼びます)がゼロになったオブジェクトはどこからも参照されていないので、回収することができるというわけです(図1.2(b))。

+
+ +
+ fig0102 +
+

図1.2●リファレンスカウント

+
+ +

この方式のメリットは実装が簡単なことと、オブジェクトが使われなくなったらすぐに回収されることが期待できる点です。この特長は他のGC手法ではまず実現できません。

+
+
f = open("/path/to/file", "r")
+  ... fを使った処理 ...
+f = nil        # ここでfの解放処理が期待できる
+
+

別の特長としてはオブジェクトの回収処理がプログラムの本来の処理の中で少しずつ行われるので、GC処理による中断がほとんどないということがあります。

+

この方式のデメリットはサイクルのあるデータを回収できないことです(図1.2(c))。サイクルのあるデータは全体として参照されなくなっても、個々のオブジェクトの参照数がゼロになりませんから、回収されずゴミになります。

+

オブジェクト指向プログラミングではたくさんのオブジェクトがお互いに参照しあうので、サイクルのあるデータ構造はしばしば発生すると考えられます。この場合ゴミにならないためには用事が済んだ時点で明示的にサイクルを切る必要があります。これはプログラマーにとってはかなり面倒な要求です。

+

また、実装者の立場からいうと参照数の増減を忘れてしまうバグに悩まされやすいというのもデメリットです。

+

マーク・アンド・スイープ

+

マーク・アンド・スイープ(mark and sweep)は、最も古く考案され、最も広く使われているGC手法です。

+

マーク・アンド・スイープでは、ルート(root = 根)と呼ばれるオブジェクトから芋づる式にたぐれるオブジェクトにすべてマークを付け、マークの付いていないオブジェクトはもう使われていないものとみなして回収するという方法です。

+

マーク・アンド・スイープは長らく「古い」という理由であとで説明するストップ・アンド・コピーやその変形であるジェネレーション・スキャベンジングに押されていましたが、単純さとスレッドなどの並行動作との相性のよさから見直されてきています。

+

マーク・アンド・スイープは全オブジェクトをスキャンするので、GC中に処理が停止するという欠点があります。これがかつてリファレンスカウントが人気であった理由の1つだったのですが、しかし、最近のコンピュータの性能向上とアルゴリズムの改善のおかげでそのことが問題になることはほとんどなくなりました。

+

ストップ・アンド・コピー

+

ストップ・アンド・コピー(stop and copy)はオブジェクトのためのメモリを切り出してくるための領域を2面持ち、一方がいっぱいになると、ルートからたぐることのできる「生きている」オブジェクトを別の面にコピーする方法です。別の面へのコピーが終わればすべての「生きている」オブジェクトがそちらに移動していますから、それ以上の回収作業は不要です。

+

ストップ・アンド・コピーは、GCの処理時間がオブジェクトの総数ではなく、「生きているオブジェクト」の数で決定されるというメリットがあります。また、参照される可能性のあるオブジェクトがコピーによって集められるので(コンパクションと呼びます)、一度にアクセスするメモリ空間を小さくできます。このプログラムが同時にアクセスするメモリ空間をワーキングセットと呼ぶこともあります。ワーキングセットが小さいと、OSのページング機能にかける負荷が減り、性能が向上する可能性があります。

+ +

しかし、領域が2面必要になるので割り当てた領域の半分しか活用できず無駄が多いのと、個別のオブジェクトの回収処理を行わないので、メモリ以外の資源の後始末(ファイルのクローズとか)が難しいという欠点もあります。

+

ジェネレーション・スキャベンジング

+

ジェネレーション・スキャベンジング(generation scavenging)は、ストップ・アンド・コピーの変形で「無駄な領域」という欠点を少し改善したうえで、オブジェクトの回収効率を向上させています。

+

オブジェクトの振る舞いの一般的な傾向として、寿命の短いオブジェクトは徹底的に短く、寿命の長いオブジェクトはかなり長いということがいえます。この傾向を利用して、オブジェクトを世代別に分類し、若い世代は頻繁に、古い世代はときどきスキャンするというのがジェネレーション・スキャベンジングの基本原理です。

+

ただし、ジェネレーション・スキャベンジングは実装が非常に難しいという欠点があります。

+
+

それぞれ利点と欠点のあるGC手法ですが、Rubyはこの中でマーク・アンド・スイープ方式を採用しています。理由はリファレンスカウント方式のデメリットが妥協できなかったことと、ストップ・アンド・コピー方式、およびその後継のジェネレーション・スキャベンジング方式では必然的にオブジェクトの移動が発生するので、インタプリタの実装が飛躍的に難しくなるからです。

+

RubyのGCの特徴はルートとして、C言語の大域変数領域とCPUのスタックとレジスタも使う点です。もちろんCPUはどの値がポインタで、どの値が整数かという情報は記録されていませんが、たまたまオブジェクトのアドレスと同じ整数値が存在した場合には、ポインタであるかもしれないので安全側に倒して参照されているとみなすことにしています。

+

このようなGCを、安全側に倒すことから「保守的」という意味のコンサバティブ(conservative)GCと呼びます。コンサバティブGCの利点は、C言語のローカル変数に格納されたRubyのオブジェクトへの参照をGCに明示的に教えてやらなくても自動的に検出できることです。これはインタプリタの開発者(つまり私)の開発効率を飛躍的に向上させます。また、明示的な指定を忘れてしまうことによるバグがなくなることにより、間接的にユーザーも恩恵を受けることになります。

+

コンサバティブGCはポインタと整数値の区別が付けられないので、ポインタの付け替えを伴うストップ・アンド・コピーなどには適用できません。Rubyがストップ・アンド・コピーを使っていないのはそのことも理由の1つです。

+

RubyのコンサバティブGCでは大域変数はユーザーに明示的に指定してもらうことにしています。スタックの範囲はローカル変数のアドレスから計算し、その領域内から参照されている(ように見える)すべてのオブジェクトにマークします。レジスタの内容はCのライブラリ関数であるsetjmp()がレジスタの状態を保存するjmp_buf構造体から参照します。

+

オブジェクトでないメモリ領域、たとえば文字列の内容などは単純にmalloc()free()を使って管理しています。というのも任意長のメモリ領域については、下手に自前で管理するよりもOSが提供している関数を使ったほうが効率が高いことが多いからです。

+
+

Emacsでは文字列領域をプールと呼ばれる領域から割り当て、GCのときに使われていない領域を詰めてコンパクションを行っています。これはワーキングセットを小さくすることを目的としていると思われますが、最近はコンピュータに搭載されているメモリ容量が増えたこともあって、それほど劇的な変化はないようです。

+

参照されなくなってゴミになるのはなにもメモリだけとは限りません。たとえばオープンしっぱなしで誰からも参照されなくなったファイルなどもゴミになります。このようなメモリ以外の資源についてもGCのタイミングで解放してやる必要があります。Rubyはこれもサポートしていますから、たとえば、

+
+
txt = open("/path/to/file", "r").readline
+
+

のように明示的なクローズを省いてしまってもちゃんと動作します。ま、きちんとクローズしたほうがお行儀が良いとは思いますけどね。

+
+
+

組み込みクラスライブラリ

+

構文木インタプリタはプログラムの解釈実行を行いますが、実際の処理の多くの部分はクラスライブラリで提供されるメソッドによって実行されます。

+

組み込みクラスライブラリのメソッドはCで記述されています。ですからインタプリタの負荷と関係なくコンパイルされた速度で実行されます。インタプリタによる解釈・実行がコンパイラ型言語による実行の1000倍遅くても(マシン語の命令数で比較するなら最低でもそれくらいは違う)、全体の実行速度がそれほどまでは差がつかないのは、これらの組み込みメソッドが同等の速度で動作しているからです。

+

しかも、組み込みクラスライブラリはデータ構造、アルゴリズムともに時間と手間をかけて実装されていますから、インタプリタの負荷を除けば、下手なCプログラムよりもはるかに高速に動作していることになります。

+
+
+

文字列/配列/ハッシュ

+

文字列、配列、ハッシュはRubyにおける基本的なデータ型です。これらのデータ構造に対する処理の種類はPerlを参考に決められています。長い経験のあるPerlでの処理を参考にしたうえで、クラスという単位で機能を分類することにより、使いやすいクラスライブラリを実現しています。

+

これらのデータに対するメソッドは多少実装に手間がかかっても高速なものを選択しています。これらのメソッドはあらゆる局面で繰り返し使われるので、手間をかけることが報われるからです。

+

その他のこれらデータ構造における効率上の工夫といえば、たとえば文字列におけるコピー・オン・ライト(copy on write)をあげることができます。

+

Rubyにおいて文字列は参照されるたびに新しく生成されます。これは文字列の内容を変更しても、元の文字列を保存するためですが(リスト1.2)、文字列は非常に多用されますから、参照されるたびに毎回メモリ領域を割り当てて、文字列の内容をコピーしていたのでは効率が悪すぎます。そこで、新しい文字列オブジェクトを生成したあと、文字列の内容を共有することにします。変更が行われるときに初めてメモリ領域の割り当てと内容のコピーを行うわけです。

+ +
+

リスト1.2●文字列の参照

+
def foo
+  "abc"
+end
+
+a = foo()
+a[0] = "b"
+print a, "\n"       # => "bbc"
+
+print foo(), "\n"   # => "abc"のままであってほしい
+
+
+

この方法によって無駄なコピーをかなりの割合で削減できています。

+
+
+

数値計算

+

コンピュータはもともとは電子計算機と呼ばれていたくらいですから、本来は計算が得意です。Rubyは実行効率の観点から数値処理を高速に行うよりも、むしろ文字列を操作することなどのスクリプト向きの仕事のほうが得意なのですが、それでも数字を取り扱うことはしばしばあります。

+

特に整数は非常に頻繁に登場するので、整数オブジェクトの取り扱いは効率に大きく影響します。そこでRubyではいくつかのオブジェクトにはメモリ領域を割り当てず、変数の中に直接格納するようにしています。このように直接変数の中に格納されるオブジェクトは小さな(31ビット幅程度の)整数Fixnumnil, true, falseです。

+

Fixnumの場合、変数(Cレベルで見るとポインタ)の内容の1ビット目(LSB)が1ならば、その変数の中身は参照ではなく、Fixnumの値が格納されているものとします。変数の中に格納されたFixnumから整数を取り出すには全体を1ビット右シフトさせます。

+

この手法により、整数の操作に伴うオブジェクトの生成を避けることが可能になっています。また、Fixnumと整数のやりとりは単純なシフト演算によって行われますから、これも高速に処理できます。

+

一方、Pythonでは整数処理の高速化に対して別のアプローチを取っています。Pythonの作者は変数の中に埋め込む特殊なオブジェクトの存在を嫌って、整数もすべて「普通のオブジェクト」にすることにしました。しかし、整数1つ1つに毎回オブジェクトを生成するのは効率上つらい面もあるので、以下の工夫を行っています。

+
    +
  • 整数オブジェクト専用の割り当てルーチンを用意して、オブジェクトをできるだけ再利用する

  • +
  • −1〜100までの範囲の整数はあらかじめ生成してテーブルに登録しておく

  • +
+

Pythonについて正確な統計を取ったことはありませんが、これらの工夫もかなりの効果をあげているようです。

+
+
+ +

Bignum ―― 無限多倍長整数

+

RubyではFixnumで表現される小さな整数の他にBignumと呼ばれる多倍長演算を行うクラスがあります。このクラスのおかげでたとえば400の階乗のような非常に大きな数も(効率を気にしなければ)自由に計算できます。

+

もともとRubyにBignumを導入した動機というのが、Fixnumの範囲に収まらない整数を取り扱いたかったという単純なもので「単純なニーズの割に大げさなものを導入してしまったなあ」というのが正直な感想です。しかし、「まあ、便利だからいいか」と思っているのも事実です。

+

Bignumはその値をshort(多くは16ビット)の配列として格納しています。計算は単純に繰り上がり、繰り下がりを考慮しつつshortを対象に行います。ただ、割算だけは簡単なアルゴリズムがなく、自分でも十分に理解しきれない手順に悩まされました。

+

Rubyの整数は計算結果がFixnumで表現できるときにはFixnumを、その範囲を超えるときは自動的にBignumを返します。ですから、プログラミングのレベルでは、ほとんどの場合大きさの限界を意識することなく整数を取り扱うことができます。

+
+
+

正規表現

+

正規表現とは文字列のパターンの表現方法です。Rubyを始めとするスクリプト言語は正規表現がしばしば重要な役割を果たします。

+

Rubyの正規表現ルーチンは、もともとEmacsのために開発され、gawkで用いられていたものがベースになっています。このルーチンを採用した理由は、

+
    +
  • フリー(GPL, 現在はLGPL)

  • +
  • パターン、文字列に \0を含むことができる

  • +
  • 8ビットクリーン

  • +
  • 日本語化パッチ(EUC, SJIS)が入手できた

  • +
+

というものです。その後、Rubyで使うために以下のかなり大規模な改造を行っています。

+
+

さて、すでに述べたように正規表現はスクリプト言語ではしばしば多用されますから、正規表現ルーチンの高速化は処理全体の実行効率に関わってきます。Rubyの利用している正規表現ルーチンは以下の最適化を行っています。

+
+

fastmap(Emacsからある)

+

パターンの先頭にマッチし得る文字のテーブルをあらかじめ計算しておき、マッチ対象の文字列からマッチし得る部分を素早く検索するために使われます。

+

固定文字列による絞り込み

+

正規表現がrubyという文字列を必ず含む場合、その文字列を含まない文字列は最初から検索対象になりません。あらかじめ必ずマッチする文字列を計算して、BMサーチという高速文字列検索アルゴリズムを使ってマッチ処理の前に絞り込みを行っています。

+

その他

+

たとえば、正規表現の先頭が .* であった場合、先頭でマッチが失敗すれば、そのあとのチェックは不要であるとか、細々とした最適化を行っています。

+
+

なお、これらの正規表現の最適化は『詳説 正規表現』という書籍からの情報を参考にしています。

+

実装者の観点からいうと、正規表現は非常に奥が深く、面白く、かつつらい分野です。特にRubyの正規表現ルーチンはもともと自分で書いたものではないうえに、原形をとどめないほどの改造を行っているので、バグが出ると悲しくなってしまいます。

+
+
+

スレッド

+

Rubyには1つのプログラムの中で複数の制御の流れが存在するスレッド機能を持っていて、これが言語の特徴の1つになっています。

+

スレッド機能の実装には、OSの協力を必要とするカーネルレベルスレッドと、プログラムが全部自前で実装するユーザーレベルスレッドがあります。

+

カーネルレベルスレッドはOSの協力を受けるので、マルチCPUの活用ができる一方、OSがスレッド機能に対応してくれなければ使えないという問題があります。最近のUNIXの多くや、NTなどでは使えますが、DOSなど古いOSでは使えないということです。

+

ユーザーレベルスレッドはスレッドの切り替えなどを全部自前で実現しますから、カーネルレベルスレッドのようなマルチCPUの活用などは不可能です。その代わりOSに依存しない移植性の高い実装が可能です。

+

Rubyはユーザーレベルスレッドを採用しています。最大の理由はDOSやMacのような古いOSや、カーネルレベルスレッドを採用していないUNIX系OSでも同様のスレッドの使い勝手を提供するためです。残念ながらカーネルレベルスレッドはどこででも使えるわけではありませんし、たとえ使えたとしても各OSごとに仕様や挙動が違うというのが現実ですから。

+
+

RubyのスレッドはRubyが動くところならどこでも同じように動作します。DOSでスレッドプログラミングを気軽にできるのは、ある意味感動ものでもあります。

+

Rubyのスレッドはユーザーレベルスレッドですから、マルチCPUを活用できませんし、スレッドの制御の切り替えのコストがありますから、全体の実行時間は決して短くなりません。また、後述する理由により制御の切り替えのコストもあまり軽くはありません。

+
+
+

スレッドの実装

+

では、Rubyがスレッドをどのように実装しているかを簡単に解説しましょう。詳細はRubyのソースコードを見てください。

+

プログラムの実行状態は大まかにいうと、大域変数とスタック(関数の呼び出し階層とローカル変数)とレジスタ(ローカル関数、作業領域)に格納されています。スレッドの場合、大域変数は共有しますから、スタックとレジスタの状態を保存して、切り替えることができればよいということになります。

+

Cにはsetjmp/longjmpという関数があってレジスタなどの状態をjmp_bufという構造体に書き出す機能があります。このjmp_bufはコンサバティブGCにも使われていましたね。スレッドの実装にもこの機能を利用します。

+

Rubyでは以下の手順でスレッドを切り替えます。

+
    +
  1. setjmp()を使って、現在のレジスタなどの状態をjmp_bufに書き出します。この保存された状態は現在スレッドに制御を返すときに使われます
  2. +
  3. 現在のスタックの状態をヒープにコピーします
  4. +
  5. 切り替え先のスレッドが保存しているスタック状態をスタックに書き戻します
  6. +
  7. 切り替え先のスレッドに保存してあったjmp_bufを使ってlongjmp()します。するとアラ不思議、setjmp()でセーブした時点から実行を再開します
  8. +
+

ここで(2)や(3)の手順でローカル変数が使えないことに注意してください。スタックを壊してしまいます。関数呼び出しも使えません。

+

この方式だとスレッドの切り替えのたびにスタック領域のコピーと書き戻しが発生するので正直なところ効率はあまりよくありません。他のユーザーレベルスレッドの実装の中ではスタック領域をあらかじめ固定領域に割り当てることで、このコピーを行わない実装もあります。しかし、そのような実装には以下のデメリットがあります。

+
    +
  • スタック領域を割り当てるためにはCPUのスタックポインタを書き換える必要があるが、移植性のある方法では実現できない。OS, CPUごとに対応する必要がある

  • +
  • あらかじめ割り当てられたスタック領域の大きさを拡張できない。この領域を超えるとインタプリタ全体が異常終了する

  • +
+

これらのデメリットはRubyのポリシーから考えるといずれも致命的に思えます。そこでRubyでは少々効率が悪くてもコピーする方法を採用しました。

+
+

このようにRubyのスレッド機能の実装は効率よりもむしろ安全性や移植性に重点を置いて設計されています。

+

スレッドを使うと実行時間の総計はスレッド切り替えのコストでかえって長くなるということですし、プログラムの性能向上には貢献しないように思えます。

+

しかし、全体の処理時間は短縮しなくても、時間のかかる処理をスレッドに任せてバックグラウンドで実行することにより、プログラムの応答性が改善するなどのメリットはあります。

+

Rubyではどこでも動くスレッドがあるので安心してスレッドが使えるという点も見過ごしにできません。

+
+
+

拡張ライブラリ

+

さて、ここまででRuby言語の処理系の基本的な部分について簡単に見てきました。Rubyインタプリタはプログラミングに便利なたくさんの機能を組み込みで持っていますが、あらゆる機能を提供しているわけではありません。そんなことは原理的に不可能です。

+

しかし、Rubyには拡張ライブラリという形でインタプリタにあとから機能を追加することができるようになっています。しかも、多くのOSではインタプリタそのものを再コンパイルあるいは再リンクする必要なしに実行時にロードすることができます。

+

実際にネットワークソケット機能やデータベースアクセス機能などが拡張ライブラリとして提供されています。

+

拡張ライブラリはRubyインタプリタに機能を追加するためにも使われますが、実はプログラムの実行効率向上のためにも使うことができます。実行のボトルネックになる部分をCで記述したメソッドとして拡張ライブラリ化してしまうことで、処理の重い部分はCで高速に、それ以外の部分はRubyで快適にプログラミングすることが可能になるのです。これこそ適材適所ですね。

+

このような拡張ライブラリと、その動的ロードの機能はRubyのライバルであるPerlやPythonでももちろん提供されています。これらの拡張ライブラリと比較した場合、Rubyのほうには以下の利点があります。

+
    +
  • コンサバティブGCによりオブジェクトの参照数の管理が不要
    +他言語ではリファレンスカウントを採用しているのでオブジェクトの参照数を管理する必要があります。これを忘れると面倒なバグの原因になります。

  • +
  • Rubyでできることをほぼストレートに記述できる高レベルなAPI
    +CとRubyの言語の差による必然的な違い以外には、クラス定義、メソッド定義などについてほぼ同様の機能を提供するC言語用APIを用意しています。当り前のことのようですが、他言語ではCからのオブジェクトの操作などに制限があり、基本的な部分だけCで記述し、その外側にスクリプト言語で皮をかぶせるような方法がよく取られます。Rubyではそのような方法が必要になることはほとんどありません。

  • +
+

実はまだまだ拡張ライブラリの資産の蓄積という点でライバルたちに負けているのですが、今後ユーザーの増加とともに追いつきたいと考えています。その場合にはこの「拡張ライブラリの書きやすさ」が武器になるはずです。

+
+
+
+ +

まとめ

+
+

本稿ではRuby言語の実装とそこに使われている手法を特に実行効率の向上という点を中心に解説しました。しかし、Rubyはソースコードの規模が5万行を超えるかなり大規模なソフトウェアですから、ここでは簡単にしか説明できなかったことばかりです。

+

興味のある人は実際にRubyを入手し、使ってみて、あるいはソースコードを眺めてみてください。Rubyは入手も利用も無料です。そして、できればプログラミング言語の実装の楽しみに目覚めていただければと願っています。

+

Happy Hacking!

+
+

参考文献

+

書籍:

+

『オブジェクト指向スクリプト言語Ruby(仮題)』, まつもと ゆきひろ・石塚圭樹共著, アスキー(近刊)

+

『詳説 正規表現』, Jeffrey E.F. Friedl著, オライリー・ジャパン

+


+

URL:

+

http://www.netlab.co.jp/ruby/jp/

+

Rubyホームページ。Rubyに関することなら何でもここから参照できる(はず)。

+

http://ruby.freak.ne.jp/

+

Unofficial Ruby Home Page。本家Rubyホームページよりもはるかに出来がよい。
+メーリングリストのトピックのまとめが秀逸。

+

http://www.jin.gr.jp/~nahi/link-Ruby.html

+

Linkavailable: Ruby。Ruby関連のページの更新状況がひと目でわかる。

+

http://cuiwww.unige.ch/langlist

+

The Language List(英語)。古今東西のコンピュータ言語に関する情報が集められている。ここにはRubyは登録されておらず、Rubyという名の別の言語(ハードウェア記述言語)が登録されている。

+

http://www.iecc.com/gclist/GC-faq.html

+

GC FAQ(英語)。ガベージコレクションに関する「よくある質問とその答」集。歴史的な事情からGCはよく誤解されている(遅い、重い、使えないとか)ので、その誤解に対する答を提供している。

+
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-003.xhtml b/docs/vol1/xhtml/p-003.xhtml new file mode 100755 index 0000000..bed5f33 --- /dev/null +++ b/docs/vol1/xhtml/p-003.xhtml @@ -0,0 +1,675 @@ + + + + + +第2章 オブジェクト指向スクリプト言語Ruby + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay2 +
+

+Free Language Report
+オブジェクト指向スクリプト言語
Ruby +

+
+

[C Magazine, 1999年8月号]

+
+

第1章とほぼ同じ時期の記事です。こちらは内部実装ではなく、言語そのものを紹介する記事ですね。実際にRubyを使っている人のインタビューがあるのもいいですね。

+

興味深いのは「楽しいプログラミング」というスローガンがすでに登場しているところです。1998年に開催されたPerl Conference Japanでゲストスピーカーとして講演したときにはまだこのスローガンは登場していませんから、Rubyの代名詞と言えるこのスローガンが固まったのは1999年頃であると考えてよいでしょう。ちょうどこの頃は、同じ年の秋に出版されたRubyを取り扱った最初の書籍になる『オブジェクト指向スクリプト言語Ruby』(アスキー)の原稿を執筆中だったはずですから、その中で思いついたスローガンだったのではないかと思います。もう20年以上前のことなのですっかり忘れてしまっていますが。

+
+
+

読者の方はどんな開発環境を使っているのでしょうか? もしかしたら今使っている開発環境よりもすばらしい環境がネットワーク上で配布されているかもしれません。本連載では、そのときの旬ともいうべきフリーソフトウェア/シェアウェアの開発環境を1つ取り上げ、その特徴と実際にどのようなプログラムを作ることができるかを深く解説していきます。今回はスクリプト言語にオブジェクト指向を取り入れたRubyについて解説します。

+
+
+

Rubyとは?

+
+

「Ruby」とは筆者によって開発された比較的新しいオブジェクト指向スクリプト言語です。Rubyは ’93年に開発が始まりました。いわば ’80年代生まれのPerlやPythonよりも若い言語です。実際、Perl(真珠は6月の誕生石)を意識して、Ruby(ルビーは7月の誕生石)と名付けられています。

+ +

Rubyはプログラミング言語とオブジェクト指向の大好きな人間(筆者のこと)が、多数の言語の特徴を踏まえつつ、自分好みの理想の言語の追求の結果、生まれた言語です。そのため、スクリプト言語を作ろうとしてできた言語ではなく、理想の言語を追求したら結果としてスクリプト言語になったのいうのが実情です。

+
+

表2.1●Rubyの概要

+ + + + + + + + + + + + + + + + + + + + + + + + + +
名称Ruby
バージョン1.3.4(開発版)/ 1.2.6(安定版)
形態オブジェクト指向スクリプト言語
作者まつもとゆきひろ
主な配布先http://www.netlab.co.jp/ruby/jp/
対応プラットホームLinux, FreeBSD, BSD/OS, Solaris, AIX, HP/UX, その他多くのUNIX系OS, BOW, Windows 95/98/NT, MS-DOS, Mac, BeOS, OS/2, NEXTSTEP, その他
+
+
+

Rubyの特徴

+

主要な特徴としては、

+
    +
  • フリーソフトウェア

  • +
  • インタプリタによる手軽さ

  • +
  • 強力な組み込み機能

  • +
  • オブジェクト指向による統一感

  • +
  • どこでも動くポータビリティ

  • +
  • 小さなプログラムから大きなプログラムまでカバーするスケーラビリティ

  • +
+

があります。もう少し細かくRubyの特徴をあげると、

+
    +
  • 型宣言が不要

  • +
  • 書きやすく読みやすい文法

  • +
  • イテレータ

  • +
  • 例外処理機能

  • +
  • システムプログラミング

  • +
  • ネットワークプログラミング

  • +
  • メモリ管理が不要

  • +
  • Cによる拡張が容易

  • +
  • ダイナミックローディング

  • +
  • スレッド機能

  • +
+

などがあります。

+

RubyはもともとUNIX生まれで、開発は主にLinux上で行われています。しかし、現在では多くのプラットフォームに移植されています。現在動作が確認されているプラットフォームは表2.1のとおりです。

+
+
+ +

Rubyのインストール

+

UNIX系のOSの場合、ソースコードを展開したあと、

+
+
configure
+make
+make install
+
+

の手順でインストールできます。他の環境では、それぞれのドキュメントを見てインストールしてください。なお、原稿執筆時点での最新バージョンは1.3.4です(付録CD-ROMに収録)。また、安定版の最新バージョンは1.2.6です(付録CD-ROMに収録)。

+
+
+
+

Rubyの役割

+
+

Rubyはオブジェクト指向スクリプト言語としての前述した特徴により、「お手軽プログラミング」を応援します。具体的なRubyの適用分野としては次のようなものが考えられます。もっともこれらはほんの一例にすぎません。

+
+

テキスト処理

+

テキスト処理はスクリプト言語の本来の目的と言っても過言ではありません。Rubyは強力なファイルクラス、文字列クラスと組み込みの正規表現機能によってテキストを自由自在に操作できます。それにRubyは国産ですから、日本語(EUC, SJIS, UTF-8)の操作も自然にできます。

+
+
+

CGI

+

インタラクティブなWebページを提供するCGI(Common Gateway Interface)プログラムは現在Perlの独擅場と言っても過言ではないでしょう。しかし、CGIプログラムの本質はテキスト処理であり、もともとRubyに向いた分野であるといえます。現在では普及の度合いでPerlに負けているとはいえ、スクリプト言語としての性質と、書きやすさ、読みやすさからCGIにおけるRubyの将来は明るいと信じています。

+
+
+

ネットワークプログラミング

+

Rubyの持つソケットクラスライブラリは非常に簡単にネットワークプログラミングを実現できます。従来ならばCなどによる複雑な手続きによって実現されていたものを簡単なスクリプトで書けるのです。あとで紹介しますが、特別なライブラリを使わずにそこそこちゃんとしたHTTPクライアントをわずか20行程度で記述できるのはなかなか感動モノです。最新のRubyでは、まだ実験段階ですがIPv6ソケット機能も提供されています。

+
+
+ +

GUI

+

Tcl/Tkの成功により、GUI(Graphical User Interface)がスクリプト言語に向いていることはすでに証明されたと思います。GUIはせいぜい人間の反応速度に追いつけば十分なので、それほど実行速度を要求しないからです。

+

RubyはTkインターフェイス、Gtkインターフェイスを始めとするGUIライブラリを持っていて、お手軽GUIプログラミングを支援しています。このGUIライブラリを利用してIMAP4メールリーダーSGmail(後述)のようなかなり規模の大きなものも開発されています。

+
+
+

XMLプログラミング

+

XML(eXtensible Markup Language)はスタイルではなく、データ構造を表現するためのマークアップ言語です。XMLの処理は基本的にテキスト処理なのでスクリプト言語に向いた領域です。XMLはUnicodeを扱うことができなければならないと決められていますが、Rubyは日本語の標準的なエンコーディングであるEUCとSJISに加えてUTF-8を標準でサポートしていますから、そういう観点からもXML向きといえます。

+

RubyのXML対応としては、吉田正人氏によってXMLパーサーの「expat」に対するインターフェイスライブラリが開発されています。なお、RubyのUTF-8対応も吉田氏によるものです。

+

RubyによるXMLプログラミングやexpatインターフェイスについては、吉田さんのページ(http://www.yohidam.net/)を参照してください。

+
+
+

プロトタイピング

+

スクリプト言語は小さめのプログラムを対象にすることが多いですが、決して小さいプログラム専用というわけではありません。特にRubyはオブジェクト指向機能によるモジュール化機能などのおかげで、他のスクリプト言語では無理がある大きいプログラムでも自然にプログラムできます。これによりどのようなプログラムでもインタプリタ言語の生産性をそのまま生かして開発することができます。

+

この生産性により本格的なプログラムのプロトタイプの開発に用いられることもありますし、実行速度などの事情が許せば、そのまま本番のアプリケーションとして採用できることも多いと思います。速度的に問題のある部分だけをC言語などで記述するというのもよく取られるアプローチです。

+
+
+

プログラミング教育

+

Rubyはとっつきやすく、またプログラムをすぐに実行できますから、プログラミング教育用の言語としても適しています。ただし、「『教育用にも使える』とあれば教育用にしか使えない」というマーフィーの法則はRubyには当てはまりません:-)。

+

教育用プログラミング言語としてRubyを見る場合、オブジェクト指向やスレッドプログラミングなどのやや目新しい機能まで手軽に使える点が重要です。改めて考えてみると、オブジェクト指向機能やスレッド機能が自由に使えるお手軽な言語というのはなかなかないようです。オブジェクト指向機能を持つスクリプト言語はあっても、多くはその機能は後付けで統一感に欠ける場合が多いようです。Rubyはそのようなところもカバーします。

+
+
+
+ +

Rubyの設計思想「楽しいプログラミング」

+
+

ここで機能や役割ではなく、Rubyを真に特徴付けている「設計思想」について語りましょう。それは「楽しいプログラミング」です。

+

本来、プログラミングは楽しいものです。無から有を創り出す創造的な活動であるというだけでなく、問題を解決するパズル的な楽しみをも提供してくれます。しかし、コンピュータが融通の効かない堅物であることを反映して、プログラミングには面倒な約束事がつきものです。決まりきった設定や、事細かな宣言などは「気軽なプログラミング」には不要です。Rubyはこのようなプログラミングの面倒な側面をできるだけ取り除くことで、楽しい側面に集中できることを目指しています。

+

たとえば、

+
    +
  • 思ったことがすぐに実行に移せる

  • +
  • 重要でないことはしなくてよい

  • +
  • 気を付けることが少なくてよい

  • +
  • よくやることは簡単に

  • +
  • やろうと思えば何でもできる

  • +
+

などは、Rubyが持つ性質の一部です。Rubyがインタプリタ型の言語なのも、変数に宣言が不要なのもみなこの目的のためです。

+

このような「使いやすさ」というのは人間の心理的性質を反映しています。人間の心というのは難しいもので、単純でも複雑でも使いにくいと感じるようです。結局は重要なのはバランスであり、Rubyは「設計者が使いやすいと感じるバランス」に基づいて設計されています。そのバランスに共感できる方は、Rubyを使っていて楽しいと感じられることでしょう。

+
+
+

Rubyプログラミング入門

+
+

さて、一般的な紹介はこのくらいにして実際のRubyのプログラムを見てみましょう。まずは定番のhello worldです(リスト2.1)。

+
+

リスト2.1●“hello world”を表示するスクリプト

+
# ハローワールド
+print "hello world\n"
+
+
+

このままでは、あまり面白くありませんね。言語の特徴もそれほど出ていません。実際このプログラムをPerlに読ませるとそのまま実行してしまいます。

+

もう少しだけ複雑な例を見てみましょう。以下はUNIXの標準的なコマンドであるgrepのサブセットです(リスト2.2)。grepは第1引数で指定した正規表現のパターンにマッチする行を出力します。

+ +
+

リスト2.2●“grep”と同じ処理をするスクリプト

+
# 4行で書くgrep
+pat = Regexp.compile(ARGV.shift)
+for line in ARGF
+  print line if pat.match(line)
+end
+
+
+

リスト2.2は小さなプログラムですが、これくらいでもRubyの特徴を知ることができます。たとえば、制御構造がendで終わることがわかります。これはややPascalを思い出させる文法ですね。他にも以下のような文法の特徴がわかると思います。

+
    +
  • 変数に宣言がいらない

  • +
  • Perl譲りの後置ifがある

  • +
  • スクリプト引数はARGVに入っている

  • +
  • 引数を連結した内容はARGFで読み込める

  • +
  • pat.match(line)でメソッド呼び出し

  • +
+

Rubyは組み込みクラスである文字列(String)、正規表現(Regexp)、配列(Array)、ハッシュ(Hash)、数値(Numeric)、入出力(IO)の各クラスが非常に強力で、これらだけでかなりの仕事ができます。

+

スクリプト言語の得意分野であるこのような小さなプログラムをいくつか紹介しましょう(リスト2.3)。

+
+

リスト2.3●ファイルに行番号を付けるスクリプト

+
# ファイルに行番号をつける
+while gets()
+  print $., "", $_
+end
+
+# πの計算
+print Math.atan2(1,1)*4, ""
+
+# 入力ファイルの"From "を含む行を印刷する
+ARGF.each{|line| print line if /^From / =~ line}
+
+# 引数で指定したファイル名を小文字にそろえる
+ARGV.each{|path| File.rename(path, path.downcase)}
+
+# 文字コードを自動判別してJISに変換するフィルタ
+require "kconv"
+ARGF.each{|line| print Kconv.tojis(line)}
+
+
+ +

リスト2.3では、

+
ARGF.each{...}
+

という表現が出てきました。これはARGFの各要素(各行)に対して繰り返しを行うという意味です。このようなメソッドは「イテレータ」と呼ばれ、繰り返す処理を抽象化しています。つまり、{...} という形で与えられた処理(ブロックと呼ぶ)を各要素に対して評価することで、要素の取り出しや終了チェックなど処理をメソッドにすべて任せてしまうことができるわけです。Rubyはこのようなイテレータを自由に定義できることが特徴の1つとしています。

+
+

Rubyを使ったソケット操作

+

さて、次にはもう少しだけ大きめのスクリプトを見てみましょう。リスト2.4に示すのは、URLの存在チェックを行うHTTPクライアントです。

+
+

リスト2.4●HTTPページチェッカー

+
# 最小のHTTPページチェッカー
+require 'socket'
+
+url = "http://localhost/"
+host, port, path = "localhost", 80, "/"
+if %r#http://(.*?)(?::(\d+))?(/.*)# =~ ARGV[0]
+  url = ARGV[0]
+  host = $1
+  port = Integer($2) if $2
+  path = $3
+end
+
+begin
+  s = TCPsocket::open(host, port)
+  s.print "HEAD #{path} HTTP 1.0\r\n\r\n"
+  if /^HTTP.*? 200 OK/i =~ s.read
+    printf "URL<%s> exists\n", url
+    exit
+  end
+rescue
+end
+printf "URL<%s> does not exist\n", url
+
+
+

このスクリプトをURLを引数に実行するとHTTPサーバーにアクセスして、そのページが存在するかどうかを判定してくれます。ただし、現状ではHTTP以外のプロトコルには対応していないので、任意のURLというわけにはいきませんが、これでも結構役に立つと思います。

+ +

このスクリプトは正規表現を使ってURLの解析を行い、ソケットクラスを使ってHTTPサーバーに接続しています。あとはHTTPサーバーの反応を正規表現でチェックして、ページが存在するかどうかを表示することになります。

+

Rubyではプログラムの実行中に発生したエラーは例外という形で報告されます。例外が発生するとプログラムの実行は中断されます。またrescue節があると、そこで捕捉することができます。HTTPページチェッカーでは、beginからrescueまでの範囲内で発生するすべての例外をまとめて捕捉しています。これにより、たとえば、

+
    +
  • 実行したマシンがネットワークにつながってない

  • +
  • 指定したホストが存在しない

  • +
  • ホストでHTTPサーバーが動作していない

  • +
+

などの問題が発生すると直ちにrescue節にジャンプします。リスト2.4のその部分には何もないので、そのまま処理の続きを実行することになります。このような問題が発生する場合には、「指定されたページは存在しない」とみなすことができるので、そのまま「存在しない」と表示すればOKです。

+

このようにエラーに対して例外が発生することによって個別の問題に対してユーザーがいちいちチェックする必要がなくなっています。

+
+
+

RubyのGUI操作

+

次にRubyではGUIも手軽であるところを見てみましょう。リスト2.5はボタンを1つだけ持つGUIプログラムです。

+
+

リスト2.5●GUI操作サンプルスクリプト

+
# Ruby/Tk
+require 'tk'
+TkButton.new(nil, 'text'=>'hello', 'command'=>'exit').pack
+Tk.mainloop
+
+
+

これまでに説明してきたソケットやTkインターフェイスは、Rubyインタプリタに組み込みの機能ではなく、拡張ライブラリと呼ばれる追加機能です。Rubyではこのような拡張ライブラリを用いてインタプリタに機能を追加することができます。ソケットやTkインターフェイス以外にも次のような拡張ライブラリがあります(ほんの一部です)。

+ +
+
+
+

Rubyにおけるオブジェクト指向とは?

+
+

Rubyはオブジェクト指向スクリプト言語だといいながら、ここまでの説明ではオブジェクト指向プログラミングにつきものの「クラス定義」だとか「継承」がまったく登場しなかったのにお気付きでしょうか。

+

もちろん、Rubyにもクラス定義や継承の機能はありますし、それらを活用したオブジェクト指向プログラミングはRubyの得意分野でもあります。しかし、Rubyのオブジェクト指向プログラミングの本質は「扱うデータがすべてオブジェクトである」ことにあります。あらゆるデータを統一的にオブジェクトとして扱うことができることが重要なのです。Rubyのプログラムは、一見通常の非オブジェクト指向言語のプログラムと同様に見える場合が多いのですが、その実態は「データはすべてオブジェクト」「手続きはすべてメソッド」とかなり徹底してオブジェクト指向しています。このような「すでに定義されているクラスを活用するオブジェクト指向プログラミング」はRubyの支援するプログラミングスタイルです。Rubyに組み込みの主要なクラスライブラリを図2.1に示します。

+
+ +
+ fig0201 +
+

図2.1●Rubyの主要クラスライブラリ

+
+

強力なクラスライブラリを利用した手軽なオブジェクト指向プログラミングの例として、時間の計算をあげてみましょう。2000年問題を意識して「2000年1月1日は何曜日か」という問題を考えてみましょう。多くの言語では何十行ものプログラミング必要になりそうですが、Rubyなら、

+
+
p Time.mktime(2000,1,1)
+
+

の1行だけです。実行すると、“Sat Jan 01 00:00:00 JST 2000”と表示され、土曜日であることがわかります。ここでは時刻表現のためのTimeクラスが面倒な計算を引き受けてくれています。

+

既存のクラスを利用するオブジェクト指向プログラミングの次の段階として、クラスやモジュールを定義するより高度なオブジェクト指向プログラミングが待っているわけです。

+ +

ここではより高度なオブジェクト指向プログラミングについてはこれ以上は説明しませんが、クラス定義の実例は紹介しておきます(リスト2.6)。あまり実用的な例ではありませんが、基本的な仕組みはわかるはずです。

+
+

リスト2.6●Rubyによるクラス定義

+
class Person
+  def initialize(name)
+    @name = name
+  end
+  def say
+    print "I'm #{@name}.\n"
+  end
+end
+
+# Personを継承したStudentの定義
+class Student<Person
+  def study
+    print "studying...\n"
+  end
+end
+
+
+
+
+

Rubyの「気持ち良さ」の秘密

+
+

ここまでで、ある程度Rubyのプログラムの雰囲気をつかめていただけましたでしょうか?

+

限られた誌面でまったく新しいプログラミング言語を紹介することは難しいことです。Ruby言語の詳しい説明はRubyホームページにあるリファレンスマニュアル(http://www.netlab.co.jp/ruby/jp/man-1.3)を参照していただくとして、ここからは再びRubyの設計思想に注目して、その「使いやすさ」「楽しさ」「気持ち良さ」の理由を追求してみたいと思います。

+

もともとプログラミング言語のできることは機能という観点から考えると、特定の目的に限定されたものを除けば、実行効率などといった以外の点ではどれも大差はありません。ですから、言語の違いはその「できること」ではなく、むしろその「使い勝手」によって発生します。そして、多くの場合にはほんのわずかの言語仕様の違いが大きな使い勝手の違いを生みます。ここでは、その「違い」について説明しましょう。

+
+

インタプリタ型言語

+

Rubyはインタプリタ型の言語ですから、コンパイルやリンクなどの手順なしにプログラムをいきなり実行できます。バグを修正したらすぐに再実行できます。プログラミング、実行、修正、再実行のサイクルを非常に素早く回せるのは、古き良きBASICの時代のような快適さです。

+ +

インタプリタ型言語の欠点はコンパイル型の言語に比べて実行速度が遅いことですが、幸いなことにコンピュータの実行速度はどんどん向上しています。今や一昔前のスーパーコンピュータなみのCPUパワーが手元にある時代です。もはやほとんどの分野で実行速度の遅さは問題にならなくなっています。

+
+
+

高機能言語

+

ほとんどの場合、プログラマーは事細かなデータ構造や些細ささいなアルゴリズムを考えるよりももっと仕事の本質に集中できれば、と考えていると思います。

+

Rubyは日常生活のプログラミングで最もよく使うと思われる機能が、クラスライブラリという形で組み込まれています。多彩な文字列処理機能や正規表現を含めて、数値、配列、ハッシュなどのRubyの組み込み機能は非常に強力で、やりたい仕事を簡単に片付けることができます。

+

また、もともとRubyには組み込まれていない機能でも、拡張ライブラリを使ってどんどん取り込んでいくことができます。拡張ライブラリによってRubyはますます強力に、ますます使いやすくなります。

+
+
+

簡潔な表現

+

Rubyはプログラミングが簡潔になる言語です。変数の宣言は必要ありませんし、組み込みのクラスライブラリが高機能であることも手伝って、多くの場合「やりたいこと」だけに集中できます。たとえば、引数で指定されたファイル群の各行を逆順でソートして出力したければ、

+
+
print ARGF.readlines.sort.reverse
+
+

だけで済みます。これは「ARFの内容を読み込んで(readline)、ソートして(sort)、反転(reverse)する」と読みます。日本語の語順で連ねて記述できるのが気持ち良いですね。

+

プログラミングの「約束事」に縛られず、プログラミングの本質に集中できるのは気持ちの良いことです。よくアルゴリズムの説明にいわゆる約束事を省略した疑似コードを使うことがありますが、Rubyはその疑似コードと同じような高いレベルの記述をそのまま実行することができます。また、コンパクトなプログラムが書けるので、手軽に問題を片付けるのにぴったりです。

+

しかし、簡潔な表現は度が過ぎるとプログラムが暗号になってしまうという問題もはらんでいます。簡潔な表現によってプログラムを圧縮しすぎると読めないプログラムを大量生産してしまうことになります。このことはPerlユーザーがよく経験していることではないでしょうか。

+

Rubyは次に述べるバランスのとれた文法によってこの問題に対応しています。

+
+
+

シンプルでバランスのとれた文法

+

プログラミング言語の文法は言語設計者の最大の関心事です。文法は言語の性質や使い勝手を決める重要な要素です。

+

プログラミング言語はいろいろな局面で使われますから、あらゆる状況に対応するために文法が肥大する傾向があります。言語設計者としてはよさそうな機能をどんどん取り込みたいという気持ちは理解できます。しかし、文法が大きすぎると今度は破綻します。古くはPL/IやAda、最近ではC++のような言語がこの症状に陥っています。大きすぎる文法によって全容を把握できないような言語は結果として使いにくくなってしまいます。

+
+

覚えることは少ないほうがよいですから、小さめの文法のほうが望ましいのですが、小さければよいというわけではありません。たとえばアセンブラは非常に小さな文法を持つ言語ですが、これが使いやすいという人はそんなにいないと思います。また、LispやSmalltalkは文法の小さい言語として知られていますが、単純すぎるせいで、かえって特異な文法となり、人間にとって自然な表記でなくなって、なじみにくかったり、熱狂的なファン以外には広く受け入れられなかったりしています。

+

スクリプト言語は歴史的には用途限定の簡易言語であったので、文法にあまり気を使わなかったり、あるいは特定の目的に特化した文法を持つことが多かったようです。目的に特化した文法は確かにその目的には便利ですが、逆にその言語の適用範囲を狭めることになりがちです。

+

そこで、結論としては、文法もバランスが大切だということです。大きく複雑すぎる文法も、小さく単純すぎる文法も結局は使いにくい言語となってしまいます。適度に高機能で、適度に単純な言語こそが本当に使いやすい言語になり得るのだと思います。もっとも使いやすさには多分に主観が入るので難しいのですが。

+

Rubyでは、

+
    +
  • 覚えることが少なくて済む単純な(ように見える)文法

  • +
  • やりたいことがすっきり書ける程度の高機能な文法(演算子とか正規表現など)

  • +
  • 将来の拡張に備えた汎用的な文法

  • +
+

などに気を使っています。

+
+
+

メモリ管理からの解放

+

オブジェクト指向言語は実行に伴い、大量のオブジェクトを割り当てます。これらのオブジェクトを管理して、いつ不要になるかを検出するのは苦痛が伴います。はっきりいうとそんなことを気にするよりもプログラマーにはもっと他にやりたいことがたくさんあります。

+

Rubyはガベージコレクトと呼ばれるメモリ管理機能を持っています。この機能により、もうどこからも参照されなくなったオブジェクトはインタプリタが自動的に検出して、解放してくれます。これで機械的で非人間的なメモリ管理から解放されます。

+
+
+

エラーチェックからの解放

+

Rubyの「面倒からの解放」はメモリ管理にとどまりません。Rubyは例外機能によって、エラーチェックからもプログラマーを解放してくれます。

+

例外についてはすでに説明しましたが、この機能により、個別のエラーチェックを省略することができて楽ちんなだけでなく、エラーを検出しないまま異常な処理を行ってしまう事態を自動的に避けられます。それでいてエラーに対処したいときにはきちんと対処できる柔軟性も持ちあわせています。

+
+
+ +

オブジェクト指向による統一感

+

Rubyではあらゆるデータがオブジェクトです。文字列や数値あるいは配列のような基本的なデータ構造を特別扱いする言語が多い中で、Rubyでは言語全体がオブジェクトというモデルで統一されています。

+

人間の意識は例外を嫌います。たとえば文字列の扱いが特殊であれば一瞬「えーと、どうだったっけな」と悩むことになります。この微細な「悩み」がプログラマーへのストレスとなり、「気持ち良さ」を阻害します。Rubyが純オブジェクト指向言語であるということはそういう観点からも「使いやすさ」を支援しています。

+
+
+

抽象化

+

「抽象化」とは「詳細を隠蔽いんぺいして、より高いレベルで処理する」ことで、プログラミング上の重要な概念の1つです。たとえば一連の手続きを関数としてまとめることは「手続きの抽象化」と呼ぶことができます。「手続きの抽象化」の具体的な例として、階乗を求める手続きは、

+
+
def fact(n)
+  if n == 1
+    1
+  else
+    n*fact(n-1)
+  end
+end
+
+

のように定義できます。このようにしておけば、あとは階乗をどのように計算するのかその方法を忘れてしまっても、

+
+
fact(10)
+
+

とすることで計算できます。

+

Rubyは抽象化を支援することに力を注いでいます。たとえば、

+
    +
  • メソッド(関数)による手続きの抽象化

  • +
  • オブジェクトによるデータ構造の抽象化

  • +
  • 例外によるエラー処理の抽象化

  • +
  • ブロックによるループの抽象化(イテレータ)

  • +
+

などがそうです。

+

抽象化において重要なのは「詳細を上手に隠すこと」です。つまり、抽象化機能で詳細を隠蔽されたものは、あたかもその機能が最初から存在していたかのように自然に内部を隠すことが望ましいということです。

+

具体的にはユーザー定義のクラスやオブジェクトに対して不自然な区別や制限を与えないことです。いくつかの言語、特にスクリプト言語ではこの部分が不十分で、ユーザー定義の手続きの呼び出し方が組み込みの手続きと違っていたり、ユーザー定義オブジェクトの機能が組み込みオブジェクトに対して劣っていたりします。Rubyの設計は、組み込みの機能とユーザー定義の機能とのアクセス手段の違いができるだけ起きないようにして、このような制限がないように気を使っています。

+
+
+ +

拡張ライブラリが簡単

+

Rubyはインタプリタにもともと組み込まれている機能だけでなく、拡張ライブラリを取り込んで機能を強化することができます。しかも、多くのOSでは、この機能を実行時に取り込むことができます。もっとも、この機能はRubyの専売特許ではなく、最近のスクリプト言語であるPerlやPythonなどでも同様の機能があります。

+

これら他言語と比べてRubyの拡張ライブラリ機能の優れた点は、大きくいうと2つあります。

+

まず第一の点は拡張ライブラリの中でのメモリ管理が自動化されていることです。Rubyは今使われているオブジェクトを自動的に検出するガベージコレクタを採用していますから、拡張ライブラリの中で明示的にメモリ管理を行う必要がありません。他言語ではオブジェクトの参照数の管理などが発生しますし、それを忘れると面倒なエラーの原因になりますから、これは非常にうれしい点です。

+

もう1つの点は、Cで記述された拡張ライブラリ内で(言語による記法の違いはともかく)ほぼ同等以上のことができることです。拡張ライブラリでできることに制約のある言語が多い中、この点は当り前のようで当り前でない利点です。

+

このような利点により「楽に」拡張ライブラリを開発できることで、Rubyの「楽さ」と「気軽さ」はますます強められます。

+
+

コラム1: Ruby利用者インタビュー/
+鴫原厚博(しぎはらあつひろ)さん
+聞き手: まつもとゆきひろ

+

実際にRubyを使ってプログラムを開発している人の生の声を聞いてみましょう。最初はIMAP4 MUA(Mail User Agent)である鴫原さんです。

+


+

— まずは自己紹介をお願いします。

+

鴫原厚博といいます。アサカネットというプロバイダのネットワーク管理を生業なりわいにしています。

+

— SGmailとはどのようなものですか?

+

SGmailは、Ruby/Tkで書いたIMAPをサポートしたXのGUIで動くMUAです(図2.2, 図2.3、付録CD-ROMに収録)。基本的には、WindowsやMacのMUAと同じような機能を持っていますが、

+ +

などを特徴としています。IMAPの良さを生かした作りにしようと思っています。また、SSHでトンネリングする機能は他のMUAにはない機能だと思っています。

+
+ +
+ fig0202 +
+

図2.2●SGmailの起動画面

+
+
+ +
+ fig0203 +
+

図2.3●SGmailの実行画面

+
+

SGmailはGPLライセンスのもとで配布を行っています。ソースコードなどは、

+
    +
  • http://www.sgmail.org/

  • +
+

のホームページから入手できます。メーリングリストもあり、

+
    +
  • sgmail-list@sgmail.org

  • +
+

で最新の情報を流しています。興味のある方はぜひ参加してください。

+

— なぜRubyを選んだのですか?

+

Tcl/Tk, Perl/Tk, Ruby/Tkを比較検討した結果、

+
    +
  • Perlに言語のコンセプト(お手軽というところ^^;)が似ている

  • +
  • Perl, Tclより大規模なプログラミングに向いている(ように思った)

  • +
  • 日本語環境が比較的良好

  • +
+

ということで、Ruby/Tkで作成することにしました。また、初めての言語でチャレンジしてみよう、という気持もありました。

+

— Rubyプログラミングで気付いたことはありますか?

+

Rubyを使ってみて「オブジェクト指向もこういう言語なら使いやすいものになるんだな」と再認識しました。

+

また、手軽にRubyで書いたアプリケーションを動かすという意味で、Ruby/Gtkコンパイラがあるとよいですね。

+

— Rubyの良い点、困った点はありますか?

+

やはり、「柔軟で手軽な、しかし本格的なオブジェクト指向」「プロトタイピングに優れている」点が良いです。

+

困った点としては、やはりTk関係のドキュメントが少ないことがありますね。

+
+

— 今後の構想などはありますか?

+

現在、実験版の開発を行っていて、

+
    +
  • POP3モード

  • +
  • MIME送信

  • +
  • PGP/MIME

  • +
  • Plug-in

  • +
+

などを実装する予定です。

+

Tkを使うと一部Tclを使う部分がありますので、できればGtkで動くようにしたいと思っています。

+

また、SGmailだけではなく、SGftpとか、SGircとか、GUIを使ったアプリケーションファミリーを構成していきたいと思っています。UNIX以外のOSでの計画として、

+
    +
  • Windows版のフル機能化

  • +
  • MacOS版

  • +
  • BeOS版

  • +
+

なども考えています。

+

MacOS版に関しては、SGmail仲間に協力してもらっていますが、MacRuby、Mac版Tcl/Tkなどとの絡みもあり、思うようにいっていません。Mac版の開発に協力していただける方を探しています。

+

Rubyとともにより多くのOSで動作するようにしたいと思っていますので「私の環境でも動かしたい」という方がいらっしゃいましたら、ぜひSGmailの開発に参加していただきたいです。

+

— これからRubyを始めようとする人に先輩として一言お願いします。

+

Rubyを通して、プログラミングの楽しさや、面白さを発見してもらいたいです。そしてRubyの良さをじっくりと「味わって」みてください。

+
+
+

コラム2: Ruby利用者インタビュー/
+松尾尚典(まつおひさのり)さん
+聞き手: まつもとゆきひろ

+

次のインタビューは、Webを使った会合調整サーバーであるMeeting2000の作者の松尾さんのお話をうかがいました。

+


+

— まずは自己紹介をお願いします。

+

松尾尚典といいます。世間的には男、32歳、独身、メーカー勤務、趣味ゴルフ、宴会好きなどという属性を持ちます。インターネット業界的には、ForUs(http://www.forus.or.jp/)の会長をやっています。またそのメンバーとして、いくつかのフリーウェアを出してきました。

+

ご連絡などのメールは、

+
+
    +
  • matsuo@present.forus.or.jp

  • +
+

へお願いします。

+

— Meeting2000とはどのようなものですか?

+

会合調整サーバー「Meeting2000」は、会合の幹事にとって最も難しい作業の1つである、参加者の確定および日程や場所の決定作業を支援するWeb上のアプリケーションシステム(付録CD-ROMに収録)です。そのためにシステムは、

+
    +
  • 幹事として、参加予定者の都合を収集したい会合を登録する機能

  • +
  • 参加予定者が、自分の都合を入力する機能

  • +
  • これらの情報を一覧表示する機能

  • +
  • 幹事が、参加予定者の都合に合わせて会合の設定を変更する機能

  • +
+

を備えています。このシステムを利用すれば、会合をより容易に開催することができるようになります。特に会合を開くことの多いコミュニティの方は、ぜひお試しください。作った僕がいうのもなんですが、正直、恐ろしく便利です^^。

+

— なぜRubyを選んだのですか?

+

生産性が(僕にとっては)最も高いというのが大きな理由です。

+

Ruby以前にはPerl 4を使っていました。Perl 4も生産性がかなり高い言語だと思います。僕もフリー物ではMeeting2000の前身のadj_meeting他、Nifty4UというのもPerl 4で書きました。実際Perl 4を気に入っていたのですが、Perl 5が出てからはあえて4を使うのもなんだし、かといって5は何だかなぁという感じで、使いたいと思う言語がありませんでした。Javaもそこそこいいんですけどね、まぁそこそこ。

+

そんなときにRubyと出合い、その書きやすさ、気持ち良さに惚れてしまったわけです。特に僕がアプリケーションを作る道具としての必要十分さ加減が、ちょうどいい感じなのです。書きたいところだけ書けて、あまり手をかけたくないなぁと思うところは書かなくて済む。それが僕にとって書きやすく、気持ちよいと感じるところだと思います。

+

Web上でドキュメントを眺めたときに、ビビビッ(すでに死語)ときましたね。

+

実のところ、私はコードを書くのがそんなに好きなわけではありません。ニーズを見つけ、要求を定義し、分析するまでが好きなのです。実装は誰か他の人がやってくれる、というのが一番^^; そんな私が選ぶぐらいのRubyの生産性の高さがすばらしいと思います。

+

— Rubyの良い点、困った点はありますか?

+

まつもとさんが一人で開発されている、というのがRubyの良い方、悪い方の両方に出ていると思います。

+

良い点は、まつもとさんが一人で開発されているので言語として一貫している、というところです。コードを書いていても言語のせいで迷うことがないし、まつもとさんの言語設計、実装基準を信頼しているという意味で、まつもとさんが開発している限り将来も付き合っていける安心感があります。

+
+

悪い点は、まつもとさんが一人で開発されているので、まつもとさんに何かあったらどうなるんだ、っていう心配です。この前のRuby Conference(’99年3月に行われた宴会)でお聞きしたのですが、そのときはどなたかがあとを継ぐ、ということになってはいるそうです。でもねぇ……。

+

他には現時点では本がないとか、メーリングリストの流量が大きすぎるとか、が困ったところです^^;

+

— 今後の展開などをお聞かせください。

+

Meeting2000は僕にとっては便利なアプリケーションで、今の自分が必要とする機能はあらかた盛り込んであります。それゆえにMeeting2000としての大幅な機能強化は実はあまり考えていません。「英語化」リクエストがいくつか、まつもとさんからもあがっているので、それだけはいつか何とかするつもりです。

+

これだけではなんですので、もうちょっと述べますと、Meeting2000も含めた将来構想として「グループウェアサーバー」を作るかもしれません。これは、Meeting2000などのWeb上で動作するグループウェアのプラットホームとなるものです。これがあるとグループウェアを作るのが楽だよ、みたいな感じです。

+

グループウェアを書きたい方はこの構想にご協力くださいませんか? ruby-listメーリングリスト(本文参照)にて連絡をお待ちします。

+
+
+
+
+

Rubyに関する情報/文献

+
+

Rubyに関する情報の入手法は以下のようなものがあります。

+
+
Rubyホームページ
+

http://www.netlab.co.jp/ruby/(英語)
+http://www.netlab.co.jp/ruby/jp/(日本語)

+

本家本元です。開発者(私)が直接メンテしています。Rubyに関するあらゆる情報がここから入手できます。

+
+
+
Ruby Application Archive
+

http://www.netlab.co.jp/ruby/jp/raa.html

+

Rubyで書かれたアプリケーションやライブラリなどの情報が集まっています。

+
+
+
Unofficial Ruby Home Page
+

http://ruby.freak.ne.jp/

+

「Unofficial」とはいいながら充実した情報がウリのページです。特に過去のメーリングリストのトピックが整理されているのが便利です。

+
+
+ +
FTPサイト(ソースコード入手先)
+

最新のソースは表2.2から入手できます。回線が遅い場合にはミラーサイトをご利用ください。付録CD-ROMには、最新版が収録されています。

+
+

表2.2●Rubyの配布先

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
場所URL
一次配布場所ftp://ftp.netlab.co.jp/pub/lang/ruby/
東京インターネットの
ミラーサイト
ftp://ftp.tokyonet.ad.jp/pub/misc/ruby/
IIJのミラーサイトftp://ftp.iij.ad.jp/pub/lang/ruby/
長岡技科大のミラーサイトftp://blade.nagaokaut.ac.jp/pub/lang/ruby/
熊本地域ネットワーク
(IIJ下流)のミラーサイト
ftp://ftp.krnet.ne.jp/pub/ruby/
名古屋商科大学の
ミラーサイト
ftp://mirror.nucba.ac.jp/mirror/ruby
http://mirror.nucba.ac.jp/mirror/ruby
+
+
+
+
CVSリポジトリ
+

:psrever:anonymous@cvs.netlab.co.jp(パスワードはguest)

+

CVSを使って最新のソースコードを入手できます。場合によってはまだリリースされていない「本当の最新」が入手できることもあります。開発中のソースコードはバグを含んでいる場合もありますから、やや上級者向けです。

+
+
+
CVSWEB
+

http://cvs.netlab.co.jp/cgi-bin/cvsweb/ruby/

+

CVSリポジトリの内容をWebから参照できます。

+
+
+
メーリングリスト
+

メーリングリストはRubyに関するあらゆる情報の宝庫です。表2.3のようにジャンルによって分かれています。非常に活発に質問や議論が行われています。参加するためには、

+
    +
  • ruby-xxx-ctl@netlab.co.jp

  • +
  • (xxxにはそれぞれlist, dev, ext, talkが入る)

  • +
+

に本文に、subscribeと書いたメールを出します。

+
+

表2.3●Rubyに関するメーリングリストの種類

+ + + + + + + + + + + + + + + + + + + + + +
メールアドレス内容
ruby-list@netlab.co.jp一般向け
ruby-dev@netlab.co.jp開発者向け
ruby-ext@netlab.co.jp拡張ライブラリ開発者向け
ruby-talk@netlab.co.jp英語
+
+
+
+ +
ネットニュース
+

fj.comp.lang.ruby

+

Rubyのことを話し合うためのニュースグループも存在します。もっともメーリングリストに流量がとられてしまって、それほど記事は流れていません。もっと活用されてもよいのにな、と思います。

+
+
+
書籍
+

現在執筆中です。年内に数冊出版される予定です。

+
+
+
+

まとめ

+
+

今回はオブジェクト指向スクリプト言語Rubyを簡単に紹介し、さらにその根底にある思想について語りました。しかし、Rubyの「楽しさ」や「使いやすさ」は単なる説明ではとても伝わりません。実際に使ってみることで実感できると思います。どうぞRubyを使ってみて自分の経験でRubyの良さを理解してください。そして、「楽しいプログラミング」を。Happy Hacking.

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-004.xhtml b/docs/vol1/xhtml/p-004.xhtml new file mode 100755 index 0000000..17caf0c --- /dev/null +++ b/docs/vol1/xhtml/p-004.xhtml @@ -0,0 +1,386 @@ + + + + + +第3章 UNIX系OS間の移植性について + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay3 +
+

+UNIX系OS間の
移植性について +

+
+

[TransTECH, 1999年9月号]

+
+

「Rubyの父」としてではなく、歴戦のCプログラマーとして執筆した記事。同じ「UNIX系」と分類されるOSでもそれぞれ違いがあって、移植性のためには考慮すべきことがたくさんあり、それに対応する手段(特にautoconf)について紹介する記事。

+

UNIX系OSは事実上LinuxとmacOSだけと考えてもあまり問題のなくなった現代と違って、1990年代には本当に数多くのUNIX系OSがありました。コンピュータメーカーも今よりもずっと数が多く、それぞれの会社が独自のUNIX系OSを提供していました(表3.1)し、フリーソフトウェアに限っても、LinuxとFreeBSDがいい勝負で、どちらを選ぶか難しいという時代でした。この記事の背景にはそんな「UNIX系OS戦国時代」があります。当時のフリーソフトウェアはみんなこんなに面倒なことをして各種OSに対応していたんですよ。今は移植性を維持するのはずっと簡単になりました。いい時代になりましたね。

+
+

表3.1●コンピューターメーカーとUNIX系OS(代表的なもののみ)

+ + + + + + + + + + + + + + + + + + + + + +
メーカーOS
SunSolaris
IBMAIX
HPHP-UX
DECUltrix
+
+
+
+

はじめに

+
+

人間というのは自分の周りの環境が普遍的なものだと思い込んでしまう傾向があるようです。プログラミングにおいてもそれは例外ではありません。

+

Windows系プログラマーは下手にOS・アーキテクチャともに統一された環境にいるのでますますその傾向が強いようです。

+

一方、UNIX系OSではひとくちにUNIXといってもアーキテクチャも癖もさまざまなOSの集合ですから、このような分野における苦労を積んできています。複数のアーキテクチャで動作するプログラムを書くのはなかなかに大変なことです。各OSに独自の機能を使わなければそれで済むかといえば必ずしもそうでもありません。

+ +

本記事では、複数のOS・アーキテクチャで動作することを考慮したプログラムの開発において気を付けるべき点を簡単に紹介します。

+
+
+

整数のサイズ

+
+

C言語にはいくつかのサイズの整数があります。小さい方から順にchar, short, int, longです(long longがある処理系もあります)。

+

C言語の規格にはそれぞれのサイズは、

+
+
char <= short <= int <= long
+
+

であると定義してあります。逆にいうと具体的なサイズはまったく定義されていないということです。intは16ビットであると思い込むのはDOS時代を生きていた、すでに古いプログラマーですが、intは32ビットであると思い込むのは、同じくらい愚かなことです。

+

かつて汎用機にあったという36ビットとかいうようなヘンなアーキテクチャはとりあえず考慮しないにしても、ありふれた組み合わせだけでも表3.2のようなものがあります。

+
+

表3.2●整数とポインタのサイズ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
charshortintlongvoid*
816163216
816323232
816326464
816646464
832646464
+
+

これらのサイズに暗黙の仮定を行っていると違うアーキテクチャに持っていくと破綻します。特に64ビット整数はこれからCPUの64ビット化に伴い出合うことが増えていくでしょう。

+

私の経験で結構ハマったのは、ポインタのサイズに対する仮定です。以前、あまり意識せずにintとポインタのサイズが同じであること、キャストによって相互変換できることを仮定してプログラミングしていました。

+

ところが、そのプログラムを違うCPU上の同じOSでコンパイルするととたんにクラッシュしました。そのマシンではintのサイズは32ビットですが、ポインタは64ビットでした。キャストすると情報が落ちてしまうのです。

+

結局えらく苦労してサイズへの依存性をなくしましたが、気を付けているようでも意外と暗黙の仮定をしているものです。

+
+
+

エンディアン

+
+

整数のサイズと並んではまる原因になるのはエンディアンです。アメリカ先住民……などとお約束をいうつもりはありませんが、エンディアンとはCPU上でデータをどのように表現するかの決まりです(図3.1)。

+
+ +
+ fig0301 +
+

図3.1●エンディアン

+
+

整数の最上位データをアドレスの最上位に置くのがビッグエンディアンで、その逆がリトルエンディアンです。よく使われるインテル系CPUはリトルエンディアンですし、SunやMotrolaはビッグエンディアンです。中にはMIPSやPowerPCのように設定次第でビッグエンディアンとリトルエンディアンどちらにでもなるというCPUもあります。

+ +

Cレベルではエンディアンが問題になることはほとんどないので、普段はあまりエンディアンを意識することはありませんが、ネットワークやファイルに生のバイナリデータを書き出そうとすると問題になります。リトルエンディアンでの1234という32ビット整数データをファイルに直接書き込んで、ビッグエンディアンのマシンで読み込むと3523477504という値になります。

+

ネットワークプログラミングでは伝統的にビッグエンディアンを使うことがしきたりになっています。このことからビッグエンディアンのことをネットワークバイトオーダーと呼ぶこともあります。

+
+
+

アラインメント

+
+

ほとんどのCPUではある特定の数の倍数のアドレスに対するアクセスが高速になっています。たとえばインテルのx86では、奇数アドレスのデータのアクセスよりも、偶数アドレスのデータのアクセスのほうが高速です。CPUによってはそもそも奇数アドレスに対するアクセスを許さないものもあります(そういう場合には偶数アドレスにアクセスして、シフトする)。

+

そのことを反映して、構造体の各メンバーはその先頭アドレスが特定の数の倍数になるように場合に応じてすき間が入れられることがあります(4または8バイト境界に置かれることが多いようです)。このようなアドレス配置のことをアラインメントと呼びます。アラインメントもプラットフォームごとに異なるので、エンディアン同様構造体を直接書き出したりする場合には注意が必要です。

+

エンディアンとアラインメントについては苦い思い出があります。以前、私が関わっていたプロジェクトで、データ転送の効率化のために、ネットワーク経由で直接生の構造体をやりとりするプロトコルが採用されたことがありました。出力には構造体の内容を直接書き出し、入力には読み込んできたデータを構造体としてキャストするわけです。この方法ではデータを展開したり、解析する必要がまったくないのでプログラミングは簡単で、通信コストも最小で済むということでした。

+

しかし、実際には整数サイズやエンディアンの問題もありますし、そもそも構造体のアラインメントはプラットフォームによってまちまちなので、そのようなプロトコルは危険だと何度か進言しましたが、このプロジェクトではネットワーク全体で同じ機種を用いるのでエンディアンの問題などは将来にわたって発生しないとのことでした。

+

実際には、数年後にその仮定は反故ほごになり、システムに対する別機種の導入が決定され、担当者は通信プロトコル処理部分の総取り換えという大変な目にあうことになります。

+

このことから未来のことは誰にもわからないことと、誰かが断言してもあまり簡単に信じてはいけないことがわかります。ですから、システムの設計にはある程度将来を見越した設計が必要であることもいえると思います。

+
+
+ +

ANSI C/POSIX

+
+

結局、移植性のための大原則は「決まっている以上のことを前提にしない」です。で、その「決まっていること」といえば、やはり規格ということになるでしょう。ここで重要な規格はANSI CとPOSIXです。

+

ANSI CはつまりC言語の仕様です。Cの文法は当然としても、ライブラリルーチンの多くもここで定義されています。この規格の範囲内であれば、UNIX系に限らず、ほぼあらゆるプラットフォームで動くわけですから、ぜひ押えておく必要があります。

+

しかし、ANSI Cには2つの点で限界があります。1つはいまだにANSI Cに対応していない処理系が存在することです。このような処理系にも対応したければ、より古い(そしてより厳密でない)仕様のCを使う必要があります。このような「古いC」をCのバイブルである『プログラミング言語C』という書物の愛称からK&Rと呼ぶことがあります。実際にはK&Rの第2版ではANSI Cを解説していますから、名前だけが慣習として残っていることになります。もっとも、最近ではANSIを満たしていない処理系は少なくなってきましたし、OS付属のCがANSI Cに対応していなくても、gccが使える場合がほとんどですから、この問題は次第に重要ではなくなってきています。

+

もう1つの問題は、世の中のプログラムはANSI Cだけで記述できるプログラムばかりではないことです。ANSIでは入出力を中心とした基本的な処理しか定義されていません。多くのプログラムはOSの提供するさまざまな機能や、より高度なライブラリを要求するでしょう。

+

そのような場合に役に立つのがPOSIXです。POSIXはIEEEという団体が定義したUNIX的OSに関する規格です。POSIXはシステムコールの挙動から、各種ツールの仕様までOSのほぼあらゆる分野を定義しています。ただ、問題は規格が大きすぎて完全に満たしているOSがなかなかないことです。ただ、ライブラリ/システムコールレベルでは多くのOSが満たしていますから、POSIXが重要であることに変わりはありません。

+
+
+

規格を超えて

+
+

規格を押えることはもちろん非常に重要ですが、それだけですべての問題が解決するわけではありません。たとえば、ライブラリの仕様がANSI CやPOSIXで定義されているものとは微妙に異なっているプラットフォームも数多く存在します。

+

歴史的にUNIXには亜流がたくさん存在し、しばしばそれぞれが微妙に異なる仕様を持っていました。POSIXはそれらを統一することが1つの目的でしたが、歴史的な事情から(あるいは別の理由から)、POSIXに準拠していないプラットフォームはいくらでもあります。

+

規格に従っているプラットフォームだけを相手にするのも1つの選択肢ですが、より多くのプラットフォームで動作させたいのであれば、ANSI CやPOSIXなどの規格は結局は参考程度にしか使えない場合が多いでしょう。

+

UNIX系OSでの問題に限っても、すでに述べた整数のサイズやエンディアン以外にも以下のような問題があります。

+
    +
  1. 同機能を持つ別関数
    +たとえば文字列から文字を探す関数はindex()strchr()の両方があり、どちらかしか持たないプラットフォームもあります。

  2. +
  3. 同名で仕様の違う関数
    +たとえばシステムコールのgetpgrp()はOSによって2引数を取る場合と、引数を1つも取らない場合があります。

  4. +
  5. ヘッダーファイルがない/名前が違う
    +たとえばmalloc用のヘッダーファイルとして <malloc.h> というヘッダーファイルがあるプラットフォームも、<stdlib.h> などでカバーするプラットフォームもあります。名前が違う例としては <string.h><strings.h> をあげておきます。

  6. +
+

古い時代のフリーソフトウェアでは、自分のプラットフォームに合わせてソースコードやMakefileの書き換えを要求したり、あるいはリスト3.1のようにプリプロセッサを使ってプラットフォームごとの個別の対応を追加したりしていました。

+
+

リスト3.1●個別の対応

+
#if defined(__hp9000s300) || (defined(__NetBSD__) && (!defined(__alpha__) &&
+ !defined(__mips__))) || defined(__BORLANDC__) || (defined(__FreeBSD__) && 
+__FreeBSD__ < 3) || defined(NeXT) || defined(__WATCOMC__) || defined(__APPLE__)
+...
+#endif
+
+
+
+
+

賢い対応(autoconf)

+
+

では、こんな不毛な対応よりもマシな方法はないのでしょうか。

+

もちろん、あります。

+

ここではこのような問題を解決を支援するツールであるGNU autoconfを紹介します。

+

フリーソフトウェアをコンパイルしたことのある人ならば、GNUソフトウェアを始めとする最近のさまざまなフリーソフトウェアのコンパイル・インストールが、

+
+
./configure
+make
+make install
+
+

という簡単な3ステップで行えることに気付いていることでしょう。このconfigureというプログラム(シェルスクリプト)が、そのプラットフォームで使える機能を確認して、その情報を取り出してくれるので、各プラットフォームの持つ機能に応じたコンパイルを行うことができます。

+

このconfigureというプログラムを生成してくれるツールが、autoconfです。

+ +

autoconfを引数なしで起動すると、カレントディレクトリにあるconfigure.inというファイルからconfigureプログラムを生成します(図3.2(a))。

+

configure.inに限らず、autoconfではファイルを生成する元になるファイルに .inという拡張子を付けることになっています。

+

このconfigureが実行されると、さまざまなチェックを行い、そのプラットフォームにおいてどのような機能を使うことができるかを検出してくれます。そして、その検出結果を反映したファイルをテンプレートから生成します(図3.2(b))。生成されるのは普通はMakefileです。

+
+ +
+ fig0302 +
+

図3.2●autoconf

+
+
+

autoconfによるチェック

+

configureでは以下のようなさまざまなチェックを行うことができます。

+
    +
  • 関数の存在チェック

  • +
  • ライブラリの存在チェック

  • +
  • ヘッダーファイルの存在チェック

  • +
  • 整数や各種データ型のサイズチェック

  • +
  • エンディアンのチェック

  • +
  • 各種ツール(コンパイラ・リンカなど)の挙動チェック

  • +
  • alloca/signalなど代表的なプラットフォームでの相違

  • +
  • その他、ほぼあらゆるチェック

  • +
+

具体的なconfigure.inの記述の抜粋をリストリスト3.2に示します。

+
+

リスト3.2●configure.inの記述(抜粋)

+
AC_INIT(main.c)       # 初期化(必ず存在するファイル名を指定)
+
+AC_PROG_CC            # コンパイラのチェック
+AC_PROG_INSTALL       # インストールプログラムのチェック
+AC_PROG_YACC          # yaccのチェック
+
+AC_C_CONST            # constがないコンパイラのチェック
+AC_C_INLINE           # inlineがないコンパイラのチェック
+AC_C_BIGENDIAN        # エンディアンのチェック
+
+AC_CHECK_SIZEOF(int)  # 整数のサイズチェック
+
+AC_TYPE_GETGROUPS     # 典型的な互換性チェック
+AC_FUNC_ALLOCA
+
+AC_HAVE_HEADERS(string.h)
+      # 関数の存在チェック
+AC_CHECK_FUNCS(strtoul)
+
+AC_OUTPUT(Makefile)   # 雛型(Makefile.in)からMakefileの生成
+
+
+ +

configure.inの中ではリストリスト3.2の中に登場するものを始めとして、さまざまなチェックを行うことができます。実際、ポータブルなプログラムを記述するために必要なほとんどあらゆるチェックを網羅しているといえます。詳細はここでは説明しきれませんので、autoconfのドキュメントを参照してください。

+

ここではautoconfの多彩なチェック機能のうち、特徴的だと思われる実際にプログラムのコンパイルを行うことによるチェックについて紹介します。

+

リスト3.3に、実際にコンパイルを行ってチェックを行う例を示します。これはCプリプロセッサマクロでの識別子の連結にANSIスタイルで新しく定義された ## を使うスタイルか、それとも古いK&Rで使われていた空のコメントを使うスタイルのどちらが使えるかを判定するものです。

+
+

リスト3.3●コンパイルによるチェック例

+
AC_TRY_COMPILE([#define paste(a,b) a##b],
+           [int xy = 1; return paste(x,y);],
+           rb_cv_tokenpaste=ansi,
+           rb_cv_tokenpaste=knr)
+if test "$rb_cv_tokenpaste" = ansi; then
+  AC_DEFINE(TOKEN_PASTE(x,y),[x##y])
+else
+  AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y])
+fi
+
+
+

この指定により、プログラムではコンパイラの種類にかかわらず、TOKEN_PASTE(x,y)というマクロを使うことで、識別子の連結を行うことができます。

+
+
+

Makefile.in

+

configureの実行によって生成されるMakefileの雛型になるMakefile.inの例をリスト3.4に示します。

+
+

リスト3.4●Makefile.in

+
CC = @CC@
+YACC = @YACC@
+
+CFLAGS = @DEFS@
+OBJ = main.o
+
+main:   $(OBJ)
+    $(CC) $(LDFLAGS) $(OBJ) -o $@
+
+
+ +

Makefile.inの中に@CC@とか@DEFS@という文字列が登場します。この@〜@で囲まれた文字列がconfigureの検出結果に置き換わってMakefileが生成されます。生成されたMakefileリスト3.5に示します。

+
+

リスト3.5●生成されたMakefile

+
# Generated automatically from Makefile.in by configure.
+CC = gcc
+YACC = bison -y
+
+CFLAGS =  -DSIZEOF_INT=4 -DGETGROUPS_T=gid_t -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -DHAVE_STRING_H=1 -DHAVE_STRTOUL=1 
+OBJ = main.o
+
+main:   $(OBJ)
+    $(CC) $(LDFLAGS) $(OBJ) -o $@
+
+
+

@CC@はCコンパイラの名前、@DEFS@configureによって検出された各機能がプリプロセッサ用の定数として定義されていることがわかるでしょう。

+

プログラムのほうではこれらの定数を参照して、移植性の高いソフトウェアを開発することができるわけです。

+

autoconfを使っても違いを検出できるだけで、検出した結果を利用して移植性のあるプログラムを書くことは自分で行わなければなりません。残念なことにこの作業は(まだ)自動化できませんが、各種のOSで確実にコンパイルできるソフトウェアの記述はもはやautoconfなしには考えられません。

+

どのような条件を検出し、どのように対応するかは、それだけでも難しい問題です。しかし、幸いたくさんのプログラムのソースコードが公開されていますから、それらを参考にすることで多くのことを学ぶことができます。

+
+
+

configure.inの自動生成(autoscan)

+

configure.inの記述はなかなか複雑です。このような点をカバーする方法としてautoscanというプログラムが提供されています。autoscanを引数なしで起動すると、起動されたディレクトリに存在するソースコードをスキャンして、最低限必要と思われるチェックを含むconfigure.inの記述をconfigure.scanという名前で生成してくれます。このファイルに少々手を加えてconfigure.inという名前に置き換えれば、とりあえずautoconfを使ってconfigureを生成することができます。

+ +

autoscanの生成するconfigure.inは完全なものではありませんが、最初のとっかかりとしては十分なものを生成してくれます。あとは、これに手直しをしていくことで比較的容易にautoconf対応に移行することができます。

+
+
+

autoconfのインストール

+

autoconfの最新バージョンは2.13です。autoconfの実行にはマクロプロセッサのm4がインストールされている必要があります。

+

autoconfのインストールも、

+
+
./configure
+make
+make install
+
+

で完了します。autoconf自身がconfigureを利用しているのは面白いですね。

+

autoconfautoscanはそれ自身はGPL(GNU General Public License)が適用されるGNUソフトウェアですが、autoconfなどを使って生成したconfigureスクリプトは自分の望むライセンスで配布することができますから、GPLが使えない局面でもautoconfを利用することができます。

+
+
+

autoconfの仲間

+

誌面の関係から詳しくは説明できませんが、autoconfの仲間には、Makefile.inの生成を支援し、make時の標準的なルールを自動生成してくれるautomake, そして、種々のプラットフォームにおけるそれぞれに異なるダイナミックリンクライブラリの生成法を統一的に扱えるlibtoolがあります。

+

これらのツールおよびautoconfの詳細については

+
    +
  • http://www.gnu.org/software/autoconf/autoconf.html

  • +
  • http://www.gnu.org/software/automake/automake.html

  • +
  • http://www.gnu.org/software/libtool/libtool.html

  • +
+

を参照してください(英文)。

+
+
+
+

非UNIXへの移植

+
+

autoconfを用いても、各種プラットフォームに対応した移植性の高いプログラムを書くことはそれなりに大変ですが、ここまで対応すれば、かなりの確率で非UNIX環境でもコンパイルできます。

+

各種非UNIXプラットフォームにはUNIX系ソフトウェアのコンパイルを支援する処理系やツールが提供されています(表3.3)。これらを利用すれば、かなりのプログラムを動作させることができます。この中でも特にCygwin32は優れもので、シェルが提供されていますからconfigureスクリプトをそのまま動かすことも可能ですし、普通に考えればUNIX環境に固有に思えるXウィンドウシステムを使ったプログラムまでコンパイルできます。

+ +
+

表3.3●UNIXソース用ツール

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
DOSDJGPPコンパイラ + 32ビットエクステンダ + ライブラリ
WindowsCygwin32コンパイラ + ライブラリ + 各種ツール
MacMachTENコンパイラ + ライブラリ + 各種ツール
MacMWPコンパイラ + ライブラリ + 各種ツール
OS/2EMXコンパイラ + ライブラリ
+
+
+
+

まとめ

+
+

本記事では移植性を妨げる問題と、それに対する対応について駆け足で説明しました。限られた誌面では十分な解説はできませんでしたが、何かのきっかけになればと望んでいます。

+

移植性について学ぶ最善の方法は、実際に各種プラットフォームで動作するプログラムのソースコードを眺めることです。現在では各種フリーソフトウェアのソースコードが比較的容易に入手できます。移植性という観点からフリーソフトウェアを見てみるのも面白いかもしれません。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-005.xhtml b/docs/vol1/xhtml/p-005.xhtml new file mode 100755 index 0000000..f2b519c --- /dev/null +++ b/docs/vol1/xhtml/p-005.xhtml @@ -0,0 +1,227 @@ + + + + + +第4章 スクリプト言語の歴史 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay4 +
+

+連載 スクリプト言語
+スクリプト言語の歴史 +

+
+

[bit, 2001年2月号]

+
+

私が高校生の頃の憧れの雑誌、『bit』への寄稿です。近所の本屋には置いてなくて、わざわざ取り寄せたのですが、アカデミックな雰囲気の『bit』は当時の私には手に負えなかった記憶があります。その10数年後にはその雑誌に原稿を書くまでになるとは。

+

この記事では、Rubyの作者という立場を離れて、スクリプト言語全般の流れをまとめています。当然のようにRubyの紹介部分は自画自賛満載ですね。

+

これは『bit』の「スクリプト言語」特集の連載の一部でした。当時はPerl, Python, Rubyと言った「スクリプト言語」がかなり注目されていたんですね。このすぐあとに、これまでの「スクリプト言語」という概念を置き換えるようなLL(Lightweight Language)という単語も登場して、注目はますます高まります。この記事の中でも、スクリプト言語の未来について予想していますが、「スクリプト言語の適用分野がテキスト処理を超えてますます広がる」という予想は、かなり当たったのではないかと思います。もっとも、JavaScriptを含めたスクリプト言語は、テキスト処理言語というよりもむしろ、Webアプリケーション向け言語と認識される未来は想像を超えましたし、さらにこのジャンルの多くの言語が(PHPやPython, TypeScriptのように)積極的に静的型宣言を受け入れるとはまったく予想できませんでした。

+
+
+

スクリプト言語の歴史とは?

+
+

前回のスクリプト言語座談会1 に参加したいきがかり上、「スクリプト言語の歴史」について記事を書いてほしいとの依頼を受けた。「私は若いから歴史は知りません」と答えたのだが、押し切られてしまった。額に「お人好し」とポストイットが貼ってあるらしい。

+

引き受けたはいいが、知らないものは本当に知らないのだからしょうがない。ここは、実体験に基づかない、言語オタクの耳学問から歴史を再構成することとしよう。

+
+
+ +

スクリプト言語の3世代分類

+
+

ここで前回の座談会でも紹介した「スクリプト言語の3世代分類」を改めて紹介しておこう。個人的な見解だが、いわゆるスクリプト言語と呼ばれるものは、実は3つの世代に分類できると考えている(表4.1)。

+
+

表4.1●スクリプト言語の3世代分類

+ + + + + + + + + + + + + +
第1世代処理に制御構造を導入するためのもの。アドホックな文法。できないことは外部ツールに任せちゃう。「シェル」「awk」など
第2世代とりあえず、何でも自分でできる程度に機能強化。第1世代のアドホックさを残している。「Perl」
第3世代第2世代を踏まえつつ、もっと「普通」のプログラミング言語になったもの。「Python」「Ruby」
+
+

これはどういうことかと考えるに、おそらく、玩具やツールボックスのたくさんある1つのツールにすぎなかった第1世代のスクリプト言語が、そのよい性質のゆえにだんだんと機能が強化され、普通のプログラミング言語のレベルに(そのよい性質を保ったまま)成長してきた、ということではないかと思う。

+

そこでスクリプト言語の本質を見極めるためにも、進化論よろしく、スクリプト言語の進化をたどることにしよう。ただし、先にも言い訳したとおり、筆者はこの歴史を体験してはいないので、適当に自分に都合のいいように歴史を再構成していることは了承していただきたい。

+
+
+

スクリプト言語の出発点: シェル

+
+

スクリプト言語にとっての原点となる存在は、やはりシェルだろう。シェルと、それ以前のJCL(job control language)との違いは、きっと「気軽に実行できるかどうか」ではないだろうか。バッチ時代のJCLを気軽に実行できるリッチな人は、あまりたくさんはいなかったのではないだろうか。

+

もう1つ、シェルのスクリプト言語たる理由は、柔軟なデータ構造の存在ではないかと考えている。といっても、それはシェルの場合、単なる「バイト列のストリーム」なのだが、この単純かつ柔軟なデータ形式が、ツールをつなげたり、データを加工したりするのに大変な威力を発揮したのだ。UNIX使いは今でも日々お世話になっている。

+

筆者の分類では、シェルは第1世代のスクリプト言語なので、あまり大規模プログラムや、当初の目的を超えた汎用のプログラムを作るような目的には向かない。向かないはずだが不可能ではないので、超巨大なプログラムを書く人も多々いたらしい。私はそんなプログラムにお目にかかりたくはないが、いにしえの超人にはそんなものは屁でもないらしい。

+

UNIX上のシェルにはsh(いわゆる、Bシェル)とcsh(Cシェル)の双方があるが、個人的にはcshは言語として謎が多すぎると思っている。大概はあとから出たもののほうが優れているのに、これは珍しい例外である。Cシェルの問題については以下のURLを当たられたい。

+ +

これを読むとcshは使いたくなくなるのではないだろうか。少なくとも、私はそうだった。

+
+
+

スクリプト言語のもう1つの原点: awk

+
+

初期のスクリプト言語で重要な位置を占めるものとしては、シェルの他にawkがあげられる。awkほど世代を反映する言語も珍しい。実際あちこちで現役で働いていて、ちょっとしたシェルスクリプトの中にはたいてい、こっそり隠れていたりする。UNIX黎明れいめい期(といってもさほど昔ではないが)を経験した人々はPerlよりもついawkを使ってしまったりするらしい。しかし、最近はLinuxのシェルスクリプトなどでは、awkの代わりにPerlが隠れていたりするので、どうも最近の人はawkにあまり遭遇する機会がないらしい。

+

今、awkはスクリプト言語の歴史的にみて重要な位置を占めていると述べたが、その理由は2つある。1つは、ちょっと複雑なフィルタを書くのに最適な言語であったことである。awkはgrepとsedとCを足して4で割ったような2 言語であるが、入力を加工して出力するという単一の目的に対して非常に特化している。

+

もう1つの理由は、awkが「シェルよりもちゃんとした言語」であったことであろう。あとでより詳しく述べるが、スクリプト言語の進化の歴史は「ちゃんとした言語」への進化の道である。awkが「よりちゃんとした言語」であるPerlに主役の座を譲ったのはむしろ歴史的な必然であったのだろう。

+
+
+

スクリプト言語の転換点: Perl

+
+

このようにして発生したと考えられるスクリプト言語の転換点はやはりPerlであろう。Larry WallによるPerlはawkの後継あるいは代替として開発が開始されている。

+
+

Larryは最初に考えた。「awkを使おう。」しかし困ったことに、当時のawkはファイルから得られた情報を基に、複数のファイルをオープン、クローズすることはできなかった。Larryは、ある目的にしか使えないツールを書きたくなかったので、結果として新しい言語が誕生したのである。

+

(『プログラミングPerl』8.7節より引用)

+
+

ということは、当時からnawkがあればPerlは発生しなかったということである。

+

Perlはawkと比較して以下の点で画期的であった。

+
+

awkのルールベースのプログラム構造から解放された

+

awkは標準入力に対してパターンごとに処理を登録するという、ある種のルールベースのプログラム構造が強要されていた。Perlはそれを捨て、より「普通」のプログラム言語になっている。これは、フィルタ用言語としての役割を捨てることで、結果として言語の適用範囲が広がったと考えられる。

+ +

たくさんの機能を取り込んだ

+

Perlは“feeping creaturism”3 とまで呼ばれるほど、インタプリタに機能強化を繰り返した。これは「小さいことはよいことだ」をモットーに、小さいツールを組み合わせるというUNIXの美徳(ツールボックスアプローチ)を捨てることとなった。この考え方はUNIX的ではないが、Emacsのような前例はある。事実なかなか便利なやり方だ。

+

関数、ライブラリのロード、パッケージなどの機能が導入された

+

これもまた、より「普通」の言語に近づいたということだが、これにより「スクリプト言語は小さいプログラム用」という前提を捨て、大規模なプログラムにも適用されるようになったと考えられる。もっとも、これらの機能にもかかわらず、Perlの大規模プログラムは多くの場合やはり悲劇のようだ。

+
+

つまり、awkにあったいくつかの前提あるいは思い込み(「特定目的」「単機能ツール」「小規模プログラム向け」)を捨てることにより、Perlは新境地に達したと考えられる。Larry Wallがこれらの点をどれだけ意識したかはともかく、結果としてPerlがこれらのことを捨てたことにより、現在のスクリプト言語があると考えられる。ほぼすべてのオブジェクト指向言語が何らかの形でSmalltalkの影響を受けているように、ほぼすべてのスクリプト言語が何らかの形でPerlの影響を受けているというのは言い過ぎではないと思われる。

+

Perlは確かに便利だ。UNIXにおけるテキスト処理やシステム管理に必要な機能を不足なく提供していることや、コンパイラ型言語による最高速ではないものの、そこそこ高速な処理などから、それ以前のツール(シェルやawk)はちょっと使う気にならないくらいだ。

+

しかし一方で、Perlは多くの批判を受ける言語でもある。Perlの困った点は「利用者を迷わせる」ということだ。PerlのモットーであるTMTOWTDI(There’s More Than One Way To Do It — やり方はいくつもある)ということは、それはそれでかまわないのだが「ありそうないくつかのやり方のうち、(諸般の理由により)いくつかは受け付けられない」というのが一番つらい。「記号が多くてぱっと見ただけではプログラムの意味がわからなくなる」のと相まって、Perlのプログラムについては、昨日の自分は別人だと思ってかからねばならない。

+

これは、Perlが、まだ「普通」の言語から遠かった第1世代スクリプト言語の特徴を引き継いでいるせいではないかと考えられる。また、たび重なる仕様強化で一貫性を失ったのかもしれない。Perlは開発が進むたびに(ある種アドホックに)機能を加えられ、バージョン5においてはとうとうオブジェクト指向機能さえ身につけている。

+

しかし、この批判の原因はそれだけでなく、Larry Wallの言語仕様に対する考え方が、他の言語設計者と一風変わっていることにあるだろう。彼は自然言語をモデルにしたと述べている。どうも大学時代に言語学を専攻したそうで、そのへんも影響しているのかもしれない。「自然言語の文法はもっと複雑であいまいだが、毎日使うのに不自由はしない」といわれると、一瞬納得しそうになる。が、たとえ納得したとしてもPerlのプログラムを読むのがつらいという事実は少しも変わらないのだった。

+
+
+ +

新たな適用分野: Tcl

+
+

Tclという言語がある。“Tool Command Language”の略だが、たびたびスクリプト言語に分類されているようだ。スクリプト言語という単語は間口が広いので、そう分類することには別に何の問題もない。言語仕様だけを見ると、Tclは第1世代としようか、第2世代にしようか、迷うレベルである。データ型は文字列しかないし、機能もそれほどない。しかし、文法構造は単純だが拡張性があるのでなんとか第2世代にしてもよいか、という感じにとらえている。もともとアプリケーションへの共通組み込み言語として開発されたのだから無理もない。当初の目的には合致しているといえよう。

+

しかし、Tclの注目すべき点はそこではない。Tk(ToolKitの略らしい)と呼ばれるGUIライブラリである。Tclが今まで生き残っているのも、組み込み言語ではなく、スクリプト言語と呼ばれるのも、みんなこのTkが原因であろう。Tkは当時としては性質のよいGUIライブラリであったが、画期的な点は、インタプリタ型言語と一体になったGUIライブラリがこれほど使いやすいということを世の中に広く知らしめた点である。

+

もちろん、Lispなどインタプリタのある言語からアクセスできるGUIライブラリは以前からあったのだが、庶民にはやや高根の花という印象があった。Tclは誰にでも簡単に入手できて、「使えるツール」という印象を与えたのが成功の秘訣ひけつだろう。しかし、Tcl以前にもWinterpのような、インタプリタ型言語(Winterpの場合はxlisp)から、GUIライブラリ(Xt)を操作できる処理系はあったのだが、なぜ広まらなかったのだろうか。やはりLispは(かっこが)嫌われるのだろうか。

+

しかし、考えてみればGUIというのはインタプリタ型処理系に向いた分野である。人間の反応速度はインタプリタで対応できるほど十分に遅いし、しかも、よいインターフェイスの実現にはある程度試行錯誤が要求されるので、手早い開発サイクルが重宝される。一時GUIビルダがもてはやされた時期があったが、インタプリタ言語とGUIライブラリの組み合わせは、WYSIWYG性には劣るかもしれないが、それに勝る開発効率を提供する。

+

かくしてTkは愛され、さまざまな言語(Perl, Python, Rubyなど)からのインターフェイスが提供されることとなった。TkはいまだにTclと不可分であるにもかかわらず、使いもしないTclインタプリタを一緒にリンクすることになってでも、各言語に対するTkインターフェイスを提供しようという熱意は、Tkに対するあこがれというよりは、Tclに対する不満が原動力になっているような気がする。

+

Tclは、やはり組み込み言語として作られたがゆえに、特にデータ型が文字列しかない点でどうにも使いにくいからだ。Tclは、一時の勢いは感じられないものの、現在でもファンを維持している。

+
+
+

より「普通」の言語に: Python

+
+

スクリプト言語の進化の方向が「ちゃんとした言語」への進化であるとするならば、Pythonはある意味その究極の位置にいると考えることができる。Pythonは、インタプリタ型、変数・式に型がない、変数宣言がほぼ不要、というスクリプト言語伝統の特徴をかろうじて備えているが、それらを除けば、ほとんど「普通」のプログラミング言語である。PythonはModulaなどに見られるようなモジュールシステムや例外処理機能を備え、オブジェクト指向機能も最初のバージョンから提供している。

+
+

このような性質は、Lispのような伝統的にはスクリプト言語と見なされないが、インタプリタが主体として提供される言語とまったく差がない。むしろ、制御構造などについてはより近代的(≒最新流行に近い)といえる。

+

Perlに至るまでのスクリプト言語には、UNIX的というか、C的というか、楽観的で自己責任の原則に従う傾向があるのだが、Pythonの設計思想はなんとなくPascalのような「正しさ」を強調しているような気がする。

+

Pythonの面白い点は、ブロック構造をインデントによって表現することだ。これはスタイルの多様性を減らす目的があるということだ。むやみに多様性を強調するPerlとは違う道を歩むつもりらしい。他にブロック構造をインデントで表現する言語といえばOccamがある。イギリス出身のOccamといい、スイス出身のPascalといい、オランダ生まれのPythonはヨーロッパ生まれの言語の影響を大きく受けているのだろうか。

+

Pythonについて、歴史的に重要なのは、スクリプト言語の領域に初めてオブジェクト指向を大々的に取り込んだという点である。Pythonのオブジェクト指向機能は、すべてのデータがインスタンスでない、という若干の制約があるものの、全般としてかなり筋がよい。一説にはPerl 5のオブジェクト指向機能にも影響を与えたのだということだ。Python以後のスクリプト言語と呼ばれるものが、ほとんど例外なくオブジェクト指向機能を備えるのは、多くの場合、直接あるいは間接的にPythonの影響であるといえるのかもしれない。

+

Pythonは「Perlよりマシな言語」として、現在でも人気上昇中である。特に海外での評判は高く、infoseek.comやyahoo.comで使われていたという話も聞くが、最近はパフォーマンス上の理由からC(またはC++)で置き換えられたらしい。国内では、あとに述べる「ある理由」により、さほど人気は出ていない。

+
+
+

オブジェクト指向スクリプト言語: Ruby

+
+

さて、その「Pythonが人気が出ないある理由」について説明しよう。

+

それは「Pythonキラー」とでも呼ぶべき言語が存在するからである。プログラミング言語にしては珍しく、日本で設計され、日本から広がり始めたその言語はRubyという名前である。

+

と、もったいぶって紹介したが、実はRubyは筆者によって開発されたスクリプト言語である。開発者自身による解説などというものは客観性がなく信じるに足らないものであることが多いのだが、この文も例外ではない。以下は眉に唾をつけて読んでいただきたい。そして、Rubyを入手して本当かどうかご自分で確認していただけるとありがたい。

+

Rubyの開発開始は1993年である。Pythonが1989年、Perlが1980年代半ばであることを考えるとかなり新しい。実際にRubyを作り始めたときには、PerlのこともPythonのことも知っていて、それでもまだ不満に感じた部分があったのが最初のきっかけである。もっとも、作り出した原動力になったのは既存の言語に対する不満というよりも、「自分の言語を作りたい」という創造に対する意欲だったように思う。

+

Rubyのほうがあとから開発が始まったので、Rubyの仕様にはPerlやPythonに対するアンチテーゼとなる部分が散見される。目指すはBetter Perl Than Perlであり、Better Python Than Pythonである。

+

これらの言語と比較したRubyの特長は、以下のとおりである。

+
+ +

変数に型情報を持たない

+

Perlは変数のプリフィックスよって変数のデータ型を指定している(スカラー型、配列型、ハッシュ型、グロブ型)。一方、Rubyも変数名にプリフィックスを使っているが、指定しているのは型ではなく、スコープである。データ型は変数ではなくすべてオブジェクトが持つ。Pythonはこのようなプリフィックスをいっさい持たない。

+

すべてのデータがオブジェクト(インスタンス)

+

Perlは、それぞれのデータ型ごとに挙動が異なる。Perl 5以降ではデータに対するリファレンスとして、ある程度統一的に扱えるようになったが、デリファレンス時に悪夢が再現する。

+

Pythonはすべてのデータはオブジェクトであるが、組み込みのデータ型のほとんどはオブジェクトであっても、クラスのインスタンスでない。このことによってオブジェクトの統一的な扱いができない場合がある。もっとも、Python陣営はこの点を認識していて、未来のバージョンであるPython 3000では、すべてを本物のオブジェクトに統一しようと計画しているらしい。

+

Rubyは、すでにすべてのデータが本物のオブジェクトである。すべてのオブジェクトは、何らかのクラスに所属するインスタンスであり、すべてのクラスはObjectを頂点とするクラス階層を持つ。

+

使える継承機能

+

PerlもPythonも、そのオブジェクト指向機能によって多重継承をサポートしている。一方、Rubyは少々意外だが単純継承しかサポートしていない。これはRubyのほうが劣っているというわけではない。PerlやPythonが深さ優先の検索を行う、事実上あまり使いものにならない多重継承を提供しているのに対して、Rubyのほうは単純継承とMix-inと呼ばれる補助的な継承機能を組み合わせることで、実質、多重継承相当の「使える」継承機能を提供している。

+

ほどほどのスクリプト言語らしさ

+

ここまで、スクリプト言語の進歩は「普通の言語」への道であり、Pythonに至ってある点まで行き着いたように感じられる。Rubyでは少々スクリプト言語的要素を取り戻している。たとえば、組み込みの正規表現であり、バッククオートによるコマンド出力である。

+
+

筆者は成功していると自画自賛しているが、読者の皆さんはどう感じられるであろうか。

+

さあ、宣伝はもう十分だろう。次に行こう。

+
+
+

スクリプト言語の性質

+
+

ここまで、スクリプト言語と呼ばれるいくつかの言語をほぼ時系列に眺めてきたわけだが、共通する性質が見出せただろうか。筆者なりにまとめると、以下のようになる。

+
+

インタプリタ型

+

厳密には、インタプリタであるかコンパイラであるかは、言語の問題ではなく処理系の問題なのだが、変数や式に型がないとか、evalがあるなどの動的な性質の多い言語は、インタプリタ向けの仕様といえないことはない。スクリプト言語と呼ばれる言語は例外なく、主要な処理系がインタプリタである。

+
+

テキスト処理

+

スクリプト言語の多くは、テキスト処理向けの機能を持つ。たとえば、強力な文字列操作関数や正規表現など。が、これは絶対的な条件ではなく、たくさんの例外がある。

+

高級なデータ構造

+

シェルのバイトストリームを高級と呼ぶのは少々はばかられるが、柔軟でありメモリ管理が不要である点から、ここでは高級と分類する。ほとんどのスクリプト言語は、動的で「高級な」データ構造を持つ。たとえば、awkには連想配列があり、データ型として文字列しかもたないTclでも、それをリストや数値として自在に操作できる。

+

外部との積極的な関わり

+

個人的に、スクリプト言語の性質としてかなり重要だと思っているのが、この外部との関わりである。たとえば、OSの諸機能を呼び出したり、外部のプロセスと通信したりすることで、システムをつなぐグルー(のり)の働きを行ったり、システムの一部に取り付いて、システムにプログラマブルな性質を付与したりする働きは、スクリプト言語の重要な役割であろう。

+

イメージ

+

なにより重要なのは「スクリプト言語」というイメージだろう。なんとなく、かっこいい感じがしないだろうか。結局、ある言語がスクリプト言語かどうかを決めるのは、設計者がこのはスクリプト言語だというメッセージを言語にどれだけ込めるかに依存するような気さえする。

+
+
+
+

スクリプト言語でなさそうなもの

+
+

スクリプト言語と同じような性質を持っていても、必ずしもスクリプト言語と呼ばれないものもある。

+
+

Lisp

+

Lispはインタプリタが主体となる言語であり、原則的に変数や式に型がなく、動的な性質も持っていて、スクリプト言語として十分な性質を持っているように思われるが、なぜかスクリプト言語とは呼ばれない。GuileやScsh(Scheme Shell)などは結構がんばってると思うのだが、まだ定着しない。

+

なぜかと考えるに、歴史的に、テキスト処理や外部との関わりの点で弱かったのと、やはりあの大量のかっこが庶民に好かれていないのが原因ではないかと思われる。それと現時点ではスクリプト言語には「新参もの」というイメージがあり、なんだか太古からあるLispはスクリプト言語らしくない気がする。いや、思い込みなのだが、スクリプト言語はイメージなのだ。

+

BASIC

+

インタプリタ型の言語といえば、BASICもそうだ。これもまたスクリプト言語と呼ばれないのは、歴史的に、外部との関わりの点とデータ構造が単純すぎる点に問題があったからだろう。庶民的すぎてもスクリプト言語にはならないらしい。現代のBASICではそれらの点はすでに改善されていても、まだイメージはつきまとうものだ。

+

Smalltalk

+

SmalltalkもLisp同様だ。フリーの処理系が長らくなかったことも影響しているかもしれない。

+
+
+
+ +

傍流スクリプト言語

+
+

ここまでが、「私の考えるスクリプト言語」である。

+

しかし、先月号の座談会を見てもわかるとおり、違う見解を持つ人も多いらしい。たとえば、JavaScriptやVBScriptのようなものもスクリプト言語と呼ばれる。これは上記のスクリプト言語の性質のうち、多くを満たしていないが、インタプリタ型であり、外部(この場合はブラウザなど)と積極的に関わろうというという点は満たしている。そしてなにより名前がスクリプト言語であると主張している。

+

これらの言語はテキスト処理などを主眼とした旧来のスクリプト言語とは毛色は違っているが、スクリプト言語の今後の主流になるかもしれない。しかし、これらの言語には、拡張性などの点で、できればもうちょっと「普通の言語」らしくなってほしいものだ。

+
+
+

スクリプト言語の未来

+
+

結論として、スクリプト言語の未来を予想してと思ったのだが、まったく想像力が働かない。現状で満足してしまっているのだろうか。人間の中身はそれほど速くは進化しないので、未来の言語の言語もやはり今と大差ないような気がする。ただ、スクリプト言語のイメージはこれまでも変わってきたように今後も変わるだろう。適用分野も現在のテキスト処理中心からあらゆる分野に進出するのではないだろうか。

+

望むのは「手軽なプログラミング」が行える言語が広まって、どこでも自由にプログラミングが行える未来だ。そんなプログラマー天国が実現するのだろうか。するといいなあ。

+
+
+
+
+
    +
  1. +

    編集部注: 『bit』2001年1月号。「連載 スクリプト言語第1回【座談会】スクリプト言語とは」のこと。 +

    +
  2. +
  3. +

    「3で割る」ではなく「4で割る」のは、awkの仕様はかなり小さめなので、3で割っては大きすぎるから。 +

    +
  4. +
  5. +

    “creeping featurism”のもじり。放っておくとどんどん機能が増殖することを正当化する言葉。 +

    +
  6. +
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-006.xhtml b/docs/vol1/xhtml/p-006.xhtml new file mode 100755 index 0000000..76b91a6 --- /dev/null +++ b/docs/vol1/xhtml/p-006.xhtml @@ -0,0 +1,46 @@ + + + + + +第5章 Ruby最古のユーザーとしての開発環境 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay5 +
+

+特集 開発ツールをもっと便利に使おう
+最強の開発環境を求めて
+Ruby最古のユーザーとしての
開発環境 +

+
+

[C Magazine, 2001年11月号]

+
+

著名な開発者に開発環境を聞こうという企画の一環で私の開発環境を紹介する記事。他にどなたがいらっしゃったのか覚えてませんねえ。結局は、EmacsとUNIX系OS(Linux)というのが答えでした。また、デスクトップ環境はFVWMにEmacsとKtermとNetscapeを重ね合わせるというシンプルな構成でした。20年後はどうかというと、相変わらずLinuxを使い、デスクトップ環境こそFVWMでなくXFCEですが、全画面サイズでEmacsとxfce4-terminalとFirefoxを重ね合わせる構成は大して進歩していないのでした。

+
+

私は自分をRubyの最古のユーザーであると考えています。ま、そりゃそうでしょう。私が作ったんだから。でも、実際には時間としては「Rubyを」開発している時間が圧倒的に長く、「Rubyで」開発している時間はそれほどでもありません。読者の皆さんの中では私よりはるかに長い時間Rubyで開発しておられる方がいらっしゃるのではないでしょうか?

+

そういう私の開発環境はやはりEmacsです。私はEmacsがなければ何もできません。EmacsでC言語のプログラムを書き、コンパイルし、gdbを使い、CVSにコミットし、メールを読み、返事を書き、ニュースを読み、原稿を書き、プレゼンテーション資料を用意します。でも、Webを見るときにはNetscapeです。

+

世の中にはEmacsとViのどちらがよいかというテーマの論争が長く続けられていると聞きますが、私には信じられません。この2つは違うものです。Viはエディタですが、Emacsは環境です。私だってViも使います。rootになって設定ファイルを修正するときには主にViを使います。それから自分が普段使っていないマシンにログインしたときもViを使います。環境としてのEmacsが不要のときに単なるエディタとしてEmacsを使う必要はないでしょう。両方使い分ければよいのです。

+

というか、私のEmacsは .emacsなどでコテコテにカスタマイズされているので、環境としてのEmacsが使えない上記のような状況で素のEmacsを使うのは、かえって苦痛なのです。発狂しそうになります。私は日本語入力のキー配列すらカスタマイズしているので、ローマ字入力さえ苦痛です。逆に私のEmacsは他の人には使えないんでしょうね、きっと。開発環境にこだわりがあるので自分好みにカスタマイズできないツールは、使い込めません。

+
+

開発環境といえば、プログラマーとしてOSも重要です。私はDebian/GNU Linuxを使っていますが、重要なのは「ちゃんとしたPOSIX APIを持っているか」です。個別のツールに関してはOSに関係ないのですが、システムコールやライブラリとその背景にある思想はPOSIX(というかUNIX)でないと生きていけません。あとは特にLinuxにこだわっているわけではないのですが、歴史的な事情でLinuxを使っています。

+

どうやら私は典型的なオールドタイプに属する人間のようです。そういえば、スクリーンには巨大なEmacsとKtermとNetscapeが重ね合わせて置いてあるだけだし、ウィンドウマネージャはfvwmだし。絶滅間近か。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-007.xhtml b/docs/vol1/xhtml/p-007.xhtml new file mode 100755 index 0000000..95cc750 --- /dev/null +++ b/docs/vol1/xhtml/p-007.xhtml @@ -0,0 +1,293 @@ + + + + + +第6章 はじめの一歩 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay6 +
+

+初等Ruby講座
+はじめの一歩 +

+
+

[Linux magazine, 2001年11月号]

+
+

私にとって初めての初心者向けの連載初回になります。これまでは中級者以上を対象にした文章しか書いてこなかったこともあって、自信のなさが文面からにじみ出ていますね。苦肉の策として、初心者向け、中級者向け、現状報告の3部構成にしたのも、作者の不安を反映していますね。

+

興味深いのは、JAOO訪問記です。デンマークのオーフス市で開催されたこのカンファレンスへの出席は私にとって大変刺激的でした。インターネットでしか会話したことのなかった人たちや、著名な開発者などと直接交流できる日が来るとは、それまでの私には想像もできなかったことです。特に世界最初のオブジェクト指向言語と呼ばれるSimulaの開発者であるKristien Nygaard教授は「気のいいおじいさん」という感じで、気さくに話してくださいました。なかには冷戦時代の公開するとヤバそうな話も。とてもその年のチューリング賞受賞者とは思えない気さくさ。

+
+
+

Ruby知ってますか。Rubyは便利なんです。それになにより気持ちがいいんです。今回から始まるこの連載では、Ruby作者自らが、Rubyを知らない人でもRubyを使えるようになるような解説を試みます。乞うご期待。

+
+
+

ごあいさつ

+
+

はじめまして。まつもと ゆきひろと申します。一部では“Matz”としても知られていますが、Rubyを作っている人です。

+

私は頼まれるとなかなかイヤといえない性格なので、以前からお付き合いのあったLinux magazineの編集の人からの「Ruby入門の連載をお願いします」という依頼に、つい「はい」と答えてしまいました。開発者としてRubyとはそもそもの初めからの付き合いですし、それも今年でもう8年にもなります。正直なところ、初心はすっかり忘れてしまいました。

+
+

問題は初心を忘れているという点だけではなくて、そもそもちゃんとした初心者向けの文章を書いたことがないってことのほうが重要な気がします。そういえば、出たばっかりの『Rubyを256倍使う本 太陽編』じゃなかった『黄道編』でも、私の書いたREADME.EXT.jpという文書(拡張ライブラリの書き方を解説している)に対して

+
+

Rubyの内部構造を知っている人が書いている

+
+

と断言されていました。一瞬「そりゃ内部構造を知らなきゃREADME.EXT.jpは書けないでしょ」とツっこんだのですが、要するに「内部構造を知っている人にしか読めない文書だ」という意味なんでしょう。やはり初心者向けの連載を引き受けたのは無謀であったか……。

+

というわけで(なにが「というわけ」なんだか)、入門向けのわかりやすい文章を書く自信はまったくないのですが、それなりに努力しますのでよろしくお願いします。

+

皆さんの評判がよければ、連載が続くかもしれません。

+
+
+

連載の構成

+
+

本連載は毎月以下の3部構成にしようと考えています。

+
+

Ruby入門

+

この連載の本文です。できるだけRubyのことをまったく知らない人も学べるような内容にしようと思っています。皆さんにとっても一番優しく、私にとっては一番難しい部分です。

+

知られざるRuby

+

見かけは単純でも奥が深いことが多いのがRubyです。このパートではRubyの一部を取り上げて、かなり突っ込んだ内容まで解説します。初心者を卒業した人にも役に立つ内容にしたいと考えています。

+

Ruby開発日記

+

せっかく開発者自らによる連載なのですから、開発者でないと書けないことも載せたいと思って作ったのが、この「Ruby開発日記」です。Ruby開発の最新トピックや、私自身の近況を毎月少しずつ紹介しようと思います。

+
+
+
+

Rubyとは

+
+

前振りはここまでにして、ここからが本文です。

+

今回は初回ですから、そもそもRubyとはいったい何かという点から始めたいと思います。一言で言ってしまうとRubyは、

+
+

オブジェクト指向プログラミング言語

+
+

なのですが、これではわかる人にしかわかりませんから、もうちょっとていねいに説明します。

+

まず「オブジェクト指向」はとりあえず置いておきましょう。今月は「オブジェクト指向」の話はしません。で、残りの「プログラミング言語」のほうですが、こちらは「プログラムを作るときに使う言語」です。

+
+

コンピュータは人間に代わっていろいろな仕事を速く正確に行ってくれますが、正直なところあまり頭は良くありません。SF映画に出てくるような柔軟な発想で人間を助けてくれるパートナーなんてまだまだ夢のまた夢です。現在のコンピュータが仕事をしてくれるのは、誰か人間がその仕事の手順を正確にコンピュータに教えてあげてくれたからです。その手順書を「プログラム」と呼びます。

+

繰り返しになりますが、コンピュータはあまり頭が良くありませんので、この手順書を人間の言葉で書いても読めません。ですから、コンピュータにもわかる言語で書いてやる必要があります。これが「プログラミング言語」です。

+

プログラミング言語にはいろいろな種類があります。たとえば、BASIC, FORTRAN, C, Pascal, Lisp, Perl, Smalltalkなどがあげられます。いくつかは聞いたことがあるのではないでしょうか?

+

Rubyはそれらと同じプログラミング言語です。ですから、Rubyを使うということは、プログラムを作る、つまりコンピュータに仕事の手順を教えてやるということなのです。

+
+
+

なぜRuby

+
+

世の中にプログラミング言語がいくつあるのか正確に知っている人は誰もいません。以前、数千はあるのではという文章を読んだことがあります。まあ誰も知らないマイナーなものはこの際置いておくとしても、相当メジャーなものに限っても両手では足りないくらいあるでしょう。

+

その中で、なぜRubyを使うのか、あるいはなぜRubyを学ぶのか、という疑問が出てくるのは当然だと思います。ここで「学ぶ必要はない」と答えてしまうと、私のRubyの作者としての面目は丸つぶれですし、この連載も初回にして最終回になってしまいます。それは私にとって個人的に非常にまずいので、とりあえず「学ぶ必要はある」として考えましょう。

+

他の言語に比べて、Rubyが優れている理由はいくつかあるのですが、代表的なものを列挙しておきます。

+
+

手軽に実行できる

+

Rubyのプログラムは書いてすぐに実行できます。これはRuby言語を解釈するプログラム(これをインタプリタと呼びます)が、プログラムを読み込んですぐに実行するからです。一方、C言語などの場合では、プログラムはまずコンピュータが直接実行できる形式に変換するプログラム(これをコンパイラと呼びます)が、C言語で書かれたプログラムを解釈しますから、実際に実行する前に1ステップ必要になります。このコンパイルと呼ばれるステップには、数分から場合によっては数時間も必要になりますから、すぐ実行というわけにはいきません。

+

機能が強力

+

あなたが自分でプログラムを書いてコンピュータにやらせたい仕事はなんでしょうか? 人によってそれぞれだと思いますが、Linux magazineの読者である皆さんならば、テキスト処理やファイル操作、システム管理などの仕事が多いのではないでしょうか。Rubyはそういう仕事が大の得意です。Rubyはこのあたりを先輩に当たる言語であるPerlから学びました。

+
+

わかりやすい

+

わかりやすいと感じるかどうかは人によって違うと思うので、この「わかりやすい」という長所には主観がたっぷり入っています。少なくとも私はわかりやすいプログラムが書きやすいようにRubyを設計しました。もっともプログラムがわざわざわかりにくくなるように言語を設計する人はあんまりいないと思います。いや、世の中にはBrainf*ckという言語のような「わかりにくいことそのものが存在意義」というプログラミング言語もあるにはありますけど。

+

Rubyは文法がシンプルで同じ仕事を比較的簡潔に書けるという点、充実したライブラリのおかげで自分で書かなくてはいけないことが少ない点、それから今後説明するオブジェクト指向という考え方に基づいて設計されているので言語に一貫性がある点などが、わかりやすさの原因になっていると考えています。

+

フリーソフトウェア

+

私にとってあまりに当たり前なのでつい忘れてしまうのですが、人によっては重要な特徴であると思います。Rubyはフリーソフトウェア、あるいはオープンソースソフトウェアであるため、利用に際して費用がかかりません。開発者である私に対しても謝礼や代金を払う必要はいっさいありません。

+
+
+
+

サンプルRubyプログラム

+
+

くどくどと説明ばかりを読んでいてもイメージがわかないと思いますので、ここで実際のRubyプログラムをいくつか見てみましょう。

+

まずは超簡単なものから。

+
+
puts 1+2
+
+

これは1+2を計算して出力するものです。putsは1行出力のための手続きです。別にRubyだから特別というふうには見えません。実際にはこのようなプログラムでも背後で「オブジェクト」がいろいろ動いているのですが、その話は来月以降ゆっくり説明したいと思います。

+

次のものはもうちょっと複雑です。以下のプログラムはコマンドライン引数として指定したファイルのそれぞれの行数を調べます。

+
+
 1 total = 0
+ 2 nfile = 0
+ 3 for file in ARGV
+ 4   n = 0
+ 5   File::foreach(file) do
+ 6     n += 1
+ 7   end
+ 8   printf "file %s has %d lines\n", file, n
+ 9   total += n
+10   nfile += 1
+11 end
+12 printf "total %d files %d lines\n", nfile, total
+
+
+
+

1行目と2行目は変数の初期化です。総行数を保存するtotalという変数とファイル数を保存するnfileという変数を両方とも0にしています。

+

ARGVはコマンドライン引数です。for文で各ファイルに対して繰り返しています(3行目)。引数に指定したファイル名がそれぞれ変数fileに入って繰り返されます。

+

File::foreach(file)fileで指定したファイルの各行に対して繰り返す手続きです(5行目)。今回は行数を数えるだけですから、ファイルごとの行数を変数nに足していくだけです。

+

各行に対する繰り返しが終了したら、printf手続きを使って、そのファイルの行数を出力し(8行目)、トータルの行数とファイル数を増やしておきます(9, 10行目)。最後にトータルのファイル数と行数を出力して終わりです(12行目)。

+

他の言語でプログラムを書いたことがある(あるいは読んだことがある)人ならば、あまり説明しなくてもかなり推測できるのではないかと思います。この「常識が通用する」部分もRubyの長所の1つです。

+

せっかくのプログラムですから、実行してみましょう。とりあえず上記のプログラム(行番号を除く)をエディタを使ってファイルにします。ここではcount.rbという名前だとします。これをRubyインタプリタの引数にします。それから行数を数えたいファイル名を続けて並べます。ですから、たとえばカレントディレクトリのヘッダーファイル(拡張子が".h"のファイル)の行数を数えたければ、

+
+
% ruby count.rb *.h
+
+

と実行します。出力例を図6.1に示します。

+
+
+
file config.h has 118 lines
+file defines.h has 94 lines
+file dln.h has 31 lines
+file env.h has 60 lines
+file intern.h has 414 lines
+file node.h has 358 lines
+file re.h has 41 lines
+file regex.h has 228 lines
+file rename2.h has 307 lines
+file ruby.h has 623 lines
+file rubyio.h has 66 lines
+file rubysig.h has 90 lines
+file st.h has 46 lines
+file util.h has 53 lines
+file version.h has 4 lines
+total 15 files 2533 lines
+
+

図6.1●Rubyプログラムの実行例

+
+

どうです? そんなに難しくないでしょう?

+ +

実はRubyを使わなくてもLinuxならwc -l *.hとすれば行数は簡単に求まるのですが、ここでは「自分でプログラムしたのだ」という満足感を得たのだということにしておきましょう(笑)。これは最初の一歩なのですから。そのうち、既存のコマンドでは簡単には済まないこともできるようになります。

+
+
+

はじめに下準備を

+
+

さて、Rubyを使ってみたくなりましたか? え、ならない? では、念力を送らなければ。……。さあ、使いたくなりましたか?

+

では、Rubyを使ってみたくなったところで、お手元のマシンでRubyが使えるかどうか確かめてみましょう。Linux magazineの読者ですから、マシンにはきっとLinuxがインストールしてあると思います。

+

最近の多くのLinuxでは最初からRubyがインストールしてあります。試してみましょう。xtermなどの画面から、シェルプロンプトに対して以下のように入力します(“%”はシェルプロンプトです)。

+
+
% ruby -v
+ruby 1.6.4 (2001-08-06) [i386-linux]
+
+

などと表示されたらRubyが使えます。バージョンや日付は異なっているかもしれません。使える人はラッキーでした。使えない人はなんとかしましょう。

+
+
+

インストール

+
+

というわけで、使えなかった人はRubyをインストールする必要があります。インストール手順はRuby公式サイトのhttp://www.ruby-lang.org/ja/install.htmlなどを参考にするとよいとありますが、若干情報が古いようです(最新は1.4.5とか書いてあるし)。

+

どうせですから、最新をインストールしましょう。Windows使いならともかくLinuxなら楽勝です。実際、私もLinuxでRubyを開発してますから。

+

まず、ソースコードを入手します。「超」最新安定版であるstable-snapshotがよいでしょう(「超」は「最新」にかかります)。

+
    +
  • ftp://ftp.ruby-lang.org/pub/ruby/stable-snapshot.tar.gz

  • +
+

を手に入れます。同じディレクトリにあるruby-1.6.4.tar.gzがリリース安定版です。たぶん、今月号が出る頃にはruby-1.6.5.tar.gzに置き換わっていると思いますが。

+

ソースを入手したら、それを展開します。適当なディレクトリで以下のコマンドを実行します。

+
+
% tar zxvf stable-snapshot.tar.gz
+
+

つらつらとメッセージが出てrubyディレクトリができているはずです。あとはコンパイルです。以下の手順でコマンドを実行してください。

+
+
+
% cd ruby
+% ./configure
+% make
+
+

これでコンパイルは完了です。実際のインストールの前にテストしておきましょう。

+
+
% make test
+test succeeded
+
+

と出れば、成功です。Linuxではコンパイルもテストも失敗しないはずです。後はインストールです。rootになって、

+
+
% su
+# make install
+
+

とすれば、インストールは完了です。もしあなたがroot権限をお持ちであれば、このようにLinuxでのインストールは簡単です。もし、rootになれないのであれば、つまりそのマシンには他に管理者がいるということですから、その管理者の方にお願いするのが一番手っ取り早いでしょう。

+
+

「ねえ、Rubyをインストールして」

+
+

もちろん、自分のホームディレクトリにインストールするという方法もあるにはあるのですが、やはりここはそのマシンを使うすべての人の幸せのため管理者の方にお願いするのが正解でしょう。

+

また、もしあなたが何らかの事情でWindowsでRubyしたいと強く望んでいるのでしたら、

+
    +
  • http://www.pragmaticprogrammer.com/ruby/downloads/ruby-install.html

  • +
+

からバイナリをダウンロードしたほうがよいかもしれません。ただし、私はWindowsのことはなんにもわかりませんから、くれぐれも私には質問しないでくださいね。お願いします。

+
+
+

Rubyの使い方

+
+

とりあえずRubyインタプリタの使い方を説明しておきましょう。といっても全然難しくなんかありません。

+
+
% ruby プログラム
+
+

「プログラム」の部分にはエディタなどで入力したRubyプログラムのファイル名が入ります。これでRubyプログラムが実行できます。Rubyプログラムファイルには、たとえばsample.rbというように".rb"という拡張子を付けるのが慣習になっていますが、別に付けなければならないというものではありません。

+
+

実際には、Rubyインタプリタはたくさんのコマンドラインオプションがあるのですが、とりあえず今回は初回ですから、必要はないでしょう。興味のある人は、

+
+
% ruby -h
+
+

と実行すると一覧を見ることができます(リスト6.1)。

+
+

リスト6.1●Rubyインタプリタのコマンドラインオプション

+
Usage: ruby [switches] [--] [programfile] [arguments]
+  -0[octal]       specify record separator (\0, if no argument)
+  -a              autosplit mode with -n or -p (splits $_ into $F)
+  -c              check syntax only
+  -Cdirectory     cd to directory, before executing your script
+  -d              set debugging flags (set $DEBUG to true)
+  -e 'command'    one line of script. Several -e's allowed. Omit [programfile]
+  -Fpattern       split() pattern for autosplit (-a)
+  -i[extension]   edit ARGV files in place (make backup if extension supplied)
+  -Idirectory     specify $LOAD_PATH directory (may be used more than once)
+  -Kkcode         specifies KANJI (Japanese) code-set
+  -l              enable line ending processing
+  -n              assume 'while gets(); ... end' loop around your script
+  -p              assume loop like -n but print line also like sed
+  -rlibrary       require the library, before executing your script
+  -s              enable some switch parsing for switches after script name
+  -S              look for the script using PATH environment variable
+  -T[level]       turn on tainting checks
+  -v              print version number, then turn on verbose mode
+  -w              turn warnings on for your script
+  -x[directory]   strip off text before #!ruby line and perhaps cd to directory
+  --copyright     print the copyright
+  --version       print the version
+
+
+
+
+

irbの使い方

+
+

もう1つ便利なツールirbも紹介しておきましょう。Rubyインタプリタがインストールされていれば、たぶんirbもインストールされていると思います。irbはinteractive ruby(対話型Ruby)の略です。irbを使えばプログラムを対話的に入力できるので、手軽に実験することができます。irbの起動にはただirbコマンドを実行するだけでかまいません。

+ +
+
% irb
+irb(main):001:0>
+
+

起動するとプロンプトが出てきますから、それに向かって実行したいRubyのプログラムを入力します。

+
+
irb(main):001:0> 1+1
+2
+irb(main):002:0>
+
+

複数の行に渡るプログラムもそのまま入力できます。

+
+
irb(main):002:0> def fact(n)
+irb(main):003:1>  if n == 0
+irb(main):004:2>    1 
+irb(main):005:2>  else
+irb(main):006:2*   n*fact(n-1)
+irb(main):007:2>  end
+irb(main):008:1> end
+nil
+irb(main):009:0> fact(10)
+3628800
+irb(main):010:0>
+
+

プロンプトの最初の数字は入力した行番号、次の数字はネストのレベルです。

+

irbを使えば、Rubyの挙動を簡単に確認できるので非常に便利です。やはり、実際に使ってみるのが一番勉強になります。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-008.xhtml b/docs/vol1/xhtml/p-008.xhtml new file mode 100644 index 0000000..c7662f1 --- /dev/null +++ b/docs/vol1/xhtml/p-008.xhtml @@ -0,0 +1,180 @@ + + + + + +第6章 はじめの一歩 + + + + +

Matz Essays Volume 1

+ + +
+

◆ 知られざるRuby ◆ open

+
+

今回のテーマはopenです。

+

入出力をするためにファイルをオープンするのがopenです。openKernelモジュールで定義されているメソッドで、Kernelモジュールはすべてのクラスの親であるObjectにインクルードされているので、openはどのクラスでも用いることができます。たとえば、このように使います。

+
+
f = open("/usr/share/dict/words")
+f.grep(/Ruby/){|line| print line}
+
+

これは/usr/share/dict/wordsにある辞書ファイルからRubyという単語のある行を探して出力する小プログラムです。

+ +

openメソッドの引数は以下のようになっています。

+
+
open(path[, mode[, perm]])
+
+

pathはオープンするファイルのパス、modeはファイルの入出力モードを決定する文字列、または整数フラグ、permopenにより新しいファイルが作られたときのパーミッション(アクセス権)を整数で指定します。カギかっこ“[]”でくくられた部分は省略が可能です。

+

modeを文字列で指定するには、表6.1の入出力モードを指定します。

+
+

表6.1●openで指定する入出力モードの補助指定

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
指定する文字列入出力モード
"r"読み込みモード。ファイルが存在しなければエラーになる
"r+"読み込み・書き込みモード。ファイルが存在しなければエラーになる
"w"書き込みモード。ファイルがなければ作る。あればサイズ0にする
"w+"読み込み・書き込みモード。ファイルがなければ作る。あればそのファイルのサイズ0にする
"a"追加書き込みモード。ファイルがなければ作る。ファイル末尾にseekする
"a+"追加読み込み・書き込みモード。ファイルがなければ作る。ファイル末尾にseekする
+
+

文字列によるモード指定では2文字目に“b”を追加することができます。これはバイナリモードでの読み込みを意味しますが、UNIXのような、もともとバイナリモードという概念がないOSでは“b”を指定しても単に無視されます。

+

整数フラグの場合、基本的な動作モードを表6.2の定数から指定します。それを補助する動作として表6.3の定数を、“|”(ビットOR)で複数指定することができます。これらの定数は、Fileクラスで定義されていますので、たとえば、

+
+
open(path, File::RDWR|File::CREAT, 0666)
+
+

のように指定するという意味です。

+ +
+

表6.2●openで指定する入出力モード(文字列の場合)

+ + + + + + + + + + + + + + + + + +
指定する定数入出力モード
RDONLY読み込みモード
WRONLY書き込みモード
RDWR読み込み・書き込みモード
+
+
+

表6.3●openで指定する入出力モードの補助指定

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
orで指定する定数入出力モード
CREAT指定したpathにファイルが存在しなかった場合は作成する。つまり、逆にいえばこの定数が指定されない場合には、ファイルが存在していなければエラーになる
EXCLCREATと一緒に使用された場合、ファイルがすでに存在した場合にエラーとなる
NOCTTY指定したpathがterminalデバイスを参照していて、かつプロセスが制御端末を持たない場合でも、そのterminalが制御端末にならない
TRUNCファイルがすでに存在し、通常ファイルであり、書き込み可モード(RDWRまたはWRONLY)が指定されている場合、そのファイルの長さは0に切り詰められる
APPENDファイルを追加モードでオープンし、ファイル末尾にseekする
NONBLOCK
NDELAY
ファイルをnonblockingモードでオープンする。openを始めとする、ファイル・ディスクリプタに対するすべてのシステムコールは、ブロックしない。ブロックが発生しそうな場合にはシステムコールが失敗する
SYNCファイルを同期I/Oモードでオープンする。ファイル・ディスクリプタに対するすべてのwriteは、実際に書き込みが完了するまで終了しない
+
+

デフォルトの入出力モードは読み込みモード(“r”またはRDONLY)です。

+

新規に作るファイルのパーミッションを指定する第三引数permを省略した場合には0666を指定したことになります。0666というのは「獣の数」ではなくて、パーミッションを指定する8進数です。最初の0はこの数字が8進数であることを示します。続く3つの数字は、左からそれぞれ「ファイルの所有者」「ファイルの所有グループに属するユーザー」「それ以外のユーザー」に対するアクセス許可権を指定しています。8進数の一桁は3ビットなのですが、それの各ビットで「読み込み権」「書き込み権」「実行権」を表現します。6は2進数で表現すると110つまり、「読み込み権と書き込み権は許可するが実行権は許可しない」という意味になります。

+

これをまとめると0666はファイルの所有者(自分が新規に作成するのだからプログラムの実行者と同じ)、ファイルの所有グループに所属するユーザー、その他のユーザーの誰もに対して、読み込みと書き込みを許可し、実行を許可しないパーミッションという意味になります。

+

ただし、この値がそのまま使われるわけではなく、プロセス単位のパーミッションマスク(umask)で修正され、(perm&umask)が実際の値になります。この値は新規にファイルを作るときにだけ有効で、すでに存在するファイルにpermを指定してオープンしたとしても、ファイルのパーミッションは変化しません。

+

以上のパーミッションの挙動はUNIX系OSでは共通のものです。では、そのようなファイルのアクセス権を持たないOSではどうなるのでしょうか? それはそのOSでのPOSIXエミュレーション層の実装に依存するのですが、基本的には、ない袖は振れないので、存在しないアクセス権を指定しても無視するというのが基本です。

+

ファイルをオープンしたopenFileクラスのオブジェクトを返します。

+

openにはファイルだけでなく、コマンドを指定することができます。openpathが“|”で始まるときには、それに続く文字列をコマンドとして起動し、そのコマンドの標準入出力に対してパイプラインをつなぎ、それに対応するIOクラスのオブジェクトを返します。pathが“|”で始まる場合には第3引数を指定するとエラーになります。

+
+

Perlを使っている人は注意する必要があるのですが、読み込みでも書き込みでも“|”は先頭に来ます。

+

さらにコマンド名が“-”であるとき、つまりpathに“|-”を指定した場合には、Rubyインタプリタをforkして子プロセスを作り、その子プロセスの標準入出力との間にパイプラインをつなぎます。

+

openがブロックとともに呼び出されたとき、openはファイルをオープンして、そのオープンしたファイルをパラメータとしてブロックを実行し、ブロックの実行が終了するとファイルをクローズします。

+

つまり、以下のようになります。

+
+
open(path, mode) do |f|
+   ... 
+end
+
+

これは以下のコードとほぼ同じ動作をします。

+
+
f = open(path, mode)
+begin
+   ... 
+ensure
+  f.close
+end
+
+

これはつまりブロック付きでopenを呼び出した場合、途中でエラーが起きたり、例外などで実行を中断したとしても必ずファイルがクローズされるということです。この形式の利用は積極的に推奨されています。

+

この呼び出し方をした場合にはopenの戻り値はファイルのオブジェクトではなく、ブロックで一番最後に評価した式の値になります。これは、もうクローズしてしまったファイルオブジェクトよりもブロックの評価値のほうが使い道があるだろうという配慮からそうなっています。

+

openはファイルとコマンドを両方開くことができる高機能なメソッドですが、コマンドではなくファイルしか開かないことが明らかな場合、Fileクラスのメソッドを使うことができます。

+
+
File::new(path[, mode[, perm]])
+File::open(path[, mode[, perm]])
+
+

これらのメソッドの引数の意味はopenメソッドと同様ですが、pathの先頭の“|”をチェックしません。ですから(あまりないことですが)、ファイル名の先頭に“|”が付いていてもオープンすることができます。また、これらのメソッドはFileクラスのオブジェクトを返します。

+

それから、File::newはブロックを取りませんが(与えられても無視します)、File::openopen同様にブロック付きで呼び出すことができます。動作もopenと同じです。これはnewはオブジェクトの生成に専念するというルールからで、他のクラスのメソッド、たとえばDir::newDir::openでも同じような関係が成立しています。

+

ファイルを開くことだけが目的のFile::openとは逆に、コマンドを開くことが明らかな場合にはIO::popenが使えます。

+
+
IO::popen(cmd[, mode])
+
+

こちらにはcmdの先頭に“|”は付きません(付けてはいけません)。IO::popenopenメソッド同様にブロックを取ります。IO::popenの戻り値はIOクラスのオブジェクトです。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-009.xhtml b/docs/vol1/xhtml/p-009.xhtml new file mode 100644 index 0000000..52c451d --- /dev/null +++ b/docs/vol1/xhtml/p-009.xhtml @@ -0,0 +1,49 @@ + + + + + +第6章 はじめの一歩 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ デンマーク訪問記

+
+

ちょっといってきました、デンマークへ。

+

今回のトピックは、9月10日から14日までデンマークのオーフス市で開催されたJAOOのリポートです。

+

JAOOは毎年デンマークで開催されている国際的なJavaとオブジェクト指向のカンファレンスで、今年で5回目になるのだそうです(ちなみに国際カンファレンスということで、すべてのプレゼンテーションはデンマーク語ではなく、英語で行われました)。JAOOは何かの略かとスタッフに尋ねたところ、やっぱりJava and OOの略だそうです。なんか安易ですね。

+

ただ、カンファレンスは安易どころではなく、スピーカーにはアメリカから来た有名人がずらりとそろっています。たとえば、『リファクタリング』のMartine Fowlerや、Wikiの提唱者Ward Cunningham、Java方面でも知られているDoug Leaなど、どこかで名前は聞いたという人がたくさんです(敬称略)。私はUML方面の人はあまり知らないのですが、そちらでも知られた人が来ていたようです。その中でもAlistair Cockburnという人がパワフルで印象的した。なんか有名人と直接会えて感動してしまいました。なんだかミーハーですね。

+

私たちRuby関係者にとっての有名人といえば、Programming Rubyの著者であるPragmatic ProgrammersことDave ThomasとAndy Huntのふたりもスピーカとして参加していました。昨年のJAOOでは、彼らはRubyを紹介するプレゼンテーションを行い好評だったのだそうです。今年もプログラミング一般に関してのプレゼンテーションと、Rubyのチュートリアルとを担当していました。

+

実は昨年の彼らのプレゼンテーションが好評だったので、彼らの推薦もあって今年はRubyの作者を招待してのプレゼンテーションを、という話になったのだそうです。そうなんです。今回のデンマーク訪問は単なる参加者ではなく、講師としてプレゼンテーションするためだったのです。

+

英語も怪しいのに大丈夫だろうかという不安もよそに、とにかく引き受けてしまったのだからしょうがない、と覚悟を決めて出かけてきました。悪天候のため飛行機のスケジュールが狂いまくりで、不安なものもありましたが、10日深夜に無事オーフスにたどりつきました。

+

私の出番は11日の午前のパネルセッション「The Role of Scripting Language」と午後のプレゼンテーション「Object-Oriented Scripting in Ruby」でした。パネルセッションでは、私、Practical Programming in Tcl and Tkの著者であるBrent Welch、それとPerlの偉い人Michel G. Schwernの3人で「スクリプティングとは何か」というテーマで討論しました。といってもわずか45分しかありませんでしたから、それぞれの(言語の)立場を紹介しただけで終わってしまいました。私としては「スクリプティングとはたんなる短いプログラムのことではない、人間指向のプログラミングだ」とかいうようなことを言いたかったのですが、伝わったかどうかはかなり疑問です。ああ、もっと英語が話せたらなあ。でも、まあ「度胸で話せばなんとかなる」という妙な自信を強めたことも確かです。

+
+

午後のプレゼンテーション「Object-Oriented Scripting in Ruby」は、Rubyの思想や背景を踏まえて、スクリプティングとは何かという午前中のパネルの続きのような内容を紹介しました。つたない説明でしたが、ある程度興味をもってもらえたようです。このプレゼンテーションの資料は

+
    +
  • http://www.ruby-lang.org/en/jaoo2001/

  • +
+

で公開しています。実はデンマーク人は(日本人のように?)とても礼儀正しくおとなしいので、どのセッションでもほとんど質問がでなかったのですが(質問するのはアメリカ人ばかり……)、なぜか私のプレゼンテーションに対しては、ある程度活発な質問が出ました。内容がよかったせいか、私の英語があまりに下手だったせいかはわかりませんが、後者でなかったらよいなあと思っています。

+

プレゼンテーションが終わると、みんながざわざわしていました。ちょうどその頃例の同時多発テロのニュースが報道されたからです。JAOOの講師はほとんどがアメリカ人なのですが、彼らは自分の国が攻撃されたショックと、飛行機の飛行が禁止されて帰れるかどうかわからない不安からかなり動揺していました。その後の連絡でPragmatic Programmersはうちに帰り着くのが3日くらい予定より遅れたのだそうです。大変でした。

+

私にとっての今回のJAOOでの収穫といえば、たくさんの人に直接会うことができた点でしょう。たとえば、Dave ThomasとAndy Huntに初めて会いました。彼らとはすでに数えきれないくらいメールやIRCでやりとりをしていたのですが、直接会ったのは初めてでした。

+

Martin Fowler, Ward Cunningham, Doug Leaなどと直接言葉を交わせたのはかなり感激ものでした。Kent Beckは今年は不参加だそうで会えませんでした、残念。

+

他にも一緒にパネルに参加した人たちとの会話も刺激的でした。特にBrent Welchは波長があって、RubyとTclはお互いに参考にできるところはないかとかいろいろと話をしました。正直Tclを見直しました。それから、オブジェクト指向言語の父Simulaを開発したというOslo大のKristien Nygaard教授にも会ったのも貴重な経験でした。彼にとってはすべてのオブジェクト指向言語は、いわば孫か曽孫のようなものだそうです。クラスとか継承とかの概念はみんなSimulaが発明したのですから、確かにそうかもしれません。

+

私は、飛行機のチケットの関係で私は木曜日に出発しなければならなかったのですが、向こうにいたのが54時間だけで、移動には58時間かかったというなんだか強行軍でした。なかなか珍しい経験をしたと思います。

+

次回はLinux Conference Japanをレポートする予定です。あるいはフロリダ州タンパで開かれる第1回 Ruby Conferenceについてレポートできるかもしれません。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-010.xhtml b/docs/vol1/xhtml/p-010.xhtml new file mode 100755 index 0000000..1ee4137 --- /dev/null +++ b/docs/vol1/xhtml/p-010.xhtml @@ -0,0 +1,369 @@ + + + + + +第7章 条件判断とループ + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay7 +
+

+初等Ruby講座
+条件判断とループ +

+
+

[Linux magazine, 2001年12月号]

+
+

Rubyはブロックの終わりをendで表現するという現代では珍しくなってしまった文法を採用しているのですが、「知られざるRuby」のコーナーでは、その背景を説明しています。言語をデザインするときに、どんなことを考えながらデザインしているかうかがえる記事になっているのではないでしょうか。

+

「開発日記」では「Linux Conference 2001」のことを紹介しています。ここでは実験的なVMと世代別GCについて発表されました。この実装が現在のRubyに直接取り込まれたわけではありませんが、このような研究があったからこそ、その後のRuby実装の改善が実現したと言えるでしょう。この頃から考えると、20年の間に信じられないほどの投資と技術的改善が行われました。

+
+
+

プログラムはコンピュータに対する手順書だと考えることができます。今回はその手順書の「読み進め方」に当たる手順の制御方法について学びます。かなり基本的な部分ですので、プログラムの知識・経験のある方は雑学の部分だけを楽しんでください。

+
+
+

おことわり

+
+

最初に白状しておきますが、私は数学がダメです。昔から全然ダメなんです。よくコンピュータは理系的といわれますが、私は学校は理系にいましたが(コンピュータがどうしてもやりたかったので)、頭の中身は文系でした。大学時代は周りのみんなについていけずに悩んだものでした。

+

なぜわざわざこんなことをいうかというと、今回の記事中に何度か「証明」という単語が(数学的な意味で)出てくるからです。もちろん私に何かを証明することができるはずもなく、これは誰かが証明したと言っているのをそのまま真に受けているという意味です。まあ、間違ってはいないと思いますが……。

+
+
+ +

プログラミング基礎の基礎

+
+

昔々、アラン・チューリングという名前の天才がいました。この人はイギリスで第二次世界大戦中の暗号解読に大きな成果をあげた人ですが、コンピュータ関係の基礎を打ち立てた人でもあります。彼の考え出したことが今のコンピュータの理論的背景になっているのです。

+

たとえば、彼の考え出したことの1つに「チューリングテスト」というものがあります。これは「機械が知性を持つかどうか判定する」というテストです。これは自分の相手が完全に見えない状態、たとえばスクリーンを経由して、対話を行うというものです。相手が人間であるかコンピュータであるか教えられずに、ある程度の時間対話したうえで区別することができるかどうかをテストします。もし、対話を通して人間とコンピュータを区別することができなければ、それはコンピュータが十分に知性を持つことを意味しているとしてもよいというのが彼の結論です。なんだかカンプフ・フォークトテスト1 みたいですね。

+

彼は「チューリングマシン」という概念も考え出しました。チューリングマシンは、左右に無限の長さを持つテープと1つの読み書きヘッドによって構成される機械で、ヘッドがテープからデータを読み取り、それに従って記号操作を行い、その結果をテープに書き込むことを繰り返すことによって一種の計算を行います(図7.1)。

+
+ +
+ fig0701 +
+

図7.1●チューリングマシン

+
+

これは(まだ当時はコンピュータは存在していませんでしたが)、一種の仮想的なコンピュータで、彼はこの単純な機械によってあらゆるアルゴリズムが表現可能であることを証明したのです。いや、その証明は私には理解できませんが(笑)。

+

チューリングマシンは非常に原始的な「コンピュータ」なので、あらゆるアルゴリズムが表現可能であっても、実際にこれでプログラムを行うのは現実的ではありません。しかし、あらゆる「アルゴリズムが表現可能である」ためにはそれほどたいした機能が必要ではないということがわかります。

+

チューリングマシンの単純さは、プログラミング言語がその本来の目的を果たすために必要な最低限の機能がとても小さいことを示しています。たとえばRubyの場合、そのリファレンスであるヤギ本(『Rubyデスクトップリファレンス』オライリー、ISBN4–87311–023–8)で、言語そのものを解説した部分が全138ページ中、たったの24ページしかないことからもうかがえます。

+

チューリングマシンについてもっと知りたい人は、

+
    +
  • http://www.jaist.ac.jp/~u-ryo/notes/class/ida/CognitiveScience/turing.html

  • +
+

などからリンクをたどってみてください。

+
+
+ +

プログラミングの基礎

+
+

さて、役に立つのか立たないのかよくわからない基礎はまだ続きます。かなり時代が下がるとエドガー・ダイクストラが登場します。

+

彼は“GO TO Statement Considered Harmful”という論文でプログラミング言語には以下の制御の流れがあれば、あらゆるアルゴリズムが表現できると証明しました。

+
    +
  • 逐次実行

  • +
  • 条件判断

  • +
  • ループ

  • +
+

かつてはプログラミング言語の制御構造には任意の場所にジャンプするGOTO文が必須であると考えられていました。ダイクストラの論文はそんなものは不要で、この3つのわかりやすい制御構造だけですべてが記述できると断言したことで当時としては画期的でした。

+

もちろん、私にはその証明は理解できません。が、結論は信じることにします。

+

逐次実行とは、命令を順番に実行していくことです。プログラミング言語は普通、並んでいる行を順番に実行します。これが逐次実行です。これを制御と呼ぶのは変な気もしますが、中には各命令の直後に次はどの命令を実行するか指定する変な言語もありますし、さらにひどいことに逐次実行が進む方向(上下左右)を変えることができる2次元プログラミング言語というものもあります。どちらも異様に使いにくいですけどね。後者はジョークとして設計されたものですが、前者は本気だというのが恐いものがあります。

+

条件判断とは、ある条件が成立しているときだけ一連の命令を実行するものです。if文のことですね。

+

ループは、ある条件が成立するまで実行を繰り返すものです。while文のことですね。

+
+
+

if文

+
+

Rubyで条件分岐といえばifです。いや、Rubyでなくても普通のプログラミング言語ではどれもifですね。

+

ifの最も単純な形式は以下のようなものです。

+
+
if 式
+  文
+end
+
+

ifは式の結果が「真」であれば文を(複数の文があればそれを順番に)実行し、「偽」であれば何も実行しません。

+

ifを1行に書こうと思えば、式と文の間を明示するために、thenかセミコロン(;)を入れる必要があります。

+
+
ifthenend
+if 式 ; 文 end
+
+
+

ですから、

+
+
if true
+  puts "hello"
+end
+
+

は式(true)の値が真ですから、文である、

+
+
puts "hello"
+
+

が実行されます。必ず実行されるんじゃ、条件分岐の意味ないですが。

+

では、Rubyでは、どのような値が「真」で、どのような値が「偽」なのでしょうか。定義からいえば、

+
    +
  • falsenilが「偽」

  • +
  • 「偽」でない値はすべて「真」

  • +
+

です。ですから、数字の0も文字列の""も含めて、falsenil以外のすべての値は「真」になります。

+

false」が英語で「偽」ですから、偽なのは当然だと思われます。ではnilとはなんでしょう? 英和辞典によればnilとは、

+
+

無、零、ない、存在しない

+
+

という意味なのだそうです。ですから、Rubyにおいてもnilは「存在しないことを示す値」です。たとえば、代入されていない変数の中身はnilですし、配列の範囲を超えて要素を取り出そうとしたときに得られる値もnilです。

+

また、Rubyでは一般的に

+
    +
  • 真としてtrueを返す手続きは偽としてfalseを返す

  • +
  • 真としてtrue以外を返す手続きは偽としてnilを返す

  • +
+

という慣習があります。たとえば、「defined?()」はある式が定義されていれば、その種別を示す文字列を返しますが、定義されていなければnilを返します。ですから、

+
+
defined?(FOOBAR)
+
+

は(FOOBARが定義されていなければ)nilを返しますが、

+
+
defined?(ARGV)
+
+

は文字列"constant"を返します。やや、余談になりますが、Rubyでは「defined?」のような真偽値を返すもの(述語と呼びます)は名前の末尾に「?」を付ける習慣があります。

+

「偽」としてfalsenilの両方があることは、ときどき、

+
+

真 – 偽 – 未定義

+
+

という3つの状態を表現するのに使われることがあります。nilは偽というよりも「そもそも条件が成立しない」ということを表現していると考えることができます。

+
+

さて、真偽値についてはここまでにして、またif文に戻りましょう。先ほどは「条件が成立するときにこれを実行する」というif文の一番簡単な形式について説明しましたが、if文にはまだいくつかの形式があります。

+

「条件が成立するときにはこれを、成立しないときにはこっちを」というタイプの条件判断がほしい場合があります。その場合にはelseの付いたif文を使います。

+
+
if 式
+  文1
+else
+  文2
+end
+
+

これは式の値が真であれば文1を、偽であれば文2を実行します。まあ、Rubyに限らず他の言語でも似たような形式ですよね。

+

次に「この条件が成立するときにはこれを、別の条件が成立するときにはこっちを、すべての条件が成立しない場合にはこれを」というタイプの条件判断にはelsifの付いたif文を使います。

+
+
if 式1
+  文1
+elsif 式2
+  文2
+else
+  文3
+end
+
+

これは式1の値が真であれば文1を、式2の値が真であれば文2を、すべての式が偽であれば文3を実行します。elsifの部分は実際には好きなだけ繰り返すことができますし、elseの部分は省略できます。

+

ここで、他の言語の経験がある人はelsifがCのようなelse ifでも、Pythonのようなelifでもないことに気を付けてください。PerlやAdaが得意な人は間違えないと思います。もしわからなくなったら、「えるすいふ」と素早く発音すると「えるしふ」になると思い出してください。私がelsifを選んだのはまさにそういう理由からですから。

+

RubyにはPerlから引き継いだif文のもう1つの形式があります。それが「if修飾子」です。if修飾子は「後置if」とも呼ばれていて、文の後ろにifを付けるものです。形式は、

+
+
if
+
+

のようなものです。たとえば、

+
+
puts "hello" if a == b
+
+

abの値が等しければ"hello"を出力します。ifは文の後ろに付いていますが、条件チェックは先に行われます。考えてみれば当然のことですが。

+
+
ifthenend
+
+
+

と、

+
+
if
+
+

はまったく同じ意味です。好きなように使えばよいのですが、お勧めの使い分けとしては、条件を強調するときには普通のifを、文を強調するときにはif修飾子を使うというものがあります。

+

たとえば、変数$DEBUGがセットされているときにはデバッグ用のメッセージを出力したい場合には、

+
+
if $DEBUG
+  puts "this is debug message"
+end
+
+

とするよりも、

+
+
puts "this is debug message" if $DEBUG
+
+

としたほうが簡潔な印象があります。

+
+
+

unless文

+
+

条件分岐にはもう1つunless文もあります。unless文はif文のちょうど反対で、条件が成立していないときに文を実行するものです。

+
+
unless 式
+  文
+end
+
+
+

unlessif notと同じ意味ですから、主に意図を明確にするために用いられます。

+

unless文にもif文同様にelseを付けることができます。

+
+
unless 式
+  文1
+else
+  文2
+end
+
+

これは式の値が偽であれば文1を、真であれば文2を実行します。でもこれは、

+
+
if 式
+  文2
+else
+  文1
+end
+
+

と同じですからあんまり意味がないですよね。ifにはelsifがありますが、unlessにはunlesifのようなものはありません。ifを使ってください。

+

unlessifの反対ですから、当然ifと同様に修飾子形式が使えます。

+
+
unless
+
+

これは式の結果が偽のときだけ文を実行します。

+
+
+

while文

+
+

条件分岐の次はループです。ループの最も基本的なものはwhileです。whileの形式は以下のとおりです。

+
+
while 式
+  文
+end
+
+

whileは式の結果が「真」である間、文を(複数の文があればそれを順番に)繰り返し実行し、「偽」になれば繰り返しを終了します。最初に式を評価した結果が「偽」であれば、文はまったく実行しません。

+

whileを1行に書こうと思えば、式と文の間を明示するために、doかセミコロン(;)を入れる必要があります。

+
+
whiledoend
+while 式 ; 文 end
+
+

whileにも修飾子形式があります。形式は、

+
+
while
+
+

になり、これは、

+
+
while 式
+  文
+end
+
+

とまったく同じ意味です。まったく同じ意味ということは、修飾子形式では、後ろのほうに登場していても、式のほうが先に評価されるということです。

+

ただ、ループの場合本体を毎回実行して、繰り返しの終了条件のチェックはループの最後に行いたい場合があります。そのためにPascalではrepeat .. untilという文がありますし、Cにもdo .. whileがあります。

+

Rubyでは、そういう場合には後述のbreakを使う方法もありますが、beginwhile修飾子というものもあります。

+
+
begin
+  文
+end while
+
+
+

という形式の場合、まず文を実行し、次に式を評価します。beginにはrescueensureを付けてはいけません2

+
+
+

until文

+
+

ifに対してunlessがあるように、whileに対してはuntilがあります。

+
+
until 式
+  文
+end
+
+

untilは式が偽である間、文を繰り返します。また、while同様にuntilにも修飾子形式があり、begin文に付加されると式の評価の前に文を実行する点も同じです。

+
+
+

ループの中断

+
+

先ほど説明したとおり、逐次実行、条件分岐、ループの3つがあれば任意のアルゴリズムが記述できるのですが、とはいえ途中でジャンプできると便利なこともあります。

+

ジャンプといえばgotoですが、残念なことに(または幸いなことに)Rubyにはgotoはありません。その代わりもうちょっと「高級な」ジャンプがいくつかあります。今回はそのうちループに関するものを紹介しましょう。

+

ループに関するジャンプは以下の3つです。

+
+

break

+

現在実行中のループを中断します。これを使えば最後に条件チェックするループも簡単に記述できます。

+
+
while true
+  文
+  break if 式
+end
+
+

ここではwhile trueで無限ループを表現しています。で、文を実行したあとで条件をチェックして、それが成立していればbreakで繰り返しを中断するわけです。あるいは、beginwhile修飾子の組み合わせよりもこっちのほうがわかりやすいかもしれませんね。

+ +

next

+

ループ本体の実行を中断して末尾までジャンプします。主に以下のような使い方をします。

+
+
while line = gets()   # 1行ずつ読み込み
+  next if line == ""  # 空行なら処理しない
+  文                  # lineに対する処理
+end
+
+

C言語のcontinueに相当します。continueという名前でないのはnextのほうが短いからです。Perlでもnextですね。

+

redo

+

ループ本体の実行を最初からやり直します。つまり条件チェックの直前にジャンプします。C言語にも相当するジャンプがないことからもわかるようにあまり使われません。

+
+

これらのジャンプをまとめると、図7.2のようになります。

+
+ +
+ fig0702 +
+

図7.2●ループを中断するジャンプ

+
+
+
+

for文

+
+

配列などの要素それぞれに対して繰り返すためには、whileのような単純なループよりもforのほうが便利です。たとえば、配列要素を出力するのであれば、while文を使うなら、

+
+
i=0
+while i<ary.size
+  puts ary[i]
+  i+=1
+end
+
+

のように、やや面倒になりますが、forを使えば、

+
+
for i in ary
+  puts i
+end
+
+

と単純になります。forは実際にはこのあと説明するイテレータを使って実現されています。

+
+
+

イテレータ

+
+

イテレータは奥が深いので、この先連載1回分まるまる使って説明しようと思いますが、簡単にいうとメソッドの一種で「ユーザーが定義できる制御構造」です。

+

先ほどのforも内部的にイテレータを使って実現されています。ここでは仕組みは説明せず、いくつか便利なイテレータを紹介するだけにとどめます。

+
+
loop do        # loopは無限ループするイテレータです
+  文
+end
+
+3.times do     # 文を3回繰り返します
+  文
+end
+
+ary.each do|i| # forは内部的にこれと同じことをしています
+  文
+end
+
+
+
+
+
+
    +
  1. +

    映画「ブレードランナー」でレプリカントを区別するためのテスト。 +

    +
  2. +
  3. +

    でもねえ、あるので紹介しますけど、あんまりわかりやすい文法じゃなかったですよねえ。失敗か(苦笑)。 +

    +
  4. +
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-011.xhtml b/docs/vol1/xhtml/p-011.xhtml new file mode 100644 index 0000000..6ec6ad5 --- /dev/null +++ b/docs/vol1/xhtml/p-011.xhtml @@ -0,0 +1,179 @@ + + + + + +第7章 条件判断とループ + + + + +

Matz Essays Volume 1

+ + + +
+

◆ 知られざるRuby ◆ end

+
+

前回はファイルをオープンするメソッドopenについて探求しましたが、今回は制御構造ということで、Rubyの制御構造を構成する重要なキーワードendについて考えてみます。

+

文のまとまりを表現する方法はプログラミング言語ごとにそれぞれあります。たとえば、Cであれば、

+
+
{ 文; }
+
+

でしょうし、Pascalであれば、

+
+
beginend
+
+

でしょう。また、Pythonのように「インデントの深さで決める」という変わり種もあります。Pythonでは、

+
+
if a == b:
+  foo
+  bar
+baz
+
+

というふうにして文のまとまりの範囲を決めます。上の例をRuby的に書けば、

+
+
if a == b
+  foo
+  bar
+end
+baz
+
+

という感じでしょうか。簡潔ですし(Rubyより1行少ないですね)、この形式を好む人もいます。

+
+

文のまとめ方はそれぞれですが、実は大きく分けると、

+
    +
  • 複文派

  • +
  • ブロック派

  • +
+

に分かれるのだということをご存じでしたでしょうか。複文派とは「複数の文を文かっこでくくったものは1つの文である」とする言語です。たとえば {} を文かっことするCや、begin, endを文かっこにするPascalは複文派です。この派の言語では、単文が置けるところにはどこにでも複文が置けるというルールがあります。ですから、たとえばCの条件式で、

+
+
if (a == b)
+  foo;
+
+

と書いたものは、fooの部分を複数の文に置き換えたければ、{} でくくった複数の文を置けばよいわけです。

+
+
if (a == b) {
+  foo;
+  bar;
+}
+
+

このやり方には2つほど問題があります。1つは単文から複文への書き換えが面倒なことです。たとえば上記の変更では、ただbarという文が追加したいだけなのに、fooの前に { を、barの後ろに } を追加する必要があります。

+

もう1つの問題は「ぶらさがりelse」という問題です。またまたCの例になりますが、

+
+
if (a == b)
+  if (c == 5)
+    foo;
+else
+  bar
+
+

と書いてあった場合、これをどう解釈しますか?

+
+
if (a == b) {
+  if (c == 5) {
+    foo;
+  }
+}
+else {
+  bar;
+}
+
+

と解釈したくなるでしょうが、実際にはインデントに関係なく、

+
+
if (a == b) {
+  if (c == 5) {
+    foo;
+  }
+  else {
+    bar;
+  }
+}
+
+
+

と解釈されます。

+

もう一方のブロック派は複文を取る文はいつもブロック(文のまとまり)を取ることが決まっている言語です。ブロック派言語には上記の2つの問題は存在しません。たとえばRubyであれば、

+
+
if a == b
+  foo
+end
+
+

barを追加したければ、ただfooの後ろの行に追加するだけです。他の部分を変更する必要はありません。「ぶらさがりelse問題」についても

+
+
if a == b
+  if c == 5
+    foo
+  end
+else
+  bar
+end
+
+

と、

+
+
if a == b
+  if c == 5
+    foo
+  else
+    bar
+  end
+end
+
+

は明らかに異なりますから、混乱を招く可能性はありません。このようにユーザーにとっての使いやすさの観点からみれば、ブロック派言語の圧勝といえるでしょう。最近開発された言語ではブロック派が主流になっているように感じられます。たとえば、Rubyと同じスクリプト言語に分類されるものに限っても、

+
    +
  • まとまりはいつも {} でくくる必要があるPerl

  • +
  • まとまりはインデントで表すPython

  • +
  • まとまりの終わりをendで表すRuby

  • +
+
+

はいずれもブロック派言語です。上記の3つの言語では同じブロック派でも記法がそれぞれまったく異なるのが面白いですね。

+

Rubyを初めて見た人はendによる文区切りが結構異様に感じられるようです。endを使う言語の中で最も有名なPascalの人気が下降する一方ですから無理もないのかもしれません。

+

では、Rubyはなぜendを文の区切りに選んだのでしょうか。

+

それにはいくつかの理由があります。

+
+

endはAlgolから続く伝統的な文区切り

+

Rubyは比較的「保守的」な部分があります。最近優勢なC, C++, Javaとは違いますが、endにはここ数十年文区切りとして使われてきた伝統があります。

+

begincaseがきれい

+

たとえば現在のRubyではbegin文は以下のような構文になります。

+
+
begin
+  文
+rescue 例外クラス
+  文
+ensure
+  文
+end
+
+

仮にこの構文を {} で表現しようと思うと以下のようになるでしょう。

+
+
begin {
+  文
+}
+rescue(例外クラス) {
+  文
+}
+ensure {
+  文
+}
+
+

なんだか間が抜けているようですし、あまりきれいではありません。case文でも同じような状況があります。ま、主観や趣味の問題かもしれませんが。

+

オートインデントが可能

+

Emacsであればruby-modeを使ってオートインデントができます。予約語を使った言語のオートインデントは記号を使ったものよりも難しいのですが、ruby-modeによってオートインデントが可能になる見通しがついたことでendを採用する決心がついたというのは正直な話です。

+
+

とはいえendに欠点がないわけでもないです。

+
+

文区切りに別の行が必要となるので行数が増える

+

しかし、逆に文の並びの終わりがはっきりわかってよいという側面もありますから、行が増えることがただちに問題であるということにはなりません。

+

文区切りが識別子と区別がつきにくく埋没しがち

+

最近のエディタは予約語に色が付けられますから、この点はさして問題にならないかもしれません。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-012.xhtml b/docs/vol1/xhtml/p-012.xhtml new file mode 100644 index 0000000..9e67c6e --- /dev/null +++ b/docs/vol1/xhtml/p-012.xhtml @@ -0,0 +1,58 @@ + + + + + +第7章 条件判断とループ + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ Linux Conference 2001

+
+

9月26日から9月28日まで、東京の明治記念館においてLinux Conference 2001が開催されました。例年、Linux Conferenceはプログラム委員から講師候補に直接コンタクトがあったのですが、今年はCall for Paper(論文応募)方式に変更されました。正直、論文を用意するのも大変なので、今年は発表しないつもりでいたのですが、広島市立大の木山さんが応募した論文が2本も通ったので、セッションを1つ作るために「埋め草」として話しませんか、と誘われたので引き受けることにしました。頼まれるとなかなかイヤとはいえないのです。

+

ということで、スピーカー特権で、26日から参加してきました。プログラムは、

+
    +
  • http://lc.linux.or.jp/

  • +
+

から参照できます。

+

26日には、『Rubyを256倍使うための本 無道編』の著者である青木峰郎さんによるチュートリアル『Ruby活用〜オブジェクトは恐くない』に参加しました。青木さんのチュートリアルは、オブジェクト指向設計に注目して、いかに共有を推し進めるか、いかに「よい」プログラムを書くかということについて解説がありました。発表資料は、

+
    +
  • http://www.loveruby.net/~aamine/ja/lc2001/

  • +
+

から入手できます。とはいえ、青木さんはこの手の発表は初めてだったようで、かなり緊張していました。『無道編』や『紅玉制覇編』でのなめらかな語り口は聞かれませんでした。ちょっと残念。また、チュートリアルでは実際に段階的に「よい」プログラムを開発していくという形式だったのですが、「よい」プログラムになっているはずなのに、なんとなくだんだん複雑になっていくという皮肉な現象も観測されました。

+

27日午後には「プラットフォーム: Ruby」と名付けられたRuby関連セッションが開催されました。内容は木山さんによる「オブジェクト指向スクリプト言語Rubyへの世代別ごみ集め実装手法の改良とその評価」、木山さんと同じ大学の佐原大輔さんによる「RubyのVMに向けて」、それから私による「Rubyの心理学」の3つの発表が行われました。

+

木山さんの世代別GC(ガベージコレクション)の実装については、その基本的実装について昨年11月のLinux Confereneでも発表されましたし、私は実際に一緒に開発も行いましたので、私にとっては耳新しいものではありませんでしたが、GCとは何か、というところから始まって、世代別手法がどのような仕組みで効率を改善するのかという点と、また実際にどの程度の改善が行われるかについて、よくまとまった発表でした。実際に全体の実行時間が39.3%、GC実行時間が88.7%も削減したという話でした。

+
+

もちろんすべてのケースでここまで高速化されるわけではないのですが、GCの実行速度は普段はあまり問題にならず、問題になるような場合というのは大量のオブジェクトを取り扱うケースで、そのような局面において世代別GCが有効であること、また、今年に入ってからの改善でさらに高速化されたことが示されました。

+

ただ、木山さんにとって気になる点がいくつか残っているそうで、今のRubyに取り込むよりも、将来のVMバージョンに組み込んだほうがよいのではないかと言っていました。

+

佐原さんのVMの実装の話はなかなか興味深いものでした。VMというのは仮想機械(Virtual Machine)の略で、プログラムを仮想的なCPUの機械語(よくバイトコードと呼ばれます)に変換して、実行しようとするものです。また、この仮想的なCPUのエミュレータのことをVMと呼びます。

+

私はこの実装については何もタッチしていません。まだプロトタイプレベルで、Rubyプログラムを直接実行するレベルには達していないとはいえ、独自にここまで開発を行う人が出てくるというだけも、私にとっては驚異です。実際、Rubyは処理系開発者よりも、プログラマーに対して優しいように設計されているので、処理系を開発するのは結構大変なのです。

+

さて、今回実装されたVMは、まだ構文解析を行うパーサーはなくて、アセンブラしか解釈できないうえに、クラスライブラリも数値しかないのだそうですが、それでもフィボナッチ関数(fib)や竹内関数(tak)の実行は、現在のRubyと比較して3倍近く高速化されるのだそうです。

+

また、目標は現状よりも10倍速い処理系を実装することだそうです。本人も難しいだろうとは自覚しているようですが。

+

Ruby実装者の立場から聞くと、静的言語向けのVMであるJava VMをベースに設計したのはどうだろうか、とかいろいろ疑問があるにはあるのですが、なかなか頼もしい発表でした。

+

私のものは前2つと比較すると恥ずかしいくらい不真面目な内容でした。要するにRubyってのはどういうふうに人間向けにデザインされているかとかいうような内容です。簡単にまとめると、プログラミング言語は実はマン・マシン・インターフェイスであり、ヒューマンインターフェイスの原則が適用されるということと、そしてその結果、言語設計は人間に注目して行われるべきことを紹介したつもりです。

+

私の発表資料は、

+
    +
  • http://www.ruby-lang.org/ja/lc2001/

  • +
+

で公開しています。

+

セッション終了後、明治記念館の一室を借りて、Ruby BOFが開かれました。BOF とはBird Of a Featherの略で、1つのことに興味がある人が集まってワイワイやる集会のことです。今回も日本にはRubyユーザーグループがない話から、VMの実装の話まで多岐にわたって話が制限時間いっぱいまで行われました。

+

28日にもライトニングトークを始めとして、Rubyの話がいくつかあったようなのですが、この日は娘の誕生日なのであきらめて帰りました。家族からこれ以上不評を買ってもいけませんから。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-013.xhtml b/docs/vol1/xhtml/p-013.xhtml new file mode 100755 index 0000000..7d96b6b --- /dev/null +++ b/docs/vol1/xhtml/p-013.xhtml @@ -0,0 +1,278 @@ + + + + + +第8章 オブジェクトと変数 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay8 +
+

+初等Ruby講座
+オブジェクトと変数 +

+
+

[Linux magazine, 2002年1月号]

+
+

変数についての説明です。そういえばこの頃は「変数は入れ物」という発想をする人が多くて、たとえば複数のローカル変数が同じ配列を指しているときに、片方の変数経由で配列要素を書き換えるともう1つの変数も変わってしまって驚いた、などという話を頻繁に聞きました。そういう誤解がこの記事を書く動機になったのですが、最近はそういう誤解は減ったように感じます。やはり、JavaScriptやPythonのようなメジャーな言語もRubyと同じ変数モデルを採用しているからでしょうか。

+

「開発日記」はアメリカで開催された第1回RubyConfについての話題です。自分の作った言語に関するカンファレンスが(勝手開催のOOPSLAの前座とはいえ)、アメリカで開催されるのは私にとって感激でした。ここでは出席者は70名くらいと書いてあるんですが、別の資料には34名とあって矛盾しています。私の記憶は信用できないんで、本当は34名だったんでしょう、たぶん。

+
+
+

Rubyはオブジェクト指向言語ですから、オブジェクトという単語がいつもつきまといます。しかし、これがわかりにくい原因なのだという意見もあります。今回はこのオブジェクトの基礎を解説しようと思います。けれど、いわゆるオブジェクト指向プログラミングでよく使われる継承とかカプセル化のような難しげな概念には踏み込みません。

+
+
+

オブジェクトとは

+
+

オブジェクト(object)とは英語で「モノ」という意味です。Rubyで扱うものは、すべてこれオブジェクトです。ですから、整数の1も、文字列の"abc"もオブジェクトです。Rubyプログラムで表現するものは、現実世界の具体的な存在を表したもの(たとえば犬)も、抽象的なもの(たとえば集合)もすべてオブジェクトです。

+
+

Rubyではオブジェクトのことを値と呼ぶこともあります。これは重要な点ですので覚えておいてください。

+
+

Rubyでは値とはオブジェクトのことである

+
+

世の中の種々雑多なモノがあるように、オブジェクトもさまざまです。しかし、1つだけ決まっていることがあります。それは「すべてのオブジェクトは命令に反応する」という点です。オブジェクトに命令すれば、オブジェクトは自分が知っている命令であれば、それに対応する仕事を実行しますし、知らない命令であれば「そんな命令は知らない」と返事します。たとえば文字列にはその長さを求めるように命令することができ、犬にはえるように命令することができます。

+

つまり、どのようなオブジェクトであっても、そのオブジェクトがどんな命令を受け付け、それに対してどんな仕事をしてくれるかを知っていれば、使いこなすことができます。現実世界と違ってオブジェクトは知っている命令には完全服従します。ただし、「正しくプログラムされていれば」ですが。これがオブジェクト指向の最低限の決まりごとです。

+

この命令のことを「メッセージ」、命令に対応する仕事のことを「メソッド」と呼びます。でも、この2つはあまり区別されないで、単にメソッドと呼ばれることも多いです。

+
+
+

メソッド

+
+

メソッドを呼び出すためには、Rubyでは以下のような文法を使います。

+
+
obj.x()
+
+

obj」の部分が「オブジェクト」です。この部分にはオブジェクトを指定する式が書けます。このオブジェクトはメッセージを受け取るオブジェクトですから、「レシーバ」と呼ばれることがあります。

+

x」の部分が「メッセージ」です。これでレシーバのxという名前の「メソッド」を呼び出しているわけです。()の部分は今回は空ですが、コンマ(,)で区切った任意の数の式が書けます。これはメソッドの「引数」(「ひきすう」と読みます)と呼ばれ、メソッドに与える追加的な情報になります。たとえば文字列の長さを求めるためには文字列にlengthメッセージ を送ります。言い換えれば、文字列のlengthメソッドを呼び出すということです。

+
+
"abc".length() # 3が得られる
+
+

メソッド引数のためのかっこは原則的に省略できますから、上の命令は、

+
+
"abc".length
+
+

と書いても同じです。ただし、あまり省略しすぎるとプログラムが読みにくくなるかもしれません。特に引数がある場合には混乱のもとです。やりすぎは禁物です。

+

メソッド呼び出しには、メッセージの受け手であるオブジェクトを省略した形式もあります。その場合の形式は、

+
+
x(arg1, arg2)
+
+

のようになります。xがメッセージで、arg1arg2が引数です。引数が2個なのは単なる例で、任意の数が指定できます。この場合のメッセージの受け手は、実行中のメソッドのレシーバになります。

+
+

メソッドの外側でも、レシーバ用に用意されたオブジェクトが設定されていて、受け手が省略されたメッセージを受け取ってくれます。Rubyのプログラムにおいては常に何らかのオブジェクトがレシーバ、あるいは別の言い方をすると省略時のメッセージの受け手として控えています。レシーバは、いつもselfという変数(正確には「擬似変数」と呼びます)によって参照することができます。

+

今話した「その辺のオブジェクト」がなにもので、どのような機能と振る舞いを持つかについては、今後詳しく説明することにしましょう。

+

ですから、先月までにすでに出ていた、

+
+
puts "hello"
+
+

なども、この「その辺のオブジェクト」がputsメソッドを実行してくれていたわけなんですね。この例の場合、putsが「メッセージ」で、"hello"が引数になります。引数の周りのかっこが省略されていますね。

+

メソッドの呼び出しはRubyの基本的な機能の1つです。先月学んだ制御構造などを除いては、Rubyのほとんどの機能はこのメソッド呼び出しを使って利用することができます。

+
+
+

クラス

+
+

オブジェクトはおおむね種別ごとに分類できます。手あかのついたような例ですが、ここにポチというオブジェクトがあった(いた)場合、私たちはそれを犬であると認識するわけです。現実世界に犬というモノがあるわけではなく、犬というのはあくまでも抽象的な種別にすぎないわけです。この種別のことを「クラス」と呼びます。ですから、ポチは犬クラスに属するオブジェクトということになるわけです。クラスに属することを強調するときにはオブジェクトのことをインスタンスと呼ぶことがあります。ですから、犬クラスに属するオブジェクトであるポチは、犬クラスのインスタンスと呼ぶわけです。

+

同じクラスに属するオブジェクトは原則として同じメッセージに反応し、同じメソッドを持ちます。しかし、ポチは同じ犬クラスのオブジェクトであっても別の犬であるタロやジロとは性質は似ているものの微妙に違うように、同じメソッドといえどもいつも同じ結果を返すわけではありません。具体的には毛皮の色が違ったりするわけです。

+

クラスを定義するためにはclass文を使います。

+
+
class Foo
+ ...
+end
+
+

また、他のクラスの定義を元に新しいクラスを作るときには、元になるクラスを指定します。元になるクラスのことをスーパークラスと呼びます。

+
+
class Bar<Foo
+ ...
+end
+
+
+

クラスの中ではメソッドなどを定義します。メソッド定義はdef文を使います。

+
+
class Dog
+  def bark(how)    # 「吠える」メソッド
+    puts how
+  end
+end
+
+

これでDogクラスに属するオブジェクトは吠えることができるようになりました。

+
+
pochi = Dog.new     # Dogオブジェクトはこうして作る
+pochi.bark("わんっ") # 吠えさせてみよう、わんっ
+
+

クラスの定義については、今回はここまでにしておきます。詳細は今後きちんと説明することにします。

+
+
+

オブジェクト基礎のまとめ

+
+

ここでここまで学んだことをまとめておきましょう。重要な用語は以下のとおりです。

+
+

オブジェクト

+

オブジェクトは「モノ」です。オブジェクトにはそれぞれ機能があり、命令すると仕事をしてくれます。Rubyで取り扱うあらゆるものはオブジェクトです。ですから、Rubyにおいて「値」とはオブジェクトのことです。

+

メッセージ

+

オブジェクトに命令するときの命令の名前がメッセージです。

+

メソッド

+

メッセージを受けたオブジェクトが実際に行う作業のことをメソッドと呼びます。慣習としてメッセージよりもメソッドという単語をよく使います。ですから、「文字列にlengthメッセージを送る」よりも「文字列のlengthメソッドを呼び出す」という言い方のほうが頻繁に見かけます。

+

クラス

+

オブジェクトの「種別」がクラスです。同じクラスに属するオブジェクトは(まだ説明していない例外を除いて)、同じメソッドを持ち、同じメッセージに反応します。

+
+
+
+

オブジェクトの指定

+
+

で、このオブジェクトを指定する方法は3つあります。それは、「リテラル」「変数」「式」の3つです。

+

ある種のオブジェクトはたびたび用いられるので、プログラムの中で直接表現する方法が用意されています。たとえば、プログラムの中で数字の1が登場すれば、それは整数の1オブジェクトという意味ですし、"abc" は文字列オブジェクトを意味します。

+

変数はオブジェクトに付けるラベルのようなものです。オブジェクトにラベルを付けておけば、あとでそのラベルでオブジェクトを使うことができます。たとえば、

+
+
a = "abc"
+
+
+

という形で"abc"という文字列にaという名前を付けておくと、

+
+
a.length
+
+

という形でaという名前を付けたオブジェクトのlengthメソッドを呼び出すことができます。

+

そして、メソッド呼び出しや1+1のようなものが式です。上のlengthメソッドの呼び出しも式です。これらの組み合わせでオブジェクトを表現することができます。

+
+
+

変数の種別

+
+

変数には以下の種類があります。

+
    +
  • ローカル変数

  • +
  • グローバル変数

  • +
  • クラス変数

  • +
  • インスタンス変数

  • +
  • 定数

  • +
  • 擬似変数

  • +
+
+

ローカル変数

+

ローカル変数はメソッドの中だけで有効な変数です。ローカル変数の名前はアルファベットの小文字またはアンダーライン('_')で始まります。

+
+
+

グローバル変数

+

グローバル変数とはつまりプログラムのどこからでもアクセスできる変数です。どこからでもアクセスできるってことは、誰がいつ変更したのかわからなくなりやすいってことでもあるので、これを使うのはあんまりお勧めじゃありません。

+

グローバル変数の名前は $ から始まります。多用するとプログラムが醜くなりますね。これもお勧めしない理由の1つです。グローバル変数の例はこんな感じです。

+
+
$foo
+$_
+$1
+
+

なお、グローバル変数の一部はローカル変数と同じように振る舞うものがあります(たとえば$_, $~, $1 など)。ですから、グローバル変数というよりもむしろ「スペシャル変数」というような名前のほうが適切なのかもしれません。呼び名を変えようかなあ。

+
+
+ +

インスタンス変数

+

インスタンス変数はオブジェクトごとの変数です。「犬の名前」とか「毛皮の色」とかオブジェクトごとに違う状態を表現するための変数です。インスタンス変数は名前が、@ で始まります。こんな感じです。

+
+
@foo
+
+

インスタンス変数は実行中のメソッドのレシーバに属します。

+
+
+

定数

+

変数なのに定数とはなにごとかと、毎回説明してて思うんですが、こればっかりはしょうがありません。

+

定数とはクラスに属する固定された(ほんとはちょっと違うんですが)値のことです。クラスが違えばアクセスできる定数も変わります。

+

定数の名前は大文字で始まります。定数の例はこんな感じです。

+
+
ARGV
+RUBY_VERSION
+
+

それから、クラス名も定数です。

+
+
String
+Array
+
+

値が設定されていない定数は存在しませんから、アクセスはエラーになります。

+
+
+

クラス変数

+

定数にちょっと似てるのがクラス変数です。クラス変数は名前が、@@ で始まります。クラス変数はこんな感じです。

+
@@foo
+

定数と同様に値が設定されていないクラス変数は存在しませんから、アクセスはエラーになります。しかし、クラス変数は「変数」ですから、値を自由に変えることができます。

+
+
+

擬似変数

+

別の意味で定数に似ているのが擬似変数です。擬似変数というのは、見かけはローカル変数と同じなのに値が固定で代入できないものです。擬似変数に代入しようとすると文法エラーになります。

+

擬似変数には表8.1の6つがあります。

+
+

表8.1●擬似変数

+ + + + + + + + + + + + + + + + + + + + + + + + + +
true真(条件が成立していること)を示す値
false偽(条件が成立していないこと)を示す値
nil未定義(初期化されてないとか)を示す値
self実行中のメソッドのレシーバ
__FILE__実行中のファイル名
__LINE__実行中の行番号
+
+
+
+
+ +

代入

+
+

代入とは変数(など)にオブジェクトを割り当てる操作です。言い方を変えればオブジェクトに名前を付けると言ってもよいでしょう。決して間違えてはいけないのは「変数はオブジェクトを『指す』もので、オブジェクトの容器ではない」ことです(図8.1)。

+
+ +
+ fig0801 +
+

図8.1●複数の変数が同じオブジェクトを指す

+
+

ここではとりあえず「変数は容器である」という考え方を「Rubyでない考え方」、「変数は参照である」という考え方を「Rubyの考え方」と呼ぶことにします。普段はあまり問題にならないのですが、ここを押さえておかないと複数の変数が同じオブジェクトを指しているときに混乱します(図8.2)。

+
+ +
+ fig0802 +
+

図8.2●複数の変数が同じオブジェクトを指す

+
+

「Rubyでない考え方」では文字列の一部を変更した場合、元の文字列は変化しますが、代入先は変化しません。一方、「Rubyの考え方」では、指している先が変化しますから、変数aの値と変数bの値も同時に変化するように見えます。これはつまり、変数aから参照されるオブジェクトも、変数bから参照されるオブジェクトも同じであるということを意味しています。

+

「なんで?」と思う人もいるかもしれません。実は、これは「値」という言葉をどうとらえるかにかかっているのです。

+

最初のほうで説明したように、Rubyでは「値」とはいつも「オブジェクト」のことです。ですから、変数aの値が "abc" だとすると、その「値」を変数bに代入するということは、"abc" という文字列オブジェクトが変数bからも参照できるようになるということを意味します(図8.2(2))。代入に当たってオブジェクトのコピーは発生しません。

+ +

一方、「Rubyでない考え方」では「値」は「ある種の状態」です。ですから、この考え方のもとでは "abc" という「値」は「文字a, b, cが順に並んでいる状態」のことです。これを代入するということは、変数bの格納している状態が変数aと同じになるということです(図8.2(1))。一度代入されてしまえば、変数aの値と変数bの値は無関係ですから、変数aの値を変化させても変数bには影響されません。

+

BASICやPerlなど多くの言語では「変数は容器」という「Rubyでない考え方」を採用しています。それらの言語の知識がある人はこの点に引っかかることが多いようです。しかし、Lisp, Smalltalkなどの言語ではRubyと同じ「変数は参照」という考え方を採用しています。一度慣れてしまえば、Rubyのような考え方のほうが一貫性があって理解しやすいと思います。Cなどでは構造体変数などは「容器」として振る舞いますが、ポインタは「参照」として振る舞うのでますます混乱します。そういえば、Perl 5にも「参照」というポインタのようなものがありますね。

+
+
+

まとめ

+
+

今回はオブジェクトと変数について説明してみました。今回説明した部分は基本的すぎてあまり具体的な実例が出せませんでした。しかし、ここは基礎として重要ですから我慢してください。

+

次回はより具体的なクラスについて学ぼうと思います。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-014.xhtml b/docs/vol1/xhtml/p-014.xhtml new file mode 100644 index 0000000..9c01dd5 --- /dev/null +++ b/docs/vol1/xhtml/p-014.xhtml @@ -0,0 +1,205 @@ + + + + + +第8章 オブジェクトと変数 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ 変数

+
+

入門編でも変数について学びましたが、こちらではより詳細に変数について見てみましょう。変数のルールは、詳細に見ると結構いろいろ複雑です。でも、普通に使うぶんにはあまり問題にならないように設計したつもりです。本当です、信じてください。

+
+

ローカル変数

+

ローカル変数で注意すべき点は、スコープ(有効範囲)と宣言です。

+

変数はある特定の範囲だけで有効な変数です。特定の範囲とは、以下のいずれかです。

+
    +
  • def文(defからendまで)

  • +
  • class文(classからendまで)

  • +
  • module文(moduleからendまで)

  • +
  • トップレベル(上記のすべての外側、ファイル末尾まで)

  • +
  • ブロック(doからendまで、{ から } まで)

  • +
+

この範囲内で代入されたローカル変数はそのスコープの終わりまで存在します。代入はメソッドの引数やブロックのパラメータとして値が設定されることを含みます。その範囲の実行が終わるとローカル変数は自動的に消滅します。他の言語に慣れた人は、begin文が新しい変数スコープを作らないことに注意する必要があります。

+

ブロックによるスコープを例外として、外側のスコープのローカル変数は見えません。ブロックによるスコープの場合には外側のスコープのローカル変数も参照することができます。

+

このブロックのルールは少々ひっかかりやすくて、たとえば、

+
+
["foo", "bar", "baz", "quux"].each do |x|
+   if /^q/ =~ x
+     len = x.length
+   end
+   break
+end
+puts len
+
+

というプログラムで、qから始まる要素の長さを求めようと考えた場合、結果を代入したlenという変数が、ブロック内部で初出のため、結果を出力しようとブロック終了後で参照した場合、すでに消えてなくなっている、というような目にときどき出くわします。

+

Rubyは変数の宣言のない言語として知られていますが、明示的な宣言文がないというだけで、変数の種別によっては代入が変数宣言的な役割を果たしています。ローカル変数もスコープの中での最初の代入が宣言の役割を果たします。しかたがないのでこのような場合には、ブロックの前にローカル変数lenを初期化してやる必要があります。

+
+

個人的には、この設計はあんまりよくなかったなあと思うときもあって、できることならば直したいと思っているのですが、コトはそんなに簡単ではないので将来直せるかどうかはわかりません。

+

この仕様は別に誰かを悩ませるためではなくて、それなりに目的があるのです。この仕様が役に立つ場合もいくつかはあるのです。たとえばProcを使って名前のない手続きを作ろうとしたときに、この仕様によってブロック内部の変数をその手続きのローカル変数として使えます。

+
+
fact = Proc.new{|n|    # nはブロック内ローカル変数
+  if n == 0
+    1
+  else
+    n * fact.call(n - 1)
+  end
+}
+puts fact.call(5)
+
+

また、スレッドではスレッドローカル変数としても役に立ちます。

+
+
Thread.new do
+  for i in data        # iは外部から影響を受けない
+    ....
+  end
+end
+
+

代入が行われていないローカル変数の参照は、引数のないメソッド呼び出しとみなされます。たとえ同じスコープの後ろのほうで変数に代入していてもです。ということは、やろうと思えば、

+
+
puts      # 引数のないputsは改行を出力する
+puts = 5  # putsというローカル変数ができる
+puts      # ローカル変数アクセス、改行出力されない
+
+

ということもできてしまうわけです。が、こういうのは当然よくない例であり、やるべきではありません(よね)。

+

ローカル変数はコンパイル時に決定されます。ですから、変数が定義されているかどうかを判定するdefined? はその場所でローカル変数が定義されているかどうかだけを判定します。

+
+
2.times do          # 2回ループするんだけど...
+  puts defined?(a)  # ここではaは定義されてないからnil
+  a = 25            # ここからendまでaが有効
+  puts a            # 25を出力
+end
+
+

また、実行時にevalで定義されたローカル変数はプログラムからは見えません。

+
+
eval("a = 25")
+puts a              # 見えない、エラー
+
+
+
+ +

グローバル変数

+

グローバル変数はどこからでも見えるという非常に単純なルールがありますので、有効範囲について心配する必要はありません。

+

グローバル変数について注意すべき点は、アクセス(参照や代入)によって特別な処理が行われる変数があるという点です。たとえば、$_$1 などの特殊変数ではグローバル変数のような見かけをしているがローカル変数のようにメソッドごとに独立の値を持つものがあります。また、$SAFEという変数はスレッドごとに独立した値を持ちます。

+

グローバル変数にはRubyレベルでも代入が行われるときの処理を定義できます。処理の定義はtrace_varメソッドで行います。

+
+
trace_var 変数名 {|v| 手続き}
+
+

ブロックには新しい値がパラメータとして渡されます。たとえば、以下のように使います。

+
+
$foo = 1
+trace_var(:$foo) {|v| puts "$foo is #{v}"}
+$foo = 42    # "$foo is 42" と出力
+$foo = "hi"  # "$foo is hi" と出力
+
+
+
+

インスタンス変数

+

インスタンス変数には他の変数たちほど隠された働きはありません。ただ単に代入された値が設定されるだけです。インスタンス変数は最初に代入されたときからそのオブジェクト内に存在するようになります。代入によって初期化されていないインスタンス変数をアクセスするとその値はnilになります。インタプリタに -wオプションが指定されている場合には、未初期化のインスタンス変数のアクセスに対して警告が出力されます。

+

インスタンス変数が代入によって生じるということは、同じクラスのインスタンスでもそれぞれインスタンス変数が異なる場合がありえるということでもあります。これはC++やJavaなど他のクラス定義の中にインスタンス変数の定義が含まれるオブジェクト指向言語に慣れた眼には奇異に映るかもしれません。これはRubyの動的な性質を表しているといえると思います。

+
+
+

クラス変数

+

クラス変数への代入はメソッドの外側では定義としての働きがあり、メソッドの内側では値の更新を行います。

+

メソッドの内側でクラス変数への代入を行う場合、もしそのクラス定数がすでに外側で代入されていればそのまま変数の値を更新します。もし、そのクラス変数への代入が行われていなければ、エラーになります。

+
+
class Foo
+  @@foo = 1
+  def foo
+     @@foo = 2  # @@fooの値が変わる
+     @@bar = 3  # 未定義、エラー!
+  end
+end
+
+
+

メソッドの外側でクラス変数へ代入を行うとき、もしそのクラス変数がすでに定義されていれば、クラス変数の名前が重複してクラス変数の有効範囲がわかりにくくなります。そこで、そういう場合には警告が出力されます(Ruby 1.7.xで -wオプションを指定した場合)。たとえば、以下のようなプログラムの場合、

+
+
module M1
+  @@foo=1
+end
+module M2
+  @@foo=2
+end
+class Foo
+  include M1
+  include M2
+  p @@foo
+end
+
+

クラスFooではモジュールM1から受け継いだ @@fooとモジュールM2から受け継いだ @@fooの両方が存在することになります。挙動としては後から引き継いだM2@@fooが有効になるのですが、あいまいであるので、

+
+
warning: class variable @@foo of M1 is overridden by M2
+
+

という警告が出力されます。

+

なお、クラス変数はそのクラスやモジュールを継承したすべてのクラスやモジュールからアクセスできるため、スコープを限定したグローバル変数といってもよいので利用には注意が必要です。

+
+
+

定数

+

定数の挙動を詳細まで見ると少々混乱するかもしれません。定数の振る舞いはRubyの中でもなかなか複雑になっています。まず、最初にRubyの定数というものは以下の性質があります。

+
+
+ +
+ fig0803 +
+

図8.3●定数の有効範囲

+
+ +

定数への代入はメソッドの中ではできませんから、定数の代入というのは定義とか宣言という意味合いが強くなります。

+

メソッドの外であれば、定数への代入は自由にできます。このとき、代入を行ったクラスで同じ名前の定数がすでに定義されていた場合、警告を出したうえで定数の値を書き換えてしまいます。

+

一方、代入を行ったクラスには同じ名前の定数がなくて、スーパークラスで定数が定義されている場合、現在のクラスにおいてだけ、その定数の値が置き換わります。元のクラスの定数の値には影響がないことに注意してください。

+
+
class Foo
+  CONST1 = 1
+  CONST2 = 2
+  CONST1 = 3  # 警告のうえ、書き換え
+end
+
+class Bar<Foo
+  CONST2 = 4  # Barにおいてのみ値が置き換わる
+end
+
+

最後にRubyの定数について誤解を招きやすい2つの点を注意しておきます。1つはすでに述べたように実際にはやろうと思えば定数の書き換えができる点です。警告はされるものの厳密には定数でないという点には注意が必要です。

+

もう1つの点は、定数というのはその値、つまり指しているオブジェクトが変わらないのであって、指しているオブジェクトの状態が変化しないわけではないという点です。つまり、以下のようなプログラムにおいて、

+
+
ARRAY = [1,2,3,4]
+
+

定数の参照する配列の要素を置き換えると、

+
+
ARRAY[0] = 10
+
+

定数ARRAYの指す配列は[10,2,3,4]になります。しかし、これは値が変わったわけではないという点に注意してください。配列を変化させたくなければ、freezeするという手があります。

+
+
ARRAY.freeze
+ARRAY[0] = 20  # 内容の変更、エラー!
+
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-015.xhtml b/docs/vol1/xhtml/p-015.xhtml new file mode 100644 index 0000000..4f39627 --- /dev/null +++ b/docs/vol1/xhtml/p-015.xhtml @@ -0,0 +1,111 @@ + + + + + +第8章 オブジェクトと変数 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ RubyConf.new (2001)

+
+

同時多発テロ以来キナくさいアメリカへ行くのはホンキかと、周囲の心配もよそに、行ってきました、フロリダへ。今回、フロリダ州タンパでRuby ConferenceとOOPSLAが開かれたのに参加してきたのです。

+

いやあ、炭疸たんそ菌の騒ぎやアフガニスタン空爆まで始まって一時はどうなることかと思いましたが、厳重な警備体制を乗り越えて無事に行って帰ってきました。空港では毎回何度も何度もパスポートをチェックされたり、自動小銃を抱えた軍人さん(州兵でしょうね)を何人も見かけたりしました。

+

で、結局タンパに着いたのはカンファレンス当日の早朝(というか前日深夜というか)で、時差のせいかカンファレンスには遅刻しちゃいました。朝ご飯も食べ損ねたし。

+

さて、それはともかく記念すべき第1回Ruby Conferenceのプログラムは表8.2です。

+
+

表8.2●Ruby Conferenceプログラム

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Friday October 12
08:30Continental breakfast
09:15Dave Thomas: Welcome address
09:30Andy Hunt: Ruby Insurgency
Pete McBreen: Using Ruby to Teach OO programming
12:00Lunch
13:00Emil Ong: Parallel programming with MPI Ruby
Avi Bryant: Web Development with IOWA
Lyle Johnson: Developing GUIs with Fox and Ruby
Ken Rubotzky: Scouting Japanese Resources
18:00Dinner, followed by
Matz: Keynote
Saturday October 13
08:30Continental breakfast
09:00Nathaniel Talbott: esreveR nI gnitseT
Ron Jeffries and Chet Hendrickson:
Pairing Fishbowl, or how Ruby works with XP
12:00Lunch
13:00David Alan Black: Ruby Behaviors
Ryan Leavengood: Ruby Gems
14:30General brainstorming session:
Let’s design RAA.succ
+
+

Ruby Conferenceには7カ国から参加があったそうです。私は6カ国(アメリカ、カナダ、日本、スウェーデン、ドイツ、ベネズエラ)までしか数えられなかったのですが、Dave Thomasは7カ国だと強く主張していました。もしかしたら、彼(イギリス出身、テキサス在住)は自分をイギリス人であると数えたのかもしれません。参加人数は70人くらいだったかなあ。

+

発表資料はwww.rubyconf.orgから入手できますから、見ていただきたいのですが、皆なかなか真面目かつ真剣で、8年前気楽な気持ちで開発を始めたRubyがこんなことになるとは予想もできませんでしたし、なんだか不思議な気持ちでした。

+

印象的だったのは、日本以上にXP、それもTest First Programmingが注目されている点でした。13日にはXPに関するセッションも用意されていましたし、XP界からRon JefferiesとChet Hendricksonが参加してRuby開発環境を作るというテーマでペアプログラミングを実演してくれました。なんだか掛け合い漫才のように見えたというのは彼らには秘密にしておいてくださいね。あ、当然ながら開発環境はほんのサワリしか実現しませんでした、念のため。

+

私はもともとテストとかあんまり好きなほうじゃないんですが、これを機会にTest First Programmingに宗旨替えしようかなあなんて思いました。まだ、思っただけで実践してないんですが。

+

他にもホットな話題や議論はたくさんあったのですが、とても書ききれません。「次世代RAAを作ろう」というRAA.succのブレインストームなどやけどしそうな熱さでした。総括した印象としては、今回のカンファレンスはこじんまりとはしていますが、参加者は非常に熱意があり、参加していて気分のいいカンファレンスでした。参加者はみな一同に来年もやろうと話していました。

+ +

参加者には図8.4のようなTシャツが配られました。日本では3人しかもってないレアものです。いいでしょう?

+
+ +
+ fig0804 +
+

図8.4●RubyConf Tシャツ(モデルはmatz)

+
+

Ruby Conferenceの翌週には同じ町でOOPSLAが開かれました。OOPSLAとは「Object-oriented Programming, System, Language, and Applications」の略でACM(計算機械学会)の主催するオブジェクト指向に関する世界最大のカンファレンスです。OOPSLAが始まった80年代の後半は私も学生だったので論文集とかを一生懸命読んだ記憶がありますが、実際に参加するのは初めてです。

+

OOPSLAでは、9月にデンマークのJAOOで会ったWard Cunningham, Martin Fowlerに再会しましたし、他にもSmalltalkの実装で有名で、Ghostscriptの開発者でもあるPeter Deutcheなどにも会いました。尊敬する人たちに会ってかなり緊張しました。

+

しかし、しばらくOOPSLAについてはチェックしていなかったのですが、まるでJavaのカンファレンスのようにJavaばかりが話題になっていました。教育についても、開発手法についても、また処理系の実装についてもJava一色という感じでした。ちょっとだけSmalltalkの話をする人たちがいて、さらにわずかな人たちがRubyの話をしてました。

+ +

アメリカから帰国後、私は高熱を出して寝込んでしまい、ヤバい病気ではないか、やっぱり行かせるべきではなかったと周囲を当惑させましたが、大事には至らず今は元気です。ご心配なく。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-016.xhtml b/docs/vol1/xhtml/p-016.xhtml new file mode 100755 index 0000000..6e1c8d9 --- /dev/null +++ b/docs/vol1/xhtml/p-016.xhtml @@ -0,0 +1,485 @@ + + + + + +第9章 配列 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay9 +
+

+初等Ruby講座
+配列 +

+
+

[Linux magazine, 2002年2月号]

+
+

配列とソートについて解説しています。この辺の基本的な部分は何年経っても変わりませんね。

+

「開発日記」はRuby 1.8リリース直前の様子を紹介しています。当時開発中だったRuby 1.7というバージョンは、開発版として結局正式にリリースされることはありませんでした。この頃はバージョン番号の2桁目が奇数は開発版、偶数は安定版というルールを採用していました。ですから、1.3, 1,5, 1,7は開発のみでリリースされず、1.4, 1.6, 1.8は安定版としてリリースされました。同じ時期にはPerlもLinuxも同様のルールでしたから、一種の流行だったんでしょうね。このルールはRuby 1.9で見直され、1.9.0を開発版、1.9.1以降を安定版とするルールに変更されました。モチベーションは限りあるバージョン番号という「リソース」を節約するためです。Rubyのバージョン番号は各桁数字1つと決めているので余裕が少ないんですよね。

+

さて、本文中、「2002年初頭までには1.8がリリースされていることでしょう」とありましたが、実際にRuby 1.8がリリースされたのは2003年8月4日でした。実に1年半以上遅れましたね。この頃はまだ定期リリースという概念がなく、ずるずると遅くなりがちだったのを覚えています。

+
+
+

先月まではRubyの本当の基本である文法などについて見てきましたが、今回からRubyの胴体であるクラスライブラリについて紹介します。今回は配列について学びます。

+
+
+

配列とは

+
+

皆さんは単数と複数について悩まれたことはおありですか? 職業柄(というか海外にユーザーがたくさんいるソフトウェアの開発者という立場上)、大量の英語のメールを受け取って、それらに返事をしなければならない私は、モノの単数と複数についてときどき間違えてしまいます。日本語には単語の複数形という概念も、主語が単数形か複数形かで動詞が変化するというルールもないので、ついうっかりしちゃうんですよね。最初は単数だった主語を複数にしたのに動詞はそのままだったとかしょっちゅうです。ああ、英語をしゃべる国に生まれたらラクだったのになあ。いや、日本語が世界言語というのもよいな。

+
+

まあ、愚痴はここまでにして、Rubyの話に戻りましょう。Rubyも言語には違いありません。Rubyには単数形や複数形があるのでしょうか。

+

人間の使う自然言語よりもずっと単純なRubyには、実は複数形はありません。単数形だけです。では、複数のものを取り扱うときにはどうするのでしょう。

+

魚屋に行ってイワシを3匹買った場合をRubyで取り扱おうと思えば、イワシ個別に名前を付ける(鰯一郎、鰯次郎、鰯花子とかでしょうか)というのが一番簡単な解法です。でも、これでは融通がききませんし、あらかじめ決まっていない数の魚を取り扱えません。そういうときには複数の魚を載せるトレーのようなオブジェクトを使います。このようなオブジェクトのことを、「コンテナ」「コレクション」などと呼びます。

+

今回説明する配列(Array)もこのコレクションの一種です。

+

Arrayとはもともとは「整然と並んだもの」という意味ですが、実体も似たようなものです。たとえば、整数1, 2, 3を含む配列を図で表現すると図9.1のようになります。

+
+ +
+ fig0901 +
+

図9.1●配列(イメージ図)

+
+

整数が配列の格子の中にないことに注目してください。先月学んだ「Rubyの考え方(変数は参照)」の原則は、配列にも適用されます。ですから、今月は「配列はオブジェクトを『指す』もので、オブジェクトの容器ではない」と覚えてください。

+

配列を作る方法はたくさんありますが、一番簡単で一般的な方法は「配列式」を用いることです。配列式は[ ]で囲まれてコンマで区切られた式の並びです。たとえば、図9.1で示した配列であれば、

+
+
[1, 2, 3]
+
+

という表現になります。文字列の配列であれば、

+
+
["鰯一郎", "鰯次郎", "鰯花子"]
+
+

ですね(鰯はイワシです、念のため)。文字列の配列については省略形が用意されていて、同じ配列を、

+
+
%w(鰯一郎 鰯次郎 鰯花子)
+
+

と記述することもできます。

+
+
+

配列要素の参照

+
+

配列は0個以上の要素をまとめるオブジェクトで、その要素はそれぞれ順番付けられています。ですから、先頭の要素、次の要素、そのまた次の要素とそれぞれ取り出すことができます。

+
+
a = [1, 2, 3]
+a[0]       # => 1
+
+b = %w(鰯一郎 鰯次郎 鰯花子)
+puts b[1]  # => 「鰯次郎」を出力
+
+ +

忘れてはいけない重要な点は先頭の要素を表す番号は1ではなく、ゼロだということです。先頭の要素のことは普段「1番目の要素」と呼びますから、うっかり間違えないようにしてください。また、要素番号(インデックス)は負の数も指定できます。この場合は一番最後の要素が−1番目になります(図9.2)。

+
+ +
+ fig0902 +
+

図9.2●配列のインデックス

+
+

1つの要素を取り出すだけでなく、配列の一部分を範囲を指定して別の配列として取り出すこともできます。範囲の指定は、

+
+
[n,m]    先頭の位置と長さ
+[n..m]   先頭の位置と末尾の位置(末尾を含む)
+[n...m]  先頭の位置と末尾の位置(末尾を含まない)
+
+

の3種類があります。「..」と「...」の意味の違いに注意してください。

+
+
a = [1, 2, 3]
+a[1,2]    # => [2,3] 1番の要素から2要素
+a[1..2]   # => [2,3] 1番の要素から2番の要素まで
+a[1...2]  # => [2]   1番の要素から2番の要素の前まで
+
+
+
+

配列要素の変更

+
+

配列はその要素の一部を変更することができます。要素の変更には、配列要素の参照を左辺(代入先)にした代入によって行います。

+
+
b = %w(鰯一郎 鰯次郎 鰯花子)
+b[0] = "鮒太郎"
+# ["鮒太郎", "鰯次郎", "鰯花子"] になる
+
+

もちろん左辺は範囲を指定した要素参照も指定することができます。この場合、右辺には配列を指定します。

+
+
# 1番の要素の位置から長さゼロを置き換える
+# つまり、1番の要素の前に挿入する
+b[1,0] = ["鯉之助", "鯰三郎"]
+# ["鮒太郎", "鰯次郎", "鯉之助", "鰯次郎", "鰯花子"]
+# 長さは自動的に調整される
+
+# 4番の要素から4番の要素までを置き換える
+# 結局4番の要素を置き換える
+b[4..4] = ["鯨之進"]
+# ["鮒太郎", "鰯次郎", "鯉之助", "鰯次郎", "鯨之進"]
+
+# 3番の要素から4番の要素の直前までを置き換える
+# 結局3番だけが置き換わる
+b[3...4] = ["鮭造"]
+# ["鮒太郎", "鰯次郎", "鯉之助", "鯨之進", "鮭造"]
+
+ +

しかし魚偏の漢字ってたくさんありますね。

+

先ほど右辺には配列を指定すると解説しましたが、もし配列でない右辺を指定したらどうなるのでしょう? これはエラーにはならず、その範囲全体がその値に置き換わります。

+
+
# 0番から5要素分を置き換える
+# もとの配列が5要素しかないのでこの場合全部置き換え
+b[0,5] = "鯱助"
+# ["鯱助"]
+
+
+
+

配列の入手法

+
+

配列は非常に基本的なデータですから、さまざま局面で登場します。すでに紹介した配列式で明示的に作る以外にも、たとえば、

+
    +
  • IO.readlines(path)pathで指定したファイルの内容を1行1文字列を要素とする配列として返します。

  • +
  • Dir.glob(pat)patで指定したワイルドカードにマッチするファイル名を要素とする配列を返します。

  • +
  • local_variablesメソッドはローカル変数の名前を文字列の配列として返します。

  • +
+

これらはごくごく一部の例です。配列はほんとうにあちこちで登場します。見えにくいところでは、

+
+
a, b = b, a
+
+

のような代入(abの値を交換します)でも中で、

+
+
tmp = [b, a]
+a = tmp[0]
+b = tmp[1]
+
+

のような配列を用いた処理を行っています。

+
+
+ +

メソッドリスト

+
+

配列がどのようなことができるかを示すために配列オブジェクトの持つメソッド表9.1に示します。たくさんありますね。それぞれのメソッドの具体的な機能や使い方についてはマニュアルを参照してください。

+
+

表9.1●配列オブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
&配列の共通要素index要素検出
|いずれかに含まれる要素indexesindex取得
*配列の繰り返しindicesindex取得
+配列の結合join文字列に結合
-配列の差last最後の要素
<<配列への追加length配列サイズ
<=>大小比較mapcollectと同じ
[]要素の取得map!collect!と同じ
[]=要素の設定max最大要素
assoc簡易連想配列member?include?と同じ
at要素の取得min最小要素
clear要素のクリアnitemsnilでない要素数
collect処理結果の収集packバイナリ文字列化
collect!処理結果の収集pop末尾要素を取り出す
compactnilを取り除くpush末尾に追加
compact!nilを取り除くrassoc簡易連想配列
concat配列の追加reject条件による削除
delete要素の削除reject!条件による削除
delete_at位置による削除replace配列内容の置換
delete_if条件による削除reverse逆順化
detect要素の検出reverse!逆順化
each繰り返しreverse_each逆順繰り返し
each_indexindexによる繰り返しrindex逆順の要素検出
each_with_indexindex付き繰り返しselect条件に合う全要素検出
empty?空配列チェックshift先頭要素を取り出す
fill要素セットsize配列サイズ
finddetectと同じslice部分配列
find_allselectと同じslice!部分配列の切り出し
first最初の要素sortソート
flatten平滑化sort!ソート
flatten!平滑化uniq重複の削除
grep要素の選択uniq!重複の削除
include?メンバーチェックunshift先頭に追加
+
+
+
+ +

Bangメソッド

+
+

表9.1のメソッド一覧を見ると、名前の最後に「!」の付いたメソッドがいくつかあります。これは「Bangメソッド」と呼ばれます(「ばんめそっど」と発音してください)。Bangメソッドは、レシーバを変更します。逆順に並べ替えるreverseメソッドについて「!」が付いているものと、付いていないものを比較してみましょう。

+
+
ary = [0,1,2,3,4,5]
+ary.reverse     # [5,4,3,2,1]を返す
+                # aryは元のまま
+ary.reverse!    # これも[5,4,3,2,1]を返すが、
+                # aryも[5,4,3,2,1]になる
+
+

!」の付いていないreverseメソッドでは要素を逆順にしたコピーを作るのに対して、reverse!では配列の要素を直接逆順に並べ替えていることがわかるでしょう。Bangメソッドはコピーを行わないため、特に要素数が大きくなったり、呼び出し回数が頻繁になると実行性能を向上させることができます。

+

その一方、レシーバを直接書き換えてしまうために1つの配列が複数の変数などから参照されていると、思いがけない変更が発生することになりかねません。注意する必要があります。

+

もう1つ注意するべき点があります。それはメソッド名の「!」は「付いているものはレシーバを書き換える、付いていないものは書き換えない」という意味では「ない」ということです。

+

配列の場合「!」の付いているメソッドはすべてレシーバを書き換えますが、逆に「!」が付いていなくてもレシーバを変更するメソッドはいくつもあります。たとえば、deleteメソッドはメソッド名に「!」が付いていませんが、引数として指定した配列の要素を取り除きます。

+

ですから、メソッド名の「!」は、付いているものと付いていないものの両方が提供されていて、「!」が付いているもののほうが使用上より注意が必要という程度の意味にとらえてください。

+
+
+

繰り返し

+
+

配列に典型的な処理といえば、各要素に対して順に処理を行うことでしょう。C的に表現すると、

+
+
for (i=0; i<len; i++) {
+  ... a[i] を参照する ..
+}
+
+
+

という感じでしょうか。しかし、Rubyではもうちょっとマシな方法で各要素に対する処理が行えます。

+

一番典型的なのがfor文です。for文は以下のような文法を持ちます。

+
+
for 変数 in 式
+  文
+end
+
+ +

式の部分に配列(を返す式)を指定すると、その配列の要素が順番に変数に代入されfor文の本体が順に実行されます。配列の長さチェックや要素の取り出しなどはfor文が面倒を見てくれます。

+

その他にも繰り返しを行ってくれるメソッドがたくさんあります。

+
+

配列.each{|変数| 文}

+

変数に要素が順に代入され、文が実行されます。eachfor文と同じ働きをするメソッドです。実際にはfor文の処理はこのeachメソッドを使って実現されています。

+

配列.reverse_each{|変数| 文}

+

reverse_eacheachを逆順に実行します。

+
+

それから「-ect兄弟」と通称されるメソッド群があります。これらはみな「ect」で終わる名前を持ち、配列の各要素に対して繰り返して処理を行います。

+
+

配列.collect{|変数| 式}

+

式の結果を集めた配列を返します。mapという別名があります。

+

配列.select{|変数| 式}

+

配列の要素のうち、式が成立する(真になる)要素を集めて配列として返します。find_allという別名があります。

+

配列.detect{|変数| 式}

+

配列の要素を先頭から順番にチェックし、式が成立する(真になる)最初の要素を返します。findという別名があります。

+
+
+
+

ソート

+
+

ソート(sort)とは配列の要素を順番に並べ替えることです。たとえば、

+
+
[5,2,3,1,4]
+
+

+
+
[1,2,3,4,5]
+
+

に並べ替えることをソートといいます。配列の要素をソートするにはsortメソッドを使います。

+
+
ary = [5,2,3,1,4]
+ary.sort    # [1,2,3,4,5]を返す
+
+

sortメソッドは元の配列と要素がソートされた同じ大きさの配列を返します。配列が大きくなると、この配列のコピー処理が負担になる場合があります。その場合には配列の中身を直接ソートするsort!メソッドがあります。

+

sort!メソッドのほうがコピーが避けられるぶんsortメソッドよりも高速なのですが、破壊的なメソッドなので、配列そのものを書き換えるときのリスクがあることに注意してください。

+
+
+ +

Ruby 1.7の追加機能

+
+

Ruby 1.7では配列も機能強化されていて、表9.1に示したメソッド以外にも、下の6つのメソッド追加されています。

+
+

配列.all?{|変数| 式}

+

各要素に対して評価した式がすべて成立したときに真を返します。どれか1つでも式が成立しない要素があればそこで繰り返しを止めてしまいます。

+

配列.any?{|変数| 式}

+

各要素に対して評価した式のいずれかが成立したときに真を返します。式が成立する要素に出合うとそこで繰り返しを止めてしまいます。

+

配列.fetch(i,ifnone)

+

i番の要素を返します。iが配列の範囲を超えるときにはifnoneで指定した値を返します(ifnoneを省略したときにはnil)。

+

配列.insert(i,v)

+

iで指定した位置(i番の要素の直前)に引数で指定した値を挿入します。複数の値が指定されれば、それらをすべて挿入します。

+

配列.inject(n){|変数1, 変数2| 式}

+

injectも「-ect兄弟」の1つです。injectを実行すると、各要素ごとに式を評価します。変数1には前回の式の結果が入ります。最初の要素に対しては「前回の式の結果」はありませんから、injectの引数として渡した初期値を使います。変数2には配列の要素が代入されます。injectの値は最後に評価した式の値です。

+

injectの典型的な利用法は各要素の合計の計算です。以下にinjectを用いた配列要素の合計を示します。

+
+
ary = [1,1,2,3,5,8,13]
+p ary.inject(0) {|n,i| n + i} # => 33
+
+

配列.sort_by|変数| 式

+

式の結果に基づいてソートします。sort_byについては、のちほど詳しく説明します。

+
+
+
+

まとめ

+
+

ここまで駆け足で配列について見てきました。配列はRubyにおいてかなり重要なオブジェクトです。いろいろ試してみて、使いこなしてください。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-017.xhtml b/docs/vol1/xhtml/p-017.xhtml new file mode 100644 index 0000000..f9bc299 --- /dev/null +++ b/docs/vol1/xhtml/p-017.xhtml @@ -0,0 +1,210 @@ + + + + + +第9章 配列 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ ソート

+
+

入門編で説明したように、ソートは配列の要素を順番に並べ替えることなのですが、これをどのような手順(アルゴリズム)で行うかというのはソフトウェアの世界では重要なテーマでもあります。今回はソートについて少々深く見てみることにしましょう。

+
+

アルゴリズムのいろいろ

+

ソートのアルゴリズムは数々ありますが、ここでは代表的なものだけを紹介しておきます。

+
+
バブルソート
+

最も単純なソートアルゴリズムです(リスト9.1)。端から隣り合う要素を比較して左のほうが大きければ交換するという処理を繰り返します。1回配列の全要素に対して繰り返すたびに最も大きな要素が確定します。バブルソートは単純なのですが、比較回数が要素数の2乗に比例するので配列が大きくなると極端に遅くなります。

+
+

リスト9.1●バブルソート

+
def bsort(a)
+  len = a.size - 1
+  while len > 0
+    i=0
+    while i < len
+      if (a[i] <=> a[i+1]) > 0       # 左が大きい
+        a[i], a[i+1] = a[i+1], a[i]  # 要素交換
+      end
+      i += 1
+    end
+    len -= 1
+  end
+  a
+end
+
+a = [5,2,3,1,4]
+p bsort(a)
+
+
+
+
+ +
クイックソート
+

バブルソートは要素数が増えるとあまりにも性能が悪くなるので、よりマシなソートアルゴリズムが探し求められました。その代表的なものがクイックソートです。クイックソートはその名のとおりほぼ最速のアルゴリズムです。

+

クイックソートは要素の中から1つを選び、要素をその要素より大きいグループとそうでないグループに分割し、それぞれのグループに対して再帰的に分割を繰り返すことによってソートを行うアルゴリズムです。

+

ただ、クイックソートには弱点もあります。

+
    +
  • 要素が少ないときは逆に遅い
    +クイックソートはグループの分割や再帰などを含むため、要素が少ないときには優位性が出ない場合があります。

  • +
  • 基準値の選び方で性能が変化する
    +クイックソートアルゴリズムではある要素を基準に配列をグループに分割するのですが、基準になる要素がちょうど平均的な値でグループが均等に分割されることが望ましいです。逆の場合には効率が下がってしまうことになります。

  • +
+

実際のソートルーチンでは、クイックソートを基本に他の手法を組み合わせてこの弱点を克服しようとしています。

+

Rubyのsortメソッドもこのクイックソートアルゴリズムを採用しています。

+
+
+
+

sortメソッド

+

すでに説明したようにソートはsortメソッドを用いて行います。ここまでに紹介したアルゴリズムのことなど何も考えないでも、Rubyが適切にソートしてくれます。この辺がRubyらしい便利さです。

+

ただ、これだけでは思うようにいかない場合があります。たとえば以下のような点を考慮に入れる必要があります。

+
+

降順

+

sortは配列要素を小さいものから大きいものへ並べますが(昇順と呼びます)、逆に大きいものから小さいものへ並べたい場合もあります。もちろん、ソート後逆順にするとか、配列の末尾からアクセスという手もありますが、直接降順にできればそれに越したことはありません。

+

比較条件

+

sortは要素同士を <=> 演算子を使って比較しますが、<=> 演算子の提供する標準の比較方法とは違う方法で並べたい場合もあります。たとえば、大文字小文字を無視して文字列を比較したいとか、一部の属性だけで比較したいとかです。

+
+

このような場合のためにsortメソッドは比較する方法を指定することができます。sortメソッドにはブロックとして比較条件式を指定できます。こんな感じです。

+
+
ary = [5,2,3,1,4]
+ary.sort{|a,b|b<=>a}  # [5,4,3,2,1]を返す
+
+
+

これはabの2要素を <=> 演算子で比較していますが、abの順序を置き換えているため、結果は降順にソートされます。降順にソートするためには、この他にも、

+
+
ary.sort.reverse      # [5,4,3,2,1]を返す
+
+

という手もあります。実際にはほとんどのケースでこちらのほうが速いかもしれません。

+

ただ単に降順にするという単純なケースはともか、比較条件を自由に指定できるということはソートの自由度を高めます。たとえば、文字列を大文字小文字を無視して比較する場合には以下のようにできます。

+
+
ary.sort{|a,b|a.upcase <=> b.upcase}
+
+

では、仮に以下のデータが1行ずつ配列に入っているとして、それを末尾の数字を基準にしてソートしたければどのようにするのがよいでしょうか。

+
+
eir      11   9   2    6    3    1     1  81%  63%    13
+oos      10   6   4    3    3    0     4  60%  70%    25
+hrh      10   6   4    5    1    2     2  60%  70%    15
+spp      10   6   4    3    3    1     3  60%  60%    14
+
+

ブロックを使って一番簡単に実現するには以下のようになります。

+
+
ary.sort{|a,b|a.split[-1].to_i <=> b.split[-1].to_i}
+
+

splitで分割し、末尾の数字を取り出し、整数化して比較しているわけです。結果はこんな感じです。

+
+
eir      11   9   2    6    3    1     1  81%  63%    13
+spp      10   6   4    3    3    1     3  60%  60%    14
+hrh      10   6   4    5    1    2     2  60%  70%    15
+oos      10   6   4    3    3    0     4  60%  70%    25
+
+

ただ、問題があります。sortのために比較が行われる回数はソートする要素数よりもずっと多くなるのです。表9.2はランダムな整数を含む配列のソートに必要な比較回数の測定結果を示しています。

+
+

表9.2●配列のソートに必要な比較回数

+ + + + + + + + + + + + + + + + + + + + + + + + + +
要素数比較回数
56
1022
100531
10009427
10000129879
+
+ +

これだけの回数ブロックを評価することは性能上の問題になる可能性があります。たとえば、上で示した

+
+
ary.sort{|a,b|a.split[-1].to_i <=> b.split[-1].to_i}
+
+

の例では同じ文字列の分割や整数化を繰り返し繰り返し行うことになります。1万要素であれば分割と整数化がそれぞれ24万回以上も行われるわけです。これは無駄以外のなにものでもありません。このようなときに有効なテクニックがシュウォーツ変換(Schwarzian transform)です。シュウォーツ変換はこのテクニックを最初に考案した(のだと思う)Perl界の著名人Randal Schwarzにちなんで名付けられました。シュウォーツ変換は、ソートを行う前にまず比較するためのキーを計算しておきます。

+

具体的にはこのようになります。

+
+
ary.map{|i|[i.split[-1].to_i,i]}.sort.map{|j|j[-1]}
+
+

順番に解説すると、

+
+
ary.map{|i|[i.split[-1].to_i,i]}
+
+

で要素を元に比較の対象となる値(i.split[-1].to_i)を計算し、要素そのものと一緒に配列に入れておきます。それを、

+
+
.sort
+
+

でソートし、

+
+
.map{|j|j[-1]}
+
+

で元の配列の要素だけ取り出し、ソート結果を得ます。比較値の計算は要素の回数分だけしか行われませんから、配列の要素数が大きいときには大きな差が出ます。

+

もっともシュウォーツ変換では余計な配列の生成を伴いますから、比較条件の計算が「軽い」処理であった場合にはかえって遅くなってしまう可能性もあります。

+
+
+

sort_by

+

上で説明したシュウォーツ変換はなかなか魅力的ですが、mapを2度も呼ぶ必要があり、面倒でもあります。Ruby 1.7ではこれを簡単に行ってくれるsort_byメソッドが提供されています。

+
+
ary.sort_by{|i|i.split[-1].to_i}
+
+

明示的にシュウォーツ変換を行った場合の

+
+
ary.map{|i|[i.split[-1].to_i,i]}.sort.map{|j|j[-1]}
+
+

に比べてずいぶん簡潔になっています。

+
+
+

「安定」なソート

+

ソートには安定(stable)なソートとそうでないソートがあります。ソートが安定であるとは、比較した結果同じであると判定された要素が複数あった場合、それらの要素が元に並んでいた順序が保存されることです。

+
+

Rubyのソートは安定ではありません。普通は同じ要素は区別がつかないはずなので、安定でないことが問題になることはあまりありませんが、たとえば大文字小文字を無視した比較を行った場合、

+
+
ary.sort_by{|i|i.upcase}
+
+

の結果の大文字小文字を区別した順序が予想できないというのはうれしくない場合もあります。

+
+
ary = %w(foo Foo fOo FOo fOO FOO bar)
+ary.sort_by{|i|i.upcase}  # 結果のfooの並びは?
+# => ["bar", "FOo", "fOo", "Foo", "fOO", "FOO", "foo"]
+
+

大文字小文字を無視して同じとみなされる文字列同士で元の順序が保存されるためには、比較するキーにインデックスを含めて比較する必要があります。

+
+
n = 0
+ary.sort_by{|x|[x.upcase,n+=1]}
+
+

余談ですが、大文字小文字を無視して文字列が等しかった場合、そろえる前の文字列を第2キーとしてソートしたい場合には以下のようにsort_byメソッドを使います。

+
+
ary = %w(foo Foo fOo FOo fOO FOO bar)
+p ary.sort_by{|x|[x.upcase,x]}
+# => ["bar", "FOO", "FOo", "Foo", "fOO", "fOo", "foo"]
+
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-018.xhtml b/docs/vol1/xhtml/p-018.xhtml new file mode 100644 index 0000000..a729bdd --- /dev/null +++ b/docs/vol1/xhtml/p-018.xhtml @@ -0,0 +1,86 @@ + + + + + +第9章 配列 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ Ruby 1.8

+
+

Ruby 1.6.0が2000年9月19日にリリースされてからはやくも1年以上が過ぎ、そろそろ次の安定版である1.8はどうだろうかという話が流れるようになってきました。CVSで開発されている1.8候補の1.7系でもなかなか積極的な開発が行われているようです。

+

個人的には2001年中に1.8をリリースするつもりですから、もしかすると皆さんがこれを読んでいるときにはすでにリリースされているかもしれません。もっともRubyの開発においてリリースが遅れるのはさほど珍しいことではないので、期待させといてまだってことも十分にありえるのですが。

+

では、実際にリリースされることになるRuby 1.8の新機能というのはいったいどのようなものになるのでしょうか?

+

今年の5月に本誌の出版社であるアスキーを会場に開催されたYet Another Ruby/Perl Conference 19101(YARPC19101)におけるプレゼンテーションで、私はRuby 1.8には以下の項目が新たに追加されると発表しました。

+
    +
  • メソッドの追加

  • +
  • 世代別GC

  • +
  • 多言語対応

  • +
+

このときの発表資料は、

+
    +
  • http://www.ruby-lang.org/ja/yarpc01/index.html

  • +
+

で読めます。

+

しかし、非常に残念なことに重要で期待されていた後者2つは1.8には取り込まれないことになりそうです。

+
+

世代別GC

+

広島市立大の木山さんが基礎部分を開発した世代別GCは当時のGC性能を非常に向上させたので、将来取り込まれることが相当期待されていた機能です。

+

RubyのGC(ゴミ集め)機能は普段は非常に優秀に働いてくれるのですが、大量のオブジェクトを保持するパターンのプログラムにおいて、もう使われなくなったゴミを集めるためのコストが実際の処理を圧迫する結果になり、十分な性能が出ないケースがありました。

+

ところが、世代別GCとは別に行ってきたGCの改善の結果、現在の世代別GCの実装に対する以下の2つの点が明らかになったのです。

+
    +
  • GC性能が向上し、世代別方式を使わなくても性能にほとんど差が出ない

  • +
  • 改善が世代別GCと相性が悪く世代別GCによる性能向上を妨げる

  • +
+
+

この結果から、現在の実装のまま世代別GCを導入することによるメリットが開発当初よりもかなり下がってしまいました。

+

しかし、将来にわたって世代別GCがダメだというわけではありません。世代別GCは最近の性能を要求される処理系では広く用いられている方式で、方式そのものの有効性には疑問の余地はありません。今回の開発の知識と経験を生かし、次世代Rubyにはぜひとも世代別GCを取り込みたいと考えています。

+
+
+

多言語対応

+

多言語対応はCVSのruby_m17nブランチとして公開されています。この実装は、

+
    +
  • ASCII

  • +
  • SJIS

  • +
  • EUS

  • +
  • UTF-8

  • +
  • Latin1 (ISO-8859-1)

  • +
+

の各種エンコーディングをそのまま取り扱えるうえ、わずかなCのコードを動的ライブラリとして追加するだけで、他のエンコーディングにも対応できるようになるという優れものです。

+

個人的にはこれこそが多言語対応のあるべき姿(の1つ)だと信じています。では、その多言語対応が1.8に取り込まれない(だろう)というのはどういうことなのでしょうか。

+

理由は大きく分けると2つあります。1つは使い勝手を含めた機能の問題です。つまり、各種エンコーディングをそのまま扱うコアになる部分は実装したものの、それをどのようにユーザーに見せれば、多言語対応、ひいては国際化までを支援できるかということについて詰めきれなかった点です。これは多くの経験ある意見の集約が必要だと思われますが、なかなか時間内にまとめきれませんでした。この点にこだわってこれ以上1.8のリリースを遅らせるのは得策ではないと考えました。

+

2つめは最初のものとも関連するのですが、互換性についてです。国際化対応は文字列を文字単位で扱うので、現在のバイト単位で扱っている文字列とは一部互換性がなくなります。明示的にバイト列であると指定することで互換性の問題を回避することは可能なのですが、今度は多言語対応に制約が出る場合があります。この部分の仕様についてももっと詰める必要があったのですが、これまた時間切れです。

+
+
+

先送り

+

しかし、1.8.0にこれらが含まれないからといって、これらを捨てたりあきらめたりするわけではありません。今後、別の機会に取り込みたいと考えています。もしかすると、それは思ったよりも早いかもしれません。1.8.2とか。

+
+
+

さらにその次

+

YARPC19101での発表にもあったように、その次も待っています。

+

1.8のリリースができたら(そして私の心に余裕ができたら)、そのときこそ心機一転、次のメジャーリリースになるインタプリタの開発に取り掛かりたいと思っています。Riteというコードネームを持つこのインタプリタは今まで9年近いRubyの開発で学んできたことを踏まえて、今までの不満や問題を(できる限り)解消したものにしたいと考えています。Riteはまだ実体のないベーパーウェアにすぎませんが、ぜひ早く取り掛かりたいものです。

+
+
+ +

次回予告(?)

+

というわけで、2002年初頭までには1.8がリリースされていることでしょうから、(うまくいけば)来月あたり1.8の新機能を紹介できればと考えています。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-019.xhtml b/docs/vol1/xhtml/p-019.xhtml new file mode 100755 index 0000000..db4f4b8 --- /dev/null +++ b/docs/vol1/xhtml/p-019.xhtml @@ -0,0 +1,552 @@ + + + + + +第10章 ハッシュ(または連想配列) + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay10 +
+

+初等Ruby講座
+ハッシュ(または連想配列) +

+
+

[Linux magazine, 2002年3月号]

+
+

前半はHashクラスについてです。Rubyでは、Perlでそう読んでいるのを継承してハッシュテーブルのクラスをHashと名付けていますが、考えてみれば「ハッシュ関数を用いて高速アクセスを可能にしたテーブル」のことを「ハッシュ」と呼ぶのは本質的な部分が脱落しているという批判があります。Lua言語のようにテーブルと呼ぶべきだったかもしれません。しかし、自然言語の名付けでは「ケータイ」「スーパー」「コンビニ」のように本質的な部分が省略されるケースも多く、そんなに悪くないのではないかとも思っています。余談ですが、私の住む地方では「スーパーマーケット」のことを「マーケット」と呼ぶ年配の方々がいらっしゃいます。一種の方言かもしれません。

+

Hashクラスの本質的な部分はこの頃から変化していませんので、記事の内容は今でも有効です。ただ、要素の順序は不定となっていた部分は、このあと1.9から挿入順とする仕様になりました。この仕様はこのあとPythonなど他の言語にも受け継がれています。

+

後半はオープンソースな生活についてです。自分の書いた記事ではありますが、どうやって生活を維持していたのか書いていない点は不満ではありますね。

+
+
+

子供の頃、四角は豆腐、豆腐は白い、などと言葉をつなげて遊びませんでしたか? これは連想遊びですが、今月はその連想とも関係があるハッシュについて学びます。

+
+
+

はじめに

+
+

作者自らがRubyを解説するというこの連載も早くも5回目になります。「Ruby入門の連載を」と依頼されたときにはいったいどうなることかと思いましたが、とりあえずここまではなんとかなっているようです(自画自賛)。しかし、正直なところ進み方が遅いなという気もします。5回かけても、Rubyの全体像から考えるとほんのさわりの部分しか解説できていません。「知られざるRuby」とか「Ruby開発日記」などにページを割いてるからなんですが、それがないと面白くないし、考えようによってはゆっくりていねいに解説する連載にも価値があるのではないでしょうか(またしても自画自賛)。

+
+
+ +

ハッシュとは

+
+

で、今日の本題のハッシュです。ハッシュは連想配列(associative array)とか辞書(dictionary)とも呼ばれ、オブジェクトとオブジェクトの関係を表現します。たとえば、日本語と英語の曜日の名前の対応は、

+
+
日曜 => Sunday
+月曜 => Monday
+火曜 => Tuesday
+水曜 => Wednesday
+木曜 => Thursday
+金曜 => Friday
+土曜 => Saturday
+
+

になります。この関係を表現するのがハッシュです。

+

上記の関係はあえていえば和英辞書のようなものです。ハッシュが「辞書」と呼ばれるのはそういう理由です。また、「日曜」から連想されるのが「Sunday」であり、そういう連想関係を並べたものであるので「連想配列」と呼ばれます。その他にもこのようなデータ構造に対しては「ハッシュテーブル」「テーブル」「マッピング」などの呼び名があります。

+

ハッシュは単方向の関連を表現します。つまり上の関係は和英ではあり、英和ではないということです。日本語から英語を引くことはできますが、逆は基本的にできません。訳語の部分を1つ1つ調べていけば別ですが、紙の辞書ではそんなことやりたくはないですよね。辞書における見出し語に当たるものを「キー」、訳語に当たる部分を「値」と呼びます。

+

ハッシュが連想配列と呼ばれるのには、わけがあります。「連想関係を並べたもの」だということはすでに述べましたが、それ以外にも、配列を整数(オフセット)から値への対応であると考えると、配列は連想配列のキーを整数に制限したものであると解釈できます。事実、AWKという言語では配列と連想配列は同じもので、たまたま整数以外をインデックスにした場合のことを連想配列と呼んでいるだけです。ですから、Rubyでもハッシュはインデックスが整数でない配列だと考えることができます。

+

Rubyでも整数をキーに取るハッシュは配列によく似た振る舞いをしますし、要素を飛び飛びにしか使わない配列であれば、かえってハッシュのほうが効率がよい場合もあります。

+

RubyのハッシュとAWKの配列の大きな違いは、AWKの配列は数値以外には文字列しか取らないのに対して(AWKには数値以外のデータ型は文字列しかありません)、Rubyでは任意のオブジェクトをキーにすることができることです。ただし、中にはキーにするのには向かないタイプのオブジェクトもあります。どのようなオブジェクトがキーに向かないかについてはあとで説明しましょう。文字列に限定されないとはいえ、文字列はやはり最もキーに向いたオブジェクトです。Rubyではキーばかりでなく値にも任意のオブジェクトが使えます。

+

あ、そうそう。もう1つ重要なことがありました。インデックスの整数の順番に要素が並ぶと決まっている配列に対して、ハッシュは順序が決まっていません。ハッシュから要素を取り出す場合には、内部実装の都合で決まる予測が難しい順序で取り出されます。

+
+

では、なぜハッシュは「ハッシュ」と呼ばれるのでしょう。それはこの対応関係を表現するデータ構造がハッシュ法というアルゴリズムを用いて実装されているからです。ハッシュ法は巧妙なアルゴリズムで、キーから値を高速に検索します。ハッシュアルゴリズムについてはあとでもう少し詳しく解説します。

+

ハッシュは配列、文字列と並んでRubyの基本的なデータ構造の1つです。もっとも、自分で自由にデータ構造を定義できるRubyにとっては、あくまでも「標準で提供される使い勝手のよいクラス」の1つにすぎないわけですが。

+
+
+

ハッシュの生成

+
+

ハッシュを生成するにはハッシュ式を用います。ハッシュ式は、「{」と「}」の間に、キーと値を「=>」でつなげたものをコンマで区切って並べます。

+
+
{"apple" => "red", "banana" => "yellow"}
+
+

また、Hash[]という形式でも生成できます。

+
+
Hash["apple", "red", "banana", "yellow"]
+
+

Hash[]の場合には => を使わず、奇数番目の要素がキーになり、偶数番目の要素が値になります。

+

要素が1つも入っていないハッシュは中身のない {} またはHash.newによって生成できます。中身のないハッシュを何に使うかというと、もちろん将来キーと値の組み合わせを登録するためにあらかじめ用意しておくのです。

+
+
+

メソッド一覧

+
+

ハッシュがどのようなことができるかを示すためにハッシュオブジェクトの持つメソッド表10.1に示します。それぞれのメソッドの具体的な機能や使い方についてはマニュアルを参照してください。

+ +
+

表10.1●ハッシュオブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
[]値の取得invert逆ハッシュ(値=>キー)
[]=値の設定key?キー存在チェック
clearハッシュを空にkeysキーの配列
collect処理結果の収集lengthエントリ数
defaultデフォルト値mapcollectと同じ
default=デフォルト値設定map!collect!と同じ
deleteエントリの削除member?include?と同じ
delete_if条件による削除rehashハッシュ再計算
detectエントリの検出reject条件による削除
each繰り返しreject!条件による削除
each_keyキーについて繰り返しreplaceハッシュ内容の置換
each_paireachの別名select条件に合う全エントリ検出
each_value値について繰り返しshift1エントリを取り出す
empty?空であるかsizeエントリ数
fetch値の取得sortソート
finddetectと同じstore値の設定
find_allselectと同じupdateハッシュの更新
include?key?と同じvalue?値存在チェック
indexes値(複数)の取得values値の配列
indicesindexesと同じ
+
+
+
+

アクセス

+
+

ハッシュは本来キーから値への対応を表現するものですから、最も基本的な操作はキーを与えて値を得ることです。

+

hをハッシュオブジェクトが格納されている変数、keyがキーであるとすると、

+
+
h[key]
+
+

とすることで、キーに対応する値を取り出すことができます。もし仮にキーに対応する値がなかった場合、普通はnilが返ります。この「存在しなかったときの値」のことをハッシュのデフォルト値と呼びます。このハッシュのデフォルト値は変更することができます。

+

キーが存在しなかったときの制御をもっと細かく行いたい人向けには、値取得用のfetchという別のメソッドがあります。fetchメソッドの一番基本的な呼び出し方は以下のようになります。

+
+
h.fetch(key)
+
+

この呼び出し方ではfetchメソッドではキーに対応する値が存在しなかった場合にはエラーになります。とはいえ、いつもエラーでは面倒なので、fetchはそういう場合の値の計算方法を指定できます。

+
+
h.fetch(key, default)
+
+

この呼び出し方をすると、キーに対応する値がなかった場合にはdefaultの値を返します。もう1つの呼び出し方は、

+
+
h.fetch(key) { expr }
+
+

です。こちらはキーに対応する値がなかった場合に {} の中の式を計算します。引数に指定すると値があってもなくてもデフォルト値を計算する必要がありますが、ブロックを指定するこちらの呼び出し方では、キーが存在しないときに初めて計算されますから、コストのかかる計算や無駄なオブジェクトの割り当てを避けることができます。

+
+
+ +

更新

+
+

ハッシュは本物の辞書と違ってもっと柔軟です。ハッシュにはいつでも自由にキーと値を登録することができます。

+

hをハッシュオブジェクトが格納されている変数、keyがキー、valが値であるとすると、

+
+
h[key] = val
+
+

とすることで、キーに対応する値を設定することができます。ですからこれ以降、

+
+
h[key]
+
+

とすればvalが得られるというわけです。h[key]fetchがあったように、h[key]=valにも対応するメソッドがあります。それはstoreです。

+
+
h.store(key, val)
+
+

fetchにはデフォルト値に関するいろいろなバリエーションがありましたが、storeにはそんなものはありません。シンプルなものです。

+

追加ができるのですから、削除もできます。

+
+
h.delete(key)
+
+

で、キーと対応する値がハッシュから取り除かれます。

+

それから、ハッシュを丸ごと更新することができます。

+
+
h.update(h2)
+
+

とすると、別のハッシュh2に含まれるキーと値の対応をハッシュに追加できます。もし、hh2に同じキーが含まれていた場合には、h2の値のほうが優先になります。一方、

+
+
h.replace(h2)
+
+

では、ハッシュの現在のデータはすべて捨ててしまって、h2に含まれるキーと値の対応でハッシュの内容が置き換えられます。

+
+
+

検査

+
+

ハッシュそのものに関する情報を得る手段も用意されています。

+
+
h.key?(key)
+
+

ではハッシュがそのキーを含むときに真を返します(Rubyでは真か偽を判定するメソッドには ? が付きます)。

+
+
h.value?(value)
+
+
+

はハッシュがその値を(1つでも)含むときに真を返します。

+
+
h.empty?
+
+

はハッシュが空っぽであるときに真を返します。それから、

+
+
h.size
+
+

はハッシュがいくつ連想対応を持っているかを返します。sizeには別名としてlengthがあります。

+
+
+

エントリの処理

+
+

ハッシュの各エントリに対して繰り返し処理を行う方法はいくつかあります。一番最初に思い付くのは全部のキーを含む配列を取り出して、それに対して繰り返すことでしょう。全部のキーを配列として取り出すメソッドはkeysです。

+

hをハッシュオブジェクトが格納されている変数だとすると、

+
+
for k in h.keys
+  ....
+end
+
+

で各キーごとに処理を行うことができます。すでに述べたようにハッシュは順序が予測できませんから、keysが返す配列の要素の順序もバラバラです。ちなみに全部の値を配列として取り出すのはvaluesメソッドです。

+

しかし、この方法には少々問題があります。というのも、keysメソッドは内部でまず配列を作り、それにハッシュのキーを1つずつ追加していく処理を行うので、ハッシュのサイズが大きくなると、キーを含む配列も大きくなり無駄なコピーが生じるので、記憶容量の点からも実行速度の点からも不利になるのです

+

Rubyには無駄な配列を作らずにハッシュの各エントリに対して繰り返すことができます。それには以下のようにします。

+
+
h.each {|k, v|
+  ...
+}
+
+

こうすると各エントリのキーと値がそれぞれkvという変数に代入されて、残りのブロックが実行されます。要素の取り出しなどの詳細はeachメソッドの中で行われますので、使う側は何も気にする必要がありません。eachメソッドでは内部的に配列を割り当てたりせず、ハッシュの内部構造から直接キーと値を取り出します。このような繰り返しを制御するメソッドをRubyでは「イテレータ」と呼びます。

+

ハッシュに対するイテレータは、eachの他にもeach_pair(単なるeachの別名。keyvalueのペアを与えるから)、each_key(キーについて繰り返す)、each_value(値について繰り返す)があります。

+

たとえば、ハッシュの各エントリを出力するには、

+
+
+
h.each {|k,v
+  printf "%s => %s\n", k, v
+}
+
+

というふうに書けます。

+
+
+

削除

+
+

ハッシュからの削除にはdeleteメソッドを使うと先ほど説明しました。これはくどくどと言い換えると「ハッシュの連想対応のうち、指定したキーと等しい」という条件に合致するものを削除することです。

+

しかし、削除したい条件がいつもこんなに簡単とは限りません。たとえば、「キーに対応する値の数値がある一定以下」という条件で削除するということだってありえます。つまり、一定の成績に満たない人を不合格とする入試の合格判定のような場合ですね

+

Rubyではこのような場合にも合致するようなメソッドが提供されています。

+
+
h.delete_if{|k,v| ...}
+
+

では各エントリに対して、kにキー、vに値が代入されてブロックが実行されて、その結果が真であれば、そのエントリが削除されます。delete_ifにはreject!という別名があります。元のハッシュをとっておきたい場合には、rejectメソッドを使います。

+
+
h.reject{|k,v| ...}
+
+

は条件に合うエントリを取り除いた新しいハッシュを返しますが、元のハッシュは変更しません。

+

先ほどの入試判定の例を実際にプログラムにすると、ハッシュmathに数学のテストの成績が入っていて、合格ラインが仮に60点だとすると、

+
+
math = {"matz" => 50, "shugo" => 80, "gotoken" => 100}
+math.delete_if{|k,v| v < 60}
+
+

というプログラムの実行すれば、ハッシュmathは、

+
+
{"gotoken" => 100, "shugo" => 80}
+
+

になり、めでたく不合格者は取り除かれることになります……って、私が不合格になってますね(泣)。

+

Ruby以外の多くのプログラミング言語では、このような処理はここまで直感的ではありません。おそらくハッシュの各エントリに対してループを回して条件に合うものを削除する以下のような処理を行うことでしょう。

+
+
for k in math.keys
+  if math[k] < 60
+    math.delete(k)
+  end
+end
+
+

もちろん、プログラムを読めばやってることは明らかなんですが、上記のdelete_ifを使ったものに比べると「やりたいこと」がイマイチ直接的に表現されていない気がしませんか?

+
+

この「やりたいことを明確に簡潔に表現できるメソッドがそろっている」という事実が、Rubyを使いやすい、あるいは気持ちがよい言語だと感じさせてくれる原因ではないかと思っています。このことは、また同時にこの連載がなかなか進まなかったり、本来は薄いはずの「デスクトップリファレンス」がこれ以上ないってくらい分厚くなってしまったりする原因でもあるのですが。

+

他にもエントリの削除に関係するメソッドがいくつかあります。

+

clearメソッドはハッシュのデータを全部捨てて空にします。shiftメソッドはハッシュからエントリを1つだけ削除し、そのキーと値を2要素の配列として返します。どのエントリが取り出されるのか予測するのは困難ですから、あまり使う局面の思い付かないメソッドなんですが、1つずつ空になるまで取り出して繰り返すというようなときにでも使うのでしょうか。

+
+
+

ハッシュの出力

+
+

Rubyはオブジェクトを適当に文字列化してから出力してくれます。これはハッシュに限らずすべてのオブジェクトが持つto_sメソッドが担当しているのですが、ハッシュのto_sメソッドはあまり人間にとってうれしい形式とはいえません。

+
+
h = {"ayaka" => 9, "ruka" => 7, "takuto" => 4}
+puts h
+
+

とした場合の出力は、

+
+
ayaka9ruka7takuto4
+
+

です。とても読みやすいとはいえません。人間向けの文字列化を行ってくれるのはinspectメソッドです。inspectメソッドは、人間が読んでそのデータの意味がわかりやすいような表現の文字列を返します。

+

inspectメソッドを使って出力してくれるのがpメソッドです。これはinspectの出力をそのままputsと同様に出力するので、デバッグ時などに値を確認するのに役立ちます。

+
+
h = {"ayaka" => 9, "ruka" => 7, "takuto" => 4}
+p h
+
+

の出力は、

+
+
{"ayaka"=>9, "ruka"=>7, "takuto"=>4}
+
+

です。ほら、こっちのほうがずっと人間向きでしょう? pメソッドは今までこの連載で使ってきたputsとほぼ同じように、あらゆるオブジェクトに対して使えます。便利なので覚えておくとよいでしょう。

+
+
+

ハッシュの反転

+
+

ハッシュはキーから値への対応を表現するものです。では、値からキーを見つけるのはどうしたらよいでしょう。これにはいくつかの方法があります。

+
+

まず最初に考えられるのはループを使う方法です。ハッシュをh、対応するキーを探す値をvalueとすると、

+
+
key = nil  # あらかじめローカル変数を用意
+h.each {|k,v|
+  if v == value
+    key = k
+  end
+}
+
+

とすると、変数keyに対応するキーが代入されます。

+

しかし、直接ループを使うのはちょっと格好悪い気がします。Rubyではこういう単純なループを必要とする場合には、たいてい何か別の方法があるものです。この場合にも確かにあります。それはdetectを使う方法です。

+
+
key, = h.detect{|k,v| v == value}
+
+

detectはキーと値のペアを返すので、多重代入でキーだけを変数keyに取り出しています。多重代入の部分が多少トリッキーですが、ループを使うよりも簡潔ではないでしょうか。

+

これらは1回だけ値からキーを取り出すことを考えた方法ですが、逆の検索がたびたび発生するようならば、値からキーを得る逆方向のハッシュ、いわば逆ハッシュを作ったほうが効率がよい場合もありえます。そういう場合に逆ハッシュを求めるinvertメソッドがあります。

+
+
h2 = h.invert
+h2[value]  # valueに対応するキーが得られる
+
+

これが一番簡潔な気がします。

+

さて、値からキーを求める場合には、上記のいずれの方法を用いる場合にも、気を付けなければならないことがあります。それは「値に対応するキーは1つとは限らない」という点です。たとえば、名前からテストの点への対応を表現するハッシュでは、値(たとえば「100点」)から、名前を得ようとしても、100点を取った人が一人ではないために、対応する名前は1つではないかもしれません。

+

上記の方法ではいずれも一番最初に見つかったキーを返します。そしてハッシュでのエントリの登場順は予想困難ですから、1つの値が複数のキーに対応するケースでは、あまり使いものにならないでしょう。

+

そういう場合の対応方法もまたいくつもあるのですが、ここでは1つだけ紹介しておきましょう。上記のdetectメソッドの仲間(先月紹介した「-ect兄弟の1つ」)であるselectを使う方法です。

+
+
values = h.select{|k,v| v == value}
+
+

これで、変数valuesには条件を満たすペアの配列が代入されます。つまり、

+
+
math = {"matz" => 0, "shugo" => 100, "gotoken" => 100}
+values = math.select{|k,v| v == 100}
+
+

とすればvaluesには、

+
+
[["gotoken", 100], ["shugo", 100]]
+
+

が代入されるというわけです。あとは必要な部分を切り出すだけですね。

+
+

たとえば名前だけを取り出すには以下のようにします。

+
+
values.collect{|v| v[0]}
+
+
+
+

ハッシュのソート

+
+

さっきからしつこいくらい繰り返していますが、ハッシュのエントリが登場する順序は不定(というか、予想困難)です。しかし、現実にはある特定の順序で処理したい場合はたびたびあるわけです。そういう場合に用いられるテクニックは、キーの配列を取り出してソートしてから処理することです。

+
+
for i in h.keys.sort
+  # ソートされた順序でキーの処理
+end
+
+

もちろん、このテクニックにはハッシュが巨大になったときに非効率であるという欠点があるのですが、順に処理することが必須である場合には避けられません(前号で説明したsort!を使うことでちょっとだけ効率が上げられます)。

+

ハッシュオブジェクトにはsortメソッドがありますが、これは、

+
    +
  • まずハッシュを[[key, value],[key,value]..]という配列に変換し

  • +
  • それからその配列をソートしてその結果を返す

  • +
+

というものですから、実用性は低いかもしれません。

+
+
+

ハッシュのデフォルト値

+
+

ハッシュにはデフォルト値があると説明しました。このデフォルト値の使い方を説明しておきましょう。

+

デフォルト値の設定されたハッシュを作るためにはHash.newを使います。Hash.newに引数を指定するとその値がデフォルト値になるのです。

+
+
h = Hash.new(0)
+h["foo"]        # 0が返る
+
+

または、default属性でもデフォルト値を設定できます。

+
+
h = {"matz" => 50, "shugo" => 80, "gotoken" => 100}
+h.default = 0   # 存在しない場合は0
+h["yukihiro"]   # => 0
+
+

ただ、ハッシュのデフォルト値には落とし穴があります。それはデフォルト値のオブジェクトはコピーされないというものです。たとえば以下のプログラムを見てみましょう。

+
+
h = Hash.new([])
+h["foo"] = ["foo"]
+names = ["foo", "bar", "baz"]
+for name in names
+  ary = h[name]  # 配列を得る
+  ary.push name  # 名前を追加
+end
+
+for name in names
+  p h[name]      # 配列を出力
+end
+
+
+

この結果は

+
+
["foo", "foo"]
+["bar", "baz"]
+["bar", "baz"]
+
+

になります。"bar""baz"が混ざってしまっています。つまり、pushでデフォルト配列そのものを変更してしまったため、予想外の結果になったというわけです。

+

これを避けるためにはfetchを使うのがよいでしょう。

+
+
h = Hash.new            # デフォルト値なし
+h["foo"] = ["foo"]
+names = ["foo", "bar", "baz"]
+for name in names
+  ary = h.fetch(name){  # 配列を得る
+    h[name] = []        # 配列を設定しておく
+  }
+  ary.push name         # 名前を追加
+end
+
+for name in names
+  p h[name]             # 配列を出力
+end
+
+

こちらの結果は期待どおり、

+
+
["foo", "foo"]
+["bar"]
+["baz"]
+
+

になります。

+
+
+ +

データ出現回数の計算

+
+

たとえば配列があって、その要素それぞれの出現回数が知りたいとすると、以下のような方法が使えます。要素の出現回数を数える配列をaryだとすると、

+
+
h = Hash.new(0)
+for item in ary
+  h[item] += 1
+end
+
+

これでハッシュhには要素からその登場回数への対応が設定されます。

+

Rubyの配布パッケージに含まれるサンプルプログラムのうちoccur.rbは、ほぼ同じ処理を行っています。

+
+
+

環境変数

+
+

Linuxを含むUNIXには環境変数というものがあって(いや、Windowsにもあるんですけど)、RubyからはENVという定数に格納されたハッシュとしてアクセスできます。

+
+
ENV["USER"]   # ユーザー名(たとえば"matz")
+ENV["PATH"]   # コマンドパス
+
+ENV.each{|k,v|
+  print k, "=", v, "\n"
+}
+
+

厳密にはENVはハッシュオブジェクトではなくて、ハッシュそっくりに振る舞うように用意されたオブジェクトなのですが(なんとENVのクラスはObjectです)、ほんのわずか違いがあって、ENVではキーも値も文字列のみという制限があります。

+
+
+

まとめ

+
+

実は、今月の記事を書くためにちょっと調べてみたのですが、ハッシュについての解説は意外と少ないようです。どの本もせいぜい2, 3ページくらいしか割いていません。もしかすると、今回の解説は貴重かもしれません。この解説が皆さんがよりハッシュを理解する一助になれば幸いです。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-020.xhtml b/docs/vol1/xhtml/p-020.xhtml new file mode 100644 index 0000000..f19387c --- /dev/null +++ b/docs/vol1/xhtml/p-020.xhtml @@ -0,0 +1,103 @@ + + + + + +第10章 ハッシュ(または連想配列) + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ ハッシュアルゴリズム

+
+

ハッシュのような対応関係の検索を一番簡単に行うことができるのは線形検索です。配列には線形検索を行うメソッドassocがあります。assocは、

+
+
[["matz", 50],["shugo",80],["gotoken",100]]
+
+

というような配列から対応関係を検索します。

+
+
ary.assoc("matz")  # => ["matz",50]
+
+

しかし、線形検索ではエントリ数が増えたときに最大でそのエントリ数に等しい回数だけ比較を行う必要があります。これはあまりにも非効率です。このような処理はエントリ数nに比例するのでO(n)と呼ばれます。配列がソートされていれば、二分検索を用いることができますから、O(log n) になりますが、連想検索のようなケースではソートされていることは期待できません。

+

そこでハッシュも用いていて、名前の由来にまでなっているハッシュ法が登場します。ハッシュ法は実にO(1)、つまり要素数が増えても原理的には効率が変化しないアルゴリズムです。

+

ハッシュ法では、まず格納するキーに対してハッシュ値という整数を計算します。ハッシュ値はオブジェクトの状態に応じた整数で、等しいオブジェクトに対してハッシュ値を計算するとは同じ値にならなければなりません。また、なるたけバラツキがあるのが望ましいといわれています。

+

そして、登録用のテーブル(配列)にハッシュ値をインデックスとしてアクセスします(図10.1)。

+
+ +
+ fig1001 +
+

図10.1●ハッシュ法

+
+ +

仮に文字列に対してハッシュ値を計算する関数がhashだったとします。そのうえで、文字列 "matz" をキーとする値を取り出すには、まずハッシュ値を計算します。この例ではhash("matz")1です。そこでテーブルのインデックス1の位置を見ると値は50であるとわかります。

+

存在しないキーに対しては、ハッシュ値インデックスの位置を検査することで、存在しないということがわかります。図10.1の例では "keiju" のハッシュ値4に対する値は存在しませんから、登録されたキーではないと判定できます。

+

ハッシュ値の計算も配列のインデックスによるアクセスも要素数には関係ありませんから、ハッシュ法では原理的にはO(1) が達成できるというわけです。

+

ただし、これは相当単純化された説明です。現実の実装はそう簡単ではありません。

+

ハッシュ法では同じオブジェクトは同じハッシュ値を持つことが保証される必要がありますが、違うオブジェクトが同じハッシュ値を持ってはいけないわけではありません。ですから、ときには異なるオブジェクトに対して同じハッシュ値が得られ、インデックスが衝突する可能性があります。ハッシュテーブルの実装では衝突した場合の処理についてそれぞれに工夫をしています。Rubyのハッシュテーブルはチェーン法と呼ばれる手法を使って実装されています。

+

ハッシュ法についての詳細はアルゴリズムについて解説した書籍を参考にしてください。書名に「アルゴリズム」とあればハッシュ法が載っていないことはないでしょう。それほど有名なアルゴリズムです。Rubyではハッシュ法は組み込みライブラリとして提供されているので、実際にこのアルゴリズムを自分で作ることはまずないでしょうが、知っておいて損はないと思います。

+
+

eql?とhash

+

Rubyではハッシュの値の計算はhashメソッド、キーとして等しいかどうかの判定はeql? メソッドで行われます。

+
+
"foo".hash         # => 876516207
+"bar".hash         # => 841490416
+
+"foo".eql?("foo")  # => true
+"foo".eql?("bar")  # => false
+
+

ですから、自分で定義したオブジェクトをハッシュのキーとして適切に振る舞わせたいと思えば、この2つのメソッドを定義すればよいわけです。再定義しなければまったく同じオブジェクトだけが等しいとみなされます。

+
+
class Point
+  def initialize(x,y)
+    @x = x
+    @y = y
+  end
+  def x; @x; end
+  def y; @y; end
+end
+
+h={}               # hはハッシュ
+p1 = Point.new(1,1)
+h[p1] = 5
+p2 = Point.new(1,1)
+p h[p2]  # => nil
+         # 構造や内容は同じでも
+         # 等しいとはみなされない
+
+# eql?とhashの定義を追加する
+class Point
+  def eql?(other)
+    @x == other.x and @y == other.y
+  end
+  def hash
+    @x ^ @y
+  end
+end
+
+h[p1] = 5
+p h[p2]  # => 5
+         # 等しくみなされるように
+
+ +

キーのハッシュ値は格納するときに計算されます。しかし、配列やハッシュなどは要素が変化すればそのハッシュ値も変化してしまいます。そうなれば、ハッシュ法が正常に動作しませんから、ハッシュ値が変化してしまったオブジェクトはハッシュから取り出せなくなります。

+

そうなった場合にはrehashメソッドで全キーのハッシュ値を再計算するとまた取り出せるようになります。

+

文字列もハッシュ値が内容によって変化するのですが、文字列はハッシュのキーとしてたびたび用いられるので特別扱いされています。ハッシュは文字列がキーとして与えられると、その文字列を内部的にコピーし、更新不可に設定してからキーとして登録します。ですから、キーとなっている文字列をkeysメソッドなどで取り出して、それを変更しようとするとエラーになります。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-021.xhtml b/docs/vol1/xhtml/p-021.xhtml new file mode 100644 index 0000000..9299d42 --- /dev/null +++ b/docs/vol1/xhtml/p-021.xhtml @@ -0,0 +1,70 @@ + + + + + +第10章 ハッシュ(または連想配列) + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ オープンソースな生活

+
+

もう9年近くRubyなんてものを開発してると、喧伝するするつもりはなくても、あちこちで「Rubyの開発者」として認識されるようになってきます。ま、たいていは肯定的な評価のようなので、そんなに悪い気分ではないのですが、ときどき困るのが「なんで無料で配っちゃうんですか」という質問です。

+

コンピュータなるものがだんだん世の中に広まってきて、昔のようにやっているだけで変人扱いということはなくなりましたが、今度は「せっかく開発したソフトウェアを無料で配っている変人」とみなされるようになってしまったようです。結局は変人なのね。

+

まあ、好きなことだけやってるんですから、マイノリティ扱いはある程度しょうがないにしても、やはり理解していただく努力は必要ではないだろうか、と感じるようになりました。

+

ということで、今月はRubyの開発者まつもとのオープンソースな生活をちょっとだけ公開しましょう。

+
+

出会い

+

そもそもソフトウェアビジネスのようなものが成熟していない昔は、ソフトウェアというのは、あまりお金のかかるものではありませんでしたし、ソースコードを開示することも珍しくありませんでした。ハードウェアのおまけだからという認識だったのかもしれませんが、少なくとも自由でした。私と近い世代の人は雑誌に掲載されたプログラムリストを打ち込んだり、読んで勉強したりした記憶があるのではないでしょうか。そういう原体験にある私にとっては「オープンソース」はその単語が生まれるはるか前から当然だったというわけです。

+
+
+

恩義

+

大学に入ってから、私はたくさんのソースコードを読んでプログラムやアルゴリズムについて学びました。そのほぼすべてはフリーソフトウェア(オープンソースソフトウェア)で、私のソフトウェア技術(というものがもしあるとして)は、それらから学んだものによってのみ構成されていると断言しても過言ではありません。

+

つまり、フリーソフトウェアなかりせばプログラマーとしての今の私は存在しなかったわけです。これは恩義を感じないわけにはいかないでしょう。

+
+
+

自由

+

私は自分の使うツールは苦労してでも手になじむものを選ぶタイプです。また、それがソフトウェアであれば自作することもいといません。本当はソフトウェアでなくても自作したいんですが、天性の不器用がそれを許さないという悲しい現実があります。

+

ですから、自分が日常的に使うツールが使いにくければ、徹底的にカスタマイズします。カスタマイズの範囲内で解決しなければ、そのソースコードを修正してでも直そうとします。実際にそうやって手を入れたソフトウェアは数知れずあります。私の最初のフリーソフトウェアであるcmailもそうやってできたものです。

+
+

これは自分の快適さを追求する自由です。この自由には多くの場合ソースコードが必要です。

+

また、ソースコードはアルゴリズムを始めとするプログラミングのあらゆる知識の源です。この学ぶ自由のためにもソースコードが必要です。

+

つまり、ソースコードが入手できるということは、ただお金がかからないということ以上に自由のために必須であるということです。

+
+
+

否定?

+

とはいえ、ソフトハウス、つまりソフトウェアを売って商売する会社に勤めていた以上、ビジネスとしてのソフトウェアについても全否定するものではありません。その辺がFSFのStallmanとはちょっと違う点ですね。

+

ただ、ソフトウェアは人に奉仕するものであり、人の自由を制約することはソフトウェアの存在目的に反すると感じている点では同じかもしれません。

+
+
+

動機

+

では、自分の開発したソフトウェアをなぜフリーソフトウェア(オープンソースソフトウェア)として公開したのかというと、実は理由はそんなに深いものではないのです。

+

まず、第一に自分の開発したものがそれほどたいしたものだとは思えなかったという点です。つまり、「これをベースにビジネスを」とかいうような野望を持つタイプのソフトウェアではなかったということです。もっともソフトウェアのタイプというよりも、私自身がそういう野望を持つタイプではないということのほうが大きいかもしれませんが。

+

次に、フリーソフトウェアからこれだけの恩義を受けている以上、自分の開発したソフトウェアも公開して「お返し」をするのが当たり前に感じたという点です。

+

最後に、自分が自由がほしいのであれば、他人にもそれを許すべきだと感じたことです。それは結局はまわりまわって自分のためでもあるのですから。

+

そして、これは理由ではないのですが、cmailにしても、Rubyにしても、もし仮にフリーソフトウェアにしなかったとしたら、今ごろは誰にも使われずに消え去ってしまっていたことでしょう。

+

どちらも公開したての最初のバージョンは決して最高のツールではありませんでした。しかし、コミュニティのみんなが協力してよいものにしていったことにより発展してきたのです。

+
+
+

環境

+

という私のプログラミング環境ですが、OSはLinux、エディタはEmacs、コンパイラはgcc、インタプリタはRuby、ブラウザはmozilla(w3mも)とフリーソフトウェアのみで固めています。

+

最近Palmを使うようになったのですが、そちらではソースを公開したソフトウェアがほとんどないので閉口しています。フリーソフトウェアといえば無料ソフトウェアのことですし。うーむ。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-022.xhtml b/docs/vol1/xhtml/p-022.xhtml new file mode 100755 index 0000000..95fe5b7 --- /dev/null +++ b/docs/vol1/xhtml/p-022.xhtml @@ -0,0 +1,717 @@ + + + + + +第11章 文字列の操作 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay11 +
+

+初等Ruby講座
+文字列の操作 +

+
+

[Linux magazine, 2002年4月号]

+
+

前半はRubyの基本的データ構造の1つ、文字列についての解説です。また、あまり使われないpack/unpack機能についても解説しています。この辺も大きな変化はないですね。メソッドは増えていますが。

+

後半は国際感覚についてです。20年前には、海外で働く日本人といえば大企業の駐在員とかのイメージで、ソフトウェアエンジニアが海外のカンファレンスに出席したり、あるいは海外企業に就職するなどめったにないことだったように思います。それを思うとこの20年の間に(ソフトウェア業界にいる)日本人の国際感覚はずいぶん変化したように思います。私の知人にも海外企業で働く人たちがいっぱいいますし、中にはRubyのおかげで海外進出した人さえ数多くいます。時代は変わりましたが、良い方向の変化だと思います。

+
+
+

Rubyは「スクリプト言語」と呼ばれることが多いのですが、その理由の1つは今月解説する文字列処理機能が充実していることにあります。今月は文字列クラスStringの機能を学んで、文字列処理の基本を押さえましょう。

+
+
+

はじめに

+
+

文字列とは読んで字のごとく「文字の列」です。プログラミングにおいて文字列は頻繁に登場します。ファイルから読み込んできたデータも、CGIの入出力、データベースのやりとりなど、Rubyにやらせたいほとんどあらゆる処理は文字列を経由します。

+
+
+ +

文字列の生成

+
+

文字列を作る方法はいくつもありますが、一番基本的な方法はプログラムに直接書き込む方法です。プログラム中での文字列表現のことを「リテラル」と呼びます。文字列リテラルには以下の4つの形式があります。

+
    +
  • ""(ダブルクォート)

  • +
  • ''(シングルクォート)

  • +
  • %形式

  • +
  • ヒアドキュメント

  • +
+

それからフォーマットした文字列を得るためにはsprintfメソッドを使います。

+
    +
  • sprintf

  • +
+

ここからは、それぞれの方法について少し詳しく説明しようと思います。

+
+
+

ダブルクォート

+
+

一番基本的な文字列表現は""(ダブルクォート)で囲むことです。たとえば以下は「まつもと」という内容の文字列です。

+
+
"まつもと"
+
+

ダブルクォートで囲んだ文字列の中では、表11.1のような \(バックスラッシュ、フォントによっては円マーク)による特殊表現が使えます。これを「バックスラッシュ表現」と呼びます。

+ +
+

表11.1●バックスラッシュ表現

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表記説明
\tタブ(0x09
\n改行(0x0a
\rキャリッジリターン(0x0d
\f改ページ(0x0c
\bバックスペース(0x80
\aベル(0x07
\eエスケープ(0x1b
\s空白
\nnn8進数表記(nは0-7)
\xnn16進数表記(nは0-9, a-f)
\cx, \C-xコントロール文字(xはASCII文字)
\M-xメタxc | 0x80
\M-\C-xメタ コントロールx
\<ch><ch>が上記の文字でないとき,文字<ch>そのもの
+
+

バックスラッシュ表現は、ダブルクォート文字列中以外にも、正規表現など他のところでも使えます。

+

ダブルクォートで囲んだ文字列の中では、それ以外に式展開というものが使えます。式展開は、文字列中にRubyの式を埋め込むことができるものです。

+
+
a = 124
+b = 2
+"a+b = #{a}+#{b} = #{a+b}"  # a+b = 124+2 = 126
+
+

#{}」の部分は式の結果を文字列に変換して置き換えられます。

+

ダブルクォートに限らず、文字列リテラルは登場するたびに新しいオブジェクトが作られます。ということは、文字列リテラルのオブジェクトの内容を変更しても、次の実行のときに文字列が変わってしまうことはありません。たとえば、

+
+
2.times do
+  a = "foo"
+  puts a
+  a[0] = "b"      # "boo" になる
+  puts a
+end
+
+

の実行結果は、

+
+
foo
+boo
+foo
+boo
+
+

です。

+
+
+

シングルクォート

+
+

もう1つの文字列リテラルはシングルクォートで囲んだものです。

+
+
'まつもと'
+
+

シングルクォートで囲んだ文字列の中では、ダブルクォート文字列のような式展開は行われません。バックスラッシュ表現もシングルクォートの中で使えるものは、\'(シングルクォートをエスケープ)と \\(バックスラッシュをエスケープ)だけです。

+
+
+ +

%形式

+
+

文字列の中に「"」や「'」がたくさん登場する場合には、バックスラッシュによるエスケープが増えて読みにくくなります。

+
+
"He said \"I'm fine\". And I said \"me too\"."
+
+

そんなときに便利なのが「%形式」です。%形式は%で始まる文字列表現で、次の文字で種別が、続く文字で区切り文字が決まります。%Qで始まるものはダブルクォート相当、%qで始まるものはシングルクォート相当の扱いになります。区切り文字はもう一度同じ文字が登場するまでが文字列の範囲になりますが、「(」「[」「{」「<」だけは相当する閉じかっこ(それぞれ「)」「]」「}」「>」)が終わりの区切り文字になります。

+
+
%Q(He said "I'm fine". And I said "me too".)
+
+

%形式は文字列「Q」「q」の他にも、正規表現「r」や文字列の配列「w」、それからコマンド入力「x」などにも使われます。

+
+
+

ヒアドキュメント

+
+

最後の文字列リテラルがヒアドキュメントです。ヒアドキュメントはシェル由来の記法で、プログラムの中に複数行にわたるテキストを埋め込む方法です。

+

ヒアドキュメントは「<< 識別子」または「<< 文字列」という形式で、その次の行から識別子、または文字列の内容に正確に一致する行までの内容がその内容になります。「<<」の直後には空白を置けません。

+

文字列によって引用終了を指定した場合にはその文字列の種別がヒアドキュメントの種別になります。ですから、たとえば終了記号が「""」でくくってある場合には、ヒアドキュメント中でバックスラッシュ記法および式展開が使えます。文字列の代わりに識別子を指定した場合は,その識別子を「""」でくくった場合と同じになります。

+
+
print <<FOO            # ヒアドキュメント
+this is a test
+FOO
+
+print <<"FOO"          # 上とまったく同じ
+this is a test
+FOO
+
+print <<"FOO"          # 式展開も行われます
+this is the test
+print #{10+5}
+FOO
+
+print <<'FOO'          # こちらでは式展開は行われません
+this is the test
+print #{10+5}
+FOO
+
+print <<`BAR`          # コマンド入力
+ls -l
+BAR
+
+print <<"FOO", <<"BAR" # 連ねられます
+I said foo.
+FOO
+I said bar.
+BAR
+
+
+

<<」の直後に「-」を置くことで、引用終了マークをインデントすることができます。これによってプログラム中にヒアドキュメントをより自然な形で置くことができます。

+
+
if need_define_foo
+  eval <<-EOS          # 区切り文字列をインデントできます
+    def foo
+      print "foo\n"
+    end
+  EOS
+end
+
+
+
+

sprintf

+
+

「文字列の生成」として結構便利なのがC由来のsprintfメソッドです。sprintfは数値を文字列化したり、表示幅を指定して文字列を整形したりするのに便利です。

+
+
printf("%dは8進で%oです\n", 16, 16)
+
+

を実行すれば、

+
+
"16は8進で20です\n"
+
+

という出力を得ます。%dが10進整数、%oが8進整数を意味します。sprintfのフォーマット指定は詳細はほぼCのprintfの指定と同じですが、以下の違いがあります。

+
    +
  • %*s」のような表示幅を引数で指定する方法が提供されない

  • +
  • %b」という2進表示の指定が追加されている

  • +
+

Rubyではsprintf%という文字列のメソッドにもなっていますので、上記の例は以下のように書くこともできます。

+
+
+
"%dは8進で%oです\n" % [16, 16]
+
+

どっちがわかりやすいかというと微妙ですが。

+
+
+

メソッド一覧

+
+

文字列がどのようなことができるかを示すために文字列オブジェクトの持つメソッド表11.2に示します。それぞれのメソッドの具体的な機能や使い方についてはマニュアルを参照してください。

+ +
+

表11.2●文字列オブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
%sprintfnext「次」の文字列
*文字列の繰り返しnext!「次」の文字列
+文字列の結合oct8進整数化
<<文字列の追加replace文字列内容の置換
=マッチreverse逆順化
[]文字列一部の取得reverse!逆順化
[]=文字列一部の更新rindex後からのindex
capitalize先頭文字の大文字化rjust右揃え
capitalize!先頭文字の大文字化scan繰り返しマッチ
center中央揃えsizelengthと同じ
chomp末尾改行削除slice部分文字列切り出し
chomp!末尾改行削除slice!部分文字列切り出し
chop末尾文字削除split文字列分割
chop!末尾文字削除squeeze文字列圧縮
concat文字結合squeeze!文字列圧縮
count文字数カウントstrip両端の空白文字削除
crypt暗号化strip!両端の空白文字削除
delete文字削除sub文字列置換
delete!文字削除sub!文字列置換
downcase小文字化succnext
downcase!小文字化succ!next!
dump非表示文字のエスケープsumチェックサム
each各行繰り返しswapcase大文字小文字の交換
each_byteバイト単位繰り返しswapcase!大文字小文字の交換
each_lineeachと同じto_f浮動小数点数化
empty?空文字列かto_i整数化
hex16進整数化tr文字置換
include?文字列包含チェックtr!文字置換
index部分文字列検索tr_s文字置換と圧縮
internシンボル化tr_s!文字置換と圧縮
gsub文字列置換unpackバイナリ展開
gsub!文字列置換upcase大文字化
length長さupcase!大文字化
ljust左揃えupto「次」の文字列の繰り返し
+
+
+
+

部分文字列

+
+

文字列の一部を切り出すには[]メソッドを使います。[]メソッドには、配列と似た以下の4パターンの呼び出し方があります。文字列sから一部を切り出すには次のようにします。

+
    +
  • s[n]     n番目の文字(バイト)
  • +
  • s[n,len] nバイト目からlenバイトの文字列
  • +
  • s[n..m]  nバイト目からmバイト目まで(末尾含む)
  • +
  • s[n...m] nバイト目からmバイト目まで(末尾含まない)
  • +
+

位置を表すインデックス(上の例ではnm)はCなどと同様に先頭が0バイト目になります。また、インデックスが負の数であった場合には、文字列の後ろから数えます(末尾が−1になる)。

+

s[n]」は文字コードを表す整数を返し、それ以外は文字列を返すことに注意してください。同じように[]= メソッドでその一部を変更することができます。

+
+
s = "foobarbaz"
+s[0]               # => fの文字コード(102)
+s[0,3]             # => "foo"
+s[4,2] = "oo"      # "fooboobaz"になる
+s[-3..-1] = "hoo"  # "fooboohoo"になる
+
+

部分文字列の取り出しには、その他にsliceメソッドがあります。sliceメソッドは[]と同じような引数を取り、部分文字列を返します。slice!メソッドは元の文字列から指定された部分を取り除き、取り除かれた文字列を返します。

+
+
s = "foobarbaz"
+s.slice(0,3)       # => "foo"
+s.slice!(3,3)      # => "bar"
+                   # 文字列は"foobaz"になる
+
+

Rubyの文字列は、文字列とはいいながらその実体はバイト列であることに注意してください。つまり、上記のメソッドなどで「n文字目からm文字目」というふうに指定したつもりでも、実際には「nバイト目からmバイト目」までと解釈されます。また、漢字のようなマルチバイト文字列の途中でも遠慮なく切り取ってくれます。日本語を扱う場合には注意してください。

+
+

将来のRubyではこの部分が文字単位に変更される予定ですが、とりあえず現状では「Stringクラスの処理はバイト単位」と覚えておいてください。現状のRubyで文字単位の処理を行うためには、次回で説明する予定の「正規表現」を使います。

+
+
+

文字列の長さを得る

+
+

文字列の長さを知るメソッドはlengthメソッドです。この長さは文字列のバイト単位の長さで文字列に何文字含まれているかではありません。lengthメソッドにはsizeという別名があります。また、文字列が空文字列(長さがゼロ)であることを判定するためには、

+
+
s.length == 0
+
+

とする代わりに、

+
+
s.empty?
+
+

と書くこともできます。

+
+
+

文字列を逆順にする

+
+

文字列を逆順にするメソッドも用意されています。それはreverseメソッドです。reverseメソッドは逆順にされた文字列を返します。また、reverse!は元の文字列を逆順に書き換えます。

+
+
s = "reverse"
+s.reverse  # => "esrever"
+s          # "reverse"のまま
+s.reverse! # => "esrever"
+s          # "esrever"に変わっている
+
+
+
+

文字単位に処理する

+
+

上で紹介したlengthメソッドもreverseメソッドもバイト単位で処理を行いますから、日本語テキストの処理には向きません。実際のところ、ほとんどの場合、日本語テキストの処理はバイト単位で間に合うのですが、なかにはどうしても文字単位での処理が必要な場合もあります。そのような場合のために、以下のテクニックを覚えておいてください。

+

splitメソッドに空の正規表現(//)を渡すと文字列を文字単位に分割してくれます。

+
+
s = "まつもと"
+s.split(//)      # => ["ま","つ","も","と"]
+
+

これで文字単位の処理ができます。分割された文字の配列を文字列に戻すには配列のjoinメソッドを使います。

+
+
s = "まつもと"
+s2 = s.split(//)
+
+s2[1]            # => "つ" (1番の文字)
+s2.length        # => 4 (文字単位)
+s2.reverse.join  # => "ともつま"
+
+
+

ね、仕掛けがわかってしまえば簡単でしょう? もちろん毎回文字列を配列に分割して、また元に戻すのはコストがかかる処理ですが、あまり頻繁に使わなければ問題になることはないでしょう。

+
+
+

文字列を分割する

+
+

文字単位の処理に登場したsplitのもともとの目的は文字列を分割することです。splitは特定のパターンに合致する部分で文字列を分割します。たとえば、テストの成績データが、

+
+
matz:国語:100
+matz:数学:40
+junko:国語:80
+junko:英語:100
+
+

のように記録されているとします。この場合の区切り文字は「:」ですね。

+

この最初の行をsplitしてみましょう。

+
+
s = "matz:国語:100"
+s.split(":")
+
+

そうすると、この文字列は、

+
+
["matz","国語","100"]
+
+

という配列に分割されます。

+

一方、固定幅で分割する場合にはunpackメソッドを使います。

+
+
s = "国語100"
+s.unpack("a4a3")  #=> ["国語", "100"]
+
+

unpackメソッドは他にもいろいろ使えるメソッドなのですが、詳しくはあとで説明します。

+
+
+

整数化

+
+

Rubyはデータの種別に厳格な側面がありますから、文字列と整数は区別されます。

+
+
1 + 1    # => 2
+1 + "2"  # error!
+
+

文字列から整数に変換したい場合に使われるのが、以下のメソッドです。

+
+
    +
  • s.to_i     10進整数化
  • +
  • s.hex      16進整数化
  • +
  • s.oct      8進整数化
  • +
  • Integer(s) 整数化
  • +
+

注意すべき点は以下のとおりです。

+
    +
  • to_i, hex, octは数値として解釈できない文字列に対してゼロを返す

  • +
  • oct"0x", "0b" などのプレフックスがあるとそれぞれ文字列を16進、2進とみなして変換する(Perl由来)

  • +
  • Ruby 1.7 ではto_iに何進数で変換するか引数で指定できる(省略値は当然10進)。現時点では指定できるのは2, 8, 10, 16だけ

  • +
  • 関数形式のInteger()は数値として解釈できない文字列はエラーになる

  • +
  • Integer"0x", "0", "0b" などのプレフックスがあるとそれぞれ文字列を16進、8進、2進とみなして変換する

  • +
+

浮動小数点数に変換するときには以下のメソッドを使います。

+
    +
  • s.to_f   浮動小数点数化
  • +
  • Float(s) 浮動小数点数化
  • +
+

Integer()同様、Float()も数値として解釈できない文字列はエラーになります。

+
+
+

大文字小文字の変換

+
+

英語を扱う場合には大文字と小文字の変換が発生する場合があります。そのときに使うのは以下のメソッドです。

+
+
s = "FooBarBaz"
+s.capitalize    # => "Foobarbaz"
+s.downcase      # => "foobarbaz"
+s.swapcase      # => "fOObARbAZ"
+s.upcase        # => "FOOBARBAZ"
+
+

これらのメソッドにはそれぞれ「!」の付いたバージョンがあります。その違いは、

+
    +
  • 元の文字列を書き換える

  • +
  • 書き換えが起きなかった場合にnilを返す

  • +
+

の2点です。

+
+
s = "foo"
+s.downcase!     # => nil (変化がなかったので)
+
+
+
+ +

比較する

+
+

2つの文字列が同じかどうか判定するためには、ごく普通に「==」で比較します。

+

また、文字列は大小比較も行うことができます。

+
+
s1 = "abc"
+s2 = "def"
+s1 > s2     # => false
+s1 >= s2    # => false
+s1 < s2     # => true
+s1 <= s2    # => true
+s1 <=> s2   # => -1
+
+

<=>」演算子は左辺が小さいとき負の整数、等しいときゼロ、大きいとき正の整数を返します。

+

文字列の大小判定は文字コード順に行われます。文字コードはアルファベットはABC順に、ひらがなやカタカナはあいうえお順になっていますから、辞書の順番に近い判定ができます。

+

ただし、以下の点に気を付けてください。

+
    +
  • アルファベットは大文字のABCに続いて小文字のabcがくる。すなわち、「Z」のほうが「a」よりも小さい

  • +
  • 仮名ではひらがなに続いてカタカナがくる。すなわち「ん」は「ア」よりも小さい

  • +
  • 辞書では濁点は無視されるが、文字コード順では濁点のある文字は「次の文字」とみなされる。つまり「が」は「か」の次である

  • +
+

また、Ruby 1.7にはアルファベットの範囲において大文字小文字を無視して比較するcasecmpメソッドがあります。casecmpメソッドは、大文字小文字の差を無視して比較する点以外は「<=>」と同様に動作します。

+
+
"a".casecmp("A")  # => 0
+
+
+
+

繰り返し

+
+

配列と同様に文字列に対しても繰り返しメソッドが定義されています。ただ、文字列の場合には配列ほど繰り返しが役に立ちません。

+

eachメソッドは文字列の各行に対して繰り返します。

+
+
s = <<END
+foo
+bar
+baz
+END
+s.each{|x| puts x}  # foo, bar, bazを出力する
+
+
+

eachメソッドにはeach_lineという別名があります。

+

各行ごとではなく、各文字より正確には各バイトごとに繰り返すのはeach_byteメソッドです。

+

もうちょっと面白い繰り返しはuptoメソッドです。これは「次」の文字列を順番に返します。

+
+
"a".upto("z") {|x|
+  puts x    # a, b, c..zを出力
+}
+"aa".upto("zz") {|x|
+  puts x    # aa, ab, ac,..zy, zzを出力
+}
+
+

この「次」の文字列はnextメソッドで得ることができます。

+
+
"a".next   # => "b"
+"az".next  # => "ba"
+
+
+
+

シンボル

+
+

「シンボル」というのは、識別子に対応する値です。「foo」とか「$bar」とか、Rubyプログラム中に現れる個々の「名前」には対応するシンボルが存在します。シンボルは「:名前」という形式のリテラルがあります。

+

シンボルはRubyのプログラムの中で「名前」を指定するためにたびたび用いられます。たとえば、

+
+
attr_reader :foo, :bar
+
+

によって、「foo」と「bar」という属性読み出し用メソッドを定義することができます。

+

文字列からシンボルを得るためのメソッドがinternです。internメソッドを使えば、通常Rubyの識別子としては許されない、たとえばスペースを含むような名前を持つシンボルを得ることができます。

+
+
"foo".intern    # => :foo
+
+

シンボルからその文字列表現を取るためには、to_sメソッドを使います。

+
+
:foo.to_s       # => "foo"
+
+
+
+

まとめ

+
+

今月は文字列処理の基本ということで、文字列クラスについて学びました。文字列クラスはRubyの中でも最もメソッドの多いクラスです。それだけRubyは文字列処理に本気だということができるでしょう。来月は文字列処理のもう1つの主役である正規表現について学ぶ予定です。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-023.xhtml b/docs/vol1/xhtml/p-023.xhtml new file mode 100644 index 0000000..2ad3152 --- /dev/null +++ b/docs/vol1/xhtml/p-023.xhtml @@ -0,0 +1,280 @@ + + + + + +第11章 文字列の操作 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ packとunpack

+
+

「文字列の分割」のときに使ったunpackメソッドは、本来配列のpackメソッドと対になって使われるためのメソッドです。packは配列に格納されている各要素を指定されたテンプレートに従って文字列(というかバイト列)に詰め込むメソッドで、unpackはその逆、つまりテンプレートに従ってバイト列の内容からデータを取り出し配列として返します。

+

今回はPerl譲りのこのpackunpackについて考えてみましょう。Perlエキスパートの人には退屈な話かもしれませんね。

+
+

Perlエキスパートのために

+

Perlのpackunpackについてよくご存じの方のために、PerlとRubyのpackunpackの違いを紹介しておきます。

+
+

引数が違う

+

Perlがそれぞれpack, unpack関数であるのに対して、Rubyでは配列クラスのpackメソッドと文字列クラスのunpackメソッドです。呼び出し方もPerlでは、

+
+
pack(template, val, val, val);
+unpack(template, str);
+
+

であるのに対して、Rubyでは、

+
+
[val, val, val].pack(template)
+str.unpack(template)
+
+

になります。

+

64bit整数のQ, qテンプレートがない

+

将来はできるかもしれませんが、当面は64bit整数は扱えません。もっともPerlでもすべてのプラットフォームで使えるわけではありませんから、さして問題にはならないと思います(※この原稿を書いている間に1.7に追加しちゃいました)。

+

Rubyのpackにはチェックサム機能がない

+

文字列のチェックサムのためには文字列クラスのsumメソッドを使います。

+
+
+
+

packテンプレート

+

packunpackに指定するテンプレート文字の一覧を表11.3に示します。テンプレート文字は後ろに「長さ」を表す数字を続けることができます。「長さ」の代わりに‘*’とすることで「残りすべて」を表すこともできます。

+ +
+

表11.3●テンプレート文字の意味の違い

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文字説明文字説明
aASCII文字列(nul文字を詰める)vリトルエンディアンのunsigned short
AASCII文字列(スペースを詰める)Vリトルエンディアンのunsigned long
bビットストリング(下位ビットから上位ビット)f単精度浮動小数点数(機種依存)
Bビットストリング(上位ビットから下位ビット)d倍精度浮動小数点数(機種依存)
h16進文字列(下位ニブルが先)eリトルエンディアンの単精度浮動小数点数(機種依存)
H16進文字列(上位ニブルが先)Eリトルエンディアンの倍精度浮動小数点数(機種依存)
cchargビッグエンディアンの単精度浮動小数点数(機種依存)
Cunsigned charGビッグエンディアンの倍精度浮動小数点数(機種依存)
sshortpナル終端の文字列へのポインタ
Sunsigned shortP構造体(固定長文字列)へのポインタ
iintuuuencodeされた文字列
Iunsigned intUutf-8
llongwBER圧縮整数
Lunsigned longxナルバイト/1バイト読み飛ばす
mbase64された文字列X1バイト後退
Mquoted-printable encodingされた文字列Znull終端文字列
nビッグエンディアンのunsigned short@絶対位置への移動
Nビッグエンディアンのunsigned long
+
+

テンプレート文字の間には空白を入れて見やすくすることができます。

+

下記の説明の中でshortlongのサイズはシステムによらずそれぞれ2, 4バイトとみなされます。s, S, i, I, l, Lの各テンプレート文字は直後に「_」または「!」を続けた場合にはサイズはシステム依存のshort, longのサイズになります。

+

a, A, Zの各テンプレート文字はpackunpackで少しだけ意味が違います(表11.4)。

+
+

表11.4●テンプレート文字の意味の違い

+ + + + + + + + + + + + + + + + + + + + + +
文字packunpack
anul文字を詰める後続するnull文字やスペースを残す
Aスペースを詰める後続するnull文字やスペースを削除
Znul文字を詰める後続するnull文字を削除
+
+
+
+

主な使い道

+

packunpackの使い方として主なものは以下のとおりです。

+ +

このうち、すでに説明した固定幅での文字列の分割以外の使い方について見てみましょう。

+
+
数値の配列を文字列化
+
+
[82, 117, 98, 121].pack("cccc") # => "Ruby"
+[82, 117, 98, 121].pack("c4")   # => "Ruby"
+[82, 117, 98, 121].pack("c*")   # => "Ruby"
+
+
+
+
文字列を文字コードの配列に
+
+
"Ruby".unpack('C*')             # => [82, 117, 98, 121]
+
+
+
+
文字コードとUTF-8文字列との相互変換
+

Cでは結局ASCII文字列しか扱えませんが、Uテンプレートを使うとUTF-8文字列を処理できます。入力がUTF-8の場合、

+
+
"Ruby".unpack('U*')             # => [82, 117, 98, 121]
+"ああ".unpack('U*')             # => [12354, 12354]
+[12354, 12354].pack(U2)         # => "ああ"
+
+

となります。

+
+
+
uuencode, base64のエンコード、デコード
+

uuencodeはかつてメールなどでバイナリデータを送るときに用いられたエンコーディング手法です。base64は同じ目的のために最近よく用いられるエンコーディング手法です。直接見ることは少ないかもしれませんが、メールの添付ファイルはたいていこの方法でエンコーディングされています(base64の他にquoted printable形式というものも使われることがあります)。

+

strというバイナリデータをエンコードするためには、

+
+
[str].pack("u")
+[str].pack("M")
+
+

デコードするためには、

+
+
str.unpack("u")
+str.unpack("M")
+
+
+

とします。なお、quoted printable形式にはmテンプレート文字を用います。

+
+
+
エンディアンの変換
+

マシンによって整数のデータは位置が違うことを「エンディアン」といいます。Intel製のx86は小さい桁を先に置く「リトルエンディアン」で、SunのSparcやMotorolaの68000などは大きい桁を先に置く「ビッグエンディアン」です。packunpackを用いれば、ビッグエンディアンとリトルエンディアンの相互変換も簡単にできます。

+
+
[1].pack("N").unpack("V")  # => [16777216]
+[1].pack("n").unpack("v")  # => [256]
+
+
+
+
C構造体のバイナリ操作
+

SocketクラスはCのsocket APIを構造体を含めてそのまま受け取る非常に原始的なインターフェイスを提供しています。そのためにstruct sockaddr構造体を文字列にpackする必要があります。

+
+
[2, 7, 127, 0, 0, 1].pack("snC4x8")
+
+

これは「AF_INET, 'echo', 127.0.0.1」を意味します。IPアドレスの取得もunpackを使います。

+
+
Socket.gethostbyname("localhost")[3].unpack("C4").join(".")
+# => "127.0.0.1"
+
+
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-024.xhtml b/docs/vol1/xhtml/p-024.xhtml new file mode 100644 index 0000000..9b3afaa --- /dev/null +++ b/docs/vol1/xhtml/p-024.xhtml @@ -0,0 +1,66 @@ + + + + + +第11章 文字列の操作 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 国際感覚

+
+

ちょうどこの原稿を書いているタイミングで、冬季オリンピックが開催されています。今年は私の通ってる教会の本部があるソルトレークシティが会場ともあって注目しています。

+

実は普段はスポーツにはほとんど関心がなく、野球中継も見たことがない私ですが、今年はついつい引き込まれて夜更かしをして中継を見てしまっています。もっとも私の場合オリンピックとは関係なくいつも夜更かしをしてるんですが(笑)。

+

そんななかで、思わず日本人選手の応援をしている自分を発見すると国際感覚ってなんだろうって考えてしまいます。もともと、海外で事故や事件があったときに「日本人の被害はありませんでした」などとわざわざ断言するニュース番組の姿勢は嫌いだったのですが、オリンピックで競技そのものよりも日本人の成績だけを気にして、応援する姿勢っていうのは実際のところ大差はないなあなどと感じてしまいます。

+

ま、それはそれとして、海外に積極的に出ていって活躍している人々の姿を見るのは気持ちのいいものですね。

+

もともと田舎に引きこもって、海外旅行の経験もほとんどなく、東京にさえめったに行かない私にとって、長らくなかなか「日本の外」を意識する機会はあまりなかったのですが、最近になってそういう機会が増えてきました。気の付いた順にいくつかあげてみましょう。

+
+

時差

+

当然といえば当然ですが、地球は丸く、太陽は地球から見ると東から西に移動しているわけです。というわけで、世界には時差があります。日本はロンドン時間である世界標準時よりも9時間早く、逆にオリンピック会場であるソルトレークシティは日本よりも16時間遅いわけです。

+

オリンピックでもない限り、普段はあまり気にならないような時差ですが、最近はメールの来る時間や、IRCでチャットする場合の話し相手のタイムゾーンなどでより頻繁に感じるようになりました。

+

そういえば普段から不規則な生活をしているのが幸いして、海外旅行に行ってもあまり時差ぼけには悩まされませんでした。これってよいこと? そういえば、Perlの作者Larry Wallも日本に来たときおんなじようなことを言ってたなあ。

+
+
+

言葉の壁

+

これまた当然ですが、日本人でない人はほとんど日本語を話しません。

+

私の知り合いには日本語を話す外国人が何人かいますが、彼らのほとんどは驚嘆の目で見られるか、「変なガイジン」と呼ばれるかのいずれか、あるいは両方の経験をしているようです。まあ、日本語を母国語にしないのに日本語を話す人の数を考えるとしかたがない面もあるのかもしれません。

+

一方、海外に出かけるとほとんどは英語を使ってコミュニケートすることになるわけです。スペイン語を母国語とするホンデュラス人と日本語を母国語とする日本人が、共通言語が英語しかないので、たどたどしく話すのは、一生懸命ながらどこかユーモラスな気もします。

+
+

まあ、言葉の壁を言い訳に日本に閉じこもるよりは100倍望ましいので、私自身も英語を積極的に使って、苦しみながらも、英語のメールを読んだり書いたり、あるいは場合によっては英語でプレゼンテーションをしたりするわけです。

+

しかし、とはいうものの、アメリカ人やイギリス人のように英語を母国語にする人々はこんな苦労は感じることはないわけで、心の片隅では「こんなの不公平だ」とか「世界の共通言語は日本語であるべきでは」などと考えたりもするわけです。現実にはそんなことは夢にすぎないわけですが。厳しいなあ。

+
+
+

心理的障壁

+

「言葉の壁」は、英語を話せないから伝えたいことも伝えられない、というある種わかりやすい障壁なのですが、なんとなくもっと別の障壁があるような気がします。

+

ここではとりあえず心理的障壁と呼んでみましたが、なんとなく自分の心の中に「異質なものへの恐れ」のようなものがあって、それが「外国人」あるいは「(典型的)日本人でない人」に向かっていることがたびたびあったような気がするのです。

+

今回のRubyに関連して何人もの「外国人」と数え切れないほどメールのやりとりをしました。彼らとは国籍も文化も宗教も違うことが多いわけですが、それにも関らず、驚くほど共感できる経験がたびたびありました。もちろん、これはRubyという共通の関心があったからこそですが、逆にいえば共通の関心事さえあれば、同じ人間として、背景の違いはさして問題ではない、恐れることはないということでもあります。

+

こうやって少しずつお互いにわかりあえることによって、「違い」を克服できるのではないか、できたらいいなあと思うのでした。

+
+
+

国産主義

+

Rubyが世に登場して以来、たびたび「国産言語」と呼ばれてきました。まあ、日本人が開発して海外でも一般に使われている言語としては珍しい(最初かも)のは確かですが、とはいえなんか違和感を感じるのも事実です。

+

別に日本人が作ったから日本人の感覚に合っているとか、日本人に使いやすいとか、逆に外国人には使いにくいとかがあるわけもないのですから。メリットといえば、たまたま作者と英語ではなく日本語でメールが書けることくらいでしょうか。こんなのが重視されてしまうのも一種の心理的障壁なのでしょうか。

+
+
+

おわりに

+

なんとなく、自分の国際感覚のなさを露呈しただけの駄文のような気もしないでもないのですが、これが私が感じる日本の壁ということで。これが「馬鹿なこと言ってる」と思われるのが当たり前の世の中が来てほしいと思う今日この頃です。

+

あと、今後Rubyの知識を生かして積極的に海外展開しようという人など現れてくれないだろうかなあ、とも期待しているのですが、読者の皆さんはいかがです?

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-025.xhtml b/docs/vol1/xhtml/p-025.xhtml new file mode 100755 index 0000000..6f51ba6 --- /dev/null +++ b/docs/vol1/xhtml/p-025.xhtml @@ -0,0 +1,875 @@ + + + + + +第12章 パターンマッチ + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay12 +
+

+初等Ruby講座
+パターンマッチ +

+
+

[Linux magazine, 2002年5月号]

+
+

現代においてはパターンマッチと言えば、Ruby 2.7から導入された構文のことを連想する人のほうが多そうですが、こちらは正規表現による文字列のパターンマッチです。当時のEmacsベースの正規表現エンジンは、鬼雲おにぐもに置き換わってしまいましたが、基本的な部分は同じです。

+

また、Riteという次世代インタプリタ構想も披露しています。記事の末尾に「ぐずぐずしてたら、他の人に負けちゃうかもしれません」と予想していたとおり、Rubyのインタプリタコアの置き換えは笹田さんのYARVによって達成されてしまいました。しかし、Rite構想は無駄になったわけではなく、こちらはmrubyのコアになりました。今でもmrubyのソースコードに何箇所かRiteという表現が残っています。

+
+
+

先月学んだ文字列クラスに続いて、今月はRubyの文字列処理のもう1つの鍵である正規表現クラスRegexpについて学んで、文字列処理の神髄に迫りましょう。

+
+
+

パターンとは

+
+

文字列を処理する場合に、たとえば「"Ruby"という文字列を含む」というのは比較的簡単ですが、もうちょっとインテリジェントなルールを記述したい場合もあります。たとえば、「Pで始まってlで終わる」とかです。でも、コンピュータは(Rubyも)人間の言葉はわかりませんから、コンピュータにでもわかる言葉でこのルールを表現してやらなくてはいけません。このようなルールが「正規表現」です。Rubyではスラッシュ「/」で囲まれた部分が正規表現になります。

+
+
/Ruby/   # 「"Ruby"という文字列を含む」
+/P.*l/   # 「Pで始まってlで終わる」
+
+

後者は少々難しいルールを表現していますね。この細部の意味についてはあとで詳しく説明します。

+
+

正規表現は文字列のパターンを表現するための、いわばミニ言語ですから、文法があります。外側の言語(Ruby)とは違う文法を持つ独立した言語ですから、ときおり混乱の元になることもありますが、文法をきちんと押さえてしまえばこれほど便利なものはありません。

+
+
+

パターンマッチのパワー

+
+

正規表現によるパターンマッチのパワーでなにができるのか、その能力の一端をご紹介しましょう。たとえば、パターンマッチ機能を使えば、次のようなことは朝飯前です。

+
    +
  • ログファイルから「日付のようなもの」を取り出す
    +しかも、日本式、米国式、欧州式のそれぞれに対応できます。

  • +
  • HTMLファイルから「URLのようなもの」を取り出す
    +URLを抽出すればリンク集やブックマークをデータとして加工できます。

  • +
  • 典型的なスペルミスを探す
    +日本語では「私はは」のような助詞の連結のミスが多いのですが、それらもパターンで表現できます。

  • +
+

「のようなもの」というあたりがパターンマッチ以外の方法ではなかなか実現できないのですが、逆にいえばパターンマッチの最も得意とする領域ということです。

+

これらの具体的な方法についてはあとで紹介します。

+
+
+

パターンの文法

+
+

正規表現は「メタ文字」と呼ばれる特殊機能を持つ文字とそれ以外の文字から構成されます。メタ文字はプログラミング言語における制御構造のようなものです。正規表現のメタ文字を表12.1に示します。

+ +
+

表12.1●正規表現のメタ文字

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表記説明表記説明
.任意の一文字(改行以外)m,n?m回からn回の繰り返し(非よくばり型)
[][a-z]aからzまでのいずれか^行頭
[^][^a-z]aからz以外の文字$行末(改行があればその直前)
\w単語を構成する文字\A文字列の先頭
\W単語を構成する文字以外\Z文字列の末尾(改行があればその直前)
\s空白文字。[\t\n\r\f]と同じ\z文字列の末尾
\S非空白文字\bバックスペース(0x08)([]内)
\d数字。[0-9]と同じ\b語境界文字([]外)
\D非数字。[^0-9]と同じ\B非語境界文字
*0回以上の繰り返し|選択
+1回以上の繰り返し( )表現のグループ化(後方参照あり)
?0または1回の繰り返し\1,\2後方参照(n番目のかっこに対応する)
m,nm回からn回の繰り返し(?: )表現のグループ化(後方参照なし)
*?0回以上の繰り返し(非よくばり型)(?= )パターンによる位置指定(幅を持たない)
+?1回以上の繰り返し(非よくばり型)(?! )パターンの否定による位置指定(幅を持たない)
??0または1回の繰り返し(非よくばり型)(?# )コメント
+
+

メタ文字以外の文字はその文字そのものと一致します。ですから、/FOO/FOOという文字の並びと一致します。

+

前に出てきた例 /P.*l/ は以下のように解釈します。

+
    +
  • P」は通常文字なので文字「P」そのものとマッチ

  • +
  • .」は任意の1文字とマッチ

  • +
  • *」は直前のパターン(「.」)の任意回数の繰り返し

  • +
  • l」は文字「l」そのものとマッチ

  • +
+

ですから、これを人間の言葉に直すと「Pで始まってlで終わる」パターンになり、「Perl」とか「Pascal」とマッチします。「.*」は0回を含みますから、上記のパターンは「Pl」にもマッチします。人間はよく0回のことを忘れてしまいますから注意が必要です。コンピュータは忘れないんですよねえ。

+
+
+

通常文字

+
+

では、正規表現の文法をちょっと詳しく見てみましょう。まずは、表12.2に示したメタ文字以外の「普通」の文字はその文字自身とマッチします。ですから、「a」は「a」自身とマッチします。ですから、メタ文字を含まない文字列のパターンは、その文字列自身です。たとえば、「Ruby」にマッチするパターンは「Ruby」です。これだけでは全然難しくないですね。

+
+
+

文字クラス

+
+

[」と「]」で囲まれたものは「文字クラス指定」で、[] の間に含まれる文字のいずれかにマッチします。たとえば「[abcdef]」はアルファベット小文字のabcdefのいずれかにマッチします。文字クラス指定の中では -(ハイフン)でつなぐことによって範囲を指定できます。ですから、「[abcdef]」の代わりに「[a-f]」と書くことができます。このほうがわかりやすいですね。

+

文字クラス指定の最初の文字が「^」であった場合には、条件が反転して今度は[]に含まれない文字にマッチします。

+

では、文字クラスで「^」「-」「]」を指定したい場合にはどうしたらよいのでしょう?

+

正解は、「^」は先頭以外に、「-」「]」は先頭に置けばよい、でした。また、直前にバックスラッシュ(\またはY)を置く方法もあります。

+
+
+ +

任意の1文字

+
+

次は任意の1文字を表現するパターンです。これは「.」になります。ただし、「.」は改行とはマッチしません(特別に指定した場合を除く)。ということは、「.」はabCなどにマッチします。日本語の文字についてですが、Rubyの正規表現は日本語対応ですから、文字コードについての情報を与えてやれば、「.」が「あ」や「い」などに1文字としてマッチします。

+

たとえば、「Pから始まって、任意の2文字の後、l」というパターンは「P..l」になります。「.」はたびたびこの後説明する「繰り返し」とともに使われます。

+
+
+

繰り返し

+
+

さて、パターンの文法には制御構造も必要です。正規表現の制御構造は「繰り返し」です。正規表現には上限と下限によって複数の繰り返し記法があります(表12.2)。いずれも直前のパターンに対して繰り返しを行います。

+
+

表12.2●繰り返し記法

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表記下限上限
a*0なし
a+1なし
a?01
an,mnm
annn
an,nなし
+

ただし、n, mは整数

+
+

ですから、「a*」は「aの0回以上の繰り返し」「a+」は「aの1回以上の繰り返し」「a?」は「aの0回または1回の繰り返し」言い換えれば「a」または無にマッチします。

+

ここで注意すべき点が2つあります。

+

1つは、マッチは「最左最長一致」であり、パターンは一番左側で一番長い部分にマッチすることです。たとえば「a*」というパターンを "aabbabaaa" という文字列にマッチさせると先頭の "aa" にマッチします。aの1個の並びでなく2個の並びにマッチすることと、文字列中で最も長いaの並びである末尾の "aaa" にマッチするわけでないことに注目してください。

+

もう1つは、0回の繰り返しは間違いやすいことです。「a*bb」というパターンを "bbaabb" という文字列にマッチさせると、マッチするのは先頭の "bb" の部分です。つまり、「a*」は0回マッチし、その後の「bb」が先頭でマッチするのです。混乱しそうなときには「*」でなく1回以上の繰り返しである「+」を使うべきでしょう。

+
+
+

「よくばり」と「なまけもの」

+
+

さて、最左最長一致では困る場合がときどきあります。たとえば、

+
    +
  • http://www.ruby-lang.org:80/ja/

  • +
+

という文字列の先頭の「http:」までの部分を取り出すために「.*:」というパターンとマッチさせると、最長一致により実際には「http://www.ruby-lang.org:」までマッチしてしまいます。これは正規表現の繰り返しが「よくばり」で、パターンに合致する一番長い文字列を探すからです。

+

繰り返し系メタ文字のすぐ後ろに「?」を付けると「よくばり」の代わりに「なまけもの」のマッチを行います。「なまけもの」マッチは最初にパターンをマッチした時点で繰り返しを止めてしまいます。ですから、上記の文字列と「.*?」というパターンをマッチさせると、めでたく「http:」を取り出すことができます。

+ +

しかし、「よくばり」か、そうでなければ「なまけもの」とは、人間だったらいずれにしても嫌われちゃいますね(笑)。

+
+
+

グルーピング

+
+

繰り返しは直前の正規表現を対象にしますから、「ma+」は「mとそれに続くaの1回以上の繰り返し」という意味になります。「maの1回以上の繰り返し」のためにはかっこでくくって「(ma)+」とします。このパターンをまとめる機能「グルーピング」と呼びます。

+

正規表現中のかっこにマッチした文字列は \1などで表現できます。つまり「(.)\1」というパターンは同じ文字が2つ続いたパターンを表現します。これを後方参照と呼びます。

+

かっこは後方参照のためにデータを内部的にセーブするので、少々効率が落ちます。ただ単にグルーピングだけのためにはパターンを「(?:」と「)」でくくります。

+
+
+

選択

+
+

複数のパターンのいずれかを選択するのがメタ文字「|」です。たとえば「yes|no」のような感じです。

+

選択の「|」は他の正規表現の構成要素に比べて優先順位が低いため、「yes|no」は「"yes" または "no"」と解釈され、「"ye" に続く "s" または "n"、さらに "o" が続いたもの」とは解釈されません。そういうパターンはグルーピングを使って「ye(s|n)o」と表現されます。

+
+
+

アンカー

+
+

今まで紹介したパターンは文字(の並び)とマッチするものでしたが、正規表現にはその他にも位置を特定するだけで文字とはマッチしないパターンがあります。それらをアンカーと呼びます。正規表現のアンカーを表12.3に示します。

+
+

表12.3●繰り返し記法

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表記マッチ位置
^行の先頭
$行の末尾(改行があればその前)
\A文字列の先頭
\Z文字列の末尾(改行があればその前)
\z文字列の末尾
\b語境界文字([]外)
(?= )パターンによる位置指定
(?! )パターンの否定による位置指定
+
+
+
+ +

オプション

+
+

正規表現の末尾の/の後ろにはその正規表現のためのオプションを指定できます。

+
+
/ruby/i     # 大文字小文字無視
+/a=#{a}/o   # 一度だけ展開
+/あい/e     # 文字コードはEUC
+/iあい/ei   # 複数指定できる
+
+

指定できるオプションを表12.4に示します。

+
+

表12.4●正規表現オプション一覧

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
オプション説明
i大文字小文字を区別しない
m複数行マッチ、改行も通常文字とみなす
o式展開を最初の一度だけ行う
x正規表現中の空白を無視。コメントを有効に
eEUC文字列だと仮定してマッチを行う
sSJIS文字列だと仮定してマッチを行う
uUTF-8文字列だと仮定してマッチを行う
nバイト列だとみなしてマッチを行う
+
+

iオプションを使うと正規表現マッチの際にアルファベットの大文字と小文字を区別しなくなります。iはignore caseのiです。

+

oオプションは式展開を一度しか行いません。正規表現でも文字列同様に式展開を行うことができるのですが、oオプションを付けるとこの展開を最初の一度だけに限定させることができます。oはonceのoです。

+

mオプションは複数行マッチモードです。通常、「.」は改行にマッチしませんし、「^」や「$」は文字列途中の改行にもマッチしますが、mオプションを使うと文字列全体が1つの行であると見なして、改行を特別扱いしなくなります。ですから、「.」は改行にマッチし、「^」は文字列先頭と、「$」は文字列末尾とだけマッチします。mはmulti-lineのmです。

+

xオプションは、正規表現に意味上の区切りに空白を入れたり、コメントを付けたりすることを許します。この拡張正規表現で、読みにくい正規表現を比較的わかりやすく記述することができます。

+
+
/\d{4}-?    # 年
+\d{1,2}-?   # 月
+\d{1,2}     # 日
+/x
+
+

xオプションを付けた正規表現中に空白を入れたいときには「\s」を使います。xはextendedのxです。

+

残りのe, s, u, nは正規表現の文字コードを表します。それぞれEUC, SJIS, UTF-8, NONEを意味します。

+
+
+ +

読解・正規表現

+
+

では練習としていくつかの正規表現の意味を読解してみましょう。

+
+

/FOO/

+

FOO」つまり「F」「O」「O」という文字の並び。

+

/[A-Z][a-zA-Z1-9]*/

+

アルファベット大文字で始まり、英数字が続く、Rubyの定数の識別子のパターン。

+

/(Ruby)+/

+

Ruby」の1回以上の繰り返し、つまり、「Ruby」や「RubyRuby」や「RubyRubyRuby」……。

+

/Dec,?/

+

Dec」の後「,」の0または1回の繰り返し。つまり、「Dec」または「Dec,」。

+

/Sun|Mon|Tue|Wed|Thu|Fri|Sat/

+

(英語の)曜日にマッチ。選択(|)は結合強度が弱いので、直前の文字でなく文字列が対象。

+
+
+
+

メソッド一覧

+
+

さて、毎回恒例ですから、正規表現オブジェクトの持つメソッドを表12.5に示します。今まで紹介してきた配列、ハッシュ、文字列に比べてはるかに少ないメソッドしかないのが目立ちますね。6つしかありません。おまけにそのうち3つは同じメソッドの別名ですし。結局、正規表現オブジェクトの本質はマッチすることだけにあるということでしょう。

+
+

表12.5●正規表現オブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
re === strmatch
re =~strmatch
casefold?大文字小文字を無視するか
kcode対応する文字コード
match(str)マッチ
source正規表現の文字列表現
+
+

一方、正規表現のクラスメソッドは表12.6のとおりです。これも少ないですね。

+
+

表12.6●正規表現クラスのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
compile(str)正規表現
escape(str)メタ文字のエスケープ
last_match最後のマッチ情報
new(str)compile
quote(str)escape
+
+
+
+ +

正規表現の生成

+
+

Rubyでは正規表現オブジェクトを得る方法は、正規表現リテラルを使う方法と、正規表現クラスのクラスメソッドを使う方法とがあります。

+
+
/P.*l/                 # 正規表現リテラル
+Regexp.compile("P.*")  # クラスメソッド
+
+

前者は正規表現オブジェクトの生成がプログラムの読み込み時に一度しか行われないので、毎回文字列から正規表現を作り出す後者に比べて少々効率がよいです。しかし、プログラムの中で組み立てた文字列から正規表現を作るには後者のほうが自然です。

+

正規表現の元になる文字列の中にメタ文字が含まれている可能性があり、メタ文字に特別な意味を与えたくない場合には、メタ文字をエスケープして特別な意味をなくす必要があります。

+
+
Regexp.escape("P.*") => "P\\.\\*"
+
+

この文字列から正規表現を作れば、文字列「P.*l」そのものとマッチする正規表現が得られます。

+
+
+

正規表現マッチ

+
+

正規表現マッチは =~ メソッドかmatchメソッドを使います。=~ メソッドはマッチが成功したとき、マッチした位置を示す整数を返します(文字列先頭がゼロ)。一方、matchメソッドは成功したとき、マッチ情報を示すMatchDataオブジェクトを返します。マッチしなかった場合にはいずれのメソッドもnilを返します。

+
+
/P.*l/ =~ "Perl"      # => 0
+/P.*l/.match("Perl")  # => #<MatchData:0x401b8488>
+
+

マッチに使われる =~ メソッドは文字列クラスにも定義されているので、右辺と左辺を取り換えても同じ意味を持ちます。

+
+
"Perl" =~ /P.*l/      # => 0
+
+

ここで、注意すべき点は =~ の両辺が文字列だった場合には、右側がパターンとして解釈される点です。

+
+
"Perl" =~ "P.*l"      # => 0=
+
+
+
+

MatchData

+
+

matchメソッドの戻りであるMatchDataからは、マッチの位置、部分マッチ(かっこでくくられた部分)、そのオフセット、マッチした部分の前後の文字列などを取り出すことができます。

+

MatchDataクラスのメソッドを表12.7に示します。

+ +

実際の使い方の例は以下のようになります。

+
+
m = /a(.)(.)/.match("abc")
+m[0]         # => "abc" (マッチ全体)
+m[1]         # => "b"   (最初のかっこ)
+m.begin(0)   # => 0     (マッチ全体)
+m.begin(1)   # => 1     (最初のかっこ)
+m.offset(2)  # => [2,2] (2番目のかっこ)
+
+
+
+

特殊変数

+
+

RubyはPerl由来の特殊変数を持っています。「$」で始まるこれらの変数はプログラムを醜くする傾向があるのでしばしば嫌われますが、一度使えば書き捨てるような短いプログラムでは、記述がコンパクトになるメリットもあります。正規表現関係の特殊変数を表12.8に示します。

+
+

表12.8●正規表現関連特殊変数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表記説明
$~最後のMatchDataRegexp.last_matchと同じ)
$&最後のマッチ文字列
$`マッチより前の文字列
$'マッチより後ろの文字列
$+最後のかっこにマッチした文字列
$nn番目のかっこに対応する文字列(nは1, 2, 3 ... )
+
+
+
+ +

文字列と正規表現

+
+

正規表現は文字列とマッチするものですから、文字列との関わりがすべてです。前回解説した文字列オブジェクトにも正規表現を使うメソッドがたくさんあります。前回はあまり説明できなかった文字列オブジェクトで正規表現を使うものをここで解説しましょう。

+

文字列オブジェクトの正規表現関連メソッドは表12.9のとおりです。

+
+

表12.9●文字列オブジェクトの正規表現関連メソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
s=~reマッチrindex(re)後ろからのindex
s[re]文字列一部の取得scan(re)繰り返しマッチ
s[re]=v文字列一部の更新split(re)文字列分割
index(re)部分文字列検索sub(re,str)文字列置換
gsub(re,str)文字列置換sub!(re,str)文字列置換
gsub!(re,str)文字列置換
+
+

index, rindexは部分文字列を探すメソッドですが、部分文字列の代わりに正規表現を指定することもできます。[][]=は文字列の一部を取り出すメソッドですが、位置の指定に正規表現を使うことができます。

+
+
+

splitの神髄

+
+

文字列の分割メソッドとして先月も紹介したsplitメソッドですが、実は正規表現と組み合わせることによってよりいろいろなことができるパワーを秘めているのです。

+

先月紹介したのは固定文字列(1文字)で分割する機能でした。

+
+
"a,b,c".split(",")   # => ["a","b","c"]
+
+

しかし、正規表現でも分割できます。

+
+
"a,b:c".split(/[,:]/) # => ["a","b","c"]
+
+

これは、「,」または「:」のいずれかで分割するという意味になります。もちろんもっと複雑なパターンもOKです。

+
+
str.split(/<.*?>/)
+
+

これはHTML(またはXML)のタグの部分で分割し、地の文を配列として得ることができます。タグの部分を除いてしまうのではなく、そのまま残したければパターンをかっこでくくります。splitはかっこでくくった部分を配列に含めるからです。

+
+
str = "<ul><li>a<li>b</ul>"
+str.split(/<.*?>/) # 以下のように分割される
+# ["","<ul>","","<li>","a","<li>","b","</ul>"]
+
+
+
+ +

文字列のscan

+
+

splitは分割する区切りに正規表現を使いましたが、scanのほうはマッチした部分を取り出すメソッドです。

+
+
"foo".scan(/./)   # => ["f", "o", "o"]
+
+

正規表現がかっこを含む場合は、マッチごとにそれぞれのかっこにマッチした文字列の配列を追加するので、配列の配列を返します。

+
+
"foo".scan(/(.)(.)/)  # => [["f","o"]]
+
+

ブロックを指定した場合には、マッチごとにその要素に対してブロックを実行します。

+
+
"foobarbazfoobarbaz".scan(/ba./) {|s| p s}
+# 以下の行を出力:
+# "bar"
+# "baz"
+# "bar"
+# "baz"
+
+

これは

+
+
"foobarbazfoobarbaz".scan(/ba./).each {|s| p s}
+
+

と同じ動作ですが、無駄な配列を生成しないぶん少々効率がよくなっています。

+
+
+

置換

+
+

文字列のパターンに合致する部分を置き換えるためには置換のためのメソッドを使います。置換のためのメソッドは4つあって用途に応じて使い分けます(表12.10)。

+
+

表12.10●置換メソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド複数置換文字列の書き換え更新なしでnil
sub×××
sub!×
gsub××
gsub!
+
+ +

つまり、subメソッドはパターンに合致する最初の部分だけを置き換え、gsubgはglobalのgです)メソッドは文字列のうちパターンに合致する部分すべてを置き換えます。また、メソッド名に「!」に付いたものは文字列そのものを置き換え、またパターンがマッチしなければnilを返します。メソッド名に「!」が付かないものは、置換を行った文字列を返し、元の文字列は変更しません。

+
+
a = "abcabc"
+a.sub(/b/, 'B')   # => "aBcabc"(aは変化なし)
+a.sub!(/b/, 'B')  # => "aBcabc"(aも更新)
+a.sub!(/d/, 'D')  # => nil(マッチしないから)
+
+a = "abcabc"
+a.gsub(/b/, 'B')  # => "aBcaBc"
+
+

さて、パターンはたいていの場合固定的な文字列ではなく、いろいろな文字列にマッチします。そのような場合、マッチの結果に応じて置換する文字列を決めたいと考えるのは自然なことです。置換メソッドはそういうニーズに対して2つの方法で対応します。

+

1つは置換文字列の中でマッチ結果を表す一種のメタ文字を使う方法です。置換文字列リプレース中の \&\0はマッチした部分文字列に、\1\9n番目のかっこの内容に置き換えられます。これらはそれぞれ「$」(マッチより前の文字列)、「$'」(マッチより後ろの文字列)、「$+」(最後のかっこに対するマッチ)に対応します。

+
+
x = "abcabc"
+x.sub(/[bc]/, '(\&)')   # => "a(b)(c)abc"
+
+

もう1つはブロックを使う方法です。置換メソッドの第2引数(置換文字列)を省略して、代わりにブロックを指定すると、正規表現にマッチした部分がそのブロックを実行した結果で置き換えられます。

+
+
"foobarbazfoobarbaz".gsub(/ba./){|s|s.upcase}
+# => "fooBARBAZfooBARBAZ"
+
+

置換文字列については $1などの特殊変数を使えません。この文字列を評価する時点ではまだマッチが行われていないからです。また、「"」でくくった文字列の中では「\」はエスケープしなければならないので、置換文字列は「'」でくくることをお勧めします。

+
+
# 第二引数の指定でよくある間違い
+'abbbcd'.gsub(/a(b+)/, "#{$1}")       # これは間違い
+'abbbcd'.gsub(/a(b+)/, "\1")          # これも間違い
+'abbbcd'.gsub(/a(b+)/, "\\1")         # これは正解
+'abbbcd'.gsub(/a(b+)/, '\1')          # これも正解
+'abbbcd'.gsub(/a(b+)/, '\\1')         # これも正解
+'abbbcd'.gsub(/a(b+)/) { $1 }         # これも正解
+
+

最初のものは、式展開はgsubの呼び出し前に行われることが間違いです。展開されるのはマッチ前の $1の値です。2番目のものは置換文字列を「"」でくくったため、「\1」が解釈されて「\001」、つまりバイト値の1に解釈されてしまいます。

+
+
+ +

日付を取り出す

+
+

ひとくちに「日付」といってもいろいろなフォーマットがあります。欧米でよく用いられる形式については、正規表現を使うよりもparsedateライブラリを使うほうがよいでしょう。

+
+
require "parsedate"
+
+puts ParseDate.parsedate(str)
+# [年,月,日,時,分,秒,タイムゾーン,曜日]の配列を返す
+
+

しかし、parsedateは日本でよく用いられる「年月日」形式には対応していませんから、それに対応したものを書いてみましょう。

+
+
num = "(?:[0-9]|[0-9])+"
+re = Regexp.new("#{num}年 ?#{num}月 ?#{num}日", 0, "euc")
+p re
+ARGF.each do |line|
+  p line
+  m = re.match(line)
+  puts m[0] if m
+end
+
+

注意すべき点は、日本語文字列の数字には全角と半角の両方があることと、文字コードが違えばマッチしないことです。ここでは全角半角両方の数字にマッチするパターンnumを埋め込むことで、両方に対応し、Regexp.compileの引数として文字コード名 "euc" を指定しています。

+

これで、

+
+
2002年4月8日
+2002年4月8日
+2002年4月8日
+
+

などを日付として認識できます。

+
+
+

HTMLファイルから「URLのようなもの」を取り出す

+
+

HTMLファイルからURLのように見える部分を切り出すと、簡単なリンク集が作れます。以下のスクリプトは引数で指定したファイルからURLのように見える部分を切り出します。

+
+
ARGF.read.scan(/(?:http|ftp):[^ ")]+/) do |match|
+  puts match
+end
+
+
+
+ +

典型的なスペルミスを探す

+
+

文章を編集しているうちに助詞(「てにをは」のこと)が並んでしまうことがよくあります。たとえば、

+
+
シンプルな文法
+
+

という文章の「シンプル」を「簡潔」に変更するときに、まず「シンプル」を削除した後、思わず「簡潔な」と「な」まで含めて入力してしまうと、

+
+
簡潔なな文法
+
+

という文章が残ります。こういうミスをチェックするのが以下のスクリプトです。

+
+
ARGF.each do |line|
+  print ARGF.file.path, " ", 
+        ARGF.file.lineno, ":", 
+        line if line.gsub!(/([あ-ん])\1/e, '[[\&]]')
+end
+
+

このスクリプトは引数に与えたファイルをチェックして、助詞の重なりのように見える部分を[[ ]]でくくって教えてくれます。行の長さの関係で折り返していますが、特に折り返す必要はありません。これを今月の原稿に適用するとこうなります(図12.1)。

+
+
+
200205.rd 32:後者は少々難しいルール[[をを]]表現していますね。この細部の
+200205.rd 59:     日本語では「私[[はは]]」のような助詞の連結のミスが
+200205.rd 177:後説明する「繰り返し」[[とと]]もに使われます。
+200205.rd 202:[[ここ]]で注意すべき点が2つあります。
+200205.rd 208:なく2個の並びにマッチするこ[[とと]]、文字列中でもっとも
+200205.rd 248:で[[くく]]って「(ma)+」とします。
+200205.rd 413:置、部分マッチ(かっこで[[くく]]られた部分)、そのオフセッ
+200205.rd 461:ものを[[ここ]]で解説しましょう。
+200205.rd 510:  簡潔[[なな]]文法
+200205.rd 686:のうち99%くらいはその[[まま]]動作するよう
+200205.rd 728:とはいうも[[のの]]、長い間「いつかやろう」
+200205.rd 729:と思い[[つつ]]、取り掛からなかったことには
+
+

図12.1●実行結果

+
+

32行目に間違いがありますね。直しとかなきゃ。「ここ」とか「そのまま」など間違いでないものも多数引っかかっていますが、原稿を目で見てチェックするのに比べれば、ずいぶん効率的です。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-026.xhtml b/docs/vol1/xhtml/p-026.xhtml new file mode 100644 index 0000000..e4ac1fa --- /dev/null +++ b/docs/vol1/xhtml/p-026.xhtml @@ -0,0 +1,71 @@ + + + + + +第12章 パターンマッチ + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ 文字コード

+
+

今月はページ数の関係で「知られざるRuby」はコンパクト版でお届けします。

+

誰でも使えるASCIIの範囲内だけで表現できる英語はともかく、他の言語、特に日本語を使う場合には文字コードについてなかなか難しい問題があります。

+

文字コードというのは、おおざっぱにいうと文字に対応する数値(の集合)と、それをデータとしてどのように表現するかという決まりです。コンピュータ上ではすべてのデータは数値の羅列で表現されますから、この「決まり」がわからないと正しく文字を扱うことはできません。ときどき見かける「文字化け」という現象は、送り手と受け手で想定している文字コードが違っていることから発生します。

+

日本で広く使われている文字コードは以下の4つです。

+
    +
  • シフトJIS(SJIS)
    +Windows, Macintosh, Palmなど。

  • +
  • EUC-JP
    +UNIXで広く用いられている。

  • +
  • JIS(ISO-2022-JP)
    +電子メール、ネットニューズなど。

  • +
  • UTF-8
    +XMLなど。

  • +
+

「文字コード」は俗称で、正確には、どの文字がどの整数(コードポイント)に対応するかというマッピングである「文字集合」とその数値をバイト列に変換する「符号化方式」の組み合わせになります。

+

ですから、厳密な話をすればシフトJIS, EUC-JP, JISの3つは文字集合はJIS(JIS x0208)で、それぞれ別の符号化方式を採用しているということです。また、UTF-8は符号化方式の名前で文字集合はUnicodeという規格になります。

+

文字集合と符号化方式は独立した概念ではありますが、ばらばらに組み合わせることはないので、あまり厳密な話をしないときにはほとんどの場合、両方を一緒にして文字コードと呼ぶようです。

+
+

Rubyでの文字コードの扱い

+

さて、Rubyの話に戻りましょう。Rubyは上記の文字コードのうち、SJIS, EUC-JP, UTF-8を扱うことができます。Rubyの各種文字コードの扱いは正規表現がそれらの文字コードにおけるマルチバイト文字を文字として扱うということを意味します。

+

文字コードの指定は以下の4つの方法で行います。

+
+
+
+

未来の文字コードの扱い

+

Rubyの文字コードの扱いには以下の制限があります。

+
    +
  • プログラム全体で1つの文字コードしか扱えない

  • +
  • 決められた文字コードしか扱えない

  • +
+

そこで現在Ruby M17Nという複数文字コードを自由に扱うプロジェクトが進行中です。M17Nはmultilingualization(多言語化)のMとNの間に17文字あることから作られた省略形です。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-027.xhtml b/docs/vol1/xhtml/p-027.xhtml new file mode 100644 index 0000000..d1f6439 --- /dev/null +++ b/docs/vol1/xhtml/p-027.xhtml @@ -0,0 +1,79 @@ + + + + + +第12章 パターンマッチ + + + + +

Matz Essays Volume 1

+ + +
+

◆ Ruby開発日記 ◆ Riteと鬼車の話

+
+

実は先日とうとうRite の開発を始めました。Riteというのは、前にも話したような気がしますが、Ruby 2.0のコードネームです。1993年に0.01から始めて、1996年に1.0、そして現在1.6.8までリリースしたのですが(おや、そういえばまだ1.8.0が出ていませんね(苦笑))、だんだん問題が出てきました。

+
+

ソフトウェアの老化

+

皆さん当然ご存じのように、経年劣化によってだんだん傷んでくるハードウェアと違って、ソフトウェアはただ時間が経ったからといって壊れたりはしません。実際、ソフトウェアの寿命は思ったより長くて、たとえばしばらく前に話題になった2000年問題は、ソフトウェアが開発当時には当然リプレースされているだろうと思われた時期になっても生き残っていたことが原因の一部です。

+

ところが、そういうソフトウェアでも老化するのです。ソフトウェアの老化の原因は大きく分けると以下の2つです。

+ +

開発開始以来9年を経過したRubyは、典型的な後者の症状を呈しています。最初から全部の仕様がわかっていればよかったのでしょうが、少しずつ機能を追加して現在まできているので、あちこちがからまって非常に複雑です。いや、全部ではないんですが、何箇所か大変なところがあるんです。

+
+
+

そこでRite

+

いやあ、それもこれも私にもっと将来的な展望とか、プログラマーとしての才能とかがあればよかったのですが、そもそもない袖は振れません。

+

そこで、長年かけてきて「Rubyとはなんぞや」ということがほぼ明らかになった現時点で、改めて再実装することによって老化を解消することを考えました。これがRuby 2.0、通称Riteです。

+

全体を再実装することから、たぶんRuby 2.0は現在のRubyとはかなり変化することになると思います。それで、Riteという別の名前も用意したわけです。変化するとはいっても、現在存在する大量のRubyプログラムのうち99%くらいはそのまま動作するようにしようと思ってはいますが。

+

まあ、とにかく開発を開始したわけです。で、どこから取り掛かろうかと考えた末、まずは正規表現ルーチンから始めようと考えました。正規表現ルーチンはRubyの中でも複雑すぎる(いわば老化した)箇所の1つです。

+
+
+

正規表現ルーチンの問題

+

現在のRubyの正規表現ルーチンはもともとはGNU Emacsに付属していたもので、それを谷本さんという方が(たしかjgawkのために)マルチバイト化され、それを私が大量に手を加えてPerl 5互換の正規表現を追加し、さらに、よしだむさんがUTF-8対応を追加したという代物です。とりあえず十分動いているのですが、少しだけ問題があります。

+
    +
  • 機能追加を重ねて誰も細部を理解していない

  • +
  • よって、バグが発見されても、なかなか直せない

  • +
  • Rubyのソースの中で正規表現ルーチンだけLGPLでライセンスが違う

  • +
+

これらの問題を一気に解決するために、「いつかは正規表現ルーチンを書き換えよう」とずっと思っていたので、Riteにやる気になったこの機会に正規表現から取り掛かろうと考えました。もう1つの老化箇所であるインタプリタのコアの部分は、正規表現ルーチン以上に迷路のような構成になっていますから、それを避けたというものあるのですが。

+
+
+ +

正規表現ルーチンの実装

+

とはいうものの、長い間「いつかやろう」と思いつつ、取り掛からなかったことにはそれなりに理由があったのです。実際に実装する段になって、自分がいかに正規表現について無知であるかについて思い知らされました。

+

もともと正規表現は正則集合という比較的数学に近い概念から発生していることもあって、数学の能力に欠けている私には困難の極みです。

+
+
+

正規表現ルーチンの勝負

+

そんなこんなでぐずぐずしていたら、こっちは半分もできていないのに、ソフネックの小迫さんから「鬼車」なるコードネームの正規表現ルーチンがリリースされてしまいました。この鬼車は

+
    +
  • Rubyの正規表現互換

  • +
  • M17Nにも対応済み

  • +
  • いくつか直していなかったバグが存在しない

  • +
  • 現在の正規表現ルーチンを置き換えるためのRubyへのパッチも提供されている

  • +
  • Rubyにはなかった(難しくて実装できなかった)look behindが実装されている

  • +
+

などなどとてもかないません。素直に負けを宣言します。Riteの正規表現ルーチンはきっとこの「鬼車」ベースになるでしょう。いや、この完成度ならばもっと早く、1.8で置き換えることもできそうです。

+

というわけで、出来かけの私の正規表現ルーチンは永遠に封印されることになりそうです。残念。とはいえ、これで懸案のLGPLの問題も解消され、私は楽しみを失った代わりに、苦労をしなくて済んだのでよかったと思うべきなんでしょう。

+

しょうがないので、私は残るもう1つ、インタプリタコアに挑戦することにしましょう。こっちもぐずぐずしてたら、他の人に負けちゃうかもしれません。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-028.xhtml b/docs/vol1/xhtml/p-028.xhtml new file mode 100755 index 0000000..df77269 --- /dev/null +++ b/docs/vol1/xhtml/p-028.xhtml @@ -0,0 +1,594 @@ + + + + + +第13章 入出力 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay13 +
+

+初等Ruby講座
+入出力 +

+
+

[Linux magazine, 2002年6月号]

+
+

今回は入出力についてです。Rubyが主にスクリプト言語として使われていた頃は超重要な機能でしたが、Webアプリケーション開発が中心になった現在では、昔ほどは使われませんね。

+

後半は、その超重要な入出力機能を「ちゃんと」実装しようとすると移植性が問題になるという話です。当時は今よりもずっとOSのバリエーションが多く、POSIX規格も充実していなかったので、OSごとの細かな挙動の差が大きかったのです。移植性のある処理系を実装しようとすると、いろいろなところを自前で実装せざるをえません。Rubyは挙動が統一されていない標準ライブラリ関数の一部は再実装しています。現代では、OSの種別はLinuxなどのUNIX系と、かなりUNIXふうのmacOSと、Windowsくらいでほとんどカバーできてしまうので、だいぶ楽になりました。もっとも、macOSはUNIXふうなのに妙なところで独自性を出してくれるし、Windowsは根本的なところでOSの作りが違うので、バリエーションの少なさの割に楽になっていないとも言えます。

+
+
+

普通のプログラムは入力を受け取り、出力を行って初めて意味のある処理を行います。いわば入出力はプログラムの本質に非常に近い部分だといえるでしょう。今月はそのプログラムの重要な要素である入出力について学びます。

+
+
+

入力と出力

+
+

ほとんどのプログラムは入力を受け付けます。入力のないプログラムはごくわずかでしょう。たとえば、乱数によって占いを表示するプログラムなどには入力はないでしょうが、そういうのはごく少数でしょう。

+

プログラムの入力元には以下のようなものがあります。

+
+
    +
  • コンソール入力(キーボード)

  • +
  • ファイル入力

  • +
  • ネットワーク(ソケット)

  • +
  • GUI(ボタン、テキストフィールド、メニュー、etc.)

  • +
+

このうちGUIからの入力を除けば、UNIXおよびその影響を受けたOSでは、入力は「ストリーム」として統一的に操作されます。ストリームとはバイト列(文字列と言い換えてもよいです)を次々読み込むことのできるものです。

+

一方、プログラムの出力先といえば、以下のようなものでしょう。

+
    +
  • コンソール出力

  • +
  • ファイル出力

  • +
  • ネットワーク(ソケット)

  • +
  • GUI

  • +
+

これらも(GUIを除けば)同じストリームで表現できます。出力ストリームは入力ストリームのちょうど逆で、文字列を次々書き出すことができるものです。

+
+
+

ストリーム

+
+

ストリーム(stream)は「流れ」という意味です。文字が次々と送り出されていく様子を表現しているわけです。たとえば、キーボードからの入力を受け、コンソールに出力するということは図13.1のようなイメージになるわけです。

+
+ +
+ fig1301 +
+

図13.1●コンソール入出力

+
+

ストリームは単なる文字の流れですから、ストリームから入力を受け、ストリームに出力するプログラムならいくらでもつなげることができます(図13.2)。

+
+ +
+ fig1302 +
+

図13.2●ストリームの連鎖

+
+ +

このようなストリームに対して入出力を行うプログラムをフィルタと呼びます。流れを加工するイメージですね。また、フィルタプログラムの連鎖を「パイプライン」あるいは省略して「パイプ」と呼びます。

+

ストリームはUNIX系OSでの入出力の基本になります。ストリームのすごいところは、入力元や出力先の種別にかかわらず同じインターフェイスが使えることです。入力しているのが人間であるのか、ファイルであるのか、あるいはネットワークの先のプログラムであるのか、そのようなことにはまったく関係なしにバイトの流れという形式でデータを取り扱えます。なんとなくオブジェクト指向をほうふつとさせます。

+
+
+

標準入出力

+
+

さて、このようなプログラム間でのストリームのつなぎ換えを行うためには、それぞれのプログラムがある種の決まりごとに従う必要があります。その決まりごととは「入出力を標準入出力に対して行う」というものです。

+

標準入出力とはOSが各プログラムのために用意している入出力先です。すべてのプログラムには以下の3つのストリームが用意されています。

+
+

stdin

+

標準の入力元です。通常はキーボードからの入力を受け付けるようになっています。Rubyでは定数STDINで参照することができます。

+

stdout

+

標準の出力先です。通常はコンソール画面に向けられています。Rubyでは定数STDOUTで参照することができます。

+

stderr

+

標準のエラーメッセージの出力先です。標準出力同様、通常はコンソール画面に向けられています。Rubyでは定数STDERRで参照することができます。

+
+

標準入力からデータを受け取り、標準出力にデータを出力するプログラムはフィルタになることができます。フィルタの詳しい作り方についてはのちほど説明します。

+
+
+

IOクラス

+
+

Rubyでストリームを表現するクラスがIOです。まず、IOクラスのオブジェクトが持つメソッドの一覧を表13.1に示します。そのサブクラスとしてファイルとのIOを表現するFileクラスもあります。Fileクラスのオブジェクトが持つメソッドの一覧を表3.2に示します。

+ +
+

表13.1●IOオブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
<<writepos=ファイルポインタの設定
binmodeバイナリモードprint出力
closeクローズprintfフォーマット付き出力
close_read読み込みのクローズputc1文字出力
close_write書き込みのクローズputs1行出力
closed?クローズされているかread固定長入力/全読み込み
eacheach_linereadchar1文字入力
each_byte各バイトに対する繰り返しreadline1行入力
each_line各行に対する繰り返しreadlines全ファイルを配列として読み込み
eof?ファイルの終端に達したかreopen再オープン
fcntlfcntl(2)rewindファイルポインタを先頭に移動
filenoファイルディスクリプタ番号seekファイルポインタの移動
flush出力のフラッシュstatファイル情報の取得
getc1文字入力sync自動フラッシュモードの状態
gets1行入力sync=自動フラッシュモードの設定
ioctlioctl(2)sysreadread(2)
lineno行番号syswritewrite(2)
lineno=行番号の設定tellファイルポインタの位置
pidプロセスIDtty?接続先がttyか
posファイルポインタの位置write文字列出力
+
+
+

表13.2●Fileオブジェクトのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
atime最終アクセス時間
chmodモード変更
chownオーナー変更
ctime最終i-node更新時間
flockロック
lstatシンボリックリンク情報
mtime最終更新時間
pathファイルのパス
truncateファイルの切り詰め
+
+

IOにはその他にもネットワークとのアクセスを行うサブクラス(群)があります。IOとそのサブクラスを図13.3に示します。

+
+ +
+ fig1303 +
+

図13.3●IO 関係クラス

+
+
+
+ +

ファイルのオープン

+
+

標準入出力以外のストリームを使うには、ストリームをオープンしてIOオブジェクトを入手する必要があります。ストリームをオープンする基本的なメソッドがopenメソッドです。openメソッドについては、この連載の第1回(2001年11月号)で詳しく取り上げたので、ここでは簡単に説明します。

+

openメソッドは次のように呼び出します。

+
+
open(path[, mode])
+
+

openpathに指定されたファイルをオープンして対応するIOオブジェクトを返します。より正確にはファイルのパスを指定した場合にはIOクラスのサブクラスであるFileクラスのオブジェクトを返すのですが、実用的にはIOオブジェクトだと思って扱ってかまいません。

+

modeには以下のうちのいずれかの文字列を指定します。

+
    +
  • "r" 読み込み用
  • +
  • "w" 書き込み用
  • +
  • "a" 追加書き込み用
  • +
+

モード文字列に "b" を追加するとバイナリモードになります。でも、UNIX系OSでは通常モードとバイナリモードの間に差はありません。Windowsとスクリプトを共有する場合の互換用と考えればよいでしょう。

+

モード文字列に "+" を追加すると、読み書きモードになります。ただし、読み書きモードでは、読み出しと書き出しの間にflushを入れないと正しく入出力されません。

+

openメソッドでは、pathの先頭が "|" であった場合、ファイルではなくプログラムとの入出力になるのですが、そのような特殊な動きを避けたい場合にはFile.openメソッドを使ってください。こちらのメソッドではpathは必ずファイルへのパスと解釈されます。

+
+
+ +

入力メソッド

+
+

まず、一番基本的な入力メソッドは1行入力と1文字入力でしょう。1行入力を行うメソッドはgetsreadlineです。なぜ2つあるのかというと、これらはファイルの終端に達したときの動作が違うのです。getsはファイル終端でnilを返しますが、readlineは例外を返します。ですから、使い方はそれぞれ、

+
+
# getsの場合
+while line = io.gets
+   ... line に対する処理 ...
+end
+
+# readlineの場合
+begin
+  loop do
+    line = io.readline
+    ... line に対する処理 ...
+  end
+rescue EOFError
+  ...終了処理、必要なければ空 ...
+end
+
+

という形になります。多くのRubyユーザーは(短いので)getsを好むようです。

+

1文字入力メソッドにもgetcgetcharの2つがあります。これらも違いはファイル終端で例外を発生するかどうかです。

+

場合によっては、ファイル全体を一度に読み込んできたほうが楽に処理できます。特にファイルのサイズがあまり大きくない場合にはかえって高速になることさえあります。その目的のメソッドがreadlinesです。readlinesはファイルを行単位で読み込んできて、全体を配列に入れて返します。ですから、ファイルの5行目だけがほしければ、

+
+
io.readlines[4]  # 0から始まるので4
+
+

で得られるわけです。このやり方だとファイルの内容を全部読み込んできちゃうんで、ちょっともったいないですけどね。

+

同じファイルの内容を全部読むのでも、行単位ではなく1つの大きな文字列として読み込んできたい場合もあります。その場合にはreadメソッドがあります。

+
+
io.read         # 全体を文字列として返す
+
+

また、readメソッドに引数を指定するとその長さだけ読み込んできます。

+
+
io.read(10)     # 10バイトだけ読む
+
+
+

入力処理にはブロックを使う方法もあります。行単位、文字(バイト)単位の処理をメソッドが用意されています。

+
+
# each_lineは行単位で読み込む
+io.each_line {|line|
+  ... line に対する処理 ...
+}
+
+# eachはeach_lineの別名
+io.each {|line|
+  ... line に対する処理 ...
+}
+
+# each_byteはバイト単位で読み込む
+io.each_byte {|byte|
+  ... byte に対する処理 ...
+}
+
+

最後に、readシステムコールを直接呼ぶメソッドsysreadを紹介しておきます。

+
+
io.sysread(5)   # 5バイト読み込む
+
+

sysreadメソッドはIOオブジェクトが内部で行っているバッファリングなどをいっさい経由しないで直接readシステムコールを呼び出します。ですから、他の入力メソッドとは混在できません。他の入力メソッドを使ったストリームに対してsysreadを行うとエラーになります。

+
+
+

出力メソッド

+
+

出力メソッドも豊富に用意されています。まず、最もよく使われるのがprintメソッドです。printメソッドは引数に与えられたオブジェクトを順に出力します。文字列でないオブジェクトは、それぞれのto_sメソッドを使って文字列化されます。ただし、なぜかnilだけは特別扱いされてnilが出力されます(nil.to_s"" を返すのに)。

+
+
io.print "abc\n"    # => abc<改行>
+io.print nil, "\n"  # => nil<改行>
+
+

書式付き出力にはC言語同様printfを使います。イメージとしてはC言語のfprintfの第1引数がRubyのprintfメソッドのレシーバになるという感じでしょうか。

+
+
# Cのfprintf
+fprintf(stderr, "%d\n", 5);
+
+# Rubyのprintf
+STDERR.printf("%d\n", 5)
+
+
+

1文字出力にはputcを使います。そういえば、Rubyのプログラムではあまりputcが使われているのを見ませんね。1行出力にはputsを使います。putsメソッドは出力の末尾に改行を付けます。

+
+
io.puts("abc")
+# 出力:
+#  abc
+
+io.puts("abc", "def")
+# 出力:
+#  abc
+#  def
+
+io.puts("abc\n")  # 改行は一度だけ
+# 出力:
+#  abc
+
+

出力の中で一番基本となるのがwriteメソッドです。writeメソッドは引数の文字列をそのまま出力します。writeにはC++ファンのために“<<”という別名が用意されています。

+
+
io.write("abc")
+io << "abc"
+
+

最後に、入力にsysreadがあったように、出力にもシステムコールを直接呼び出すsyswriteがあります。sysread同様、syswriteも他の出力メソッドと混在してはいけません。他の出力メソッドを使ったストリームに対してsyswriteを行うと警告を受けます。

+
+
+

クローズ

+
+

オープンしたファイルを使い終わったらクローズします。クローズするにはcloseメソッドを使います。

+
+
io.close
+
+

ただし、IOオブジェクトは、プログラムの終了時と、もうどこからも参照されなくなったときに自動的にクローズされます。

+

では、クローズする必要はないのでしょうか。残念ながらそうはいかない場合もあります。クローズしないとバッファの内容が実際に書き込まれていない可能性があります。フラッシュという操作(あとで説明します)で、バッファの内容を書き出す必要があります。もちろん、クローズしないでフラッシュだけするっていうのもありえますが、それもなんだか気持ち悪いですよね。わざわざフラッシュするくらいならクローズすればよいわけですし。

+

自動的にクローズする方法はもう1つあります。openメソッドはブロックを取ると、ブロックの実行が終了したときにクローズしてくれます。

+
+
+
open(path) do |f|
+  ...
+end
+
+

IOがクローズされているかどうかはclosed? メソッドで判定できます。

+
+
+

バッファリングとフラッシュ

+
+

ストリームへの実際の書き込みは(UNIX系OSでは)writeというシステムコールで行われます。また、読み込みはreadというシステムコールで行われます。

+

これらのシステムコールは実はかなりコストの高い処理なのです。UNIXのようにカーネルとユーザープログラムで異なるメモリ空間で動作しているOSでは、カーネル空間とユーザー空間とでメモリ空間の切り替えが毎回発生しますし、引数となるデータを空間を超えてコピーする必要があります。

+

そこでこのコストのかかるシステムコールの呼び出しを削減する必要があります。それがバッファリングです。読み込みも書き込みも一度バッファを経由します。

+

IOからの読み込みが発生すると、まずバッファに一度に読み込みます。そして個々の読み込みに対して、バッファから少しずつ読み出します。バッファが空になるとまた一度に読み込みを行います。これによってreadシステムコールの削減を行うことができるわけです。

+

書き込みの場合には個々の書き込みをバッファに書き込みます。バッファからの実際の書き込みはある程度まとめて「適当な」タイミングで行われます。

+

読み込みは必要に応じて、OSから読んでくるのであまり問題が起きにくいのですが、書き込みのほうは「適当な」タイミングが予想と食い違う場合がありえます。書き出したはずのデータが届いてないということもありえるわけです。そこでバッファの内容を書き出す方法も提供されています。

+

バッファの内容を明示的に書き出すためには、2つの方法があります。1つはIOをクローズすることです。ただ、クローズしてしまうと(当然ですが)これ以上の書き込みはできません。もう1つの方法はflushメソッドを使うことです。

+
+
io.print "abc"  # バッファへの追加
+io.flush        # バッファの内容を書き出し
+
+
+
+

ランダムアクセス

+
+

ストリームは順に読み込んでくるだけですから、シーケンシャル(順次)アクセスと呼ばれます。しかし、ときどきファイルの場所を指定して読みたいケースもあります。

+

各ストリームには現在読み込んでいる場所を示す「ファイルポインタ」があります。そのポインタを操作することで、読み込み位置を移動させてファイルをランダムアクセスすることができます。

+

現在のファイルポインタを取得するためにはtellメソッド、またはposメソッドを使います。

+
+
io.tell   # 現在のファイルポインタ
+io.pos    # 同上
+
+
+

特定の位置にファイルポインタを移動させるためには、pos= メソッド、またはseekメソッドを使います。

+
+
p = io.pos    # ファイルポインタのセーブ
+... ioに対する処理 ...
+io.pos = p    # pos=メソッドの呼び出し
+              # 元の位置への復旧
+
+

seekメソッドはpos= メソッドと同じように使えますが、第2引数として、移動の基点を指定できます。移動の基点は定数で指定し、その意味は、

+
+
IO::SEEK_SET  先頭から
+IO::SEEK_CUR  現在位置から
+IO::SEEK_END  ファイル末尾から
+
+

になります。

+

ファイルポインタを先頭に移動させるためにはrewindメソッドを使います。

+
+
io.rewind                # 先頭へ巻き戻し
+io.pos=0                 # 同じ意味
+io.seek(0)               # 同じ意味
+io.seek(0,IO::SEEK_SET)  # 同じ意味
+
+

ランダムアクセスの利用例はあまり見かけないので、実例を紹介しておきましょう。以下のプログラムはn番目の固定長レコードの内容を変更します。レコードサイズは定数RECORD_SIZEに定義されているとします。

+
+
io.fseek(n*RECORD_SIZE)
+rec = io.read(RECORD_SIZE)
+... recの内容を修正; サイズを変えないこと ...
+io.fseek(n*RECORD_SIZE)
+io.print rec    # recを出力
+io.close        # ファイルをクローズ
+
+
+
+

フィルタ

+
+

さて、先に標準入力から読み込み、標準入力に書き出すプログラムはフィルタと呼ばれると書きました。フィルタというのはPerl以前AWKやシェルの頃からスクリプト言語の重要な適用分野でした。ここでフィルタについて少々詳しく説明しておきましょう。

+

UNIXにおいては、ほとんどのフィルタは以下の性質を持っています。

+
+

たとえば、フィルタの代表格catは、

+
+
cat
+
+

では、標準入力から読み込み、標準出力に書き出します(だから、あまり意味がない)。複数の引数を指定すると、

+
+
cat foo bar baz
+
+

それらのファイルの内容を順番に標準出力に書き出します。オプションを付けると、ちょっとだけ動作が変化します。

+
+
cat -n foo bar baz
+
+

で行番号を付けて出力します。

+

Rubyではこのようなフィルタの性質を支援する機能が提供されています。それがARGFです。ARGFは「引数で指定したファイルから構成される仮想的なファイル」です。引数が指定されなかったときはARGFは標準入力から読み込みます。ほら、フィルタの性質をそのまま実現してくれてますよね。

+

ARGFは厳密にはIOクラスのオブジェクトではありませんが、IOクラスのメソッドのほとんどを持っています。先ほどのcatの動作は、

+
+
ARGF.each{|line| print line}
+
+

で実現できます。行番号を付けたければ、

+
+
ARGF.each{|line| printf "%6d  %s", ARGF.lineno, line}
+
+

です。簡単でしょう?

+
+
+

ファイルのロック

+
+

複数のプロセスが同時に同じファイルにアクセスしようとする場合、トラブルが発生する場合があります。図13.4に示したのは典型的なWebのカウンタの処理です。

+
+ +
+ fig1304 +
+

図13.4●Webカウンタの処理と競合

+
+

カウンタプログラムはCGIとして起動されますから、複数同時に起動されることもありえます。さて、ここで仮にカウンタファイルには数値「10」が書き込まれているとしましょう。カウンタプログラムが起動され、(b) の処理で10が読み込まれます。さて、この瞬間に誰か別の人がこのページにアクセスしカウンタプログラムが起動されたとすると、最初のプログラムが (e) の処理で11を書き込む前に、こちらも10を読み込んでしまう可能性があります (h)。そうすると後のプログラムは前のプログラムが書き込んだ11を上書きしてしまい (k)、最初のアクセスはなかったことになってしまいます。

+

この問題を避けるためには、数値を読み込んでから新しい値を書き込む間は、他のプログラムに読み込みを待ってもらう必要があります。それを実現するのがflockメソッドです。

+ +

Fileクラスのflockメソッドを実行すると、そのファイルがロックされます。ロックされたファイルを別のプログラムがロックしようとすると、ロックが解放されるまでそのプログラムは停止します。

+
+
f = open("/var/lib/www/count.dat", "r+")
+f.flock(File::LOCK_EX)  # ロック
+n = f.read.to_i + 1     # 読み込みと1増加
+f.rewind                # 先頭に巻き戻し
+f.print n               # 出力
+f.flock(File::LOCK_UN)  # アンロック
+
+

これで上記の問題は解決です。

+
+
+

アクセス権

+
+

さて、ここまでで基本的な入出力操作は説明してきましたが、最後にファイルのもう1つの性質であるアクセス権について説明しておきましょう。

+

まず、各ファイルにはオーナー(所有者)とグループ(所属グループ)という属性があります。それから、誰がアクセスできるかというアクセス権という属性があります。

+

アクセス権は、ファイルにアクセスするユーザーを、そのファイルの所有者、そのファイルのグループに所属するユーザー、それ以外のユーザーの3種類に分類し、それぞれに対して、読める、書ける、実行できるの3種類の操作に対して許可したり、禁止したりできます。たとえば、あるファイルを読み出すためには、ファイルのアクセス権について以下の条件のいずれかが成立している必要があります。

+
    +
  • オーナーに対する読み出し権が設定されていて、自分がそのファイルのオーナーである

  • +
  • グループに対する読み出し権が設定されていて、自分がそのファイルのグループに所属している

  • +
  • その他のユーザーに対する読み出し権が設定されている

  • +
+
+

アクセス権を設定できるのは3種類のユーザーに対してそれぞれ3種類の操作なので3×3で9通りの許可があります。この許可状態を表現するために、

+
+
rwxr-x---
+
+

のように表現することがあります(たとえばlsの出力)。これは3文字ずつグループ化して、オーナーに対しては読み込み(r)、書き込み(w)、実行(x)のそれぞれを許可するが、グループのメンバーに対しては読み込みと実行だけ、それ以外のユーザーに対しては何も許可しないというふうに読みます。

+

よりコンパクトな表現として、8進数を使って同じ許可状態を、

+
+
750
+
+

とも表現します。これは8進数の数字1桁が3ビットであることを利用しています。1番目の数字はオーナーに対するアクセス権を意味します。7は2進数でいえば111でこれはすべての操作が許可されていることを示します。2番目の数字5は2進数で101で、これはグループのメンバーに対して読み込みと実行だけが許可されていることを示します。3番目の数字0は当然000ですからその他のユーザーに対してはすべての操作が禁止されていることを示します。

+

Rubyにおいてアクセス権を調べたり、変更したりするメソッドは以下のとおりです。

+
+
stat = f.stat   # アクセス権を含む属性を得る
+stat.mode       # アクセス権
+stat.readable?  # 読み込めるか
+stat.owned?     # 自分のファイルか
+f.chmod(0750)   # アクセス権を変更
+
+

誰からでも書き込みできるファイルは信頼できないユーザーによって書き換えられているかもしれません。そこで、重要な情報を読み込むときにはそのファイルのアクセス権が安全かどうかをチェックするとよいでしょう。

+
+
# pathからファイル情報を得る
+stat = File.stat(path)
+# 以下の条件のいずれかが成立するときには安全でない
+if !stat.owned? or  # 自分のファイルでない、
+   stat.mode & 022  # 自分以外から書き込み可
+
+   ... 安全でないのでエラーにする ...
+end
+
+
+
+

まとめ

+
+

今月は入出力を司るIOクラスについて説明しました。だんだんRubyプログラミングの基礎部分についての解説が進んできました。そろそろ、応用的プログラミングについても説明できるかもしれません。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-029.xhtml b/docs/vol1/xhtml/p-029.xhtml new file mode 100644 index 0000000..12ef392 --- /dev/null +++ b/docs/vol1/xhtml/p-029.xhtml @@ -0,0 +1,29 @@ + + + + + +第13章 入出力 + + + + +

Matz Essays Volume 1

+ + +
+

◆ 知られざるRuby ◆

+
+

今月の「知られざるRuby」はお休みです。

+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-030.xhtml b/docs/vol1/xhtml/p-030.xhtml new file mode 100644 index 0000000..1eb546d --- /dev/null +++ b/docs/vol1/xhtml/p-030.xhtml @@ -0,0 +1,67 @@ + + + + + +第13章 入出力 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ stdioの憂鬱ゆううつ

+
+

今回取り上げたIOクラスはstdioをベースに実装されています。stdioはC言語の規格で定義された入出力ですから、これを使っていればC言語のフルセットが使えるところではどこでも動作するわけです。組み込み環境などではstdioが提供されない場合もありますが、それはしょうがない話です。

+

ところが、なかなか世の中は甘くないんですよね。Rubyのような複雑なソフトウェアを実現しようとなるとstdioにもいろいろな問題があるのです。

+

まず第一に問題になるのが機能が足りないという点です。Rubyではユーザーレベルスレッド機能を提供していますが、そのためにIOのバッファに読み込まれたデータがあるかどうかを判定する必要があります。ところがこの機能はstdioには定義されていません。しかたがないので、Rubyではプラットフォームごとにバッファが空かどうかを判定するルーチンを用意しています。

+

次の問題が、OSごとに微妙に動作が異なる点です。たとえば、読み込みと書き込み両方のモード("r+"など)でオープンされたIOに対して、読み込みと書き込みの間にflushを行わないと問題があるOS(HP-UXとか)と問題ないOS(Linuxとか)があるのです。どこでもできるだけ同じように動作してほしいスクリプト言語としてはできるだけ動作をそろえたいところです。

+

最後の問題が、これも動作の違いの一部ですが、ロケール(国際化)の対応がまちまちだということです。Ruby自身はロケールを使っていないので、実はロケール対応はないほうがよいのですが、なかなかそうもいきません。たとえばヨーロッパの一部では小数点に","を使い、数字の3桁ごとの区切りに"."を使います。日本やアメリカのちょうど反対ですね。

+
+
printf "%f\n", 1000.5
+
+

を実行して

+
+
1.000,5
+
+

などと書かれても、動揺してしまいます。

+
+ +

fnmatchの悪夢

+

このような問題はstdio以外にもたくさんあります。その一例はfnmatchです。fnmatchというのはワイルドカードのマッチングを行うライブラリ関数ですが、実はこの関数の挙動はOSごとに微妙に違います。たとえばSolarisでは[^T]のようなTでない文字を表現するパターンが使えません。

+

そこでとうとうRubyでは、わたなべひろふみさん(ebanさん)作のfnmatchを自分で持つことにしました。

+

これで、どのOSでも同じ挙動のワイルドカードマッチが使えてハッピーなのですが、なんとなくこのままほとんどの関数について独自に提供していくことになってしまうのではないだろうか、と考えると少々恐くなってしまうのです。

+
+
+

移植性の実現

+

UNIX系OSの宿命として、ソフトウェアの移植性というのは重要な課題でした。UNIXとひとくちにいってもベンダーが違えばCPUもまちまちでしたから、コンパイルしたバイナリを配布するというわけにはいきません。そこでソフトウェアの配布は当然のようにソースコードが中心になりました。個人的にはUNIXでフリーソフトウエアあるいはオープンソースソフトウェアが発展した理由の1つは、このソースコードでの配布ではないかと思っています。いや、それともフリーソフトウエアだからこそソースコードで配布できたと考えるべきかな。ニワトリが先か、タマゴが先か。

+

それはともかく、ソースコードで配れば後は解決というわけにはいかないのが悲しいところです。OSごとにライブラリ関数があったりなかったり、名前が違ったり、あるいは最悪のケースでは同じ名前でも動作が違ったりするのです。結局は個別対応するしかありません。BSDではこの関数はある、SunOSでは名前が違うとか。

+
+
+

autoconfの光明

+

そこにさっそうと登場したのはautoconfというツールです。autoconfというのは、OSごとの違いを検出するプログラムを自動生成してくれるツールです。今まではOSの名前を見てチェックする必要があった部分を、実際にチェックを行って、この関数があれば使い、なければ別の対応を行う、といった書き方ができるようになったのです。

+

これまでのやり方では新しいOSへの対応はゼロから始める必要がありましたが、autoconfを使えば、検出プログラム(シェルで書かれています)を走らせることさえできれば、まったく新しいOSでもそのままコンパイルできる可能性が格段に高くなったのです。ちょっと幸せ。

+

というわけで、autoconfのおかげで少しだけ幸せになった移植性プログラミングなのですが、チェックする項目が減ったわけではありません。autoconfの入力となるconfigure.inというファイルがあるのですが、Rubyの場合全部で1155行あります。テスト項目はLinuxにおいて216項目にのぼります。テストはOSのチェックからヘッダーファイル、関数の存在チェック、構造体のメンバーチェックなどさまざまです。

+

こんなにテストするのーって感じですが、Rubyのような言語の場合しかたがないのかもしれません。結局はOSのほとんどの機能を呼び出しているのですから。

+
+
+ +

マルチプラットフォームのいばらの道

+

しかし、RubyはUNIX系OSだけで動作するわけではありません。WindowsやBeOS、OS/2でも動作します。また最近VMS対応が追加されました。X68000対応はずいぶん以前からあるのですが、まだ動くのでしょうか。このような私自身が使ったこともないOSにおいては、ユーザーからのフィードバックがすべてです。RubyがここまでいろいろなOSの上で動くのも皆さんのおかげなのです。みなさま、どうもありがとうございます。

+

みなさまのおかげで私はLinuxでの開発に専念できます。そうです。私はLinuxしか使っていません。私の持ってるPCはどれもLinuxしか走っていません。ときどきWordファイルを送りつけられて困っていたのですが、OpenOfficeのおかげでなんとかなりそうです。たまにはいいこともあるのね。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-031.xhtml b/docs/vol1/xhtml/p-031.xhtml new file mode 100644 index 0000000..5fc2efd --- /dev/null +++ b/docs/vol1/xhtml/p-031.xhtml @@ -0,0 +1,704 @@ + + + + + +第14章 数と電卓 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay14 +
+

+初等Ruby講座
+数と電卓 +

+
+

[Linux magazine, 2002年7月号]

+
+

Rubyの数クラスについてです。ご存じの方もいらっしゃるでしょうが、私は数学が大変苦手です。ですから、数値計算関係の実装をするときには大変困ります。幸い、Rubyコミュニティには数学が得意な人がたくさんいるので、みなさんの助けを借りてなんとか実装しています。これは20年前も今も変わらない点です。Rubyの数クラスで自慢したい点は、coerceシステムです。Rubyの他のクラスと比べて、数クラスに特徴的なことは、クラスごとにカバーしている範囲が異なることと、混合した演算が許されていることです。既知のクラスだけならばあまり問題にならないのですが、新しい数クラスを導入したときに、既存の数クラスとの相互変換を簡潔に扱うことは困難な課題です。coerceはそれをきれいに表現できる仕組みです。普通のユーザーは新しい数クラスを定義することはありませんし、めったに見ることのない部分ではありますが、Rubyではこんな目立たない部分でも一生懸命設計されている1つの例です。coerceシステムは、書籍『オブジェクト指向スクリプト言語Ruby』の共著者である石塚圭樹のアイデアに基づいて設計されました。

+

この章では、日本語入力システムについても紹介しています。私の使っている「きゅうり改」ですが、20年経った今でも使っています。ただし、当時利用していた日本語変換システム「かんな」は使えなくなってしまいましたので、今は「fcitx + mozc」で日本語入力しています。他にユーザーはいないようですが。雑誌掲載時にはCD-ROMに設定ファイルを収録してもらいましたが、今回はクラウドへのリンクを用意しました。以下のURLからmozc.tblというファイルをダウンロードし、mozcのローマ字テーブルとして読み込むと、mozcで「きゅうり改」が使えるようになります。

+
    +
  • https://tinyurl.com/3e244k9r

  • +
+
+
+

コンピュータの本来の意味は「計算機」で、数の計算は得意中の得意です。今月はRubyにおける数の扱いを見てみましょう。

+
+
+ +

はじめに

+
+

最近、コンピュータを何に使ってますか。私の場合は、メールの読み書きやWebのブラウズ、プログラミング、それから忘れちゃいけない原稿書きが主な使い道です。おかげで、ときどきコンピュータが計算機であることを忘れて、計算するために電卓を探したりすることさえあります。かっこわるい。

+

Rubyも計算機上のプログラミング言語ですから、もちろん数の扱いは得意です。Rubyの数は図14.1のようなクラスで表現されます。

+
+ +
+ fig1401 +
+

図14.1●数のクラス階層

+
+

図14.1を見ると、クラス階層が浅めのRubyにしては継承が活用されているのがわかります。これは歴史的に数学の世界が数の構成について一種の継承のような分類を行ってきたことをある程度反映しています。数には整数(Integer)があり、それとは別に小数点以下も表現できる浮動小数点数(Float)もあります。

+

整数には一定の範囲内(2の30乗程度まで)の整数を表現するFixnumクラスと、それ以上の数を表現するBignumクラスとがありますが、これはむしろ実装の都合で、普段は気にする必要はありません。Rubyは整数の値に応じて勝手に変換してくれます。

+

ですから、たとえば2の100乗なども簡単に計算できます。

+
+
puts 2**100  # => 1267650600228229401496703205376
+
+

浮動小数点数は小数点以下も表現できます。1.5とか3.14とかですね。算数で実数と呼んでいるものに相当します。ただし、コンピュータの中では2進法で計算していたり、有効な桁数に限界があったりする関係で、誤差が発生します。電卓で1÷3×3が0.99999999になったりするようなものです。浮動小数点数を扱うときにはいつも誤差に気を付ける必要があります。絶対にしてはいけないことは、2つのFloatを「==」演算子で比較することです。同じように見えてもほんのわずかのずれで同じと判定されないことがあります。2つのFloatの差が一定以下かどうかという判定を使うか、いっそ「<」や「>」を使った別の条件に変える必要があります。

+
+
+

数の表現

+
+

Rubyのプログラムの中での数値の表現はいくつもあります(表14.1)。

+ +
+

表14.1●数値表現

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称
整数(10進)12341234
2進整数0b101111
8進整数01234668
16進整数0x12344660
浮動小数点数1.2341.234
指数表示浮動小数点数1.23e31230.0(1.23×10の3乗)
文字コード?a97('a'のASCIIコード)
コントロールコード?\C-a1(Control-Aのコード)
メタコード?\M-a225(aのコード97|0x80
コントロールメタコード?\C-?\M-a129(Control-Aのコード1|0x80
+
+

数値表現の数の並びにはアンダースコア('_')を含めることができます。たとえば、読みやすさのために整数を3桁ごとに区切る目的に使えます。

+
+
1_234_567   # => 1234567
+
+
+
+

算術演算

+
+

数に対する小学生の頃からおなじみの演算はもちろん提供されています。他のプログラミング言語でもだいたい同じですが、「×」の代わりに「*」が、「÷」の代わりに「/」が使われます。あと、剰余(余り)を求める演算子「%」と、べき乗を求める演算子「**」があります。

+
+
p 1 + 1   # => 2
+p 3 - 2   # => 1
+p 2 * 4   # => 8
+p 6 / 3   # => 3
+p 5 % 2   # => 1
+p 3**10   # => 59049
+
+

べき乗に「^」演算子を使う言語もありますが、Rubyでは「^」は別の意味を持ちますから、注意してください。

+

整数同士の算術演算の結果は整数、両辺いずれか(あるいは両方)が浮動小数点数である算術演算の結果は浮動小数点数です。整数同士の演算の場合、割り算の結果も整数になることに注意してください。ですから、

+
+
p 5 / 2     # => 2
+
+

になり、2.5にはなりません。2.5がほしければ、

+
+
p 5 / 2.0   # => 2.5
+
+

とする必要があります。

+

余りについても少々追加説明が必要です。余りを求めるメソッドは実は4つあります。

+
+
    +
  • x.divmod(y)    xyの商と余りの両方を返します
  • +
  • x % y          xyの余り(modulo)を返します
  • +
  • x.modulo(y)    「%」演算子と同じです。
  • +
  • x.remainder(y) xyの余り(remainder)を返します
  • +
+

divmodメソッドの返す商(q)と余り(r)の間には、

+
+
x = y * q + r   (ただしrの符号はyの符号と等しい)
+
+

という関係があります。「%」演算子とx.modulo(y)は、x.divmod(y)の余りの部分だけを返します。

+

一方、remainderrの符号がxと等しい余りを返します。ですから、remaindermoduloは負の数を含む演算で違いが現れます。

+
+
(13.modulo(4))         # =>  1
+(13.remainder(4))      # =>  1
+(13.modulo(-4))        # => -3
+(13.remainder(-4))     # =>  1
+((-13).modulo(4))      # => -3
+((-13).remainder(4))   # => -1
+((-13).modulo(-4))     # => -1
+((-13).remainder(-4))  # => -1
+
+
+
+

ビット演算

+
+

コンピュータは数を01の並び(ビット列)として扱います。たとえば、整数の5は101というビット列で表現されています。このビット列に対する操作は以下のものが用意されています。

+
    +
  • |  ビットor
  • +
  • &  ビットand
  • +
  • ^  ビットxor
  • +
  • << 左ビットシフト
  • +
  • >> 右ビットシフト
  • +
  • ~  ビット反転
  • +
+

ビット単位での論理和を求めるのがビットorで、ビット単位での論理積がビットandです。

+
+
0b101 | 0b1100
+
+

は2進数での各桁(ビット)ごとにいずれかが1であるビットが1になり、結果は0b1101(10進では13)になります。両辺のビット列の長さが違う場合には右端でそろえて演算し、足りないビットは0であるとみなします(正の数の場合)。

+

一方、ビットandでは両方ともが1であるビットだけが1になり、

+
+
0b101 & 0b1100
+
+

の結果は0b100(つまり10進の4)になります。

+
+

xorは排他的論理和(exclusive or)とも呼ばれて、両辺のビットのいずれか一方だけが1のとき1になります。

+
+
0b101 ^ 0b1100
+
+

の結果は0b1001(つまり10進の9)になります。これらの論理演算のビットの組み合わせを表14.2に示します。

+
+

表14.2●ビット論理演算

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
xyx | y (or)x & y (and)x ^ y (xor)
00000
01101
10101
11110
+
+

左ビットシフトはビット列を左側にずらします。ずらした右側にはゼロが入れられます。ですから

+
+
0b101 << 1
+
+

は、0b101が1ビットずつ左にずらされて0b1010になり、10進では10になります。整数をnビット左にシフトすることは、その整数を2のn乗倍することと同じ意味を持ちます。

+

逆に右側にシフトするのが右ビットシフトです。

+
+
0b101 >> 1
+
+

0b101が1ビットずつ右にずらされて0b10になります。はみだしたビットは捨てられます。整数をnビット右にシフトすることは、その整数を2のn乗で割ることと同じ意味を持ちます。

+

ビット列として整数を見るとき、負の数は「2の補数」で表現されていると考えることができます。「2の補数」とはコンピュータの世界での伝統的な負の数の表現方式の1つで「ビット反転して+1」した値のことです。考えやすいので、まずは整数のサイズに制限のある場合から考えましょう。整数のサイズが16ビットだったとして、0に対する2の補数は、まず0のビット反転である0xffffを計算し、それに1を足します。するとその結果はやはり0になります。0には +0 も −0 もありませんから、これはこれでよいわけです。同様に−1は0xffff, −2は0xfffeになります。

+

歴史的には「1の補数」という別の負の数の表現方式が使われていたこともあるそうです。これは単純に整数をビット反転したものです。この方式では +0 と −0 ができてしまいますね。私は実際に1の補数を使ったコンピュータを見たことはありません。

+

すでに説明したようにRubyにはBignumがありますので、整数のサイズは制限がありません。C言語では整数をビット列として扱う場合には、整数型のサイズ(16ビットとか32ビットとか64ビットとか)に制限されますが、Rubyでは100ビットだろうが1000ビットだろうが表現できます。

+
+
1 << 1000  # 1以下999ビット0が続くビット列
+
+

ですから、Rubyの整数をビット列として考えると、理論的には正の数の場合には左側に無限に0が続くと考えることができます。負の数の場合には逆に無限に1が続くことになります。まあ、実際に無限に0なり1なりが並んでいるわけではありませんが。

+

最後にビット反転はビット1の桁を0にビット0の桁を1に置き換えた数を返します。

+
+
~0    # => -1
+~1    # => -2
+
+

nのビット反転は (−n−1) と同じ意味になります。

+
+
+ +

文字列化

+
+

数値を文字列にするためにはto_sメソッドを使います。

+
+
puts 10.to_s  # => 10
+
+

putsのような出力メソッドは内部的にto_sを呼びますから、直接出力しても同じことです。

+
+
puts 10  # => 10
+
+

Rubyは普段使われる10進数の他に2進数、8進数、16進数を扱うことができます。ある数を10進以外で出力するためにはprintfを使います。また文字列化するためにはsprintfを使います(表14.3)。

+
+
a = 3456
+printf("%b\n", a)  # => 110110000000
+printf("%o\n", a)  # => 6600
+printf("%d\n", a)  # => 3456
+printf("%x\n", a)  # => d80
+printf("%X\n", a)  # => D80
+
+
+

表14.3●printfの基数指定

+ + + + + + + + + + + + + + + + + + + + + + + + + +
表記説明
%b2進数(binary)
%o8進数(octal)
%d10進数(decimal)
%x16進数(hexadecimal)
%X16進数, ただしA-Fは大文字
+
+

Ruby 1.7ではIntegerクラスのto_sメソッドが引数に基数を指定できます(基数は2, 8, 16が有効)。

+
+
a = 3456
+p a.to_s(2)     # => 110110000000
+p a.to_s(8)     # => 6600
+p a.to_s(10)    # => 3456
+p a.to_s(16)    # => d80
+
+
+
+

文字列からの変換

+
+

逆に文字列を数値化するためには、to_iメソッドまたはIntegerメソッドを使います。

+
+
puts "10".to_i      # => 10
+puts Integer("10")  # => 10
+
+

to_iメソッドとIntegerメソッドの違いは、そのスタイル以外にも、

+
    +
  • to_iは数値として解釈できない文字列に対して0を返す。Integerはエラーにする

  • +
  • Integerは数値の前のプリフィックス(0xとか0bとか)を解釈する。to_iは解釈しない

  • +
+

という違いがあります。

+

ですから、10進以外の数値表現から数値を得るためには、先頭に基数を表すプリフィックスを付けてIntegerメソッドを使います(8進数の場合は先頭に“0”を付ける)。

+ +
+
Integer("0b110110000000")  # => 3456
+Integer("06600")           # => 3456
+Integer("0xd80")           # => 3456
+Integer("0XD80")           # => 3456
+
+

Ruby 1.7ではStringクラスのto_iメソッドの引数に基数を指定できます(基数は2, 8, 16が有効)。

+
+
p "110110000000".to_i(2)  # => 3456
+p "6600".to_i(8)          # => 3456
+p "d80".to_i(16)          # => 3456
+p "D80".to_i(16)          # => 3456
+
+
+
+

数値同士の変換

+
+

Integerメソッドやto_iメソッドは浮動小数点数を整数に変換するためにも使えます。

+
+
p Integer(1.5)   # =>  1
+p 1.5.to_i       # =>  1
+p Integer(-1.5)  # => -1
+p -1.5.to_i      # =>  1
+
+

これらは小数点以下を切り捨てます。小数点以下を四捨五入するためにはroundメソッドを使います。

+
+
p 1.2.round      # =>  1
+p 1.6.round      # =>  2
+p -1.2.round     # => -1
+p -1.6.round     # => -2
+
+

その他にも繰り上げて整数化するceil、繰り下げて整数化するfloorがあります。

+
+
p 1.2.ceil       # =>  2
+p -1.2.ceil      # => -1
+p 1.2.floor      # =>  1
+p -1.2.floor     # => -2
+
+

これらのメソッドは浮動小数点数を整数化するためのものですが、逆に浮動小数点数に変換するためにはto_fメソッドまたはFloatメソッドを使います。

+
+
p 5.to_f         # => 5.0
+p Float(5)       # => 5.0
+
+

これらのメソッドは文字列に対しても有効です。

+
+
p "5.5".to_f     # => 5.5
+p Float("5.5")   # => 5.5
+
+

Integerto_iと同様に

+
+
    +
  • to_fは数値として解釈できない文字列に対して0.0を返す。Floatはエラーにする

  • +
+

という違いがあります。

+
+
+

繰り返し

+
+

たとえば熟練したCプログラマーであれば、10回繰り返したいと思えば、一瞬のうちに、

+
+
for (i=0; i<10; i++) {
+  ...
+}
+
+

という表現が頭に浮かぶかもしれません。しかし、やりたいこと(10回繰り返したい)と、実際の表現の意味にはかなりレベルの差があります。上記のCを解釈するとこうです。

+
    +
  • 変数iをまず0に初期化し、

  • +
  • それからi<10が成立するまで繰り返す、

  • +
  • 毎回の繰り返しの直後にはi++を実行する

  • +
+

ところがRubyであればこうなります。

+
+
10.times {
+  ...
+}
+
+

まさに「10回繰り返す」そのものです。直接的ですね。このtimesメソッドは整数クラスに用意されているループ用のメソッドです。このようなループ用メソッドは「イテレータ(繰り返し子)」とも呼ばれて、Rubyにはいくつも用意されています。

+

数のクラスにある繰り返し用メソッドは以下のとおりです(n, m, stepはそれぞれ数とします)。

+
+
# n回繰り返す
+10.times {
+  ...
+}
+
+# 1増やしながら繰り返す(終端を含む)
+4.upto(7) {|i|
+  p i     # 4,5,6,7を出力
+}
+
+# 1減らしながら繰り返す(終端を含む)
+4.downto(2) {|i|
+  p i     # 4,3,2を出力
+}
+
+# step数を加えながら終端を超えるまで繰り返す
+4.step(10, 2) {|i|
+  p i     # 4,6,8,10を出力
+}
+
+
+
+ +

数学関数(Math)

+
+

数、特に浮動小数点数に対してLinux(UNIX)ではlibmが提供する数学関数を使うことができます。これらの関数はMathモジュールが提供しています。これらの関数の使い方は、

+
+
p Math.sqrt(2)  # => 1.414213562
+
+

のようにMathモジュールを明示的に指定して呼び出すか、Mathモジュールをインクルードして、

+
+
include Math
+p sqrt(2)       # => 1.414213562
+
+

のように使うかのいずれかです。Mathモジュールが提供する数学関数を表14.4に示します。

+
+

表14.4●Mathモジュールの数学関数(Ruby 1.6)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
関数説明
atan2(x,y)x/yのアークタンジェント(逆正接)
cos(x)xのコサイン(余弦)
exp(x)xの指数関数
frexp(x)xの指数部と仮数部の配列
ldexp(x,e)xの2のe乗をかけた数
log(x)xの自然対数
log10(x)xの常用対数
sin(x)xのサイン(正弦)
sqrt(x)xの平方根
tan(x)xのタンジェント(正接)
+
+

三角関数のxはラジアンで表現されます。

+

その他にMathモジュールでは定数として、円周率PIと自然対数の底Eも定義されています。

+
p Math::PI    # => 3.141592654
+p Math::E     # => 2.718281828
+

Ruby 1.7ではMathモジュールの提供する数学関数が増えています。1.7で追加された数学関数を表14.5に示します。

+ +
+

表14.5●Ruby 1.7で追加された数学関数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
関数説明
acos(x)xのアークコサイン(逆余弦)
acosh(x)xのアークハイパボリックコサイン(逆双曲線余弦)
asin(x)xのアークサイン(逆正弦)
asinh(x)xのアークハイパボリックサイン(逆双曲線正弦)
atan(x)xのアークタンジェント(逆正接)
atanh(x)xのアークハイパボリックタンジェント(逆双曲線正接)
cosh(x)xのハイパボリックコサイン(双曲線余弦)
hypot(x,y)原点と点(x, y)の距離
sinh(x)xのハイパボリックサイン(双曲線正弦)
tanh(x)xのハイパボリックタンジェント(双曲線正接)
+
+

私自身はこれらの数学関数を使ったことはほとんどありませんし、「アークハイパボリックコサイン」など、正直なところそれが何を意味するのかもよくわからないのですが、使う人は使うのでしょう、きっと。

+
+
+

乱数

+
+

ランダムな数がほしい場合があります。一番ありそうなケースはゲームを作る場合でしょう。

+

Rubyで乱数を得るためにはrandメソッドを使います。randメソッドの呼び出し方は2種類あります。randメソッドに整数の引数を指定すると、その数よりも小さい整数の乱数を返します。

+
+
rand(10)  # 0から9までの乱数
+
+

randメソッドに引数を与えないと(あるいは0を与えると)、0.0から1.0の間の浮動小数点数の乱数を返します。この乱数は0.0を含み、1.0を含まない範囲になります。

+

Rubyが提供する乱数はある種の「擬似乱数」にしかすぎません。擬似乱数はある「種」となる数値を初期値として計算される、一見ばらばらに見える数列です。ですから、同じ種を与えれば「再現性のある乱数」というなんとなく矛盾したものが得られるわけです。乱数の種はsrandメソッドで指定します。

+
+
srand(0)  # 「種」の指定
+p rand    # => 0.170828036 (いつも同じ「乱数」)
+p rand    # => 0.7499019805(いつも同じ)
+
+

LinuxでないOSでは実際の乱数の値は上記とは違うかもしれませんが、何度やっても同じ乱数が得られるという点は変わりません。

+

srandを明示的に呼び出さなかった場合には、Rubyのほうで「適当な」種を用意してくれます。

+
+
+ +

有理数と複素数

+
+

Rubyは非常に拡張性のある言語なので、自分で数の階層に新しいクラスを追加することができます。そのような例としては有理数(rational)と複素数(complex)をあげておきます。

+

rationalライブラリはRubyで記述されたライブラリで、有理数クラスを定義します。有理数とは2つの整数の商の形で表現される数です。浮動小数点数では誤差を含んでしまう「割り切れない数」も正確に扱うことができます。

+
+
require 'rational'
+r = Rational.new(1,3)  # 「1/3」を定義
+
+

Rubyのすごい点は、この新しく定義した有理数が既存の数と自由に計算できる点です。

+
+
p 2 + r    # => Rational(7, 3)
+
+

複素数も同様です。

+
+
require 'complex'
+c = Complex(1,4)
+p 15 + c   # => Complex(16, 4)
+p 15 * c   # => Complex(15, 60)
+
+
+
+

複利計算

+
+

さて、少しは実用的な数の計算をしてみましょう。銀行や郵便局にお金を預けると利子が付きます。この利子は普通「年利0.5%」というふうに表現されます。これは1年間預けると元の金額の0.5%が利子として追加されるという意味です。

+

利子の計算は普通は複利計算が行われます。これはつまり前回の利子分も元本に加算されるということです。ここでは話を簡単にするため税金については考えないこととすると、複利計算の公式は以下のようになります。

+
+
受け取り額 = 元本*((1+利率)**運用年数)
+
+

この式は利子の計算を1年に1回行う(1年複利)場合の式ですが、1カ月複利や半年複利などの場合、この式の「利率」を「利率÷(1年÷複利期間)」に置き換え、「運用年数」を「運用年数÷複利期間」に置き換えます。

+

ということで、元本をx円、利率をi%、預け入れ期間をn年とし、複利期間をt年とした場合、受け取り額を求めるメソッドは以下のようになります。

+
+
def fukuri(x, i, n, t)
+  x * ((1+(i/100.0/(1/0.5)))**(n*1.0/t))
+end
+
+

「運用年数」の部分で「n*1.0」としているのは、ntを両方とも整数を指定してしまった場合に「n/t」が整数の商にならないためです。

+
+

では、実際に計算してみましょう。郵便局の半年複利の定額貯金に私のへそくり20万を預けたとしましょう。実際はそんなにありませんが。これを10年預けると税引き前でいったいいくらになるでしょう。

+

さっき郵便局で利率を確認したら、定額貯金は年利0.07%だそうです。なんでしょう、この利率は。ほとんどゼロじゃないですか。で、計算すると、

+
+
p fukuri(200000, 0.07, 10, 0.5)  # => 201404.6648
+
+

うーむ、10年で1404円ですか。お話になりませんね。これじゃ利子の意味がありません。

+

これが10年前ならどうでしょう。調べたら、10年前の定額貯金の利率は5.0%だそうです(!)。

+
+
p fukuri(200000, 5.0, 10, 0.5)   # => 327723.2881
+
+

32万7千円ですか。12万増ですか。あの頃いっぱい預けていればよかった。って、その頃は結婚したばかりでお金なかったんですけど。

+

なお、複利計算の公式については

+
    +
  • http://plaza27.mbn.or.jp/~financial/subdata/mas1.html

  • +
+

を参考にさせていただきました。

+
+
+

超高機能電卓irb

+
+

皆さんは電卓は何を使っていますか。最近はチープなものなら100円ショップでも手に入りますよね。ソーラー電池がつくと1000円くらいのものでしょうか。これらは四則演算とせいぜいレジスタが1つ2つあるくらいの単純なものです。本誌の読者ならLinux使いでしょうから、そのような低級な電卓では満足できなくて、もうちょっと高級なものを使っているかもしれません。私はHPの関数電卓を愛しているという人を何人も知っています。あるいはUNIXコマンドのbcを使うという人もいます。GUI版の単純電卓であるxcalcを愛用している人もいるかもしれません。

+

ここで紹介するのはirbというコマンドです。irbはinteractive ruby(対話的ruby)の略です。つまりRubyのプログラミングを対話的に行うためのツールです。もちろん、Rubyは単なる電卓ではないのですが、これを電卓として考えると実に高機能な電卓です。たとえば、

+
    +
  • 任意の数の変数が使える

  • +
  • 任意の桁数の整数が扱える

  • +
  • もちろん実数計算もできる

  • +
  • おまけにRubyの全機能が使える

  • +
  • さらに行編集も可能

  • +
+

といたれりつくせりです。

+

ただし、電卓として考えると「整数÷整数」の割り算の結果が整数になってしまうのはちょっと使いにくいですね。ここだけは注意する必要がありますね。

+
+

irbを起動するとプロンプトが出て入力を求められます。

+
+
irb(main):001:0>
+
+

最初の「001」は行番号、次の「0」はネストの深さを意味します。では、ちょっと計算してみましょう。

+
+
irb(main):001:0> 1 + 1
+2
+irb(main):002:0> 2 * 4
+8
+irb(main):003:0> 2 ** 10
+1024
+irb(main):004:0> 2 ** 100
+1267650600228229401496703205376
+
+

電卓としてはなかなか快調です。では、メソッドも定義してみましょう。先ほどの複利計算メソッドを定義します。

+
+
irb(main):005:0> def fukuri(x, i, n, t)
+irb(main):006:1>  x*((1+(i/100.0/(1/0.5)))**(n*1.0/t))
+irb(main):007:1> end
+nil
+
+

def文の本体の間はネストが1になっていることに注目してください。これで複利計算も使える電卓になりました。先ほどの定額貯金の計算もこのとおりです。

+
+
irb(main):008:0> fukuri(200000, 0.07, 10, 0.5)
+201404.6648
+
+

では、1年複利だとどうなるんでしょう。こういうときに行編集機能は便利です。上カーソルでさっきの行を表示させ、0.5の部分を1に直すだけです。

+
+
irb(main):009:0> fukuri(200000, 0.07, 10, 1)
+200701.1035
+
+

なんと10年で701円ですか。さみしい。では、逆に1カ月複利だと?

+
+
irb(main):010:0> fukuri(200000, 0.07, 10, 1/12.0)
+208577.3631
+
+

今度は8577円になります。このようにirbは電卓としても便利です。もちろん本来の目的であるちょっとRubyの機能を対話的に試してみたいときにもとても役に立ちます。

+
+
+

まとめ

+
+

今回は計算機の原点「数」を中心に解説しました。

+

以前から白状しているように、私は数学苦手です。学生時代から数学は落ちこぼれてました。今回、付け焼き刃の知識で解説したところもあります。もし間違い、勘違いなどがありましたら、こっそり教えてくださいませ。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-032.xhtml b/docs/vol1/xhtml/p-032.xhtml new file mode 100644 index 0000000..b8a8d3b --- /dev/null +++ b/docs/vol1/xhtml/p-032.xhtml @@ -0,0 +1,116 @@ + + + + + +第14章 数と電卓 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ coerce

+
+

今月は数の相互変換体系であるcoerceについて解説します。

+

異なる種別の数同士の演算は自動変換されて、演算結果はより「広い」種別の数になります。「広い」とは表現できる範囲が広いという意味です。整数よりも浮動小数点数のほうが「広い」ということですね。

+

その結果、整数と浮動小数点数との演算結果はより「広い」浮動小数点数になります。

+
+
p 1 + 1.5  # => 2.5
+p 1.5 * 2  # => 3.0
+
+

問題はより広い種別にどのように変換するか、です。組み込みの数クラスだけならまだ話は簡単ですが、すでに述べた有理数や複素数のようにRubyでは後から数クラスを追加できるので、ややこしくなります。

+

また、型を考慮する必要があるのが左辺だけなら、Rubyの演算はメソッドで実行されるので、左辺のクラスに応じて自動的にメソッドが選択されるのですが、数の場合には右辺も重要です。

+

それを解決するために用意されているのがcoerceシステムです。Rubyの数クラスの演算を行うメソッドは全部以下のようなルールで設計されています。

+
    +
  • メソッドは左辺のクラスに応じて選択される

  • +
  • 各メソッドは、右辺のクラスが自分の知っているクラスなら、それに応じた処理を行う。たとえばFixnumFloatを知っているので左辺をFloatに変換してから計算する

  • +
  • 右辺のクラスが自分の知らないクラスなら、まず右辺の数オブジェクトのcoerceメソッドを左辺を引数にして呼び出す。coerceメソッドは右辺と左辺を適切なクラスに変換して[左辺, 右辺]という配列を返す

  • +
  • 右辺のクラスが左辺のクラスを知らなければ、どうやっても変換できないのでエラーになる

  • +
  • 改めて、変換された左辺と右辺に対して演算を行う。具体的には同じ名前のメソッドを呼び出す

  • +
+

この手順に従うクラスはRubyの既存の数クラスとうまく協調できます。たとえば、新しい数クラスRationalを定義してみましょう(リスト14.1)。簡単にするため、演算子は「+」だけ用意します。また、約分も行いません。きちんとしたRationalクラスの実装は標準ライブラリのrational.rbを参照してください。

+ +
+

リスト14.1●新しい数クラスRationalの定義

+
class Rational < Numeric
+  # インスタンス初期化(num=分子、den=分母)
+  def initialize(num, den)
+    @num = Integer(num)
+    @den = Integer(den)
+  end
+  # 分子、分母の読み出しメソッドの定義
+  attr_reader :num, :den
+
+  # 「+」の定義
+  def +(num)
+    case num      # numのクラスで分岐
+    when Rational # 左辺と同じクラス
+      x = @num * num.den
+      y = num.num * @den
+      Rational.new(x + y, @den * num.den)
+    when Integer
+      self + Rational.new(num, 1)
+    when Float
+      @num*1.0/@den + num
+    else          # 自分の知らないクラス
+      # coerceを行う
+      # 右辺がRationalを知らなければエラー
+      x, y = num.coerce(self)
+      x + y           # 改めて再計算
+    end
+  end
+
+  def coerce(num) # 変換メソッド
+    case num
+    when Integer  # 整数なら分母1のRationalに
+      [Rational.new(num, 1), self]
+    when Float    # Floatなら自分(右辺)をFloatに
+      [num, @num*1.0/@den]
+    else          # これら以外は知らない、エラー
+      raise TypeError, "#{num.type} can't be converted into #{self.type}"
+    end
+  end
+end
+
+
+
+

これらを実際に計算すると以下のようになります。

+
+
r = Rational.new(1,3)  # Rationalの生成
+p r + 1                # => 「4/3」相当の有理数
+# Rationalの+メソッドで処理
+
+p 1 + r                # => 「4/3」相当の有理数
+# Fixnumの+がRationalのcoerceを呼び、coerceが
+# 左辺(Fixnum)をRationalに変換
+
+p r + 1.0
+# Rationalの+メソッドで処理
+
+p 1.0 + r   # => 1.333333333
+# Floatの+がRationalのcoerceを呼び、coerceが
+# 左辺(Float)をRationalに変換
+
+

えーと、把握できましたでしょうか。一度でわからなくても無理はありません。coerceシステムはRubyで数の体系を自然に表現するために工夫されていますが、設計した本人もすぐにわからなくなります(笑)。たとえ理解できなくても、自分で新しい数クラスを設計しない限り用事はないかもしれません。coerceシステムの実際に興味を持たれた方は、Rubyのソースのnumeric.crational.rb, complex.rbなどを参照してください。

+

coerceシステムの設計にはrational.rbなどの開発者である石塚圭樹さんの多大な貢献があったことを申し添えておきます。

+

さて、本連載「初等Ruby講座」も回が進んで、知られざるRubyで解説するネタが減ってきました。もし、こんな「知られざるRuby」の一面について解説してほしいというリクエストがあれば、

+
    +
  • matz@ruby-lang.org

  • +
+

までメールをください。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-033.xhtml b/docs/vol1/xhtml/p-033.xhtml new file mode 100644 index 0000000..720c4b9 --- /dev/null +++ b/docs/vol1/xhtml/p-033.xhtml @@ -0,0 +1,77 @@ + + + + + +第14章 数と電卓 + + + + +

Matz Essays Volume 1

+ + +
+

◆ Ruby開発日記 ◆ インプットメソッド

+
+

プログラマーの生活を知らない人から見れば、プログラマーというのは一日中プログラムを書いているように思えるかもしれません。しかし、実際にはプログラムを書く時間よりも、日本語の文章を書いている時間のほうがよっぽど長いのです。

+ +

プログラムには仕様書やマニュアルのようなドキュメント書きは必須ですし、それ以外にも雑誌の原稿、本の原稿、Web日記など書くものはたくさんあります。なにより一番多いのはやはりメールでしょう。自分の一日を振り替えるとコンピュータに向かっている時間の7割はメールの読み書きをしているような気さえします。

+

ということは、一日のうちのかなりの時間を文章を書くことに費やしていることになります。プログラマーを始めとする技術屋は基本的に「楽になるためには苦労をいとわない」タイプの人間が多いので(私もそうです)、当然のように自分にぴったり合った入力方法を模索することになるわけです。

+
+

周辺事情

+

私の勤めている(株)ネットワーク応用通信研究所で、私の周辺の人々がどのような入力方法を使っているのか調べてみました。

+

私の隣の席に座っている前田修吾さん(mod_rubyなどの開発者ですね)は、長らくT-codeを使っていたそうです。T-codeは「無連想直接入力方式」で、特定のキーの組み合わせで直接漢字を入力できる方式です。キーの組み合わせを覚えさえすれば、変換などで思考が妨げられることなく、入力できるそうです。熱狂的なファンの多い方式ですが、覚えることが多いので、導入コストが高いのが難点です。実際、前田さんは数年がんばっても効率が上がらないので、最近Wnn+eggに移行したそうです(だめじゃん)。

+

私の上司にあたる生越昌己さん(通称: おごちゃん)はSKKの愛用者です。送りがなを指定することできめ細かな指定ができるのでお気に入りのようです。余計なことをしないのがうれしいのでしょうか。うちの会社には他にもSKK愛用者は何人もいます。

+

私の後ろの席に座っている、わが社の社長の井上浩さんは、ひらがな入力には直接入力方式の1つであるTUT-codeを使い、漢字は「かんな」による変換を行うという一風変わった入力方式です。TUT-codeでのひらがな入力はローマ字入力よりは速いとのことです。

+

変な人たちですね。

+
+
+

私の場合

+

では、私の場合はどうなのかというと、あんまり人のことはいえません。私は「かんな」のローマ字カスタマイズ機能を使って、ひらがな入力には特別の配列を使っているからです(図14.2)。

+
+ +
+ fig1402 +
+

図14.2●キーボードレイアウト「きゅうり改」

+
+

この方式は狩野宏樹さん(当時早稲田大)が考案された方式を少々カスタマイズしてできたもので、狩野さんが元の配列を「きゅうり」と呼んでいらっしゃるので、これを「きゅうり改」とします。

+ +

この方式では「さ」という文字を入力するためには、「さ行」のキー(f)に続いて母音の「あ」のキー(h)を押します。左手が子音、右手が母音を担当します。ですから、普通に日本語を入力すると左右の手が交互に動作することになり、効率が上がるというわけです。

+

「ゃ」「ゅ」「ょ」のキーは母音の代わりに使うキーです。たとえば「か行」の「ゃ」は「きゃ」になります。また、このキーを連続して打つと「ゃあ」「ゅう」「ょう」になりますから、「きょう」とか「しょうしょう」のようなよくある表現に打ちやすい同じキーの2度打ちが使えます。

+

「ぇ」のようなその他の小さい文字を入力するためには「小」キー(b)を押してからその文字を入力します。

+

たとえば、「きょうはてんきがよいです。」と入力するためには、

+
+
dooshg;ndkqhalkv;fj.
+
+

となります。アルファベットで見るとわけがわかりませんが、慣れると指が覚えてくれます。実際私は、もう何年もこの配列を使っているのにいまだにアルファベット表現からかなの列を想像できません。

+

「新しい配列を覚えるなんて」と思われる方もいらっしゃるかもしれません。しかし、この方式は子音の位置さえ覚えてしまえば、後は割と簡単です。私が数年前この方式に移行したときには、数時間でまがりなりにも打てるようになり、3日ですっかり慣れました。

+
+
+

「きゅうり改」の使い方

+

さて、「きゅうり改」を使ってみたいと思われますか。「かんな」をお使いの方は簡単な手間で移行できます。

+

付録CD-ROMにkyuri.kpdefというローマ字変換テーブルと、それをコンパイルした .kyuri.kpを収録してもらいました。まず、Disc 3のLinuxmag/Rubyディレクトリにある、.kyuri.kpをユーザーのホームディレクトリにコピーします。次にホームディレクトリの .cannaファイルに以下の行を追加します。

+
+
(setq romkana-table ".kyuri.kp")
+
+

プラットフォームの関係で再コンパイルする場合には、

+
+
kpdic < kyuri.kpdef > .kyuri.kp
+
+

を実行してください。

+

あとは、「かんな」での日本語入力がすべて「きゅうり改」で行われます。ちょっと努力すれば数日であなたの日本語入力は劇的に改善されることでしょう、たぶん。

+

どうです? 「きゅうり改」使ってみませんか?

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-034.xhtml b/docs/vol1/xhtml/p-034.xhtml new file mode 100644 index 0000000..3327705 --- /dev/null +++ b/docs/vol1/xhtml/p-034.xhtml @@ -0,0 +1,387 @@ + + + + + +第15章 CGI + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay15 +
+

+初等Ruby講座
+CGI +

+
+

[Linux magazine, 2002年8月号]

+
+

CGIについての解説回です。もはや純粋なCGIでWebアプリケーションを開発する人はいなくなってしまいましたから、原理的な部分としてしか役立たないでしょうね。時代の変化は残酷です。

+

「Ruby開発日記」では、プログラマー危機説について語っています。こちらはシステムが複雑化してしまうと、入門者がいきなり高度なものを学ぶ必要があって、それによって挫折してしまうのではないかという懸念です。幸い、現時点ではそのようなことはまだ起きていないですし、Scratchをはじめとするプログラミング初心者向けのツールも充実しています。しかし、CopilotやChatGPTのようなAIツールや、ノーコード・ローコードと言われるような開発手法が発展すると、過去の懸念がまた復活するのではないかと憂慮しています。

+
+
+

Web上でCGIプログラムを動作させることで、フォームを使用してアンケートを処理したり、動的なページを作成したりすることができます。テキスト処理を行うCGIプログラムはRubyの得意分野の1つです。

+
+
+

WWW

+
+

ちょうどRubyの開発が始まった頃の1993年にコンピュータ業界にとって革命的な発明が行われました。この発明はWWW(World Wide Web)と呼ばれるもので、当時CERNにいたTim-Burners Leeによって行われました。

+

WWWはいろんな意味で今までの常識をくつがえす発明でした。まず1つ目の非常識はすべての情報を毎回サーバーまで取りに行く点です。WWWではリンクを張ったページがたとえば地球の反対側のサーバー上にあれば、実際にその地球の反対側にあるマシンまで通信を行います。これ以前インターネット(WWW以前からインターネットはあるんですよ、念のため)では通信量を減らすことを第一に考えてあらゆるものが設計されていました。WWWのすごいところはそういう気づかいとか遠慮とかいうものをあっさり切り捨てたところです。ある意味『富豪主義』と言ってもよいでしょう。通信回線の速度や価格が飛躍的に改善された現在では当然に思えることも、過去には驚くべき発想の転換だったというわけです。

+
+

2つ目の非常識は通信内容としてプレーンテキストではなく、マークアップ言語であるHTMLを採用した点です。これ以前ではインターネットの通信はプレーンテキストが主流でした。メールもネットニュースも基本はプレーンテキストの転送でした。ところがWWWではSGMLの流れをくむHTML(Hyper Text Markup Language)を採用することによって、

+
    +
  • 他のページへのリンク(ハイパーテキスト)

  • +
  • 文章の構造の明確な表現

  • +
  • 画像や表組みなどの見栄えの表現

  • +
+

が可能になりました。最初のWWWはあくまでもテキストベースで、画像の表示などができるようになったのはだいぶ後のMosaicブラウザの登場を待つ必要があったのですが、それでもHTMLを使うという選択が現在の「インターネットといえばWWW」という状態を生んだといっても言い過ぎではないでしょう。実際うちの小学生の娘はまだインターネットとWWWの区別がついていません。おまけに5歳の息子はインターネットを使えば何でもわかると信じてます。いや、確かに最近はいろいろわかるけど。

+

3つ目の非常識はサーバーとクライアントの比重の逆転です。サーバー/クライアントモデルは昔からある形態ですが、もともとは重い仕事はサーバーで、軽い仕事はクライアントでという仕事の割り振りが行われてきました。しかし、WWWにおいてはサーバーの仕事は(少なくとも当初は)HTMLファイル内容の転送が主で、その他のHTMLファイルの解釈や表示など重い仕事がクライアントに割り振られました。このようなクライアントのほうが重い傾向はX Window Systemですでに見られましたが、WWWはそれを決定的にしました。

+

このような驚くべき(今では当然ですが)発明によりWWWはコンピュータとネットワークのあり方を一変させてしまいました。この発明がなければ、世界はまるで違ったものになっていたに違いありません。

+
+
+

CGI

+
+

発明されたばかりのWWWではサーバーはファイルに格納されたHTMLコンテンツをクライアントに転送することだけが仕事でした(図15.1)。HTTPクライアントはHTTPサーバーにURL(Unified Resource Locator)という形式でページを指定すると、サーバーは対応するHTMLファイルを読み出して、その内容をクライアントに転送します。

+
+ +
+ fig1501 +
+

図15.1●HTMLコンテンツの転送

+
+

URLはいわゆる「http://〜」ってやつですね。ホームページアドレスと呼ぶ人もいますが、実際には「ホームページ」でないものを指す場合もあるので不適切です。

+

しかし、毎回毎回同じリクエストに対して同じ返答を返すだけでなく、クライアントの要求に応じてコンテンツを生成する要求が出てくるのは、ある意味必然でした。

+

そこで登場したのがCGI(Common Gateway Interface)です。CGIでは、HTTPサーバーへの要求に対してCGIプログラムを起動します。各要求ごとにプログラムを起動してしまうところが「富豪主義」らしいといえます。クライアントからの要求の情報は主に環境変数を使ってCGIプログラムに渡されます。CGIプログラムからの出力(標準出力)はそのまま(正確には若干サーバーで加工されて)クライアントに転送されます(図15.2)。

+ +
+ +
+ fig1502 +
+

図15.2●CGIの仕組み

+
+

HTTPサーバーとCGIとの間の情報のやりとりは環境変数と標準入出力だけを使って行われますから、それらをアクセスできればどんな言語を使ってもCGIプログラムを記述できるというわけです。しかし、HTTPプロトコルもHTMLも結局はテキストですから、テキスト処理の得意な言語がCGIプログラムにも向いているということになります。ですから、RubyやPerlなどはCGI向き言語といえます。

+
+
+

動的ページでできること

+
+

では、CGIによってダイナミックに内容を生成できるとどんなことができるでしょうか。ちょっと考えただけでも、

+
+

などなどいろいろな可能性がありそうです。動的ページさえあれば、HTMLで表現できる範囲なら事実上何でも可能だと断言してもよいでしょう。

+
+
+

初めてのCGI

+
+

リスト15.1は、最も簡単なCGIプログラムです。

+
+

リスト15.1●簡単なCGI(hello.cgi)

+
#! /usr/bin/ruby -T
+
+print "Content-type: text/html; encoding=EUC_JP\n\n"
+print "<html><head><title>CGI</title></head><body>\n"
+print "こんにちは世界っ!\n"
+print "</body></html>\n"
+
+
+

このプログラムは出力に何の変化もないのでCGIである必然性もないようなプログラムですが、最初ですから。最初の行はこのプログラムがRubyで実行されることを示しています。「-T」はCGI用のおまじないです。あとで説明しますが、CGIプログラムの最初の行はこのようにしておくのがよいでしょう。あ、Rubyインタプリタのインストールしてある位置によっては、

+
+
#! /usr/local/bin/ruby -T
+
+

などに書き換える必要があるかもしれません。ファイル名はとりあえずhello.cgiとしておきます。拡張子.cgiは「このプログラムはCGIですよ」という印です。

+

このプログラムを

+
+
$ ruby hello.cgi
+
+

のように、そのまま実行してみると図15.3の出力が得られます。

+
+
+
$ ruby hello.cgi
+Content-type: text/html; encoding=EUC_JP
+
+<html><head><title>CGI</title></head><body>
+こんにちは世界っ!
+</body></html>
+
+

図15.3●簡単なCGIの出力

+
+ +

これがCGIの出力の基本的な構造です。最初の1行目はCGIの出力の本体部分に関する情報を含むもので「ヘッダー」と呼ばれます。この「Content-type」ヘッダーはデータのフォーマットが「HTMLで書かれたテキストで、文字コードはEUC-JPである」ことを意味しています。他にも追加のヘッダーを指定することはありますが、この「Content-type」ヘッダーは必須です。ヘッダーと本体の間は空行で区切られます。

+

空行から最後までが本体です。ここではHTMLを直接printしています。

+

さて、これはCGIですから、直接実行しては意味がありません。そこでHTTPサーバーから実行するように設定します。

+

この設定はHTTPサーバーによって異なるのですが、とりあえずApacheについて説明しておきます。

+

まず、CGIプログラムをApacheから見える場所に置きます。ここではとりあえず、

+
    +
  • /home/matz/public_html/hello.cgi

  • +
+

に置いたとしましょう。この場所に置いたファイルは(Apacheの設定にもよりますが)、

+
    +
  • http://ホスト名/~matz/hello.cgi

  • +
+

というURLでアクセスできるようになります。

+

次に、CGIプログラムのパーミッションを確認します。CGIプログラムはHTTPサーバーから直接起動されるため、実行ビットが設定されている必要があります。

+
+
% chmod 755 hello.cgi
+
+

としておきましょう。

+

それから、CGIが実行できるようなApacheの設定になっているかどうかを確認しましょう。とりあえず「拡張子.cgiの付いたファイルをCGIとして実行する」ためにはApacheの設定ファイルhttpd.confに、

+
+
Options ExecCGI
+AddHandler cgi-script .cgi
+
+

を(なければ)追加します。詳細はApacheのドキュメントを参照してください。これで、ブラウザで上記URLでアクセスすると、

+
+
+
こんにちは世界っ!
+
+

と表示されるはずです。表示されなかったら、

+
    +
  • URLは正しいか

  • +
  • パーミッションは設定されているか

  • +
  • #!行のパスは正しいか

  • +
  • Apacheの設定は正しいか

  • +
+

などを確認してください。

+
+
+

クライアントからの入力

+
+

しかし、変化のないCGIではHTMLファイルと変わりありません。CGIのパワーを生かすためには、ダイナミックに変化するページを作らなくてはなりません。考えてみるとダイナミックに変化するページとは、

+
    +
  • 時刻や最新のニュースなどリクエスト内容は同じで、ページ内容が刻々変化するもの

  • +
  • アンケートや検索エンジンのようにユーザーから何らかの入力を受け取り、その入力に応じたページ

  • +
+

のいずれかに分類できます。後者ではユーザーからの入力を受け付ける必要があります。ユーザーからの入力はフォームHTMLのformタグを使って指定します。

+

リスト15.2はHTMLフォームの例です。フォーム入力そのものはただのHTMLでCGIである必要はありませんが、そのフォームからの入力を処理するのがCGIになります。

+
+

リスト15.2●フォーム入力例(アンケート)

+
<html>
+<head><title>アンケート入力</title></head>
+
+<body>
+<form action='"enquiry.cgi"'>
+  <table border="0" align="center">
+  <tr><th nowrap>性別:
+  <td>
+    <input type="radio" name="gender" value="m">男性
+    <input type="radio" name="gender" value="f">女性
+  <tr><th nowrap>年齢:
+  <td>
+    <input type="radio" name="age" value="19">20歳未満
+    <input type="radio" name="age" value="20">20代
+    <input type="radio" name="age" value="30">30代
+    <input type="radio" name="age" value="40">40代
+    <input type="radio" name="age" value="50">50代以上
+  <tr><th nowrap>趣味:
+  <td>
+    <input type="checkbox" name="hobby1">コンピュータ
+    <input type="checkbox" name="hobby2">映画鑑賞
+    <input type="checkbox" name="hobby3">音楽鑑賞
+    <br>
+    <input type="checkbox" name="hobby4">工作
+    <input type="checkbox" name="hobby5">読書
+    <input type="checkbox" name="hobby6">スポーツ
+    <br>
+    <input type="checkbox" name="hobby7">アウトドア
+    <input type="checkbox" name="hobby8">旅行
+    <br>
+    その他: <input type="text" name="hobby0">
+  <tr><th><td>
+    <input type="submit" value="送信">
+    <input type="reset" value="クリア">
+  </table>
+</form>
+</body>
+</html>
+
+
+ + +

formタグではactionとしてsubmitボタンが押されたときに起動されるCGIのURLを指定します。ここではファイル名だけの相対URLを指定しています。

+

個々の入力フィールドはinputタグやtextareaタグ、selectタグなどで指定します。inputタグはtypeを使ってフィールドの種別を指定します(表15.1)。

+
+

表15.1●inputタグのtype

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
タグ説明
checkboxチェックボックス
filefileアップロード
hidden隠しフィールド
imageイメージボタン
passwordパスワード入力
radioラジオボタン
resetリセットボタン
submitサブミットボタン
textテキスト入力
+
+

これらの入力フィールドには1つ1つ、name="foo" というような名前を付ける必要があります。この名前はあとでCGIプログラムでフィールドの入力結果を取り出すために使われますから、各々別の名前を付けておきます。

+

リスト15.2のHTMLをブラウザで表示させると図15.4のようになります。

+
+ +
+ fig1504 +
+

図15.4●HTMLフォーム(HTML)

+
+
+
+

CGIプログラムへの入力

+
+

HTMLフォームへの入力はHTTPの仕様に従ってHTTPクライアントからHTTPサーバーに渡され、さらにそれはCGIの規約に従ってCGIプログラムに渡されるのですが、今回は入門編ですのでHTTPやCGIの仕様の詳細までは踏み込みません。

+

Rubyにはそのようなやりとりの解釈をしてくれるcgiライブラリがすでに存在するので、それを使うことにします。cgiライブラリを使うためにはまずrequireする必要があります。

+
+
require "cgi"
+
+

それからCGIデータを取り出すCGIオブジェクトを作ります。

+
+
cgi = CGI.new
+
+

そして各フィールドの値を取り出します。

+
+
name, = cgi["name"]
+
+

代入文の変数名の後ろの「,」は「配列の最初の要素の取り出し」を意味します。複数の同名のフィールドがあった場合のため、cgiオブジェクトはフィールドの値の配列を返します。同じ名前のフィールドが1つしかないことが確実な場合にはこのように変数名の後ろにコンマをつけるのが簡単・確実です。

+

リスト15.3はアンケート入力のHTMLフォームから、確認用にその結果を表示するCGIです。

+ +
+

リスト15.3●フォーム処理CGI

+
#! /usr/bin/ruby -T
+
+require 'cgi'            # cgiライブラリのrequire
+
+cgi = CGI.new            # cgiオブジェクトの生成
+
+gender, = cgi["gender"]  # genderフィールドの値
+age, = cgi["age"]        # ageフィールドの値
+
+# ヘッダーとHTMLの先頭部の出力
+print <<EOS
+Content-type: text/html; encoding=EUC_JP
+
+<html><head><title>アンケート入力確認</title></head><body>
+<p align="center">入力ありがとうございます</p>
+<p align="center">入力内容は以下のとおりでよろしいですか?</p>
+
+<table border="1" align="center">
+  <tr><th nowrap>性別:<td>
+EOS
+
+if gender == "f"
+  print "女性\n"
+else
+  print "男性\n"
+end
+
+print "<tr><th nowrap>年齢:<td>\n"
+
+case age
+when "19"
+  print "20歳未満"
+when "20"
+  print "20代"
+when "30"
+  print "30代"
+when "40"
+  print "40代"
+when "50"
+  print "50代以上"
+else
+  print "不明"
+end
+
+hobbies = %w(
+  nil
+  コンピュータ
+  映画鑑賞
+  音楽鑑賞
+  工作
+  読書
+  スポーツ
+  アウトドア
+  旅行)
+
+print "<tr><th nowrap>趣味:<td>\n"
+for i in 1..8
+  hobby, = cgi["hobby%d"%i]
+  if hobby
+    printf "<label>%s</label>\n", hobbies[i]
+  end
+end
+hobby, = cgi["hobby0"]
+if hobby
+  printf "<label>その他: %s</label>\n", hobby
+end
+print "</table></form></body></html>\n"
+
+
+
+

このCGIの実行結果は図15.5のようになります。

+
+ +
+ fig1505 +
+

図15.5●フォーム処理CGI実行結果

+
+
+
+

まとめ

+
+

今回はCGIプログラミングの基本の基本について説明しました。CGIプログラミングは奥が深く、今回は誌面の関係もあってさわりしか紹介できませんでした。ぜひ次回にでも、この続きを実例も交えてもっと詳しく説明したいと思います。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-035.xhtml b/docs/vol1/xhtml/p-035.xhtml new file mode 100644 index 0000000..86dcf00 --- /dev/null +++ b/docs/vol1/xhtml/p-035.xhtml @@ -0,0 +1,139 @@ + + + + + +第15章 CGI + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ Webセキュリティ

+
+

このようにCGIプログラムと言ってもその基本的な部分は通常のプログラムと変わりありません。環境変数や標準入力からデータを受け取り、標準出力に結果を(多くの場合はヘッダー付きHTMLとして)出力するだけです。

+

しかし、このように気軽にプログラムできるCGIには、実は落とし穴があるのです。それが、

+
    +
  • セキュリティ

  • +
+

です。CGIプログラムは通常のプログラムとは以下の点が決定的に違います。

+
    +
  • 入力が信頼できない。

  • +
+

CGIプログラムに対して入力を行うのは、ネットワークのかなたのクライアントです。クライアントはよい人ばかりとは限りません。場合によっては悪意を持つユーザーがクライアントになるかもしれません。

+

とはいうものの、それでは「信頼できない入力」のどこが危険なのかピンとこないかもしれませんね。では、どのような問題が発生し得るのかということと、その問題に対する対策を見てみましょう。

+
+

バッファオーバーラン

+

セキュリティ問題としてたびたび報告されるのがこの「バッファオーバーラン(buffer overrun)」です。これは、入力に対して固定長のバッファを確保していた場合、バッファサイズよりもはるかに大きなデータを入力することによって、プログラムを異常終了させたり、あるいはスタックのジャンプアドレスをすり替えることで、プログラムを乗っ取ったりすることができる、というものです。

+

乗っ取りの原理の詳細は説明しませんが、外部からの入力が信頼できないときには固定長のバッファは危険です。幸い、Rubyならファイルから文字列の読み込みも、文字列操作もStringクラスがメモリ割り当てを自動的に行ってくれますから、固定長のバッファを使わなくて済みます。ですから、Rubyのような「高級」な言語を使っていれば、バッファオーバーランの問題からは解放されるということです。CなどでCGIプログラムを開発する場合には気を使う必要があります。

+
+
+

信頼できない実行

+

たとえば、クライアントからの入力が文字列strに格納されていたとして、何も考えずに、

+
+
system(str)
+
+

と実行したらどうなるでしょう? もし、strの内容が、

+
+
"cat /etc/passwd"
+
+

だったり、あるいは最悪、

+
+
+
"rm -rf /"
+
+

だったら? このように外部からの入力を元に実行するのは危険です。では、基本的な部分は自分で用意するのならどうでしょう。たとえば、あるディレクトリにあるファイル名を入力させて、そのファイルのls -l出力を表示させたければ、

+
+
system "ls -l /home/matz/tmp/#{str}"
+
+

とすれば、安全なのでしょうか。一見、危険はなさそうに見えますが、strの内容が、

+
+
"../../../etc/passwd"
+
+

なら、/etc/passwdの情報が見えてしまいます。あるいは、

+
+
"foo; rm -rf /"
+
+

なら、lsの表示だけをさせるつもりだったのに、うっかり「rm -rf /」まで実行してしまいます。大変なことです。

+

systemと同じくらい危ないのがevalです。evalは文字列をプログラムとして評価します。ですから、先ほどのsystemと同じように、外部からの文字列をそのままevalに渡すと、

+
+
eval(str)
+
+

で、strの内容が、

+
+
"system 'rm -rf /'"
+
+

なんてこともできてしまいます。

+

と、考えてみると、CGIプログラムって恐いですね。そうなんです、CGIを楽しむためにはCGIの危険性をも十分に把握しておくべきだと思います。自動車は便利なものですけど、ひとたび間違うと凶器になるのでちゃんと教習所で運転を勉強するのと同じですね。

+

このようなセキュリティ上の問題への対処を簡単にするため、Rubyではいくつかのセキュリティレベルを用意しています。Rubyのセキュリティレベルは、何もチェックを行わないレベル0から、最も厳しいレベル4までありますが、今回は誌面の関係上、CGIに便利なセキュリティレベル1についてだけ説明します。

+

CGIプログラムに便利なレベル1では「汚染された値による危険な操作」が禁止されます。

+

「汚染された値」とは、いま話題にしている「信頼できない入力」のことです。普段は見えませんがRubyのすべてのオブジェクトには「信頼できるか」マークが付いています。そして、外部から入力されたデータ(たとえばファイルからの入力とか、環境変数の値とか)にはすべて「信頼できない」とマークが付けられています。また、信頼できないデータから派生したデータにも「信頼できない」マークが付きます。たとえばstrが信頼できないとき、

+
+
a = "ls -l " + str
+
+

と文字列を結合した結果aも信頼できないわけです。あるオブジェクトが信頼できないかどうかはtainted? メソッドで調べられます。

+
+
puts str.tainted?  # => true
+puts a.tainted?    # => true
+puts "a".tainted?  # => false
+
+
+

「危険な操作」とは先ほど説明したsystemevalのようなメソッドのことです。具体的には表15.2に示すメソッドは、引数に「信頼できない」マークが付いているとエラーになります。

+
+

表15.2●レベル1で禁止されるメソッド

+ + + + + + + +
test, eval, require, load, trap
File, FileTest, IO, DIRの各メソッド
+
+

何らかの内容チェック(たとえばファイル名なら「.」や「/」を含まないとか)を行って「信頼できる」と確信できたデータに対しては、明示的に「信頼できない」マークを外すことができます。

+
+
str.untaint
+
+

これでstrの文字列は「信頼できる」ことになります。実際にテストが正当かどうかはRubyは関知しませんので、くれぐれもご注意を。

+

このセキュリティレベルによって、単純なセキュリティバグを自動的に検出できるのはRubyのメリットの1つですね。Perlにも同種の機能がありますが、個人的にはRubyのもののほうが使いやすいと思います。設計者のひいき目でしょうが。

+

セキュリティレベルの指定の方法は2つあります。1つは変数 $SAFEへの代入です。

+
+
$SAFE = 1
+
+

と変数 $SAFEに整数を代入すると、それ以降の実行が指定したセキュリティレベルで行われます。$SAFEの値は現在の値よりも小さい数を指定できません。

+

もう1つの方法は、コマンドライン引数で指定する方法です。Rubyのコマンドライン引数に -T<数字> を指定するとRubyプログラムの実行がそのセキュリティレベルで行われます。数字を省略すると1を指定したと見なされます。入門編で「おまじない」として #! 行に -Tを指定しましたが、これはこのセキュリティレベル1を指定していたのです。

+
+
+

XSS

+

最後に紹介する問題はXSS(Cross Site Scripting)です。これはクライアントからの入力をそのままCGIの出力に含めてしまう危険です。たとえば、Web掲示板がユーザーの入力のタグをそのまま通してしまうと、

+
    +
  • 勝手に画像を埋め込まれたり

  • +
  • 予期しないリンクを作られたり

  • +
  • <SCRIPT> タグによりJavaScriptを埋めこまれたり

  • +
+

する場合があります。特に最後のものはクライアント側で実行されるプログラムですから、危険がいっぱいです。

+

残念ながら現在のRubyはXSSは自動検出してくれません。ユーザーからの入力を元に出力を行う場合にはHTMLタグなどをエスケープすることを忘れないようにしてください。HTMLのエスケープにはCGI.escapeHTMLメソッドが使えます(図15.6)。

+
+ +
+ fig1506 +
+

図15.6●CGI.escapeHTML

+
+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-036.xhtml b/docs/vol1/xhtml/p-036.xhtml new file mode 100644 index 0000000..0022b95 --- /dev/null +++ b/docs/vol1/xhtml/p-036.xhtml @@ -0,0 +1,65 @@ + + + + + +第15章 CGI + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 若い世代への憂慮あるいは杞憂きゆう

+
+

私は昔SF少年でした。小・中・高と学校の図書館にあるあらゆるSF分野の本を制覇しましたし、それに飽き足らず『ペリー・ローダン』シリーズにまで手を出していました。当然のように途中で挫折しましたが。

+

最近は堕落してすっかりSFを読まなくなりました。最後に読んだのは何かなあ。J. P. ホーガンの『未来の2つの顔』かもしれません。

+

さて、その少年期に感銘を受けた作品の1つがバン・ボークトの『宇宙船ビーグル号の冒険』です。そういえば小学校の夏休みにこの作品で読書感想文を書いて、先生に変な目で見られたなあ(遠い目)。

+

とにかく、この作品中でビーグル号が訪れるある惑星の文明は「クアール」という究極生命体を作り出したものの、宇宙に進出することはできずに滅びてしまいます。彼らが宇宙に進出できなかった理由は、彼らの惑星には月がなく、かつその太陽の唯一の惑星であったため、まず月へ、それから外惑星へ、そして恒星間旅行へという段階的な宇宙開発を行うことができず、いきなり恒星間旅行を行うのは難しすぎた、というものでした。ま、確かにそういわれてみればもっともな理屈です。ステップ・バイ・ステップということですね。

+
+

ステップ・バイ・ステップ

+

ステップ・バイ・ステップといえば、コンピュータ分野においても同じことがあったように思います。私の幼い頃にはワンボードコンピュータというのが流行しました。できることといえば、せいぜい8セグメントLEDをつけたり消したり程度だったのですが、それだけでも大喜びの大人がたくさんいたのです(子供には高くて買えないおもちゃでした)。

+

次に現れたのがPC-8001やMZ-80のような「パーソナルコンピュータ」でした。これはZ80をCPUとし、16Kから32Kバイトのメモリで、BASICを実行できるコンピュータでした。もちろん、今のコンピュータとは比べものにならないくらい貧弱で、グラフィックもろくに扱えないようなものでしたが、それでもいろいろなソフトが登場しました。

+

それからPC-8801, PC-9801そしてIBM PCなどのコンピュータが次々に登場し、現在に続きます。今では、昔のコンピュータの数千、数万倍の処理能力や記憶容量を持ったPC上で、UNIX(Linuxや*BSD)を動かすことができます。というか、UNIX系OSが必要とするリソースのほうが少なかったりするんですよね。時代は変わったもんです。

+
+
+ +

憂慮

+

私自身は生まれたタイミングのおかげでこれらの変化をリアルタイムで経験してきました。しかし、それらを歴史としてしか知りようのない今の若い世代はいったいどうなんでしょう?

+

ソフトウェアに関しても、昔ならたとえばゲームでも、キャラクタが動き回るだけでも結構その気になったものです。私は今でもrogueが好きなのですが、あのノリですね。自分でもちょっと頑張れば作れそうだというのが感じられました。

+

しかし、今、PS2のゲームを目の当たりにして、「あれと同じようなものを作ってやろう」と本気で考えられる若者がどのくらいいるのでしょう。それはまさに「いきなり恒星間旅行」と同じ困難さなのではないでしょうか?

+

以前に比べてこれだけコンピュータが普及したにもかかわらず、プログラミング人口はそれほど増えていないような気がします。昔は「コンピュータやってる」は「プログラミングしてる」とほぼイコールだったのですが、今コンピュータを使ってる人でも、プログラミングする人なんてめったに見ません。

+

「まあ、母集団が増えてるんだから」ともずっと思っていたのですが、先日、母校の先生をしている人と話をしたのですが、やはり情報系学部の入学生のうちプログラム経験者の割合はむしろ減っているそうです。

+

もしかしたら、大ピンチ? パーソナルコンピュータの発展とリアルタイムに連動した私たちの世代から大きく外れた若い人たちが主流になる時代になったら、日本のプログラマーは枯渇するのでは? なんて心配したりするのです。

+
+
+

希望

+

ただ、希望がまったくないわけではないと思うのです。いくつか希望の持てる現象も見えるからです。

+

まず、第一にRubyを始めとするスクリプト言語の流行です。インタプリタ主体のスクリプト言語は往年のBASICのように、すぐプログラム、すぐ実行、すぐ修正して、また実行というお手軽開発が可能です。これはプログラム開発の敷居を低くして、より多くの人を呼び込むことができるかもしれません。

+

第二に、今回テーマにしたCGIなどのWebプログラミングです。WWWは世の中を変えましたが、プログラム環境も変えました。GUIが主体で肥大化する一方だったソフトウェアに対して、CGIプログラムはごく小規模なプログラムで実現でき、手軽に達成感を得られます。この達成感こそプログラマーの自己実現になにより必要なものだと思います。

+

第三に、WWWそのものもプログラマーを救う、かもしれません。今まで高い書籍や図書館にしかない学会誌でしか得られなかったような知識がWWWを通じてどんどん得られます。昔は論文探しに苦労したようなテーマでも、今はサーチエンジンで検索をかければあっという間に情報を収集できます。プログラミングにおいて知識は力ですから、WWWによる知識は大きな希望だと思います。

+

第四に、オープンソースソフトウェアの存在です。オープンソースという単語こそ最近作られたものですが、その考え方そのものはフリーソフトウェアとして相当古くから存在していました。しかし、これだけ世間に認知されるようになったのはやはり大きな変化でしょう。

+
+

政治家が「オープンソース的政治」などと聞くと「優しい独裁者モデルを採用する気か」と吹き出しそうになりますが、それはそれとして、プログラマーの最良の教科書はソースコードですから、オープンソースソフトウェアのソースコードはこれ以上とない情報の宝庫です。これも今の時代の希望的側面でしょう。

+
+
+

杞憂

+

というわけで、このような希望により、私の「プログラマー危機説」は杞憂かもしれません。いや、そうであればこれほどうれしいことはありません。

+

しかし、油断は禁物です。人生の先輩として、これからも機会をとらえてはプログラミングの大切さと楽しさを説いて回らねばなりません。

+

とはいうものの、こういうことを考えるようになったということは、それはすなわち歳をとったということを意味するような気がします。ああ、いやだ、いやだ。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-037.xhtml b/docs/vol1/xhtml/p-037.xhtml new file mode 100644 index 0000000..2314f3c --- /dev/null +++ b/docs/vol1/xhtml/p-037.xhtml @@ -0,0 +1,667 @@ + + + + + +第16章 Rubyで作るCGI + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay16 +
+

+初等Ruby講座
+Rubyで作るCGI +

+
+

[Linux magazine, 2002年9月号]

+
+

前章に引き続き、CGIについて解説しています。今回はサンプルとしてFAQ管理システムを作っています。現代のWebアプリケーション開発に比べるとだいぶ原始的な印象がありますね。しかし、私は昔も今もほとんどWebアプリケーション開発の経験はないはずなんですが、意外と(?)ちゃんとしたCGIアプリケーションを開発してますね。

+

「Ruby開発日記」では、フリーソフトウェアな生活について語っています。現代においてはオープンソースソフトウェアは一般的になり、知名度も高まりましたが、それぞれの開発者がどのように生活を成り立たせているかについてはあまり知られているとは言えません。20年前であればなおさらです。ここではそのうちのいくつかについて解説しています。具体的には「副業」「出版」「寄付」「パトロン」をあげています。本質的な部分は年月によっては変わらないようで、現代でも同じような収入モデルです。ただ、オープンソース開発者を支援しようという企業は昔よりははるかに増えています。ちょうどこの原稿を書いている頃に私はRubyの開発がほぼ専業になりましたが、あの頃、オープンソースソフトウェア開発だけで食べている人は(少なくとも国内には)ほとんどいませんでしたが、今ではRubyに限らずいろいろなオープンソース開発者が、それだけで食べれるようになってきています。GitHub SponsorsやPatreonの存在も大きいでしょう。

+
+
+

前回はCGIプログラミングの基本を学びました。今回は実際に使えるFAQ管理CGIプログラムを作成します。CGIプログラムを作るうえで便利なRubyライブラリも紹介します。

+
+
+

Do It Yourself

+
+

www.ruby-lang.orgにはRAA(Ruby Application Archive)と呼ばれるページがあります(http://www.ruby-lang.org/en/raa.html)。このページはRubyで書かれたプログラム、ライブラリ、ドキュメントなどなどを登録するページなのですが、現在登録プロジェクトが628エントリあって、今も増加中です。

+ +

このページは、

+
    +
  • 一覧はない

  • +
  • ダウンロード支援はない

  • +
  • 検証はない

  • +
  • 検索はない

  • +
+

と、ないないずくしなのですが、それでも結構愛用されています。それは、メンテがほぼ不要で自動化されているという点にあると思います。

+

気軽にプロジェクトを登録できる点や、プロジェクトの個々のオーナーが自分で更新・管理できるので、管理者のチェック待ちなどのタイムラグがなく、情報が常に最新に保てることなどが「使いやすさ」の秘密ではないかと考えています。もちろん、PerlのCPAN(Comprehensive Perl Archivers Network)に比べると「おもちゃ」のようなものなのですが。

+

Ruby 1.6 のドキュメント(http://www.ruby-lang.org/ja/man-1.6/)はRWikiで管理されているのですが、これも間違いや不十分な記述があれば、自分で修正できるのがなかなか便利です。

+

このように「自分でできる」ということは、主体的な参加を促したり、情報の更新が簡単だったり、管理のコストを下げたりといろいろ便利なことが多いのです。

+

そこで、今回(と次回)はCGIを利用して、このような自分でできるツールを開発してみたいと思います。

+
+
+

これってFAQ?

+
+

で、どのようなツールを作ろうか、と少し考えてみました。最初は使い勝手が悪いと評判のRAAを改善するかとも思いましたが、RAAなんてのはどこにでも必要なツールじゃありません。RAAのソースを見ても「これ使ってみよう」って人はそんなにいないでしょう。

+

そこで思い付いたのがFAQマネージャです。FAQなら、たいていの人がいろんなテーマで必要とすることもあるでしょう。ついでにRubyのFAQもこれで管理しようかなあ。

+

このFAQマネージャへの要求として以下のものをリストアップしてみました。

+
    +
  • 簡単な実装(サンプルですから)

  • +
  • 利用が簡単

  • +
  • インストールも簡単

  • +
  • 認証は行わない(誰でも書き換え可)

  • +
  • 同一サイトで複数FAQを管理できる

  • +
+

最終的にはこれだけの条件を満たすものを作るつもりです。

+
+
+ +

基本設計

+
+

このプログラム(AutoFAQ という名前にしました)の機能を表16.1に示します。

+
+

表16.1●AutoFAQプログラムの機能一覧

+ + + + + + + + + + + + + + + + +
FAQのインデックスを表示する
FAQの各エントリを表示する
FAQに質問を追加する
FAQに答えを書く
FAQを検索する
+
+

というわけで、使い勝手を決めるためにまず画面設計を行います。HTMLファイルをあれこれいじって、こういう感じはどうだろうかと用意したものが図16.1です。

+
+ +
+ fig1601 +
+

図16.1●質問の入力画面

+
+

最初の画面にはインデックス、検索、最近更新された項目、それから未回答項目の表示くらいがあればよさそうです。質問の入力画面は図16.2、回答の表示画面は図16.3です。表示をコンパクトにするために質問も回答も概要と詳細に分けてみました。

+
+ +
+ fig1602 +
+

図16.2●質問の入力画面

+
+
+ +
+ fig1603 +
+

図16.3●回答の表示画面

+
+
+
+ +

下準備

+
+

ここまで設計できれば、今度は実装に取り掛かろうと思います。

+

でも、その前に既存のライブラリを使って手抜きできるところがあるはずです。今回のプログラムで使おうと思っているライブラリには以下のものがあります。

+
    +
  • cgi    CGIインターフェイス
  • +
  • pstore オブジェクト指向データベース
  • +
  • kconv  文字コード変換
  • +
+

これらのライブラリを使えば、実装の詳細を知らなくても高度な機能を利用できます。これらライブラリについてひととおり説明しておきます。

+
+
+

cgiライブラリ

+
+

cgiについては先月学びましたが、ここで復習と補足をしておきます。cgiライブラリはCGIクラスを提供し、このクラスはCGIプロトコルを解釈し、クライアントからのリクエスト情報の取り出しを行ってくれます。

+
+
cgi = CGI.new
+name, = cgi["name"]
+
+

また、先月は説明しませんでしたが、CGIクラスはクライアントへの出力と、HTML生成の機能もあります。たとえば、cgi.printメソッドはcgi出力先(通常は標準出力)への出力を行います。また、cgi.headerメソッド はCGIの先頭に必要なヘッダー情報を生成してくれます。

+
+
cgi = CGI.new
+cgi.print cgi.header("text/html")
+
+

HTML生成機能はネストしたHTML構造をメソッドを使って表現するものです。たとえば、

+
+
<A HREF="http://www.ruby-lang.org/">Ruby</A>
+
+

は、

+
+
cgi.a("href"=>"http://www.ruby-lang.org/"){"Ruby"}
+
+

となります。変換の仕組みは、

+
    +
  • 属性はハッシュ引数

  • +
  • ボディはブロック(で指定する文字列)

  • +
+

になります。リスト16.1にAutoFAQの一部、テーブルの出力を行う部分を抜粋します。その出力結果は図16.4のようになります。

+ +
+

リスト16.1●CGIクラスによるHTML出力

+
cgi = CGI.new("html4Tr")
+.... 中略 ...
+cgi.print cgi.tr {
+  cgi.td("height"=>"100%", "valign"=>"top"){
+    q.a + cgi.div("align"=>"right"){
+      cgi.font("size"=>"-1"){"回答更新: #{q.atime}"}+cgi.br+
+        cgi.a("href"=>"#{FAQ_PROG}?mode=Entry&id=#{q.faq_id}"){"詳細を見る"}
+    }
+  }
+}
+
+
+
+
+
<TR><TD height="100%" valign="top">これは答えの例です<DIV align="right">
+<FONT size="-1">回答更新: Wed Jul 10 02:54:48 JST 2002</FONT><BR>
+<A href="autofaq?mode=Entry&amp;id=2">詳細を見る</A></DIV>
+</TD></TR>
+
+

図16.4●CGIクラスによるHTML出力結果(折り返してあります)

+
+

HTML出力を行うためには、CGIクラスのオブジェクトを作るときに出力するHTMLタイプをnewの引数として指定する必要があります。HTMLタイプは、表16.2に示すタイプのいずれかです。

+
+

表16.2●inputタグのtype

+ + + + + + + + + + + + + + + + + + + + + +
引数出力されるHTML
html3HTML 3.2
html4HTML 4.0(Strict)
html4TrHTML 4.0 Transitional
html4TrHTML 4.0 Frameset
+
+

cgiライブラリには他にもHTMLのエスケープを行うメソッド、クッキーを扱うメソッドなどがあります。

+
+
+

pstoreライブラリ

+
+

pstore(persistent store:(オブジェクトの)永続的保存)はRuby流オブジェクト指向データベースです。その特徴は以下のとおりです。

+
    +
  • marshalを使って任意のRubyオブジェクトをそのまま格納できる

  • +
  • 使いやすいインターフェイス

  • +
  • トランザクションがある

  • +
+

pstoreにはデータを一度全部メモリに読み込むので大規模データベースには向かないという欠点もあります。しかし、今回のFAQマネージャのような小規模のデータベースならあまり問題になることはないでしょう。

+ +

pstoreのデータ構造は図16.5のようになっています。

+
+ +
+ 1605 +
+

図16.5●pstoreのデータ構造

+
+

pstoreオブジェクトにはrootと呼ばれるテーブルがあって、オブジェクトに名前を付けて登録できます。登録されたオブジェクトと、そのオブジェクトから間接的に参照されているオブジェクトがデータベースに格納されます。

+

pstoreは、ほとんどあらゆるRubyオブジェクトを格納できますが、いくつか扱えないオブジェクトがあります。

+
+

IO

+

オープンしたIOオブジェクトはデータベースに入れられません。別のプロセスに持ち込めないからです。

+

拡張モジュールが定義した特殊オブジェクト

+

これもデータベースへの保存方法がわからないので保存できません。

+
+

pstoreオブジェクトの使い方は次のとおりです。

+
    +
  1. オープンする
    +まずはデータベースをオープンして、PStoreデータベースオブジェクトを得ます。
    +
    +
    db = PStore.new(path)
    +
    +pathにはデータベースファイルのパスを指定します。
  2. +
  3. トランザクションを開始する
    +トランザクション とはデータベース処理の単位です。データベースに対する処理はトランザクション単位で書き込まれますので、トランザクションの途中で、例外が発生するなど処理が失敗したときにはデータベースの状態はトランザクション開始前の状態にとどまります。トランザクションはtransactionメソッド にブロックを指定することで開始します。
    +
    +
    db.transaction {
    +  ...
    +}
    +
    +ブロックを抜けるとトランザクションが終了します。
  4. +
  5. rootの登録、取得
    +PStoreオブジェクトは一種のハッシュとして扱えます。rootへのオブジェクト登録・取得は[]メソッドを使います。
    +
    +
    db["foo"] = object  # rootの設定
    +db["bar"]           # rootの取得
    +
    +ただ、ハッシュと違って未登録のrootの取得はエラーになりますから、データベースにrootが登録されているかどうか定かでない場合には、あらかじめ確認する必要があります。データベースに登録されているすべてのroot名の一覧を得るのは
    +
    +
    db.roots         # root名一覧
    +db.root?("foo")  # root名fooがあれば真
    +
  6. +
  7. トランザクションの終了
    +transactionメソッドに指定したブロックの実行が終わればトランザクションは自動的に終了し、データベースから参照されている全オブジェクトの現在の状態がファイルに書き込まれます。
    + トランザクションの途中で強制的にトランザクションを終了させるメソッドも用意されています。commitメソッドはトランザクションを正常終了させます。transactionメソッドの実行も終了します。abortメソッドはトランザクションを強制的に中断します。データベースへの変更はファイルに書き込まれず、トランザクション開始前の状態のまま残されます。abortメソッドもtransactionメソッドの実行を中断します。
    + CGIでは複数同時に起動された場合に対応するためデータファイルへのロックが必要になるのですが、pstoreは内部で自動的にロックして排他処理してくれますので、その点でも心配せずに使えます(ただし、Ruby 1.4添付のpstoreはロックを行いません。新しいものを使ってください)。
  8. +
+

pstoreの注意として、データベース内のオブジェクトへの参照と更新は必ずトランザクション内で行ってください。途中のオブジェクトを取り出してトランザクション外で状態を変更してもエラーにはなりませんが、その変更はデータベースには反映されません。

+
+
db_data = nil
+db.transaction {
+   db["foo"] = [1,2,3]
+   db_data = db["foo"]  # 持ち出し
+}
+# トランザクション終了
+
+# データへのアクセスは可能
+p db_data[0]            # => 1
+
+# データの更新も可能だがDBには反映されず
+p db_data[0] = 42
+
+

手前みそながら、pstoreはCGIに限らず非常に使い勝手がよいので、ぜひ活用してください。先にも述べたとおり、pstoreは大規模なデータベースを扱えない(遅くて重くなる)という欠点がありますので、その場合には今度はPostgreSQLやMySQLなどのRDB(関係データベース)を使うとかする必要があります。

+

でも、pstoreはあまりにも楽に使えるので、RDBへの移行が面倒になるんですよねえ。

+

RDBアクセスなら、RubyにはDBIライブラリという各種関係データベースを統一的なAPIでアクセスできるライブラリがありますので、これを使うのもよいでしょう。

+
+
+ +

kconvライブラリ

+
+

kconvは文字コード変換用のライブラリです。歴史的な事情から日本語を表現する文字コードは複数あります。主要なものはWindows, Macなどで使われてきたシフトJIS(SJIS)、UNIXで用いられることの多いEUC(Extended UNIX Code)、メールなどで用いられるJIS(ISO-2022-JP)、それから最近いろいろ話題になっているUnicodeの表現形式の1つUTF-8があります。

+

kconvはこれらのうち、最初の3つ(SJIS, EUC, JIS)の相互変換を行います。Unicodeは変換のためにテーブルが必要ですし、まだそれほど広くは使われていないので今回は扱わないことにします。

+

kconvライブラリの提供するKconvモジュールには表16.3のメソッドがあります。また表16.4のメソッドをStringクラスに追加します。

+
+

表16.3●Kconvモジュールのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
guess(str)文字コードを判定
kconv(str,o[,i])文字コード変換(oからiへ)
toeuc(str)EUCに変換
tojis(str)JISに変換
tosjis(str)SJISに変換
+
+
+

表16.4●Stringクラスに追加されるメソッド

+ + + + + + + + + + + + + + + + + + + + + +
メソッド説明
kconv(o[,i])文字コード変換(oからiへ)
toeucEUCに変換
tojisJISに変換
tosjisSJISに変換
+
+

kconvメソッドには変換先の文字コードと変更元の文字コードを指定します。文字コードの指定にはKconvモジュールで定義されている定数を使います(表16.5)。

+
+

表16.5●文字コード指定の定数

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
定数説明
AUTO自動変換
JISJIS(ISO-2022-JP)
EUCEUC-JP
SJISSHIFT_JIS
BINARYバイナリ(guessメソッドが返す)
NOCONV無変換(変換先として指定; 何もしない)
UNKNOWN不明(guessメソッドが返す)
+
+

たとえばある文字列をJISに変換するためには、

+
+
Kconv.kconv(str, Kconv::JIS)
+Kconv.tojis(str)
+
+

のようにします。

+
+
+ +

プログラムの構造

+
+

さて、道具の説明はこれくらいにして、本題のプログラムに戻りましょう。まずAutoFAQの機能構成を図にしておきます(図16.6)。

+
+ +
+ 1606 +
+

図16.6●AutoFAQ 機能構成

+
+

使い勝手のため、「最新項目の表示」「新質問の登録」「検索結果の表示」にはどのページからもリンクを張っておきます。また、ページの一部に質問のインデックスを用意し、「個々の項目の表示」にもジャンプできるようにしておきます。

+

インストールを簡単にしたいという要求があるので、これらを全部1つのプログラムにまとめて、機能を引数で指定することにします。具体的にはmodeというhidden fieldを用意して、その値によって切り替えることにしましょう。

+

全体の処理を擬似コードにすると図16.7のようになります。

+
+ +
+ 1607 +
+

図16.7●AutoFAQの処理の流れ

+
+
+
+

初期化とカスタマイズ

+
+

AutoFAQの初期化とカスタマイズファイルの読み込み部分をリスト16.2に示します。

+ +
+

リスト16.2●初期化とカスタマイズファイル読み込み

+
# 必要とするライブラリのrequire
+require 'cgi'
+require 'kconv'
+require 'pstore'
+
+# FAQプログラムの取り出し
+FAQ_PROG = File.basename($0).untaint
+# FAQデータディレクトリ
+FAQ_DIR = "/var/lib/www-data/"
+
+faq_conf = FAQ_DIR+FAQ_PROG+".conf"
+if File.exist?(faq_conf)
+  load faq_conf
+end
+
+FAQ_DATA = FAQ_DIR+FAQ_PROG unless defined? FAQ_DATA
+FAQ_TITLE = "AutoFAQ"       unless defined? FAQ_TITLE
+RECENT_N_ITEMS = 10         unless defined? RECENT_N_ITEMS
+
+
+

まず先頭で必要とするライブラリをrequireしています。先に説明したとおり、このプログラムではcgi, kconv, pstoreを用います。

+

それからこのプログラム名を取り出します。このためにスクリプトのパス名が格納されている変数 $0からファイル名の部分を取り出します。

+

それから設定ファイルを読み込みます。/var/lib/wwwディレクトリ以下にある、

+
+
<プログラム名>.conf
+
+

というファイルをロードします。たとえばプログラムがautofaqという名前であれば、設定ファイル名はautofaq.confになります。このファイルは通常のRubyプログラムで、その中でプログラムが参照する定数を定義することで、プログラムの設定を行うことができます。設定に使われる定数を表16.6に示します。

+
+

表16.6●AutoFAQ設定用定数

+ + + + + + + + + + + + + + + + + +
定数説明
FAQ_DATApstoreデータベースのファイル名
FAQ_TITLEFAQのタイトル
RECENT_N_ITEMS最新項目を最大いくつ表示するか
+
+

そして最後に設定ファイルの内部で定数が定義されなかった場合のためにデフォルト値を定義します。defined?はその定数が定義されていたときに真を返します。

+
+
+ +

メイン処理部

+
+

AutoFAQのメインの処理部をリスト16.3に示します。やっていることはCGIオブジェクトの生成とpstoreのトランザクション開始、それからmodeパラメータに従ってそれぞれの処理を呼び出しているだけです。Commit処理だけはデータベースの書き込みがあるので、最初に専用のトランザクションを開始して書き込みを行っています。

+
+

リスト16.3●AutoFAQメイン処理部

+
def faq_main
+  cgi = CGI.new("html4Tr")
+  mode, = cgi["mode"]
+  unless mode
+    mode = "Recent"
+  else
+    mode = mode.capitalize
+  end
+  page_header(cgi)
+  db = PStore::new(FAQ_DATA)
+  db.transaction do
+    if mode == "Commit"
+      do_commit(cgi, db)
+    end
+  end
+  db.transaction do
+    show_index(cgi, mode, db)
+    case mode
+    when "Recent"
+      show_recent(cgi, db)
+    when "Entry"
+      show_entry(cgi, db)
+    when "Commit"
+      show_commit(cgi, db)
+    when "Submit"
+      show_submit(cgi, db)
+    when "Update"
+      show_update(cgi, db)
+    when "Search"
+      show_search(cgi, db)
+    else
+      show_recent(cgi, db)
+    end
+    show_unanswered(cgi, db)
+  end
+  page_footer(cgi)
+end
+
+if __FILE__ == $0
+  faq_main
+end
+
+
+ +

プログラム最後の

+
+
if __FILE__ == $0
+  faq_main
+end
+
+

は、プログラムとして起動したときだけfaq_mainを実行するためにイディオムです。このイディオムを使うとスクリプトファイルをプログラムとしてもライブラリとしても使えるようになります。

+
+
+

データベースの構造

+
+

では、FAQのデータを格納するデータベースを設計しましょう。データベースに必要だと思われる項目を表16.7に示します。

+
+

表16.7●データベースレコード

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
項目説明
@faq_id項目のユニークID
@q質問の概要
@q2質問の詳細
@a回答の概要
@a2回答の詳細
@qtime質問時間
@atime最終回答時間
+
+

これを配列にまとめてもよいのですが、将来データ構造の変更などに対処しやすくするためにクラスとして定義します。クラス名はFAQ::Entryとします。

+
+
+ +

各機能の実装

+
+

ここまでくれば後は各機能の実装です。機能を実現するメソッドを表16.8に示します。

+
+

表16.8●機能実装メソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
page_headerヘッダーの表示
do_commitデータベースへの書き込み
show_indexインデックス表示(画面左側)
show_recent最新の項目表示
show_entry個別項目の詳細表示
show_commitコミット結果表示
show_submit質問入力フォーム表示
show_update回答入力フォーム表示
show_search検索結果の表示
show_unanswered未回答項目の一覧(画面右側)
page_footerフッターの表示
+
+

完成したプログラムautofaq.rbをCD-ROMに収録していただきました。各機能の実装についてはこちらを参照してください。私のプログラムらしくコメントもほとんどありませんが、割と素直に書いてあるので(短いし)読めないことはないでしょう。

+
+
+

インストール

+
+

AutoFAQのインストールと設定は以下のとおりです。root権限で行ってください。

+
    +
  1. autofaq.rbをCD-ROMからCGIの実行できる場所にコピーする
    +RedHat系ですと /var/www/cgi-binとかになるでしょう。HTTPサーバーの設定ファイル(httpd.confなど)を参照してください。ファイル名はCGIコマンドとして使いたい名前がよいでしょう(ここではfaqとします)。お使いのマシンでRubyインタプリタのパスが /usr/bin/rubyでない場合には先頭の行を書き換えてください。 +
    +
    % cp autofaq.rb /var/www/cgi-bin/faq
    +
    +複数FAQを管理したい場合にはこの手順を複数回行います。
  2. +
  3. データを置くディレクトリを用意する
    +標準では /var/lib/www-dataです。このディレクトリはCGIプログラムの実行権(ユーザーapache(RedHat系)とかwww-data(Debian)とか)で書き込みができるようにしておいてください。 +
    +
    % mkdir /var/lib/www-data
    +% chown apache.apache /var/lib/www-data
    +
  4. +
  5. (必要ならば)設定ファイルを用意する
    +なければデフォルト値が使われます。 +
    +
    % vi /var/lib/www-data/faq.conf
    +
  6. +
+

私はこのプログラムの著作権を行使しません。いかようにもお好きにお使いください。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-038.xhtml b/docs/vol1/xhtml/p-038.xhtml new file mode 100644 index 0000000..010f0de --- /dev/null +++ b/docs/vol1/xhtml/p-038.xhtml @@ -0,0 +1,71 @@ + + + + + +第16章 Rubyで作るCGI + + + + +

Matz Essays Volume 1

+ + +
+

◆ Ruby開発日記 ◆ フリーソフトウェアな生活

+
+

先日某雑誌から取材を受けて、「好きなことをして食べていけるようになった秘密ってなんですか?」と尋ねられました。そのときには「運がよかったからです」と答えたのですが、本当にそうだったのでしょうか。

+

確かに私はフリーソフトウェアの開発に自分の仕事の時間のほとんどを費やしています。「フリーは無料の意味ではない」とはよくいわれます。しかし無料の意味ではなくても、フリーソフトウェアの利用に当たってお金を払う必要がない、つまり無料であるというのも事実です。

+

つまり、どんなに優れたフリーソフトウェアを作っても、そのままでは食べていくことはできない、ということです。今回はフリーソフトウェア開発者がいかに生活を維持するかという点について考察してみましょう。

+
+

副業モデル

+

フリーソフトウェア開発者の生活のうち、一番簡単なモデルを私は「副業モデル」と呼んでいます。つまり、学生なりサラリーマンなりの安定した本来の生活があって、余暇の時間をフリーソフトウェアの開発にあてるというモデルです。フリーソフトウェアの開発はあくまでも趣味であるという立場ですね。

+

ほとんどのフリーソフトウェア開発者の立場がこれです。私自身も1997年に今の会社に転職するまではこうでした。このモデルはリスクが少なく現実的なモデルですが、3つほど欠点があります。

+

まず第一に時間は有限であるという点です。当たり前のことですが1日の長さは一人当たり24時間と決まっています。普通の生活とフリーソフトウェアの両方を行おうと思ったらどうしても時間が足りなくなります。眠る時間を少々削っても得られる時間はたかが知れています。かといって仕事をおろそかにするのはお勧めできませんし(私自身はおろそかにしていたことがあります。悪い見本です)。

+ +

第二の欠点は自己満足以外に見返りがない点です。自分の開発するフリーソフトウェアが使われるようになってくるとユーザーからの反応が得られるようになってきます。また、感謝の言葉も聞けるようになります。それはとてもとてもうれしいことなのですが、しかし、だからといって寝食を忘れてつぎ込んだ時間に対する見返りとして果たしてこれで十分だろうかという思いがよぎることもあります。

+

最後の欠点はプロジェクトの安定性が欠けることです。このモデルの開発はあくまでも余暇の時間に行われますから、開発者の生活の変化に弱くなります。たとえば、学校を卒業して就職し時間がなくなった、結婚して子供が生まれた、などなどの外部的な要因でプロジェクトが中断する例も数々あります。

+
+
+

出版モデル

+

そこで次のモデルが考えられます。それはそのフリーソフトウェアに関連する文章を書いて、その原稿料・印税によって収入を得るというものです。雑誌を買ったり、本を買ったりして、文章に対してお金を払う仕組みは長い時間をかけて確立されているので、これを利用しない手はありません。実際に私は『オブジェクト指向スクリプト言語Ruby』(アスキー)などの書籍や、この原稿のように文章を書くことでいくばくかの収入を得ています。

+

なかなかうまい手のように感じられますが、このモデルにもいくつか欠点があります。

+

最初のそして最大の欠点は、この収入はフリーソフトウェアの開発そのものではなく、その関連文書によるものだということです。フリーソフトウェア開発者はプログラマーですが、ライターではないのでなかなか思うように文章を書けません。私もこの連載で毎月苦労しています。また、関連文章は開発者でなくても書けるという点も見逃せません。

+

二番目の欠点は生活を維持するほどの収入は得られないという点です。一般書籍のように数万部とか数十万部の売り上げがあれば別ですが、コンピュータ関係の書籍はそれほどは売れないものです。印税や原稿料で生活はできません。

+

ということで、「出版モデル」は使えたとしても補完的な役割として利用することになりそうです。

+

このモデルで成功するためには、

+
    +
  • 話題になるフリーソフトウェアを作る

  • +
  • 文章力をつける

  • +
+

の2つが必要になります。あ、後者は私もそんなにはないかな。

+
+
+

寄付モデル

+

FSF(Free Software Foundation)などはこのモデルです。フリーソフトウェアによって恩恵を受けている人々や企業からの寄付を受け、その資金でフリーソフトウェアを開発するというものです。ただ、恵まれたものの当然の行為として寄付が定着しているアメリカのような国ではともかく、あまり寄付や献金が(政治献金は除いて(苦笑))定着していない日本では難しいモデルのように感じます。

+
+
+ +

パトロンモデル

+

となると、フリーソフトウェアの開発だけで食べていくにはどうしたらよいのでしょう。私の考える究極のモデルが「パトロンモデル」です。

+

昔の芸術家はお金持ちの貴族によって養われていたそうです。貴族はその芸術家の作品を自分のものにできる特権と同時に「あの芸術家を支援している」という名誉を得ることができました。

+

芸術家を開発者に置き換えると、フリーソフトウェア開発におけるパトロンモデルになります。1997年以来、私は(株)ネットワーク応用通信研究所の主任研究員として、Rubyの開発とそれからその他フリーソフトウェアを用いた開発への技術支援を仕事として雇用されています。(株)ネットワーク応用通信研究所は私を雇用する代わりに、さまざまなメリットを受けています(そのはずです)。

+

確かにこれはいうほど簡単なことではありません。まだまだ景気は思わしくなく、パトロンになりたがる企業もそれほどたくさんは見出せないかもしれません。しかし、日本におけるフリーソフトウェア開発が軌道に乗るためには、

+
    +
  • 重要なフリーソフトウェア

  • +
  • それを支援したい団体・企業

  • +
+

の両方がもっとたくさん登場する必要があると思うのです。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-039.xhtml b/docs/vol1/xhtml/p-039.xhtml new file mode 100644 index 0000000..641390a --- /dev/null +++ b/docs/vol1/xhtml/p-039.xhtml @@ -0,0 +1,521 @@ + + + + + +第17章 CGIの道具箱 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay17 +
+

+初等Ruby講座
+CGIの道具箱 +

+
+

[Linux magazine, 2002年10月号]

+
+

CGIアプリケーションを作るときに便利なツールを紹介しています。もっとも、これらのうち、現在でも活用されているのはerubyだけですね。erubyはRailsなどでもViewの実装に使われています。時代を超えたツールですね。

+

「Ruby開発日記」は、「時代はLispに追いついたか」というテーマで話しています。Lispというのはすばらしい特質を多く持った言語ですし、私も大変大きく影響を受けました。が、どうにも人気がありません。本文中では「10年経ったら、世の中がLispを受け入れるかどうかわかる」というようなことを書いていますが、実際20年経ってもLispが当たり前の世界は来ていません。ただ、JavaScriptやRuby, PythonなどLispの特徴を一部受け継いだ言語はだいぶ一般的になりました。また、ClojureというLispベースの言語が登場したのは、以前よりもずっとLisp的な世の中が来ている証拠と言えるかもしれません。いや、やっぱり、そこまでは言えないかな。

+
+
+

今月はCGI開発の不満を解消する便利なツールをいくつか紹介しようと思います。

+
+
+

告白

+
+

白状しますが、私は普段ほとんどCGIプログラミングをしません。ですから、CGIについてはエキスパートどころかほとんど素人の隣といったレベルです。そういう人がCGIの解説記事を書いている時点ですでに問題ありのような気がしないでもないのですが、CGIはRubyを活用したい最も「ホット」な分野でしょうから解説しないわけにもいきません。もし間違いを見つけたらこっそり教えてくださいね。

+

今月はCGIプログラミングに便利な以下のツールを紹介します。

+
+
+
+

cgi/session.rb

+
+

HTTPプロトコルをベースにしたWebアプリケーションを開発するときに問題となる点は大きく分けると2つあります。それは、

+
    +
  • HTMLの表現力の限界

  • +
  • HTTPのステートレス性

  • +
+

です。前者はHTMLではインターフェイス部品がformタグのバリエーションしかないため、ちょっと気の利いたGUI的部品を使うことができないという問題です。これを解決するために古くはJava Applet, 最近はMacromedia Flashなどが活用されています。これらも面白い話題ではあるのですが、本連載の範囲を超えますので扱わないことにします。

+

で、後者の問題ですが、「ステートレス性」とはつまり「HTTPのやりとりには状態がない」という意味です。HTTPのやりとりの基本は、リクエストとそれに対するレスポンスという形になるのですが、HTTPにはこのリクエストはこのレスポンスの続きといった情報がありません。つまり、一連のやりとり(セッションといいます)に固有の状態を持たないわけです。

+

状態がないと何がまずいかというと、Webアプリケーションを構成する各ページ間での情報の共有が困難ということです。たとえば、オンラインショッピングのアプリケーションを作ったときに、ユーザーがどんな商品をいくつ注文したかという「状態」を覚えておかなければ、最後に注文を確認して精算することはできません。

+

そこでなんとかして状態を維持してセッションを実現する必要があります。HTTPを使ったやりとりでセッションを実現する方法は大きく分けると、hiddenフィールドを使ったものとクッキーを使ったものがあります。

+

hiddenフィールドとはformタグの一種で画面には表示されず、よってユーザーが入力したり修正したりすることもないformタグのことです。hiddenフィールドはsubmitボタンが押されると他のフィールドと同様にリクエストの一部としてサーバーに送られます。このhiddenフィールドにあらかじめ状態を格納することで、セッションを実現することができます。

+

一方、クッキーとはレスポンスに付加してブラウザに覚えさせておくことのできる情報です。クッキーに含まれる情報は、

+
    +
  • 有効期限(日付と時刻)

  • +
  • 有効範囲(ドメイン)

  • +
  • 名前(文字列)

  • +
  • 値(文字列)

  • +
+

です。

+

クッキー付きレスポンスを受けたブラウザはクッキーによって指定された範囲のURLに対してリクエストを送るとき、自動的にクッキーを付けて送ります。それによってサーバーは「ああ、このリクエストは以前のレスポンスに対する返答なんだな」ということを認識し、セッションを実現することができます。なお、クッキーに対応していないブラウザがあることには注意する必要があります。

+

しかし、セッションの維持のようなWebアプリケーションにほとんど必須の機能を実現するためにクッキーやらhiddenフィールドのような詳細まで立ち入りたくありません。このようなセッション処理は自動化できないものでしょうか。答えはもちろん「できます」です。そのためのライブラリがRubyに標準添付されているライブラリcgi/session.rbです。cgi/session.rbは上記のhiddenフィールドとクッキーの両方を試して、いずれかの方法でセッションを実現してくれます。

+

セッションを開始するためにはCGIオブジェクトを引数にして、CGI::Session.newを呼び出します。そのリクエストが以前開始されたセッションに所属している場合には、そのセッションに対応したセッションオブジェクトを返します。またリクエストがいずれにセッションにも所属していな場合には、新たにセッションを開始し、そのセッションに対応するセッションオブジェクトを返します。

+

CGI::Session.newにはCGIオブジェクトの他にSessionの設定を行うオプションがハッシュの形で設定できます(表17.1)。こんな感じですね。

+ +
+
session = CGI::Session.new(cgi, "tmpdir"=>"/var/tmp")
+
+

これによって、セッションのキーとして使う名前を指定したり、実際にデータを読み書きするバックエンドのクラスを指定したりできます。バックエンドにはデフォルトではファイルに対して読み書きを行うCGI::Session::FileStoreクラスが用いられます。

+
+

表17.1●CGI::Session.new のオプション

+ + + + + + + + + + + + + + + + + + + + + + + + + +
オプション説明
session_keyセッション(_session_key
session_idセッションID(自動生成)
new_session新規セッション(false
database_managerバックエンドクラス(CGI::Session::FileStore
session_pathクッキーのpath(無指定)
+
+

CGI::Session自身が解釈しなかったオプションは、そのままバックエンドに渡されます。デフォルトであるCGI::Session::FileStoreクラスは表17.2に示すオプションを受け付けます。

+
+

表17.2●CGI::Session.FileStoreのオプション

+ + + + + + + + + + + + + +
オプション説明
tmpdirファイルを置くディレクトリ(/tmp
prefixファイルのプレフィックス(なし)
+
+

sessionというセッションオブジェクトが存在するとき、

+
+
session[名前]
+
+

という形式で情報を取り出すことができます。事前にその名前で情報が保存されていない場合にはnilが返ります。情報の設定は、

+ +
+
session[名前] = 値
+
+

になります。「名前」も「値」も文字列を指定する必要があります。

+

セッションに関するアクセスを完了した場合には、

+
+
session.close
+
+

を実行します。session.closeは(実際にデータを処理するバックエンドによって異なりますが)、データの書き込みなどを行います。ほとんどの場合にはsession.closeを行わなくても、ガベージコレクタが後片付けをしてくれます。

+

もうセッションは完了した、このセッションに属する情報は使わないというときには、

+
+
session.delete
+
+

を実行します。session.deleteはこのセッションに属する情報を完全に消去してしまいますので、その情報を取り戻すことはできません。

+

cgi/session.rbの使い方の例をリスト7.1に示します。

+
+

リスト17.1●cgi/session.rbの使用例

+
#! /usr/bin/ruby
+
+require 'cgi/session'
+
+cgi = CGI.new("html4Tr")         # CGIオブジェクトを生成
+session = CGI::Session.new(cgi)  # セッションオブジェクトを生成
+if session['counter']            # counterという情報を取得
+  counter = Integer(session['counter'])
+else
+  counter = 1
+end
+
+# HTMLを出力
+cgi.out("charset"=>"euc-jp") {
+  cgi.html {cgi.head{cgi.title{"cgi/session example"}} +
+      cgi.body{cgi.h1{"cgi/session example"}+
+        cgi.p{if counter == 1 then
+          "最初のアクセスです"
+        else
+          sprintf "%d回目のアクセスです", counter
+        end
+      } + cgi.form('action'=>File::basename(cgi.script_name)) {
+        cgi.submit
+      }
+    }
+  }
+}
+session['counter'] = counter + 1 # 情報をセッションに保存
+
+
+ +

リスト17.1のプログラムはセッションにcounterという名前の情報を保存します。このCGIを以前に起動したことのないブラウザからこのCGIを起動すると「最初のアクセスです」と表示します。以後、submitボタンを押すか、URLを指定して直接アクセスすると、アクセスした回数を「◯回目のアクセス」というように表示します。

+

cgi/session.rbはデフォルトではセッションの情報を/tmpのファイルに保存します。明示的にセッションをdeleteメソッドで削除しない限りこのファイルは残ってしまいます。実運用時にはセッション情報ファイルの定期的な掃除が必要になるでしょう。あるいはファイルではなく、データベースなどに情報を格納するバックエンドを利用する方法もあります。具体的には『Rubyアプリケーションプログラム』(オーム社、ISBN4–274–06461–1)などに詳しい使い方が解説されています。この本ではPostgreSQLを使ったバックエンドの作り方も解説されています。

+

cgi/session.rbは(CGI関連のプログラムにしては珍しく)私が作ったものです。

+
+
+

mod_ruby

+
+

前々回にも説明しましたが、HTTPサーバーから見てCGIの実行は以下の手順で行われます。

+
    +
  1. HTTPリクエストを受け付ける
  2. +
  3. リクエストのURLを解析、CGIであるとわかる
  4. +
  5. CGIプログラムの起動(環境変数などを設定する)
  6. +
  7. CGIプログラムの出力の受け付け
  8. +
  9. ヘッダーの追加、調整などを行う
  10. +
  11. クライアントにレスポンスを送る
  12. +
+

この中で一番コストが高いのが実は(3)の「CGIプログラムの起動」です。新しいプロセスを起動することはOSにとって大仕事です。プログラムファイルを読み込み、新しいコンテキストを作り、プロセステーブルに登録し、スケジューリングを開始するなどやることはたくさんあります。とはいえ、普段の状態ではプロセス起動にかかる時間はコストが高いといってもコンマ1秒以下で、気になることはほとんどありません。しかし、負荷の高いサーバーでは毎秒数十から数百のCGIリクエストが発生する場合があります。このような場合にはOSにかかる負荷は相当のものがあります。

+

それを避ける方法はいくつかありますが、そのうちの1つがmod_rubyと呼ばれるものです。mod_rubyは、ApacheにRubyインタプリタを組み込んで、Rubyプログラムの実行をApacheの内部で実行するものです。これで毎回プロセスを起動する必要がなくなり、かなり負荷を軽減できます。

+ +

実際に簡単なCGIプログラムを対象にベンチマークを取ってみた結果を表17.3に示します。明らかに性能の違いがあることがわかります。ベンチマークに使ったCGIはHTML文字列を出力するだけのもので、処理そのものの負荷は非常に低いので、この数値はあくまでも一例にすぎません。

+
+

表17.3●mod_rubyの効果

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CGImod_ruby
並列度処理時間
(秒)
リクエスト/
転送レート
(バイト/秒)
処理時間
(秒)
リクエスト/
転送レート
(バイト/秒)
119.3395.1716.686.81414.6847.34
217.4115.7418.536.54915.2749.26
518.5765.3817.376.07516.4654.16
1018.0695.5317.857.22113.8545.57
+
+

いずれにせよ、アクセス数の大きなWebサーバーではmod_rubyは大きな効果がありそうだということがわかると思います。

+

mod_rubyは前田修吾さんが開発されました。

+
+
+

mod_rubyのインストール

+
+

もしあなたがDebianをお使いでしたら、それはラッキーです。Debianにはmod_rubyが標準でパッケージ化されていますので、パッケージシステムが適切にセットアップされていれば、必要なのは、

+
+
apt-get install libapache-mod-ruby
+
+

だけです。mod_rubyに限らずDebianではRuby関連のパッケージが充実しているので、たいていのものがapt-getだけでインストールできます。また、Vine Linuxでは、Vine Plusにmod_rubyのパッケージがあります。

+

もし、それ以外のシステムをお使いでしたら、自前でインストールする必要があります。自前でインストールといっても決して難しくありません。簡単な手順に従うだけです。

+
    +
  1. ダウンロード
    +現在の最新版はmod_ruby 1.0.0 です。
    +  http://www.modruby.org/archive/mod_ruby-1.0.0.tar.gz
    +を入手してください。
  2. +
  3. 展開
    +tar.gzファイルですから、tarを使って展開します。 +
    +
    % tar zxf mod_ruby-1.0.0.tar.gz
    +
    +
  4. +
  5. configureとmake
    +configure.rbがお手元のシステムの状態に合わせてコンパイル条件を決定してくれます。そのためにはapxsの位置を教えてやる必要があります。apxsはApache Extension Toolでモジュールがコンパイルできる条件を教えてくれるコマンドです。 +
    +
    % ./configure.rb --with-apxs=/usr/bin/apxs
    +% make
    +
    +
  6. +
  7. インストール
    +make installで終わりです。ただし、rootになっておく必要があります。 +
    +
    % su
    +# make install
    +
    +
  8. +
  9. mod_rubyの設定
    +インストールしただけではmod_rubyは使えません。Apacheの設定ファイルでmod_rubyを有効にする必要があります。具体的にはhttpd.conf
    リスト17.2の記述を追加する必要があります。
    + httpd.confを書き換えただけではApacheの設定は有効になりませんから、Apacheを再起動させてください。
  10. +
+
+

リスト17.2●mod_ruby用Apacheの設定

+
# モジュールのパスは環境に合わせて調整する
+LoadModule ruby_module /usr/lib/apache/1.3/mod_ruby.so
+
+<IfModule mod_ruby.c>
+  RubyRequire apache/ruby-run
+
+  # *.mrbをRubyスクリプトとして実行する
+  <Files *.mrb>
+  SetHandler ruby-object
+  RubyHandler Apache::RubyRun.instance
+  </Files>
+</IfModule>
+
+
+
+
+

mod_rubyを利用する

+
+

さて、上の設定が終わればmod_rubyを使うことができます。mod_rubyを使うに当たって注意すべき点をあげておきます。

+
+ +

NPHモード

+

mod_rubyで実行されるプログラムはNPHモードで実行されます。NPHとは(たぶん)non-parse-headerの略で、サーバー側でヘッダーの処理を行わないという意味です。NPHモードではプログラム側でクライアントに送るすべてのヘッダーを用意してやる必要があります。特にレスポンスの先頭にあるHTTPステータスラインは必須です。HTTPステータスラインは以下のような行です(取得に成功した場合)。

+
+
HTTP/1.1 200 OK
+
+

ただし、cgi.rbはプログラムがmod_rubyによって実行されていることを自動判別して、対応してくれますので、ヘッダーの出力をcgi.rbに任せていればこのことについて気にする必要はありません。

+
+
+

同一プロセス

+

mod_rubyはその動作原理上、RubyプログラムはWebサーバープロセス内で実行されます。ということは、$$ などで得られるプロセスidも同一になります。プロセスidが毎回異なることを仮定しているプログラムは動作が変わる可能性があります。

+
+
+

同一インタプリタ

+

mod_rubyは複数のRubyプログラムを同一のインタプリタで実行します。その結果、

+
    +
  • すでにrequireされたプログラムは再びrequireしない

  • +
  • グローバル変数の値が残ってしまう

  • +
  • プログラムが終了しても生き残る(GCで回収されない)オブジェクトがある

  • +
+

などの現象が起きます。

+

requireの問題などでmod_rubyを利用するとデバッグが難しくなるので、デバッグ中はCGIでテストして、ある程度安定してからmod_rubyでの実行に切り替えるというやり方が賢そうです。

+
+
+
+

CGIプログラミングの不満

+
+

先にも述べましたとおり、私はめったにCGIプログラムを作らないのですが、たまに作ると嫌になることが1つあります。それはCGIというものは基本的にHTMLを出力するものなので、プログラム中にprint文が多用されて、ロジックと混じり合ってしまうことです。特にテンプレート的なHTMLがあって、その一部だけを差し替えるようなプログラムではその傾向が顕著です。

+

プログラミングにおける不満は重要なものです。不満があれば、それを解決してよりプログラミングを快適にするツールが必要とされているという意味です。もし仮にそのようなツールがすでに存在していなければ、新しいツール開発の動機となります。不満こそはソフトウェア進化の原動力なのです。

+

この問題に対しても対応するツールがいくつかあります。

+
+
    +
  • cgi.rbによるHTML生成

  • +
  • ヒアドキュメントの利用

  • +
  • eRuby

  • +
  • IOWAやWarlusのようなフレームワーク

  • +
+

それぞれについて簡単に説明しておきます。cgi.rbによるHTML生成機能はRubyのプログラムの見かけでHTMLを作るというものです。HTML生成機能はリスト17.1でも多用されています。

+
+
cgi.html {cgi.head{cgi.title{"cgi/session example"}} +
+  cgi.body{cgi.h1{"cgi/session example"}+
+    cgi.p{sprintf "%d回目のアクセスです", counter} + 
+    cgi.form('action'=>File::basename(cgi.script_name)) {
+      cgi.submit
+    }
+  }
+}
+
+

HTML生成機能は内部で大量の文字列の生成と結合を行いますので、少々効率が悪いのが欠点です。また、記述量が増えてしまうこともあるのも欠点といえば欠点でしょう。

+

ヒアドキュメントはRubyの文字列表現の1つです。これは「<<EOF」のようなマーカーの部分が、その次の行からマーカーが示す終端行までの複数行に置き換えられるというものです。

+
+
print <<EOF
+<p>これはヒアドキュメントの例です<br>
+「<<」に続くマーカーと同じ文字列の行までが文字列にな
+ります。この中では式展開も有効です
+EOF
+
+

ヒアドキュメントによって、複数行にわたる文字列をすっきりと表現できます。大量のHTMLの出力には向いているでしょう。式展開を使って値の埋め込みが行えるのも気が利いています。

+

eRubyはembedded Ruby(埋め込みRuby)の略です。埋め込みと言っても他のプログラムにRubyを組み込むことではなくて、HTMLのようなテキストの一部にRubyコード(の断片)を埋め込むことです。ちょうど文字列の中の式展開と同じようなことができるというわけです。

+

最後のIOWAやWarlusはHTMLテンプレートとRubyコードを完全に分離してしまうWebアプリケーションフレームワークです。これらは少々規模が大きくなってしまうので、今月は解説しません。以下のURLを参照してください。

+
    +
  • IOWA:  http://beta4.com/iowa/

  • +
  • Warlus: http://www.brain-tokyo.jp/research/koutetu/walrus/

  • +
+
+
+ +

eRuby

+
+

今月解説するのはこのうちeRubyです。

+

eRubyは文書に、

+
+
<% rubyコード %>
+
+

といったタグを埋め込んで、内容がダイナミックに変化するテキストを作るためのものです。また結果の出力には、

+
+
<%= 式 %>
+
+

というタグを使います。式の結果が文字列としてテキストに埋め込まれます。タグ以外の部分はそのまま印字されます。eRubyのスクリプトはリスト17.3のようになります。

+
+

リスト17.3●eRubyサンプル

+
<%
+  # erubyではcharsetの設定が必要
+  ERuby.charset = "euc-jp"
+%>
+<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP">
+<TITLE>eRuby sample</TITLE>
+</HEAD>
+<BODY>
+<H1>eRubyサンプル</H1>
+<P>
+こんにちわ<BR>
+現在の時刻は<%= Time.now %>です<BR>
+</BODY>
+</HTML>
+
+
+

ですから、eRubyは「<%」と「%>」という文法を持つ一種の言語ということができます。このeRuby言語を解釈する処理系は複数ありますが、mod_rubyと同じく前田修吾さんによって実装されたerubyについて紹介しましょう。少々ややこしいですが、ここからは「eRuby」が言語名、「eruby」がプログラム名です。

+
+
+ +

erubyのインストール

+
+

erubyのインストールもDebianなら、

+
+
apt-get install eruby
+
+

だけです。Red Hat Linux 7.3やVine Linux 2.5には、erubyのRPMパッケージが含まれています。

+

ソースからインストールする場合には

+
    +
  • http://www.modruby.net/archive/eruby-0.9.8.tar.gz

  • +
+

からダウンロードしてから展開し、configure.rbを実行してからmake、そしてmake installします。

+

インストールできたら、試しにリストリスト17.3erubyにかけてみましょう。ここではリストリスト17.3の内容がsample.rhtmlに格納されていることとします。eRubyのファイルの拡張子はrhtmlにするのが慣習のようです。

+
+
eruby sample.rhtml
+
+

実行結果はリスト17.4のようになります。

+
+

リスト17.4●eruby実行結果

+
<HTML>
+<HEAD>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=EUC-JP">
+<TITLE>eRuby sample</TITLE>
+</HEAD>
+<BODY>
+<H1>eRubyサンプル</H1>
+<P>
+こんにちわ<BR>
+現在の時刻はSat Aug 10 15:49:07 JST 2002です<BR>
+</BODY>
+</HTML>
+
+
+

<%=」と「%>」で囲まれた部分がコードを評価した文字列と置き換えられていて、「<%」から「%>」の部分は削られていることがわかると思います。

+
+
+ +

Apacheからerubyを使う

+
+

さて、erubyのインストールができたら、今度はWebページにeRubyを使うためのApacheの設定が必要です。

+

まず .rhtmlという拡張子のファイルをeRubyで記述されたCGIとして使うための設定は、以下のとおりです。まずhttpd.confに以下の行を追加します。

+
+
AddType application/x-httpd-eruby .rhtml
+Action application/x-httpd-eruby /cgi-bin/eruby
+
+

それからeruby/usr/local/bin/erubyとか)から/cgi-bin/erubyへのシンボリックリンクを用意します。これでApacheをリスタートさせれば .rhtmlファイルはerubyで処理されるはずです。

+

実はmod_rubyにはerubyの機能が最初から組み込まれています。さすが同じ作者の作品だけのことはあります。ですから、mod_rubyをインストールすればそのままeRubyを使うこともできるわけです。mod_rubyを利用してeRubyを処理するためにはhttpd.confに以下の設定を追加します。

+
+
<IfModule mod_ruby.c>
+  RubyRequire apache/eruby-run
+
+  # *.rhtmlをeRubyファイルとして扱う。
+  <Files *.rhtml>
+  SetHandler ruby-object
+  RubyHandler Apache::ERubyRun.instance
+  </Files>
+</IfModule>
+
+

この設定を有効にしてから拡張子 .rhtmlを持つファイルにアクセスするとmod_rubyを使ってeRubyの解釈が行われます。

+
+
+

ERb

+
+

一方、咳さんのeRuby実装、ERbのほうは、

+
    +
  • http://www2a.biglobe.ne.jp/~seki/ruby/erb-1.4.3.tar.gz

  • +
+

からダウンロードして、install.rbを実行するだけです。ただ、ERbにはそのままコマンドとして実行できるファイルがないみたいなので、リスト17.5のような内容のファイルを /usr/bin/erbなどいう名前で用意するといいでしょう。

+ +
+

リスト17.5●erub

+
#! /usr/bin/ruby
+
+require 'erb/erb'
+require 'erb/main'
+
+ERbModule.run(ERb)
+
+
+

もちろん、chmodを使って実行権限を与えるのをお忘れなく。これで、

+
+
erb sample.rhtml
+
+

でeRubyファイルの展開ができるようになります。でも、先ほどのサンプルを実行する場合にはerubyにしかないERubyモジュールへのアクセスをコメントアウトしておきましょう。

+
+
+

eruby + mod_ruby ≧ PHP

+
+

PHPという言語があります。PHPという名前はPHP: Hypertext Preprocessorの略だそうです。再帰してますね。PHPの特徴は「HTMLに埋め込める」ことと「mod_phpによりApacheに組み込んで性能を稼げる」ことだそうです。このコンセプトは「eruby + mod_ruby」にそっくりではありませんか?

+

しかも、Rubyの強力なクラスライブラリやRAAに増え続ける周辺ライブラリの充実を見れば、Rubyを知っている人がPHPを覚える必要はそれほどなくなったのではないかと思います。

+
+
+

まとめ

+
+

今月はWebプログラミングを便利にするツールについていくつか紹介しました。これらのツールは個別のページの作成の支援を行いますが、これをもうちょっと推し進めて「Webサイト作成支援」とでも呼ぶべきツール、あるいはフレームワークと呼ぶようなものも存在します。今後はそのようなフレームワークについても紹介したいと思っています。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-040.xhtml b/docs/vol1/xhtml/p-040.xhtml new file mode 100644 index 0000000..b4a98b2 --- /dev/null +++ b/docs/vol1/xhtml/p-040.xhtml @@ -0,0 +1,94 @@ + + + + + +第17章 CGIの道具箱 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 時代はLispに追いついたか

+
+

Lispというプログラミング言語があります。

+

1958年以来、Lispはプログラミング言語の独立峰としてそびえています。それが色あせないのは、数学をベースにしているからだと思われます。Lispは広く使われることはありませんでしたが、そこで生まれた概念は「知る人ぞ知る」奥義としてコンピュータサイエンスの世界で受け継がれていたのです、ここ40年ほどの間。

+
+

みんなLispから教わった

+

Lispから始まって、やっと最近になって一般の人も知るようになった概念はたくさんあります。たとえば以下のようなものがあげられます(これらはみんなRubyにもあります)。

+
+

スタティックスコープ

+

Lisp以外の初期のプログラミング言語にはグローバル変数しかありませんでした。当時はLispだけがローカル変数(関数に閉じた変数)という概念を持っていました。

+

再帰

+

ローカル変数のない言語には関数が自分自身を呼び出す再帰の実現は不可能です。

+

多重継承

+

クラスや継承の概念を生んだのはLispではなくSimulaですが、複数のスーパークラスを持つ多重継承を発明したのは(おそらく)Lisp界の住人です。Rubyも採用しているMix-inという考え方もLispから受け継いでいます。

+

ガベージコレクション

+

使われなくなったデータを自動的に回収してくれる便利な機能、ガベージコレクションが世に広く知られるようになったのはJava以降でしょうか。しかし、Lispは1960年代からこの機能を持っていました。実に世の中は40年遅れていたわけです。

+

例外

+

これもJavaによって知られるようになった機能ですが、Lispではやはり60年代(後半?)からあったようです。

+

動的な型

+

昔の言語といえば、変数や式に型がある静的な型か、あるいは、いっそ型がないBCPLのようなものが主流でした。しかし、Lispは一貫して型は変数ではなくデータそのものにあるという考えで設計されていました。

+
+
+
+ +

世の中はLispに進むのか

+

では、世の中が40年以上をかけてLispの隠された機能に追いついてきたのならば、世の中はこのままLispの方向に進み続けるのでしょうか?

+

私はそうは思いません。

+

Lispには上で紹介しなかった「知られざる奥義」があり、そしてそれは今後も他の言語には伝わらないだろうと思うからです。その奥義は「データとプログラムの同一視」です。Lispのプログラムはこんな感じです。

+
+
(defun fact (n)
+  (if (= n 0)
+        1
+    (* n (fact (- n 1)))))
+
+

Lispのプログラムはかっこがとても多いのですが、単純な階乗のアルゴリズムですから、意味を取るのはそれほど難しくないと思います。実はこの「プログラム」はそのまま「データ」なのです。Rubyの式で書くとこんな感じでしょうか。

+
+
[:defun, :fact, [:n],
+  [:if, [:= :n 0],
+    1,
+    [:*, [:fact, [:- :n 1]]]]]
+
+

Rubyだとちょっと醜いですが、Lispではこのようにシンボルとリストからなるデータ構造でプログラムが表現されています。これにより、

+
    +
  • プログラムがプログラムを生成すること

  • +
  • プログラムの構造を解析したり、一部変更したりすること

  • +
+

の両方が容易になります。前者だけならRubyでもevalを使うことで実現できますが、後者は現実的ではありません。このプログラムとデータの同一視により、Lispにはマクロ機能という言語自身をどんどん拡張する機能があります。

+

しかし、これほど優れている(ように見える)機能も広く受け入れられることはないでしょう。私はそう感じます。

+

その理由は2つあります。

+
+

かっこが多いと見栄えが悪い

+

Lispのプログラムは非常にかっこが多用されます。この「普通でない」見栄えは人々から敬遠されてきた理由の1つです。これは今後も変わらないでしょう。外見は人気の重要な要素です。

+

マクロは強力すぎ

+

マクロは強力ですばらしい機能ですが、見方を変えると、Lispという大きな枠組みの中でいくつもの専用言語を作っていることでもあります。これは「常識がどこでも通用する」という一貫性とは逆行する性質です。かなり頭のいい人でないとついていけないと思います。言語は「普通の人」のためにあるのです。

+
+
+

さて、私の予想は当たるでしょうか。それとも参考文献に示すように世の中はLispを受け入れるのでしょうか。それはあと10年経ったら明らかになる、かもしれません。

+
+

参考文献

+

「普通のやつらの上を行け — Beating the Averages —」
+Paul Graham著, Shiro Kawai訳
+http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html

+

「人気の言語を作るには — Being Popular —」
+Paul Graham著, Shiro Kawai訳
+http://www.shiro.dreamhost.com/scheme/trans/being-popular-j.html

+
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-041.xhtml b/docs/vol1/xhtml/p-041.xhtml new file mode 100644 index 0000000..884294b --- /dev/null +++ b/docs/vol1/xhtml/p-041.xhtml @@ -0,0 +1,457 @@ + + + + + +第18章 ファイル処理 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay18 +
+

+初等Ruby講座
+ファイル処理 +

+
+

[Linux magazine, 2002年11月号]

+
+

当時、新しいデジカメEXILIMを買ったのがうれしくて書いた記事ですね。そういえば、あのカメラはどこにやったかな。捨ててないと思うんだけど。で、記事のほうはデジカメをUSBマウントしてPCにコピーするツールを開発することを通じて、Rubyのファイル操作機能を学ぶというテーマでした。現在では、スマートフォンで写真を撮って、自動的にGoogle PhotoなりiCloudなりにバックアップされますが、当時はこういうちょっとしたツールがありがたかったものです。

+

「Ruby開発日記」は「プログラミング言語の人気の厳選は外見で決まる」という仮説の披露です。20年経っても証明はできていないのですが、相変わらず間違ってはいないのではないかと考えています。本文中、「日本語20冊、英語6冊、ドイツ語3冊、フランス語1冊」出版されているとありますが、現在では何冊あるのでしょうか。昔はRuby関連本が書かれるたびに完成した本を頂いたりしたものですが、最近はそういうこともなく、仮にそうしたとするとあっという間に本棚があふれてしまうことでしょう。当時は、Rubyを扱った本が近所の本屋に並ぶのを見るのが夢でしたが、それも早々に叶いました。

+
+
+

今月はスクリプト言語の原点に立ち返ってファイル処理について考えてみます。

+
+
+

散財自慢

+
+

愛用のデジカメが故障したのを機会に、新しいデジカメを買うことにしました。貧乏性の私にしては珍しい散財です。就職以来、貧乏はだいぶ改善されましたが、貧乏性(貧乏症)はなかなか直りません。学生時代は貧しかった。

+
+

で、買ったのはCasioのEXILIMです(図18.1)。このカメラは124万画素しかありませんが、日常のスナップには十分です。しかも、

+
    +
  • 小さい(名刺サイズ)

  • +
  • 機敏(起動1秒、シャッター0.01秒)

  • +
+

という点が気に入りました。前のカメラは300万画素クラスでしたが、オートフォーカスやらフラッシュのチャージやらにとかく時間がかかり、反応の遅さが気になっていたからです。これだけ機敏に動作すると撮ろうと思ったものをタイミングを逃さず撮ることができます。便利だ。

+

買ったその日に200万画素になったEXILIMの新機種が発表されるというオチまでついてしまいましたが、いいんです、気に入ってるんだから。

+
+ +
+ fig1801 +
+

図18.1●Casio EXILIM EX-M1

+
+
+
+

Linuxとの連携

+
+

このEXILIMというカメラにはUSBクレードルが付属していて、これに乗せると充電とPCとの接続ができます。USB接続についてはUSBマスストレージクラスに対応しているので、Linuxからも利用することができます。

+

ただし、私のマシンにはEXILIMのプロダクト番号がまだ登録されておらず、そのままではUSBコネクタを指した時点でエラーになってしまいました。USBの設定ファイルである /etc/usbmgr/usbmgr.confを見ると必要なのはベンダーIDとプロダクトIDのようです。そこで、/var/log/syslogのエラーメッセージから、

+
+
Aug 29 19:45:04 ev usbmgr[18644]: vendor:0x7cf product:0x1001
+
+

という行を見つけ出し、それを参考にして/etc/usbmgr/usbmgr.confリスト18.1の記述を追加しました。

+
+

リスト18.1●/etc/usbmgr/usbmgr.confへの追加

+
# Casio Exilim
+vendor 0x7cf product 0x1001 module scsi_mod , sd_mod , usb-storage
+
+
+

これでroot権限で、

+
+
# mount -t msdos /dev/sda1 /mnt
+
+ +

とすればファイルシステムとしてマウントできした。めでたし、めでたし。そして、/etc/fstabというファイルにリスト18.2の記述を追加しておけば、root権限がなくても一般ユーザーで、

+
+
$ mount /mnt
+
+

と実行するだけでマウントできるようになります。

+
+

リスト18.2●/etc/fstabへの追加

+
/dev/sda1 /mnt msdos defaults,user,noauto  0  0
+
+
+

私はUSB接続のデジカメに関する知識はそれほどないのですが、この方法はEXILIM以外にも富士フィルムのFinePix601でも有効でしたから、たぶん普遍的なのではないかと思います。聞くところによるとDCFというデジタルカメラのファイルシステムの規格があるのだそうです。FATファイルシステムを使うのも、ディレクトリの構成やファイル名がほぼ共通なのも、その規格に従っているのでしょう。

+
+
+

画像管理

+
+

これでデジカメのメモリがファイルシステムとして見えるようになりました。画像はマウントポイントの下にdcimというディレクトリがあって、その下に100casioというディレクトリがあり、その下にcimg0001.jpgのような名前のファイルが並んでいます。

+

要するに普通のディレクトリとファイルですから、後はcpでファイルをコピーしたり、rmで削除したりと普通のファイルと同様に操作できます。また、gimv(図18.2)のようなイメージビューアを使うのも1つの方法でしょう。

+
+ +
+ fig1802 +
+

図18.2●gimv

+
+

とはいえ、撮った画像がたまってくると管理が面倒になってきます。そこで私はリスト18.3のような簡単なシェルスクリプトを使っていました。ええ、私でもときどきはシェルも使うんです。

+ +
+

リスト18.3●画像管理シェルスクリプト

+
#! /bin/sh
+
+ls -l --time-style=long-iso /mnt/dcim/*/* | awk '{print $6" "$8}' | while read date file; do
+  test -d $date || mkdir $date
+  echo cp $file $date/`basename $file`
+  cp -p $file $date/`basename $file`
+done
+
+
+

私はこのスクリプトにimportという名前を付けていました。デジカメをマウントした状態でこのスクリプトを実行すると、写真を撮った日付のディレクトリにファイルを保存してくれるというわけです。小さいけれどなかなか便利なスクリプトです。

+

ところが、EXILIMを使うようになって困ったことが出てきました。EXILIMは今までの画像の番号を覚えていてくれないので、一度カメラから画像を削除してしまうとまたcimg0001.jpgから番号を振ります。ですから、たとえばメモリが足りなくなって画像を一度PCに転送してからカメラから削除すると、同じ名前の画像が複数できてしまうのです。前のカメラは今まで撮った番号を覚えていてくれたんだけどなあ。しかたがありません。新しい管理プログラムを書くことにしましょう。仕様は以下のようなものを考えました。

+
    +
  • マウントされていなければ自動的にマウントする

  • +
  • 扱うファイルの拡張子は .jpg, .wav, .avi, .mpg(EXILIMはmpgは扱えませんが)

  • +
  • デジカメ内のファイルを撮影日(2002-10-08のような形式)の名前の付いたディレクトリにコピー

  • +
  • ファイルにはその日のディレクトリ内で重複しない名前を付ける

  • +
  • ただし、.jpgファイルと同じファイル名(拡張子以外の部分)を持つ .wavファイルがあったとき、それは .jpgファイルに対する音声メモなので拡張子以外は同じままにしなければならない

  • +
  • デジカメの付けたファイル名は信頼できない。異なるファイルに対して番号部分は自分で割り当てる

  • +
+

このプログラムも先ほどのスクリプトの延長でシェルで書き始めたのですが、だんだんロジックが複雑になってきて、手に負えなくなってきました。この辺がシェルの限界でしょう。しかし、私たちにはシェルよりずっとよいRubyがあるじゃありませんか。

+
+

いや、今まで忘れたんだけど。

+
+

「Rubyの作者がそんなことじゃだめじゃん」という声が聞こえてくるようです。おっしゃるとおりです。すいません。

+

そこで気を取り直してRubyで書いてみることにしました。Rubyにはシェルよりもずっとマシな制御構造がありますし、道具もいろいろそろっています。意外と簡単に書けました。それでもコメントや空行も入れると90行くらいになりました。元のスクリプトが7行だったのに比べるとずいぶん複雑になったものです。

+
+
+

手品のタネ

+
+
+

今回のプログラムで一番工夫が必要なのは、要件の中にある、

+
    +
  • 異なるファイルに対して番号部分は自分で割り当てる

  • +
+

点です。

+

これを実現するためには、ファイル名に頼らないで、ファイル内容の同一性を判定する必要があります。とはいえ、127万画素の1280×960の画像ファイルはだいたい250Kバイト近くありますから、ファイルを全部読み込んですべての内容の比較をするのはコストが高すぎます。

+

同一性判定にほしいのは、ファイルの内容によって違う結果になり、

+
    +
  • 重複の危険性が無視できるくらい小さく

  • +
  • しかも値のサイズは小さく

  • +
  • できれば計算量も少ない

  • +
+

というような値です。このような値がもしあれば、それを各画像ファイルの「指紋」のように使って、比較することができます。

+

しかし、そんな都合のよい値を計算する方法がありえるものでしょうか。

+
+

ええ、あるんです。

+
+

実は上記のすべてを満たした値の計算方法が存在していて、それは一般に「ハッシュ値」と呼ばれています。「ファイルの内容を反映した短い値」という意味で「ダイジェスト値」と呼ばれることもあります。ハッシュ値を計算するアルゴリズムはいくつかあるのですが、ここではRubyに最初から添付されている「MD5」アルゴリズムを利用することにします。

+

MD5アルゴリズムはRFC 1321で定義されています。これはもともとは公開鍵暗号の署名などに使う目的で開発されました。つまり、ある人が本当にその文を書いたことを証明するために、メッセージのハッシュ値を計算し、その値をその人の秘密鍵で暗号化します。そしてその秘密鍵で暗号化されたハッシュ値をそのメッセージに対する「署名」としてメッセージと一緒に送ります。

+

メッセージと署名を受け取った人は、署名を相手の公開鍵で復号化し、得られたハッシュ値とメッセージのハッシュ値が等しいかどうかをチェックします。

+

もし、メッセージが相手を名乗った第三者からのものであれば、署名をその人の公開鍵で正しく復号化できない(のでハッシュ値は一致しない)はずです。もし、メッセージが配送の途中で改ざんされていれば、メッセージのハッシュ値と署名から得られるハッシュ値が一致しないはずです。

+

つまり、手元で計算したハッシュ値と復号化したハッシュ値が一致したということでメッセージが本人からのもので書き換えられていないことが保証されるわけです。

+

しかし、MD5がハッシュ値として持っている以下のような便利な性質は、今回の目的である同一性検査に最適です。

+
+
    +
  • 結果は16バイトの整数列

  • +
  • データが1ビットでも違うと結果がまったく異なる

  • +
  • 重複の可能性はかなり低い

  • +
  • 計算量は割と小さい

  • +
+

同一性検査以外にもMD5を使うことができます。たとえば、cgi/session.rbではユニークなセッションIDを作るために16進表記のMD5を使っています。実際には16進表記のMD5の32文字は長すぎるので前半16文字だけ使っています。半分に切り詰めても重複する可能性は十分に低いようです。

+
+
+

下準備

+
+

それでは例によって実際のプログラムを解説する前に、利用する既存のライブラリについて説明しておきます。今回使おうと思っているのは以下のものです。

+
    +
  • digest/md5

  • +
  • ftools

  • +
+

digest/md5は先ほど説明したMD5アルゴリズムを実現するクラスライブラリです。

+

一方、ftoolsはシェルで扱うようなファイル操作を強化するライブラリです。

+
+
+

digest/md5

+
+

digest/md5はアルゴリズム部分はL. Peter Deutschさんの作です。DeutschさんはGhostscriptの作者でもありますが、その他にもLispやSmalltalkの実装などで多大な業績があり、私にとっては尊敬する雲の上の人の一人です。昨年、OOPSLAというカンファレンスでご本人にお会いしたときには緊張して言葉が出なかったくらいです。Rubyのことはご存じでしたが、最近はPythonを使っているとのことでした。残念。

+

Rubyインターフェイス部分の作者はknuさんことAkinori MUSHAさんです。

+

Digest::MD5クラスのメソッドを表18.1に示します。

+
+

表18.1●Digest::MD5クラスのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
クラスメソッド説明
Digest::MD5.digest(data)dataのハッシュ値を返す
Digest::MD5.hexdigest(data)dataの16進表記ハッシュ値
インスタンスメソッド説明
md5.update(data)dataを追加
md5 << datadataを追加
md5.digestハッシュ値
md5.hexdigest16進表記ハッシュ値
+
+

MD5値の求め方には2通りあります。1つはMD5オブジェクトにデータをどんどん追加しながらハッシュ値を計算し、最後にその計算結果を取り出す方法です。具体的には以下のようになります。

+
+
md5 = Digest::MD5.new
+md5.update(data)
+sum1 = md5.digest     # 16バイトのハッシュ値
+sum2 = md5.hexdigest  # 16進表記のハッシュ値(32文字)
+
+ +

updateは途中に何回に分けて呼んでもかまわないので、たとえばファイルを1行ずつ読み込んでupdateを呼んでも、ファイル全体を一度に呼んでupdateを呼んでも同じ結果になります。

+

もう1つのやり方は、クラスメソッドを使って一度に計算する方法です。クラスメソッドは内部的にMD5オブジェクトを生成して計算を行います。

+
+
sum = Digest::MD5.digest(data)
+sum = Digest::MD5.hexdigest(data)
+
+

このやり方では一度にハッシュを計算できます。ただ、やっていることは上記のようにMD5オブジェクトを作って計算しているだけですから、クラスメソッドを使っても1行で書けるだけで、効率に違いはありません。

+
+
+

ftools

+
+

ftoolsライブラリはシェルで扱うようなファイル操作を実現するクラスメソッドをFileクラスに追加します。ftoolsの作者はebanさんこと、わたなべひろふみさんです。

+

ftoolsが追加するクラスメソッドを表18.2に示します。

+
+

表18.2●ftoolsのクラスメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
File.compare(from,to[,verbose])内容比較
File.copy(from,to[,verbose])コピー
File.chmod(files...[,verbose])モード変更
File.install(from,to[,mode[,verbose]])インストール
File.makedirs(files...)ディレクトリ作成
File.move(from,to[,verbose])移動
File.safe_unlink(files...)削除
File.syscopy(from,to)コピー
+
+

それぞれのメソッドの挙動はメソッド名から想像されるとおりなのですが、注意すべき点をいくつか説明しておきます。

+ +

これらの機能を使うと、今までシェルスクリプトで記述していたような手続きもRubyで簡単に書くことができます。ただ、Rubyにはsh -xのような今何をやっているかを表示する機能はないのがちょっと寂しいところです。

+
+
+

プログラムの構造

+
+

さて、そんなこんなで出来上がった画像管理スクリプトがリスト18.4です。

+ +
+

リスト18.4●画像管理Rubyスクリプト

+
#! /usr/bin/ruby1.7
+
+require "ftools"                 # (1)
+require "digest/md5"
+
+MOUNT = "/mnt"
+
+class DateDir                    # (2)
+  attr_reader :max
+  def initialize(date)
+    max = "0000"
+    @sizes = []
+    for f in Dir.glob("#{date}/*")
+      if /(\d+)\./.match(f)
+        if $1 > max
+          max = $1
+        end
+      end
+      unless @sizes.assoc(f)
+        sum = get_md5(f)
+        @sizes.push [f, sum]
+      end
+    end
+    @max = max.to_i
+  end
+  DATE_DIRS = {}
+  def DateDir.get(date)
+    unless dd = DATE_DIRS[date]
+      DATE_DIRS[date] = new(date)
+    else
+      dd
+    end
+  end
+  private_class_method :new
+
+  def find(file)
+    found = @sizes.rassoc(get_md5(file))
+    if found
+      return found[0]
+    else
+      return false
+    end
+  end
+  def push(file, orig)
+    @sizes.push([file, get_md5(orig)])
+    @max += 1
+  end
+
+  private
+  def get_md5(file)              # (3)
+    Digest::MD5.digest(File.read(file))
+  end
+end
+
+                                 # (4)
+if File.open("/etc/mtab").grep(%r|^/dev/sda1|).size == 0
+  system "mount #{MOUNT}"
+end
+                                 # (5)
+for file in Dir.glob("#{MOUNT}/dcim/*/*.{jpg,avi,wav,mpg}").sort_by{|x|File.mtime(x)}
+  mtime = File.mtime(file)
+  date = mtime.strftime("%Y-%m-%d")
+  fname = File.basename(file)
+  base, num, ext = /([a-z]*)(\d+)(\..*)$/.match(fname)[1,3]
+  unless File.directory? date
+    Dir.mkdir date
+    dest = "#{date}/#{base}0001#{ext}"
+  else
+    d = DateDir.get(date)        # (6)
+    dest = nil
+    if ext == ".wav"             # (7)
+      jpgfile = "#{File.dirname(file)}/#{base}#{num}.jpg"
+      if File.exist?(jpgfile) and
+        found = d.find(jpgfile)
+        dest = found.sub(/jpg$/, "wav")
+        if d.find(dest)
+          next
+        end
+      end
+    end
+    unless dest                  # (8)
+      if d.find(file)
+        next
+      end
+      d.push(dest, file)         # (9)
+      dest = "#{date}/#{base}%04d#{ext}" % d.max
+    end
+  end
+  File.copy(file, dest, true)    # (10)
+  File.utime(mtime, mtime, dest) # (11)
+end
+
+
+
+

まず、例によって先頭で必要なライブラリをrequireしています (1)。今回はすでに説明したようにftoolsライブラリとdigest/md5ライブラリを使います。

+

続いて定義されているDateDirクラスは日付ごとのディレクトリが持つ情報を格納するクラスです (2)。そのメソッドはinitializeメソッドによる初期化と、重複しているファイルを見つけるfind、新たに作ったファイルの情報をDateDirに追加するpushです。内容によるファイルの重複チェックは先ほど説明したとおりMD5を使って行われます。

+

それからattr_accessorによってファイルに付けられた通し番号の最大値を返す属性max(実体はインスタンス変数)を定義しています。

+

DateDirクラスは同じ日付に対しては同じオブジェクトが得られるべきなので、クラスメソッドDateDir.findで重複チェックを行っています。また、間違ってnewを直接呼んでしまわないようにprivate_class_methodを使ってprivate宣言しています。これで、newメソッドはレシーバを省略した形式でしか呼び出せなくなります。

+

get_md5メソッドはファイル名からその内容のMD5ハッシュ値を求める「関数」です (3)。内容はまあ見たとおりですね。Digest::MD5クラスを使ってMD5ハッシュ値を計算しています。

+

ここからがこのスクリプトの処理の本質になります。この画像管理スクリプトは以下の手順で処理を行います。

+

まず、必要であればデジカメデバイスのマウントを行います (4)。マウントされているドライブの情報は /etc/mtabに含まれています。ここにUSBで接続したデジタルカメラ(デバイスは /dev/sda1)が含まれていなければ、systemメソッドを使ってmountコマンドを呼び出しマウントします。すでに説明したように /etc/fstab/dev/sda1に対してuserオプションが設定されていれば一般ユーザー権限でマウントできるはずです。

+
+

マウントが済んだらデジカメのメモリ中の画像ファイルの情報を取り出します。DCF規格に従ったデジカメの場合、画像はマウントしたファイルシステムに以下のように格納されているはずです。

+
+
dcim/<数字><メーカー>/<接頭子><数字>.<拡張子>
+
+

具体的にはこんな感じです。

+
+
dcim/100casio/cimg0001.jpg
+
+

拡張子はjpg(画像)、avi(動画)、wav(音声)、mpg(動画)くらいでよいのではないでしょうか。他の拡張子に対応させる場合には、リストの (5) の部分のパターンを変更すればよいでしょう。

+

これらのファイルのファイル名のリストを取り出します (4)。ワイルドカードマッチで取り出したファイルのリストをsort_byメソッドで日付順にソートしています。このsort_byメソッドは1.7系にしかないメソッドなので、お使いのRubyが1.6系である場合には、この部分を、

+
+
.sort{|a,b| File.mtime(a) <=> File.mtime(b)}
+
+

に書き換える必要があります。個人的にはsort_byを始めとする便利なメソッドが増えているので日々使うのもすっかり1.7系に移行してしまいました。ただ、1.7系はまだ開発版なので万人にお勧めとはいかないのが残念なところです。

+

ここからはこのファイル名リストに含まれるファイル名1つ1つに対して処理を行います。

+

まず、ファイルの更新時間(mtime)から(2002-09-11)のような形式で日付を取り出しておきます。これがファイルコピー先のディレクトリ名になります。

+

日付が得られたので、その日付を元にDateDirオブジェクトを作ります (6)。これはDateDir.getメソッドを呼ぶだけです。

+

スクリプトの要件で定義したように、ファイルの拡張子が .wavであれば、それは .jpgファイルに対する音声メモです (7)。拡張子以外の部分が等しい .jpgファイルがデジカメ上にあるかをチェックを行い、存在すればそのファイルが日付ディレクトリにコピーされているかを調べます。あるファイルと同一のファイルが日付ディレクトリ内にあるかどうかはDateDirクラスのfindメソッドを使います。もしあれば、コピーされている画像ファイルの拡張子だけを .wavに変えた名前をコピー先ファイル名とします。

+

音声メモでなければ、日付ディレクトリ内にそのファイルと同じ内容を持つファイルがあるかどうかDateDirクラスのfindメソッドでチェックします (8)。

+

チェックの結果同じファイルが存在しなければ、ファイルのコピーを行います。コピーによりファイルが増えるわけですからpushメソッドで情報の更新を行います (9)。ファイル名は日付ディレクトリ中の最大通し番号(maxメソッドで得られる)を使います。

+

実際のコピーにはftoolsライブラリが提供するFile.copyメソッドを使います (10)。

+

できるだけ元のファイルの情報を残しておきたいので、ファイルの更新時間もコピーします (11)。これはFile.utimeメソッドによって行います。utimeメソッドは作成時間と更新時間の両方を設定できますが、ここでは手を抜いて両方を元のファイルの更新時間(mtime)に指定しています。

+
+
+ +

宿題

+
+

今回は画像ファイルの同一性判定にMD5ハッシュを使いましたが、同一性判定の方法は他にいくつもあります。たとえば、まずサイズが同じかどうかを判定し、サイズが同じだった場合に限って内容を直接比較するというアプローチもありえます。ファイルのサイズが重複するケースは比較的少ないうえ、ファイルサイズはFile.statで内容を読み込むことなく得られますから、一度全部のファイルを読み込んでMD5ハッシュを計算するよりも速いでしょう。

+

実際に実装したら確かにずいぶん高速でした。こんなシンプルな方法のほうが速いのになぜわざわざMD5を使ったかというと、実は、

+
    +
  • 最初に思い付いたのがMD5を使う方法だった

  • +
  • すぐにサイズを使ったほうがきっと速いと気が付いたが、せっかくだからMD5の解説がしたかった

  • +
+

というような理由です。

+

MD5を使った比較から、サイズをベースにした比較への変更は読者への宿題にしておきましょう。性能向上することが明らかなほうがやる気が出るというものです。

+

ちなみに元のプログラムではファイルの比較がDateDirクラスの中にまとめられているので、initializeメソッドとfindメソッド、それからpushメソッドを書き換えるだけで、対応できます。行にして3行ですね(get_md5メソッドを削るぶんも合わせると全部で7行の変更)。簡単ですので、どうぞやってみてください。

+

解答は本誌付録CDに収録してもらうようにします。

+
+
+

まとめ

+
+

ということで、今回はシェルスクリプトが得意とするようなファイル処理をRubyでやってみました。また、ftoolsdigest/md5の紹介も行いました。

+

これで本当に簡単な数行のスクリプトの場合を除けば、ファイル処理においてもRubyは優れているということを示すことができたと思います。まあ、もともと、Perl以降のスクリプト言語はその辺を目指して登場してきたものなので、当たり前といえば当たり前なんですけどね。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-042.xhtml b/docs/vol1/xhtml/p-042.xhtml new file mode 100644 index 0000000..998d011 --- /dev/null +++ b/docs/vol1/xhtml/p-042.xhtml @@ -0,0 +1,64 @@ + + + + + +第18章 ファイル処理 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 顔じゃないよ、心だよ

+
+

「人間、顔じゃない」とはよくいわれることです。私自身も外見ばかり気にして、中身を大切にしない人を見ると、そんなことでどうするの、などとおせっかいに心配してしまいます。確かに人間にとって一番重要なことは外見ではありません。人間の価値は中身、つまりどのような精神(こころ)を持っているかによって決まるのではないでしょうか。

+

では、ソフトウェアはどうなのでしょう。

+

ソフトウェアの外見といえば、インターフェイス部分でしょうか。これは人間の外見よりももっと重要な位置を占めるような気がしてきます。というのも、インターフェイスは人間とコンピュータが直接やりとりする部分ですから、ソフトウェアひいてはコンピュータがあくまでも人間の司令を受けて動作するものである以上、それはかなり重要な位置を占めると考えられます。

+

ソフトウェアの外見がインターフェイスだとするならば、中身はなんなのでしょう。

+

それは、やっぱり機能、つまりそのソフトウェアが何ができるかではないでしょうか。たとえばワープロならどれだけ機能があるか、どんな修飾ができるか、どんなすばらしいデザインを表現できるか、というのが中身に当たるのではないでしょうか。

+

しかし、最近のソフトウェアには使いもしない機能がてんこ盛りのものも少なくないように感じます。いつか使う「かもしれない」機能、誰かは使っている「かもしれない」機能でも、普段の私には不要な機能というものが多い気がします。

+

ということを考えるとソフトウェアにとっては重要なのは中身よりもむしろ外見であるという結論が引き出せそうな気がします。もちろん、最低限の機能を満たしていなければなりませんが、それさえ満たせば外見こそが最も重要な要素ということです。

+

では、私の得意な分野であるプログラミング言語はどうなのでしょう。プログラミング言語もソフトウェアである以上、やはり外見の方が大事という性質があるのでしょうか。

+

実は、そうなのです。いや、実際のところ言語の場合、他のソフトウェアよりもさらに外見が重要であるといえると思います。

+

いくつかのプログラミング言語をご存じの方ならばお気づきでしょうが、ほとんどのプログラミング言語の「できること」のレベルにはそれほど差がありません。もちろん、論理型言語のPrologや関数型言語のMLやHaskellのように根本となる考え方(パラダイム)から違うものは別ですが、それ以外のものの違いといえば、極端な話、単に文法や記法のような外見の違いであると言い切ることもできるでしょう。

+

実際にGNUのコンパイラであるGCCは、もともとは単なるCコンパイラでしたが、バージョンが進むにつれ文法を解釈するフロントエンドと実際に機械語を生成するバックエンドとの分離が徹底され、今ではC, C++だけでなく、Ada, Pascal, FORTRANなどなどの言語のコンパイルができるようになりました。近日中にCOBOLのフロントエンドも完成するとのことです。ですから、以前gccはGNU C Compilerの略でしたが、もはやC Compilerではないので、正式にはGNU Compiler Collectionの略称だということになったのだそうです。

+
+

なお、余談ですがGCCのCOBOLのフロントエンドを作っているのは、私の会社のメンバーです。実は会社の業務でCOBOLコンパイラが必要になったのですが、オープンソースなCOBOLコンパイラがなかったので自分たちで作ることにしたのです。

+

そういえばマイクロソフトの .NETも言語を超えた共通の実行系CRL(Common Runtime Library)を提供していますね。これもVBやC#を始めとする複数の言語を共通の中間言語(IL)に変換することを実現しています。言語を超えてもできることは本質的に同じというわけです。

+

このように、新しい環境によってどの言語でもできることが大差なくなってくると、どの言語を選ぶかどうかの決め手は以前とは変化してくると思います。いや、変化するというよりも、以前からそれが決め手だったのですが、新しい環境により、もっと明確に意識されるようになったのでしょう。

+

私は長い間プログラミング言語おたくを続けてきて、その中で「生き残る言語」の性質を知りたいと考えていました。技術的に優れた言語が消えていったり、問題のある言語が悪口をいわれながら栄えたりするのはなぜだろうと考えていました。そして、最近になってようやっと得られた結論はこれです。

+
    +
  • 外見のよい言語が生き残る

  • +
  • 資産のある言語が生き続ける

  • +
+

FORTRANの外見が? と思う人もいるでしょうが、その言語の登場したタイミングを考慮しなければなりません。FORTRANの誕生した1950年代には「人間に読めるプログラミング言語」は最高にかっこよかったのです。私の生まれる前だから知らないけど、たぶん。

+

そして、最初の生存競争を生き残った言語のうち十分に資産を蓄積した言語が生き続けるのです。FORTRANやCOBOLは十分資産を蓄えたので、まだ現役です。PL/Iはちょっと資産が足りなかったようです。

+

さて、われらがRubyはどうやら一番最初の生存競争を生き延びつつあるようです。Rubyの開発を始めた1993年にはこんなにたくさんの人が使うようになるとは考えていませんでした。正直なところ、現れては消えていく数多くの言語の仲間入りする可能性はかなり高いと作者でさえ考えていたのです。

+

しかし、「私好みの言語」をよいと思ってくださる方は予想以上に多く、意外にたくさんの人がRubyを受け入れてくださいました。今では日本語で20冊、英語で6冊、ドイツ語で3冊、フランス語で1冊のRuby関連書籍が発行されています。近々ロシア語も書籍も登場するそうです。

+

これもひとえにRubyがかっこよかったからです。外見の勝利です。人間は顔じゃないけど、プログラミング言語は顔だったんですね。

+

ただ、ソフトウェアだって言語だって、かっこばかりで中身が全然なくっちゃ話になりません。中身が伴って外見もよくなくちゃいけないって意味では人間とそう違いはないかもしれませんねえ。

+
+

まとめ

+
    +
  • 人間は中身が大事

  • +
  • でも、ソフトウェアは外見が大事

  • +
  • プログラミング言語は外見がすべて

  • +
  • かっこいい言語を使おう

  • +
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-043.xhtml b/docs/vol1/xhtml/p-043.xhtml new file mode 100644 index 0000000..8e0253d --- /dev/null +++ b/docs/vol1/xhtml/p-043.xhtml @@ -0,0 +1,417 @@ + + + + + +第19章 ネットワークプログラミング + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay19 +
+

+初等Ruby講座
+ネットワークプログラミング +

+
+

[Linux magazine, 2002年12月号]

+
+

ネットワークプログラミングの基礎であるソケットについて解説しています。この辺は20年経ってもほとんど変化はありませんね。例題としている「アンテナ」というのは若い人はもうご存じないでしょうね。Webページを一定間隔で巡回して、その更新状況を知るためのソフトウェアのことを当時はアンテナと呼んでいました。現代で言うRSSリーダーに近いものですが、しかし、そのRSSリーダーでさえ時代遅れの感があります。最近は情報は勝手にプッシュ通知でやって来ますからねえ。

+

「Ruby開発日記」は、「予想外」というテーマで人も言語も将来のことはわからないという話を書いています。未来はいつでも予想不能ですねえ。

+
+
+

「サーバーならLinux」とはよくいわれることですが、今回はネットワークのクライアントとしても活用できるぞ、というところを見てみます。

+
+
+

クライアント/サーバー

+
+

クライアント/サーバーとはシステムの構成方法の1つで、サービスを提供するサーバーと、そのサービスを利用する(おそらくは複数の)クライアントから構成されます。しかし、一言にクライアント/サーバーといっても技術の進歩に伴い時代によって変化しています。

+

はるかな太古、なんていうとその時代を知っている人には失礼でしょうが、昔は中心に巨大なコンピュータがあり、その周りに「端末」と呼ばれる機械がつながっていました。1960年代後半から80年代にかけてのことです。当時コンピュータは高価なものだったので、利用者全員がコンピュータを使うことは夢にも考えられませんでした。端末には画面とキーボードがありましたが、行うのは入出力だけで、実際の処理はすべて中央コンピュータが行っていました。これがクライアント/サーバーという概念のはしりです。

+
+

しかし、時代が経つにつれ、コンピュータの価格が下がり、端末としてコンピュータを使えるようになりました。そうなるとただの画面とキーボードの代わりに使うばかりではもったいないと、処理の一部を端末側に移すようになってきました。これらはインテリジェント端末と呼ばれることもありました。また、PCのような安価なコンピュータに端末のふりをさせるやり方(端末エミュレータ)もこの頃普及しました。おそらく、この頃が「クライアント/サーバー」という言葉が誕生した頃(80年代後半頃)だと思います。

+

しかし、ムーアの法則により、クライアント側のコンピュータ処理能力はどんどん向上します。下手をするとクライアントのほうが高い処理能力を要求するなんて事態も発生するようになりました。これが90年代頃ではないでしょうか。

+

1つの例はX Window Systemです。今ではLinuxを始めとするUNIX系OSでのGUIを統一してしまった感のあるXですが、登場したばかりの頃はいろんな意味で驚きのあるクライアント/サーバーシステムでした。

+

Xで(当時)驚かされた点は、

+
    +
  • ユーザーが直接使う画面、キーボード、マウスなどを管理するのがサーバーで、処理を行うのがクライアントであるという、旧来のクライアント/サーバーとはまったく逆の構成

  • +
  • GUIプログラムの処理の部分がそれなりに複雑なので、しばしばクライアントのほうが規模が大きくなった

  • +
+

という「逆転現象」でした。Xサーバーだけを積んだ「X端末」なるマシンも登場しました。端末がサーバーを持っているという事態に混乱した人も多数いました。

+

もう1つの例はWWWです。もともとWWWはHTMLで記述されたテキストデータを提供するだけのものでした。ですから、CGIのようなサーバー側で動的にデータを生成するものが少々あっても、Webサーバーに必要な処理というのはたいしたものではありませんでした。むしろ、HTMLを構文解析し、適切に表示するクライアント側プログラム(ブラウザ)のほうが肥大化し、たくさんの計算能力を必要としました。

+

このように、90年代はクライアント側の時代であったと考えることができるでしょう。

+

しかし、2000年以降は話が複雑になってきます。さすが時代は21世紀です(意味不明)。

+

まず、第一に起きたことはWWWの異常なまでの普及です。これによって人気のあるWebサーバーにはアクセスが集中するようになりました。このトラフィックに対処するためサーバー側にもいろいろな工夫が求められるようになりました。たとえば、複数のWebサーバーに負荷を分散する「ロードバランシング」や、単なるCGIよりも効率のよい新しいスタイルのサーバーサイドプログラム(ApacheモジュールやFastCGI, Servlet)です。

+

一方、クライアント側もJavaScriptによるクライアント側処理の複雑化や、XMLやSVGなどの対応するフォーマットの多様化、あるいはFlashなどのプラグインで、より肥大化しています。かつては10年間隔ぐらいで重点が交互に移っていたクライアントとサーバーは、いまや数カ月単位で振動しているという印象さえあるほどです。

+
+
+ +

基本に立ち返る

+
+

表面を眺めると変化の大きいクライアント/サーバーシステムですが、その基本となる部分に注目してみると、意外なほど変化していません。

+

WWWの基礎となるHTTPは現在使われているHTTP 1.1(RFC2068)が制定されたのが1997年、HTTP 1.0(RFC1945)は1996年です。メール転送のSMTP(RFC780)は1981年、FTP(RFC542)は1973年に決まっています。FTPが制定された時点では、本書の読者の多くは生まれていないんじゃないでしょうか。

+

それらプロトコルを伝える通信手段(トランスポート層、ネットワーク層)である、TCP/IPやイーサネットは、それぞれ1970年代の産物です。

+

ということは、これらの基本をマスターしていれば、当面は安泰ということもいえるでしょう。今回は、Rubyでこれらを使ったネットワークプログラミングをどう行うかについて学びましょう。

+
+
+

ソケット

+
+

ネットワーク経由の通信には「ソケット」というものを使います。電球を差し込んだりするアレですね。前もって「待ち合わせた」ところでお互いにソケット同士をつなぎあわせることで通信路ができるわけです。待ち合わせる場所はソケットの種別によって変わってきますが、最もよく用いられるTCP/IPのソケットでは、ホスト(ホスト名またはIPアドレスで指定する)とポート(1から65535までの整数で指定する)の組み合わせで待ち合わせます。サーバー側があるポート番号でリクエストを待ち受け、クライアント側がサーバーのホスト名と接続するポート番号を指定してつなぎにいく、という形になります。

+

ですから、URLの、

+
    +
  • http://www.ruby-lang.org:80/ja/index.html

  • +
+

の「//」から「/」の間は「ホストwww.ruby-lang.orgのポート80番」で待っているWebサーバーのソケットを指定していることになります。

+

他の種類のソケットではまた違う条件で待ち合わせることになります。

+

UNIXは入出力は統一的にストリームとして扱います。ネットワーク経由の入出力も例外ではありません。Rubyではソケットに対する入出力も普通のファイルに対する入出力とまったく同じ形式で行うことができます。違うのは接続する手続きとソケットに対してのみ有効な処理だけです。

+
+
+

Socketクラス群

+
+

Rubyはソケット関係のクラスが目的別に8つ用意されています(図19.1)。ソケットはストリームですから、これらのクラスはIOのサブクラスです。

+
+ +
+ fig1901 +
+

図19.1●ソケット関連クラス群

+
+ +

実はこれらソケットクラスをそのまま使う機会は減ってきています。後述のそれぞれのプロトコルに対応した「net/」クラスを使うほうが簡単だからです。とはいえ、基礎は大切です。net/ クラスもこれらのクラスを使って記述されていますし、新しいプロトコルに対応するクラスを自分で作るためにはソケットの知識は不可欠です。ここでは簡単に各ソケットクラスについて解説しておきましょう。

+

BasicSocketIOの直接のサブクラスで、他のすべてのソケットクラスのスーパークラスです。BasicSocketは抽象クラスで、インスタンスを作りません。BasicSocketクラスのメソッドは表19.1のとおりです。

+
+

表19.1●BasicSocket クラスのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
クラスメソッド説明
close_read読み込みのクローズ
close_write書き込みのクローズ
getpeername接続先ソケットの情報
getsockname自ソケットの情報
getsockopt(opt)ソケットオプションの取得
recv(len[,flag])データの受け取り
send(str[,flag[,to]])データの送信
setsockopt(opt,val)ソケットオプションの設定
shutdown([how])ソケット通信の終了
+
+

IPSocketTCPSocketUDPSocketのスーパークラスで抽象クラスです。IPSocket表19.2のメソッドを持っています。

+
+

表19.2●IPSocketクラスのメソッド

+ + + + + + + + + + + + + + + + + +
クラスメソッド説明
addr自ソケットの情報
peeraddr接続先ソケットの情報
recvfrom(len[,flag])データの受け取り
+
+

TCPSocketはコネクション型のソケット、つまり相手先と接続して継続的にデータを流すタイプのソケットです。一方、UDPSocketはパケット型のソケット、つまりデータを1つ1つの塊として相手先を指定して送ることができます。相手先を固定することもできますが、必ずしもそうする必要はありません。

+

UNIXSocketは「UNIXドメインソケット」のクラスです。UNIXドメインソケットとは同じコンピュータのプロセス間で通信する手段で、待ち合わせに「ホスト名とポート」ではなく、「ファイルパス」を使います。その他の点はTCPSocketと同様、コネクション型のストリーム入出力を行います。

+

TCPServerUNIXServerは、それぞれTCPSocetUNIXSocketのサーバー版です。これらのクラスはサーバー側のソケット処理を簡単にしてくれます。

+

最後のSocketクラスは低レベルソケットインターフェイスです。SocketクラスはC言語レベルのすべてのソケットAPIに対応するメソッドを持っています。ですから、Socketクラスを使えば、Cで記述するのと同じくらいきめ細かなプログラミングができます。繁雑なのでめったにやることはありませんが。

+ +

各ソケットクラスのメソッドなどはドキュメントを参照してください。Rubyのドキュメントとしては、

+
    +
  • 『Rubyデスクトップリファレンス』(オライリージャパン)

  • +
  • 『プログラミングRuby』(ピアソンエデュケーション)

  • +
  • http://www.ruby-lang.org/ja/man-1.6/

  • +
+

があります。

+
+
+

初めてのソケットプログラミング

+
+

というわけで、ソケットクラスを用いたプログラムを書いてみましょう。最初は簡単にネットワーク経由で時刻を取得するプログラムです。

+
+
require 'socket'
+print TCPSocket.open("localhost", "daytime").read
+
+

簡単ですね。「openしてreadする」これだけです。それ以外のことはRubyとそのクラスライブラリが取り計らってくれます。openの引数はホスト名とサービス名です。サービス名の代わりにポート番号で指定してもかまいません。

+

このプログラムがうまく動作すれば、

+
+
Thu Oct 10 11:04:55 2002
+
+

のように時刻が表示されます。ここで、

+
+
Connection refused - "connect(2)"
+
+

というようなエラーメッセージが表示された人は、残念でした。お使いのマシンでは時刻を返すdaytimeサービスが起動していません。最近はほとんどのマシンでセキュリティなどの理由でdaytimeサービスは停止してあるようですね。

+

その場合には「クライアント側のソケットプログラムはこのようにするものである」と納得するだけにしておいてください。

+

もし、どうしてもdaytimeサービスの結果が見たければ、/etc/inetd.confというファイルにdaytimeという文字列を含む行が、「#」でコメントアウトされているはずです。

+
+
#daytime  stream  tcp  nowait  root  internal
+#daytime  dgram   udp  wait    root  internal
+
+

今使うのはTCP/IPですから、上のほうの「tcp」を含む行の「#」を外してください。それから実際にdaytimeサービスを提供するinetdを再起動してください。

+
+
+
# /etc/init.d/inetd restart
+
+

でも、わざわざそこまですることはないかなあ。

+

とにかく、このようにRubyならたった2行(実質は1行)でソケットプログラミングができます。Cでのソケットプログラミングの経験がある人にとっては、驚きといえるのではないでしょうか。

+

では、サーバー側も見てみましょう。先ほどのdaytimeプログラムが動かなかった人が大半でしょうから、daytimeサーバーと同じ働きをするサーバーを書いてみましょう。本来のdaytimeサービスのポートはrootでなければ使えませんから(1024番以下のポートはroot権限が必要)、待ち合わせるポートは12345番ということにしましょう。

+
+
require 'socket'
+s = TCPServer.new(12345)
+loop {
+  cl = s.accept
+  cl.print Time.now.strftime("%c")
+  cl.close
+}
+
+

これで終わりです。ネットワークサーバーというと大げさな印象がありますが、拍子抜けするくらい簡単ですね。このプログラムを起動しておいて、別のターミナルから先ほどのクライアントプログラムを "daytime" の部分を12345に置き換えて実行してみましょう。

+
+
Thu Oct 10 12:29:59 2002
+
+

のように時刻が表示されれば成功です。

+

このようにRubyを使えばネットワークプログラミングの基本的な部分は決して難しくありません。しかも、RubyのソケットクラスはIPv6対応ですから、いろいろややこしいIPv6対応を考えなくても、IPv4とIPv6との両方に対応したプログラムが書けます(クライアント側ならです。サーバー側は実は明示的にIPv6対応する必要があります)。

+
+
+

プロトコル

+
+

「Rubyを使えばネットワークも簡単」とはいうものの、上記のソケットプログラムはしょせんつなげただけです。ちゃんとしたネットワークプログラムはつないだ先と取り決めに従ってきちんとデータのやりとりをしなければなりません。この取り決めのことを「プロトコル」といいます。

+

プロトコル(protocol)とは辞書によると、

+
+

①(条約の)議定書・原案。

+

②外交儀礼。

+

③コンピューター – システムで、データ通信を行うために定められた規約。情報フォーマット、交信手順、誤り検出法などを定める。

+

【広辞苑】

+
+
+

なのだそうです。この場合は③の意味ですね。どちらがどのような順序でどのようなメッセージを送るか、データを送信する場合にはどのような形式で送るかなどを、通信の両端で正しく合意できていないと情報交換はできません。たとえば、先ほどのdaytimeサービスでさえ、

+
    +
  • クライアントが接続したらサーバー側から日付文字列を送る

  • +
+

というプロトコルに従っていたわけです。ネットワーク上のサービスはどのようなものでも、何らかのプロトコルに従って通信されています。たとえばWWWで使われるHTTP(HyperText Transfer Protocol)、ファイルのアップロードなどに使われるFTP(File Transfer Protocol)、メールの取得に使うPOP3(Post Office Protocol version 3)、メールの送信に使うSMTP(Simple Mail Transfer Protocol)などです。やたらPで終わる略語が多いと思ったらみんなプロトコルという意味だったんですね。

+

このようなプロトコルをネットワーク層(イーサネットなど)、トランスポート層(TCP/IPなど)の上位にある層なので「アプリケーション層」と呼ぶことがあります。ちゃんとしたネットワークアプリケーションを作るにはこのプロトコルを処理するプログラムを書く必要があります。

+

しかし、アプリケーション層のプロトコルは先ほどのdaytimeのような簡単なものばかりじゃないんですよねえ。

+
+
+

「net/」シリーズ

+
+

しかし、「難しいものを簡単に」というのはRubyのゴールの1つです。Rubyにはこれらのプロトコル(のうち、いくつか)を簡単に扱うためのクラスライブラリが標準添付されています。

+
    +
  • net/ftp

  • +
  • net/http

  • +
  • net/imap

  • +
  • net/pop

  • +
  • net/smtp

  • +
  • net/telnet

  • +
+

これらにはライブラリ名に「net/」が付いているので、個人的に「net/」シリーズと呼んでいます。発音するときには「ねっとすらっしゅ」ライブラリという感じでお願いします。これらのライブラリはプロトコルのクライアント側に相当します。これらのプロトコルのサーバーをいちから作りたい人はそんなにいないでしょうからね。

+

なお、「ねっとすらっしゅ」ライブラリの作者はnet/imapが前田修吾さん、net/telnetが青山和光さん、残り全部が青木峰郎さんです。

+

今回はその中でも主要なものである、net/httpを見てみましょう。

+
+
+ +

簡易アンテナの実装

+
+

「アンテナ」っていうのは、テレビなどの電波を受けるもの、ではなくって、この場合はWWWページの更新状況をチェックするためのプログラムなんだそうです。たとえば、

+
    +
  • http://www.ruby-lang.org/ja/hotlinks.html

  • +
+

なんかは、このアンテナの出力結果になるわけですね(図19.2)。

+
+ +
+ fig1902 +
+

図19.2●Ruby Hotlinks

+
+

今回は、「ねっとすらっしゅ」ライブラリで、アンテナの基本になる部分を実装してみましょう。基本的な手順は、

+
    +
  1. net/httpを使ってページのヘッダーを取得
  2. +
  3. ヘッダーのLast-Modifiedフィールドの情報を得る
  4. +
+

だけです。

+
+
+

アンテナ料理の下準備

+
+

さて、例によって例題プログラムで使うライブラリの解説をしておきましょう。アンテナの例題では以下のライブラリを使います。

+
    +
  • uri

  • +
  • net/http

  • +
+

uriはURI(Uniformed Resource Indicator)のことです。URL(Uniformed Resource Locator)とどこが違うのかといわれると正直なところよくわかりません。ただ、URLはURIのサブクラスなのだそうですから、URIでしか表現できないものがあるんでしょう、きっと(頼りない)。

+ +

uriライブラリの提供するURIクラスには以下のクラスメソッドがあります。

+
    +
  • URI.extract 「URIっぽい」部分の抽出
  • +
  • URI.join    URIの結合
  • +
  • URI.parse   URIオブジェクトの取得
  • +
  • URI.split   URIを個々の要素に分割
  • +
+

個々のURIオブジェクト(実際には種別ごとにクラスが違うのですが)にはたくさんのメソッドがありますが、その主要なものは以下のとおりです。

+
    +
  • scheme   URIの種別(httpとか)
  • +
  • userinfo ユーザー情報
  • +
  • host     ホスト名
  • +
  • port     ポート番号
  • +
  • path     パス
  • +
  • query    補助
  • +
+

一方のnet/httpライブラリはHTTPクライアントのためのライブラリです。Net::HTTPクラスの主要なクラスメソッドは以下のとおりです。

+
    +
  • new(host,port)    新しいHTTP接続
  • +
  • start(host, port) HTTP処理
  • +
  • get(uri)          GETによる取得
  • +
  • get_print(uri)    GETしたページの出力
  • +
+

Net::HTTPクラスの主要なインスタンスメソッドは以下のとおりです。

+
    +
  • get(path[,header])  GETリクエスト
  • +
  • head(path[,header]) HEADリクエスト
  • +
  • post(path[,header]) POSTリクエスト
  • +
  • start               HTTP処理
  • +
  • finish              接続終了
  • +
+

Net::HTTPを使った典型的な典型的な処理の流れは、

+
    +
  • Net::HTTP.startを使って全体を囲む

  • +
  • インスタンスメソッドを使ってページを取得

  • +
+

となります。

+
+
Net::HTTP.start(host, port) {|http|
+  r = http.get  # とかなんとか
+}
+
+
+

HTTP::startを使えば明示的にfinishする必要はありません。Rubyが忘れずにfinishしてくれます。

+
+
+

簡易アンテナの実装

+
+

下準備したことを踏まえて、簡易アンテナを実装してみましょう(リスト19.1)。ページの更新時刻が取得できたときにはそれを表示し、できなかった場合(CGI出力されたページなどは時刻が表示されません)には、「不明」と出力します。

+
+

リスト19.1●簡易アンテナ

+
#!/usr/bin/ruby
+
+require 'uri'
+require 'net/http'
+
+uri = URI.parse(ARGV[0])
+if uri.scheme != "http"
+  STDERR.puts "error: #{$0} only supports http"
+  exit 1
+end
+
+Net::HTTP.start(uri.host, uri.port) {|http|
+  response = http.head(uri.path)
+  printf "URL %s の更新時刻は", uri
+  if response.key?("last-modified")
+    printf "%sです。\n", response["last-modified"]
+  else
+    printf "不明です。\n"
+  end
+}
+
+
+

なんだか、例題そのもののような超簡単なプログラムになってしまいましたね。では、実行してみましょう。ここでは仮にプログラムの名前をpagedate.rbとします。

+
+
URL http://www.ruby-lang.org/ の更新時刻は不明です。
+
+

あら?

+ +

実はwww.ruby-lang.orgのトップページはCGIになっているので、時刻がわからないのです。では、他のページを見てみましょう。

+
+
URL http://www.ruby-lang.org/ja/ の更新時刻はSat, 07 Sep 2002 15:45:02 GMTです。
+
+

今度はCGIではないので、ちゃんと取れました。めでたし、めでたし。このようにわずか数行でアンテナが書けるというのはたいしたものです(例によって自画自賛)。

+

しかし、これではあまりにも簡易すぎますね。ちょっと考えただけでも、「HEADが失敗したらGETでページ全体を取得してみる」とか「ページがリダイレクトされた場合の対応」とかの対応が考えられていませんし、それにそもそもアンテナというものは、指定されたURLの更新時刻を調べるだけではなくて、URLが以前チェックしたときから更新されているかどうかをチェックするものです。

+

とはいうものの、ページの制限もありますし、この辺は読者への宿題ということにしておきましょう。

+

HEADの失敗やリダイレクトへの対応は、例外処理を使えば比較的簡単に実現できます。失敗したときにもリダイレクトされたときにもheadメソッドは例外を発生させますから、beginrescueで例外を捕捉してやれば対応できますよね。

+

また、更新チェックは、たとえば、

+
    +
  • 過去の更新時刻をファイルに覚えておいて、今回取得した時刻と比較する

  • +
  • 時刻が取れなかった場合、ページ内容のMD5値を取っておいて、現在の内容のMD5値と比較する(いつ更新したかはわからなくても更新したかどうかはわかる)

  • +
+

などの方法が考えられます。

+
+
+

実用への遠い道

+
+

このようにRubyのネットワークプロトコル対応クラスライブラリを使えば、簡易なアンテナならすぐに書けてしまうわけですが、ここから実用的なアンテナまではなかなか遠い道のりがあります。

+

実は本格的なアンテナの実装には、本当はいろいろ考慮すべき点があるんだそうです。いわく、

+
+

などなどなど。まあ、ただ単にいつ更新したか知りたいというだけでそれぞれのページに迷惑をかけるわけにはいかないので、妥当な心づかいだと思います。

+

今回はHTTPアクセスの基本の説明しかしませんでしたが、これから本気でアンテナを開発する人はぜひこれらの点にも気を付けてすばらしいものを作ってくださいませ。

+

なお、Rubyで書かれた本格的なアンテナといえば「たまてばこ」があります。「たまてばこ」のホームページは

+
    +
  • http://www.wakaba.toyonaka.osaka.jp/~ikemo/soft/tama/

  • +
+

です。

+

「たまてばこ」は1700行を超える大作です。小さなプログラムでもすぐに1000行を超えてしまうようなCと違ってRubyの1700行はかなり大規模です。ただ、「たまてばこ」では「net/」ライブラリは使わず、URLクラスなどを始めとして、クラスライブラリをかなり自前で用意しています(一部net/httpcgiを使っていますが)。標準ライブラリを使えば、もう少し小さくなるかもしれません。

+
+
+

まとめ

+
+

というわけで、今回はネットワークプログラミングの基礎であるソケットと、その上位にあるアプリケーション層のネットワークプロトコルライブラリについて学びました。しかし、ネットワークプログラミングは奥が深いので、まだまだ説明できません。次回はぜひクライアント/サーバーモデルを超えたネットワークプログラミングである「分散プログラム」について見てみたいと思います。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-044.xhtml b/docs/vol1/xhtml/p-044.xhtml new file mode 100644 index 0000000..321392f --- /dev/null +++ b/docs/vol1/xhtml/p-044.xhtml @@ -0,0 +1,75 @@ + + + + + +第19章 ネットワークプログラミング + + + + +

Matz Essays Volume 1

+ + +
+

◆ Ruby開発日記 ◆ 予想外

+
+

未来は予想できないとは誰もが感じていることでしょう。子供のときになりたいと思っていた職業に本当につく人はごく少数でしょう。子供のなりたい職業といえば、男の子なら野球選手とかサッカー選手やパイロットなどありがちでしょうか。私の同級生にもそんなのが多かったような気がします。女の子は看護師や保育士とかが典型的なのかなあ。

+

私はといえば小学校低学年の頃は精神科の医者になりたいと思っていました。妙に具体的ですね。しかし、医学部には解剖実習があるという事実を恐れた私は、この夢をあきらめたのでした。人の心には興味があったんですけどねえ。

+

次になりたいと思ったのは、科学者です。それも理論物理学の研究者になりたいと思っていました。講談社のブルーバックスや、白揚社の『ガモフ全集』などを読んでその気になったものです。やっぱり変な小学生ですね。

+ +

しかし、中学生になって重大な事実が2つ発覚しました。1つは私自身に数学に関するセンスがまったくないこと、もう1つは理論物理学には数学が要求されることです。大変なショックでした。どうにも数学がわからなくてねえ。

+

というわけで、理論物理学者の夢も早々にあきらめてしまいました。ちょうどその頃、コンピュータに出合い、プログラマーになることを目指すようになりました。幸いにして(やはり数学が障害になりましたが)、なんとかプログラマーの道を進むことができました。しかも、高校生の頃からいつかなりたいと思った言語設計者になれるとは。まったく、人の人生はわからないものです。

+

ところで、うちの5歳の息子は常々「植物博士になりたい」と言っています。やや妙なのは父親譲りでしょうか。

+
+

言語の人生

+

人の人生もわからないものですが、プログラミング言語の人生もわからないものです。

+

だいたいにしてプログラミング言語は他のソフトウェアに比較して寿命が長いものです。

+

たとえば1950年代生まれのFORTRANやCOBOLが今に至るまで現役であるとは、当時の関係者でも誰一人として予想しなかったのではないでしょうか。実際には数々の改訂と進化を経て、これらの言語は(時代遅れといわれつつも)まだまだ第一線で使われています。

+

Lispはもっと変わった出自の言語です。というのも、このLispはもともとプログラミング言語として開発されたわけではないのです。1958年、MITのJohn McCarthy教授はチューリングマシンよりも高度な数学的計算モデルとしてLambda Calculusというものを研究していました。もともとこれは人間がアルゴリズムを表現するための記法であって、プログラミング言語であるとは考えられていませんでした。

+

McCarthy教授たちはLambda Calculusがチューリングマシンよりも扱いやすいモデルであることを示すため、Lambda自身を評価する万能Lambda関数を記述して、それが万能チューリングマシンよりも簡単に書けることを示そうとしたのでした。そこでプログラム自身をデータとして表現する表記法として現在Lispで使われているS式が考え出されたのです。

+

ところが、当時McCarthy教授の大学院生であったSean Russellさんがこの万能Lambda関数evalをコンピュータで実行できればLambdaインタプリタになるのではないかと考えたのでした。

+

正直なところ、これはMcCarthy教授の予想を超えたものでした。教授は後にインタビューでこのように語っています。

+
+

Steve Russelが言った。ほら、evalをプログラムしたらどうだろう……、で、私は答えたものさ。はは、君は理論と現実を混同しているよ。このevalは人が読むためのもので、計算するためのものじゃない。でも彼はそのアイデアを進めて実際にやってしまった。つまり、彼は私の論文のevalを [IBM] 704の機械語に直して、バグを取り、それをLispインタプリタと称したんだ。実際そうだった。それが、Lispが現在の姿を取った瞬間だった。

+

— Paul Graham「Revenge of the Nerds」から引用

+
+

ですから、他の言語と違い、Lispは人間が表記する記法という言語というよりも、数学的記法の1つとして誕生したのです。

+
+

10月号のこの日記でも書きましたが、Lispの進んだ点というのは、この他の言語とはまったく異なる出自によるものなのです。

+

LispやFORTRAN, COBOLのように予想外に長生きする言語もあれば、期待されながらもいつの間にか消えてしまった言語もあります。こちらも予想外でしょう。

+

プログラム言語の人生(?)もわからないものです。

+
+
+

Rubyの場合

+

Rubyも予想外といえば予想外です。

+

昔から言語が作りたいと思っていた私は、大学の卒業研究でも教授の勧めを振り切って独自のプログラミング言語を設計しました。Classicという名前だったこの言語はRubyとは正反対で静的な型を持つオブジェクト指向言語で、一言でいうと「Cの外見を持つEiffel」という感じでした。ま、結局はあんまりうまくいかなかったんですけど、反面教師という形でRubyに影響を与えています。

+

Rubyが静的な型を持たないオブジェクト指向言語なのは、この辺も影響していると思います。

+

もともとRubyは私のおもちゃで、自分のテキスト処理などができればそれでよいと思ってました。ところが1995年に公開して以来、私が予想もしなかった人たちが、どんどんRubyを使い、また改善の提案も寄せてくれました。

+

開発を始めた9年前にはまさか海外にもRubyユーザーがいて、アメリカでRuby Conferenceが開かれるようになるとは予想もしませんでした。今年も11月1日から3日までワシントン州シアトルで開催されます。来月号ではレポートできるのではないかと思います。

+
+
+

まとめ

+
    +
  • 人の人生はわからない

  • +
  • 言語の人生もわからない

  • +
+
+
参考文献
+

「技術野郎の復讐 — Revenge of the Nerds」
+Paul Graham著, Shiro Kawai訳
+http://www.shiro.dreamhost.com/scheme/trans/icad-j.html

+
+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-045.xhtml b/docs/vol1/xhtml/p-045.xhtml new file mode 100644 index 0000000..7db574a --- /dev/null +++ b/docs/vol1/xhtml/p-045.xhtml @@ -0,0 +1,248 @@ + + + + + +第20章 番外編: Rubyカンファレンスレポート + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay20 +
+

+初等Ruby講座
+番外編:
Rubyカンファレンスレポート +

+
+

[Linux magazine, 2003年1月号]

+
+

第2回RubyConfの訪問記になります。このときは、RubyConf, OOPSLA, LL2の3つのカンファレンスに出席し、それぞれで発表するという強行軍でした。しかも、RubyConfとOOPSLAはワシントン州シアトル、LL2はボストンのMITで開催されるということで、途中にアメリカ大陸横断を含んで足掛け12日間という無茶なスケジュール。ちなみに私にとっては、このときが最長の海外旅行でした。一生、2週間以上日本を離れないで終わりそうな気がします。

+

RubyConfは2回目にしてずいぶん成長しているのがうかがえます。出席も初回よりは倍近くに増えています。それでも60人強ですが。

+
+
+

2002年11月1日から2日まで、アメリカ、ワシントン州シアトルで開催された第2回Rubyカンファレンスに出席してきました。今回は「初等Ruby講座」番外編として、そのレポート(+α)を行いたいと思います。

+
+
+

2002年10月31日(木)

+
+

さて、いよいよ出発の日です。過去最長(12日間)の海外旅行で、しかもその間に3つのカンファレンスで3回「英語」で発表があるということで、そうとう緊張しています。

+

私は島根県という田舎に住んでいるので、海外に出るためにはまず国際線の出ている空港まで移動しなければなりません。そこで出雲空港から羽田空港、それから電車で成田まで移動です。遠い……。

+

成田空港ではゲートで無線LANが使えました。これは便利。出国前に最後のメールチェックです。16時55分のUA便で一路シアトルへ。所要時間は8時間15分です。機中観た映画は「ニューヨークの恋人」と「9デイズ」です。国際線は映画がたくさん観られるのがうれしいですね。

+

シアトルに到着したら同じ日の朝9時でした。もちろん時差のせいなんですが、時間が逆戻りして、なんだか変な気分です。シアトルと日本では17時間の時差があります。その後Ruby関係者+αで中華料理の昼食を。

+
+

夕方からはSeattle Perl Mongersのみなさまのミーティングに参加させていただきました。メインはDan Sugalski(Perl 6のVMであるところのParrotの開発者)によるParrotとPerl 6の話でした。Parrotについては興味深く聞きました。将来のRubyの実装にも参考にできそうな話がたくさんでした。Perl 6のほうは「Perl 6ってなんだか読みにくいRubyみたい」というのが正直な印象です。

+

ホテルに戻ったら、クレジットカードやら免許証やらが入ったカード入れをなくしていることに気が付いて真っ青になりました。がーん。

+
+
+

2002年11月1日(金)

+
+

気を取り直して、今日からRubyカンファレンスです。1日目のプログラムは以下のとおりです。

+
+
Using SWIG to Develop C/C++ Entensions for Ruby
By Lyle Johnson
+

SWIGを使った拡張ライブラリの開発についての紹介です。SWIGはCやC++のヘッダーファイルといくらかの補足的な情報に基づいて、拡張ライブラリのソースコードを出力するツールです。LyleはSWIGを使ってFOX(GUIライブラリ)インターフェイスを開発しています。

+
+
+
"Are We Done Yet?": thoughts on acceptance testing
By Nathaniel Talbott
+

Test::Unitの開発者であるNathanielによってAcceptance Testについて紹介がありました。Acceptance Testとは最終的に顧客が仕様を満足しているかを確認するためのテストで、ある意味ユニットテストの対極にあります。しかし、ユニットテストと同様の自動化は(ある程度)可能だということでした。また、いくつかの顧客に対してAcceptance Testを実施した経験が紹介されました。

+

Test::Unitは彼の身辺が片付いたら本家にマージするとのことでした。彼は2週間前に結婚したばかりですから(奥さんを連れてきてました)、いろいろ忙しいのでしょう。

+
+
+
TaksMaster: Distributing computing with Ruby
By Phil Thomson
+

TaskMasterはタスクを複数のクライアントマシンで分散実行するためのフレームワークです。開発動機はテスト実行だけでも数日かかるようなプログラムの実行を分散することで時間を短縮しようというものです。TaskMasterはマスター・スレーブ構成になっていて、マスターサーバーがスレーブにタスクを分配して結果を集めるようになっています。

+

また、Philは類似の技術(DRb, MPIなど)との比較も行いました。

+
+
+
Adapting and Extending Perl Idioms in Ruby
By Deniel Berger
+

Perlのやり方をRubyで実現するには、というテーマの発表です。主に引数の渡し方、それもキーワード引数を中心にやり方をいろいろと紹介していました。まあ、Perlのやり方に引きずられすぎているという印象もありましたが、なかなか興味深い発表でした。

+
+
+ +
Simplify your life with YAML for Ruby
By why the lucky stiff
+

YAMLはYAML Ain’t Markup Languageの略で、一種のデータ表現言語です。話を聞く前はよくあるXMLの別表現だと思っていたのですが、よく聞くとむしろオブジェクトのシリアライズを目的としたデータフォーマットでした。YAMLにはPerl, Python, RubyなどのAPIが提供されており、Why(名前です)はRuby版の開発者です。YAMLはもともとPerlのInline.pmのシリアライズ用のフォーマットとして開発されたもので、会場には原作者のBrian Ingarsonもいました。YAMLに関する情報はhttp://yaml.org/から入手できます。

+
+
+
ラウンドテーブル
By Matz
+

夕食の後、Ruby作者を囲んで自由に質問をするという時間がありました。将来の予定などを含めていろいろな質問がありました。質問とその答えは、

+
    +
  • http://www.pablotron.org/rubyconf2002/matz_rountable-20021101.txt

  • +
+

にまとめられています。

+

ラウンドテーブルの最後に、高橋征義さんが日本からはるばる持ってきた、日本で出版されたすべてのRuby関連書籍が紹介され、みなの注目を集めていました。22冊も運んでくださった高橋さん、ご苦労様でした。

+

1日目が終わってホテルに帰ったら、Seattle Perl Mongersの皆さんによってカード入れは発見され、フロントに届けられていました。感謝感激です。Seattle.pmの皆さん、ありがとう(聞こえないか)。

+
+
+
+

2002年11月2日(土)

+
+
+
Better Web libraries for Ruby: NARF
By Patrick May and Tom Clarke
+

Ruby標準のcgi.rbはよくできているが、実際にWebアプリケーションを開発する場合に少々不満が残るので、cgi.rbをベースに新しいCGIライブラリ(NARF)を開発した、という話です。

+

注目すべき点は、Actionという形で個別のCGIページ出力よりも高レベルで(複数のページの集合体である)アプリケーションを記述できる点と、ユニットテスト用メソッドが組み込まれていて、見栄え(HTML)の出力をテンプレートとして分離することで、一般に難しいといわれているCGIプログラムのユニットテストをきれいな形で実現していたことです。これは一見の価値があります。NARFの情報は、

+
    +
  • http://narf-lib.sf.net/

  • +
+

からどうぞ。

+

なお、NARFの開発者の二人はcgi.rbの開発者、青山さんに非常に敬意を払っていて、ぜひ自分たちの成果を青山さんに還元したいということでした。和光ってのは英語では発音しにくいみたい(「わくー」みたいになっちゃう)。

+
+
+ +
Rethinking Web Scripting
By Avi Bryant
+

WebアプリケーションフレームワークIOWAの開発者でSmalltalkerでもあるAvi Bryantは今年は、継続(continuation)を使ったデモを行ってくれました。

+

Webアプリケーションは複数のページの集合になるため、ロジックが分散してしまうのが難点です。しかし、Aviは各ページの状態を継続として保存しておくことで、見かけは普通のプログラムのままWebアプリケーションを実現しました。

+

具体的には、

+
+
from = ask("where are you traveling from?")
+to = ask("where are you traveling to?")
+say("you are traveling from %s to %s."%[from,to])
+
+

というような簡単なプログラムを、asksayの定義を置き換えるだけで、Webアプリケーションとして実行されてみせたのです。さらに驚くべきことにはこのWebアプリケーションはブラウザの「戻る」ボタンにまで対応しているのです。

+

この手法は実験的なもので規模の大きなアプリケーションには対応できませんが(大量の継続オブジェクトを生成するため)、小規模なアプリケーションを手軽に開発するためには有効そうです。

+
+
+
What I Learned about Ruby Web Applications or How I Spent My Summer Vacation
+By Dave Thomas
+

夏休みをバカンスで過ごすつもりが、急に仕事が入ってWebアプリケーションを開発するはめになった、というお話です。これだけなら笑い話なのですが、その仕事は非常に複雑なビジネスロジックを持つ業務用システムで、規模は大きく(画面数で400)、開発期間は短く(実質2カ月)、人員は自分一人というかなり厳しい条件でした。

+

しかし、優秀なソフトウェアコンサルタントであるDave Thomasは、Rubyを使い2万6千行のWebアプリケーションを2カ月で開発し、顧客を満足させ、無事支払いを受けたそうです。すばらしい。

+

その成功の秘密として、Rubyを使ったこと、ビジネスロジックとアプリケーションロジックの分離などがあげられていました。

+

昨年は、テスト用プログラムなど間接的に開発に利用し効率を上げるというプレゼンテーションが行われましたが、今年は直接業務アプリケーションをRubyで開発する話が登場し、Rubyの浸透を印象付けました。

+
+
+
OpenPKSD (OpenPGP Public Keyserver)
By Hironobu Suzuki
+

OpenPKSDは、すずきひろのぶさんによるOpenPGP公開鍵サーバーの実装です。pksdにはpgp.ai.mit.eduなどで運用されているC言語で実装された版(Cで1万7千行)があるのですが、メンテナンス性やスケーラビリティに問題があるので、Rubyで実装したのだそうです。Ruby版はPostgreSQLをバックエンドに使い、3千行ほどで実現できたそうです。OpenPKSDは170万鍵を格納し、性能的にはC版と遜色ないということです。ひろのぶさんはデモ用マシンを持ち込んで実演するなど本気でした。OpenPKSDの情報は、

+
    +
  • http://www.openpksd.org/

  • +
+

にあります。

+
+
+ +
Exceptional Ruby
By Paul Brannan
+

Rubyにおける正しい例外の扱いについてと、特にC++で記述された拡張ライブラリにおいて、C++の例外とRubyの例外を共存させる方法について解説されました。

+

まず、「例外セーフ」という考え方が示されました。「例外セーフ」とは、実行中に例外が発生しても異常な事態が発生しないことです。たとえば、

+
    +
  • 例外が発生したので不完全なデータ構造が残った

  • +
  • 例外が発生したのでデータベースにゴミが入った

  • +
  • 例外が発生したのでプログラムが異常終了した

  • +
+

などの事態は「例外セーフ」ではありません。「例外セーフ」であるためには、rescueensureなどを利用して後始末が必要になる場合もあります。

+

次に、Rubyの例外は内部的にsetjmp/longjmpを使っているので、C++の例外と混ざるとクラッシュします。つまり、C++はRubyの例外を知らないので後始末ができませんし、逆も同様です。また、後始末されないC++の例外はクラッシュを引き起こすということです。ですから、C++の拡張ライブラリを開発する場合には、

+
    +
  • スタック上にC++オブジェクトを置かない

  • +
  • どうしても置く場合にはすべてのRuby例外を捕捉する

  • +
  • すべてのC++例外を捕捉する。必要ならRuby例外に変換する

  • +
+

ことが必要になります。Rubyの開発を始めた頃にはC++には例外なんてなかったのですが、いろいろ面倒になったものですね。発表資料は、

+
    +
  • http://rm-f.net/~cout/code/ruby/ruby_exceptions/html/

  • +
+

で参照できます。

+
+
+
FreeRIDE
By Rich Kilmer
+

FreeRIDEはRuby用のIDE(統合開発環境)です。GUIにはFOXを使い、WindowsでもLinux(や他のUNIX系OS)でも動作します。Ruby用IDEといえば、FreeRIDEの他にも古くはRubyWinや、Windows用のRDEなどがあるのですが、FreeRIDEの特徴は以下の2点です。

+
    +
  • 青木さんのRipperライブラリを使った構文解析を利用している。ちなみにRipperは海外で結構人気でした

  • +
  • FreeBUSという一種のアプリケーションフレームワークの上に構築されている。FreeBUSはFreeRIDEに依存しないフレームワークで、作者(Rich Kilmer)は他にもいくつかのアプリケーションを構築したそうです

  • +
+
+

FreeRIDEの詳しい情報は、

+
    +
  • http://www.rubyide.org/

  • +
+

から入手できます。

+
+
+
Ruby and Parrot
By Dan Sugalski
+

Danは次期PerlであるPerl 6の実行エンジンであるParrotの開発者です。しかし、ParrotはPerl 6専用というわけではなく、汎用の動的言語エンジンになる予定です。そして、Perl 6は現存する動的言語のあらゆる機能を持っているので、原理的にはParrotはあらゆるRubyを含むあらゆる動的言語を実行できるとのことでした。

+

また、実際にParrotはSchemeやRubyなどのフロントエンドを提供しているということでした。

+

Rubyの開発者としては、コアの部分を他のプロジェクトに依存するわけにはいかないので、将来とも公式エンジンとしてParrotを採用することはないと思いますが、選択可能なバックエンドとしては常に注目していきたいと感じました。

+

なお、Danとは土曜日のPerl Mongersのミーティング、Ruby Conference、月曜日のOOPSLAワークショップ、最後に次の土曜日にボストンでのLL2と、アメリカ滞在中に頻繁に遭遇しました。

+
+
+
Be Minor, Be Cool
By Yukihiro Matsumoto
+

私によるキーノートスピーチです。「マイナーであることを恐れるな、よいものはいつも最初はマイナーだ」というようなテーマで話しました。しかし、毎年英語でのプレゼンテーションには泣かされます。

+

プレゼンテーション資料は、

+
    +
  • http://www.ruby-lang.org/en/

  • +
+

から参照できるようにしておきます。

+
+
+
+

2002年11月3日(日)

+
+
+
Packaging Ruby apps with setup.exe
By Andy Hunt
+

Pragramic Programmersのもう一人、Andy HuntによるWindowsでRubyプログラムのインストールパッケージを作る手法についての紹介です。AndyはInstallShieldを使ったWindows版Rubyパッケージを配布していますが、Windows向けのフリーパッケージツールを利用することで、Rubyプログラム、ライブラリ、インタプリタを全部まとめてインストーラを作る方法を紹介しました。この場合、アプリケーションごとに別々のRubyインタプリタなどを持つことになりますが、今やディスクは安いし問題にはならない、むしろバージョン問題などを気にしなくてよいので望ましいくらいだ、ということでした。

+
+

Windowsに関心のない私は、残念なことにこのツールの名前を忘れてしまいました。たぶん、近いうちにAndyがリリースすると思います。http://www.pragprog.com/から入手できるようになるでしょう。

+
+
+
A Live Demo System (on CD) for Ruby on Linux
By Steven Gibson
+

歯科医師を対象にしたシステムの紹介も兼ねて、Rubyを中心にしたワンCD Linuxを用意し、CD-ROMドライブからブートできるPCならどこでも簡単にデモができることが紹介されました。Rubyを知ってもらうには実際に動作しているところを見てもらうのが一番で、LinuxやRubyの宣伝に非常に効果的だったと報告されました。

+
+
+
まとめ
By David Alan Black
+

今年のコーディネータだったDavid Alan Blackからまとめが行われました。昨年、今年とOOPSLA直前に開かれていましたが、来年はどうしようかという発言がありました。アナハイム(来年のOOPSLA開催地)の他、ハワイ、バルセロナなど好き勝手なことをみんなが叫んでいましたが、結局来年のコーディネータに一任という結論になりました。来年もDavidがやるのかな。今年はほとんど一人で取り仕切っていたので、彼は大変そうでした。お疲れさま。

+

今年は昨年よりも多い60人以上の参加者がありました。来年はもっと多くなるかもしれません。また、ヨーロッパでも同様のカンファレンスを行おうという動きがあるようです。Rubyの発展が目に見えるようです。

+
+
+
BOF
+

カンファレンス終了後いろいろなテーマでBOFが開かれました。が、私はこの時点で時差ぼけやらですっかり疲れてしまって、ホテルで休んでいました。

+
+
+
+

2002年11月4日(月)

+
+

Rubyカンファレンスはこれで終わったのですが、私はそのまま同じ会場で開かれたOOPSLAというカンファレンスに参加しました。OOPSLAとはObject-Oriented System, Language and Applicationの略で、世界最大のコンピュータ関連学会ACM(Association for Computing Machinery、直訳すると計算機械学会)の開催する由緒あるオブジェクト指向関連カンファレンスです。

+

今年はOOPSLAの一部として、1st International Workshop on Runtime Kernel Support for Dynamic Language and Component Based Architecture(長い)というワークショップが開かれ、そこのスピーカーとして招待されていたのです。Smalltalkや .NETの偉い人にまじって拙い英語で発表しましたが、このワークショップに出席してわかったことは以下のとおりです。

+
    +
  • Rubyの実装レベルはまだまだだ

  • +
  • スクリプト言語全般でもLispやSmalltalkには負けている

  • +
  • .NETは頑張っている(頑張ろうとしている)

  • +
  • でも、個人的にはまだ移行に決心はつかない

  • +
+
+

私の発表資料は他のと同様http://www.ruby-lang.org/から見えるようにしておきます。

+
+
+

2002年11月5日(火)から7日(木)まで

+
+

この間はOOPSLAに参加していました。6日(水)に開かれたDave ThomasとAndy Huntによるチュートリアルでは『C#エッセンシャルズ』の著者のBrad Merrilや『アジャイルソフトウェア開発』の著者のAlistair Cockburnなどの有名人も参加していました。

+
+
+

2002年11月8日(金)

+
+

この日は移動日でした。RubyカンファレンスとOOPSLAが開催されたシアトルから、LL2の会場であるMITがあるボストンまで移動するのです。途中デンバーを経由して7時間半の旅でした。機中で観た映画は「オーシャンズ11」。しかし、アメリカってのは同じ国の中でも時差があるんですね。シアトルとデンバーの間で1時間、デンバーとボストンの間が2時間。おかげで何時間飛行機に乗っていたのかわからなくなりそうでした。

+
+
+

2002年11月9日(土)

+
+

LL2当日。LL2とは「第2回 Lightweigt Languageに関するワークショップ」の略です。Lightweight Languageとは何か、というと、うーん、誰もよくわからないんですよねえ。まあ、LispとかSmalltalkとかPythonとかRubyとか、インタプリタがベースでダイナミックな言語というのは共通理解のようです。

+

私はLightweight Languageの定義とは何か、から始めて、人間に優しい言語、人気の出る言語を作るための原理・原則についてRubyを例にして紹介しました。この発表資料もhttp://www.ruby-lang.org/に置いておきます。

+

ボストンはなかなか素敵な街でしたが、見て回る時間がなかったのが残念です。今度はぜひ観光で訪れたいと思います。とかいって、海外旅行のときはいつもカンファレンスに出席してるんで、観光なんて余裕があったことはないんですよねえ。

+
+
+

2002年11月10日(日)

+
+

さて、長かったアメリカ滞在も終わり、とうとう帰国です。正直なところRubyカンファレンスが終わったあたりでもう帰りたくなっていたので「やっと」という印象があります。帰りの飛行機の中で観た映画は「K19:ウィドウメーカー」「K-PAX」「サイン」「スクービードゥ」でした。映画の見すぎで寝れなかったという(笑)。

+

日本に着いたら、もう11日(月)の夕方でした。1日損した気分ですね。日本はやっぱりいいなあ、と思いつつ、でも、あちこちでタバコの煙に苦しめられました。そういえばアメリカにいる間はタバコを見かけませんでした。これだけはアメリカのようになってほしいなあ。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-046.xhtml b/docs/vol1/xhtml/p-046.xhtml new file mode 100644 index 0000000..4c75668 --- /dev/null +++ b/docs/vol1/xhtml/p-046.xhtml @@ -0,0 +1,341 @@ + + + + + +第21章 プロセスとフォーク + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay21 +
+

+初等Ruby講座
+プロセスとフォーク +

+
+

[Linux magazine, 2003年2月号]

+
+

コンカレントプログラミングの手段のうち、今回はプロセスについて解説しています。プロセスの生成やゾンビ化を避ける手段など、現代においても有効なテクニックを解説しています。もっとも、最近はこの辺りはフレームワークにおまかせで、コアなシステムプログラミングをする人でもなければ触らないのかもしれませんが。

+

また、書籍『Rubyソースコード完全解説』について紹介しています。名著ですが、絶版なんですよね。Web版はまだ読めるのでそちらでどうぞ。

+

「Ruby開発日記」は、「ソフトウェアの一生」について語っています。ソフトウェアの運命は数奇なものです。オープンソースソフトウェアは比較的長寿ですが、それでも消えていくものもたくさんあります。そんな中でRubyは30周年を迎えられて幸せなほうですね。

+
+
+

今回は、OSにおけるプログラムの実行実体であるプロセスとその生成について解説します。

+
+
+

並列実行

+
+

一度に複数の仕事を依頼されたときには、あなたはどう対処しますか? 一度に1つずつ片付けていきますか? でも、仕事が5分や10分では終わりそうもないときには? 仕事をもっと小さな単位に分割して、それらを適当な順番で終わらせていきますか?

+

昔のコンピュータは一度には1つのことしかできませんでした。シングルタスクといって、1つの仕事が終わるまではひたすら待たされたことを覚えていらっしゃるかもしれません。パソコンではMS-DOSの頃はそんな感じでした。

+
+

最近のコンピュータはマルチタスクで同時に複数の作業ができます。Linuxを始めとするOSはこの仕事(タスク)を片付ける単位としてプロセスを使います。簡単にいうと1つのプログラムを起動してからそれが終了するまでがタスクで、その実行中のプログラムがプロセスです。

+

UNIX系OSでは新しいプロセスを作ることをフォーク(fork)と言います。ナイフ、フォーク、スプーンのフォークですね。forkには「枝分かれ」という意味もあるので、そちらのほうから来ているのだと思います。UNIXでは新しいプロセスを作るということは、プロセスがまず自分自身のコピーを作り、それからオリジナルとコピーが違う処理を始めます。だから「枝分かれ」なんですね。

+

一方、1つのプロセスの中で複数の処理を同時に行うこともできます。このいわば「プロセス中のプロセス」のようなものは「スレッド」と呼びます。スレッド(thread)とは「縫い糸」のことです。実行の流れが縫い糸のようにちくちくと現れたり消えたり(実行されたり止まったり)することから連想されたのでしょうか。スレッドについては来月解説する予定です。

+
+
+

プロセス生成

+
+

Rubyでは新しいプロセスを作るやり方はいくつもあります。

+

一番簡単なのはsystemメソッドでしょう。systemメソッドはコマンドを実行し、その終了ステータスだけを返します。

+
+
system "mv foo.txt bar.txt"
+
+

実際にはsystemは、

+
    +
  • シグナルハンドラの設定

  • +
  • 標準入出力のフラッシュ

  • +
  • プロセスの生成

  • +
  • プロセスの終了待ち

  • +
  • プロセスのステータス取得と後始末

  • +
+

などのめんどくさい処理を行っているのですが、ユーザーはそんなことを気にする必要はありません。systemは呼び出したプロセスが正常終了した場合にはtrue、異常終了だった場合にはfalseを返します。

+

次に簡単なのプロセス生成は「コマンド呼び出し」でしょう。これはコマンドを呼び出し、そのコマンドの標準出力を文字列として得るものです。

+
+
`ls -l`
+
+

ls -lの出力を1つの文字列として取り出します。

+

system同様、コマンド呼び出しもプロセス生成などについて考える必要はありません。

+

そして一番プリミティブな方法がフォークです。forkはUNIXのforkシステムコールを呼び出し、直接プロセスを生成します。forkは細かなことまで指定できますが、逆にコマンド呼び出しやsystemに比べると少々気を使う必要があります。

+

また、forkはUNIXのシステムコールですから、UNIXでないプラットフォーム(Windows版Rubyとか)では動作しません。Cygwin版RubyではCygwinが頑張ってthreadを使ってエミュレートしているそうですが。

+
+
+ +

フォーク

+
+

UNIXで新しいプロセスを作るという処理は、基本的にフォークによって自分自身のコピーを作ることから始まります。他のコマンドの実行は、フォークした新しいプロセスの中でexecシステムコールによって、自分自身(が実行しているプログラムを)他のコマンドに置き換えることによって行われます。ほとんどの場合、やりたいのはコマンドを実行することだと思うのに、まず自分のコピーを作るというのはどういうことか、という気になりますが、これはそういうものだと納得するしかありません。UNIX Wayというものです。

+

Rubyでプロセスをフォークするためにはforkメソッドを使います。forkメソッドは大きく分けて2つの使い方があります。最初の使い方はUNIXシステムコール的なやり方です。

+
+
if pid = fork()
+  # オリジナルのプロセスで実行される
+else
+  # フォークされたプロセスで実行される
+end
+
+

このように(ブロックなしで)呼び出されたforkメソッドは、新しいプロセスを作り、オリジナル(親)とコピー(子)の両方でforkの続きを実行します。ただし、親ではforkは子供のプロセスID(数値)を返し、子ではnilを返します。

+

子プロセスは親プロセスのコピーですから、同じプログラムを実行し、同じ状態(変数の値とか)を共有しますが、これらはあくまでもコピーですから、子プロセスで変数を書き換えても親プロセスには反映されません。SF好きならパラレルワールドを思い出すかもしれません。分岐してしまった2つの世界(プロセス)はもう別々の歴史を刻むのです。

+

if文のelse節で子プロセスの実行が終わらなければ、そのまま続きを実行してしまいます。うっかり親子で同じ処理を続けてしまわないように注意してください。

+

もう1つの使い方は少々Ruby的です。

+
+
fork {
+  # フォークされたプロセスで実行される
+}
+
+

forkメソッドにブロックを指定して呼び出すと、ブロックの内容は子プロセスでだけ実行されます。また、ブロックの実行が終わると子プロセスは自動的に終了します。このほうがわかりやすいといえばわかりやすいですね。

+
+
+ +

プロセスの入出力

+
+

新しいプロセスが起動されたとき、親プロセスの標準入出力はそのまま引き渡されます。ですから、新しく実行を始めたコマンドが受け取る入力は、

+
    +
  • 標準入力

  • +
  • argvexecシステムコールに指定したもの)

  • +
+

になります。一方、出力は、

+
    +
  • 標準出力

  • +
  • 標準エラー出力

  • +
  • 終了ステータス

  • +
+

の3種類です。通常の出力は標準出力に、何かエラーが発生したときのメッセージ出力は標準エラー出力に行います。これはエラーメッセージが出力結果を壊してしまわないようにという配慮です。

+

入出力先を切り替える、シェルのリダイレクトやパイプのようなことを行うためには、forkしたあとでexecする前に標準入出力(ファイルディスクリプタの0, 1, 2番)を切り替えることで実現します。切り替えが終わったあとでexecするわけです。forkexecが分離しているのはこの前処理を行うためだったんですねえ。

+

プログラムは標準入出力を使ったデータのやりとりとは別に、その実行が成功したかどうかを示す数値を返すことができます。これが終了ステータスです。終了ステータスはexitの引数で指定します(デフォルトは0)。プロセスの実行が成功したときには0、失敗したときには0以外を返します。シェルスクリプトでは最も最近終了したプロセスの終了ステータスは変数「$?」に格納されています(偶然ですが、Rubyでも同じ名前の変数で終了ステータスが得られます)。

+

たとえば、ファイルの中にrubyという文字列が含まれているかを調べるためにはgrepコマンドを使います。文字列が含まれている場合には終了ステータス0、含まれていない場合には、それ以外を返します。

+
+
% grep ruby file.txt
+% echo $?
+1    # 含まれていなかった場合
+
+
+
+

ゾンビ(zombie)

+
+

ゾンビっていうとアレですね、死人がうろうろと歩き回るっていう奴ですね。気持ち悪い。それがプロセスと何の関係があるかっていうと、あるんです。プロセスはちゃんと供養しないとゾンビになるんです。たとえば、

+
+
+
% ruby -e 'fork{};sleep'
+
+

こんなふうに起動するとRubyは子プロセスをフォークして、子プロセスは何もせずに終了します。親プロセスのほうは子プロセスを放置してそのままsleepします。

+

この状態でpsでプロセスの状態を見ると、

+
+
% ps a
+  PID TTY      STAT   TIME COMMAND
+ 2297 ttyp0    S      0:00 ruby -e fork{};sleep
+ 2298 ttyp0    Z      0:00 [ruby <defunct>]
+ 2303 ttyp0    R      0:00 ps a
+
+

というような出力が得られると思います。このZステータスを持つ、<defunct> と表示されるプロセスがゾンビです。ゾンビっていうのは要するに「終了はしたものの、親に終了ステータスを報告していないプロセス」です。

+

ゾンビを成仏させる方法は、以下のいずれかです。

+
    +
  • 親プロセスがwaitまたはwaitpidシステムコールで子プロセスの終了ステータスを得る

  • +
  • 親プロセスが先に死んでしまう

  • +
+

waitシステムコールは子プロセスの終了ステータスを取り出します。終了ステータスを報告した子プロセスはゾンビを卒業し、リソースを解放して消滅します。waitpidはプロセスIDを指定してwaitするものです。複数の子プロセスが存在するケースで有効です。

+

親プロセスが先に死ぬと、子プロセスはinitプロセスと呼ばれる「ご先祖プロセス」に養子縁組みされます。initはプロセスID1番を持つすべてのプロセスの親に当たるプロセスです。initは養子縁組みされた子プロセスに対してwaitシステムコールを呼び、そのプロセスに属するリソースを解放し、ゾンビを消滅させます。

+

子プロセスがいつ終了したかとか、その終了ステータスとかに関心がない場合には、この養子縁組みを利用して二重forkというテクニックを用いることができます。二重forkでは、まずforkによって子プロセスを作り、その子プロセスをさらにforkして実際の処理を行います。子プロセスは実際の処理を行う孫プロセスをforkした後、すぐに終了してしまいます。子プロセスの終了により、孫プロセスはinitに養子縁組みされていますから、孫プロセスが終了した時点でinitがただちにwaitを呼び、プロセスはゾンビになることなく、リソースの解放が行われます。

+
+
+

Processのメソッド

+
+

プロセスに対する操作はProcessモジュールが行います。Processはクラスでなくモジュールである点に注意してください。主な理由はUNIXのプロセス操作がプロセスIDという数値をベースに行われるからです。

+

Processのメソッドは基本的にはUNIXのプロセス関係システムコールに対応しています(表21.1)。各メソッドの動作はmanを見ることでだいたい知ることができます。たとえば、Cでの、

+
+
n = getpgid(pid, pgid);
+
+

という呼び出しは、

+
+
Process.getpgid(pid, pgid)
+
+

になります。ただし、「uid」「uid=」などはそれぞれgetpid, setpidに読み替えてください(egid/euid/gidも同様)。Processを明示的に指定するぶん長くなりますが、あるクラスでProcess操作を頻繁に行うならば、

+
+
include Process
+getpgid(pid, pgid)
+
+

のように記述することもできます。

+ +
+

表21.1●Processのメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
egid実効グループIDppid親プロセスID
egid=実効グループID設定setpgidプロセスグループの設定
euid実効ユーザーIDsetpgrpプロセスグループの設定
euid=実効ユーザーID設定setpriorityプライオリティの設定
exit!強制終了setsidセッション開始
forkforktimesプロセス時間取得
getpgidプロセスグループの取得uidユーザーID
getpgrpプロセスグループの取得uid=ユーザーID設定
getpriorityプライオリティの取得waitwait
gidグループIDwait2プロセスIDとステータスを得るwait
gid=グループID設定waitall全子プロセス対象のwait
killシグナルを送るwaitpidpidを指定したwait
pidカレントプロセスIDwaitpid2プロセスIDとステータスを得るwaitpid
+
+
+

フォークの実例

+
+

では、二重forkテクニックを含めて、forkの使い方を見てみましょう。リスト21.1forkを使ったソケットサーバーの例です。

+ +
+

リスト21.1●forkによるソケットサーバー

+
require "socket"
+
+gs = TCPserver.open(0)
+loop do
+  s = gs.accept
+  fork do
+    fork do     # zombie化を避ける二重fork
+      処理を行う
+      s.close
+    end
+  end
+  s.close       # 親では不要
+  Process.wait  # 直接の子を「供養」
+end
+
+
+

ま、短いプログラムですし、そんなに難しくないですよね。二重forkだけ少々不自然ですが、まあこんなもんでしょう。

+

もう1つ別の例を見てみましょう。RubyのsystemメソッドをProcessの機能を使って自力で定義した例をリスト21.2に示します。

+
+

リスト21.2●mysystem

+
def mysystem(cmd)
+  STDOUT.flush
+  STDERR.flush
+  pid = fork do
+    exec cmd
+  end
+  pid, status = Process.waitpid2(pid)
+  return if status == 0
+  return false
+end
+
+
+

forkして子プロセスを作った後、execメソッドを使って実行ファイルを置き換えています。プログラムの実効ステータスはpidを指定しないでwaitだけでも取得できますし、最後のコマンドの終了ステータスは変数 $? で取得できます。ですから、別の解はリスト21.3のようになります。

+ +
+

リスト21.3●mysystem

+
def mysystem(cmd)
+  STDOUT.flush
+  STDERR.flush
+  fork do
+    exec cmd
+  end
+  Process.wait
+  return if $? == 0
+  return false
+end
+
+
+

どちらが好みかというのは人によって違うと思います。他のスレッドが同時にmysystemを呼ぶことが(そして結果として、予想外のProcesswaitしてしまうことが)ありえるかによってpidを指定するかどうかが決まるでしょう。また、$? というPerl的変数が許容できるかどうかで $? を使うかwaitpid2を使うかが決まるでしょう。

+
+
+

プロセスの制約

+
+

このようにプロセスは処理を他のプログラムに任せたり、同時に複数の処理を待つことなく実行したりする場合に便利ですが、いくつかの制約があります。

+
    +
  • UNIX系OS以外ではうまく動かない

  • +
  • プロセス間通信が大変

  • +
+

Windows版Ruby(VC++版)ではforkが動きませんし、DOSでもダメです。また、プロセスは環境をコピーしてしまい、変更が親に反映されないのでプロセスの間で情報のやりとりをするのが大変です。情報をやりとりする場合には、

+
    +
  • 標準入出力で通信

  • +
  • ソケットで通信

  • +
  • シェアードメモリを使う

  • +
+

などの方法がありますが、どれもそれなりに面倒です。簡単に使えるのはやはりプロセス起動後には情報のやりとりがほとんどないケースでしょう。ただし、上記のいずれも少々面倒なだけで不可能でないことは申し添えておきます。

+
+
+

まとめ

+
+

今回、駆け足でプロセスについて解説しました。OSの重要な概念であるプロセスを少ないページ数で解説するのはちょっと無理がありますね。この説明でわからなかった人(多数いそうですが)は、ぜひ何かの教科書でプロセスについて調べてみてください。来月はプロセスとはまた違った並列実行へのアプローチ、スレッドについて学ぼうと思います。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-047.xhtml b/docs/vol1/xhtml/p-047.xhtml new file mode 100644 index 0000000..5a5b174 --- /dev/null +++ b/docs/vol1/xhtml/p-047.xhtml @@ -0,0 +1,40 @@ + + + + + +第21章 プロセスとフォーク + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ 知られざるRuby ◆ Rubyソースコード完全解説

+
+

この原稿を書いているちょうどそのとき、書籍小包が私の自宅に届けられました。それが青木峰郎著、まつもとゆきひろ監修の『Rubyソースコード完全解説 – Ruby Hacking Guide』(インプレス、ISBN4-8443-1721-0)です。私は監修者ですから、発売前に原稿に目を通していたのですが、やはり実際に書籍になったものを手にするときの気分は格別です。

+

ということで、かなり手前みそですが今回の「知られざるRuby」は、この『Rubyソースコード完全解説』を紹介することにしましょう。

+

この本はRubyのソースコードの解説書というよりもむしろRubyを題材にしたソースコードの読み解き方の解説書です。あまり知られていないかもしれませんが、ソースコードというのは人間が読んでもとても勉強になる読み物です。ソースコードを読むことで、作者の持つ知識・技術・思想・哲学・美学などを知ることができます。そうです。ソースコードはバグまでも完全に記述されている優れたドキュメントでもあるのです。

+

しかし、ソースコードを読むことは決して簡単な作業ではありません。もともとソースコードが人間向けの読み物として書かれていないこともありますが、なによりソースコードの読解には独特の技術が必要になるからです。本書では作者ではない人物が未知のソースコードを解読するありさまがリアルに表現されています。

+

私はRubyの作者ですからRubyのソースコードについて私以上に知っている人はいないはずですが、それでも学ぶことが数多くありました。自分の書いたつたない部分を解説されていたりするのを読むと、とても恥ずかしかったですが。

+

ただ、少々悲観的にとらえると本書は決して優しい本ではありません。いや、実用的なソフトウェアのソースコードはそもそも簡単なものではないので、この本が優しくないのはむしろ当然なのですが。本書の前書きにもこうあります。

+
+

正直に言って、この本は易しくはない。少なくとも、対象の持つ本質的な難しさ以上には易しくはなっていない。しかし、だからこそ本書は面白い(かもしれない)のだ。

+
+

この本は読者を選ぶかもしれません。しかし、優しいだけの軟弱な本(『できる〜』とか『わかる〜』とか)ばかりでなく、こんな硬派の本が出てきたことをうれしく思います。

+

まったく個人的な印象ですが、これほど読んでいてわくわくした本は久しぶりな気がします。いや、コンピュータ関係の本では初めてかもしれません。青木さんならではの率直な語り口にも好感が持てます。ぜひお勧めしたい一冊です。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-048.xhtml b/docs/vol1/xhtml/p-048.xhtml new file mode 100644 index 0000000..23b7535 --- /dev/null +++ b/docs/vol1/xhtml/p-048.xhtml @@ -0,0 +1,66 @@ + + + + + +第21章 プロセスとフォーク + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 大人になる、ということ

+
+

最近、Ruby界隈では「18歳」というのがキーワードのようです。自分が18歳だったときにはどんなだったとかいうようなことが話題になっています。それはともかく、18歳というと私の年齢のおおよそ半分であることに衝撃を受けたのでした。

+

しかし、今回話をするのは「リアル人生」ではなくて、ソフトウェアそれもフリーソフトウェアプロジェクトの一生について考えます。

+
+

フリーソフトウェアの一生

+

つい先日もこのコーナーで「言語の人生」について語ったような気がしますが、懲りずに似たような話を繰り返します。

+

ソフトウェアも人間と同じように、あるとき誕生し、そして次第に成長し、そしてだんだんと衰退していきます。生物と違ってソフトウェアには明確な死はありませんが、使われなくなり忘れ去られたソフトウェアは死んでいるのとあまり変わらないでしょう。それでは私が一番よく知っているフリーソフトウェアであるRubyを題材にフリーソフトウェアの一生を(というか、Rubyの場合はまだ半生ですが)見てみましょう。

+
+
+

ソフトウェアの誕生

+

いつをもってソフトウェアが誕生したとみなすかは人によって定義が違います。Rubyの場合、「名前が重要」というのが私のポリシーですから、プロジェクトの名前が決まった日である1993年2月24日を「Ruby誕生日」と宣言してます。もうすぐ10歳ですね。

+

開発者にとっては作り始めたときにはすでに「存在している」イメージなのですが、実際に使われるようになってこそ存在すると考える方もいらっしゃいます。そのような方は最初のリリース日が誕生日だと考えるようです。その定義では最初のアルファリリースを行った1994年12月に生まれたことになるのかもしれません。

+

ヨタ話はともかく、フリーソフトウェアの初期において最も重要な点は「どの段階でリリースするか」ということです。フリーソフトウェアプロジェクトが成功するかどうかの最初の難関がここにあります。

+

リリース時期は微妙な要素ですが、私の考えは、「まがりなりにも動いたら、できるだけ早い時期にリリースすべき」です。

+

ここで最も重要なことは「動く」ことです。コンセプトだけで動かないソフトウェアは、よっぽど運がよくないと成功しません。動くからこそ誰かの関心を呼ぶわけですし、動くからこそ次の段階である成長を実現できるわけですから。

+
+
+ +

ソフトウェアの成長

+

そして、最初のリリースという難関を突破したプロジェクトは次の段階に進むわけです。sourceforge.netsourceforge.jpに登録されている多くのプロジェクトはここの段階にあると思います。この段階で重要な点は「どのようにコミュニティを構築するか」ということです。

+

コミュニティは、テストやデバッグに協力してくれたり、自分では考えもつかなかった新しいアイデアを提案してくれたりと、フリーソフトウェアプロジェクトの原動力と言ってもよいと思います。コミュニティの形成がうまくいかなかったプロジェクトは衰退します。

+

コミュニティの形成については、そのソフトウェアが本当によいものであれば、メーリングリストとWebページがあれば、使って面白いと思った人たちが集まってくれると、私は信じています。実際にRubyもそうでした。ただ、数年前と違ってフリーソフトウェアもずいぶん数が多くなっているので、現代のフリーソフトウェアプロジェクトが生き残るためには何らかの方法で「目立つこと」が要求されるかも知れません。

+

ああ、重要な点を忘れていました。一番に大切にしなければならないコミュニティは開発コミュニティであってユーザーコミュニティではない、ということです。少々暴言ですが。フリーソフトウェアを開発する動機で最も大きいものは「ソフトウェア開発したいから、楽しいから」というものではないかと思いますが、単なるソフトウェアユーザーはなかなかそれを理解してくれません。フリーソフトウェアの場合、どれだけユーザーがいても「もうけ」があるわけではありませんから、より楽しい開発に集中するのはむしろ当然だと思います。優れたソフトウェアのユーザーコミュニティは、開発コミュニティの周辺に自然発生すると思います。

+

開発コミュニティのサイズですが、Rubyの場合を見てみると、興味深いことに開発コミュニティが100人を超えたあたりで安定したコミュニティが形成され、それは人数が増えても、提案やレポートの数はさほど変化しないようです。コミュニティの数を追求する必要はないということですね。

+
+
+

ソフトウェアの安定

+

コミュニティも形成でき、開発が進めば、フリーソフトウェアプロジェクトは安定し、いわば壮年期に入ります。

+

しかし、ここに重大な落とし穴があります。1つは「モチベーション」です。同じソフトウェアを3年も4年も開発すると飽きてくるので、安定的に開発することが難しくなることがあります。

+

もう1つは「生活の安定」です。フリーソフトウェアはそれ自身がお金を生みませんから、生活を続けることが困難になる場合があります。中心開発者の生活が維持できなければ、プロジェクトは終焉しゅうえんを迎えるでしょう。

+

モチベーションに関しては、管理者の世代交代という手が使えるかもしれません。実際、私が以前に開発していた(今でも使っている)cmailというメールリーダーは開発者が交代し、集団管理体制になっています。

+

生活の安定に関しては、私自身は運よくなんとかなりましたが、一般的な解答は見つかっていません。フリーソフトウェアから恩恵を受けている各社がフリーソフトウェア開発者をもっと雇用してくれるとよいのですが。

+
+
+ +

ソフトウェアの衰退

+

ソフトウェアは死にません。ただ消え行くだけです。しかし、いくつかの点に注意してうまくやることでフリーソフトウェアの衰退を回避できるのではないかと思うのです。あなたのフリーソフトウェア、衰退を回避できますか?

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-049.xhtml b/docs/vol1/xhtml/p-049.xhtml new file mode 100644 index 0000000..39139b7 --- /dev/null +++ b/docs/vol1/xhtml/p-049.xhtml @@ -0,0 +1,397 @@ + + + + + +第22章 スレッド(その1) + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay22 +
+

+初等Ruby講座
+スレッド(その1) +

+
+

[Linux magazine, 2003年3月号]

+
+

コンカレントプログラミングのもう1つの手段、スレッドについて解説しています。コンカレント性についての要求は多種多様で、いろいろな状況に対応するために、この後、FiberやRactorも増えることになるのですが、ここではそれは置いておきましょう。

+

今回はスレッドにまつわるいろいろな問題(デッドロックやレースコンディションなど)についても解説しています。記事中、「スレッドとセキュリティ」についても解説していますが、この機能は最新のRubyでは(セキュリティ上の信頼性が期待したより低かったので)削除されています。

+

「Ruby開発日記」は、パフォーマンス改善の原則についてです。正直、このような原則的なところは時代で変化することはなく、正直、今読んでも「いいこと言ってるな」と感じます。

+
+
+

プロセスについて学んだ先月に引き続いて、今月はもう1つの並列処理手段であるスレッドについて解説します。

+
+
+

スレッド

+
+

複数の仕事を同時に実行したい場合、OSはプロセスという単位を使って並列実行する、と先月学びました。しかし、プロセスによる並列実行には面倒な点がいくつかありました。それは、

+
    +
  • プロセスの操作が直接的でない

  • +
  • プロセス間通信が面倒

  • +
+

の2点です。新しいプロセスを作るにはforkというシステムコールを使いますが、作られたプロセスは実行中のプロセスの「子供」として登録されますが、子供とはいえ独立した存在なので、できるのは終了ステータスの取り出しなど限られた情報のやりとりだけです。

+
+

プロセス同士は独立した空間を持っていますから、子プロセスで変数の値を書き換えても親には影響を与えません。プロセス間で通信するには、パイプやソケットなどを使ってバイトストリームで行うしかありません。UNIXにはいちおう「共有メモリ」なんてものもあるんですが、そんなに使いやすくもありません。共有メモリについては今後機会があれば説明しようと思います。

+

独立した空間はお互いに邪魔をしないように保護するという目的があるので悪いことばかりではないのですが、緊密なやりとりを行いながら並列実行したいというニーズにはあまり向きません。そのような場合に使われるのが「スレッド」です。スレッドは1つのプロセスの中で複数の処理を並列に実行するものです。スレッド(thread)とは「縫い糸」のことです。実行の流れが縫い糸のようにちくちくと現れたり消えたり(実行されたり止まったり)することから連想されたのでしょう。

+

プロセスと違って、スレッドは空間を共有します。ですから、たとえば別々のスレッドから1つのオブジェクトを参照するなんてこともできます。バイトストリームに変換してから通信するなどの面倒なことを行わなくても情報のやりとりを行うことができます。

+

Rubyのスレッドは自前で用意している「ユーザーレベルスレッド」です。これはOSが提供する「カーネルレベルスレッド」と違ってマルチCPUを活用することもできませんし、スレッド切り替えのコストも高いので性能的には不利です。しかし、OSがスレッド機能を提供しているかどうかにかかわらず、どのOS(たとえMS-DOSでも!)でも同じように動くので、気軽にスレッドを体験することができます。

+
+
+

スレッド生成

+
+

Rubyではスレッドは普通のオブジェクトですから、newを使って生成します。

+
+
th = Thread.new{p 42}
+
+

これで新しいスレッドを生成し、そのうえでブロックを実行します。ですから、ブロックの中の「p 42」という処理の部分はスレッド生成に続く部分と並列に実行に実行されます。「並列に」と言っても本当に同時に動くわけではなくて、実際には短い時間で仕事を切り替えつつ交代に細切れに実行しています。厳密にはこのような「擬似並列」のことを「コンカレント」、複数のCPUを使って本当に同時に実行することを「パラレル」と呼びます。

+

スレッドはブロック内の処理が終わると終了します。newには他にforkとかstartとかいう別名もあり、こちらのほうがよく使われるかもしれません。

+
+
+

Threadのメソッド

+
+

Threadクラスには表22.1に示すクラスメソッドと表22.2に示すインスタンスメソッドがあります。

+ +
+

表22.1●Threadクラスメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
Thread.
abort_on_exception
例外でプロセスを中断Thread.killカレントスレッド終了
Thread.
abort_on_exception
=val
中断状態の設定Thread.listスレッド一覧
Thread.critical割り込み禁止状態Thread.mainmainスレッド
Thread.critical
=val
割り込み禁止の設定Thread.newスレッドの生成
Thread.currentカレントスレッドThread.pass実行権の委譲
Thread.exitカレントスレッド終了Thread.startnewの別名
Thread.forknewの別名Thread.stop一時停止
+
+
+

表22.2●Threadインスタンスメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明メソッド説明
th[key]スレッド固有データth.
priority
優先度
th[key]
=val
固有データ設定th.
priority
=val
優先度の設定
th.
abort_on_exception
例外でプロセス中断th.raise(
exception)
例外の発生
th.
abort_on_exception
=val
中断状態の設定th.runスレッドを実行させる
th.alive?生きているかth.
safe_level
安全レベル
th.exitスレッドの終了th.statusスレッドの状態
th.joinスレッド終了を待つth.stop?停止しているか
th.key?(key)keyの対応データがあるかth.valueスレッドの戻り値
th.keyskeyの一覧th.wakeupスレッドを起こす
th.killスレッドの終了
+
+

Rubyのスレッドに特有の注意すべき点がいくつかあります。

+

第一はmainスレッドが終了すると他のスレッドは全部終了することです。mainスレッドとはプログラムが始まった時点で最初に動作しているスレッドです。プロセスと違ってRubyのスレッドに親子関係はありませんが、mainスレッドだけは特別扱いされます。mainスレッドが終了すると他のスレッドは処理中だろうが問答無用で強制終了されます。

+

第二の注意点は、実行中に例外が発生したスレッドは(デフォルトでは)黙って終了することです。プログラム開発中に予想外の例外が原因で、いつの間にかスレッドがいなくなってびっくりすることがときどきあります。これに対応する方法はいくつかあって、一番簡単なものはデバッグ中はインタプリタに -dオプションを渡すことです。-dオプションが与えられるとインタプリタは例外が発生すると、たとえその例外が捕捉されても例外名と発生したプログラム中の場所を標準エラー出力に表示してくれます。

+

もう1つの方法はabort_on_exceptionを指定することです。abort_on_exceptionを指定したスレッドが例外で中断されるとインタプリタ全体が強制終了します。Threadのクラスメソッドで指定するとすべてのスレッドに対して有効になります。

+
+
t = Thread.new{...}
+t.abort_on_exception=true       # tでの例外で終了
+
+Thread.abort_on_exception=true  # すべての例外で終了
+
+

上記の -dオプションもabort_on_exceptionもどちらかというとデバッグ用の対応ですが、実際の運用時向けのチェック手段もあります。例外で終了したスレッドに対してjoinメソッドやvalueメソッドを呼ぶと、それらのメソッドがスレッドを終了させた例外を再発生させます。スレッド中で例外が発生したかどうかチェックしたり、例外に対応させたりする場合に有効です。

+
+
+
t = Thread.new{...}
+t.join      # tの終了を待つ
+            # 例外があれば再発生
+
+

joinメソッドはスレッドの終了の待ち合わせ、valueメソッドはスレッドの終了を待ったうえで、スレッドに与えたブロックが最後に評価した値を返します。

+
+
+

スレッドの実行状態

+
+

スレッドには以下の4つの状態があります。

+
+

run

+

実行中。厳密にいえばRubyのスレッドは処理を少しずつ細切れに切り替えながら行うので、実行中というよりは「実行可能」という感じでしょうか。

+

stop

+

停止中。停止の理由は「IO待ち」「select(2)待ち」「時間待ち」「join待ち」があります。「時間待ち」とは指定した時間まで停止している状態(sleepなど)。「join待ち」とは他のスレッドの終了をjoinメソッドで待っている状態のことです。

+

to_kill

+

終了処理中。スレッドが強制終了されて、完全に終了する前にensureなどの処理を行う状態。

+

killed

+

終了。終了処理が完全に終わってしまった状態。一度終了したスレッドは復活することはありません。Thread.listでも終了してしまったスレッドは一覧に含まれません。

+
+

これらの状態は図22.1のように状態遷移します。

+
+ +
+ fig2201 +
+

図22.1●スレッドの状態遷移

+
+

スレッドの現在の状態を知るメソッドはstatus, alive?, stop? です。「生きている」場合にはstatusはスレッドの現在の状態を文字列で返します(killed状態についてはnilを返します)。alive? はスレッドが「生きている」かどうかを返します。stop? はスレッドが停止しているときに真を返します。「停止している」にはkilled状態も含まれます。

+

あと、状態とは直接は関係ないのですが、Thread.passを実行すると現在のスレッドの状態はrunのまま、他のrun状態のスレッドに実行権を譲ります。Rubyのスレッドは時間が経つと勝手に実行権を取り上げるようになっているので、明示的にこれを指定する必要があるケースは少ないですけど。

+
+
+ +

スレッドとセキュリティ

+
+

スレッドはただ処理を(擬似)並列に実行するための仕掛けですから、「スレッドとセキュリティに何の関係があるの」という疑問はもっともです。しかし、Rubyのセキュリティモデルはスレッドを利用しているのです。昨年の8月号の本連載『CGI』でも解説したようにRubyでは変数 $SAFEの値を操作することで、セキュリティレベルを設定できます。$SAFEに設定する値とその意味を表22.3に示します。

+
+

表22.3●セキュリティレベルとその意味

+ + + + + + + + + + + + + + + + + + + + + + + + + +
セキュリティレベル説明
0外部から入力された値が汚染される(デフォルト)
1汚染された値による危険な操作が禁止される
2プロセスやファイルに対する危険な操作が禁止される
3生成されるすべてのオブジェクトが汚染される
4グローバル情報の変更が禁止される
+
+

このセキュリティレベルはスレッド独立の値です。ということは、あるスレッドで $SAFEを高く設定しても他のスレッドには影響を与えないということです。これを利用して信頼できないプログラムをスレッドに隔離して実行することができます。

+
+
def safe_eval(str)
+  Thread.new{
+    $SAFE = 4           # ここだけレベル4に
+    eval(str)           # 文字列の評価・実行
+  }.value               # 結果を受け取る
+end
+
+safe_eval("1+1")        # => 2 (安全だから)
+safe_eval("`rm -r /`")  # 例外「Insecure operation」
+
+
+
+

スレッドの使用例

+
+

それではスレッドを使ったプログラムの使用例を見てみましょう(リスト22.1)。

+
+

リスト22.1●スレッドによるソケットサーバー

+
require "socket"
+
+gs = TCPserver.open(0)
+loop do
+  # スレッドの起動
+  # startの引数はブロックパラメータに渡る
+  Thread.start(gs.accept) do |s|
+    処理を行う
+    s.close
+  end
+end
+
+
+ +

簡単ですね。先月解説したプロセスを使ったソケットサーバー(リスト22.2)と比較するとより直接的であることがわかると思います。

+
+

リスト22.2●forkによるソケットサーバー

+
require "socket"
+
+gs = TCPserver.open(0)
+loop do
+  s = gs.accept
+  fork do
+    fork do     # zombie化を避ける二重fork
+      処理を行う
+      s.close
+    end
+  end
+  s.close       # 親では不要
+  Process.wait  # 直接の子を「供養」
+end
+
+
+

まだ、Thread.startの引数について説明していませんでしたね。Thread.startに引数を渡すとその引数がブロックパラメータに代入されます。スレッドに対して値を渡す1つの方法です。もちろん、ブロックからは外側の変数が見えるので、変数によって渡せばよいと思うのは自然なことですが、このプログラムのループ部分を、

+
+
s = gs.accept
+Thread.start() do
+  処理を行う
+  s.close
+end
+
+

と書き換えても一応動作しますが、実はタイミングによって誤動作します。つまり、スレッドの処理が終わる前に次のacceptが実行されると変数sの値が書き換わってしまうからです。

+

スレッドプログラミングではそれぞれのスレッドが同時に動くため、通常以上にプログラムの挙動の予想が困難です。より想像力が必要だともいえるでしょう。

+
+
+ +

共有の苦痛

+
+

スレッドを使えば情報のやりとりが簡単というのはうれしいことばかりではありません。実社会でもそうですが、共同生活でお互いが勝手なことをしていては遅かれ早かれ破綻します。スレッド処理においては、以下のような問題が発生する可能性があります。

+
    +
  • データ整合性の喪失

  • +
  • デッドロック

  • +
+

これらはスレッドによる問題というよりは並列処理全般で発生する問題ですが、スレッドでは空間を共有するためより起こりやすいということです。

+

これらの問題を個別に見てみましょう。

+
+

データ整合性の喪失

+

先ほどのソケットサーバーの例でもありましたが、共有しているデータを書き換えると思わぬ悪影響が発生します。スレッド同士は同じ空間を共有しているので、意図せずに同じ変数やオブジェクトを同時にアクセスしている可能性があります。「データ整合性の喪失」の例として最もよく使われるのが銀行口座の例です(図22.2)。

+
+ +
+ fig2202 +
+

図22.2●銀行口座の整合性喪失

+
+

簡単に流れを説明すると、ユーザーAは口座の残高を取得し、引き出したぶんの2千円を引いた額を新しい残高として設定します。一方、ユーザーBも同様に、口座の残高を取得し、引き出したぶんの4千円を引いた新しい残高を設定します。最初は1万円しかなかったのに、最終的には合計が1万2千円になっています。こんな銀行はまずいでしょう。

+

この手順がまずいのは複数の並列手続き(スレッド)から口座を共有していることに無頓着だったせいです。残高を取得してから新しい残高を設定するまでの処理は、途中で割り込まれてはいけません。このような分割してはいけない処理のことを「アトミックな処理」と呼びます。アトミックな処理の間、他のスレッドがこの口座を操作しないように保護してやる必要があります。

+
+
+

デッドロック

+

デッドロックは複数のスレッドが資源を奪いあって身動きが取れなくなる状態です。銀行口座に続きプログラミングでない例で恐縮ですが、古典的な例として「哲学者の晩餐ばんさん」を紹介しようと思います。哲学者の晩餐とは以下のような話です。

+ +
+

5人の哲学者が丸いテーブルに座っています。哲学者の前にはスパゲティの皿が置いてあります。また、哲学者の両側には1本ずつ箸が置いてあります(全部で5本)。哲学者は一日中思索しますが、ときどきお腹が空いたら両側の箸を取り、スパゲティを食べます。

+

さて、ある瞬間、偶然に哲学者全員がスパゲティを食べようとします。同時に全員が食べるだけの箸はありませんので、哲学者はそれぞれ箸を取りますが、箸が2本手に入らないので食べることができず、全員が飢えてしまいます。あるいは全員でなくても隣り合った哲学者が同時に箸を取りあうと面倒なことが発生します。

+
+

「スパゲティを箸で食うのか」とか「手で食べたらいけないのか」とか「スパゲティがダメならケーキを食べたらいいじゃないの」とかツッコミどころ満載の話ですが、まあ古典ですから。ともかく、このように資源(この場合は箸)が足りない場合、上手に考えないとデッドロックになります。プログラムは普通哲学者以上に融通が効かないので、餓死するまで停止することになるでしょう。

+

Rubyのサンプルプログラムにphilos.rbというものがあります。これを実行すると図22.3のような出力を延々と続けます。

+
+
+
-o-o-o|*|o-o-o-o-o
+-o|*|o|*|o-o-o-o-o
+-o|*|o|*|o|*|o-o-o
+-o|*|o-o-o|*|o-o-o
+|o|*|o-o-o|*|o-o|*
+|o-o-o-o-o|*|o-o|*
+|o-o|*|o-o|*|o-o|*
+|o-o|*|o-o-o-o-o|*
+|o-o|*|o-o-o|*|o|*
+...
+
+

図22.3●philos.rb の出力

+
+

これは実はこのphilos.rbは「哲学者の晩餐」シミュレータなのです。各行は丸いテーブルを直線に引き伸ばしたものだと考えてください。行の内容は単位時間ごとの哲学者とテーブルの状態を表しています。「o」は思索している哲学者、「*」は食事している哲学者です。また、「-」は置かれている箸、「|」は使用中の箸です。

+

ただ、philos.rbはデッドロックを避けるようにプログラムされています。具体的には、空腹になった哲学者はそれぞれまず右手側の箸を取り(空いていなければ待つ)、それから左手側の箸を取ります。左の箸が空いていなければ、右手の箸も一度返してしまい、空腹を我慢しつつ思索に戻ります。このようにすればむやみに箸を占有しないのでデッドロックは発生しません。このような「ルール」を用意することで、哲学者たちは飢えてしまうことはありません、空腹を少々我慢することはあっても。

+
+
+
+

まとめ

+
+

今月はスレッドによる並列処理のさわりについて学びました。また、スレッドによって発生しやすいトラブルについても学びました。このトラブルはプロセスでも発生します。

+

並列処理のトラブルはタイミングによって起きたり起きなかったりするのでつらいです。トラブルが起きないようにするためには、そもそもトラブルが起きない構造にする必要があります。それには……あ、今月は誌面が尽きてしまいました。トラブルが起きないスレッドプログラミングについては来月、ということで。ではまた。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-050.xhtml b/docs/vol1/xhtml/p-050.xhtml new file mode 100644 index 0000000..fd664b1 --- /dev/null +++ b/docs/vol1/xhtml/p-050.xhtml @@ -0,0 +1,50 @@ + + + + + +第22章 スレッド(その1) + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ スピード狂

+
+

私が住んでいる田舎では、歩いていける範囲内では買い物も満足にできないし、公共交通機関も発達していないので、結果として自動車は必需品です。自動車は地球環境の観点からはあまり望ましくない乗り物なのですが、実に便利な道具です。自動車のハンドルを握るとついついスピードを出してしまう人がいます。私は無茶な運転はしないように心がけているつもりですが、常に法定速度以内で運転するのはなかなか難しいものです。

+

自動車のスピードの出しすぎは命に関わる場合があるので止めたほうがよいのですが、コンピュータ業界は全体として「スピードは善である」というポリシーが徹底しているように思います。

+

実際にコンピュータのハードウェアはどんどん進化しています。インテルの創立者ゴードン・ムーアの提唱したムーアの法則によればLSIの集積度は18カ月で2倍になるのだそうです。集積度が上がるにつれて性能も飛躍的に向上しています。

+

今から60年近く前、世界最初の汎用デジタルコンピュータENIACが登場したとき、「これが3台あれば世界中の計算がまかなえる」といわれたものでした。調べてみるとENIACは1秒間に5000回の加算が可能であったのだそうです。

+

アーキテクチャがまったく違うため現代のCPUと比較することは難しいですが、単純に加算に必要な時間を(クロック周波数×パイプラインのステージ数)で計算するとなると1GHzのPentium 3(ステージは10段)ではCPUならば同じ時間に200万倍以上の計算ができることになります。世界に3台どころじゃありませんね。今や机の上にENIACの200万倍の計算パワーが乗っているわけです。恐るべし。

+

ハードウエアと比較すると、ソフトウェアのほうはそう簡単には進歩しません。アルゴリズムの教科書などを見てみても主要なアルゴリズムは30年も40年も前に発見されたものばかりで、最近画期的なアルゴリズムが見つかったなんて話はとんと聞きません。昔はハードウェアはなかなか変更できなくて、ソフトウェアは変更しやすいから「ハード」と「ソフト」と呼んだと聞くのですが、3年前に話題になった2000年問題などを思い起こすと今やソフトウェアのほうがよっぽど硬いという気がしてきます。ハードの方はどんどん進歩するので、それに甘えているということもあるかもしれません。なにしろ何もしなくても新しいハードを導入すれば同じソフトウェアが高速に動作するんですから。

+

しかし、いくらハードの進化が速くても私の目の前のコンピュータが自動的に高速になるわけではないので、ソフトウェアのほうでも高速化のための地道な努力が必要です。悲しいことにソフトウェアはハードウェアのように簡単に何倍も高速になったりはなかなかしないので。

+

しかも、ハードウェアの進歩以上に処理速度が要求される分野はいつの時代にも存在するので、ソフトウェア技術者の中にも処理速度向上のためなら手段を選ばないスピード狂はかなりいます。高速化が難しいぶん、あるいはハードウェア技術者より多いかもしれません。

+
+ +

ソフトウェアの高速化

+

ソフトウェアの高速化はむやみに行っても効果が薄いことが多々あります。効率のよい高速化のためには従わなければならない鉄則がいくつかあります。

+

最初の鉄則は「正しく動いてから高速化」です。正しく動かないソフトをいくら高速化しても意味がありません。また、高速化の過程ではバグが混入しますが、もとからちゃんと動いていないプログラムでは、高速化のせいだかなんだか判断できません。いくら高速化マニアでもプログラムが一応の完成を見るまではじっと我慢です。

+

2番目の鉄則は「正しく計測する」です。プログラムが速くなったかどうかは時間でわかりますが、処理時間は動作パターンによって大きく変化します。実際には使わないような人工的なパターンで計測したために、実際の処理はちっとも速くなってないというのもありがちなケースです。また、外部からの影響を受けて計測結果が変動することもたびたびあります。外部からの影響を避けるため、何度も繰り返して計測し、最も速いもの(平均ではない)を選ぶなどの工夫が必要です。あるいは起動してから終了するまでの時間ではなく、消費したCPU時間を計測するのもよい方法です。CPU時間の計測にはtimeコマンドを使います。

+

3番目の鉄則は「改善の対象を正しく選ぶ」です。世の中のほとんどの現象には「80:20則」とか「90:10則」が当てはまります。つまり、「80%の時間が20%のコードで消費される」とか「90%のコストが10%の部分に費やされる」とかいう状態です。ですから、効率の悪い部分の改善してその部分の実行速度を10倍にしたとしても、全体のうちその部分が占めていた割合が1%しかなかったら、全体としては99.1%しか高速化しません。まず時間を最も消費しているボトルネック部分から高速化するべきです。

+

4番目の鉄則は「正しいアルゴリズムを選ぶ」です。高速化の手法は大きく分けると2種類あって、1つはアルゴリズムを変更することで、もう1つはいわゆる「小手先の変更」です。小手先の変更とは、たとえばコードの無駄を省いたり、一度計算した結果を保存しておいて再利用するなどの比較的小規模な変更です。小手先の変更のほうが、簡単ですぐに思い付くのでそちらに走りやすいのですが、まず「この処理に使っているアルゴリズムは最も高速なものか」ということを検討する必要があります。小手先の変更ではかなり運がよくても実行速度は数割しか変化しません。ほとんどの場合は数%程度でしょう。しかし、アルゴリズムの変更の場合にはもっと劇的な変化が期待できます。場合によっては100倍や1000倍の変化も夢ではありません。適切なアルゴリズムを選んだ後、初めて小手先の変更を行うようにしましょう。

+

このような鉄則に従うことによって、ソフトウェアの無駄が取り除かれ、効率よくソフトウェアの高速化を行うことができます。

+

私を含めて多くのソフトウェア開発者にとってソフトウェアのチューニングは楽しい側面も持っています。自分の作業の成果が目に見える数字(実行時間)として現れるため、達成感が大きいためです。あそこで1秒、ここで2秒と実行時間を削減していくうちに寝食を忘れてしまうことも珍しくありません。

+

特に言語処理系のようなどういうふうに使われるかは前もって予想もできないようなプログラムでは、ありとあらゆる部分がボトルネックになりえます。というわけで、先ほどの鉄則も忘れてむやみやたらといじりまわるわけです。

+

確かに楽しいですけど、なんか本来の目的を逸脱しているような……。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-051.xhtml b/docs/vol1/xhtml/p-051.xhtml new file mode 100644 index 0000000..9c22022 --- /dev/null +++ b/docs/vol1/xhtml/p-051.xhtml @@ -0,0 +1,320 @@ + + + + + +第23章 スレッド(その2) + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay23 +
+

+初等Ruby講座
+スレッド(その2) +

+
+

[Linux magazine, 2003年4月号]

+
+

スレッドについての解説の続きです。今回はスレッドでの問題を避けるための仕組みであるロックとキューと条件変数について解説しています。当時はマルチコアコンピュータが一般的でなかったせいもあって、スレッドについてはさらっと解説していますね。記事執筆時からしばらく経つと、パフォーマンス改善のために複数コアを活用することが一般的になり、そのためのスレッドの重要性が増すことになるのですが。

+

が、コンカレントプログラミングの原則は同じです。ここに書いていない大原則として、「フレームワークやライブラリに任せて、一般ユーザーはそもそのコンカレントプログラミングするべきでない」というものがありますが。

+

「Ruby開発日記」は、「プログラマーの幸せ」というテーマでプログラマーという「人種」の気質について解説しています。私自身は、プログラマーが特殊であるとはあまり考えたくないのですが、自分と周囲のズレを考えると否定しきれないものがあります。

+
+
+

先月に引き続いてスレッドについて、特に複数のスレッド間で発生する問題の避け方について学びます。

+
+
+

先月の復習

+
+

まずは先月学んだことを復習してみましょう。

+

Rubyでは1つのプロセスの中で複数の処理を同時に行うことができ、その処理の流れ1つ1つをスレッドと呼びます。Rubyではスレッドもオブジェクトです。スレッドの生成は以下のように行います。

+
+
th = Thread.start{...}
+
+
+

スレッドはブロックの中の処理を開始します。処理はstartに続く処理と並列に行われます。これをコンカレントと呼ぶのでしたね。

+

スレッドの処理が終わったかどうかを知るためにはthに対してalive? メソッドを呼びます。スレッドの処理が終了するまで待つためにはjoinメソッドを呼びます。

+

こうやって生成された各スレッドは空間を共有します。つまり、同じプロセスの中なので同じオブジェクトを参照することが(更新することも)できるのです。これは空間が独立しているために情報共有が難しいプロセスとは異なるところです。

+

しかし、同じオブジェクトに同時にアクセスできるために発生する問題もあります。今月はこの問題を回避する方法を学びます。

+
+
+

リソース問題

+
+

スレッドを使ったプログラムで問題が発生するのは基本的に「同時にアクセスしてはいけないものにアクセスする」ことが原因です。この同時にアクセスしてはいけないものをリソースと呼ぶことがあります。リソースは別に特別なものではなくて、Rubyの場合には基本的にオブジェクトになります。複数のスレッドが利用を求める存在という意味でリソース(資源)と呼ぶわけです。

+

リソースの競合による問題は、大きく分けると、

+
    +
  • 整合性の破綻(先月の銀行口座の例)

  • +
  • デッドロック(先月の哲学者の例)

  • +
+

があります。最も簡単にこの問題を避けるためには、自分が使っている間はリソースを独占してしまえばよいのです。そのためにリソースのロックという手段が提供されています。

+

しかし、何でも独占してしまえばよいというのでは子供と一緒です。すぐに独り占めしたがる子っていましたよね。独占以外にも協調する方法があるので、その手段も紹介しましょう。

+
+
+

ロックによるリソースの独占

+
+

要するに1つしかないものを同時に使おうとするのが間違いの元だ、ということで、誰かが使っている間は他の人は使わないように取り決めれば問題は解決するというものです。現実社会で一番よく目にするのはトイレの個室でしょう。トイレは一度には一人しか使えません。複数の人が入っているとかなり無気味です。そこで、誰かが入っている間は鍵をかけ、外からは赤い印が見えるようにしてあります。

+

スレッド処理の場合も同様に、1つしかないリソースを使う場合にはそれをロックして独占中という印を付けてしまえばよいのです。そのような目的に使われるクラスにMutexがあります。Mutexは相互排他ロック(Mutual Exclusive Lock)の略です。Mutexを使うためにはthreadライブラリをrequireする必要があります。

+
+
require 'thread'
+
+m = Mutex.new
+
+....
+m.synchronize {
+  ...           # リソースを使った処理
+}
+
+
+

synchronizeメソッドを呼び出すと、そのブロック処理を行っている間、Mutexはロックされます。他のスレッドが同じMutexに対してsynchronizeを行おうとすると、現在実行中のsynchronizeが終了してロックが解除されるまで待たされます。このsynchronizeで囲まれたブロックを、他のスレッドが入り込まない領域という意味で「クリティカルセクション」と呼ぶことがあります。ちょうど一度に一人しか入れないトイレと同じですね。

+

synchronizeの代わりにlockメソッドでロックしてunlockメソッドでロックの解除を行うこともできますが、たとえばロック中に例外が発生することなども考えると以下のようにするべきです。

+
+
m.lock
+begin
+  ...     # ロック中の処理
+ensure
+  m.unlock
+end
+
+

ensurebeginの実行を抜けるときに必ず実行されるので、間違いなくunlockされることが保証されます。実はこれはまさにsynchronizeメソッドの定義そのものなので、lockunlockを個別に使うよりはsynchronizeメソッドを使うことをお勧めしておきます。

+

ただ、忘れてはいけないことは、Mutexも、これから説明する他のロックもあくまでも紳士協定でロックのチェックを行わずにリソースを無理やり操作することは禁止されないということです。ロックでリソースを保護する場合には、すべてのアクセスでロックのチェックを行うことを忘れないでください。Ruby的にスマートな方法は、リソースのアクセスをすべてオブジェクト経由にして、そのオブジェクトのメソッドの内部でロックのチェックを行うことです。

+
+
class Resource
+  def initialize
+    @lock = Mutex.new
+  end
+  def use
+    @lock.synchronize {
+       ...
+    }
+  end
+end
+
+r = Resource.new
+r.use
+
+
+

Javaだとメソッド定義にsynchronizeと宣言すれば、メソッド呼び出しによって自動的にロックを行ってくれるのですが、Rubyではそこまでは面倒を見てくれません。

+
+
+

2レベル排他

+
+

しかし、排他制御は単純なMutexでカバーできるほど単純なケースばかりではありません。たとえばデータベースなどは、以下のような条件の制御が必要になります。

+
    +
  • データの参照は同時に行ってもよい

  • +
  • データの更新は同時に行ってはいけない

  • +
  • データの更新中は参照してはいけない

  • +
  • データの参照中は更新してはいけない

  • +
+

このような参照と更新の2レベルがある排他制御は、他にもファイルの読み出しなどしばしば発生します。現実世界ではたとえばテレビを見ること(参照)とチャンネル変更(更新)などがこれに相当するでしょう。誰かがテレビを見ている間、他の人が同じチャンネルを見ることができないというのは行きすぎた独占ですが、だからといって排他制御なしに見ている最中にチャンネルを変えられるのはイヤでしょう。

+

このようなケースのためのロックはsync.rbで定義されているSyncクラスを使います。SyncクラスはMutexと同じように使いますが、synchronizeメソッドに排他モードを指定することができます。排他モードは、更新のように同時に1つしか実行できないEXモードと、EXモードとは同時に実行できないが、その他のモードとは排他しないSHモードがあり、それぞれシンボル「:EX」と「:SH」で指定します。

+

では、Syncクラスの使用例をテレビの例で見てみましょう(リスト23.1)。プログラミングとしてはやや不自然な例ですが我慢してください。Mutexで示したようにリソース(この場合はテレビ)のオブジェクトのメソッドに排他制御を埋め込んでおきましょう。そのほうがスマートですから。

+
+

リスト23.1●Syncクラスの使用例

+
require 'sync'
+
+class TV
+  def initialize
+    @ch = 1
+    @sync = Sync.new
+  end
+  def watch
+    @sync.synchronize(:SH) {
+       ....     # TVを見る
+    }
+  end
+  def set_ch(ch)
+    @sync.synchronize(:EX) {
+      @ch = ch  # チャンネルを変える
+    }
+  end
+end
+
+
+ +

このようにしておけば、誰かがテレビを独り占めしたり、誰かがテレビを見ている最中に勝手にチャンネルを変えたりして、けんかになる事態を避けることができます。家庭に平和が戻ってきますね。

+

さて、syncライブラリにはクラスそのものにSync機能を追加するMix-inも用意されています。これを使って先ほどのテレビの例を修正するとリスト23.2のようになります。

+
+

リスト23.2●Mix-inを使ってリスト23.1を書き換えた場合

+
require 'sync'
+
+class TV
+  include Sync_m # Mix-in
+  def initialize
+    super        # Sync_mの初期化
+    @ch = 1
+  end
+  def watch
+    synchronize(:SH) {
+       ....      # TVを見る
+    }
+  end
+  def set_ch(ch)
+    synchronize(:EX) {
+      @ch = ch   # チャンネルを変える
+    }
+  end
+end
+
+
+

このようにSync_mを使うとわざわざSyncオブジェクトを作らなくても、そのオブジェクト自身に2レベル同期機能を追加することができます。どちらが便利かは一概にはいえませんが、好きなほうを使ってください。Sync_mを使ったほうが無駄なロック用のオブジェクトを使わずに済むわけですが、1オブジェクト使うかどうかでは性能上の差は現れないでしょう。

+
+
+ +

キュー

+
+

リソースの排他制御はスレッド間の協調の典型的な例ですが、協調のスタイルは他にもあります。もう1つの典型例はスレッドの流れ作業的な関係です。つまり、あるスレッドがデータを作り、別のスレッドがそのデータを受け取り、次の処理を行います。このような関係は「生産者・消費者モデル」と呼ばれ、データを作るスレッドを「生産者」、データを受け取るスレッドを「消費者」と呼びます(図23.1)。「消費者」は加工したデータを他の消費者に渡して、生産者の役割を果たすこともあります。

+
+ +
+ fig2301 +
+

図23.1●生産者・消費者モデル

+
+

生産者と消費者とをつなぐ「ベルトコンベア」の役割を果たすクラスが「Queue」クラスです。QueueはFIFO(First-In First-Out)とも呼ばれるデータの入れ物で、その名のとおり、先に入れたものが先に出るという性質があります。では、実際にQueueを使ったプログラムを見てみましょう(リスト23.3)。

+
+

リスト23.3●Queueを使ったプログラムの例

+
require 'thread'
+
+q = Queue.new
+
+producer = Thread.new {
+  10.times {|i|
+    q.push(i)
+    sleep(1)
+  }
+  q.push(nil)
+}
+consumer = Thread.new {
+  loop {
+    i = q.pop
+    break if i == nil
+    puts i
+  }
+}
+consumer.join
+
+
+ +

「生産者(producer)」は1秒ごとに整数をQueueに追加し、「消費者(consumer)」はQueueから取り出した数字を受け取り出力しています。消費者のスピードが速くてQueueが空になってしまうと消費者は生産者がQueueにデータを追加するまでストップします。生産者は一定数の整数を送り出した後、終了のマークとしてnilを送ります。消費者はnilを受け取ったらbreakでループを中断します。メインスレッドはjoinで消費者スレッドの実行を待っています。実際に実行されると以下のようになります。

+
+
% ruby q.rb
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+%
+
+

では、仮に生産者のほうが消費者よりもスピードが速かったとしたらどうでしょう。消費しきれなかったデータはQueueにたまり、Queueの長さはどんどん長くなります。消費しきれないのに全力でデータを生産する必要はないかもしれません。そんな場合に便利なのがSizedQueueです。これは長さに制限のあるQueueで、データが一定以上たまったら、データのpushでストップがかかります。SizedQueueの使い方は簡単で、先ほどのプログラム例だと、

+
+
q = Queue.new
+
+

の部分を、

+
q = SizedQueue.new(size)
+
+
q = SizedQueue.new(size)
+
+

に置き換えるだけです。sizeの部分にはQueueの最大長が入ります。これだけで生産が速すぎても、消費が速すぎても調整を行うことができます。

+

Queueはリソースの競合の解決にも使うことができます。リソースを管理するスレッドを1つ用意して、リクエストはQueueを介してそのスレッドに送るようにします(図23.2)。リソースを直接操作するのは管理スレッドだけですから、競合は発生しません。

+
+ +
+ fig2302 +
+

図23.2●Queueによるリソース制御

+
+

実際の例としてはRuby/Tkがこの手法を使っています。Tkを介したGUI操作は複数のスレッドが同時にアクセスできないので、各スレッドは管理スレッドにGUI命令を転送します。送られたGUI命令は管理スレッドがTkライブラリを呼び出し処理します。

+
+
+ +

条件変数

+
+

今までロックによるリソースの独占とキューによるスレッド間の流れ作業について解説しましたが、スレッド間の協調はもっと複雑な場合があります。

+

たとえば、クリティカルセクションの中で他のスレッドにリソースを準備を要求したいといったケースでは、ただ単にMutexのロックを解除するだけでは、そのリソースの準備ができたかどうか保証することができません。スレッド同士は独立して動作するので、きちんとした同期を行わなければどんなタイミングで動作するかわかりません。一度Mutexを解放して、再度ロックするまでに別のスレッドの処理が終わっているかどうかわからないのです。ですから、確実に処理を行うために必要なのは、

+
+

①クリティカルセクションの中で

+

②ロックを別のスレッドに一時的に手渡し

+

③そのスレッドの処理が完了したときにロックを取り戻す

+
+

手段です。このような待ち合わせには「条件変数(ConditionVariable)」というオブジェクトを使います。慣習的に「変数」と呼びますが、Rubyの変数(ローカル変数など)とは直接は関係がありません。

+

条件変数の使用例がリスト23.4です。ConditionVariableは、Mutexによるクリティカルセクションの中で使います。「th1.join」と「th2.join」は各スレッドの終了を待つためです。メインスレッドの実行が終了するとプログラム全体が終了してしまいますから、これがないと処理が途中で中断させられてしまいます。

+
+

リスト23.4●ConditionVariableを使ってスレッドの同期を行う

+
require 'thread'
+
+m = Mutex.new
+c = ConditionVariable.new
+
+th1 = Thread.start {
+  m.synchronize {
+    puts "1: c.waitによって待ちに入る"
+    c.wait(m)
+    puts "1: 通知を受けc.waitから戻る"
+  }
+}
+
+th2 = Thread.start {
+  m.synchronize {
+    puts "\t2: c.waitを受けて処理開始"
+    puts "\t2: c.signalで処理完了通知"
+    c.signal
+    puts "\t2: まだクリティカルセクション"
+  }
+}
+th1.join
+th2.join
+
+
+ +

このプログラムの実行結果は以下のようになります。

+
+
1: c.waitによって待ちに入る
+        2: c.waitを受けて処理開始
+        2: c.signalで処理完了通知
+        2: まだクリティカルセクション
+1: 通知を受けc.waitから戻る
+
+

条件変数はキューに比べて、スレッドの関係がやや複雑になります。ですから可能であれば、スレッドの関係を生産者・消費者モデルで構築して、構造を単純化するのがよいのではないでしょうか。

+
+
+

スレッドトラブルの回避

+
+

先にも述べましたが、スレッドプログラミングでトラブルが起きるとデバッグが大変です。スレッド関係のバグはタイミングによって発生したりしなかったりすることが多く、同じように実行しても再現しないとか、10回のうち1回だけうまくいかないとかイヤなバグになることが多いのです。

+

それを避けるためには以下のようなルールが役に立ちます。もちろん完全ではありませんが。

+
    +
  • できるだけ各スレッドの処理が独立になるように心がける。複数のスレッドが同じオブジェクトをアクセスしないように。たとえば、HTTPサーバーでリクエスト単位でスレッド処理を行うなどはいい例でしょう

  • +
  • 複数のスレッドが協調する必要がある場合には、できるだけ「生産者・消費者」の関係になるように心がける

  • +
  • どうしても1つのリソースに同時にアクセスする必要がある場合には、必ずMutexなどで保護する

  • +
  • リソースの準備などの関係で待ち合わせが必要な場合には条件変数で同期する

  • +
+

はっきり言ってスレッドプログラミングは難しいです。MutexConditionVariableを使う必要が出てきたら、それはプログラムのやり方が間違ってるかもしれないと考えたほうがよいかもしれません。あなたがクラスライブラリをどんどん作るような上級者であれば話は別ですが。

+
+
+

まとめ

+
+

ということで、今月は先月に引き続きスレッドプログラミングについて、特にトラブルの回避方法について学びました。正直なところ、私自身もスレッドプログラミングの経験値は低いので(Rubyのスレッドシステムを自分で作ったのに)、えらそうな解説はできないのですが、今回紹介したような「ルール」は他の人の経験も踏まえたモノなので、トラブルを避けるために役立つのではないでしょうか。

+

Rubyのスレッドには、どこでも同じように使える、という性質があります。気軽にスレッドを使ってみて慣れてください。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-052.xhtml b/docs/vol1/xhtml/p-052.xhtml new file mode 100644 index 0000000..38e4fa0 --- /dev/null +++ b/docs/vol1/xhtml/p-052.xhtml @@ -0,0 +1,45 @@ + + + + + +第23章 スレッド(その2) + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ プログラマーの幸せ

+
+

「世の中には2種類の人間がいる」というのはよくいわれるセリフですが、私もそう感じるときがあります。つまり、「世の中には2種類の人間がいる。プログラマーとそうでない人々だ」ということです。

+

いや、もちろんプログラマーだって人間なのですが、いろいろな点で「普通の人」とは違っていると思われているように感じます。そのような誤解を解消しようと考察してみたのですが、考えれば考えるほど「やっぱり違うのかもしれないなあ」と思ってしまいます。

+

「普通」の人から見てプログラマーが変わっていると思われる最初の点はコンピュータに触るのが苦痛でないことです。私にはよくわからないのですが、コンピュータというものはよくわからない恐ろしいもので、それを苦もなく扱う人は同じくらい恐ろしいと感じる人は確かにいるようです。ただ、幸いなことに技術の進歩でたいていの家庭にPCが入り込んで、メールやインターネット(つまりWebのこと)を使いこなす「普通の人」も増えてきたので、この先入観は最近減ってきているようです。

+

変わっていると思われるもう1つの点は、プログラマーがプログラムを作り出す点です。「普通の人」にとってはプログラムはすでに存在していて、買うなり、もらうなり、ダウンロードするなりして入手するものであって、自分で作るものではないわけです。それを自分で作ってしまうとはいったいナニモノかという感じでしょうか。たとえると自動車を完全自作する人と同じようにとられているのでしょうか。

+

最後の点としては、生活時間が狂っている人が多いということでしょうか。確かに私の周りを見てもプログラマーには夜型の人が多いのは本当です。私自身も夜中に活動していることが多いですし(時差の関係でメールの読み書きにちょうどいいということもあるし)、私の会社のプログラマーたちも裁量労働制ということもあって、午前中には誰もいないし、夜はいつまでたっても誰も帰らないということがたびたびあるようです。

+

しかし、私はあえて当たり前のことを改めて主張しようと思います。「プログラマーも普通の人間である」と。

+

そもそも多くの人間は夜型になりやすい傾向があります。特に締め切りに追われる状況ではそうです。ですから、プログラマーと同じように締め切りのある職業の方々は似たような生活状況なのではないでしょうか。直接の知り合いはいませんが漫画家や作家の方々も同じように昼夜逆転している人が多いと想像します。

+

寝る時間を削っても仕事をするというのは、その仕事がキツいか、仕事がよっぽど好きかのいずれか、または両方です。プログラマーが昼夜逆転している人が多いということは、プログラマーの身分が低く、労働条件が悪い(ことが多い)ことと、プログラム好きでプログラマーをしている人が多いことを示しているのかもしれません。

+
+

プログラムを作るという行為もかなり誤解されています。もっともエディタ(というか普通の人にとっては「コンピュータの画面」)に向かって、英語のようなものを打ち込んでにやにやしている姿は無気味に映るのかもしれません。モノを作るといっても、そのモノには形があるわけではありませんし。何もないところから創造するという点では、漫画家や作家などと比較されるべきなのかもしれません。現実世界のルールに縛られず、何でもアリというところも似ているでしょう。

+

そうです。プログラマーはクリエーターなのです。しかも出来上がったものは、プログラマーの手を離れて、コンピュータの力を借りて一人で動き出すのです。あるいは1つの世界を創造すると言ってもよいでしょう。プログラムというものはその点で、書かれたものがそのとおりに存在する点において漫画や小説を超えているといえるでしょう。まさにプログラマーは世界を構築する法則を作り出しているのです。そして、その法則(プログラム)に従い、「世界シミュレータ」であるところのコンピュータがその世界を人間の目に見える形に変換しているのです。現代の創造主は電脳に宿るのです。かなり大げさな表現ですが、FF Xとかを見ると「世界の創造」もあながち言い過ぎではないなと感じます。

+

人はモノを作り出すときに喜びを感じます。プログラマーの多くがまっとうな生活を犠牲にしてまでのめり込む理由の1つはこれなのです。それは漫画家が徹夜してでも漫画を書くことと同じような誰にでもある感情です。決して理解できないものではないはずです。しかも、プログラミングは面白い漫画を書いたり、小説を書くよりはずっとずっと簡単に始めることができます。いきなりFF Xのようなものは作れないかもしれませんが、小規模なものならちょっとしたツールをそろえればすぐにでも始められます。そういう目的にはRubyもお役に立てるでしょう。

+

さて、プログラムを作っているとバグはつきものです。コンピュータは人間が意図したとおりではなく、プログラムに書かれているとおりに動作します。そして、プログラマーはしばしば自分の意図をプログラムに表現することに失敗して、思わぬ結果を得ることになります。そうなると、意図した結果を得るために、表現の間違いを探し出し、正しい表現に置き換えねばなりません。これは一種のパズルのようなものです。

+

パズルが好きな人も多いと思います。これは別に新しい何かを産み出すことではありませんが、自分の能力の限界に挑戦し、脳を活性化させます。これにはある種の快感が伴います。プログラムを作り出すことで1つの世界を創造する喜びを味わい、その後はパズルの喜びを感じることができるプログラミングはなんとすばらしい精神活動でしょう。これほど高尚な創造行為があるでしょうか。また、プログラミングとは、コンピュータ相手の非人間的な行動と思われがちですが、実際には人間の心の中にある意図を明確化して表現し、また人間の過ちを見つけ出し、正しく表現し直すという非常に人間的な活動なのです。

+

とはいえ、プログラマーもいつも好きなプログラムばかり作っているわけにはいきません。仕事のために面白くもないプログラミングを我慢する必要もあります。また、パズルというにはあまりに難解で非人間的なバグが襲ってくることもあります。そういうときに限って締め切りが厳しく迫ってくるのです。プログラマーという仕事はそれほど楽なことばかりではありません。

+

いかん、少々疲れてきたようです。こういうときは仕事を早めに切り上げて温泉にでも行きましょうか。お湯につかってのんびりしてると新しいアイデアが浮かんでくるかもしれません。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-053.xhtml b/docs/vol1/xhtml/p-053.xhtml new file mode 100644 index 0000000..8f0b16b --- /dev/null +++ b/docs/vol1/xhtml/p-053.xhtml @@ -0,0 +1,274 @@ + + + + + +第24章 データの保存 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay24 +
+

+初等Ruby講座
+データの保存 +

+
+

[Linux magazine, 2003年5月号]

+
+

データの保存というタイトルで、MarshalPStoreを取り上げています。通常であればSQLiteとか何らかのRDBMSを取り上げるべきなのかもしれませんが、私はRDBMSがあまり得意でないので、こういうアプローチになっています。ただ、PStoreはあくまでもオモチャなので、データ容量的にもアクセス速度的にも、本気のアプリケーションでは使い物になりませんね。

+

「Ruby開発日記」は、「プログラマーと数学」というテーマです。結局は自分が学生時代に数学が得意でなかったという告白になっているような気がします。学生時代は本当に数学で苦労しました。

+
+
+

プログラムが作成したデータをファイルに保存しておきたいことはたびたびあります。今回はRubyでデータ保存を行う方法をいくつか紹介します。

+
+
+

オブジェクトの保存

+
+

Rubyのオブジェクトは現実世界にある「もの」と違ってコンピュータのメモリの中に作られます。ですから、プログラムの実行が終わってしまえば、メモリは初期化されてしまい、オブジェクトは煙のように消えてしまいます。しかし、すべてのデータがプログラムの終了とともに消えてしまっては困るので、必要なデータはファイルに保存し、次回読み込んでくる必要があります。では、問題です。

+

第1問。ここに "hello world\n" という文字列データがあったとして、このデータをカレントディレクトリのdataというファイルに保存し、再び読み込むためにはどうしたらよいでしょうか。

+

ファイルは文字列の読み込み、書き込みに対応しているので、これは簡単です。解答は以下のようになるでしょう。

+
+
data = "hello world\n"
+open("./data", "w") {|f|
+  f.write data
+}
+open("./data", "r") {|f|
+  data = f.gets
+}
+
+
+

それでは、第2問。書き込み・読み込みを行うデータが単なる文字列でなく、配列やオブジェクトだったら? しかも、オブジェクトが参照している先の先まで入出力する必要があったら?

+

これは少々面倒です。文字列のような参照を含まないデータであれば、比較的簡単ですが、Rubyのオブジェクトには参照で複数のオブジェクトが連結していたり、場合によっては1つのオブジェクトを複数の場所から参照していることもあります(図24.1)。

+
+ +
+ fig2401 +
+

図24.1●Ruby のオブジェクト

+
+

単純にオブジェクトの参照をたどって書き出すだけでは、複数回参照されているオブジェクトの情報が何度も書き出されてしまいますし、参照が循環していた場合には最悪無限ループに陥ります。これはまずいでしょう。

+

このような関係にあるかもしれないオブジェクトの情報を一度ファイルに書き出し、そしてもう一度読み込むにはどうしたらよいのでしょうか。

+

今月はこのようなオブジェクトデータの保存と読み込みについて学びます。

+
+
+

Marshal

+
+

ファイルには文字列(厳密にはバイト列)なら格納できるわけですから、オブジェクトを文字列に変換できれば問題は解決です。このようにオブジェクトをバイト列に変換することをシリアライズとかマーシャル(またはマーシャリング)とか呼びます。

+

辞書を調べるとシリアライズ(serialize)は「直列化」とか「順番に並べる」とかいう意味で、オブジェクトをバイトの並びに置き換えることを表現しています。一方、マーシャル(marshal)には「兵隊などを整列させる」という意味がありますので、こちらも同じような意味です。Javaではシリアライズという単語をよく使うようですが、Rubyではマーシャルと呼ぶことのほうが多いようです。いずれの単語で呼ぶにせよ、Rubyにはそのような機能が標準で組み込まれています。それがMarshalです。

+

Marshalモジュールには、ほぼ任意のRubyオブジェクトをバイト列に変換するメソッドdumpと、逆に変換されたバイト列から元のオブジェクト(のコピー)を復元するメソッドloadが提供されます(表24.1)。

+ +
+

表24.1●Marshalモジュールのメソッド

+ + + + + + + + + + + + + +
メソッド説明
dump(object[,io][,limit])objectとそこから参照されるオブジェクトをバイト列に変換します。第2引数としてIOオブジェクトが指定されたときにはそのIOに対して変換結果を書き出します。そうでないときには変換されたバイト列を返します。整数limitが指定されたときには、limit段以上深くリンクしたオブジェクトを変換しようとすると例外が発生します
load(from[, proc])dumpによって変換されたバイト列(文字列)、または変換されたバイト列を保存したIOオブジェクトを引数にとり、元のオブジェクトと同じ状態を持つオブジェクトを返します。第2引数として手続きオブジェクトprocが指定されたときには復元されたそれぞれのオブジェクトに対してprocが呼び出されます
+
+

Marshalを使えば、複雑な構造を持つデータも簡単にファイルに書き出すことができます。もちろん、図24.1に示した同じオブジェクトが複数回参照されるケースにも、参照が循環するケースにもちゃんと対応しています。

+

Marshalは基本的なオブジェクトの構造を知っていますから、普通のオブジェクトからバイト列への変換はMarshalモジュールのdumpメソッドが自動的に行ってくれます。使い方は簡単です。

+
+
data = Marshal.dump(obj)
+
+

これでobjとそこから参照されるすべてのオブジェクトをバイト列に変換したものがdataに代入されます。ファイルに直接出力する場合には、

+
+
f = open("/tmp/data", "w")
+Marshal.dump(obj, f)
+
+

とします。dumpしたデータを読み戻すためには、

+
+
obj2 = Marshal.load(data)
+
+

とします。obj2には元のオブジェクトのコピーが代入されます。ファイルから読み出す場合はどうすればよいかもうわかりますよね。

+
+
f = open("/tmp/data", "r")
+obj2 = Marshal.load(f)
+
+

このようにMarshalを使えばオブジェクトをバイト列に簡単に変換できます。この機能を使えばオブジェクトデータを簡単にファイルにセーブすることができます。

+

Marshalを使えば、オブジェクトのディープコピーも行えます。普通にcloneメソッドなどでオブジェクトのコピーを行っても、そのオブジェクトだけがコピーされ、参照先はコピーされません。こういうコピーをシャローコピー(shallow copy – 浅いコピー)と呼びます。しかし、ときとして参照先も含めて再帰的にコピーしたい場合があります。このようなコピーはディープコピー(deep copy – 深いコピー)と呼ばれます。Marshalを使えばディープコピーは以下のように実現できます。

+
+
obj2 = Marshal.load(Marshal.dump(obj))
+
+

こんなに便利なMarshalですが、以下のような欠点もあります。

+ +
    +
  • (a) 変換結果がバイナリで人間に理解しにくい

  • +
  • (b) 変換フォーマットのバージョンがそろっている必要がある

  • +
  • (c) あらゆるオブジェクトがダンプできるわけではない

  • +
  • (d) スレッドやマルチプロセスに対応していない

  • +
  • (e) 単なるdeep copyの手段としては効率が悪い

  • +
+

また、Marshalは、

+
    +
  • 特異メソッドを定義したオブジェクト

  • +
  • IOやソケットなど基本的にプロセスを超えて保存できないオブジェクト

  • +
  • 拡張ライブラリが定義したようなRubyが保存方法を知らないオブジェクト

  • +
+

は保存できません。

+

これらのオブジェクトはMarshalが適切な保存方法を知らないから保存できないわけです。適切な保存方法を知らないというのは、

+
    +
  • 適切な保存方法が(一般的には)存在しない

  • +
  • そのオブジェクトに対する情報がない

  • +
+

のいずれかです。いずれにせよ、一般的には保存できなくてもある特定のプログラムにおいて適切な方法があれば、それをMarshalに教えることができればよいわけです。このようなMarshalをカスタマイズしたいというニーズを満たすために、ユーザーがクラスごとに独自の変換が行うための_dump, _loadメソッドを定義することができます。

+

Marshal.dumpはダンプしようとするオブジェクトに _dumpメソッドが定義されているときには、そのメソッドを呼び出した結果(文字列である必要があります)を変換結果とします。_dumpの引数としては現在のlimitが渡されます。Marshal.loadは復元しようとするクラスに _loadメソッドが定義されていれば、そのメソッドを呼び出します。_loadの引数には_dumpが返した文字列がそのまま渡されます。_dumpはインスタンスメソッドですが、_loadはクラスメソッドであることに注意してください。_dump_loadの使い方の例をリスト24.1に示します。

+
+

リスト24.1●_dump, _loadの使い方

+
# _dump, _loadの例
+class Foo
+  def initialize(str=nil)
+    @foo = str
+  end
+  def _dump
+    String(@foo || "")  # @fooの値をdump
+  end
+  def Foo._load(str)
+    self.new(str)       # 保存された値で初期化
+  end
+end
+
+
+ +

一度、_dumpを定義したらMarshalは何も助けてくれません。Marshalが自動的にやってくれていたインスタンス変数の書き出しなども、必要であれば自分でやる必要があります。したがって、_dumpの利用は慎重に行うべきでしょう。先に述べたようなMarshalが対応できないオブジェクトをどうしてもダンプしたい場合にだけ用いるべきです。

+

Marshalの応用例としては、分散Rubyを実現するdRubyがあります。dRubyはオブジェクトをMarshalによって変換してネットワークを超えた分散プログラミングを可能にしています。dRubyについては詳しくは『dRubyによる分散オブジェクトプログラミング』(関将俊著、アスキー、ISBN4-7561-3961-2)を参照してください。

+
+
+

AMarshal

+
+

Marshalは変換結果はバイナリ列でひと目では内容がわかりません。効率は少々低くてももっと見やすい形で出力したいというニーズもあるかもしれません。

+

そのようなニーズに応えるのが田中哲(akr)さん作のAMarshalです。AMarshalは標準添付ではないので、まずインストールする必要があります。URLは、

+
    +
  • http://cvs.m17n.org/~akr/amarshal/

  • +
+

です。ここからAMarshalのtarballを取ってきます。原稿執筆時点ではamarshal-0.4.tar.gzでした。これをどこかで展開します。いろいろファイルが入っていますが、必要なのはamarshal.rbだけです。これを適当なRubyのライブラリディレクトリにコピーします。たとえば、私は、

+
    +
  • /usr/local/lib/site_ruby/

  • +
+

にコピーしました。AMarshalの機能はMarshalとほぼ同じです。ただし、limitの指定はありません。

+
+
obj = [1, "2", 3.0]
+dump = AMarshal.dump(obj)
+AMarshal.load(dump)   # => [1, "2", 3.0]
+
+

AMarshalの最大の特徴はその変換出力です。上記の例題でのdumpの結果は以下のようになります。

+
+
v = []
+v[0] = Array.allocate()
+v[0] << 1
+v[1] = "2"
+v[0] << v[1]
+v[2] = 3.0
+v[0] << v[2]
+v[0]
+
+
+

見ればわかるように、これはRubyプログラムです。つまりAMarshalは実行するとdumpに指定したのと同じ構造のオブジェクト(群)を生成するようなプログラムを出力するのです。機械生成なのでやや非人間的ですが、Marshalのバイナリ出力を解析することを思えば、それよりはずっとわかりやすいでしょう。AMarshalの目的は「わかりやすさ」なので効率に関しては目をつむりましょう。データファイルサイズでも読み込み効率でもMarshalには勝てません。

+

あ、AMarshalには1つ重要な制限があります。AMarshalの実行にはRuby 1.7で導入されたClass#allocateメソッドが必要です。というか、AMarshalのためにallocateメソッドが追加されたようなものなんですが。ですから、まだ1.6系をお使いの方は、次の安定板である1.8が登場するまでしばらくはおあずけですね。すでに昨年のクリスマスには1.8のpreviewが出ていますから、1.8の正式リリースは遠くないと思います。

+

オブジェクトのマーシャルを行うライブラリにはAMarshalの他にも、XMLを使うclxmlserialTMarshal, XMarshalなどなどがあります。みなRAAに登録されているので、興味のある人は調べてみてください。

+
+
+

PStore

+
+

PStore(persistent store,(オブジェクトの)永続的保存)はMarshalの応用例の1つです。Marshalは指定したデータをバイナリ列に変換するだけでしたが、PStoreはそれを利用して簡単なオブジェクト指向データベースを実現しています。オブジェクトのマーシャリングという一番面倒な部分をMarshalモジュールが実現してくれるので、PStoreはコメントや空行を含めてもわずか160行程度のプログラムです。

+

PStoreの特徴は以下のとおりです。

+
    +
  • Marshalを使って任意のRubyオブジェクトをそのまま格納できる

  • +
  • 使いやすいインターフェイス

  • +
  • トランザクションがある

  • +
+

トランザクションとはデータベースの処理の単位です。トランザクション中の処理が問題なく終了すればその結果はデータベースに正式に書き込まれますが、もし途中で何らかの原因(例外など)で失敗すれば、データベースの状態はトランザクション開始前に戻ります。これにより、トランザクションによってデータベースが不整合な状態になることを防ぐことができます。

+

PStoreにはデータを一度全部メモリに読み込むので大規模データベースには向かないという欠点もあります。しかし、数百Kバイト程度の小規模のデータベースならあまり問題にはなることはないでしょう。RubyのアプリケーションインデックスであるRAA(http://raa.ruby-lang.org/)も長らくPStoreを使っていました。

+

PStoreオブジェクトの使い方は次のとおりです。

+
    +
  1. オープンする
    +まずはデータベースをオープンして、PStoreデータベースオブジェクトを得ます。 +
    +
    db = PStore.new(path)
    +
    +pathにはデータベースファイルのパスを指定します。
  2. +
  3. トランザクションを開始する
    +先ほど説明したとおり、トランザクションはデータベース処理の単位です。データベースに対する処理はトランザクション単位で書き込まれますので、処理途中で例外が発生したときなどにはデータベースの状態はトランザクション開始前の状態にとどまります。トランザクションはtransactionメソッドにブロックを指定することで開始します。 +
    +
    db.transaction {
    +  ...
    +}
    +
    +ブロックを抜けるとトランザクションが終了します。
  4. +
  5. オブジェクトの登録、取得
    +PStoreオブジェクトは一種のハッシュとして扱えます。オブジェクト登録・取得は[]メソッドを使います。 +
    +
    db["foo"] = object  # オブジェクトの設定
    +db["bar"]           # オブジェクトの取得
    +
    +ただ、ハッシュと違って登録されていない名前に対するオブジェクトの取得はエラーになりますから、データベースに名前が登録されているかどうか定かでない場合には、あらかじめ確認する必要があります。データベースに登録されているすべてのオブジェクト名の一覧を得るのはrootsメソッド、ある名前のrootが登録されているかどうかをチェックするのはroot?メソッドです。 +
    +
    db.roots          # root名一覧
    +db.root?("foo")   # root名fooがあれば真
    +
    +rootという名前はトランザクションが成功したときのオブジェクトの書き出しが、名前を付けられたオブジェクトを根(root)にして行われることからきています。
  6. +
  7. トランザクションの終了
    +transactionメソッドに指定したブロックの実行が終わればトランザクションは自動的に終了し、データベースから参照されている全オブジェクトの現在の状態がファイルに書き込まれます。
    + トランザクションの途中で強制的にトランザクションを終了させるメソッドも用意されています。commitメソッドはトランザクションを正常終了させます。transactionメソッドの実行も終了します。abortメソッドはトランザクションを強制的に中断します。データベースへの変更はファイルに書き込まれず、トランザクション開始前の状態のまま残されます。abortメソッドもtransactionメソッドの実行を中断します。
  8. +
+

CGIでは複数同時に起動された場合に対応するためデータファイルへのロックが必要になるのですが、PStoreは内部で自動的にflockを使って排他処理してくれますので、その点でも心配せずに使えます。ただし、PStoreは同じプロセスの中での複数のスレッドからの同時アクセスには対応していません。先月学んだような方法で排他制御する必要があります。

+

データベース内のオブジェクトへの参照と更新は必ずトランザクション内で行ってください。途中のオブジェクトを取り出してトランザクション外で状態を変更してもエラーにはなりませんが、その変更はデータベースには反映されません。

+
+
+
db_data = nil
+db.transaction {
+   db["foo"] = [1,2,3]
+   db_data = db["foo"]  # 持ち出し
+}
+# トランザクション終了
+
+# データへのアクセスは可能
+p db_data[0]            # => 1
+
+# データの更新も可能だがDBには反映されず
+p db_data[0] = 42
+
+

PStoreのトランザクション処理手順を簡単に説明しておきます。

+
    +
  1. データファイルをflockでロック
  2. +
  3. データファイルからMarshalを使ってデータを読み込む
  4. +
  5. ブロックを実行
  6. +
  7. ブロック実行が成功ならMarshalでデータを書き込む
  8. +
  9. 失敗していたら何もしない
  10. +
+

実際にはここにバックアップファイルの作成やエラー処理を含むのでもうちょっとややこしいですが、基本的にはこんなものです。

+

手前みそながら、PStoreはCGIに限らず非常に使い勝手がよいので、小規模なデータベースでしたら、ぜひ活用してください。

+
+
+

まとめと次回予告

+
+

複雑なデータをファイルに保存したり、再読み込みしたりする処理は面倒なものですが、MarshalAMarshalを使えば、簡単に実現できます。また、これらの機能を使えばPStoreのようなオブジェクト指向データベースも数百行で簡単に実現できます。

+

とはいえ、たとえば設定ファイルや簡単なデータの保存にはマーシャリングはオーバースペックでしょう。来月はそんなデータを簡単に扱えるファイルフォーマットであるXMLやより新しいフォーマットであるYAMLなどについて紹介します。「RubyでXML」についてはすでにそれをテーマにした書籍も出ていますから、新顔のYAMLを中心に解説しようと思います。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-054.xhtml b/docs/vol1/xhtml/p-054.xhtml new file mode 100644 index 0000000..a04a6f5 --- /dev/null +++ b/docs/vol1/xhtml/p-054.xhtml @@ -0,0 +1,50 @@ + + + + + +第24章 データの保存 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ プログラマーと数学

+
+

プログラミング好きと数学好きの間には何らかの関連があると思われます。プログラミングの基礎を作った人々は、古くはバベッジやブルバキ、やや新しいとチューリングやフォン・ノイマンなど多くは数学者です。数学者の名前を取ったプログラミング言語もたくさんあります(HaskellやTuringなど。PascalやOccamは数学者ではないのかな)。

+

また、私の周りを見渡しても、私の最初の本『オブジェクト指向スクリプト言語Ruby』の共著者である石塚圭樹さんは数学科の出身ですし、『Rubyプログラミング入門』を書いた原信一郎さんは長岡科学技術大学の数学の先生です。

+

また、私の同僚でmod_rubyerubyの開発者、前田修吾さんは数学科から哲学科に転学したというちょっと変わった経歴を持っています。

+

Ruby関連でも数学好きは活躍していまして、数学の話題を主に取り扱う(というか、一般の話題から分離する)ためにruby-mathという専用のメーリングリストが用意されています。

+

これはいったいなぜなんでしょう?

+

プログラミングは論理をベースにしていて、論理学は数学の一部であること、また数値を扱うプログラムが多いこと、また数学者がプログラミングの歴史で果たしてきた役割が大きいことなども考えられますが、数学のきっちり答えが出る厳密さと、あいまい性を排除する(したがる)プログラミングに共通点があるからかもしれません。

+

とはいえ、プログラミングに数学が必須かというとそういうわけでもありません。大学でも機械工学、電子工学などでは研究においても数学は必須ですが、情報工学では(もちろん数学は必須科目ですが)、数学を使わなくてもできる研究はいくらでもあります。

+

私自身も数学は大変苦手です。小学生の頃は算数が苦手という意識はなかったのですが、中学校に入り、数学という科目名になったあたりからもう駄目でした。この数学苦手の傾向は年を経るに従ってだんだん強まって、高校ではすべての教科の中で数学の成績が飛び抜けて悪いという悲惨な状況でした。苦手というよりも、脳の中で数学を扱う部分が壊れているんじゃないだろうかと、自分でも疑うほどでした。

+

大学入試のときも当時の共通一次テストで、他のすべての科目の失点の合計よりも数学の失点のほうが多いという大失態を演じましたし、二次試験でも苦戦して数学のおかげであやうく大学生になれないところでした。大学に入ってからも必須の数学(線形代数とか)が理解できず、留年ぎりぎりで教授に泣きついたことを覚えています。

+

どうして自分はこんなに数学が駄目なんだろうと考えたことがあります。どうやら、私が数学が駄目な理由にはいくつかあるようで、まず第一に、私は数学の試験にはつきものの「一定の時間内に正しい計算結果を出す」ことが大変苦手のようです。学生時代、数学の教科書を読むのはそんなに嫌いじゃありませんでしたし、理解できる部分もありました。しかし、試験のときにはいつもいろいろ試行錯誤して時間切れというのが落ちでした。素早くルールを適用して正しく計算というのがどうも駄目みたいです。定理の詳細が思い出せず、試験中に図を書いて定理を「再発見」しようとするようでは時間がいくらあっても足りません。実際、今でもプログラミングに当たって動かしてみて確かめて初めて理解するというケースが多いように思います。

+
+

2番目に、数学(が提供する考え方、モデル)が何の役に立つのかわからず、興味が持てなかったということがあります。理科とかは単なる知識(光の速度は秒速30万キロで、月まで1秒以下で届くんだよ、とか)としても興味が持てたのですが、算数で習った以上のレベル、微分とか積分とか行列式とかが実際の生活の何の役に立つというのでしょう。いや、実際にはあとになって役立つ分野があることを知るのですが、そのときにはもう手遅れで数学の苦手意識が邪魔をしてそういう分野にもまた興味が持てませんでした。

+

最後に、数学というものは興味がない状態で扱うには複雑すぎるのでしょう。学生時代には古文の授業も役に立ちそうもないという理由で同様に興味は持てませんでしたが、それでも成績は数学よりはずいぶんマシだったように思います。

+

「そんなに数学苦手でプログラマーとしてやっていけるの?」とよく聞かれます。でも、大丈夫です。ご心配なく。

+

もちろんプログラミングの中にも数学がどうしても必要な分野はあります。そういう分野で私がちゃんとやっていけるとは思えません。しかし、幸いなことにコンピュータ業界でそういう分野はそれほど多くありません。それよりもプログラミングではむしろ人間に関わることが多いのです。

+

コンピュータはよく人間的でないと思われています。確かにコンピュータに人間性は期待できないのですが、プログラミングというものは、人間の意図をくんでコンピュータにわかる形で表現するという非常に人間的な活動です。必要なスキルは、開発しているこのプログラマーはいったい何を達成したいと思っているのかというような意図を読み取る能力とか、このプログラムの挙動をあいまいさなく表現するといった、学校の科目でいえば国語が相当するようなものが主流です。

+

プログラミングを学ぶ一番の方法は他の人が書いたプログラムを読むことですが、それには数学の能力というよりは、やはり読解力などの国語的能力が活躍するような気がします。

+

私の専門であるプログラミング言語の設計については、特にそのことがいえます。この機能を使ってプログラムを書くとプログラマーはどう感じるだろうかという想像力や、人間の脳が扱いやすい複雑さとそうでない複雑さを判別するなど、プログラミング言語の設計というものは、基本的にコンピュータよりも人間のほうを向いた活動なのです。

+

ですから、世の中の数学苦手の諸君、プログラミングをあきらめることはありません。あなたたちには明るい未来が待っています。

+

でもね、数学の能力はいらなくても国語力やその基礎になる考える能力はやっぱり必要なんですよね。肉体労働の対極にあるプログラミングという活動では、数学の能力ではないにしても、脳を活動させる能力はいずれにしても要求されそうです。

+

もっとも、プログラミング自身が脳を鍛える体操といえないことはないですね。これからの高齢化社会にはボケ防止にデバッグとかが流行るかもしれません。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-055.xhtml b/docs/vol1/xhtml/p-055.xhtml new file mode 100644 index 0000000..dad91f0 --- /dev/null +++ b/docs/vol1/xhtml/p-055.xhtml @@ -0,0 +1,340 @@ + + + + + +第25章 XMLとYAML + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay25 +
+

+初等Ruby講座
+XMLとYAML +

+
+

[Linux magazine, 2003年6月号]

+
+

S式とXMLとYAMLについて解説しています。時代背景を説明すると、この頃はJavaの普及に伴ってXML全盛期で、データ表現形式や設定ファイルなどの目的に(必要以上に)XMLが多用されていました。一方、データ表現に特化したYAMLは登場したばかりで、日本ではまだほとんど誰も知らない状況です。現在では、データ表現形式としては、JSONが一般的になり、XMLもYAMLも「負の遺産」と見なされることが増えたのが時代を感じさせます。特にあの読みにくく解析しにくいXMLに悩まされることがほとんどなくなったのはありがたいですね。

+

「Ruby開発日記」は、スパムフィルターについてです。現代ではほとんどの人はGMailなどのWebメールサービスに移行していて、自前でスパムフィルターを設定する人などほとんどいないのではないでしょうか。私はといえば、今でもBogofilterを愛用しているのです。

+
+
+

先月に引き続きRubyによるデータ保存について、特にデータ保存のフォーマットについて学びます。

+
+
+

データの表現

+
+

データをファイルに格納する場合、それが単純なテキストデータ(文字列)であればそのまま記録するだけで十分です。しかし、保存したいデータがそのようなテキストデータだけで済むわけではありません。実際には保存したいデータは何らかの「構造」を持っています。

+

構造とは、単なる1つの値ではなく、複数の値の集まりやそれらの間の関連を意味します。配列やハッシュは構造です。構造のあるデータをファイルに格納する方法としては先月説明したMarshalがありますが、それにはちょっとだけ問題があります。

+
+
    +
  • フォーマットがバイナリで人間には読めない
    +いや、無理すれば読めますが、楽ではないですよね。

  • +
  • フォーマットバージョンの変化に弱い
    +Marshalのフォーマットは上位互換ですが、双方向に交換するとき(dRubyとか)には双方のバージョンを完全にそろえる必要があります。

  • +
+

そこで、もうちょっと人間に読みやすいデータフォーマットがほしいと思うときがあります。たとえば、設定ファイルやちょっとしたデータファイルにはMarshalよりも人間が読んで意味がわかり、編集もできるようなフォーマットのほうがよいでしょう。

+

これも先月紹介したAMarshalは「構造のあるデータをそれを生成するRubyのプログラムで表現する」というユニークなアプローチでした。これなら確かに人間にも読めますし、編集もできますが、AMarshalの出力したRubyプログラムは正直言ってあまり読みやすくはありませんし、また入力はデータをそのまま実行してしまうので、悪意のある書き換えが行われたらかなり危険です。AMarshalで読み込むファイルに、

+
+
system "rm -rf ."
+
+

なんて行が含まれていたらかなり悲惨でしょう。

+

そこで、構造が表現できて、人間にも簡単に読み書きできるような安全なフォーマットに対するニーズが生まれるわけですが、そのようなフォーマットをプログラムごとに毎回設計するのも大変です。

+

そこで登場する考えがメタ・データフォーマットです。「メタ」というのは「一段高い」というような意味を表す接頭語で、たとえば「メタクラス」は「クラスのクラス」を意味します。ですから、メタ・データフォーマットとは「データフォーマットのフォーマット」のことです。要するに「データフォーマットの枠組み」、あるいは「データフォーマットの文法」というようなもののことです。ここで「メタ」と「データ」の間に「・」を入れているのは「データのデータ」である「メタデータ」という言葉もあるので、「メタデータのフォーマット」と解釈されないためです。あくまでも「メタなデータフォーマット」なのですから。余談ですが、「メタ」という単語を多用する人物には注意したほうが賢明です。いつも、話を抽象化して一段高いレベルから話したがるからです。抽象度が高くなると、とたんに話が難しそうに聞こえるからです。そういえば、私もそういうタイプですねえ。

+

話をメタ・データフォーマットに戻しましょう。設定ファイルに必要な項目はプログラムごとに違うでしょうが、その「フォーマットのフォーマット」つまり、設定ファイルの文法は共通にすることができます。そうすれば、共通のAPIでファイルを読み書きすることもできます。

+

メタ・データフォーマットには以下のような性質が求められます。

+
    +
  1. 構造を表現することができる

  2. +
  3. 人間にも読み書きできる

  4. +
  5. 統一的なAPIで読み書きできる

  6. +
+

このようなメタ・データフォーマットの例としては、LispのS式、XML、そして今月新たに紹介しようとしているYAMLがあります。

+
+
+ +

S式

+
+

S式(S-Expression)というのは、私の好きなプログラミング言語であるLispで使われるメタ・データフォーマットです。LispではあらゆるデータをS式で表現します。Lispではプログラムもデータですから当然のようにS式で記述されます。Lispを少しでもご存じの方は、あのかっこだらけの表記を思い出されることでしょう。あれがS式です。

+
+
(define (fact (n)) (* n (fact (- n 1))))
+
+

上記のS式は階乗を求めるプログラムですが、同時に、階乗の計算法というデータをS式というメタ・データフォーマットで記述したものでもあります。S式では当然普通のデータも表現できます。

+
+
(address-entry
+  (name "まつもとゆきひろ")
+  (addr "島根県八束郡"))
+
+

S式のSはSymbolのSです。つまり、数値ではなく記号で表現できるという意味のようです。LispはFORTRAN, COBOLと並んで最古のプログラミング言語の1つですから、S式は最も古いメタ・データフォーマットです。

+

S式はLispとあまりにも強く結び付いているので、Rubyではあまり用いられません。S式を解釈する独立したライブラリはないのではないかと思います。ただ、Rubyで書いたLisp処理系はrougeとかruchemeとかいくつかありますので、それらにはS式を解釈するルーチンが当然含まれていると思います。また、RAAを探るとnpreader.rbというS式に似た形式を読み出すライブラリがあるようです。S式のかっこに抵抗がなければ、いろいろ面白い応用が考えられると思います。

+
+
+

XML

+
+

XMLはもう流行語ですから聞いたことがない人はいないかもしれません。XMLはeXtensible Markup Languageの略で、SGMLの流れをくんだマークアップ言語です。XMLのすごいところは単なるマークアップ(テキストに対する意味付け)を超えて、メタ・データフォーマットとしての機能を確立した点です。XMLを使えば、構造を持つデータを、人間が読める形式で表現できます。しかも、1つのフォーマットでいろいろな種類データを表現できます。

+

もっとも、これは何十年も前からLispとS式が実現してきたことなのですが、XMLによって大衆もその便利さを再発見したということなのでしょう。Javaによって大衆がガベージコレクションや例外処理のありがたさに初めて気が付いたのと似ているといえるかもしれません。

+

紹介された経緯からか、XMLとJavaがひとまとめに語られることが多いのですが、実はXMLはスクリプト言語に向いています。XMLの処理は本質的にはテキスト処理ですし、XMLの属性や中身(CDATA)には型の情報がありませんから、型を厳密に考えなくてもよい動的言語のほうが都合がよい場合が多いのです。

+

-30zw RubyでXML処理を行おうという人も多く、RAAをXMLというキーワードで検索するとなんと55個のプロジェクトが見つかります(2003年4月5日現在)。そのうち、XMLを読み書きするものに限定すると表25.1のようになります。

+ +
+

表25.1●Ruby用XMLパーサー

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
XMLパーサー説明
libxmllibxmlの拡張ライブラリ
nqxmlpure Ruby XMLパーサー
rexml定番XMLライブラリ(1.8で標準添付予定)
xml-simplePerlのXML::SimpleのRuby版
xmlparserexpatの拡張ライブラリ
xmlscan高速pure Ruby XMLパーサー
libgdome-rubyDOMレベル2 Core API(拡張ライブラリ)
mwdomDOMレベル2パーサー + ライタ
xampl-ppXML pullパーサー
+
+

なんでこんなにあるのって感じですが、これはおそらくは発展の過程の1つで、次第に収束していくのではないかと思います。現在はREXMLがかなり広く使われているようです。また、REXMLをベースにしてより使いやすいAPIを提供するライブラリ(xml-simplexml-configfile)も登場してきています。

+

RubyとXMLについては『Ruby de XML』(オーム社、ISBN4-274-06500-6)というローマ字読みするとそのまんまなタイトル(フランス語だとdeは英語のofですから「XMLのRuby」って意味でちょっとおかしいですけど)の書籍が出ていますので、そちらも参照してみてください。

+
+
+

YAML

+
+

XMLの次はYAMLです。YAMLについて最初に聞いたのがいつだったのかはっきり覚えていませんが、たぶん去年の夏頃だったのではないかと思います。そのとき感じたのは「ああ、またXMLの亜流か」という正直あまり期待しない気持ちでした。

+

XMLというのはSGML流の(HTML流と言ったほうが通じるかも)、

+
+
<TAG attr="attribute">.....</TAG>
+
+

という形式で、とにかく冗長で見にくいので、それを改善するXMLの別記法がたくさん考え出されていたからです。そのような記法には行ベースのPYXやS式ベースのSXMLがあります。ですから、YAMLもそのような別記法だと早とちりしてしまったわけです。

+

というわけで、最初はあまり興味を持っていなかったYAMLだったのですが、去年のRubyConf(2002)でYAMLの話を聞いてそれがまるっきりの誤解だったことが明らかになりました。

+

YAMLはYAML Ain’t Markup Language(YAMLはマークアップ言語じゃない)の略です。ありがちな「Yet Another」ではないんですね。発音は「やむる」、アメリカ人っぽく発音すると「やむぅ」でしょうか。名前が示すようにYAMLはマークアップ言語ではありません。もともと、PerlのInline.pmを開発していたBrian Ingarsonがデータのシリアライズに使えるフォーマットとして考えついたものなのだそうです。YAMLはプラットフォーム非依存のデータシリアライズフォーマットで、表現はテキスト形式を使っているのでプラットフォームのアーキテクチャに依存せず、人間にも読みやすく、編集しやすくなっていますし、また、Perl, Ruby, PythonでAPIが提供されていますから、プログラミング言語を超えてデータの受け渡しが可能です。

+
+

リスト25.1はYAMLのサンプルです。YAMLの文法はあとで紹介しますので、ここでは雰囲気を感じてください。

+
+

リスト25.1●YAMLサンプル

+
title: Escape of the Unicorn
+animations:
+  - title: background sky
+    author: Justyna
+    frames:
+      - file: bg_sky_1.png
+        ms:   500
+      - file: bg_sky_2.png
+        ms:   500
+  - title: background water
+    author: Jacek
+    frames:
+      - file: bg_water.png
+        ms:   300
+      - file: bg_water1.png
+        ms:   200
+      - file: bg_water2.png
+        ms:   200
+      - file: bg_water3.png
+        ms:   300
+      - file: bg_water2.png
+        ms:   200
+      - file: bg_water1.png
+        ms:   200
+
+
+

文法が説明されなくても、データとしてすんなり読めますよね。比較のため、これをXMLで表現するとリスト25.2のようになります。

+
+

リスト25.2●YAMLサンプルと等価なXML

+
<title>Escape of the Unicorn</title>
+<animations>
+  <animation>
+    <title>0 background sky</title>
+    <author>Justyna</author>
+    <frames>
+      <frame><file>bg_sky_1.png</file><ms>500</ms></frame>
+      <frame><file>bg_sky_2.png</file><ms>500</ms></frame>
+    </frames>
+  </animation>
+  <animation>
+    <title>1 background water</title>
+    <author>Jacek</author>
+    <frames>
+      <frame><file>bg_water.png</file><ms>300</ms></frame>
+      <frame><file>bg_water1.png</file><ms>200</ms></frame>
+      <frame><file>bg_water2.png</file><ms>200</ms></frame>
+      <frame><file>bg_water3.png</file><ms>300</ms></frame>
+      <frame><file>bg_water2.png</file><ms>200</ms></frame>
+      <frame><file>bg_water1.png</file><ms>200</ms></frame>
+    </frames>
+  </animation>
+</animations>
+
+
+ +

わからないことはないけど(Marshalの生バイナリデータに比べれば)、ごちゃごちゃしてますよね。YAMLのほうがずっといい。

+

YAMLの利点はすっきりしているだけではありません。YAMLはXMLをメタ・データフォーマットとして使うときの欠点の多くを克服しているのです。

+

すでに述べたようにもともとXMLはテキストのマークアップ言語であるSGMLから派生しているので、データ表現として考えるといくつも欠点があります。

+
+

冗長

+

XMLは開始タグと終了タグの両方を持ち、表現がかなり冗長です。個人的には人間にもあまり読みやすくないと思うのですが、それはともかく、XMLをデータフォーマットに使ってデータ表現の分量が増えるっていうのは、通信量や記憶容量の増加につながるうれしくない性質です。

+

一方、YAMLは「-」「:」「|」などの記号とインデントを使って、すっきり見やすいだけでなく、データ量の削減も実現しています。

+

解析が難しい

+

行単位で解析できない上、任意にネストするXMLはプログラム的にかなり処理しにくいフォーマットです。また、マークアップという性質が残っているので、データ表現として考えるとやや不自然なところがあります。

+

一方、YAMLは基本は行単位ですし、もともとデータ表現に特化していますから、APIも自然です。

+

型情報がない

+

XMLの起源はテキストマークアップですから、データ型の情報は外部から与えてやる必要があります。たとえばある属性の値は整数であるとかは、プログラムのほうで解釈してやる必要があります。

+
+

一方、YAMLでは型情報はデータフォーマットの一部として最初から含まれていますから、外部から型を教えてやったり、明示的に変換したりする必要はありません。

+
+

データ表現にも使えるマークアップ言語のXMLとデータ表現専用のYAMLとを同列に比較してはいけない部分はあるのですが、データ表現という用途に限定した場合にはYAMLの圧勝といえるでしょう。忘れてはいけないのはXMLの現在の用途の多くがYAMLでカバーできるデータ表現だということです。

+
+
+

YAMLの文法

+
+

YAMLはデータ表現のための比較的シンプルな文法のデータフォーマットですが、それでも全部解説すると限られた誌面には収まりません。ここではYAMLの文法の概要を簡単に紹介しておきましょう。

+

まず、データの繰り返し(配列)は先頭に「-」を置いたものの並びです。ですから、

+
+
- foo
+- bar
+- baz
+
+

は配列["foo", "bar", "baz"]になります。ネストはインデントで表現します。

+
+
- foo
+-
+  - bar
+  - baz
+
+

["foo", ["bar", "baz"]]になります。それからマッピング(ハッシュ)は「:」で表現します。

+
+
foo: 1
+bar: 2
+baz: 3
+
+

{"foo"=>1, "bar"=>2, "baz"=>3}というハッシュを表現します。複数行に渡るテキストは「|」か「>」を使います。

+
+
- |
+  これは複数行テキストです。
+  改行もそのままです。
+- >
+  これも複数行テキストです。
+  こちらは改行が空白に置き換わります。
+
+

そうそう、YAMLデータはUnicode(UTF-8)で記述することになっています。日本語を含むテキストを用意するときは注意してください。

+

あと、いくつかの基本的データ型があります。

+
+
    +
  • nil     ~, nil
    +
  • +
  • boolean true, false, +, -
  • +
  • integer 0, 1, 2, 100,000(コンマは整数の一部)
  • +
  • float   1.0, 1.23e23
  • +
  • time    2003-05-08 00:49:38.634752 +09:00
  • +
  • date    1965-04-14
  • +
+

これらのパターンにマッチしないデータは文字列として扱われます。逆にこれらのパターンにマッチするデータを文字列として扱うためにはデータの前に“!str”と書きます。つまり、

+
+
- 2003-04-14
+
+

Dateオブジェクトを1つ含む配列と解釈されますが、

+
+
- !str 2003-04-14
+
+

"2003-04-14" という文字列を要素とする配列になります。

+
+
+

yaml.rb

+
+

このYAMLフォーマットを読み書きするのがyaml.rbです。Debianにはyaml.rbのパッケージ(libyaml-ruby)があるのでそれをインストールするだけです。それ以外では、

+
    +
  • http://yaml4r.sourceforge.net/

  • +
+

からリンクをたどってtar.gzファイルをダウンロードして、適当なディレクトリで展開した後、root権限で、

+
+
# ruby install.rb
+
+

を実行するとインストールできます。

+

yaml.rbにはたくさんの機能があるのですが、基本的なものは以下の2つです。

+
+

Kernel#to_yaml

+

すべてのオブジェクトに追加されるメソッドで、そのオブジェクト(と、そこから参照されるオブジェクト)をYAMLで表現した文字列を返します。

+

YAML::load(yaml)

+

YAML入力(文字列またはIO)をオブジェクトに戻します。

+
+

たとえば、リスト25.1のYAMLデータをオブジェクトに変換するには以下のようにします。

+
+
require "yaml"
+data = YAML::load(open("unicorn.yaml"))
+
+

なんと簡単な。これで取り出せるデータはリスト25.3のようになります。

+ +
+

リスト25.3●yaml.rbで読み込んだデータ

+
{"title"=>"Escape of the Unicorn",
+"animations"=>
+  [{"title"=>"background sky",
+    "author"=>"Justyna",
+    "frames"=>
+     [{"ms"=>500, "file"=>"bg_sky_1.png"},
+      {"ms"=>500, "file"=>"bg_sky_2.png"}]},
+   {"title"=>"background water",
+    "author"=>"Jacek",
+    "frames"=>
+     [{"ms"=>300, "file"=>"bg_water.png"},
+      {"ms"=>200, "file"=>"bg_water1.png"},
+      {"ms"=>200, "file"=>"bg_water2.png"},
+      {"ms"=>300, "file"=>"bg_water3.png"},
+      {"ms"=>200, "file"=>"bg_water2.png"},
+      {"ms"=>200, "file"=>"bg_water1.png"}]}]}
+
+
+

YAMLデータとロードされたオブジェクトを見比べると、配列、ハッシュ、文字列、数値などが「見かけどおり」にロードされているのがわかるでしょう。こうやって配列やハッシュの形で取り込んでしまえば、あとは自由に操作・加工できますよね。

+

また、YAMLはプラットフォーム非依存ですから、YAMLデータをRubyからPerlへ、PerlからPythonへ、というような移動も自由自在です。

+
+
+

まとめ

+
+

ここまでで誌面が尽きてしまいました。Marshalの代わりにYAMLを使ったPStore互換のYAML::Storeとか、yaml.rbより100倍高速とうわさされる新ライブラリSyckとかYAML周りにはまだまだホットな話題がたくさんです。

+

XMLとYAMLについては実際の応用についても触れたいので、できれば来月も続けて解説しようと思います。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-056.xhtml b/docs/vol1/xhtml/p-056.xhtml new file mode 100644 index 0000000..4358d0b --- /dev/null +++ b/docs/vol1/xhtml/p-056.xhtml @@ -0,0 +1,79 @@ + + + + + +第25章 XMLとYAML + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 迷惑メールをやっつけろ

+
+

私は毎日数百通のメールを受け取ります。そのうちの大部分はRuby関連を始めとするメーリングリストからのものです。要するに一日のかなりの割合をメールの読み書きに費やしているわけです。おそらくはプログラミングしている時間よりも長いでしょう。しかし、ここのところspamとか迷惑メールと呼ばれる不要なメールの割合が次第に増えてきました。

+
    +
  • 出会い系サイトの紹介

  • +
  • アダルトグッズの販売

  • +
  • spam用アドレスの販売

  • +
  • 意図不明でサイトに誘導するもの

  • +
  • ウィルス、ワーム

  • +
  • 「量子論は間違っている」

  • +
  • 詐欺(私はコンゴの富豪の未亡人で……)

  • +
+

きりがありません。こんなもので商売になると思う人がいるのが信じられませんが、いずれにせよこんなものを読まされて人生の貴重な時間を浪費するのは耐えられません。そこで少々対策を施すことにしました。

+

私は会社においてあるサーバーにすべてのメールを集めて、そこからPOPで自分のノートパソコンにメールを取り込んでいます。POPで取り込む際にfetchmailとprocmailを使ってMaildirフォルダに分類し、それをローカルホストのIMAPサーバーを経由してcmailで読んでいます(図25.1)。

+
+ +
+ fig2501 +
+

図25.1●迷惑メール対策

+
+

こんなことをしているのは、

+
    +
  • メールの取得は安定的に(会社のサーバー)

  • +
  • 1メール1ファイルを実現したい(Maildir)

  • +
  • cmailを使いたい

  • +
+

というニーズを実現するためです。

+ +

迷惑メールを撃退するために、まず私が始めたことは、サーバーにspamassassinというソフトを導入したことです。これは迷惑メールの持つ特徴をルールによって検出し「spamらしさ」を判定したうえで、ある一定以上のspamスコアを持つメールを排除するというものです(実際の排除はprocmailが行います)。このソフトの効力は絶大で、しばらくは私に届く迷惑メールが激減しました。特に英語のspamを見ることはなくなりました。

+

ところがspamassassinも万能ではありません。まず、第1にspamassassinは英語圏で開発されたもので、ルールも英語の迷惑ルール対象に用意されていますから、日本語の迷惑メールをほとんど検出できないことです。第2にはspam業者も学習してきて単純なルールはすり抜けるようなメールを用意するようになってきたのでした。

+

そこに登場したのが「人気の言語を作るには」という論文で知られるPaul Grahamの「a Plan for spam」という論文です。これは要するにメールをBayesianフィルタで統計的に処理することで迷惑メールかどうか判定しよう、というものです。自分で作ってもよかったのですが、Bayesian処理の数学的側面に負けてしまったので(笑)、既存のものを使うことにしました。私が選んだのはspamprobeというソフトです。日本語には対応していないようだったので少々不安だったのですが、試しにしばらく運用したところ問題なく日本語の迷惑メールも検出できるようです。

+

Bayesianフィルタは学習によって成長します。単語の間の関連や頻度を学習結果と比較することによってメール全体のスコアを決定するという仕組みです。そこで今までに蓄えた「正しいメール」と「迷惑メール」をspamprobeに食わせてやるとデータベースを作ってくれます。

+

spamprobeはノートパソコン側に設定することにしました。spamassassinをすり抜けてくるメールは微妙なので、誤判定が起きては嫌だったのと、サンプルを学習させるのに手元のほうが便利だったからです。spamprobeが計算したスコアを使ってノートパソコン側のprocmailで迷惑メールを「ゴミ箱フォルダ」にまとめることにしました。

+

さて、これでほとんどの迷惑メールが退治できるようになりました。通販も、詐欺も、ウィルスもきちんと排除します。これで一件落着と思ったのですが、ただ1つだけ問題が残っていました。実は私のところにはアンケートサイトからのメールや、通販サイトからのメールも来るのですが、これらは迷惑メールと非常に似た構造を持っています。これらを迷惑メールと区別しなければなりません。メール分類ソフトにはよく「ホワイトリスト」という「このアドレスは大丈夫だよ」というような機能が付いているのですが、spamprobeにはそのような機能はないようです。

+

そこでどうしたかというと、bogofilterという別のBayesianフィルタソフトを使って自分にとって有用なメールをspamprobeに渡す前に分別することにしました。これで完璧です。

+

しかし、構築したときは段階的に行ったので気にもしませんでしたが、サーバー側のspamassassinと合わせて全部で3段にもフィルタをかけるのは少々異常かもしれません。

+

ところで、Bayesianフィルタはサンプルをたくさん与えて学習させるほど賢くなります。ソフトウェアがだんだん頭が良くなっていく様子を見るとなんだかかわいく感じてしまいます。昔の「たまごっち」のようなイメージなんですが、感情移入しすぎでしょうか。

+

私のフィルタたちは今日もメールを餌にして成長しています。

+
+ +
参考文献
+

smapassassin
+http://www.spamassassin.org/

+

「a Plan for spam」
+http://www.paulgraham.com/spam.html
+http://www.shiro.dreamhost.com/scheme/trans/spam-j.html(和訳)

+

spamprobe
+http://sourceforge.net/projects/spamprobe/

+

bogofilter
+http://sourceforge.net/projects/bogofilter/

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-057.xhtml b/docs/vol1/xhtml/p-057.xhtml new file mode 100644 index 0000000..1ee4885 --- /dev/null +++ b/docs/vol1/xhtml/p-057.xhtml @@ -0,0 +1,318 @@ + + + + + +第26章 XMLとYAML(その2) + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay26 +
+

+初等Ruby講座
+XMLとYAML(その2) +

+
+

[Linux magazine, 2003年7月号]

+
+

先月に引き続き「XMLとYAML」です。というか、YAMLの宣伝ですね、これは。当時はYAMLの知名度が圧倒的に低かったので、このように宣伝する必要があったわけですね。その甲斐あったか、YAMLは各方面に使われるようになりましたが、柔軟性が高すぎたのか、結局はJSONのほうがよく使われるようになりましたね。やはり、インデントに意味をもたせる文法が良くなかったか。

+

「Ruby開発日記」は、「Matzにっき」についてです。2003年5月から書いていたんですねえ。だいぶ長いこと更新してきたのですが、X(旧Twitter)などのより簡単な情報発信に流れてしまい、結局、中断しています(最後のエントリは2020年8月)。資料的価値もあるので、継続したほうが良いと思うんですがねえ。

+
+
+

今月は先月に引き続きXMLとYAMLについて学びます。まず、似て異なるXMLとYAMLについて、その共通点と違いのそれぞれについて考えてみましょう。それからXML, YAML双方の実際の活用方法について紹介します。

+
+
+

XMLとYAMLの違い

+
+

先月号が発売されて「XMLとYAML」の記事を読まれた方の中に、「なぜXMLとYAMLを比較するのか。XMLとYAMLは本質的に違うものだ」という声があったと聞いています。確かにそのとおりです。XMLとYAMLは違うものです。

+

XMLは枠組みを提供し、その応用によって、文章のマークアップもできれば、データの表現もできれば、アルゴリズムの記述もできます。具体的にはDTDやスキーマというものと組み合わせることで、いくらでも意味を与えることができます。そういう意味で、XMLは言語の言語、あえてたとえればアルファベットのようなものです。アルファベットに文法が追加されて英語やフランス語、ドイツ語になるように、XMLに意味が追加されて、XHTML, SVG, Docbookなどになるのです。

+ +

一方、YAMLにはそんな汎用性はありません。YAMLは最初から「データ表現」を目的としてデザインされた言語です。シーケンス、マッピングなどの意味は固定されていて変えられません。ですから、用途的に同じレベルなのはXMLではなく、その応用であるSOAPとかになると思います。

+

XMLの表現できる広い広い世界が一部YAMLがカバーする世界と重複していると表現してもよいでしょう。

+

それなのになぜ、先月といい今月といい「XMLとYAML」などと2つを対等に並べるタイトルを付け、比較するような記事を書いたのでしょうか。もちろん、これにはわけがあります。

+

まず第1の理由はXMLの流行により、XMLが最適でない分野にまで乱用されている事実をなんとかしたいという思いです。XMLはeXtensible Markup Languageの略であり、もともとはSGMLというドキュメントに構造を付加するマークアップ言語をコンピュータで処理しやすいように単純化したものです。しかし、今や世の中のXMLデータのうち、人間が読むことが期待されているものがどれだけあるでしょう。あまりにも複雑で読むことができない(より正確には、たとえ読めても理解できない)データに、人間が読むためにデザインされた冗長なタグ情報を付けることにどれだけ意味があるのか疑問です。

+

諸般の事情があるのでしょうが、最近ますます「適材適所」の原則がないがしろにされているように思います。

+

私が勤務しているネットワーク応用通信研究所でもXMLは広く使われています。そして、私が見る限りその使用例のほとんどはXMLである必然性のないものです。そのほとんどはデータファイルや設定ファイルのフォーマットとしてXMLを使っています。さらに悪いことにはその半分くらいまでにはDTDやスキーマは明確には定義されておらず、DOMやSAXを使ったプログラムによって暗黙に定義されています。

+

XMLを選択すればDOMやSAXなどが構文解析してくれるのでプログラマーは手が抜けてありがたいという気持ちは私にも理解できます。しかし、そろそろ私たちは、そういう単なる設定ファイルやデータファイルにはXMLはあまり向いていないという事実を直視すべきではないでしょうか。

+

とはいうものの、他の選択肢も示さずにそんなことを主張するのは無責任です。そこでYAMLの登場です。YAMLなら、

+
    +
  • XMLよりはコンパクトな表記

  • +
  • (スキーマを含んでいるので)単なるwell formed XMLよりは明確な意味

  • +
  • ドキュメントの読み書きを行う標準的なAPI

  • +
+

など、XMLを使うのはあんまり向いていないんじゃないかという分野で、XMLと同等のうれしさを実現できます。足りないのは知名度ですね。

+

これがもう1つの理由になります。つまり、YAMLはまだまだ知られていないので、この機会に宣伝したいということです。すでに述べてきたようにYAMLはXMLより後から登場していますし、データ表現という目的に合わせて最適化されていますから、そういう分野ではXMLよりもずっと優れています。それなのに知られていないのはもったいないでしょう?

+
+
+ +

XMLとYAMLの共通点

+
+

これだけ違う違うと言いながら、この2つには重要な共通点があります。それは「人間が読む(読める)ことを前提にしている」点です。ひと昔前ならば、計算機のCPUパワーやディスク容量、ネットワークの大域幅は重要な資源なので、これを浪費しないことが重要でした。よって、なるたけこれらを無駄にしないために、データ表現はコンパクトなものが求められていました。

+

ところがどうでしょう。現代においては少々浪費したほうがよいのではないかというくらい潤沢にこれらの資源が手に入ります。こんな時代にあって昔のようなケチケチした態度は無用です。それがXMLやYAMLのようなテキスト指向のデータフォーマットが誕生した背景でしょう。

+

このような思想は実は昔からありました。たとえばメール転送プロトコルSMTPやネットニュースのプロトコルNNTPなどを始めとするインターネットを支えるプロトコルのほとんどは相当古いものからテキスト指向でした。それが時代の背景によって後押しされたと考えることができるでしょう。

+

このようなテキスト指向のフォーマットには非常によいところがあります。つまり、バイナリフォーマットと違い、人間の目で見てわかる(ことが多い)ということは、そのフォーマットを扱う専用のプログラムがなくても処理できるということです。

+

たとえば、私が本棚から発掘したフロッピーディスクに昔々父親が残したMultiplan(マイクロソフト製スプレッドシートプログラム、Excelの先祖と思えばよい)のファイルが入っていたとしましょう。現在、ちゃんと動作するMultiplanを入手することは困難ですから、このファイルの内容を読むためには大変な苦労が必要でしょう。

+

このファイルの内容がプレーンテキストあるいはそれに近い形式(たとえばCSV)で書いてあれば、もっと簡単に救済できたでしょう。

+

このようにバイナリフォーマット、特に商用ソフトウェアのフォーマットは内容がいつまで読めるか保証されないという不安があります。XMLやYAMLのようなテキスト指向のフォーマットならばそのような心配はありません。

+
+
+

YAMLの欠点

+
+

YAMLも完璧ではありません。正直いうとYAMLにもいくつかの欠点があります。それが許容できるかどうかは状況によって異なると思います。欠点と制約を知り、自分の状況でそれがどれだけ影響するかを判断するのが、プログラマーの正しい態度でしょう。

+

日本人にとってYAMLの最大の欠点は文字コードです。YAMLの仕様では文字コードはUnicode(UTF-8)しか許容しません。日本人としてはEUC-JPやらシフトJISやらで記述したいところでしょう。これを「英語圏の横暴だ」と見るか、あるいは「これからはUnicodeでしょ」と見るかで感じ方が変わってくるでしょう。

+

一方、XMLは先頭のXML宣言の中で明示的に文字コード(エンコーディング)を指定することができます(デフォルトはUnicode)。将来的にはYAMLも何らかの方法でエンコーディング指定ができるようになるといいなあ。ならないかなあ。

+
+

もう1つの欠点は、YAMLのインデントベースの文法は構造そのものの変化に弱いことです。たとえばXMLならアトリビュートを加えるだけで済む変化(リスト26.1(a))が、YAMLだと少々大げさになります(リスト26.1(b))。また、終端ノードを非終端ノードに変更するときもXMLよりもYAMLのほうが変化が大きいのがわかるでしょう(リスト26.1(c)および(d))。

+

数行程度の簡単なものならば、どちらも大差ないと考えることができますが、より構造が複雑なデータについてはコストが高くなります。

+
+

リスト26.1●XMLとYAMLの構造変化の対応

+
#シリアライズフォーマットの変更
+(a) XML
+    <foo>bar</foo>
+      ↓
+    <foo targetId="foo_3">bar</foo>
+
+(b) YAML
+    foo: bar
+      ↓
+    foo:
+      targetId: foo_3
+      content: bar
+
+# グラフ上で終端ノード→非終端ノードへの変更
+(c) XML
+    <foo><bar/><baz/></foo>
+      ↓
+    <foo><bar>1</bar><baz/></foo>
+
+(d) YAML
+    foo: [ bar, baz ]
+      ↓
+    foo:
+      - bar: 1
+      - baz
+
+
+

もっとも、私自身はこの問題についてあまり重要視していません。というのは、私はデータ構造の変換というものは、同じ構造の範囲内でちょいちょいといじるのと違って、かなり大げさなものであると考えていて、そのような大げさな変更を不確かな人間に頼るより、ツールで行うべきだと考えています。いったんデータを読み込んで、プログラムで構造を変化させたうえでもう一度吐き出せば、問題なしです。しかも、YAMLはインデントに意味があり、機械出力したものでもさほど読みにくくならないといううれしさがあります。これはプログラムが出力するXMLファイルが、適切にインデントや改行を入れてくれないため実質読めないものが多いのと対照的です。

+ +

なお、このYAMLの欠点の項については、私のWeb日記に対してのmakiさんこと高橋征義さんと、なひさんことなかむらひろしさんのツッコミを参考にさせていただきました。

+
+
+

YAMLの応用

+
+

YAMLの実際の使用例としては以下のようなものがあります。

+
    +
  • 設定ファイル

  • +
  • pstoreの代用(YAML::Store

  • +
+

それに加えて、メタデータとしての使い方を紹介しましょう。これは最近私の同僚によるプロジェクトで使われた例です。そのプロジェクトでは、システムはセンサーの付いたコントローラとそれらを管理するサーバーからなっています。私たちはサーバーのソフトウェアの開発を請け負ったのですが(ご存じない方のために。私の会社はLinuxをベースにしたシステムインテグレーションを行っています)、そのコントローラとサーバー間の通信にはかなり複雑なプロトコルが用いられていました。しかも、そのプロトコルは今後コントローラのバージョンアップによって追加・拡張される可能性がありました。

+

これを全部こつこつプログラムするのは大変です。そこで、同僚はまずプロトコルをYAMLで記述し、そこからプロトコルハンドラのプログラムを自動生成することにしました。プロトコルを表現したデータは以下のような感じです(前田修吾)。

+
+

リスト26.2●プロトコルのメタデータ

+
- name: DateRecord    # 定義するデータ型の名前 (Rubyのクラス名としてvalidなもの)
+  type: record        # データ型のタイプ (record|request|response)
+  entries:            # データ型の項目
+    - name: year      # 項目名 (Rubyのメソッド名としてvalidなもの)
+      type: bcd       # 項目の型 (integer|bcd|binary(string)|ユーザー定義データ型)
+      length: 2       # 数値桁数
+    - name: month
+      type: bcd
+      length: 2
+    - name: day
+      type: bcd
+      length: 2
+- name: TimeRecord8
+  type: record
+  entries:
+    - name: hour
+      type: bcd
+      length: 6
+    - name: min
+      type: bcd
+      length: 2
+- name: DailyReportRequest
+  type: request
+  code: 0x00                  # 種別コード (sub-codeもいるかも)
+  entries:
+    - name: num_records
+      type: integer
+      length: 2
+    - name: start_date
+      type: DateRecord
+- name: DailyReportResponse
+  type: response
+  code: 0x01
+  entries:
+    - name: num_records
+      type: integer
+      length: 2
+    - name: reports
+      type: string
+
+
+
+

YAMLの応用としては、この他にもXML-RPCならぬYAML-PPCなどいろいろ考えられると思います。

+

ちょうどこの原稿を書いている最中に、Ruby 1.8.0の正式リリースにはYAML処理ライブラリが(高速版パーサーSyckも含めて)含まれることが決まりました。これでますますYAMLの取り扱いが簡単になりますね。

+
+
+

XMLによる設定ファイル

+
+

しかし、いろいろYAMLついて紹介してきましたが、今現在でのYAMLの最大の欠点といえば、やはり知名度のなさでしょう。上記のプロトコルのメタデータのような一種の開発ツールとして使うならともかく、ビジネス目的のプロトコルに使う場合には「YAML? なにそれ?」と顧客に一蹴されそうです。

+

また、YAMLをサポートしているのは、現時点ではRuby, Perl, Pythonだけですから、たとえばJavaなどとやりとりしたい場合には使えません。そんな場合には、変な苦労をするよりもXMLを使ったほうが現実的というケースはいくらでもあるでしょう。世の中は技術論だけでは済まないのです。

+

そこで、そんな場合にもXMLを簡単に扱うためのライブラリxml-configfileを紹介します。

+

XMLを扱うライブラリとしてはREXMLが定番なのですが、これはXMLのほぼフル機能をカバーするために少々複雑なライブラリになっています(そういえば、REXMLも1.8.0での標準添付が決まりました)。xml-configfileREXMLを利用して、設定ファイルのような簡単なXMLファイルからデータを取り出すライブラリです。xml-configfileは書き出しはサポートしていません。

+
+

xml-configfileをインストールするためには、まずREXMLをインストールします。原稿執筆時点での最新版は、

+
    +
  • http://www.germane-software.com/archives/rexml_2.5.8.tgz

  • +
+

でした。これを展開したディレクトリで、

+
+
# ruby bin/install.rb
+
+

とすれば(root権限が必要です)、REXMLのインストールは完了です。REXMLについては『Ruby de XML』(オーム社、ISBN4-274-06500-6)に解説されています。

+

次に、本命のxml-configfileをインストールします。最新版は、

+
    +
  • http://www.maik-schmidt.de/projects/xmlconfigfile/dist/xmlconfigfile_0.9.0.zip

  • +
+

をダウンロードします。それから、ダウンロードしてきたファイルを展開します。zipファイルはunzipプログラムで展開できます。

+
+
# zip xmlconfigfile_0.9.0.zip
+# cd xmlconfigfile_0.9.0
+# ruby install.rb config
+# ruby install.rb setup
+# ruby install.rb install
+
+

でインストールは完了です。実際のインストールする部分にはルート権限が必要です。

+

では、実際にXMLファイルを読み込んできましょう。たとえば、リスト26.3のようなXMLデータを読み込むとしましょう。

+
+

リスト26.3●サンプルXMLデータ

+
<!-- Sample XML file. -->
+<?xml version="1.0" encoding="iso-8859-1"?>
+<config>
+ <version>1.7</version>
+ <splash-screen enabled='yes' delay='5000'/>
+ <greeting lang="en">Hello, world!</greeting>
+ <greeting lang="de">Hallo, Welt!</greeting>
+ <db env="test">
+   Standard connection.
+   <pwd>tiger</pwd>
+   <driver>
+     <vendor>MySql</vendor>
+     <version>3.23</version>
+   </driver>
+ </db>
+ <db env="prod">
+   <pwd>secret</pwd>
+   <driver>
+     <vendor>Oracle</vendor>
+     <version>8.1</version>
+   </driver>
+ </db>
+</config>
+
+
+ +

このデータがconfig.xmlというファイルに入っていたとすると、読み込みのためには、まず、

+
+
require 'xmlconfigfile'
+conf = XmlConfigFile.new('config.xml')
+
+

これでconfオブジェクトを通じて、XMLファイルの中身を読むことができます。たとえばバージョン情報は、

+
+
conf.get_string("/config/version")
+
+

で、"1.7" という文字列が得られます。引数に与えるのはXPATHという形式で、XMLの「ノード」を指定する記法です。XPATHにおいて、

+
+
/conf/version
+
+

<config> ノード中の <version> ノードを意味します。get_string[]で代用することができますから、

+
+
conf["/config/version"]
+
+

でも"1.7"を取り出せます。

+

XMLには型情報がないので、読み込み側でほしい型を指定する必要があります。ですから、同じ情報を文字列でなく、実数でほしい場合には、

+
+
conf.get_float("/config/version")
+
+

と指定します。型を指定して取り出すメソッドを表26.1に示します。

+
+

表26.1●XmlConfigFileの型指定メソッド

+ + + + + + + + + + + + + + + + + + + + + +
メソッド説明
get_string(path)文字列
get_int(path)整数
get_float(path)実数(浮動小数点数)
get_boolean(path)真偽値
+
+

整数や実数を指定した場合、実際のXML値が変換できない形式であった場合にはArgumentError例外が発生します。

+

真偽値が要求された場合、"yes""on", "true", "1" などは真に、"no", "off", "false", "0" などは偽と見なされます。

+

XPATHでは属性は "@" を付けて指定します。ですから、/config/splash-screenノードのdelayという属性値を指定するXPATH表現は、

+ +
+
/config/splash-screen/@delay
+
+

になります。

+

複数のレコードを属性値で選択することもできます。

+
+
/config/greeting[@lang='de']
+
+

は「複数あるgreetingノードのうち属性値が 'de' のもの」を意味します。ですから、このXPATHはドイツ語のあいさつ 'Hallo, Welt!' を含むノードを指定していることになります。

+

最後に、XML設定ファイルから複数の値を一気に取り出すためにはget_parametersメソッドを使います。

+
+
conf.get_parameters("/config/db[@env='test']")
+
+

のように指定すると、get_parametersメソッドは属性envの値がtestであるdbノードの内容をハッシュとして返します。

+
+
{
+  "db.driver.vendor"=>"MySql",
+  "db.driver.version"=>"3.23",
+  "db.pwd"=>"tiger"
+}
+
+

xml-configfileにはその他にも省略時のデフォルト値、環境変数の読み込み、相対パス指定など便利な機能があるのですが、ここではすべては解説できません。詳しい使い方は、ホームページ、

+
    +
  • http://www.maik-schmidt.de/projects/xmlconfigfile/index.html

  • +
+

に紹介されています、英文ですが。まあ、作者はドイツの方ですので、英語であるだけありがたいと考えるしかないですね。

+
+
+

まとめ

+
+

今回は先月に引き続きXMLとYAMLについて学びました。XMLもYAMLもRubyのライブラリを用意すれば簡単に操作することができます。試しに使ってみてはいかがでしょう。そのときには、ちょっと考えて適材適所を心がけていただければ幸いです。それでは、また来月。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-058.xhtml b/docs/vol1/xhtml/p-058.xhtml new file mode 100644 index 0000000..0781423 --- /dev/null +++ b/docs/vol1/xhtml/p-058.xhtml @@ -0,0 +1,80 @@ + + + + + +第26章 XMLとYAML(その2) + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ うぇぶ日記はじめました。

+
+

皆もすなる日記といふものを、まつもともしてみむとて、するなり。

+

いや、そのまんまなんですが、とうとう始めました、うぇぶ日記。

+
    +
  • http://www.rubyist.net/~matz/

  • +
+

聞くところによると日本では昔から「Web日記」というものが広く使われてきたようです。Ruby関係者(と呼んでいいんだろうか)の日記には興味深く目を通すものもいくつもありました。

+

また、最近ではツッコミを許す日記も出てきて、日記間でリンクを張ったり、ツッコミあったりで楽しそうだなあ、なんて見てました。とはいうものの、なんか抵抗があって自分では書く気にならなかったんですよ。どうも私はオールドタイプで、新しいテクノロジーに順応するのがすごく遅いみたいなんです。この間買ったHDDレコーダのリモコンも使いこなせないし。

+

え? 年寄りだって?

+

確かにそうかも。Windowsさえちゃんと使えないし、ウィンドウマネージャはいまだにfvwmだし。昔使ってたolwm(オープンルックウィンドウマネージャ)はさすがにやめたけど。

+

そんな私が日記を書き始めたのには、何か特別な理由があったかというと、そうでもなくて、特別じゃない小さな理由の積み重ねによるものだったりします。

+

まず、最初の理由になったものは、

+
    +
  • http://www.ruby-lang.org/

  • +
+

のtDiary化でした。今までtDiaryってのは「Rubyのキラーアプリかも」とは思いながらも、実際に自分で使ってみることはありませんでした。しかし、Rubyホームページが採用したのですから、使わないわけにはいきません。実際に使ってみると結構簡単ですし、使い勝手も見栄えもなかなかすばらしいです。感動しました。たださん、ありがとう。

+

次に理由になったのが、tdiary-modeです。私は根っからのEmacsユーザーで、メールもニュースも原稿書きも、コード書きも、デバッグもみ〜んなEmacs上で行うのです。特に文章を書くという行為はEmacsなしには不可能と言っても言い過ぎでないくらい依存しています。体にEmacsのキー操作が染みついています。どのくらい染みついているかっていうと、昔Netscapeを使いながら無意識にEmacsのカーソル移動を使ってて、1時間くらいしてから初めて自覚して驚いたくらいです。

+

逆にブラウザのテキストフォームに文章を入力するのは大嫌いです。いくらMozillaでEmacsキー操作が使えるといっても、kill-regionやyankまではできませんから。あと、ispellによるスペルチェックとlookupによる辞書検索ができないのも痛いです。

+

ですから、Webの更新も当然Emacsで行いたいわけです。事実、昔のRubyホームページはHTMLファイルをEmacsを使って手動で編集していました。そんな私にtdiary-modeはまさに福音でした。これですべての苦しみから解放されるというものです。大げさすぎですか? tdiary-modeを作ってくださった、kitajさんこと、きたさんに感謝します。

+
+

それから、最後に敷居を下げてくれたのはtDiaryのRD styleでした。もともとtDiaryのエントリは「行を意識したHTML」で記述するようになっていたのですが、tDiary 1.5でスタイル機能が追加され、自分の好みのスタイルで記述できるようになったのです。そして、ありがたいことにそのスタイルの中にRDが含まれていたのです。

+

RDというのはそもそも私が最初に書いた本である『オブジェクト指向スクリプト言語Ruby』の原稿を書くときに、TeXも嫌い、変なマークアップ言語も嫌い、できるだけプレーンテキストで書きたいという欲求から、PerlのPODを参考にしてデザインしたフォーマットですから、私にとってこれ以上のものはないわけです。実際、この原稿もRDのような形式で書いたものを、編集者の皆さんが整形してくださっています。

+

こうして、tDiaryとtdiary-modeとRD styleのおかげで技術的な敷居はほとんどなくなっていたわけですが、実際に書き始めるにはもうふた押し必要でした。

+

1つは妻からの後押しでした。いや、別に彼女はWeb日記を書けと言ったわけじゃないんですが。

+

彼女は小学校4年生のときから欠かさずに日記を書いているという偉い人なので、「あなたも書きなさい」と。確かに日記を付けていれば、

+
    +
  • 忘れていた記憶がよみがえる

  • +
  • 後の世代に役立つ記録になる

  • +
+

というメリットもあります。

+

実は私も10年くらい前までは日記を付けていたのです。Emacsで。それが結婚して子供ができたり、仕事が忙しくなったりで、いつの間にか中断していました。まあ、いい機会だし、そろそろ再開しようかなあ、と思ったわけです。

+

もう1つは、情報発信です。今さら「インターネットで世界に情報発信」とかいうのも恥ずかしいのですが、考えてみれば、私のスタイルってのは、メーリングリストで質問に答えて初めて開示するということが多くて、積極的に自分から何かを伝えるということがあまりなかったように思います。

+
    +
  • 知りたかったらメーリングリストで聞け

  • +
  • あるいは私の講演を聞け

  • +
  • あるいはコードを読んで想像しろ

  • +
+

というのは、ちょっと不親切かなあ、と10年目にして反省したわけです。まあ、「プログラマーはコードで語る」って姿勢がカッコいいんじゃないかとずっと思ってきたってのは内緒ですけどね。

+

そんなこんなで、5月1日からWeb日記を書き始めたのです。この原稿を書いている時点ではまだ2週間ほどしか経っていないのですが、今のところ毎日欠かさず書けています。

+

肝心の内容はといえば、

+
    +
  • 子供に絵本を読んでやった

  • +
  • 教会に行った

  • +
+

というような個人的な内容から、

+
+
    +
  • Ruby 1.8の予定と課題

  • +
  • Riteの構想と課題

  • +
  • XML批判とYAMLの宣伝

  • +
+

のような「固い」内容までごった煮のようにつまった妙なものになっているのです。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-059.xhtml b/docs/vol1/xhtml/p-059.xhtml new file mode 100644 index 0000000..bd17097 --- /dev/null +++ b/docs/vol1/xhtml/p-059.xhtml @@ -0,0 +1,314 @@ + + + + + +第27章 エクストリーム・プログラミング + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay27 +
+

+初等Ruby講座
+エクストリーム・プログラミング +

+
+

[Linux magazine, 2003年8月号]

+
+

「エクストリーム・プログラミング」通称XPについて解説してます。20年前だとアジャイルという言葉はあっても、ソフトウェア開発フレームワークとしてのScrumはまだ誕生したばかりみたいですね。会社(ネットワーク応用通信研究所)でのXP実践の経験をまとめています。実際の経験をベースにしているので、アジャイル開発実践の記録として今でも価値のあると思います。記事中では、XPを適用したプロジェクトのリーダーの前田修吾さんにインタビューをしているのですが、彼はRubyのコミッターでもあり、頼もしい後輩です。2023年、彼はネットワーク応用通信研究所の社長に就任しました。すごい。

+

「Ruby開発日記」は、「10年後の技術者」と題して未来予測をしています。予想した10年後はとっくに過ぎていますが、予想された

+
    +
  • 死ぬ技術もある

  • +
  • OS、ネットワーク、言語は大して変化しない

  • +
  • アスペクト指向が言語取り込まれているかも

  • +
+

はほぼ当たっていると言えるでしょう。最後のアスペクト指向はすっかり聞かなくなりましたが、たとえばRubyにModule#prependが取り込まれたように、見えない形でほそぼそと生き残っています。

+

20年経っても、この傾向は変わっていないようです。

+
+
+

今月はRubyそのものではなく、Rubyを使った開発手法について学んでみましょう。今月取り上げるのは、最近話題のソフトウェア開発体制である「エクストリーム・プログラミング」です。

+
+
+ +

XPとは何か?

+
+

XPとはエクストリーム・プログラミングの略で、最近話題の開発手法、というよりも開発体制のことです。エクストリームとは「極限」「極端」という意味ですから「極端流プログラミング」とでも呼べばよいのでしょうか。

+

XPでは過去のプログラミング経験でよいと呼ばれるものを極限まで推し進めたものです。

+
    +
  • コードレビューがよいのであればいつでもコードレビューを行う

  • +
  • テストがよいのであれば全員がいつでもテストを行う

  • +
  • 設計がよいのであれば設計を日常の一部にする

  • +
  • シンプルがよいのであればシステムを最もシンプルな状態に保つ

  • +
  • アーキテクチャが重要であれば全員がいつでもアーキテクチャを定義し洗練する

  • +
  • 結合テストが重要であれば、1日数回結合テストする

  • +
  • 短いイテレーションがよいのであれば短い単位で行う

  • +
+

従来のプログラミングのやり方を経験している人にとっては、あまりに極端で「え? いつでもコードレビューを行う? そんなにムリ」とか、「いつでもテスト? そんなにテストしてどうするの?」とか疑問がわきそうな内容です。

+

しかし、XPを提唱したKent Beckは、一見無茶に聞こえるこれらが非常に有効であることを示したのです。

+
+
+

解決すべき問題

+
+

私は長らく職業プログラマーでお客さまのためのプログラムを書いてきました。フリーソフトウェアの開発にかまけてきたため期間の割には経験豊富とはいえないのですが、それでも以下のような問題をいつも抱えていました。

+
    +
  • 見積もりが当てにならない

  • +
  • ユーザーの要求がころころ変わる

  • +
  • バグが多すぎ、テストに時間がかかりすぎ

  • +
  • テストが不十分

  • +
  • システム完成後、ドキュメントを書くのが大変

  • +
+

こういう問題を抱えているのは私だけではないと思います。XPではこれらの問題は以下のようないくつかの間違った仮定のためではないかと考えます。

+
    +
  • ユーザーは自分のほしいものを最初から知っている

  • +
  • ドキュメントはシステムのあるべき姿を記述できている

  • +
  • 変更はあとになればなるほどコストが高くなる

  • +
  • なんとか動作しているコードは修正すべきではない

  • +
+
+

しかし、これらはある条件の下には真実でないかもしれないのです。私は最初にXPについて読んだとき、今まであきらめてきていた「常識」が不変のものではなかったことに気が付いてびっくりしました。

+
+
+

12のプラクティス

+
+

あまりページ数に余裕がありませんし、XPのすごさについて手っ取り早く解説するために、概念的なことではなく、実際に何をやるとどんなよいことがあるかについてまず解説しましょう。

+

XPには具体的な行動である「12のプラクティス(実践)」があります。最近新しいプラクティスが追加されたような話を聞きますが、ここではXPについて最初に解説した本である『XPエクストリーム・プログラミング入門』(ピアソン・エデュケーション、ISBN4-89471-275-X)にあげられているものを紹介します(表27.1)。

+
+

表27.1●XPの12のプラクティス

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
プラクティス説明
計画ゲーム柔軟に頻繁に計画を見直す
短期リリースシンプルなシステムを素早く構築、たびたびリリースする
メタファ比喩によるわかりやすいアーキテクチャを提示する
シンプルな設計いつもシンプルに。複雑さは積極的に取り除く
テスティング常にテストする。顧客は検収テストを書く
リファクタリングシステムの振る舞いを変えずに常にシステムを改善する
ペアプログラミングいつも二人のプログラマーが1台のマシンコンピュータに向かう
共同所有誰でもいつでもすべてのコードを変更できる
継続した結合タスクが終了するごとに1日に何度も結合テストを行う
40時間労働週40時間以上働かない。残業しない
オンサイトユーザー顧客をチームに加え、いつでも質問に答えてもらう
コーディング規約ルールに従ってコーディングする
+
+

こんなことができるのか、効果があるのか、と思われる方がいらっしゃるかもしれません。しかし、実際には正しく適用されれば、効果が出るのです。

+

ここで断っておきますが、私自身はXPについて経験豊富というほどではありません。しかし、私のチームが最近のプロジェクトで実際にXPを行い見事な成果をあげつつあります。

+

たとえば彼らはプロジェクトの言語としてRubyを選択し、Rubyのtest/unitライブラリを使って、自分たちが作るすべてのコードにテストプログラムを書きました。実際にプログラムを書く前にテストプログラムを書くのです(テスティング)。

+

これによってテストプログラムがその機能に関する「動くドキュメント」になります。テストプログラムが正しく動いているということはプログラムにはバグがないということです、テストプログラムそのものに間違いがない限り。プログラムを書き加えるたび、修正を行うたびにテストプログラムが実行されます。プログラムが完成に近づくにつれて失敗するテスト項目が減っていくことになります(継続した結合)。

+ +

テストによってプログラムが期待どおり動作していることがいつでも確認できますから、プログラムの修正が恐くありません。よりシンプルになるように、より効率よくなるようにプログラムをリファクタリングしてもプログラムの正しさが保証されます(リファクタリング、シンプルな設計)。

+

彼らはいつも二人一組で1台のコンピュータに向かってプログラミングします(ペアプログラミング)。一人がコードを書いている間、もう一人はたえずもっと高い視点からツッコミを行います。一人でコードを書いているときとは違った視点からのレビューが常に行われ、対話しながらプログラミングすることにより、見落としがちな点をより早く発見できるうえ、知識や情報の移転が素早く行われます。

+

彼らの書いたコードはすべてCVSに格納されます。リポジトリが共有されているので、問題がある部分を誰でもいつでも修正できます(コード共有)。

+

チームの中には顧客から派遣されてきた技術者がいます。この技術者は開発すべきシステムに対する知識を教えてくれるだけでなく、一緒に開発することで、今後彼らがシステムを保守するときに必要な知識を学び、また私たちが開発していないシステムの他の部分との調整も行っています(オンサイトユーザー)。

+

このシステムが稼働すべき日は外部的な要因から固定されています。しかし別の要因から開発開始は予定よりかなり遅れました。プロジェクトチームは優先順位を常に検討し、稼働日に要求される機能を重要な順から実装していきました(計画ゲーム)。開発が始まっても私たちが開発すべきシステムの全容が見えず、不安がありましたが、現在の予定では必要な機能はすべて期日までに完成しそうです。

+

正直なところ40時間労働は完全には守られていません。しかし、残業は週数時間程度であまり過酷な状況にはなっていません。日常的に働きすぎているということはどこかに間違いがあるということであり、それはもっと早い時点で計画に反映され、解決される必要があります。徹夜続きで生産的な仕事ができるはずもないのです(40時間労働)。

+
+
+

4つのバリュー

+
+

XPがこのようなプラクティスを導き出せたのは「4つのバリュー(価値)」を大切にしたからです。その4つとは、

+
    +
  • コミュニケーション

  • +
  • シンプル

  • +
  • フィードバック

  • +
  • 勇気

  • +
+

です。これらの裏付けがあるからこそ12のプラクティスが効果を発揮するのです。そして、それらのバリューの背後にはチームのメンバーがお互いにリスペクト(尊敬・尊重)する気持ちが期待されます。私の経験からも成功するチームあるいはコミュニティにはこのリスペクトの気持ちがあるように思われます。

+
+
+ +

RubyとXP

+
+

XPはある特定の言語に依存した手法ではありません。しかし、XPというのはもともとSmalltalkでの開発から生まれてきたやり方ですから、Smalltalkのような動的な言語のほうが向いているようです。

+

そういう意味からはRubyはまさにXP向けの言語と呼べるでしょう。RubyはSmalltalkと同様に動的なオブジェクト指向言語ですし、クラスやメソッドをオブジェクトとして取り扱う機能もあります。また、Ruby 1.8からはユニットテストのフレームワークであるtest/unitライブラリが標準添付されています。

+

test/unitライブラリの使用例をリスト27.1に示します。

+
+

リスト27.1●test/unit使用例

+
require 'test/unit'
+
+class TC_MyTest < Test::Unit::TestCase
+  def setup
+    # テスト前の準備
+  end
+     
+  def teardown
+    # テスト後の後片付け
+  end
+ 
+  def test_foo
+    # テストを行う。
+    # testで始まるメソッドがテストされる
+    assert(cond, 'Assertion was false.')
+    assert_equal(expect, actual, 'unexpected result.')
+  end
+end
+
+
+

setup”や“teardown”メソッドはテスト前に実行されます(必要なければ定義しなくてもかまいません)。たとえばテストに用いるファイルの準備やデータベースの接続はsetupメソッドで行い、それらの後始末をteardownメソッドで行います。必要な値をテストメソッド(メソッド名がtestで始まるもの)に渡すためにはインスタンス変数を使うとよいでしょう。

+

テストメソッドでは実際のテスト項目のためにassert(表明)メソッドを使いますが、assertとして用いることができるメソッドのうち主要なものを表27.2に示します。

+ +

テストメソッドの登録や明示的な呼び出しは必要ありません。このプログラムを実行するとテストメソッドを勝手に実行してくれます。実行結果はリスト27.2のようになります(「.」の数がテストの数になります)。

+
+

リスト27.2●test/unitの実行例

+
Loaded suite /tmp/t
+Started
+..
+Finished in 0.002082 seconds.
+
+
+
+
+

プロジェクトリーダーへのインタビュー

+
+

では、今回のわが社の「XPプロジェクト」のリーダーである前田修吾さんにインタビューしてみましょう。ご存じのとおり、前田さんはmod_rubyerubyの開発者でもあります。ちなみにこのプロジェクトでの私の立場は「オブザーバー」であり、プロジェクト全体を暖い目で見守る立場です。

+

なお、このプロジェクトはまだ完了していない事例であり、守秘義務などの関係で具体的な内容には触れられないことをご容赦ください。

+


+

まつもと(以下「ま」):では、前田さん、このプロジェクトについていろいろお伺いしたいのですが、なぜXPを採用しようと思ったのですか?

+

前田さん(以下「前」):はい、最大の理由は「やってみたかったから」ということです。XPという開発手法には前から関心がありましたから。しかし、もちろん理由はそれだけではありません。

+

まず、今回のシステム開発に対して私たちのところまで出向いて一緒に開発してくれるオンサイトユーザーが得られたこと、それからプロジェクト規模がちょうどよかったことが大きいです。あまり小さなプロジェクトではペアプログラミングなどによって生じる無駄を取り返せませんし、逆にあまり大きなプロジェクトではXPはうまくいかなそうです。

+

もう1つの理由はプロジェクトの「トラックナンバー」を大きくしたかったということです。「トラックナンバー」というのはそのプロジェクトの参加人数のうち何人がトラックにひかれても大丈夫かということを意味する数字ですね。トラックナンバーが1だと一人欠けただけでプロジェクトがストップすることを意味します。今回のプロジェクトではペアプログラミングによる知識共有などでトラックナンバーを2か3にできたと思います。

+ +

:このプロジェクトについてさしつかえない範囲で聞かせてください。

+

:あまり詳しいことは言えないのですが、このプロジェクトはある顧客のWebシステムの一部になります。三層アーキテクチャのデータベース層とビジネスロジック層が私たちの開発している部分です。プレゼンテーション層は別のチームがASP.NETを使って開発しています。この別チームの存在がこのプロジェクトの難しいところです。ビジネスロジック層とプレゼンテーション層はSOAPを使って情報をやりとりするようにしました。

+

現在、プロジェクトを開始して1カ月ですが、今までに13000行のRubyコードを書きました。テストを含めると3万行を超えます。最終的な規模はちょっと予想できないのですが、この倍を超えるかもしれません。

+

:3万行のRubyプログラムですか、私が今まで聞いた中でも最大規模ですね。それを1カ月で開発したというのはすごいですね。では、XPを実践する中で12のプラクティスをどのように使いましたか? すべて実践しましたか?

+

:いえ、全部のプラクティスは実践しませんでした。実践しなかったのは具体的には「短期リリース」「メタファ」「コーディング規約」ですね。あと、「40時間労働」もちょっとオーバーしていますね。だいたい毎日9時から7時までの45時間労働くらいでしょうか。今までで一度だけ土曜日に出勤しました。

+

今はまだプロジェクト開始して1カ月ですから「短期リリース」は無理だとか、チームメンバーのスタイルにあまりばらつきがなく「コーディング規約」があまり必要でなかったとかが実践しなかった理由ですね。「メタファ」については既存のシステム互換でそこに機能拡張をするということで、アーキテクチャ的に迷いがなかったので使いませんでした。

+

他のプラクティスはだいたい実践しました。ストーリーカードやタスクカード、CRCカードを用意して「計画ゲーム」を実践したり、ユニットテストを徹底したり。コードはCVSを使って共有しました。また、今回は顧客から二人の技術者をお借りし、こちらの技術者二人といつもペアを組むようにしました。

+

あと、ユニットテストコードがあると安心してコードの変更ができますね。途中で仕様変更とかデータベースのテーブル構成が変わったりしたのですが、比較的容易に対応できました。

+

:生産性から考えると非常に成功したケースと言えそうですね。今回のプロジェクトでXP以外に工夫した点がありますか。

+

:そうですね、テストケースが非常に多いので、テストケースをYAMLの記述から自動生成したりしました。その他、まつもとさんが先月号で紹介したようなYAMLからの自動生成はあちこちで使いました。SOAP通信用のWSDL(WebService Description Language)もRubyを使ってYAMLから記述したんですよ。

+

:そうですか。で、XPの効果のほどは?

+

:正直なところコードを書くスピードは一人でプログラムしたほうがずっと速いです。今回はRubyで開発していますし、もともと生産性はかなり高いのだと思います。やはりペアプログラミングではコミュニケーションのコストがあるので。しかし、ユニットテストのおかげでコードの信頼性は高まったと思います。

+

また、今回はオンサイトユーザーが得られたおかげで要求仕様と実装のギャップのずれの修正が素早く行えました。また、わからないことがあればユーザーに直接質問できますから、ドキュメントが少なくて済みました。というか、全然書いていません。

+ +

:これまで1カ月間XPな生活を過ごしているわけですが、XP生活の印象は?

+

:なんだか今までに比べると「仕事してるな」って感じがします。結局、朝9時から7時までびっちり仕事しています。メールをチェックする頻度もすっかり減ってしまいました。ペアプログラミングの効果かもしれません。最初は密度が高くてかなり疲れましたが、この1カ月でだいぶ慣れました。

+

:ありがとうございます。では最後に、またXPしたいと思いますか?

+

:そうですね。プロジェクトの規模によっては行ってみたいと思います。3000行くらいのプロジェクトなら一人のほうが絶対速いですし。それからプロジェクトの予算によりますね。あまり小さな予算だと複数の開発者を割り振れませんから。それから、XPを行うためには顧客や会社の理解が前提だと思います。特にオンサイトユーザーについては顧客に理解してもらうのが難しいかもしれません。

+

あと、どの言語を使うかというのもありますね。Cとかじゃやりたくありません。JavaやC++でもやっぱりイヤですね。XPを行うときの言語はメタプログラミング機能を持っててほしいです。

+

:では、もう一人、今度はオンサイトユーザーとしてチームに参加されたYoshinoさん(ペンネーム)にもお伺いしましょう。

+

:Yoshinoさんは以前からRubyについてご存じでしたか?

+

Yoshino(以下「Y」):使ったことはありませんでした。でも、Rubyという名前は知っていました。世界的に有名ですから。

+

:またまた。ほめても何も出ませんよ(笑)。今回、XPについて初めて聞かれたときにはどのように感じましたか?

+

Y:なんだか楽しそうだな、と思いました。今まで自社内で開発してましたが、今までやってきたやり方とは全然違いますし。また、いつも二人でプログラミングすると聞いてわくわくしました。

+

:では、1カ月経った今のXPに対する感想は?

+

Y:今回、仕様がはっきり決まっていない部分があって、そこの調整役が大変でした。最初、私は単なる開発者として参加したつもりだったのですが、実際には調整役の責任が大きくて。また、調整を行うときには、調整役が十分な権限を持たないといけないと思いました。

+

あと、情報を共有するのが大変だと感じることがありました。今回、プレゼンテーション層の開発が別チームなのでそことのやりとりに課題が残りましたね。

+

全体的には非常によい環境で刺激的な仕事ができたと思います。ペアプログラミングというやり方はユニークで面白いと思いました。後はペア間のレベルの違いをどう克服するかについて考えないといけないと思います。今回、私たちはRubyを全然知らなかったので。ペアプログラミングを通じてずいぶん学びましたが。

+

:また、XPしたいと思いますか?

+

Y:うーん、次はもっと若い人に経験してもらいたい、かな(笑)。でも、自分のところでもやってみたいとは思っています。たとえば新人教育用プロジェクトでやってみるとか。そのときにはペアプログラミングにおける役割分担についても考えてみたいです。あと、ユニットテストはすばらしいと思いました。これについてはぜひ今後もやっていきたいと思っています。

+

今回、初めてのことばかりで非常によい経験でした。すばらしい環境で仕事ができて光栄です。ありがたいです。

+
+

:ほめても何も出ませんってば。お話を聞かせてくださって、こちらこそありがとうございます。

+
+
+

XPとオープソース開発

+
+

私自身がXP開発経験が豊富というわけでもないのに、XPに肩入れをするのにはわけがあります。XPのバリューとプラクティスは、私が深く関わっているオープンソース開発と非常によく似ているのです。

+

私たちはCVSなどを用いてコード共有します。ペアプログラミングは行いませんが、変更は多数の開発協力者が確認します。私たちはシンプルな実装を好み、しばしばリファクタリングを行います。私たちはメーリングリストを通じて実際のユーザーの意見に耳を傾けます。

+

また、コミュニケーション、シンプル、フィードバック、勇気の4つのバリューとその背後にあるリスペクトの気持ちはオープンソース開発にも必要な原則です。

+

結局、XPが注目されるのも、オープンソースが注目されるのも、それらが達成しようとしている柔軟性にも原因があるのかもしれません。

+

XPを始めとする柔軟な開発手法を提唱している人々がAgile Manifest(Agileは「機敏な」という意味)という文書で顧客の価値と柔軟性を最重視する姿勢を宣言しましたが、その人々の中にProgramming Rubyを書いたDaveThomasとAndy Huntがいたのは偶然ではないと思います。

+
+
+

まとめ

+
+

ということで、今回はXPについて駆け足で解説しました。

+

Rubyの開発にはまだ十分取り入れていないXPのプラクティスがあります。計画ゲームとか(完全な)ユニットテストとか。これらもRubyの開発に取り入れて、より信頼性の高いRubyを作ろうかな、なんてこの原稿を書きながら考えました。

+

皆さんのXPを試してみませんか、できることから、一部だけでも。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-060.xhtml b/docs/vol1/xhtml/p-060.xhtml new file mode 100644 index 0000000..bfadf92 --- /dev/null +++ b/docs/vol1/xhtml/p-060.xhtml @@ -0,0 +1,61 @@ + + + + + +第27章 エクストリーム・プログラミング + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 10年後の技術者

+
+

先日、『日経ソフトウェア』という雑誌の創刊5周年企画で「10年後生き残るソフトウェア技術者になるには」というようなテーマのパネリストとして招待されました。

+

パネルそのものはテーマにはあまり沿わずに進んだのですが、改めて10年後のコンピューティングについて考えるとなかなか面白いものがあります。日進月歩どころか秒進分歩のこの業界で10年先ははるかな未来のように感じられます。いったいどうなっていることでしょう。おそらくは「とても予想できない」というのが皆さんの答えではないでしょうか。

+

確かにここ数年のコンピュータの発展はめざましいものがあります。誰も彼もが電子メールを使い、インターネットにアクセスし、町のあちこちでURLを見かける世の中を誰が想像できたでしょう。10年前にはコンピュータなど関係なかったビジネスさえコンピュータなしには成立しなくなっています。コンピュータ好きだと変人扱いされていたのは、そんなに昔のことではないはずなのに。この調子で進歩すればいったいどこまで進んでいくのでしょう。

+

しかし、私はこのことについて少し違った考えを持っています。確かにみんなが電子メールを使い、インターネットにアクセスする世の中に変わったかもしれませんが、電子メールやインターネットが生まれたのは30年も前のことです。それから確かに進歩はしていますが、本質的な部分は変わっていません。

+

コンピュータの性能は昔に比べて信じられないほど向上していますが、速度が速くなったとはいえ、今までになかったアーキテクチャが登場したわけではなく、基本的な進歩は容量やクロックの向上です。

+

つまり、私たちが目にしている劇的な進歩は実は量的なものがほとんどで、質についてはそれほど変化していないような気がするのです。

+

コンピュータが初めて誕生したのは今から約半世紀前です。このときからしばらくの間はコンピュータのハードウェアはとてつもないスピードで進化しました。またソフトウェアについても今までに存在しなかった新しいものが次々と登場しました。いや、コンピュータがなかったので今まで存在しないのは当たり前だったんですけど。

+

そして「プログラミング言語」という概念が生まれ進歩し、それと同時にさまざまなアルゴリズムが「発見」されました。コンピュータ科学の進歩は誕生から2, 30年の間、一般の人があまり知らないところで猛烈に行われていたのです。

+

実際にアルゴリズムの教科書を見て、それぞれのアルゴリズムが最初に発表されたのがいつか調べてみると面白いことがわかります。現代でも重要だと見なされているアルゴリズムの多くは30年以上前に発表されたものばかりです。

+

そうなんです。コンピュータのコストは下がり、これからも今まで使われなかったところにまで進出してくるでしょうが、それはあくまでも普及という量的な変化で、今の形のコンピュータの質的な進歩はすでに何十年も前に落ち着いてしまっているのです。

+

私の得意なプログラミング言語の分野はさらに変化の少ない分野です。今になっても新しい言語は次々と誕生していますが、その背景となる概念に関してはこの20年は劇的な変化は発生していません。今までに存在していたものの焼き直しで、使い勝手を少々よくしたようなものばかりです。

+
+

将来の変化についてはもう1つの要素があります。それはコンピュータと違って人間はそれほど変化しないということです。

+

たとえば車を見てください。コンピュータ同様、車の性能もどんどん向上していますが、その操作系(ハンドル、ペダル、メータなど)は長い間ほとんど変化していません。最大の変化はマニュアルからオートマに変わったことくらいでしょうか。人間が関わる部分は急激に変化しても人間が対応しきれないのです。

+

このことを踏まえるとこの先10年のコンピュータの進歩は今までの10年の進歩とさして変わらない方向性とレベルだろうと推測できます。要するに10年前から今日までの変化を見れば、10年後もなんとか予測できるだろうということです。

+

10年前(1993年)のコンピューティングを振り返ってみると、

+
    +
  • インターネットはあった

  • +
  • 電子メールもチャットもニュース(掲示板)もあった

  • +
  • Windowsも(3.1だけど)あった

  • +
  • MotifとOPENLOOKの競争に結論が出かかっていた

  • +
  • マシンはとても遅く高かった

  • +
  • 誰も携帯電話をもってなかった

  • +
  • Webはあったかもしれないが一般的ではなかった

  • +
  • Rubyの開発が始まった

  • +
+

くらいでしょうか。これを見ると、研究者や一部の人が使っていたものが大衆に普及した10年といえるでしょう。

+

この先10年はこれがますます進むでしょう。10年後は今以上に多くの人が知らないうちにコンピュータを使うようになるでしょう。お年寄りや子供も含めてインターネットを使うようになり、またコンピュータを経由して得られる情報も桁違いに大きくなるでしょう。

+

10年後には今ある特定のソフトウェアや技術は生き残っていないかもしれませんが、基礎を作っている技術(OS、ネットワーク、言語)などはたいして変化していないと思います。

+

プログラミング言語については、今あるものの多くが10年後も生き残っているでしょう。きっとRubyもどこかで使われていると思います。新しい言語が登場しているかもしれませんが、現代のものとそれほど違わないでしょう。もし違いがあるとしたらAOP(アスペクト指向プログラミング)を取り込んだ言語でメジャーなものが登場しているかもしれません。まだはっきりとはわかりませんが、アスペクト指向は言語の次の大きな変化になる可能性があります。

+

というわけで、ソフトウェア技術者はそれほど心配する必要はなさそうです。基礎的な技術であるアルゴリズムや、OSやネットワークの原理について押さえておけばそれはきっと10年後も有効でしょう。新しいものも次々登場するでしょうが、表層的な理解ではなく基礎を知っていれば恐れることはありません。

+

ただ、この予測は前提としてこの先10年コンピュータに質的に劇的な変化が起きないということを仮定しています。でも、もしかしたら、明日にも驚異的な発明が行われて世界が変わるかもしれません。そんなことが起きたら、それはそれで楽しそうな気がします。映画『ターミネーター』のような未来になるのでなければ。

+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-061.xhtml b/docs/vol1/xhtml/p-061.xhtml new file mode 100644 index 0000000..87872ec --- /dev/null +++ b/docs/vol1/xhtml/p-061.xhtml @@ -0,0 +1,376 @@ + + + + + +第28章 独習Ruby + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay28 +
+

+初等Ruby講座
+独習Ruby +

+
+

[Linux magazine, 2003年9月号]

+
+

今回は「Rubyを改めてまとめる」というテーマでの解説です。20年経っていてもRubyの基本的な仕様はさほど変わっていませんから、今でも有効な文章ではないでしょうか。もっとも、後半のリファレンスマニュアルページについては、若干見栄えが変わっていますが、それでもそのまま使えます。もちろんriコマンドも健在です。

+

「Ruby開発日記」は、オープンソースコンベンション2003出席記です。大変楽しいカンファレンスでした。このときまでに私が出席したことのあるカンファレンスの中では最大規模(キーノート出席者が1000人超え)で、オープンソースの勢いに感心しました。

+

このときに「サピア・ウォーフ仮説」という名前について教えてもらったと記録されています。「言語が思考に影響を与える」というこの仮説について名前を知らずに使っていました。独自に思いついたと言いたいところですが、おそらくは高校生のときに読んだSF小説『バベル17』から影響を受けたというのが正解でしょう。

+
+
+

連載開始から2年近くが過ぎ、ここのところ「初等」の名にふさわしくないくらい高度な内容が続きましたが、今月は基本に立ち返って「独習」のためのコツなどについて学びましょう。

+
+
+

Rubyの基礎

+
+

そもそもプログラミング言語というものは本を読んだだけでわかるほど簡単なものではありません。ただ、全体像をつかむことで理解が速まるかもしれません。ここでは、復習を兼ねてRubyの全体構成を文法とライブラリに分けて眺めてみましょう。

+
+
+ +

Rubyの文法

+
+

まずはRubyの文法を駆け足で眺めてみましょう。詳細はリファレンスマニュアルや他の書籍に譲ることにして、概観を捉えてください。Rubyの文法を構成する要素はそんなに多くありません。

+
    +
  • オブジェクト式

  • +
  • 代入

  • +
  • 変数

  • +
  • メソッド呼び出し

  • +
  • 演算子式

  • +
  • 定義文

  • +
  • 制御構造

  • +
+

これだけです。この7つの構文要素を押さえれば文法については完璧です。意外と簡単と思いませんか。

+
+
+

オブジェクト式

+
+

オブジェクト式というのはプログラム中で直接オブジェクトを表現するための文法です。オブジェクト式で表現できるオブジェクトは表28.1のとおりです。

+
+

表28.1●Rubyのオブジェクト式

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
オブジェクト式
整数1 1_000
浮動小数点数1.5 3.145e20
文字列"abc\n" 'abc'
正規表現/def+/
配列[1, 2, [3]]
ハッシュ{"a"=>97, "b"=>98}
シンボル:foo
+
+

文字列と正規表現には表28.1に示したものの他に“%”で始まる「任意の区切り文字による表現」と「ヒアドキュメント」が使えます。

+
+
# 任意の区切り文字による表現
+%!def! %{abc} 
+
+# ヒアドキュメント
+<<END
+「<<」の後ろの表現(この場合はEND)までが文字列
+END
+
+
+
+

変数

+
+

変数とは値に対する名札です。Cをよく知っている人は「変数は名札である」ということに気を付けてください。

+

Rubyの変数は6種類あります。変数の種別ごとにそれぞれ名前の先頭に記号が付いているのでひと目で区別できます。

+ +
    +
  • ローカル変数(小文字の英字で始まる)

  • +
  • グローバル変数($で始まる)

  • +
  • インスタンス変数(@で始まる)

  • +
  • クラス変数(@@で始まる)

  • +
  • 定数(大文字の英字で始まる)

  • +
  • 擬似変数(ローカル変数と外見は同じ)

  • +
+

この中で、定数と擬似変数には説明が必要です。定数はクラスに所属する値で一度代入するとその値を変えることはできません。厳密にはやればできますが、怒られます。擬似変数は値は自動的に設定され変更することができないので「擬似」と呼ばれます。Rubyには、

+
+
self nil true false __FILE__ __LINE__
+
+

の6つの擬似変数があります。

+
+
+

代入

+
+

代入とは変数の値を設定するものです。代入されて変数は初めて存在します。

+

代入は左辺(代入先)と右辺(代入元)を「=」でつなぎます。

+
+
a = 123
+
+

はローカル変数aの値を整数123に設定することになります。

+

Rubyでは代入の左辺も右辺も複数指定することができます。ですから、

+
+
a, b = b, a
+
+

とすれば変数abの値を交換することができます。右辺と左辺の数が合わないときには、余った左辺にはnilが代入され、余った右辺の式は単に無視されます。

+

末尾の左辺の前に「*」を付けると余った右辺が配列として代入されます。

+
+
a, b, *c = 1,2,3,4   # cは[3,4]になる
+
+

末尾の右辺の前に「*」を付けるとその式の値を配列として右辺に展開します。

+
+
a, b, c = *[1,2,3]   # a=1, b=2, c=3になる
+
+
+
+

メソッド呼び出し

+
+

メソッド呼び出しは他の言語の関数呼出しに似た形式を使います。

+
+
obj.method(arg1, arg2)
+
+

objmethodというメソッドを呼び出します。引数の周りのかっこはあいまいでないときには省略できます。引数リストは代入の右辺と同様に末尾の式の前に「*」を置くと配列展開されます。

+
+

上の例におけるobjのような「.」の前の式を「レシーバ」と呼びますが、これは省略できます。

+
+
method(arg1, arg2)
+
+

省略した場合のレシーバはself、すなわち現在実行中のメソッドのレシーバが使われます。ですから、Rubyでは、

+
+
print "hello world\n"
+
+

selfprintメソッドの呼び出しであると解釈されます。

+

メソッド呼び出しにはブロックを付加することができます。

+
+
obj.each {|i| ....}
+obj.each do |i| ... end
+
+

ブロックには「{}」で囲まれたものと「do end」で囲まれたものがあり意味は同じです。

+

ブロックを付加されたメソッドはその中から「ブロックを呼び返す」ことができます。呼び返しは値を付けて行われることがあり、その値は「||」の間の変数に代入されます。

+

メソッドの中からブロックを呼び返すためにはyield文を使います。

+
+
yield         # 値を渡さない場合
+yield n       # 1つの値を渡す場合
+yield n1,n2   # 複数の値を渡す場合
+
+
+
+

演算子式

+
+

Rubyの演算子式のほとんどは実際にはメソッド呼び出しです。つまり、

+
+
1 + 2
+
+

は「1オブジェクトの+メソッドを2を引数として呼び出す」という意味になります。演算子式の中には、

+
+
obj[0]
+
+

のような変則的なものもあります。これは「obj[]メソッドを0を引数として呼び出す」ことを意味します。

+

演算子の中には文法として意味が決まっていて変更することができないものもあります。たとえば「||」演算子などは再定義できません。

+
+
+

定義文

+
+

class文、module文、def文、undef文、alias文は定義文と呼ばれます。それぞれクラス、モジュール、メソッドの定義、メソッド定義の取り消し、別名定義の働きがあります。

+
+
# クラス定義
+class Foo < Object    # Objectを継承するFooを定義
+  ....
+end
+
+# モジュール定義
+module Bar            # モジュールBarを定義
+  include Mod         # モジュールModの機能を取り込む
+  ....
+end
+
+# メソッド定義
+def foo(arg1, *rest)  # fooを定義。*は代入左辺と同じ
+  ....
+end
+
+# メソッドの取り消し
+undef bar             # barメソッドを未定義に
+
+# 別名定義
+alias new old         # newをoldの別名に
+
+
+

定義文のバリエーションとして、特定のオブジェクトだけに作用する特異クラス定義と特異メソッド定義があります。これらの文を使うとある特定のオブジェクトにだけ機能や属性を追加できます。

+
+
# 特異クラス定義
+class << obj          # ボディの定義がobjにだけ作用
+  ....
+end
+
+# 特異メソッド定義
+def obj.bar(arg)      # objだけにメソッドbarを定義
+  ....
+end
+
+
+
+

制御構造

+
+

条件判断のifunless, ループのwhile, until, for, ループ脱出のbreak, redo, next, retry, メソッド終了のreturn, 文のグループ化と例外処理を行うbeginが制御構造です。

+

Rubyでは文法組み込みの制御構造だけでなく、メソッドとブロックを使って実行の流れを制御することもあります。たとえば無限ループを構成するloopメソッドや大域ジャンプを行うcatchメソッドとthrowメソッドなどがあります。

+
+
# 無限ループ
+loop { ... }
+
+# 大域ジャンプ
+catch(:foo) {
+   ...
+   throw(:foo)        # 対応するcatchまでジャンプ
+   ...
+}
+
+
+
+ +

Rubyのライブラリ

+
+

ここまでかなり駆け足で説明してきましたが、Rubyの文法はこれで全部です。ここまでを理解していれば、どんなRubyのプログラムも「読む」ことができます。たとえば、

+
+
n = Integer(ARGV[0])
+
+

を見ると、

+
    +
  • 定数ARGV[]メソッドを0を引数として呼び出し

  • +
  • その返ってきた値を引数にしてIntegerメソッドを呼び出し

  • +
  • Integerメソッドが返した値をローカル変数nに代入する

  • +
+

という意味だとわかります。しかし、このプログラムの意味を「理解」するためには、[]Integerなどのメソッドがどのような動作をして、どんな値を返すかを知らなければなりません。

+

これらを実現しているのがRubyのライブラリです。このライブラリを理解して初めてRubyプログラムを理解することができます。

+

ライブラリはRubyインタプリタに組み込まれているものだけで、クラスを182個、モジュールを13個も含みます。その他のライブラリを考えると数え切れません。肝心なのは全部覚えることではなくて、どうやって調べればよいかを学ぶことです。

+
+
+

リファレンスマニュアル

+
+

ライブラリを調べるためによいリファレンスマニュアルがオンラインで参照できます。

+
    +
  • http://www.ruby-lang.org/ja/man/

  • +
+

ここでは日々進化するRubyに追随して更新されるリファレンスが提供されています(図28.1)。

+
+ +
+ fig2801 +
+

図28.1●リファレンスマニュアル

+
+

たとえば、トップから「組み込みクラス/モジュール/例外クラス」にジャンプし、そこから「String」に飛ぶとStringクラスの詳細な解説を見ることができます。

+ +

しかし、いくら時代は「ブロードバンドで常時接続」になりつつあるとはいえ、いつもインターネットへのアクセスがあるとは限りません。それに上記のオンラインのリファレンスマニュアルは肝心のメソッドを調べるのに、そのクラスのページを開いてメソッドを探して、と少々面倒です。

+

そこで、オフラインで参照できるマニュアル用ツールが用意されています。それはri(英語版)とReFe(日本語版)です。

+

Dave Thomasによるriの出力例は図28.2のようになります。

+
+
+
------------------------------------------------------------- Array#each
+    arr.each {| item | block } -> arr
+------------------------------------------------------------------------
+    Calls block once for each element in arr, passing that element as a
+    parameter.
+       a = [ "a", "b", "c" ]
+       a.each {|x| print x, " -- " }
+    produces:
+       a -- b -- c --
+
+

図28.2●ri

+
+

riの入手先は以下のとおりです。

+
    +
  • http://www.pragmaticprogrammer.com/ruby/downloads/ri.html

  • +
+

Dave Thomasはriの(というか元になったProgramming Rubyの)1.8対応版を執筆中だそうです。

+

一方、ReFeRaccなどの作者としても有名な青木さんによる日本語ドキュメントツールです。ReFeの出力例は図28.3のようになります。

+
+
+
Array#each
+--- each {|item| .... }
+
+    各要素に対してブロックを評価します。self を返します。
+
+    例:
+
+        # 1、2、3 が順番に表示される
+        [1, 2, 3].each do |i|
+          puts i
+        end
+
+

図28.3●refe

+
+

ReFeの入手先は以下のとおりです。

+
    +
  • http://www.loveruby.net/ja/prog/refe.html

  • +
+

riReFeはドキュメントの言語以外にもいくつかの点が違います。

+ +

これらの違いを踏まえて両方を使い分けるのがよいのではないでしょうか。

+
+
+

マニュアルの参照の仕方

+
+

Rubyのリファレンスを参照していて、一番困るのはメソッドの説明が見つけにくいことです。たとえば、Arrayクラスのeach_with_indexメソッドの説明が読みたいと思って、ReFeを使っても、

+
+
not match: Array#each_with_index
+
+

と表示できません。

+

それはそのようなメソッドがスーパークラスかインクルードされているモジュールで定義されていることを意味しています。riReFeは「そのクラスで定義されているメソッド」しか解説してくれないからです。

+

あるクラスのスーパークラスまたはインクルードされているモジュールはancestorsメソッドで得ることができます。たとえばArrayクラスについては、

+
+
[Array, Enumerable, Object, Kernel]
+
+

であることがわかります。これらのクラスやモジュールを順に調べていけば、Enumerableeach_with_indexが定義されていることがわかると思います。

+
+

また、メソッド名だけでriReFeを起動するとそのメソッドを持つクラスの一覧を表示してくれるので役に立ちます。

+
+
+

まとめ

+
+

今月は久しぶりにRubyの基礎を概観してみました。これからRubyを勉強したいという人に役立てば幸いです。

+

Rubyを身につけるには実際にコードを書いたり、読んだりするのが一番です。文法を押さえたらコードを探検しに行くのはどうでしょう。RAAにはRubyのプログラムがたくさんあります。

+
    +
  • http://raa.ruby-lang.org/

  • +
+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-062.xhtml b/docs/vol1/xhtml/p-062.xhtml new file mode 100644 index 0000000..a41d171 --- /dev/null +++ b/docs/vol1/xhtml/p-062.xhtml @@ -0,0 +1,114 @@ + + + + + +第28章 独習Ruby + + + + +

Matz Essays Volume 1

+ + +
+

◆ Ruby開発日記 ◆ オープンソースコンベンション2003

+
+

7月6日から11日まで、オレゴン州ポートランドでオープンソースコンベンション2003が開かれました。

+

オープンソースコンベンションはO’Reillyが毎年開催しているオープンソース関連の最大のイベントです。このイベントは当初Perl Conferenceとして始まりましたが、次第に他のオープンソースソフトウェアも取り込んで、ここ5年ほどはオープンソースコンベンション(OSCON)として定着しています。

+

さて、Ruby関連の書籍はO’Reillyからは1冊しか出版されていないせいか、あるいはその1冊もさして売り上げに貢献していないせいか、それとも他の理由かわかりませんが、とにかく昨年まではRubyはOSCONからはお呼びがかかりませんでした。

+

ところが今年はRubyトラックが用意され複数のRubyの発表がありました。これがO’Reillyの方針転換か、Ruby人口の増加と知名度のアップが原因かはよくわかりませんが。私も今回Rubyの作者として招待されました。久しぶりの海外遠征です。

+

OSCONのプログラムからRuby関連のものを抜き出したものを表28.2に示します。

+
+

表28.2●Ruby Conferenceプログラム

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
7/808:45-17:15Ruby in a Day 1日チュートリアル
7/1010:45-11:30The Power and Philosophy of Ruby
7/1011:30-12:15Ruby for Perl Programmers
7/1013:45-14:30Take a FreeRIDE with Ruby
7/1014:30-15:15Data-Driven Classes in Ruby
7/1016:30-17:15Understanding Ruby’s Object Model
7/1017:15-18:00What I Did on My Summer Vacation
+
+

このリストからもわかるように7月10日(木)は「Rubyの日」で、一日中何かしらRuby関連のプログラムが開かれていました。

+

プログラムが行われた部屋は50名程度でいっぱいになってしまう小さな部屋だったのですが、中には立ち見が出るほど盛況だったものもありました。Rubyがアメリカのオープンソース界でも注目を集めつつあることが実感できました。

+ +

それでは、プログラムの内容を1つずつ見てみましょう。

+
+
Ruby in a Day
+

Dave Thomasがあちこちでやっているチュートリアルです。ユーザーの手元のコンピュータで実際にプログラムを作って学ぶ実践的なチュートリアルでなかなか好評だったようです。私は会場にこの日の夕方に着いたので出席できませんでした。

+
+
+
The Power and Philosophy of Ruby
+

「Rubyの日」の先頭は私による発表です。「言語が人間の思考に影響を与える」という仮説に従って、プログラマーによりよい影響を与えるプログラミング言語とはどのようなものかということについて論じました。発表資料は、

+
    +
  • http://www.rubyist.net/~matz/slides/oscon2003/index.html

  • +
+

にあります。発表後、その仮説は「Sapir-Whorf Hypotheses」と呼ぶのだと教えてもらいました。私が考え出した仮説と同じことを70年以上も前に考えた人がいるとは驚きです。

+
+
+
Ruby for Perl Programmers
+

Phil TomsonによるPerlユーザーのためのRuby入門です。ポートランド在住の彼は地元のPerlユーザーグループで同じ発表を行ったのだそうです。「みんな優しかったよ。殺されないですんだし」とは彼の弁です。

+
+
+
Take a FreeRIDE with Ruby
+

Rich Kilmerが数年前から作っているIDE(統合開発環境)FreeRIDEとそのベースになっているアーキテクチャFreeBASEの解説です。彼はDARPAから仕事を受けているベンチャー企業の経営者で、JavaをRubyに置き換えて生産性を実現していると言っていました。

+
+
+
Data-Driven Classes in Ruby
+

Michael GrangerとDavid McCorkhillによるクラス設計の話。私はこのプログラムには用事で参加できませんでした。彼らはこの2月にrubycrafters.comというRubyをベースにした企業を立ち上げたのだそうです。やるな。

+
+
+
Understanding Ruby’s Object Model
+

Rubyのオブジェクトモデルについて。Rubyのソースコード中、object.cにある図をきちんと説明したという感じでしょうか。

+

発表したChris Pineは最近子供が産まれたそうなのですが、「女の子だったらRubyと名付けたのに……」と言っていました。実際は男の子だったので「C」という名前にしたそうです。本気?

+
+
+ +
What I Did on My Summer Vacation
+

Dave Thomasが昨年の夏休みに奥さんの働くNGOのためにWebシステムを構築したという話で、昨年のRuby Conferenceでの発表とほぼ同内容です。結局夏休みはなかったということなんでしょうか。

+

このWebシステムというのが、教育者と生徒が教材を管理するというもので、長年の歴史的事情により発注も支払いも教材管理も複雑怪奇で、しかもそのビジネスルールをそのままWeb化する必要があったという厳しい条件があったのにもかかわらず、Rubyを使ったので6週間で完成したという話でした。

+

会場から「Pythonでもできるんじゃないか」という質問がありましたが、「できるかもしれないが、私には無理だった」と答えていました。確かにPythonが得意な人とRubyが得意な人と割とはっきり分かれる傾向があるようです。Dave Thomasは「猫好きと犬好きみたいなもの」と形容していました。

+

OSCONはもちろんRuby関連以外にもPerlやPython, Apache, PHPなど盛りだくさんでした。私としてはPerlの作者Larry Wallと再会できたことや、Pythonの作者Guido van Rossumと会えたことなどが貴重な経験でした。もちろん良好な関係でしたとも。一緒に夕食を食べたりもしましたしね。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-063.xhtml b/docs/vol1/xhtml/p-063.xhtml new file mode 100644 index 0000000..7a29ed2 --- /dev/null +++ b/docs/vol1/xhtml/p-063.xhtml @@ -0,0 +1,292 @@ + + + + + +第29章 再入門オブジェクト指向 + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay29 +
+

+初等Ruby講座
+再入門オブジェクト指向 +

+
+

[Linux magazine, 2003年10月号]

+
+

「オブジェクト指向」を改めて解説しています。背景としては、この時代はオブジェクト指向が大変注目されていた反面、あまり品質のよろしくない記事があふれていて、やや混乱が発生していたことがあります。この記事ではRubyをベースにしたオブジェクト指向解説を行っています。あくまでもRubyの話なので、たとえば「仕様の継承と実装の継承の区別」とか「継承と型の関係」などについて触れられていないのが、現代の視点からは不満がありますね。

+

また、後半ではirbを紹介しています。irbは現代でも活用されていますし、当時と比較すると補完機能などについても大変進歩していますが、基本的な部分は20年前から変わらず存在しています。REPLをベースにした体験の良さを一般に示したのはirbの功績ではないでしょうか。

+

「Ruby開発日記」では、LL Saturdayの参加記録です。当日まさかの台風直撃で、開催が危ぶまれるほどでしたが、楽しいイベントでした。帰りの飛行機が飛んでほんとに良かったです。

+
+
+

先月は『独習Ruby』と題して、Ruby全体の概観と独習のコツを復習してみましたが、いかがでしたでしょうか。今月はRubyの基礎の基礎であり、意外と理解が難しいと思われている「オブジェクト指向」について学びます。

+
+
+

オブジェクト指向は難しい?

+
+

オブジェクト指向が難しいと感じている人に、私が解説するというのは至難の業です。なんといっても最初にオブジェクト指向について触れたはるか昔の高校時代から今に至るまで、私はオブジェクト指向が難しいなどと一度も思ったことがないからです。自分が難しいと思っていないのに、難しいと感じている人にわかる説明をするのは困難ですよね。

+

どうやらオブジェクト指向には、わかる人にはすんなりわかっても、わからない人にはさっぱりわからないという傾向があるようです。そこで、いろいろ調査してみました。Web日記へのツッコミや周辺の人々の経験から、オブジェクト指向の学習についていくつかのことがわかってきました。

+
+

まず、第1に「オブジェクト指向は難しい」というイメージが先行しているということです。確かにオブジェクト指向の解説には、オブジェクト、クラス、メソッドなどどこかで聞いたようなカタカナ言葉が大量に発生します。しかも、よそで聞くのとでは意味が違うようです。いまさら別の訳語を用意するわけにもいきませんので慣れるしかないのですが、改めてまとめてみたいと思います。

+

第2に、実用的でない解説が横行していることがあります。たとえば継承というとすぐに「哺乳類」は「動物」のサブクラスだとかいうような例題が登場します。しかし、実際のプログラミングで継承を使うときに、哺乳類だの脊椎動物だのと知識表現的な使い方をすることはまずありません。使われない例題で解説するようでは理解できない人が出ても当然でしょう。私自身もそういう本を書いているので同罪ではあるのですが。

+

第3に、オブジェクト指向言語にはいろいろあって、微妙に流儀や定義が違ううえ、説明するほうも自分の流儀に固執するので、複数の書籍がそれぞれ違うことが書いてある(ように読める)ので、混乱を招いていることがあるようです。よく考えると結局は似たようなことが書いてあるわけですが、初心者のうちは表面的な違いが重要になりますから。

+

第4に、オブジェクト指向という考え方は、データの構造のようなものを表現する考えであるともいえます。コンピュータの処理を手続きだけ考える人は、このデータ構造という部分で引っかかるようです。

+

しかし、私はオブジェクト指向は難しい考え方ではなく、先入観を取り払って適切に学習すればすぐに身につく考え方だと思います。今回はその辺に挑戦してみましょう。

+
+
+

わかるオブジェクト指向

+
+

まずはいくつかの基本的な単語を学びましょう。オブジェクト指向ってのは、どういうわけだかよく使われる単語を再利用するクセがありますが、オブジェクト指向の文脈ではこうなんだと思って覚えてください。

+
+

オブジェクト

+

プログラムに登場するさまざまな「概念」のうち、データとして直接取り扱えるものがオブジェクトです。たとえば、数や文字列はオブジェクトです。この「データをオブジェクトとして捉える」というのがオブジェクト指向の最大公約数だと思います。その他のものはみな「あると便利なもの」でしょう。

+

メソッド

+

オブジェクト指向の重要な要素として「オブジェクトは自分自身にふさわしい処理を知っている」というものがあります。この自分自身にふさわしい処理のことを「メソッド」と呼びます。

+

オブジェクトのユーザーは処理の詳細については何も知らなくても、メソッドを通じてオブジェクトを操作できます。むしろ、オブジェクトの内部構造や処理手順などについては知らないほうがよいとされています。

+
+

クラス

+

人間は分類するのが好きです。あの生き物とこの生き物は同じ特徴を持つから「犬」という同じ種類の生き物として分類しようとかいうような活動は、はるかな昔から行われてきました。

+

オブジェクト指向においても、同じ特徴を持つオブジェクトをまとめた「クラス」というものがあります。クラスはオブジェクトの特徴を決めるひな形になります。たとえば「文字列クラス」は個々の文字列が持ついろいろな特徴をまとめたものです。そしてすべての文字列オブジェクトは、文字列クラスに所属します。

+

あるオブジェクトがどんな構造を持つか、どんなメソッドを持つかはクラスによって決まります。

+

実はクラスはオブジェクト指向に必須の概念ではないのですが、非常に便利なのでほとんどのオブジェクト指向言語で採用されています。

+

オブジェクトのことを「インスタンス」と呼ぶ場合がありますが、これはオブジェクトがクラスに属していることを強調する表現です。

+

継承

+

「継承」というのは、あるクラスの機能を引き継いで新しいクラスを作ることです。既存のクラスの機能をちょっとだけ変えたものを作るときに便利です。継承はオブジェクト指向の解説では必ず強調される機能ですが、実際にはそんなに多用されるわけではありません。次第に慣れていけばよいでしょう。

+
+
+
+

できるオブジェクト指向

+
+

さて、「オブジェクト」「メソッド」「クラス」「継承」などの基本単語について定義しましたが、これだけで、オブジェクト指向の考え方が身につくとは思えません。実際にオブジェクト指向を身につけるためにはやはり自分でやってみることが重要のようです。

+

自分で小さなプログラムを書き、実際に動かしてみることで理解が進むでしょう。その点Rubyは、

+
    +
  • 純粋オブジェクト指向言語であらゆるものがオブジェクト

  • +
  • インタプリタですぐに実行できる

  • +
+

などの特徴がありますから、この目的にぴったりです。また、irbというプログラムを使えば対話形式でプログラムできます。

+

Rubyがインストールされていれば、irbも同時にインストールされているはずです。

+
+
% irb
+irb(main):001:0>
+
+

irbのプロンプトの意味は以下のとおりです。

+
+ +
+ fig2901 +
+

図29.1●irbのプロンプトの意味

+
+
+

インデントレベルはifwhileなどのネストのレベルを示します。行番号は今までirbに入力した行数を示します。そしてselfは現在のselfの値を表示します。

+

readlineライブラリがインストールされていれば、bashなどと同様に行編集が使えるはずです。

+

では、irbを使って実行しながら、オブジェクト指向を実感してみましょう。

+
+
irb(main):001:0> a = "foo"
+=> "foo"
+
+

文字列 "foo" を変数aに代入しました。変数aが指しているのは文字列というオブジェクトですから、メソッドを呼び出すことができます。

+
+
irb(main):002:0> a.size
+=> 3
+
+

この文は「aという変数が指すオブジェクトのsizeメソッドを呼び出す」という意味です。「.」の左側がメソッド呼び出しの対象になります。

+

文字列オブジェクトはStringクラスに属するオブジェクトで、Stringクラスのsizeメソッドは文字列の長さを返します。変数aが指す文字列は "foo" ですから、その長さは3ですよね。

+

オブジェクトは文字列だけじゃないので、今度は別の種類のオブジェクトを試してみましょう。同じ変数aに配列を代入してみます。

+
+
irb(main):003:0> a = [1,2]
+=> [1, 2]
+
+

変数aは今度は配列を指すようになりました。今までaから指されていた文字列は誰からも参照されなくなります。誰からも参照されなくなったオブジェクトはシステムが自動的に後片付けをしてくれますので、忘れて結構です。

+

さて、配列に対してもメソッドを呼び出しましょう。

+
+
irb(main):004:0> a.size
+=> 2
+
+
+

文字列のときと同じく、sizeメソッドを呼び出しました。この配列は2要素の配列ですからサイズは2です。「a.size」というプログラムが文字列の長さを求めたときとまったく同じであることに注目してください。文字列の長さを求める処理と配列の長さを求める処理は内部的には異なっているかもしれませんが、正しい処理方法が自動的に選択されています。

+

このように同じ名前のメソッドを呼び出しても「.」の左側の式のオブジェクト種別に応じて、適切な処理が選択されることを「動的結合」と呼びます。また、同じ式の振る舞いが実行時に異なることを「ポリモルフィズム」とか「多態」と呼びます。

+

あるオブジェクトのクラスを知るためにはclassメソッドを使います。

+
+
irb(main):005:0> a.class
+=> Array
+irb(main):006:0> "a".class
+=> String
+irb(main):007:0> 1.class
+=> Fixnum
+
+

FixnumというのはFixed-size Numberの略で、コンピュータが高速に取り扱うことができる範囲(32ビットCPUでは231−1〜−231)の整数のことです。この範囲を超える整数はBignumというクラスに所属します。

+

FixnumクラスはIntegerクラスを継承しています。Integerクラスは整数に共通の性質を定義しているクラスで、FixnumBignumがこれを継承しています。このようなクラスをFixnumの「スーパークラス」と呼びます。Integerクラスはさらに数値に共通の性質を定義しているNumericクラスを継承し、NumericクラスはRubyのあらゆるオブジェクトに共通の性質を定義しているObjectクラスを定義しています。

+

クラスのスーパークラスはsuperclassメソッドで得られます。

+
+
irb(main):005:0> Fixnum.superclass
+=> Integer
+irb(main):005:0> Integer.superclass
+=> Numeric
+irb(main):005:0> Numeric.superclass
+=> Object
+irb(main):005:0> Object.superclass
+=> nil
+
+

Objectはすべてのクラスの頂点ですから、スーパークラスを持ちません。ですから、superclassメソッドはnilを返します。nilとは「何もない」という意味です。

+
+
+ +

irb補完計画

+
+

あ、そうそう。irbを使うに当たって便利なおまじないをご紹介しましょう。ホームディレクトリにリスト29.1に示す内容の .irbrcというファイルを用意しておきます。

+
+

リスト29.1●.irbrc

+
require "irb/completion"
+
+
+

この設定を行うと、TABキーを押すことで変数名やクラス名、メソッド名などの補完が使えるようになります。一度使ってみればわかりますが、とてつもなく便利です。

+
+
irb
+irb(main):001:0> foo = "foo"
+=> "foo"
+irb(main):002:0> fo<ここで2度TAB>
+foo     for     fork    format
+
+

今まで入力した部分で候補が1つだけに絞れる場合にはTAB一度だけで補完してくれます。そうでない場合には2度TABを押すとリストを表示します。ここでは "fo" で始まる変数とメソッドをリストしています。

+
+
irb(main):002:0> foo.g<ここで2度TAB>
+foo.grep   foo.gsub   foo.gsub!
+
+

irbの偉いところは、TABを押した地点の左側を解析して、fooという変数が指しているオブジェクトが文字列であれば、文字列のメソッドを一覧してくれることです。上の例では、文字列メソッドのうち "g" で始まるメソッドの一覧を表示しています。もちろん変数fooの中身が他のオブジェクトに変わればそれにも追随してくれます。

+
+
+

クラスの世界

+
+

さて、再びオブジェクト指向のおさらいに戻りましょう。あまり大規模でないプログラムならRubyが提供しているクラスとオブジェクトを使うだけで十分です。

+

Rubyの提供しているクラスは主要なものだけでも、

+ +

があります。これらを単に組み合わせるだけでも強力なプログラムが実現できます。

+

しかし、プログラムが少々複雑になってくると、データ中心の構成にしたくなります。このようなデータ型を定義するためには、自分自身でクラスを作ればよいのです。Rubyでは組み込みのクラスも、自分の作ったクラスも区別がありません。

+

では、実際にクラスを作ってみましょう。

+

例題として簡単なカウンタクラスを作ります。カウンタクラス(名前はCounterにしましょう)は、以下の機能を持ちます。

+
    +
  • 初期化(初期値はゼロ)

  • +
  • カウント値を増加

  • +
  • 現在のカウント値を報告

  • +
+

実際のカウンタプログラム(counter.rb)をリスト29.2に示します。

+
+

リスト29.2●counter.rb

+
 1  class Counter
+ 2    def initialize
+ 3      @count = 0
+ 4    end
+ 5    def count_up
+ 6      @count += 1
+ 7    end
+ 8    def count
+ 9      return @count
+10    end
+11  end
+
+
+

簡単なプログラムではありますが、最初ですからていねいに見てみましょう。

+

1行目でクラスの定義を始めています。「class」の後ろに続くのがクラス名になります。Rubyではクラス名の最初の文字を大文字にする必要があります。

+

def」で始まるのがメソッド定義です。「class」に対応する「end」の範囲内の「def」で、そのクラスのメソッドが定義されます。ここではinitialize, count_up, countの3つのメソッドを定義しています。

+

initializeは初期化用のメソッドです。Rubyではオブジェクトが新しく作られたときに、initializeという名前のメソッドが自動的に呼ばれます。initializeメソッドはカウント値(@count)をゼロに初期化しています。「@」で始まる変数は「インスタンス変数」といってオブジェクトごとの状態を保持します。

+ +

count_upメソッドはカウント値を増加させるメソッドです。メソッドはカウント値に指定された数を足すという単純なものです。

+

countメソッドは現在のカウント値を返すメソッドです。@countの値をreturnで指定しています。

+

では、このプログラムをirbを使って試してみましょう。まず、loadでカウンタプログラムを読み込みます。

+
+
irb(main):001:0> load "counter.rb"
+=> true
+
+

次に実験用にカウンタオブジェクトを1つ作ってみましょう。オブジェクトを作るにはクラスのnewメソッドを呼び出します。newメソッドの内部でinitializeメソッドが呼ばれて初期化が行われます。

+
+
irb(main):002:0> c = Counter.new
+=> #<Counter:0x40290cb8 @count=0>
+
+

では、カウンタを増やしてみましょう。

+
+
irb(main):003:0> c.count_up
+=> 1
+
+

ちゃんと増えたかどうか確認します。

+
+
irb(main):004:0> c.count
+=> 1
+
+

できているようですね。

+

このようにirbを使えば、オブジェクト指向機能を始めとしたRubyのいろいろな機能を手軽に試してみることができます。「習うより慣れろ」とも言いますし、実際にプログラムを動かしてみることで多くのことが学べるのではないでしょうか。

+
+
+

継承の実際

+
+

さて、上記のプログラムでは特にスーパークラスを指定しませんでした。あのプログラムのCounterクラスのスーパークラスはいったいなんになるのでしょう。これも試してみましょう。

+
+
irb(main):007:0> Counter.superclass
+=> Object
+
+

何も指定しなかった場合のスーパークラスはObjectクラスなんですね。

+
+

では今度はスーパークラスを指定してクラスを作ってみましょう。先ほどのCounterクラスは増加のみでしたが、減少もできるカウンタBiCounterを作ります(リスト29.3)。

+
+

リスト29.3●bicount.rb

+
require 'counter.rb'
+class BiCounter < Counter
+  def count_down
+    @count -= 1
+  end
+end
+
+
+

class文でクラス名の後ろに「<」に続けてクラスを指定すると、そのクラスがスーパークラスになります。省略した場合は先ほど見たようにスーパークラスはObjectになります。BiCounterクラスはCounterクラスのすべてのメソッドを受け継いだうえにcount_downメソッドが追加されます。

+

これも試してみます。

+
+
irb(main):008:0> load "bicount.rb"
+=> true
+irb(main):009:0> b = BiCounter.new
+=> #<BiCounter:0x40278bf4 @count=0>
+irb(main):010:0> b.count_up
+=> 1
+irb(main):011:0> b.count
+=> 1
+irb(main):012:0> b.count_down
+=> 0
+irb(main):013:0> b.count
+=> 0
+
+

よしよし。

+
+
+

まとめ

+
+

今月はオブジェクト指向の紹介を行いました。かなり駆け足でしたが、オブジェクト指向プログラミングのきっかけになれば幸いです。また、対話型Rubyインタプリタirbも紹介しました。irbも大変便利なのでぜひ使ってみてください。

+
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-064.xhtml b/docs/vol1/xhtml/p-064.xhtml new file mode 100644 index 0000000..09b326c --- /dev/null +++ b/docs/vol1/xhtml/p-064.xhtml @@ -0,0 +1,81 @@ + + + + + +第29章 再入門オブジェクト指向 + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ LL Saturday

+
+

8月9日、台風10号が接近しつつある中、東京渋谷にある法学館5号館で、LL Saturdayと銘打ったイベントが開催されました。

+

LLとはLightweight Languageの略で、軽量級プログラミング言語として最近注目されているPerl, PHP, Python, Ruby(アルファベット順)について、それぞれの第一人者が解説するというような感じのイベントです。

+

軽量級といっても、言語仕様が小さいとか、プログラムのサイズが小さいとかいう意味ではありません。また、実行時の負荷が軽いという意味でもありません。

+

Lightweight Languageというのはもともとは一昨年からMITで開催されているイベントの名前で、スクリプト言語やLisp, MLなどの言語をまとめるために考え出された名称です。

+

主催者としては当初はDynamic Languageと呼びたかったらしいのですが、それではMLのような型推論を行う静的型の言語が含まれなくなるなど、いろいろ悩んだ末に付けた名前のようです。

+

昨年、私は2回目になるLL2に出席してきました。LL1ではLightweight Languageの定義については議論されなかったようでしたので、そこで「脳力の消費量が少ない言語」という「俺定義」を披露してきました。もちろんこれがLLの公式な定義になるわけがないのですが、LL2の出席者にはそれなりに前向きに受け取ってもらえたようです。

+

さて、そんなLightweight Languageについて日本でも語ろうと企画が始まったLL Saturdayですが、定員200名で出席者の募集を行ったところわずか3日でいっぱいになるという「事件」が発生しました。それなりに注目を浴びていたようです。

+

当日は悪天候の中、150名を超す人たちが会場に集まりました。スタッフによるとこの条件での150名はいいほうだそうです。会場ではアスキーやオライリージャパンを始めとする出版社がLL関連書籍を陳列・販売していました。会場だけの特別割引もあり、結構売れていたようです。

+

肝心のプログラムですが、

+
    +
  • Language Update

  • +
  • オブジェクト指向とLL

  • +
  • 君ならどう書く

  • +
+

という3本立てでした。

+
+
Language Update
+

各言語の最近の話題を解説していました。Perlは5.8.0のリリース間近、PHPはPHP 5のリリースが年内に予定されていて、Pythonは2.3がリリースされたばかり、Rubyも1.8.0のリリース直後ということで、それぞれの最新バージョンの動向などが紹介されました。

+

Perl 6の話題も期待されていたと思うのですが、このことに関してはPonie(Perl 6のインタプリタエンジンであるParrot上に再実装されるPerl 5)くらいしか紹介されませんでした。

+
+

それぞれの新しい機能が紹介される中、言語機能としてはお互いに参考にしあって次第に近づいてきているような印象を受けました。特にPerl 6やPythonの新バージョンはRubyが持っていた機能の同等品を取り込んできて(Rubyを参考にしたとは限りませんが)、ますます差が近づいているようでした。

+

将来はParrotのような「共通エンジン」が登場して、言語の違いは文法の違いだけになってしまうのかもしれません。

+
+
+
オブジェクト指向とLL
+

それぞれの言語のオブジェクト指向機能について紹介したのちに、「Lightweight Languageにおけるオブジェクト指向」などについて語るパネルが行われました。

+

パネルのほうは少々発散気味でしたが、Python担当の磯さんが「手順としてプログラムをとらえる人はオブジェクト指向とか構造体とかが理解しにくい」という発言が印象的でした。

+
+
+
君ならどう書く
+

同じテーマについて各言語で独立にプログラムを書くことで、それぞれの言語の比較をしようという試みです。

+

テーマは3つあって

+
    +
  • RSSビューア

  • +
  • Apacheログ解析

  • +
  • ネットワークじゃんけん

  • +
+

でした。今回取り上げた言語はそれぞれライブラリが充実してきていますので、この程度のタスクは割と簡単に実現できてしまいます。

+

しかし、Lightweight Languageというだけあって、皆さん、

+
    +
  • 会場でデバッグ

  • +
  • プレゼン中にコード変更

  • +
+

など、驚くようなフットワークの軽さを見せつけてくださいました。会場のディスプレイの見にくさとあいまって、聴衆を混乱に陥れてくださいました。いや、冗談です。

+

このセッションで印象的だったのはきたさんのプレゼンです。彼が書いたRubyのコードからviのエディタコマンドでend行を消すと、あら不思議、なんとなくPythonのコードに見えてくるじゃありませんか。行末にコロンを追加したら本当に動くかもしれません。

+

言語設計者としてはPythonとRubyは相当違うと日頃から思っているのですが、日常的な使用では実は大した差なんてないのかもしれません。

+

LL Saturday全体を通して振り替えると、ディスプレイの解像度の低さと、相性の悪いPCによるトラブルが続出したことを除けば、全体に質の高いイベントだったのではないでしょうか。

+

なお、じゃんけん対決による最強Lightweight Language決定戦ではRubyが圧勝であったことをご報告しておきます。単なる乱数の結果ではあるんですが。

+
+

さて、このようにして終了したLL Saturdayだったのですが、私はイベント終了後、懇親会の誘いも断って、松江に帰るためにそそくさと羽田空港に向かって移動したのですが、なんと私が乗るはずだった出雲空港行きは天候事情のため欠航になってしまいました。

+

こんなことなら懇親会に出ればよかったです。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-065.xhtml b/docs/vol1/xhtml/p-065.xhtml new file mode 100644 index 0000000..ab98b30 --- /dev/null +++ b/docs/vol1/xhtml/p-065.xhtml @@ -0,0 +1,394 @@ + + + + + +第30章 ここからのRuby + + + + +

Matz Essays Volume 1

+ + +
+ +Matz Essay30 +
+

+初等Ruby講座
+最終回: ここからのRuby +

+
+

[Linux magazine, 2003年11月号]

+
+

「初等Ruby講座」連載の最終回です。「ここからのRuby」というタイトルで、入門が終わった人がRubyを使って今後何にチャレンジするかということについて解説しています。ここでWebが強調されないのが2003年という感じですね。「Rubyと言えばWeb」というイメージがありますが、そのイメージを生み出したRuby on Railsが誕生したのは2004年です。私自身がWebが得意でないことも反映していると思います。

+

あと、プログラミング言語の解説でつまづきがちな変数の認識の仕方としての「箱モデル」と「名札モデル」についても解説しています。言語によっても向いたモデルが異なるのが難しいところですね。

+

「Ruby開発日記」では、ユーザビリティ原則からプログラミング言語の設計について考えています。「もうRubyも10歳だし、そろそろ超えるような言語が(日本から)出てもよい頃だ」と書いていますが、20年経ってもRubyを超える言語が日本から出てくる気配がありません。さみしい。日本人はいろいろ恵まれていると思うのですが、言語をデザインしたいという「人種」は私が思う以上に希少なようです。

+
+
+

さて、長らく連載してきた『初等Ruby講座』もとうとう今回で最終回です。「私に入門は無理じゃないか」という不安を振り切っての連載でしたが、案の定少々難しすぎたように思います。今回は最終回に当たって過去を振り返り、それからRubyとともに歩む未来を見つめます。

+
+
+

対象となる読者の気持ち

+
+

入門記事を書くに当たって一番難しいのは、読者の気持ちを理解することです。以前別のところでも書きましたが、解説記事を書けるほど知識を持った人は、何もわからなかった初心者のときの気持ちを忘れているものです。説明するのに必要な知識を得る過程で失っていくものもあるんですね。

+
+

ご多分に漏れず、私も初心者のときの気持ちを忘れてしまっています。私がプログラミングを始めたのはもう20年以上昔ですから、記憶があいまいなのもしかたないかもしれません。

+

最近、Rubyのメーリングリストで「変数のたとえ話」について議論が行われました。これはつまり、初心者向けの本の中で変数について説明するときにどのようなたとえを使うのが望ましいか、というものです。

+

議論と発端となったのは、ある本で「変数はオブジェクトが入る箱のようなもの」という説明がしてあったことにあります(図30.1)。

+
+ +
+ fig3001 +
+

図30.1●変数は箱

+
+

箱にはそれぞれ名前が書いてあって、それが変数名になるわけですね。しかし、Rubyでは複数の変数が1つのオブジェクトを「格納する」ことがあります。

+
+
a = "abc"
+b = a       # a とb は同じオブジェクト
+a[0] = "A"  # a を"Abc"に変えると
+puts b      # b も変わる
+
+

現実世界ではある「モノ」が2つの箱に同時に入ることはありえませんから、このたとえは割と早い時点で破綻しそうです。

+

このたとえは変数を箱だと考えるものですから「変数=箱モデル」、略して「箱モデル」と呼びましょう。

+

一方、私が出した本、(『オブジェクト指向スクリプト言語Ruby』)を含めてRubyの解説書の多くで使われているのが「変数は名札のようなもの」というたとえです(図30.2)。

+
+ +
+ fig3002 +
+

図30.2●変数は名札

+
+

これを「変数=名札モデル」略して「名札モデル」と呼びましょう。1つの「モノ」に複数の名札を付けるのはめったにないことですが、箱と違って超現実的というわけではありません。

+

このように、名札モデルはRubyの変数の振る舞いをより自然に説明しますから、Rubyだけを考えるなら名札モデルのほうが優れていると考えることができます。

+

ところが、ことはそれほど単純ではないのです。Rubyにだけ関していえば確かに「名札モデル」のほうが優れているかもしれませんが、プログラミング言語一般として考えると箱モデルのほうがふさわしい場合もありえます。

+

たとえばC言語を考えると、Cでは、

+ +
    +
  • 変数の実体は値を入れる入れ物である

  • +
  • 代入は入れ物の中身をコピーすることである

  • +
  • その入れ物はオブジェクトそのものである

  • +
+

という性質があります。

+

ということは「箱モデル」の説明のほうがしっくりくるわけです。仮に初心者がCのような言語に関してはひととおりの知識があるのであれば、むしろ箱モデルのほうがわかりやすい場合も考えられます。

+

Cと箱モデルは非常に相性がよく、変数は値の入る箱であると考えてまず間違いありません。C言語では代入によって箱の中身(値)がコピーされます。また箱には名前の他に番地が付いていて、番地を経由してアクセスできます。変数名の前に「&」演算子を付けるとその変数の番地を得ることができます。

+

C言語の変数は「別の箱を指す番地が書いた紙の入った箱」と表現できます。代入では箱の中身である番地(を書いた紙)がコピーされて指されている箱には変化がありません(図30.3)。

+
+ +
+ fig3003 +
+

図30.3●Cのポインタ変数を箱モデル

+
+

このように「わかりやすいたとえ」を考えただけでも、前提や対象者によってさまざまな条件が絡み合い難しいものです。入門あなどるなかれ。

+
+
+

初等講座を振り返る

+
+

この『Ruby初等講座』は今回が25回目、つまりもう2年以上も連載してきたことになります。「初等」なんてタイトルを付けちゃったばかりに苦労しました。必ずしもうまくいったという自信はないのですが、ここではこの2年の軌跡をたどってみましょう。

+

過去の連載の内容を表30.1に示します。

+ +
+

表30.1●『Ruby初等講座』連載目次

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
回数題名知られざるRubyRuby開発日記
第1回
2001年11月号
はじめの一歩openデンマーク訪問記
第2回
2001年12月号
条件判断とループendLinux Conference 2001
第3回
2002年1月号
オブジェクトと変数変数Ruby Conference 2001 + OOPSLA
第4回
2002年2月号
配列ソートRuby 1.8
第5回
2002年3月号
ハッシュハッシュアルゴリズムオープンソースな生活
第6回
2002年4月号
文字列の操作packとunpack国際感覚
第7回
2002年5月号
パターンマッチ文字コードRiteと鬼車
第8回
2002年6月号
入出力stdioの憂鬱
第9回
2002年7月号
数と電卓coerceインプットメソッド
第10回
2002年8月号
CGI(その1)Web セキュリティ若い世代への憂慮あるいは杞憂
第11回
2002年9月号
CGI(その2)フリーソフトウェアな生活
第12回
2002年10月号
CGIの道具箱時代はLispに追いついたか
第13回
2002年11月号
ファイル処理顔じゃないよ、心だよ
第14回
2002年12月号
ネットワークプログラミング予想外
第15回
2003年1月号
番外編 Rubyカンファレンス2002リポート
第16回
2003年2月号
プロセスとフォークRubyソースコード完全解説大人になる、ということ
第17回
2003年3月号
スレッド(その1)スピード狂
第18回
2003年4月号
スレッド(その2)プログラマーの幸せ
第19回
2003年5月号
データの保存プログラマーと数学
第20回
2003年6月号
XMLとYAML迷惑メールをやっつけろ
第21回
2003年7月号
XMLとYAML(その2)うぇぶ日記はじめました。
第22回
2003年8月号
エクストリーム・プログラミング10年後の技術者
第23回
2003年9月号
独習Rubyオープンソースコンベンション2003
第24回
2003年10月号
再入門オブジェクト指向LL Saturday
第25回
2003年11月号
これからのRuby言語のユーザビリティ
+
+

こうして振り返ってみると、いろいろ苦労したことが思い出されます。

+

この連載の前半では「知られざるRuby」というちょっと高度なコーナーが存在していました。ドキュメントにも書いていないような細かいところを解説するコーナーで書いてる本人も結構面白かったのですが、ソースコードを読みながらRubyの隅っこの部分の挙動を解説する作業は結構手間がかかりますし、なにより原稿を書いてる最中にRubyのデバッグや修正に熱中してしまったりと思わぬ展開になることもしばしばでした。

+

ただ単に解説を書くよりも大変手間がかかってしまうことと、入門のほうが回数を進めるうちにだんだんと高度になってきた関係もあってこれはいつの間にかなくなってしまいました。

+

「知られざるRuby」コーナーがなくなったのとほぼ同時期に、解説するテーマもRuby言語そのものから応用分野の方向へと話題が移ってきました。たとえばCGIとかXMLとかです。

+

Ruby言語そのものについてはたくさん本も出ていますから、実際にRubyを使いたい人には、こちらの応用のほうが役に立ったかもしれません。

+

このあたりは他にはない解説だと自画自賛しているのですが、今改めて原稿を読み返してみるとちょっと実例が少ないかもしれませんね。あまり「初等」ではなかったかなあ。

+

この連載では毎月最後の1ページを使って「Ruby開発日記」というコラムを掲載してきました。これはRuby開発者である私の開発生活の一部を切り取ったような「無駄話」を毎月書いてきました。出席したカンファレンスのことや、Rubyの開発状況、オープンソースデベロッパーを取り巻く状況などについてが主な話題でしたね。

+
+

また、プログラマーという人種の生態について書いたこともありました(2002年4月号2002年8月号など)。「プログラマーも人間だ、ちょっと変わってるかもしれないけど」ということが伝わりましたでしょうか。

+

本編よりもこちらのほうが面白いという意見もあったようです。せっかくなのでこういう試みはこれからも続けていきたいと思います。

+
+
+

これからのRuby

+
+

「これからRubyがどうなるか」ではなく、読者の皆さんが『初等Ruby講座』で学んだあと、「これからRubyで何をするか」という話です。

+

Rubyというプログラミング言語がありました。ひととおりいろんなことができることはわかりました。では、それを使って何をしましょう?

+

以前、地方紙のインタビューを受けたときにコンピュータのことにあまり詳しくない記者の方に「で、そのRubyというソフトはどんなことができるんですか」と質問されて、大変困ったことがあります。

+

プログラミング言語ってのは、何をプログラミングするかで、できることが決まるわけですから。「プログラムできます」と答えてもわかってもらえないでしょうし。悩んだ挙げ句「何でもできます」などとわかったようなわからないような答えを出したんですが、記者の方はなんだか不思議そうな顔をしていました。

+

Rubyで何ができるかを決めるのは、Rubyを使う人一人一人です。Rubyはプログラムされた命令に従って、何でも実行します。あなたは何を命令しますか?

+

Rubyの使い方として、典型的なものの1つとして考えられるのは簡単なテキスト処理でしょう。

+

先日、スパムフィルタによって分類されたメールフォルダ(mbox形式)のメールのサブジェクトから、フィルタによって付けられた「***** SPAM *****」という文字列を削りたいと思いました。sedとかでも簡単な処理でしょうが、あいにく私はsedを使いこなせるほど知りません。そこでRubyの出番です。

+
+
% ruby -i~ -pe 'sub(/\*{5} SPAM \*{5}/, "")' mbox
+
+

これだけでmboxというメールフォルダの置き換えが行われます。修正前のフォルダはmboxという名前で残されます。このプログラムでは「***** SPAM *****」という文字列すべてを置換してしまいます。気になる場合には、

+
+
/^Subject: \*{5} SPAM \*{5} /
+
+

という正規表現にしたほうがよいのかもしれません。まあ、簡単な処理ですから、そこまで厳密にする必要はないでしょうが。

+
+
+ +

日常生活に役立てる

+
+

「Rubyをいかに使うか」という問いへの答えの参考にするため、私が日常的に使っているRubyスクリプトの中からいくつかを紹介しましょう。

+

まず最初にご紹介するのは「文字重複チェックプログラム」です(リスト30.1)。

+
+

リスト30.1●文字重複チェックプログラム

+
ARGF.each do |line|
+  print ARGF.file.path, " ", ARGF.file.lineno, ":", line if line.gsub!(/([あ-ん])\1/e, '[[&]]')
+end
+
+
+

私はここのところ原稿を書いたりドキュメントを書いたりする仕事が多いのですが、その中で一番よくある間違いが文字(特に助詞)の二重打ちです。

+

原稿を書いていく過程で、たとえばこんな文章を書いたとします。

+
+
よくあるエラーが、文字の二重打ちです
+
+

この中にある「エラー」の部分を「間違い」に訂正しようとして、「エラー」を消し、勢いで「間違いが」と打ってしまったとします。結果は、

+
+
よくある間違いがが、文字の二重打ちです
+
+

となります。

+

こういうエラーをチェックするのが文字重複チェックスクリプトです。このスクリプトを使うと同じひらがなが連続している部分を表示してくれます(図30.4)。

+
+
+
genko.txt 257:Ruby というプログラミング言語がありました。ひ[[とと]]おり
+genko.txt 341:私は[[ここ]]のところ原稿を書いたりドキュメントを書いた
+genko.txt 352: よくある間違い[[がが]]文字の二重打ちです
+
+

図30.4●文字二重打ちチェック

+
+

「ひととおり」とか「ここのところ」とか問題ないものも検出していますが、恥ずかしい間違いを見逃すよりはよいでしょう。私は原稿を提出する前にこのスクリプトにかけることにしています。

+

さて、原稿を書くときのための「文字重複チェックプログラム」ですが、本業のプログラム書きでも小さなプログラムが活躍します。プログラムの規模はよくステップ数と呼ばれる単位で数えます。これは基本的には行数なのですが、コメントや空行の数を除きます。リスト30.2はこの処理を行ってくれるプログラムです。

+ +
+

リスト30.2●ステップカウントプログラム

+
#! /usr/bin/ruby
+
+n = 0
+open = false
+while line = gets()
+  line.gsub! %r|//.*|, ''
+  line.gsub! %r|/\*.*\*/|, ''
+  if %r|/\*|                  # open comment
+    line.gsub! %r|/\*.*|, ''
+    open = true
+  end
+  unless /^\s*$/ =~ line
+    n += 1
+  end
+  if open
+    until %r|\*/| =~ line
+      line = gets()
+    end
+    line.sub! %r|.*\*/|, ''
+    open = false
+    redo
+  end
+end
+p n
+
+
+

このプログラムは、空白のみの行、コメント行を除いた行数をカウントします。Cのコメントは複数行にわたることがあるので、少々工夫してあります。

+

たとえば原稿執筆時点で最新のRubyのソースコードは全部で72830行あります。しかし、このプログラムを使って空白行とコメントを取り除くと、実質は62283行であることがわかります。実に1万行以上空白とコメントがあるのですね。

+

これらはほんの一例にすぎません。原理的にはRubyは「何でもできる」のですから、限界はプログラマーの想像力です。どんなことができる便利になるでしょうか。あなたならRubyに何をさせますか?

+
+
+

プログラムできる喜び

+
+

パーソナルコンピュータがまだ「マイコン」と呼ばれていた頃、コンピュータを使うことはプログラムすることとほぼ同じ意味でした。まだまだ未熟なマイコンは、何かしたいと思えばBASICなどを使ってプログラムしてやらなければ何もできなかったものです。私がコンピュータに初めて触れたのはそういう時代でした。それはPC-1210というシャープのポケットコンピュータで、電卓サイズにBASICを積んだ当時としては画期的なものでした。

+
+

そしていわゆるパソコン、それからワークステーションと、時代につれて使うコンピュータは進歩してきました。今では以前ワークステーションと呼ばれていたコンピュータよりもはるかに性能の高いパソコンが皆さんの机の上に乗っています。

+

ところがコンピュータが進歩した現在、コンピュータユーザーでプログラムする人はすっかり減ってしまいました。今や、コンピュータを使うということは、たいていはどこかの誰かが作ったプログラムを使うだけという意味になってしまいました。

+

現在、ほとんどの人にとっては、コンピュータというものは、単にインターネットブラウザやメールリーダー、ワープロなどの出来合いのアプリケーションを動かすための機械になってしまいました。

+

そもそもコンピュータを買ってきても、プログラミングできるツールは付いてきませんし。

+

私たち古い世代はコンピュータに興味を持つと同時に、自然にプログラミングを始めたわけですが、今の若い人たちはいったいどういうふうに感じているのでしょうか。最初に使うアプリケーションがいきなりインターネットエクスプローラのような大規模で完成度が高いソフトウェアだったりした日には、ちょっと自分でやってみようという気持ちにならないんじゃないでしょうか。

+

それはコンピュータが成熟したという意味でもありますが、以前よりずっと性能が高くなって、いろいろなことができるようになったはずのコンピュータなのに、アプリケーションとしてあらかじめ用意された機能を、用意されたとおりに使うしかない現状は融通が利かないと感じることもあります。

+

Rubyやその仲間のプログラミング言語は、そのような融通の利かなさを打破して、再びプログラムできる喜びを取り返すのに役立ちます。自分でコンピュータの動きを自由にプログラムできるのはなんとすばらしいことでしょう。失われていた自由を再び得たような気分です。

+

たとえば、

+
    +
  • メールサーバーにたまったSobig.Fのウィルスメールを一気に削除したい?
    +Rubyならできます。

    +
      +
    • http://amrita.s14.xrea.com/d/?date=20030905

    • +
  • +
  • Web日記を始めて、自分向けにカスタマイズしたい?
    +Rubyならできます。

    +
      +
    • http://www.tdiary.org/

    • +
  • +
+

Ruby, Rython, Perl, PHPなどのスクリプト言語処理系はたいていフリーソフトウェアですから、無料で入手できます。また、移植性も高いのでLinuxでもWindowsでも、その他多くのOSでもほぼ同じように利用できます。これらを使えばBASICが主流だった昔のように自由にプログラミングができるようになります。

+

コンピュータをプログラムする喜びを再び私たちの手に。そしてコンピュータを万能機械として活用しようではありませんか。

+
+
+

予告

+
+

「プログラムできる喜び」について宣伝したところで、この連載はとうとう終わりです。今まで長い間本当にありがとうございました。この連載が皆さんがRubyを理解する助けに少しでもなったのであれば幸いです。

+

『Ruby初等講座』はこれで終わりますが、もうちょっと目先を変えた形での連載を始めたいなと思っています。今までは入門でしたが、今度はもうちょっと応用寄りになると思います。お楽しみに。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-066.xhtml b/docs/vol1/xhtml/p-066.xhtml new file mode 100644 index 0000000..72b0ead --- /dev/null +++ b/docs/vol1/xhtml/p-066.xhtml @@ -0,0 +1,78 @@ + + + + + +第30章 ここからのRuby + + + + +

Matz Essays Volume 1

+ + +
+ +

◆ Ruby開発日記 ◆ 言語のユーザビリティ対象となる読者の気持ち

+
+

Jakob Nielsen博士によれば、使いやすさ、「ユーザビリティ」には以下の5つの質的な構成要素があるのだそうです(http://www.usability.gr.jp/alertbox/20030825.html)。

+
    +
  • 学習容易性
    +初めてそのデザインに触れたユーザーが、どれくらい容易に基本的なタスクを達成できるようになるか?

  • +
  • 効率性
    +いったんそのデザインを学習したユーザーが、どれくらい迅速にタスクを達成できるようになるか?

  • +
  • 記憶性
    +しばらく使用しない期間をはさんだあと、再びそのデザインに戻ってきたユーザーが、どれくらい容易に習熟度を取り戻すことができるか?

  • +
  • エラー
    +ユーザーが犯すエラーの数、そのエラーの深刻さ、そして、そのエラーからの回復の容易さはどうか?

  • +
  • 満足度
    +そのデザインを使うと、どれくらい楽しいか?

  • +
+

実に興味深いです。世間に存在するツールすべてがこのユーザビリティを念頭において設計されていればどんなによいことでしょう。たとえば、昨年購入したテレビはハードディスク内蔵で機能的には大変満足なのですが、残念ながら使い勝手は今ひとつです。カタログには使い勝手については載ってないんですよねえ。プログラミング言語もツールですから、当然使い勝手があります。上記の要素をプログラミング言語にあてはめるとどうなるでしょう。

+
+ +
学習容易性
+

学習が容易という観点からいうと、プログラミング言語はあまり独創的でないほうが望ましいのかもしれません。プログラマーたるもの、たいてい1つや2つの言語は知っているわけですから、既存の言語の知識が応用できるかどうかは、どれだけ素早く学ぶことができるかに大きく影響すると思います。もっとも、あまりに独自性がないと、その言語の存在価値もなくなってしまうわけですから、バランスが重要です。

+
+
+
効率性
+

プログラミング言語の効率は大きく分けると2種類あります。1つはプログラムがどれだけ高速に実行されるかという実行効率、もう1つはその言語で開発するときにどれだけ手早く開発できるかという開発効率です。もちろん両方優れているのに越したことはないのですが、最近のコンピュータの演算速度の進歩を考えると、より注目すべきは開発効率でしょう。

+

プログラミング言語の開発効率を向上させる方法はいろいろありますが、最も重要な要素は「簡潔性」だと思います。基本的には「簡潔に書けることは善」です。もっとも簡潔にしようとするあまり、病的に読めないプログラムになっては困ります。要するに、プログラマーがコンピュータにやらせたいと思っていることを、余計な指定なしに最少のステップで伝達する、というのが究極の目標でしょう。

+
+
+
記憶性
+

これは「学習容易性」と同様に他の言語からの類推ができることが有効だと思います。また、言語そのものが一貫性を持っていると、やはり類推が効いて思い出しやすいと思います。

+
+
+
エラー
+

プログラミング上で繰り返してしまう間違いというのはあるものです。私が経験があるのは、たとえばPascalでセミコロンの扱いを間違えるとか、Perlでセミコロンを忘れるとかです。あと、Cで文をブロックで囲むのもよく忘れます。このように頻繁に繰り返されるエラーに注意を払って取り除くことでよい言語を設計することができます。Rubyの場合、改行に意味を持たせてセミコロンの間違いをなくし、文はいつもendで終わるようにして、単文と複文の違いによる文法エラーもなくしています。

+
+
+
満足度
+

プログラミング言語の満足度はいろいろな要素で決まるのですが、きびきびプログラミングできる言語は使っていて楽しいものです。楽しいプログラミング、満足できるプログラミングは言語の究極の目標の1つです。プログラミングは本来非常に知的で、創造的で、楽しい活動のはずです。その本来の楽しさを取り返すのに「使いやすい言語」は役立つはずです。

+
+
+

使いやすい言語を求めて

+

普通の人はプログラミング言語を自分で設計したりはしないもののようなので、世の中に存在する言語の中から「使いやすい」ものを選ぶ必要があります。どんな言語が使いやすいか、あるいはどういう言語に満足するかは人によって違うので、これまでで述べた、5要素を基準にいろいろ探してみるのはどうでしょう。

+
+
+

え? どんな言語がよいか教えてくれって? 私に聞けば答えはRubyに決まってるでしょう?

+
+

私の知っている範囲でよさそうな言語にはRuby, Python, Lisp, Schemeなどがあります。その他にもあなたにぴったりの言語が見つかるかもしれません。

+
+
+

使いやすい言語を作ろう

+

世の中にプログラミング言語があふれているとはいえ、自分にぴったりの言語がなければ作るしかありません。私はもっともっと自分のプログラミング言語を設計する人が現れてもよいと思っています。もちろん日本でも言語を設計したことのある人はたくさんいると思います。しかし、それらの多くは純粋に研究のためであったり、ツールの組み込み用であったりで、使い勝手についてはあまり考慮されていないように思います。Rubyももう10歳になります。そろそろRubyを超えるような言語が新たに登場してもよい頃かもしれません。

+
+
+ +

+
+
+ + diff --git a/docs/vol1/xhtml/p-bmatter-001.xhtml b/docs/vol1/xhtml/p-bmatter-001.xhtml new file mode 100755 index 0000000..844ecf3 --- /dev/null +++ b/docs/vol1/xhtml/p-bmatter-001.xhtml @@ -0,0 +1,59 @@ + + + + + +初出一覧 + + + + +

Matz Essays Volume 1

+ + +
+

初出一覧

+
    +
  • 言語にとって美とは何か?: Rubyにみるスクリプト言語の実装技法, TransTECH, 1999年8月号, 翔泳社.

  • +
  • Free Language Report: オブジェクト指向スクリプト言語Ruby, C Magazine, 1999年8月号, SBクリエイティブ.

  • +
  • UNIX系OS間の移植性について, TransTECH, 1999年9月号, 翔泳社.

  • +
  • 連載 スクリプト言語: スクリプト言語の歴史, bit, 2001年2月号, 共立出版.

  • +
  • 特集 開発ツールをもっと便利に使おう: 最強の開発環境を求めて: Ruby最古のユーザーとしての開発環境, C Magazine, 2001年11月号, SBクリエイティブ.

  • +
  • 初等Ruby講座: はじめの一歩, Linux magazine, 2001年11月号, アスキー.

  • +
  • 初等Ruby講座: 条件判断とループ, Linux magazine, 2001年12月号, アスキー.

  • +
  • 初等Ruby講座: オブジェクトと変数, Linux magazine, 2002年1月号, アスキー.

  • +
  • 初等Ruby講座: 配列, Linux magazine, 2002年2月号, アスキー.

  • +
  • 初等Ruby講座: ハッシュ(または連想配列), Linux magazine, 2002年3月号, アスキー.

  • +
  • 初等Ruby講座: 文字列の操作, Linux magazine, 2002年4月号, アスキー.

  • +
  • 初等Ruby講座: パターンマッチ, Linux magazine, 2002年5月号, アスキー.

  • +
  • 初等Ruby講座: 入出力, Linux magazine, 2002年6月号, アスキー.

  • +
  • 初等Ruby講座: 数と電卓, Linux magazine, 2002年7月号, アスキー.

  • +
  • 初等Ruby講座: CGI, Linux magazine, 2002年8月号, アスキー.

  • +
  • 初等Ruby講座: Rubyで作るCGI, Linux magazine, 2002年9月号, アスキー.

  • +
  • 初等Ruby講座: CGIの道具箱, Linux magazine, 2002年10月号, アスキー.

  • +
  • 初等Ruby講座: ファイル処理, Linux magazine, 2002年11月号, アスキー.

  • +
  • 初等Ruby講座: ネットワークプログラミング, Linux magazine, 2002年12月号, アスキー.

  • +
  • 初等Ruby講座: 番外編: Rubyカンファレンスレポート, Linux magazine, 2003年1月号, アスキー.

  • +
  • 初等Ruby講座: プロセスとフォーク, Linux magazine, 2003年2月号, アスキー.

  • +
  • 初等Ruby講座: スレッド(その1), Linux magazine, 2003年3月号, アスキー.

  • +
  • 初等Ruby講座: スレッド(その2), Linux magazine, 2003年4月号, アスキー.

  • +
  • 初等Ruby講座 データの保存, Linux magazine, 2003年5月号, アスキー.

  • +
  • 初等Ruby講座: XMLとYAML, Linux magazine, 2003年6月号, アスキー.

  • +
  • 初等Ruby講座: XMLとYAML(その2), Linux magazine, 2003年7月号, アスキー.

  • +
  • 初等Ruby講座: エクストリーム・プログラミング, Linux magazine, 2003年8月号, アスキー.

  • +
  • 初等Ruby講座: 独習Ruby, Linux magazine, 2003年9月号, アスキー.

  • +
  • 初等Ruby講座: 再入門オブジェクト指向, Linux magazine, 2003年10月号, アスキー.

  • +
  • 初等Ruby講座: 最終回: ここからのRuby, Linux magazine, 2003年11月号, アスキー.

  • +
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-bmatter-002.xhtml b/docs/vol1/xhtml/p-bmatter-002.xhtml new file mode 100755 index 0000000..7a62704 --- /dev/null +++ b/docs/vol1/xhtml/p-bmatter-002.xhtml @@ -0,0 +1,1369 @@ + + + + + +索引 + + + + +

Matz Essays Volume 2

+ + +
+

索引

+

数字・記号

+

!str, 350

+

!, 116

+

"", 146

+

'', 146, 147

+

*, 115, 151

+

+, 115, 151

+

-, 76, 115

+

..., 113

+

.., 113

+

., 166, 382, 395

+

;, 81, 85

+

<=>, 115, 155

+

<% %>, 256

+

<%= %>, 256

+

<, 399

+

===, 169

+

==, 155

+

=>, 129

+

=~, 169, 170, 172

+

=, 381

+

=~, 151

+

?, 82

+

@@, 100, 381

+

@, 100, 381

+

[]=, 115, 130, 150, 151, 172

+

[], 112, 115, 130, 150, 151, 165, 172, 339, 382

+

$_, 99, 105

+

$~, 99

+

$, 99, 381

+

$1, 99, 105

+

$KCODE, 178

+

$SAFE, 105, 227, 315

+

%, 151, 199, 380

+

%形式, 146, 148

+

&, 115, 200

+

_, 99

+

_dump, 336

+

_load, 336

+

^, 200

+

~, 200

+

<<, 115, 148, 151, 184, 188, 200

+

>>, 200

+

\<ch>, 147

+

\a, 147

+

\b, 147

+

\C-x, 147

+

\cx, 147

+

\e, 147

+

\f, 147

+

\M-x, 147

+

\M-\C-x, 147

+

\n, 147

+

\nnn, 147

+

\r, 147

+

\s, 147

+

\t, 147

+

\xnn, 147

+

|-, 76

+

||, 382

+

|, 75, 115, 167, 200

+

10年後の技術者, 376

+

12のプラクティス, 369

+

2の補数, 201

+

4つのバリュー, 370

+

A

+

abort, 237, 339

+

acos, 206

+

acosh, 206

+

action, 222

+

alias, 382

+

all?, 118

+

alloca, 11

+

AMarshal, 337

+

ancestors, 386

+

ANSI C, 46

+

any?, 118

+

Apache, 219

+

ARGF, 191

+

ARGV, 69

+

Array, 112

+

asin, 206

+

asinh, 206

+

assert, 372

+

assert_equal, 372

+

assert_instance_of, 372

+

assert_kind_of, 372

+

assert_nil, 372

+

assert_raises, 372

+

assert_respond_to, 372

+

assoc, 115, 139

+

at, 115

+

atan, 206

+

atan2, 205

+

atanh, 206

+

atime, 184

+

autoconf, 47, 195

+

AutoFAQ, 233, 239

+

インストール, 243

+

カスタマイズ, 239

+

初期化, 239

+

メイン処理, 241

+

automake, 51

+

autoscan, 50

+

awk, 55

+

B

+

Babbage, Charles, 341

+

Bangメソッド, 116

+

base64, 159

+

BASIC, 8, 60, 409

+

BasicSocket, 280

+

close_read, 280

+

close_write, 280

+

getpeername, 280

+

getsockname, 280

+

getsockopt, 280

+

recv, 280

+

send, 280

+

setsockopt, 280

+

shutdown, 280

+

Bayesianフィルタ, 353

+

Beck, Kent, 368

+

begin, 85, 171, 383

+

BiCounter, 399

+

Bignum, 18, 198, 395

+

binmode, 184

+

Black, David Alan, 109, 297

+

BNF, 8

+

BOF(Bird Of a Feather), 93

+

bogofilter, 353

+

Bourbaki, Nicolas, 341

+

Brannan, Paul, 295

+

break, 86, 383

+

Bryant, Avi, 109, 294

+

Bシェル, 54

+

C

+

C++, 12

+

capitalize, 151, 154

+

capitalize!, 151

+

casecmp, 155

+

casefold?, 169

+

cat, 191

+

catch, 383

+

ceil, 203

+

center, 151

+

CGI, 234

+

FileStore, 249

+

header, 234

+

print, 234

+

Session, 249

+

cgi, 222, 234

+

CGI(Common Gateway Interface), 25, 216, 231, 247

+

cgi.rb, 255

+

cgi/session.rb, 248

+

char, 44

+

chmod, 184, 193

+

chomp, 151

+

chomp!, 151

+

chop, 151

+

chop!, 151

+

chown, 184

+

Clarke, Tom, 293

+

class, 97, 103, 382, 395, 399

+

clear, 115, 130, 134

+

close, 184, 188

+

closed?, 184, 189

+

close_read, 184

+

close_write, 184

+

clxmlserial, 338

+

cmail, 143, 352

+

Cockburn, Alistair, 77, 298

+

coerce, 210

+

collect, 115, 117, 130

+

collect!, 115

+

commit, 237, 339

+

compact, 115

+

compact!, 115

+

compile, 169

+

complex, 207

+

concat, 115, 151

+

ConditionVariable, 328

+

configure, 47

+

constant, 82

+

Content-typeヘッダー, 219

+

cos, 205

+

cosh, 206

+

count, 151

+

Counter, 397

+

CPAN(Comprehensive Perl Archivers Network), 232

+

crypt, 151

+

csh, 54

+

ctime, 184

+

Cunningham, Ward, 77

+

C言語, 3, 46

+

Cシェル, 54

+

D

+

daytime, 281

+

def, 98, 103, 382

+

default, 130, 136

+

default=, 130

+

defined?, 82

+

delete, 115, 130, 151

+

delete!, 151

+

delete_at, 115

+

delete_if, 115, 130, 133

+

Deniel, Berger, 292

+

detect, 115, 117, 130, 135

+

Deutsch, L. Peter, 268

+

Digest::MD5, 268

+

<<, 268

+

digest, 268

+

hexdigest, 268

+

update, 268

+

digest/md5, 268

+

Dijkstra, Edsger Wybe, 81

+

Dir.glob, 114

+

divmod, 199

+

do, 85

+

downcase, 151, 154

+

downcase!, 151

+

downto, 204

+

dump, 151

+

E

+

E, 205

+

each, 115, 117, 130, 151, 155, 184, 187

+

each_byte, 151, 156, 184, 187

+

each_index, 115

+

each_key, 130, 132

+

each_line, 151, 156, 184, 187

+

each_pair, 130, 132

+

each_value, 130

+

each_with_index, 115

+

eban, 195, 269

+

else, 83, 84

+

ぶらさがり〜, 89

+

elsif, 83

+

Emacs, 63, 364

+

empty?, 115, 130, 151

+

end, 28, 88, 171

+

ENV, 138

+

eof?, 184

+

eql?, 140

+

ERb, 258

+

eruby, 256

+

eRuby(埋め込みRuby), 255, 256

+

escape, 169

+

EUC-JP, 177

+

eval, 289

+

exec, 301

+

EXILIM, 264

+

exp, 205

+

expat, 26

+

F

+

false, 82

+

FAQマネージャ, 232

+

fcntl, 184

+

fetch, 118, 129, 130, 137

+

File, 75, 183, 269

+

File::foreach, 69

+

File::new, 76

+

File::open, 76

+

fileno, 184

+

FileStore, 249

+

fill, 115

+

find, 115, 117, 130

+

find_all, 115, 117, 130

+

first, 115

+

Fixnum, 17, 198, 395

+

flatten, 115

+

flatten!, 115

+

Float, 154, 198, 203

+

flock, 184, 191

+

floor, 203

+

flush, 184, 189

+

fnmatch, 195

+

for, 69, 87, 116, 383

+

fork, 300, 301, 304, 311

+

二重〜, 303, 304

+

form, 220

+

Fowler, Martine, 77

+

frexp, 205

+

FSF(Free Software Foundation), 245

+

ftools, 268, 269

+

chmod, 269

+

cmp, 269

+

compare, 269

+

copy, 269

+

cp, 269

+

install, 269

+

makedirs, 269

+

makepath, 270

+

move, 269

+

mv, 269

+

rm_f, 269

+

safe_unlink, 269

+

syscopy, 269

+

verbose, 269

+

FTP(File Transfer Protocol), 279, 283

+

G

+

GC, 13, 124

+

getc, 184, 186

+

getchar, 186

+

get_parameters, 363

+

gets, 184, 186

+

Gibson, Steven, 297

+

GOTO, 81

+

gprof, 6

+

Graham, Paul, 353

+

Granger, Michael, 388

+

grep, 27, 115

+

gsub, 151, 172, 173

+

gsub!, 151, 172, 173

+

Gtk, 26

+

GUI(Graphical User Interface), 26

+

GUIライブラリ, 26

+

H

+

Hash[], 129

+

hash, 140

+

Hash.new, 136

+

hello world, 27

+

Hendrickson, Chet, 109

+

hex, 151

+

hiddenフィールド, 248

+

host, 285

+

HotSpot, 12

+

HTML(Hyper Text Markup Language), 216

+

フォーム, 220

+

HTTP(HyperText Transfer Protocol), 248, 279, 283

+

クライアント, 216, 285

+

サーバー, 216

+

リクエスト, 251

+

HTTP

+

finish, 285

+

get, 285

+

get_print, 285

+

head, 285

+

new, 285

+

post, 285

+

start, 285

+

Hunt, Andy, 77, 109, 296

+

hypot, 206

+

I

+

IEEE, 46

+

if, 81, 383

+

後置〜, 83

+

修飾子, 83

+

ifnone, 118

+

include?, 115, 130, 151

+

index, 115, 151, 172

+

indexes, 115, 130

+

indices, 115, 130

+

initプロセス, 303

+

inject, 118

+

input, 222

+

insert, 118

+

inspect, 134

+

int, 44

+

Integer, 154, 198, 202, 203, 395

+

intern, 151, 156

+

invert, 130, 135

+

IO, 75, 183

+

IO.readlines, 114

+

IO::popen, 76

+

ioctl, 184

+

IOWA, 255

+

IPSocket, 280

+

addr, 280

+

peeraddr, 280

+

recvfrom, 280

+

irb(対話型Ruby), 72, 208, 393

+

J

+

JAOO(Java and OO), 77

+

Java, 3

+

Jeffries, Ron, 109

+

JIS(ISO-2022-JP), 177

+

JIT(Just In Time compile), 12

+

Johnson, Lyle, 109, 292

+

join, 115

+

K

+

K&R, 46

+

kcode, 169

+

Kconv, 238

+

kconv, 238

+

Kernel\#to_yaml, 350

+

key?, 130

+

keys, 130, 132

+

Kilmer, Rich, 295, 388

+

kitaj, 365

+

L

+

Lambda Calculus, 289

+

Lambdaインタプリタ, 289

+

The Language List, 4

+

last, 115

+

last_match, 169

+

ldexp, 205

+

Lea, Doug, 77

+

Leavengood, Ryan, 109

+

Lee, Tim-Burners, 215

+

length, 96, 115, 130, 151, 152, 171

+

libtool, 51

+

lineno, 184

+

lineno=, 184

+

Linux Conference 2001, 92

+

Lisp, 60, 260, 289, 345

+

ljust, 151

+

LL Saturday, 400

+

LL(Lightweight Language), 400

+

LL2, 298

+

local_variables, 114

+

log, 205

+

log10, 205

+

long, 44

+

long\,long, 44

+

loop, 383

+

lstat, 184

+

M

+

map, 115, 117, 130

+

map!, 115, 130

+

Marshal, 334

+

dump, 334

+

load, 334

+

match, 169, 170

+

MatchData, 170

+

Math, 205

+

Matz, 109, 293, 296, 388

+

max, 115

+

May, Patrick, 293

+

McBreen, Pete, 109

+

McCarthy, John, 289

+

McCorkhill, David, 388

+

MD5アルゴリズム, 267

+

Meeting2000, 38

+

member?, 115, 130

+

Merril, Brad, 298

+

min, 115

+

Mix-in, 325

+

mode, 193

+

mod_ruby, 251

+

module, 103, 382

+

modulo, 199

+

mtime, 184

+

MUSHA, Akinori, 268

+

Mutex, 322

+

lock, 323

+

synchronize, 323

+

unlock, 323

+

N

+

name, 222

+

net/ftp, 283

+

net/http, page{283--285}

+

net/imap, 283

+

net/pop, 283

+

net/smtp, 283

+

net/telnet, 283

+

NetNet

+

HTTP, 285

+

new, 169, 312

+

next, 87, 151, 156, 383

+

next!, 151

+

Nielsen, Jakob, 411

+

nil, 82, 395

+

nitems, 115

+

Numeric, 395

+

Nygaard, Kristien, 78

+

O

+

Object, 395

+

oct, 151

+

offset, 171

+

Ong, Emil, 109

+

OOPSLA(Object-oriented Programming, System, Language and Applications), 108, 297

+

open, 73, 185

+

入出力モード, 74

+

パーミッション, 74

+

引数, 74

+

owned?, 193

+

P

+

p, 134

+

pack, 115

+

Parrot, 292

+

parsedate, 175

+

Pascal, 3

+

path, 184, 285

+

PC-1210, 409

+

Perl, 4, 23, 55

+

Perl 6, 292

+

PI, 205

+

pid, 184

+

Pine, Chris, 388

+

pop, 115

+

POP3(Post Office Protocol version 3), 283

+

port, 285

+

pos, 184, 189

+

pos=, 184, 190

+

POSIX, 46

+

post_match, 171

+

pre_match, 171

+

print, 184, 187

+

printf, 69, 184, 187, 202

+

Process, 303

+

egid, 304

+

egid=, 304

+

euid, 304

+

euid=, 304

+

exit!, 304

+

fork, 304

+

getpgid, 304

+

getpgrp, 304

+

getpriority, 304

+

gid, 304

+

gid=, 304

+

kill, 304

+

pid, 304

+

ppid, 304

+

setpgid, 304

+

setpgrp, 304

+

setpriority, 304

+

setsid, 304

+

times, 304

+

uid, 304

+

uid=, 304

+

wait, 304

+

wait2, 304

+

waitall, 304

+

waitpid, 304

+

waitpid2, 304

+

prof, 6

+

PStore, 338

+

pstore, 235

+

push, 115

+

putc, 184, 188

+

puts, 68, 97, 184

+

Python, 4, 23, 57

+

Q

+

query, 285

+

Queue, 326

+

SizedQueue, 327

+

quote, 169

+

R

+

RAA(Ruby Application Archive), 231

+

rand, 206

+

rassoc, 115

+

Rational, 211

+

rational, 207

+

rational.rb, 211

+

rb_eval, 10

+

read, 184, 186

+

readable?, 193

+

readchar, 184

+

readline, 184, 186

+

readlines, 184, 186

+

redo, 87, 383

+

ReFe, 385

+

Regexp, 163

+

rehash, 130, 141

+

reject, 115, 130, 133

+

reject!, 115, 130, 133

+

remainder, 199

+

reopen, 184

+

replace, 115, 130, 151

+

retry, 383

+

return, 383

+

reverse, 115, 151, 152

+

reverse!, 115, 151, 152

+

reverse_each, 115, 117

+

rewind, 184, 190

+

REXML, 360

+

ri, 385

+

rindex, 115, 151, 172

+

Rite, 178

+

rjust, 151

+

root, 236

+

root?, 237, 339

+

roots, 237, 339

+

Rubotzky, Ken, 109

+

Ruby, 4, 23, 58, 66

+

1.2.6, 25

+

1.3.4, 25

+

1.6, 232

+

1.6.0, 124

+

1.7, 118, 122, 154, 155, 202, 203, 205, 206, 338

+

1.8, 124, 371

+

1.8.0, 400

+

2.0, 178

+

GC, 13, 124

+

GUI操作, 30

+

M17N, 178

+

インストール, 25, 70

+

インタプリタ, 8, 10

+

エラーチェック, 34

+

オブジェクト指向, 31, 35

+

拡張ライブラリ, 21, 36

+

ガベージコレククション, 13

+

基礎, 379

+

気持ち良さ, 32

+

クラスライブラリ, 31

+

サンプルプログラム, 27, 68

+

実行, 69

+

実装, 8

+

スレッド, 19

+

設計思想, 27

+

多言語対応, 125

+

楽しいプログラミング, 27

+

抽象化, 35

+

データ型, 16

+

特徴, 4, 24, 58, 67

+

表現, 33

+

文法, 33, 380

+

メモリ管理, 12, 34

+

役割, 25

+

ライブラリ, 384

+

リファレンスマニュアル, 384

+

Ruby Conference, 108, 291

+

Rubyインタプリタ, 69

+

コマンドラインオプション, 72

+

使い方, 71

+

『Rubyソースコード完全解説』, 307

+

Russell, Sean, 289

+

S

+

scan, 151, 172, 173

+

scheme, 285

+

Schwarz, Randal, 122

+

Schwern, Michel G., 77

+

seek, 184, 190

+

select, 115, 117, 130, 135, 222

+

self, 97, 382

+

Session, 249

+

close, 250

+

delete, 250

+

FileStore, 249

+

new, 249

+

SGmail, 26, 36

+

sh, 54

+

shift, 115, 130, 134

+

short, 44

+

Simula, 78

+

sin, 205

+

sinh, 206

+

size, 115, 130, 151, 152, 171, 394, 395

+

SJIS, 177

+

slice, 115, 150, 151

+

slice!, 115, 151

+

Smalltalk, 8, 60

+

SMTP(Simple Mail Transfer Protocol), 279, 283

+

Socket, 280

+

sort, 115, 117, 120, 130

+

降順, 120

+

昇順, 120

+

比較回数, 121

+

比較条件, 120

+

sort!, 115, 117

+

sort_by, 118, 122

+

source, 169

+

spam, 352

+

spamassassin, 353

+

spamprobe, 353

+

split, 151, 153, 172

+

sprintf, 146, 149, 202

+

sqrt, 205

+

squeeze, 151

+

squeeze!, 151

+

srand, 206

+

stat, 184

+

STDERR, 183

+

stderr, 183

+

STDIN, 183

+

stdin, 183

+

stdio, 194

+

STDOUT, 183

+

stdout, 183

+

step, 204

+

store, 130

+

String, 145, 238, 394

+

string, 171

+

strip, 151

+

strip!, 151

+

sub, 151, 172, 173

+

sub!, 151, 172, 173

+

submit, 222

+

succ, 151

+

succ!, 151

+

Sugalski, Dan, 292, 296

+

sum, 151

+

superclass, 395

+

swapcase, 151, 154

+

swapcase!, 151

+

Sync, 324

+

sync, 184, 325

+

sync=, 184

+

Sync_m, 325

+

sysread, 184, 187

+

system, 300

+

syswrite, 184, 188

+

S式, 289, 345

+

T

+

Talbott, Nathaniel, 109, 292

+

tan, 205

+

tanh, 206

+

Tcl, 8, 57

+

TCP/IP, 279, 283

+

TCPServer, 280

+

TCPSocket, 280

+

tDiary, 364

+

tdiary-mode, 364

+

tell, 184, 189

+

test/unit, 371

+

textarea, 222

+

then, 81

+

Thomas, Dave, 77, 109, 294, 385, 388

+

Thomson, Phil, 292

+

Thread, 312

+

[]=val, 313

+

[], 313

+

abort_on_exception, 313

+

abort_on_exception=val, 313

+

alive?, 313

+

critical, 313

+

critical=val, 313

+

current, 313

+

exit, 313

+

fork, 313

+

join, 313

+

key?, 313

+

keys, 313

+

kill, 313

+

list, 313

+

main, 313

+

new, 313

+

pass, 313

+

priority, 313

+

priority=val, 313

+

raise, 313

+

run, 313

+

safe_level, 313

+

start, 313, 316

+

status, 313

+

stop, 313

+

stop?, 313

+

value, 313

+

wakeup, 313

+

threaded code, 12

+

throw, 383

+

times, 204

+

Tk, 26, 57

+

TMarshal, 338

+

TMTOWTDI(There's More Than One Way To Do It), 56

+

to_f, 151, 203

+

to_i, 151, 202, 203

+

Tomson, Phil, 388

+

to_s, 134, 156, 202

+

tr, 151

+

tr!, 151

+

trace_var, 105

+

transaction, 236, 339

+

tr_s, 151

+

tr_s!, 151

+

true, 82

+

truncate, 184

+

tty?, 184

+

Turing, Alan Mathison, 80, 341

+

type, 222

+

U

+

UDPSocket, 280

+

undef, 382

+

uniq, 115

+

uniq!, 115

+

UNIX, 43

+

UNIXServer, 280

+

UNIXSocket, 280

+

unless, 84, 383

+

修飾子, 85

+

unpack, 151, 153, 157

+

unshift, 115

+

until, 86, 383

+

修飾子, 86

+

upcase, 151, 154

+

upcase!, 151

+

update, 130

+

upto, 151, 156, 204

+

URI(Uniformed Resource Indicator), page{284}

+

URI

+

extract, 285

+

join, 285

+

parse, 285

+

split, 285

+

uri, page{284}

+

URL(Unified Resource Locator), 216, 279

+

userinfo, 285

+

UTF-8, 177

+

uuencode, 159

+

V

+

value?, 130

+

values, 130, 132

+

van Rossum, Guido, 389

+

VM(Virtual Machine), 93

+

von Neumann, John, 341

+

W

+

wait, 303

+

waitpid, 303

+

Wall, Larry, 55, 161, 389

+

Warlus, 255

+

Webアプリケーション, 248

+

Webアプリケーションフレームワーク, 255

+

Webセキュリティ, 225

+

Web日記, 364

+

Welch, Brent, 77

+

while, 85, 383

+

修飾子, 85

+

why the lucky stiff, 293

+

write, 184, 188

+

WWW(World Wide Web), 215, 278

+

X

+

X Window System, 278

+

XMarshal, 338

+

XML(eXtensible Markup Language), 26, 345, 355

+

YAMLとの共通点, 357

+

YAMLとの違い, 355

+

xml-configfile, 360

+

XmlConfigFile

+

get_boolean, 362

+

get_float, 362

+

get_int, 362

+

get_string, 362

+

XMLパーサー, 26

+

XMLプログラミング, 26

+

xor, 201

+

XP, 368

+

12のプラクティス, 369

+

4つのバリュー, 370

+

XPATH, 362

+

XSS(Cross Site Scripting), 227

+

Y

+

yacc(yet another compiler compiler), 8

+

YAML, 346, 355

+

XMLとの共通点, 357

+

XMLとの違い, 355

+

応用, 359

+

欠点, 357

+

文法, 349

+

YAML

+

loadload, 350

+

yaml.rb, 350

+

YARPC19101(Yet Another Ruby/Perl Conference 19101), 124

+

yield, 382

+

Yoshino, 374

+

+

青木峰郎, 92, 283, 307, 385

+

青山和光, 283

+

アクセス権, 192

+

値, 96, 101

+

型, 7

+

アプリケーション層, 283

+

余り, 199

+

アラインメント, 45

+

アラン・チューリング, 80

+

アンカー, 167

+

アンテナ, page{284}

+

+

イーサネット, 279, 283

+

石塚圭樹, 212, 341

+

移植性, 43

+

磯蘭水, 401

+

イテレータ, 87, 132, 204

+

井上浩, 213

+

インスタンス, 97, 393

+

インスタンス変数, 100, 105, 381

+

インタプリタ, 4

+

インデックス, 113

+

インプットメソッド, 212

+

インラインメソッドキャッシュ, 11

+

+

うぇぶ日記, 364

+

+

エクストリーム・プログラミング, 368

+

エドガー・ダイクストラ, 81

+

演算子式, 382

+

円周率, 205

+

エンディアン, 44, 160

+

ビッグ〜, 44

+

リトル〜, 44

+

+

オープンソース, 142

+

オープンソースコンベンション2003, 387

+

生越昌己, 213

+

お手軽プログラミング, 25

+

鬼車, 180

+

オブジェクト, 95, 98, 392

+

型, 7

+

指定, 98

+

保存, 333

+

文字列, 394

+

オブジェクト式, 380

+

オブジェクト指向, 4, 31, 66, 391

+

+

カーネルレベルスレッド, 19, 312

+

開発環境, 63

+

開発効率, 6

+

カウンタクラス, 397

+

拡張ライブラリ, 21, 30

+

数, 198

+

画像管理, 265

+

仮想機械, 8, 93

+

型, 7

+

値の〜, 7

+

オブジェクトの〜, 7

+

静的な〜, 7

+

動的な〜, 7

+

型仮定, 12

+

狩野宏樹, 213

+

ガベージコレククション(GC), 13, 260

+

簡易言語, 3

+

環境変数, 138

+

かんな, 213

+

カンプフ・フォークトテスト, 80

+

+

偽, 82

+

キー, 128

+

規格, 46

+

擬似変数, 97, 100, 381

+

擬似乱数, 206

+

基数, 202

+

寄付モデル, 245

+

逆ハッシュ, 135

+

木山まさと, 92, 124

+

キュー, 326

+

きゅうり, 213

+

きゅうり改, 213

+

+

クイックソート, 120

+

空間効率, 6

+

クッキー, 235, 248

+

組み込みクラスライブラリ, 16

+

クライアント, 216

+

クライアント/サーバー, 277

+

クラス, 97, 98, 382, 393, 396

+

スーパー〜, 97

+

クラス定義, 32

+

クラス変数, 100, 105, 381

+

クラスライブラリ, 31

+

グルーピング, 167

+

グローバル変数, 99, 105, 381

+

+

継承, 393, 398

+

言語処理系

+

実装, 5

+

+

公開鍵, 267

+

公開鍵暗号, 267

+

構造, 343

+

後置if, 83

+

構文解析, 8

+

構文木, 8

+

コードポイント, 177

+

国際感覚, 161

+

小迫清美, 180

+

コピー

+

シャロー〜, 335

+

ディープ〜, 335

+

コピー・オン・ライト, 16

+

コマンド呼び出し, 300

+

コマンドライン引数, 68

+

コレクション, 112

+

コンカレント, 312

+

コンサバティブGC, 15

+

コンテナ, 112

+

コンパイラ, 8

+

コンパイラ・インタプリタ方式, 8

+

+

サーバー, 215

+

サーバー/クライアントモデル, 216

+

再帰, 260

+

最左最長一致, 166

+

最適化, 9

+

佐原大輔, 92

+

算術演算, 199

+

参照, 101

+

+

ジェネレーション・スキャベンジング, 15

+

シェル, 54

+

時間の計算, 31

+

式, 81, 98

+

鴫原厚博, 36

+

四捨五入, 203

+

辞書, 128

+

自然対数の底, 205

+

実行効率, 6

+

シフトJIS, 177

+

シャローコピー, 335

+

ジャンプ, 86

+

シュウォーツ変換, 122

+

出版モデル, 245

+

出力, 181

+

条件判断, 81, 383

+

条件変数, 328

+

証明, 79

+

シリアライズ, 334

+

真, 82

+

シングルタスク, 299

+

シンボル, 10, 156

+

信頼できない実行, 225

+

+

数学, 341

+

数学関数, 205

+

数値

+

変換, 203

+

文字列化, 202

+

数値計算, 17

+

数値表現, 198

+

スーパークラス, 97, 395, 399

+

スクリプト言語, 4, 53

+

性質, 59

+

スコープ, 103

+

トップレベル, 103

+

ブロック, 103

+

すずきひろのぶ, 294

+

スタティックスコープ, 260

+

ステートレス性, 248

+

ストップ・アンド・コピー, 14

+

ストリーム, 182

+

スピード狂, 319

+

スレッド, 19, 300, 311, 321

+

EXモード, 324

+

killed, 314

+

run, 314

+

SHモード, 324

+

stop, 314

+

to_kill, 314

+

カーネルレベル〜, 19

+

実行状態, 314

+

状態遷移, 314

+

消費者, 326

+

生産者, 326

+

生成, 312

+

セキュリティレベル, 315

+

相互排他ロック, 322

+

データ整合性の喪失, 317

+

デッドロック, 317

+

ユーザーレベル〜, 19

+

リソースの競合, 322

+

ロック, 322

+

+

正規表現, 18, 163

+

〜マッチ, 170

+

〜リテラル, 170

+

アンカー, 167

+

オプション, 168

+

グルーピング, 167

+

最左最長一致, 166

+

選択, 167

+

なまけものマッチ, 166

+

任意の1文字, 166

+

メタ文字, 164

+

文字クラス, 165

+

よくばりマッチ, 166

+

制御構造, 81, 383

+

生産者・消費者モデル, 326

+

整数, 17, 198

+

サイズ, 44

+

静的な型, 7

+

性能向上の原則, 6

+

性能の改善, 6

+

咳, 258

+

関将俊, 258

+

セッション, 248

+

セミコロン, 81, 85

+

線形検索, 139

+

宣言, 103

+

+

相互排他ロック, 322

+

操作性, 6

+

ソート, 117, 119

+

安定, 122

+

クイック〜, 120

+

バブル〜, 119

+

ソケット, 279

+

ソケット操作, 29

+

ソケットプログラミング, 281

+

ソフトウェア

+

移植性, 195

+

高速化, 320

+

ゾンビ, 302

+

+

大域ジャンプ, 383

+

ダイジェスト値, 267

+

代入, 101, 381

+

高橋征義, 293, 359

+

多重継承, 260

+

多態, 395

+

ただただし, 364

+

田中哲, 337

+

種, 206

+

楽しいプログラミング, 27

+

たまごっち, 353

+

たまてばこ, 288

+

+

置換, 173

+

逐次実行, 81

+

中間言語, 8

+

抽象化, 35

+

チューリングテスト, 80

+

チューリングマシン, 80

+

+

ディープコピー, 335

+

定義文, 382

+

定数, 100, 106, 381

+

データ構造, 343

+

データ整合性の喪失, 317

+

テーブル, 128

+

テキスト処理, 25

+

哲学者の晩餐, 317

+

デッドロック, 317

+

テンプレート文字, 157

+

+

動的結合, 395

+

動的な型, 7, 260

+

動的ページ, 217

+

特異クラス定義, 383

+

特異メソッド定義, 383

+

特殊変数, 171

+

トランザクション, 236, 339

+

トランスポート層, 279, 283

+

+

なかむらひろし, 359

+

名札モデル, 404

+

名前, 156

+

なまけものマッチ, 166

+

+

二重fork, 303

+

入出力, 181

+

入出力モード, 74

+

入力, 181

+

任意の1文字, 166

+

任意の区切り文字, 380

+

+

縫い糸コード, 12

+

+

ネットワーク層, 279, 283

+

ネットワークバイトオーダー, 45

+

ネットワークプログラミング, 25, 279

+

+

パーサー, 8

+

パーミッション, 74

+

パーミッションマスク, 75

+

排他制御, 324

+

排他的論理和, 201

+

バイトコード, 8

+

パイプ, 183

+

パイプライン, 75, 183

+

配列, 16, 111, 112, 394

+

インデックス, 113

+

繰り返し, 116

+

範囲, 113

+

メソッド, 115

+

要素の参照, 112

+

要素の変更, 113

+

要素番号, 113

+

配列式, 112

+

箱モデル, 404

+

パターン, 163

+

文法, 164

+

バックスラッシュ表現, 146

+

ハッシュ, 16, 128

+

アクセス, 129

+

値, 128

+

キー, 128

+

逆〜, 135

+

検査, 131

+

更新, 131

+

削除, 131, 133

+

出力, 134

+

生成, 129

+

ソート, 136

+

追加, 131

+

デフォルト値, 129, 136

+

反転, 134

+

ハッシュ値, 267

+

ハッシュ式, 129

+

ハッシュテーブル, 128

+

バッファオーバーラン, 225

+

バッファリング, 189

+

パトロンモデル, 246

+

バブルソート, 119

+

原信一郎, 341

+

パラレル, 312

+

+

非UNIX環境, 51

+

ヒアドキュメント, 146, 148, 255, 380

+

引数, 96

+

左ビットシフト, 201

+

ビッグエンディアン, 44

+

日付, 175

+

ビットand, 200

+

ビットor, 200

+

ビット演算, 200

+

秘密鍵, 267

+

標準出力, 183

+

標準入出力, 75, 183

+

標準入力, 183

+

+

ファイル

+

ロック, 191

+

ファイル処理, 263

+

ファイルポインタ, 189

+

フィルタ, 183, 190

+

フォーク, 300, 301

+

副業モデル, 244

+

複素数, 207

+

複文, 89

+

複利計算, 207

+

符号化方式, 177

+

浮動小数点数, 198

+

部分文字列, 150

+

ぶらさがりelse, 89

+

フラッシュ, 189

+

フリーソフトウェア, 244

+

一生, 308

+

プログラマー, 330

+

数学, 341

+

プログラミング

+

基礎, 81

+

プログラミング教育, 26

+

プログラミング言語, 3, 66

+

型, 7

+

実装, 4

+

制御構造, 81

+

設計, 4

+

プロセス, 300

+

生成, 300

+

制約, 306

+

ゾンビ, 302

+

入出力, 302

+

ブロック, 89, 382

+

プロトコル, 279, 282

+

プロトタイピング, 26

+

プロファイラ, 6

+

プロファイル, 6

+

+

グループ化, 383

+

文のまとまり, 88

+

+

並列実行, 299

+

べき乗, 199

+

ヘッダー, 219

+

別名定義, 382

+

変数, 98, 103, 380

+

〜は参照である, 101

+

〜は容器である, 101

+

インスタンス〜, 100, 105, 381

+

擬似, 381

+

擬似〜, 100

+

クラス〜, 100, 105, 381

+

グローバル〜, 99, 105, 381

+

スコープ, 103

+

宣言, 103

+

たとえ話, 404

+

定数, 100, 106, 381

+

有効範囲, 103

+

ローカル〜, 99, 103, 381

+

+

ポインタのサイズ, 44

+

ポート, 279

+

ホスト, 279

+

ポリモルフィズム, 395

+

+

マーク・アンド・スイープ, 14

+

マークアップ言語, 216

+

マーシャル, 334

+

マイコン, 409

+

前田修吾, 213, 252, 256, 283, 341, 359, 372

+

マクロ言語, 3

+

松尾尚典, 38

+

マッピング, 128

+

マルチタスク, 300

+

+

右ビットシフト, 201

+

+

無限多倍長整数, 18

+

無限ループ, 383

+

+

迷惑メール, 352

+

メソッド, 96, 98, 382, 392

+

〜キャッシュ, 11

+

〜呼び出し, 381

+

終了, 383

+

メタ・データフォーマット, 344

+

メタ文字, 164

+

メッセージ, 96, 98

+

+

文字クラス, 165

+

文字コード, 150, 168, 177, 238

+

文字集合, 177

+

モジュール, 382

+

文字列, 16, 145

+

大文字小文字の変換, 154

+

逆順, 152

+

数値化, 202

+

整数化, 153

+

長さ, 152

+

比較, 155

+

浮動小数点数化, 154

+

部分〜, 150

+

分割, 153

+

文字単位, 152

+

文字列オブジェクト, 394

+

文字列リテラル, 146

+

+

有効範囲, 103

+

ユーザーレベルスレッド, 19, 312

+

ユーザビリティ, 411

+

有理数, 207

+

ユニットテスト, 371

+

+

要素番号, 113

+

よくばりマッチ, 166

+

+

ライブラリ, 384

+

ラベル, 98

+

乱数, 206

+

擬似〜, 206

+

ランダムアクセス, 189

+

+

リソース, 322

+

リテラル, 98, 146

+

リトルエンディアン, 44

+

リファレンスカウント, 13

+

リファレンスマニュアル, 384

+

+

ループ, 81, 85, 383

+

脱出, 383

+

中断, 86

+

無限〜, 383

+

+

例外, 260

+

例外処理, 383

+

レシーバ, 96, 382

+

連想配列, 128

+

+

ローカル変数, 99, 103, 381

+

ロック, 322

+

論理積, 200

+

論理和, 200

+

+

わたなべひろふみ, 195, 269

+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-colophon.xhtml b/docs/vol1/xhtml/p-colophon.xhtml new file mode 100755 index 0000000..9bd7daf --- /dev/null +++ b/docs/vol1/xhtml/p-colophon.xhtml @@ -0,0 +1,84 @@ + + + + + +Matz Essays + + + + +

Matz Essays Volume 1

+ +
+ + +
+
+

+
+
+

Matz Essays Volume 1

+
+
+

1999〜2003

+
+
+ + +
+

まつもと ゆきひろ

+
+ + + +
+

2024年11月26日 発行

+
+ +
+

本書(電子版)は下記にもとづいて制作しました

+

『Matz Essays Volume 1』

+

2024年11月26日初版発行

+ +
+ +
+

発行者 夏野 剛

+

発行所 株式会社ドワンゴ

+

〒 104-0061 東京都中央区銀座4-12-15歌舞伎座タワー

+

03-3549-6153(編集)

+ +

https://asciidwango.jp/

+
+ +
+

+本書(電子版)に掲載されているコンテンツ(ソフトウェア/プログラム/データ/情報を含む)の著作権およびその他の権利は、すべて株式会社ドワンゴおよび正当な権利を有する第三者に帰属しています。法律の定めがある場合または権利者の明示的な承諾がある場合を除き、これらのコンテンツを複製・転載、改変・編集、翻案・翻訳、放送・出版、公衆送信(送信可能化を含む)・再配信、販売・頒布、貸与等に使用することはできません。 +

+アスキードワンゴ編集部
+編 集  鈴木嘉平、星野浩章

+
+ +
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-cover.xhtml b/docs/vol1/xhtml/p-cover.xhtml new file mode 100755 index 0000000..7c1ea46 --- /dev/null +++ b/docs/vol1/xhtml/p-cover.xhtml @@ -0,0 +1,27 @@ + + + + + +Matz Essays + + + + +
+ + + + + +
+ + + diff --git a/docs/vol1/xhtml/p-fmatter-001.xhtml b/docs/vol1/xhtml/p-fmatter-001.xhtml new file mode 100755 index 0000000..48bd270 --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-001.xhtml @@ -0,0 +1,36 @@ + + + + + +Matz Essays + + + + + +

Matz Essays Volume 1

+ + + +
+
+ + + +
+
+ +

+
+ + + + diff --git a/docs/vol1/xhtml/p-fmatter-002.xhtml b/docs/vol1/xhtml/p-fmatter-002.xhtml new file mode 100755 index 0000000..01fb29d --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-002.xhtml @@ -0,0 +1,29 @@ + + + + + +Matz Essay + + + + +

Matz Essays Volume 1

+ + +
+

商標

+

本文中に記載されている社名および商品名は,一般に開発メーカーの登録商標です.
+なお,本文中では TM・©・® 表示を明記しておりません.

+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-fmatter-003.xhtml b/docs/vol1/xhtml/p-fmatter-003.xhtml new file mode 100755 index 0000000..c10ecf9 --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-003.xhtml @@ -0,0 +1,35 @@ + + + + + +はじめに + + + + +

Matz Essays Volume 1

+ + +
+

はじめに

+

本書は、1999年から2003年までいろいろな雑誌掲載された私が執筆した記事をまとめたものです。これらの記事を書いていた頃には10年後には創造もつかない変化が起きているに違いないと思っていましたが、実際に10年後を超えて、20年経っても割と「当たり前」な変化しか起きなかったように思います。

+

コンピューターの性能は順当に向上し、当時はまだ一部の人だけがアクセスできていたインターネットも一般化しました。普通の人が普通に超高性能コンピューター(スマートフォンのことです)を持ち歩き、いつでもどこでもインターネットにアクセスする未来はすばらしいものですが、「予想を超えた」とまでは言い難い気がします。

+

見方を変えれば、本書にまとめた記事の有効性もあまり減っていないということでもあります。20年前の記事を読み返してみれば、時代の中に忘れ去ってしまった未来へのヒントが埋まっているかもしれません。

+

そういえば、この「はじめに」を書いている2024年は、ChatGPTなどの登場により、いわゆるAIが夢物語ではなくなったタイミングではあります。また、量子コンピューターの領域でも進歩があったと報道されています。もしかすると、さらに10年先には、今度こそ驚くような未来がやってきているのかもしれません。

+

楽しみです。

+

2024年9月
+島根県の温泉地にて
+まつもとゆきひろ

+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-fmatter-004.xhtml b/docs/vol1/xhtml/p-fmatter-004.xhtml new file mode 100755 index 0000000..5f1ec9e --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-004.xhtml @@ -0,0 +1,29 @@ + + + + + +著者紹介 + + + + +

Matz Essays Volume 1

+ + +
+

著者紹介

+

まつもと ゆきひろ

+

プログラミング言語Rubyの創始者。Rubyアソシエーション理事長。ほかネットワーク応用通信研究所フェロー、OSS Vision社CTOなど肩書多数。鳥取県出身、島根県在住。2009年から島根県松江市名誉市民。妻1人、子4人、犬猫1匹ずつ。東京嫌い、温泉好き。

+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-fmatter-005.xhtml b/docs/vol1/xhtml/p-fmatter-005.xhtml new file mode 100644 index 0000000..01e1427 --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-005.xhtml @@ -0,0 +1,32 @@ + + + + + +本書の刊行にあたって + + + + +

Matz Essays Volume 1

+ + +
+

本書の刊行にあたって

+
    +
  • 元原稿を参照しているため、表現や表記などが雑誌掲載時と異なっていることがあります。

  • +
  • URLは雑誌掲載時のままになっています。リンク切れなどがあることがあります。

  • +
  • 付録CD-ROMは本書には添付していません。

  • +
+
+ +

+
+ + + diff --git a/docs/vol1/xhtml/p-fmatter-006.xhtml b/docs/vol1/xhtml/p-fmatter-006.xhtml new file mode 100644 index 0000000..f41c3ac --- /dev/null +++ b/docs/vol1/xhtml/p-fmatter-006.xhtml @@ -0,0 +1,66 @@ + + + + + +Volume 2 目次 + + + + +

Matz Essays Volume 1

+ + +
+

Volume 2 / 2003〜2007

+

第31章 探訪Ruby: Rubyの国へようこそ

+

第32章 探訪Ruby: テスト第一主義

+

第33章 探訪Ruby: Wiki Wiki

+

第34章 探訪Ruby: Blogの世界

+

第35章 探訪Ruby: アスペクト指向

+

第36章 探訪Ruby: RubyとEmacs

+

第37章 探訪Ruby: Instiki

+

第38章 探訪Ruby: テンプレート

+

第39章 探訪Ruby: DBM

+

第40章 探訪Ruby: tDiary

+

第41章 探訪Ruby: Webアプリケーションの基礎

+

第42章 探訪Ruby: Webアプリケーションの基礎(その2)

+

第43章 探訪Ruby: Webアプリケーションフレームワーク

+

第44章 探訪Ruby: マークアップ・マークダウン

+

第45章 探訪Ruby: ダイコン

+

第46章 探訪Ruby: 最終回・ネタのタネ

+

第47章 まつもと ゆきひろのハッカーズライフ: ハッカーとの遭遇

+

第48章 まつもと ゆきひろのハッカーズライフ: キーボードへのこだわり

+

第49章 まつもと ゆきひろのハッカーズライフ: ハッカーと仕事

+

第50章 まつもと ゆきひろのハッカーズライフ: Emacs 対 vi

+

第51章 オープンソース開発って何だろう

+

第52章 まつもと ゆきひろのハッカーズライフ: ハッカー環境問題

+

第53章 まつもと ゆきひろのハッカーズライフ: 言語の重要性

+

第54章 まつもと ゆきひろのハッカーズライフ: 言語の重要性 その2

+

第55章 まつもと ゆきひろのハッカーズライフ: ハッカーとオープンソース

+

第56章 まつもと ゆきひろのハッカーズライフ: 測定狂時代

+

第57章 まつもと ゆきひろのハッカーズライフ: ソースを読もう

+

第58章 まつもと ゆきひろのハッカーズライフ: Let's Talk Lisp

+

第59章 まつもと ゆきひろのハッカーズライフ: スケーラビリティ

+

第60章 まつもと ゆきひろのハッカーズライフ: オープンソースライセンス

+

第61章 まつもと ゆきひろのハッカーズライフ: Get Thing Done

+

第62章 まつもと ゆきひろのハッカーズライフ: 若人への手紙

+

第63章 まつもと ゆきひろのハッカーズライフ: オープンソースのマーケティング

+

第64章 まつもと ゆきひろのハッカーズライフ: キャズム

+

第65章 まつもと ゆきひろのハッカーズライフ: 言語の壁

+

第66章 まつもと ゆきひろのハッカーズライフ: ハッカーの生産性

+

第67章 まつもと ゆきひろのハッカーズライフ: 理系・文系

+

第68章 まつもと ゆきひろのハッカーズライフ: 美しいコード

+

第69章 まつもと ゆきひろのハッカーズライフ: オープンソースよ、永遠に

+
+ +

+
+ + + diff --git a/docs/vol2/image/ch31/31-1.jpg b/docs/vol2/image/ch31/31-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d96dc912bf9995acba4237c23c225e4c493d79a0 GIT binary patch literal 89063 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

WzY-g4O9(% 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 Ndg=_M_X>M)?$AL34 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�_}I6qR-x5Ltx=lNjDWjpcTb_ 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 YavFK4@AZo0-SA(JwetQGA-U7{KO*ARw*UYD literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch32/32-2.jpg b/docs/vol2/image/ch32/32-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3caf9dfcfa6e24af69f1d698a8c8f43dc5908e50 GIT binary patch literal 61321 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

Zb}=T@ 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 literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch38/38-1.jpg b/docs/vol2/image/ch38/38-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53094442efe30a78bbad18e6fb14a1991b819de4 GIT binary patch literal 84266 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 Tc&t04`^Qap|5Vb2pL_og@jO@j literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch41/41-1.jpg b/docs/vol2/image/ch41/41-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34a22b138f5f39b824e8fbb70b8c6e04bdbab729 GIT binary patch literal 59942 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 literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch41/41-4.jpg b/docs/vol2/image/ch41/41-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c1982227caf55f803bad16df92ba6f10d723c3ab GIT binary patch literal 59771 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 IxqpoRKS?zrJpcdz literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch45/45-1.jpg b/docs/vol2/image/ch45/45-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..701d5e7eec91ceea40210abd5b809292d3850761 GIT binary patch literal 48802 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 literal 0 HcmV?d00001 diff --git a/docs/vol2/image/ch48/48-1.jpg b/docs/vol2/image/ch48/48-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5126b5571a8902907c382e034931c7b0b7d5784c GIT binary patch literal 73369 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/vol2/image/tobira.jpg b/docs/vol2/image/tobira.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a708d63cc6edea61fd6265437f4a0b088843a372 GIT binary patch literal 191270 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

>Yvsd7{>FRIz#gaX>!J4aI`9N;G7u?Na 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

qPIGI#FUoIIJkVzuOH&v9SJ)6Q^=}IkVB-S=Nt; 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 z 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 Ve@^=Q-O#_* + + + + +Matz Essays Volume 2 + + + + +

Matz Essays Volume 2

+ + +
+

はじめに

+

2003〜2007

+

第31章 探訪Ruby: Rubyの国へようこそ

+

第32章 探訪Ruby: テスト第一主義

+

第33章 探訪Ruby: Wiki Wiki

+

第34章 探訪Ruby: Blogの世界

+

第35章 探訪Ruby: アスペクト指向

+

第36章 探訪Ruby: RubyとEmacs

+

第37章 探訪Ruby: Instiki

+

第38章 探訪Ruby: テンプレート

+

第39章 探訪Ruby: DBM

+

第40章 探訪Ruby: tDiary

+

第41章 探訪Ruby: Webアプリケーションの基礎

+

第42章 探訪Ruby: Webアプリケーションの基礎(その2)

+

第43章 探訪Ruby: Webアプリケーションフレームワーク

+

第44章 探訪Ruby: マークアップ・マークダウン

+

第45章 探訪Ruby: ダイコン

+

第46章 探訪Ruby: 最終回・ネタのタネ

+

第47章 まつもと ゆきひろのハッカーズライフ: ハッカーとの遭遇

+

第48章 まつもと ゆきひろのハッカーズライフ: キーボードへのこだわり

+

第49章 まつもと ゆきひろのハッカーズライフ: ハッカーと仕事

+

第50章 まつもと ゆきひろのハッカーズライフ: Emacs 対 vi

+

第51章 オープンソース開発って何だろう

+

第52章 まつもと ゆきひろのハッカーズライフ: ハッカー環境問題

+

第53章 まつもと ゆきひろのハッカーズライフ: 言語の重要性

+

第54章 まつもと ゆきひろのハッカーズライフ: 言語の重要性 その2

+

第55章 まつもと ゆきひろのハッカーズライフ: ハッカーとオープンソース

+

第56章 まつもと ゆきひろのハッカーズライフ: 測定狂時代

+

第57章 まつもと ゆきひろのハッカーズライフ: ソースを読もう

+

第58章 まつもと ゆきひろのハッカーズライフ: Let’s Talk Lisp

+

第59章 まつもと ゆきひろのハッカーズライフ: スケーラビリティ

+

第60章 まつもと ゆきひろのハッカーズライフ: オープンソースライセンス

+

第61章 まつもと ゆきひろのハッカーズライフ: Get Thing Done

+

第62章 まつもと ゆきひろのハッカーズライフ: 若人への手紙

+

第63章 まつもと ゆきひろのハッカーズライフ: オープンソースのマーケティング

+

第64章 まつもと ゆきひろのハッカーズライフ: キャズム

+

第65章 まつもと ゆきひろのハッカーズライフ: 言語の壁

+

第66章 まつもと ゆきひろのハッカーズライフ: スケーラビリティ

+

第67章 まつもと ゆきひろのハッカーズライフ: 理系・文系

+

第68章 まつもと ゆきひろのハッカーズライフ: 美しいコード

+

第69章 まつもと ゆきひろのハッカーズライフ: オープンソースよ、永遠に

+

初出一覧

+

索引

+

奥付

+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-001.xhtml b/docs/vol2/xhtml/p-001.xhtml new file mode 100644 index 0000000..e493bbe --- /dev/null +++ b/docs/vol2/xhtml/p-001.xhtml @@ -0,0 +1,28 @@ + + + + + +Volume 2 + + + + +

Matz Essays Volume 2

+ + +
+ +

2003〜2007

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-002.xhtml b/docs/vol2/xhtml/p-002.xhtml new file mode 100644 index 0000000..c394df3 --- /dev/null +++ b/docs/vol2/xhtml/p-002.xhtml @@ -0,0 +1,449 @@ + + + + + +第31章 Rubyの国へようこそ + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay31 +
+

+探訪Ruby
+Rubyの国へようこそ +

+
+

[Linux magazine, 2003年12月号]

+
+

今はなき『Linux magazine』(アスキー・メディアワークス)2003年12月号からの連載記事です。ちょうど前の連載が11月号で終わっているので、間を空けずに連載開始ですね。前回の連載である「初等Ruby講座」が初心者向けだったのと比べて、中級者程度を仮定して原稿を書いています。とはいえ、初回ですから今回はRubyの概要を説明している程度ですね。背景となる哲学まで解説しているのは、Ruby作者が執筆する連載ならではと言えるかもしれません。

+

前回の連載に引き続き、コラム「Ruby開発日記」は継続しています。今回はオープンソースとビジネスがテーマになっています。

+
+
+

今年でRubyが誕生してから10年になります。その間にRuby言語とそれを取り巻く世界はどんどん広がってきました。この連載では、Rubyの作者という立場からRubyの世界のあちこちを探検して、新しいもの、珍しいものなどを紹介しようと思います。

+
+
+

Rubyの紹介

+
+

数年前と違い、今では書店に行けば「Ruby」とタイトルに入った本が数冊は並んでいますから、本誌の読者であれば全然聞いたことはないという人のほうが少なくなっているかもしれません。10年前に私が作った「おもちゃ」がここまで広まっているのを見ると驚きを通り越して不思議な感じがします。

+

でも、実際にRubyを使うところまではいかない人も大勢いらっしゃるようです。実際、私に会って、「Ruby使おうと思ってはいるんですけど」とか、「興味はあるんですけど」とかおっしゃる方はたくさんいます。「けど」がつきまとううちははまだRubyの本当のうれしさが伝わっていないのかもしれません。

+

さて、話を元に戻して、今回は初回ですから、まずRubyとはいったい何かという点から始めたいと思います。

+
+

一言で言ってしまうとRubyは、

+
+

オブジェクト指向プログラミング言語

+
+

です。つまり、プログラムを作るときに、コンピュータの仕事の手順を記述するための「言語」です。人間の使う言語と違って、融通の利かないコンピュータにも理解してもらう必要がありますからあいまいな部分があってはいけません。同じような理由から語彙ご|いも非常に限られています。プログラミング言語にはRubyの他にもBASIC, FORTRAN, COBOL, C, C++, Pascal, Lisp, Perl, Java, Smalltalkなどがあります。

+

Rubyの特徴は手軽さです。Rubyのプログラムは簡単に書いて簡単に実行できます。たとえば定番の"hello world"プログラムをRubyで書くと、

+
+
print "hello world\n"
+
+

と1行で書けます。意味も見ただけで明らかです。これを実行するのも、このプログラムがhello.rbというファイルに格納されているとして、

+
+
ruby hello.rb
+
+

だけです。Rubyはインタプリタ型言語ですからプログラムを読み込んですぐに実行するからです。

+

ところがこれをCで書くと

+
+
#include <stdio.h>
+int
+main(int argc, char **argv)
+{
+  printf("hello world\n");
+}
+
+

と行数換算で6倍、バイト数でも3倍以上にもなります。本質の部分(printfの行)の内容はほぼ同じですから、残りは「おまじない」ということになります。これがJavaならもっと増えます。

+
+
public class HelloWorld {
+  public static void main(String[] args) {
+    System.out.println("Hello World");
+  }
+}
+
+

Javaプログラムはバイト換算ではRubyの5倍近くなります。「なんでこんなにおまじないが……」と思わせます。

+

また、これらの言語ではプログラムを実行する前に、コンパイラによって実行形式に変換する必要があります。コンパイラによる変換には数分から場合によっては数時間も必要になりますから、すぐ実行というわけにはいきません。そのぶん、実行は高速だったりするんですけど。

+

Rubyのありがたい点はそれだけではありません。プログラムを書いていて、何もかもをゼロから書くのは現実的ではありません。他の人が作ってくれた機能をライブラリとして利用して、それらを組み合わせてプログラムを作るのが普通でしょう。ですから、言語の優劣は単なる文法の違いだけではなく、どれくらい使いやすいライブラリがそろっているかという点によって決まります。ただ単にいろいろなライブラリがあるだけでは十分ではなく、それらがきちんと整理されていて、使いやすい必要があります。

+
+

Rubyの場合、文字列や配列などの基本的なデータ構造とそれに関連する手続きはクラスという単位で整理されていて非常に強力です。

+

例としてRubyでの時刻の取り扱いを見てみましょう。Rubyでは時刻はTimeクラスで取り扱います。現在時刻を表示させるにはこのようにします。

+
+
puts Time.now
+# => Wed Oct 15 12:23:19 JST 2003
+
+

では、Rubyが誕生してから(正確にはその日の午前0時から)、今まで何秒過ぎたかということは、以下のように計算します。

+
+
puts Time.now - Time.local(1993,2,24)
+# => 335708687.362405
+
+

えーと10月15日現在で3億3570万8687秒ですか。Timeは内部的にはマイクロ秒単位で時刻を管理していますので小数点以下の端数が表示されています。

+

基本的なデータ構造以外のライブラリも、データベース、ネットワーク、CGI、XMLなどなど充実しています。先輩であるPerlやPythonに比べると数という点ではまだ少々負けていますが、主要な機能は網羅していると思います。

+

Rubyの最大の特徴はそれがフリーソフトウェアであることかもしれません。Rubyは「自由なソフトウェア」として、すべてのソースコードが完全に無償で公開されています。利用についてまったく費用がかかりません。書籍などを買えば別ですが。開発者である私に対しても、謝礼や代金を払う必要はありません。

+
+
+

昔々のお話

+
+

昔々、1990年代初頭、私はPerlを使っていませんでした。しかし、同僚は「Perlっていいぞ」と勧めてきます。当時私が使っていたのは、シェル(bsh)、AWK、そしてEmacsです。コマンドによる処理を自動化させるためにはシェルを使い、もうちょっと複雑な処理が必要なときにはシェルスクリプトの中でAWKを使いましたが、実は当時の私はほとんどの処理はEmacsで行っていました。10年前、すでにEmacsは私の一部でした。テキスト編集はもちろん、メールを読むのも、書くのも、ネットニュースの読み書きも、Emacsで行っていました。それだけではありません。少々複雑な処理が必要な場合にはEmacsのマクロを使い、もっと複雑な処理が必要ならばEmacs Lispでプログラムを組んでいました。メールリーダーさえ、Emacs Lisp製の自作のものでした(cmail)。これは今でも使っています。

+

そんな私が同僚に勧められてPerlについて調べてみたときに感じたのは、お互いに矛盾する2つの印象でした。

+

最初の1つは「これは面白い」というものです。シェルというのはいろんなことができますが、しょせんはコマンドの組み合わせに若干の制御構造を追加したようなものです。言語として考えたときには、あまりほめられたものではありません。ところが、このPerlという言語は外部コマンドを利用しなくてもたいていのことはできるのです。シェルのようで、しかも「より普通のプログラミング言語」という点は非常に魅力的でした。また、ほんのちょっと普通のプログラミング言語への一歩を踏み出すだけで、どれほどいろんなことができるようになるか、というのは感動的でさえありました。

+
+

ところが同時に大きな不満も感じました。私は高校時代からどういうわけかプログラミング言語に非常に興味を持ち、優れた言語を追い求めてきました。興味がつのってとうとう大学ではプログラミング言語の研究室に所属したほどです。ここで私はいろいろな経験をしましたが、それはまた別の機会に。

+

とにかく、そういう「言語おたく」の視点からみると、Perlという言語はどうにも手抜きというか、半端というか、正直いうと出来が悪い言語という印象でした。この分野において「普通のプログラミング言語」がこんなにも強力なのであれば、「よいプログラミング言語」があれば、それはすごくすばらしいものになるのではないだろうか。そう思ったのがすべての始まりだったのです。

+

私は、もともと「いつかは自分の言語を作ってやろう」と考えていました。大学の卒業論文も独自のオブジェクト指向言語の設計と実装がテーマでした。これは完成の域には至りませんでしたが。就職後しばらくなりをひそめていた創作意欲がわき上がります。「言語を作ろう」。1993年の始め頃です。

+

それから後は、名前が決まり、自分の作業ディレクトリに広がっていた過去に書いていた言語処理系のソースコードを切ったり張ったりして、曲がりなりに動くまで数カ月、普通のプログラミングに使えるようになるまではさらに数カ月、1993年の終わり頃にはとりあえず使えるようなものができていました。

+

とはいえ、私自身はこれを「自分のおもちゃ」と感じていましたので、他人に使ってもらう決心が付いてアルファテスターを募集したのは1994年の12月、インターネットで一般公開したのはさらにその1年後の1995年12月でした。

+
+
+

Rubyを取り巻く世界

+
+

こんなふうに始まったRubyの物語ですが、Rubyを使ってみたいという人が増えるにつれて、それを取り巻く世界はどんどんどんどん広がっていきました。

+

Rubyの世界を図に書くとこんな感じでしょうか(図31.1)。かなり醜いですが、扇形の中心に「コア」、その外側に「添付ライブラリ」と「添付拡張ライブラリ」、その外側に「ライブラリ」、一番外に「アプリケーション」がくる図になっています。

+
+ +
+ fig3101 +
+

図31.1●Rubyの世界

+
+

中心にあるのが「コア」です。これはRubyの本体で、文法とそれを解釈実行するインタプリタからなっています。これは「Rubyそのもの」と呼んでもよいですが、実際のところRubyの世界全体からすれば小さな領域です。私にとっては一番面白いところで、Rubyの世界の中で私の「居住地」はやはりこの周辺になるでしょう。

+ +

コアはいくつかの部品から構成されています。Rubyプログラムを解釈し構文木(こうぶんぎ)と呼ばれる内部構造に変換するパーサー(parser)、その構文木をたどりながら実行するエバリュエータ(evaluator)、実行中にオブジェクトを作り出したりいらなくなったオブジェクトをリサイクルしたりするガベージコレクタ(garbage collector)などです。これらの部品はみなCで書かれたプログラムです。

+

コアのすぐ下にあるのが「組み込みライブラリ」です。組み込みライブラリは、Rubyのライブラリのうちインタプリタに初めから組み込まれているもので、これもCで記述されています。これらはコアの機能を利用して実行されます。

+

Rubyの組み込みライブラリに含まれるクラスのうち代表的なものを表31.1に示します。

+
+

表31.1●組み込みクラス(抜粋)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
クラス説明クラス説明
Array配列Kernel共通関数モジュール
Bignum多倍長文字列Marshalオブジェクトシリアライズ
ClassクラスのクラスMath数学関数モジュール
Comparable比較機能モジュールModuleモジュールのクラス
DirディレクトリNumeric数のクラス
Enumerable数え上げ機能モジュールObjectオブジェクト
Exception例外Range範囲クラス
FileファイルRegexp正規表現
Fixnum小整数String文字列
Float浮動小数点数Struct構造体
GCガベージコレクタSymbolシンボル
HashハッシュThreadスレッド
IO入出力(Fileの親クラス)Time時刻
Integer整数
+
+

コアと組み込みライブラリとでインタプリタを構成します。

+

組み込みライブラリの外側には「添付ライブラリ」があります。添付ライブラリとはインタプリタに組み込まれてはいないが、Rubyインタプリタとともに配布されているライブラリです。

+

組み込み以外のライブラリには、Cで実装されたものと、Rubyで実装されたものがあります。使う側からはどちらもまったく同じように使えるのですが、あえて区別する場合にはCで実装されたものを拡張ライブラリと呼びます。拡張ライブラリは、既存のライブラリとRubyの橋渡しをするもの(ラッパーとも呼ぶ)や、インタプリタでは間に合わない高速な処理を実現するためのものなどがあります。

+

Rubyの添付ライブラリのうち、代表的な拡張ライブラリを表31.2に、Rubyで記述されたものを表31.3に示します。

+ +
+

表31.2●添付拡張ライブラリ(抜粋)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ライブラリ説明ライブラリ説明
Win32APIWin32システムコールの呼び出しiconviconvによる文字コード変換
bigdecimal多倍長浮動小数点数nkfnkfによる文字コード変換
cursescursesライブラリラッパーreadline行入力編集
dbmdbmライブラリラッパーsocketネットワークソケット
digest/md5MD5ハッシュ値(SHA1などもあり)stringioStringIO
dlC関数の呼び出しtkTkインターフェイス
etcユーザー情報の取得win32oleWin32OLE
fcntlfcntl用定数zlibzlib圧縮ルーチン
+
+
+

表31.3●添付ライブラリ(抜粋)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ライブラリ説明ライブラリ説明
benchmarkベンチマークnet/smtpSMTP処理
cgiCGIプログラミングnet/telnetTelnet処理
complex複素数observerオブザーバーデザインパターン
csvCSVファイルの読み書きopen-uriURI
date日付optparseコマンドライン引数解析
debugデバッガparsedate日付解釈
delegateデレゲーターデザインパターンppデータ整形
drb分散Ruby(distributed ruby)profileプロファイラ
erb埋込Ruby(embedded ruby)pstore簡易オブジェクトデータベース
fileutilsファイル操作rexmlXML処理ライブラリ
findディレクトリスキャンscanf文字列解析
ftoolsファイル操作tempfile一時ファイル
irb対話Ruby(interactive ruby)test/unitユニットテスト
matrix行列threadスレッド支援
net/ftpFTP処理uriURI処理
net/httpHTTP処理webrick汎用インターネットサーバー
net/imapIMAP処理xmlrpcXML RPC
net/popPOP処理yamlYAMLライブラリ
+
+

インタプリタの外側には、世界中のRubyユーザーが作ったライブラリとアプリケーションが存在しています。Rubyを使ったプログラムはあらゆる領域に及んでいます。その多くはRAA(Ruby Application Archive)からアクセスできます(図31.2)。

+
+ +
+ fig3102 +
+

図31.2●RAA(http://raa.ruby-lang.org/)

+
+

RAAは開発者が自主的に登録したアプリケーションやライブラリなどのインデックスサイトです。RAAは情報を提供するだけで配布や検証などは行いません。原稿執筆時点で、340アプリケーション、629ライブラリが登録されています。

+ +

RAAのカバーする領域はさまざまです。FoxやwxWindowのようなGUIツールキットもあれば、PostgreSQL, MySQLなどのデータベースアクセスライブラリ、WeblogやWeb日記のようなWebベースのアプリケーションとそれを支援するライブラリ、テキスト処理、数値処理、人工知能、バイオインフォマティックスなどなどなど。実に192のカテゴリにおよぶ1011のプロジェクトがそろっています。

+

この連載では今後RAAから興味深いプロジェクトを選び出して紹介することにも挑戦したいと考えています。

+

とはいえ、RAAには欠点もあります。RAAはあくまでも自主的に登録されたものですから、分類や説明などに不備があるものや、古くてメンテされていないものも残っています。ですから、ほしいものを探すときにはカテゴリだけではなく、検索を利用する必要もあります。たぶん、管理者によるカテゴリの再分類やレーティング(優れたプログラムへの投票)などの機能が付け加わればもっとよくなると思うのですが。

+
+
+

思想と哲学

+
+

ここまでRubyの世界を概観してきましたが、実はRubyの世界にはもう1つ隠された領域があります。地下世界とでも呼ぶのでしょうか。

+

それは「思想と哲学」です。

+

私がRubyの作者として知られるようになったここ数年、あちこちのイベントやカンファレンスで講演を依頼されるようになりました。それらの講演で使った発表資料の一部は、

+
    +
  • http://www.rubyist.net/~matz/slides/

  • +
+

で見ることができます。これをご覧になった人は奇妙に思われるかもしれない点があります。それは「Rubyそのものについてほとんど説明していない」点です。資料の中にはRubyのプログラムが1行も登場しないものもあります。

+

実は、私は単なるプログラミング言語としてのRubyよりも、その背後にある思想やら哲学やらのほうによっぽど興味があり、機会があればそのことについて話したいと考えているのです。ですから、講演では原則とか設計原理とかそんな話ばかりしているのです。言語開発者からプログラミング言語Rubyの具体的な紹介や機能について聞くことを期待していた聴衆には迷惑な話かもしれませんが。

+
+

そんなRubyの「思想と哲学」というのはどのようなものでしょうか。一言でいうと「人に優しいプログラミング言語」です。そして目標は「楽しいプログラミング」です。

+

もちろんプログラミングにおいて最も重要なことは、「なんのためにプログラムするか?」です。プログラミングの目的が何らかの仕事を達成することである以上、これは当然です。「どのような言語でプログラムするか」はそれに比べたら些細ささいなことでしかありません。まともなプログラミング言語であれば、どんなアルゴリズムでも記述可能です。生産性に最も重要なのは言語の文法ではなく、目的に合ったライブラリが存在するかどうかです。

+

しかし、実際にはプログラミングを行う人の「気分」を最も左右するのは、どのような言語で、あるいはどのような環境でプログラムするかです。プログラマーの気分を重視するとき、言語は重要な要素になるのです。

+

Rubyはもともと私の「おもちゃ」として生まれましたが、Rubyをデザインするときに一番気にしていたのは、どのような言語でプログラムしたら自分が一番気分が良いか、ということです。気分というのはなかなか表現しにくいのですが、結局は「思ったことをすぐに実現できる」かどうかということのようです。

+

ですから、Rubyはプログラムをすぐに実行できるインタプリタの手軽さと、やりたいことをすぐに片付けられる強力なクラスライブラリを兼ね備えているのです。

+

強力な機能を持っていても、それを覚えきれなければ仕方がありません。そこでRubyはオブジェクト指向という統一的なルールを導入し、豊富な機能をクラスライブラリという形で分類しました。同じ数の機能を提供するのでも、数百個の関数がフラットに並ぶ構造よりも、機能別にクラスに分けられ、各機能がメソッドとして提供されるほうがずっと理解しやすく覚えやすいだろうという考えからです。

+

また、変数や式に型がないが、オブジェクト自身が自分の型を知っている型システムや、実行時にプログラムの挙動を制御できるリフレクションなどのダイナミックプログラミング機能もそのためです。

+

Rubyの特徴と言ってもよい、変数のスコープがひと目でわかる変数名や、ループやコールバックの抽象化をエレガントに行うことができるブロックも、読みやすく、書きやすい言語の実現を目的としています。

+

その他、ここには書ききれないような細かな点が積み重なってRubyは、私にとって、気分の良い言語になりました。幸いなことに、世界中の数多くのプログラマーも私と同じようにRubyを使うと気分が良いと感じてくれているようです。

+

そして、世界中の人が喜んでRubyを使ってくれていて、今日もRubyの世界は広がり続けているのです。

+
+
+

まとめ

+
+

今回はRubyの世界を概観してみました。来月からは、Rubyの世界のそれぞれの領域から目新しいことを探し出して皆さんに紹介していこうと思います。どうぞお楽しみに。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-003.xhtml b/docs/vol2/xhtml/p-003.xhtml new file mode 100644 index 0000000..f3b9be0 --- /dev/null +++ b/docs/vol2/xhtml/p-003.xhtml @@ -0,0 +1,57 @@ + + + + + +第31章 Rubyの国へようこそ + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ オープンソースのビジネスストーリー

+
+

連載のタイトルは変わりましたが、このコラムは続きます。

+

世の中にはなぜ成立しているのか素人にはよくわからないが、とにかく成り立っているというようなものがいくつも存在します。私にとってそのようなものの代表格は株式市場です。いや、資金調達のシステムとしての原始的な株式については理解できるのですが、それだけでは現在の株式市場は理解できません。現在の株式市場はもっと複雑な要素が絡み合って成立しているので、日常生活のお金の動きからの連想だけでは全体像をつかめないからです。

+

同じようなことがオープンソースにもいえるのかもしれません。特にソフトウェアでビジネスを行ってきた人々にとっては、飯の種であるソースコードを無償で完全に公開するなど考えられないことに思えるでしょう。

+

しかし、現実にオープンソースソフトウェアが大量に存在し、中には機能的にもソースコード非公開で自由なライセンスに基づかない商用ソフトウェアに匹敵するものも数多くあります。この現実はいったいどうしたことでしょう。

+

その秘密はソフトウェアの特殊性にあります。

+

まずオープンソースを可能にしたソフトウェアの第1の性質は、ソフトウェアの開発費用が他の工業製品に比べると非常に安いことです。もちろんソフトウェアの中には非常に複雑で高価なものもあります。しかし、たとえば自動車を組み立てるための生産ラインのコストを考えると、開発用コンピュータとプログラマーの人件費など安いものです。また、プログラミングの習得が難しいと言っても、他の分野の職人に比べるとまだ容易に身につけられる技術と言ってよいでしょう。よってソフトウェア開発のコストは比較的回収しやすいということになります。

+

第2の性質は昔ながらの工業製品と違って、ソフトウェアは情報にすぎないという点です。そして情報は簡単に複製でき、しかも複製によって劣化しません。パッケージとしてCD-ROMをきれいな箱に入れて店舗販売するならともかく、インターネットで配布してしまえば、新たに配布する場合のコストはゼロです。「ユーザーが一人増えたから売り上げがいくら」というパッケージモデルで考えるから損をするような気になりますが、実際にはユーザーが一人だろうが、千人だろうがコストは同じです。

+

第3の性質はソフトウェア業界の産業構造です。一説によるとソフトウェア産業の内訳はパッケージが1割、自社向けが3割、受注ソフトが6割なのだそうです。つまり、極端な言い方をすればソフトウェア産業の9割は顧客の個別のニーズを満たすカスタムメイドのソフトウェアを開発しているのです。であれば、そのカスタムメイドのソフトウェアの一部を汎用コンポーネントとして公開することによるリスクはそれほど高くありません。

+

第4の性質はソフトウェアは共同開発が可能な点です。ソフトウェアはモジュール分割や分業によるチーム開発が可能ですし、規模の大きなソフトウェアでは必然でさえあります。CVSのようなツールを利用すれば共同開発はますます容易になります。

+

これらの性質を前提条件とすると、以下のようなストーリーを導くことができるのではないでしょうか。

+
+

ソフトウェア産業の大部分のプレイヤーは、顧客のためのカスタムソフトウェアを安価に、しかも信頼性高く実現したいと考えています。しかし、ソフトウェアに対する要求は次第に高度化しており、その結果ソフトウェアはどんどん複雑になってきています。このようなソフトウェアを開発するには大きなコストがかかります。よっぽど規模の大きな企業でなければ、そのようなソフトウェアを自社だけで開発するのは不可能です。そこで既存のソフトウェアコンポーネントを利用せざるをえません。

+

ソフトウェアコンポーネントを入手する方法は2通り考えられます。開発費を捻出できるような大企業にコンポーネントの開発を任せ、その企業からコンポーネントを購入することにより開発コストの一部を金銭で負担する(従来モデル)か、コンポーネントを共同開発し、無償で自由に利用してもらうことにより、開発にかかる人件費を広く薄く分担する(オープンソースモデル)か、です。

+

オープンソースモデルはコンポーネント利用者(受益者)全員が開発コストを負担するわけではないため、一見不平等に思えるかもしれませんが、上記の第2の性質によって、配布側から見るとユーザーが増えてもコストは変化しないことを思い出してください。であれば、開発に参加してくれる人を招くため、自由にソフトウェアを利用してもらったほうが結局は得ということになります。

+

まとめると、オープンソースモデルの場合、単なる利用者は優れたソフトウェアが無償で、かつソースコード付きで利用できてお得。開発参加者は、利用者としての利点だけでなく、開発に自分の意見をフィードバックさせる機会が得られてお得。メインの開発者は自分の開発したコンポーネントのテスト、デバッグ、機能拡張などに外部の開発者の力を借りられてお得。しかも、優れたオープンソース開発者には、名誉、ブランド、技術力の喧伝なども得られる。自分の技術をデファクトスタンダードにするチャンスも生まれる、と全員にお得なチャンスが与えられるのです。

+

このようにしてオープンソースが最終的に利益をもたらし得るストーリーを構築できます。

+

もちろん、オープンソースだから成功するなんて単純な話ではありません。成功するオープンソースもあれば、失敗するものもあります。また、成功するまでに予想以上に時間がかかるものもあります。しかし、どんなビジネスにもそのようなリスクは付き物ではないでしょうか。

+

今回はビジネス上の損得だけからもオープンソースは意味があることを示してみました。しかし、そもそもオープンソース運動とその原点となったフリーソフトウェア運動は、ソフトウェアの自由を保証するためであったことも忘れてはいけません。みんなの手にソフトウェアの自由を。そして、みんなが得をするような道を。

+
+

謝辞

+

今回のコラムはessaさんの「圏外から一言」、およびsheepmanさんの「羊堂本舗」を参考にさせていただきました。どうもありがとうございます。

+
    +
  • 圏外から一言
    +http://amrita.s14.xrea.com/d/

  • +
  • 羊堂本舗
    +http://sheepman.parfait.ne.jp/

  • +
+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-004.xhtml b/docs/vol2/xhtml/p-004.xhtml new file mode 100644 index 0000000..ac81c0b --- /dev/null +++ b/docs/vol2/xhtml/p-004.xhtml @@ -0,0 +1,323 @@ + + + + + +第32章 テスト第一主義 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay32 +
+

+探訪Ruby
+テスト第一主義 +

+
+

[Linux magazine, 2004年1月号]

+
+

もう今ではあまり聞かなくなったXP(eXtreme Programming)の中でもテスティングについて解説しています。ここでは網羅的なテスト(特にユニットテスト)の重要性について、熱心に解説しています。が、正直なところ、当時からテスト第一主義に関しては違和感を感じていました。何かというと、私たちは問題を解決するためにソフトウェアを開発したいが、テストが書きたいわけではないということですね。ただ、人類はソフトウェアの正しさを確認するテストよりもよい方法を知らないので渋々テストを書いているわけです。もうちょっと未来であればテストや正しさの確認は人工知能に任せられるようになるかもしれません。

+

「Ruby開発日記」はソフトウェア特許についてです。現代(2024年)ではソフトウェア特許についてあまり話題に上らなくなっていますが、当時はホットなトピックでした。現代でも画像や動画フォーマットではソフトウェア特許のせいで自由な開発が難しくなったので問題解決したわけではないのですが。

+
+
+

最近流行のソフトウェア開発技法であるエクストリーム・プログラミング(通称XP)に含まれるプラクティス(実践内容)の中でもテスティングは最も即効性のあるものです。今月はRubyにおけるテスティングを探検してみましょう。

+
+
+

ソフトウェアテスト

+
+

読者の皆さんの中に職業プログラマーの方がどのくらいいらっしゃるかはわかりませんが、ソフトウェア開発は以下のような手順に従うことが多いものです。

+
+

「ヒアリング」で顧客のニーズを聞き出し、それをコンピュータで実行可能なやり方を見つけ出す「分析」、処理手順を決定する「設計」が続きます。そして「実装」でその設計に従い実際のプログラムを作り、作ったプログラムの各部分が正しく動くことを確認するのが「単体テスト」、プログラム全体が正しく動くことを確認するのが「結合テスト」です。結合テストは顧客がプログラムを受け入れるかどうかを確認するのでアクセプタンスとも呼ばれます。

+

上から順に作業を進めて最後まで行けばめでたく完成の運びになるわけです。このような「上から下へ」流れる開発工程を「ウォーターフォール」型開発と呼びます。しかし、世の中はそんなに甘くはないのです。

+

最初の問題は顧客は自分のほしいものが最初からわかっているわけではないということです。頭の中にあるのは、こんなものがほしいという漠然としたイメージだけです。それを聞き出し、分析し、設計して、「これでいいですね」と念押ししても、実際にモノを見るとイマジネーションが刺激されて、「ここはこうじゃなくて」とか「こんなこともできたらいいな」などの要望が発生します。それでなくても、分析のミス、設計のミスは珍しくありませんから、そのたびに手戻りが発生して、やり直す破目になります。

+

変化はソフトウェア開発の敵であり、そして日常でもあるのです。

+

エクストリーム・プログラミングはそうした状況の中、「変化を受け入れよう」という思想から生まれました。XPには具体的な行動である「12のプラクティス(実践)」があります(表32.1)。

+
+

表32.1●XPの12のプラクティス

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
プラクティス説明
計画ゲーム柔軟に頻繁に計画を見直す
短期リリースシンプルなシステムを素早く構築、たびたびリリース
メタファ比喩によるわかりやすいアーキテクチャを提示
シンプルな設計いつもシンプルに。複雑さは積極的に除去
テスティング常にテストする。顧客は検収テストを書く
リファクタリングシステムの振る舞いを変えずに常にシステムを改善
ペアプログラミングいつも二人のプログラマーが1台のコンピュータに向かう
共同所有誰でもいつでもすべてのコードを変更できる
継続した結合タスクが終了するごとに1日に何度も結合テストを行う
40時間労働週40時間以上働かない。残業しない
オンサイトユーザー顧客をチームに加え、いつでも質問に答えてもらう
コーディング規約ルールに従ってコーディングする
+
+

今回はこれら12のプラクティスのうち、テスティングについて取り上げます。

+
+
+ +

仕様としてのテスト

+
+

ソフトウェアを開発するときにテストするのは当たり前のことです。私はうっかりものなのでよく忘れることがありますが。だから、ただ単にテストするというだけでしたら別に珍しいことではありません。

+

XPのテスティングの特徴は、

+
    +
  • テストを自動化する。テスティングフレームワークを使う

  • +
  • プログラム本体よりも先にテストを書く

  • +
  • プログラム開発中頻繁にテストを行う。たとえばコンパイルを行うたびにテストする

  • +
+

という点にあります。2番目や3番目の特徴はちょっと常識の範囲を超えているような気さえします。この辺がXPの「極端流」の由縁です。

+

プログラム本体よりも先にテストを書くということは、テストする本体がまだないわけですから、やってもしょうがないような気がします。それなのになぜ先にテストを書くかというと、そのテストそのものがプログラムのあるべき姿を示している、いわば仕様であると考えることができるからです。

+

普通、設計段階には仕様書というものがあります。これは日本語で書くことが多いのですが、人間の言語はとかくあいまいなものです。しかし、テストプログラムはプログラムですからあいまい性はありません。テストを書くということはコンピュータが実行可能な形で仕様を決めるということなのです。

+

一度テストプログラムを書いてしまえば、きちんとした仕様があるわけですから、自分がどこまでできたのか、直すべき点がどこなのかいつもはっきりわかりますし、また、仕様変更があっても、プログラム全体が正しく動作することを確認することができます。仕様変更する場合には、もちろん先にテストプログラムを新しい仕様に合わせて書き直してから開発を始めるわけです。

+
+
+

test/unit

+
+

XPのテスティングの特徴の1つはテスト用のライブラリ、テスティングフレームワークを用いることです。Java用にはJUnit、C++にはCppUnitがあり、その他いろいろな言語用にそれぞれのテスティングフレームワークがあります。

+

そしてRuby用にはテスティングフレームワークとしてtest/unitがあります。実は最初のRuby版のテスティングフレームワークはRubyUnitといって、日本人の助田雅紀さんが開発したものがありました。RubyUnitとテスティングをテーマにした書籍『Rubyを256倍使うための本 極道編』(ISBN4-7561-3687-7)も出版されています。

+

一方、test/unitRubyUnitの影響も受けながらNathaniel Talbottが開発したものです。test/unitはRuby 1.8.0以降には標準添付されています。test/unitは先達のRubyUnitに敬意を払っていますから、RubyUnit互換機能を持っています。ですから、test/unitがあればRubyUnitのために書かれたテストプログラムもほぼ完全に動作します。

+

test/unitライブラリの使用例をリスト32.1に示します。

+ +
+

リスト32.1●test/unit使用例

+
require 'test/unit'
+
+class TC_MyTest < Test::Unit::TestCase
+  def setup
+    # テスト前の準備
+  end
+     
+  def teardown
+    # テスト後の後片付け
+  end
+ 
+  def test_foo
+    # テストを行う。
+    # testで始まるメソッドがテストされる
+    assert(cond, 'Assertion was false.')
+    assert_equal(expect, actual, 'unexpected result.')
+  end
+end
+
+
+

"setup""teardown" メソッドはテスト前に実行されます(必要なければ定義しなくてもかまいません)。たとえばテストに用いるファイルの準備やデータベースの接続はsetupメソッドで行い、それらの後始末をteardownメソッドで行います。必要な値をテストメソッド(メソッド名がtestで始まるもの)に渡すためにはインスタンス変数を使うとよいでしょう。

+

テストメソッドでは実際のテスト項目のためにassert(表明)メソッドを使いますが、assertとして用いることができるメソッドのうち主要なものを表32.2に示します。

+
+

表32.2●assertメソッド

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
メソッド説明
assert(値[,メッセージ])値が真か
assert_equal(値1,値2[,メッセージ])値が一致するか
assert_raises(例外[,メッセージ])...ブロックが例外を出すか
assert_instance_of(クラス,値[,メッセージ])クラスのインスタンスか
assert_kind_of(クラス[,メッセージ])クラス(か子孫)のインスタンスか
assert_respond_to(obj,id[,メッセージ])idというメソッドを持つか
assert_nil(値[,メッセージ])nil
+
+
+
+ +

テストのある生活

+
+

テスト第一主義によるプログラム開発は以下のような手順で進みます。

+

まず、実際にプログラムを書く前にテストを書きます。このテストがプログラムの仕様になります。先にも書いたようにテストを書くことでこれから作るプログラムがどんな動きをするべきかが明確になります。

+

テストは、正しく書く必要があります。プログラムがどのように動くべきか確認するテストが正しいテストです。テストはメソッド1つ1つを確認するのがよいでしょう。実際に使われるケースに近いテストを行うのが望ましいとされます。ただし、実際の運用で間違った入力が行われることは珍しくありませんから、正しくない値がきたらきちんとエラーを検出するかとか、普段期待していないケースについてもテストしましょう。いろいろなケースについてテストする必要がありますから、テストプログラムは大きくなる傾向があります。私の知っているほとんどのケースではテストのほうがプログラム本体よりも大きくなっています。

+

テストを書いたら、プログラムの開発を始めます。メソッドを1つ完成させたらテストを実行してそのメソッドが正しく動くことを確認します。正しく動かなければ何か問題があるわけです。よく考えてメソッドを直します。あるいはテストを作るときに何か勘違いをしていて、テストのほうを直す必要があるかもしれません。修正が終わればまたテストを実行します。テストを全部パスするまでこれを繰り返します。

+

このようにプログラム開発とテストを繰り返し、ついに全部のテストにパスするようになれば、単体テストは完了です。最終的には完成したプログラムがきちんと動作して、顧客(自分自身かもしれませんが)の目にかなうかどうかを結合テストで確認して、晴れてプログラム完成ということになります。

+

このようにテスト第一主義で開発した場合には、プログラムがテストしたとおりに動くことはいつも確認されているわけですから、安心ですし、いくつテストがあってそのうちどのくらいパスしているかがはっきりわかりますから達成感があります。パスするテストが次第に増えていくのは快感で、やる気が増します。あまりに頻繁にテストを行うのでテスト中毒と呼ばれちゃったりすることもあります。

+

ソフトウェア開発の現場では、「動いているソフトウェアはいじらない」という教訓が言い伝えられています。ちょっとした変更が思わぬ副作用を引き起こすことがあるからです。変更してしまったことでバグを組み込んでしまったり、機能が損なわれたりすることを「デグレード」と呼ぶことがあります。ここはあまりきれいなコードでないので直したほうがあとでわかりやすいだろうな、と思っても、副作用が恐くて手出しできないこともあります。このようにまずいコードを直す行為を「リファクタリング」と呼びます。デグレードの危険性があるのでリファクタリングは大変勇気のいる行為です。ところが、きちんとテストが用意されていれば、変更による副作用がないことを確認できます。テストは変更に対する「勇気」を与えてくれます。

+

テスト第一主義が役に立つのは自分でプログラムを書くときばかりではありません。他の人が開発したプログラムを保守するときにも有効です。そのプログラムにテストがある場合にはテストコードを読むことでそのプログラムの仕様を理解できます。

+

では、他人が書いた、テストのないプログラムを保守するときにはどうしましょう。テスト第一主義の立場からいえば、(時間が許すならば)まずそのプログラムのためのテストを書くことをお勧めします。それによってプログラムに残っているかもしれないバグを見つけ出すことができますし、なによりテストがあればそれ以降の変更がない場合とは比べ物にならないくらい楽になります。

+
+
+ +

システム構成の見直し

+
+

テスト第一主義に移行するためにはプログラムの構成そのものを見直す必要があるかもしれません。テスト中毒者はテストのためならなんだってするものです。以下に示すのは、最近私が手伝ったプロジェクトでの話です。

+

このプロジェクトは一種のWebグループウェアの開発でした。しかし、段階的な開発を行ううちにプログラムの構成が複雑になり、保守が大変になってきました。古いシステムの構成を図32.1に示します。

+
+ +
+ fig3201 +
+

図32.1●旧システム構成図

+
+

このシステム構成にはいくつか問題がありました。

+
    +
  • モジュール化されていないので、修正の影響範囲が予想しにくい

  • +
  • ロジックと出力が分離されていないので、外観の変更が難しい

  • +
  • 同じ理由でテストが書きにくい

  • +
  • 既存のデータベーススキーマに依存したコードがあちこちに分散していて将来の変更が難しい

  • +
+

そこでシステム構成を変更して、図32.2のようにしてみました。よくいわれるWebアプリケーションの三層構造である、プレゼンテーション層、ビジネスロジック層、データベース層に似ていますが、もうちょっと細かく分割しています。

+
+ +
+ fig3202 +
+

図32.2●新システム構成図

+
+
+
プレゼンテーション
+

eRubyで書かれたこの部分はグループウェア全体の外観を決定します。外観やグループウェアを構成する各部品(カレンダーとかToDoとか)の構成を変更したい場合には、このファイルを変更するだけで済みます。

+

実物は巨大なので、ここではすごく簡略化した例を載せておきます(リスト32.2)。

+ +
+

リスト32.2●プレゼンテーション例

+
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
+<% require "example.rb" %>
+<html><head>
+<title>sample presentaion</title>
+</head>
+<body>
+<table border=1 width="100%">
+<tr><td><%= calendar_html() %>
+<td><%= todo_html() %>
+</tr>
+</table>
+</body>
+
+
+

これはカレンダーとToDoを表示するWebアプリケーションです。ここではWebアプリケーションの実体はexample.rbにあることとします。calendar_html()todo_html()がそれぞれ部品のHTMLを出力します。

+
+
+
HTML生成
+

この部分は各部品のHTMLによる外観を決定します。下層にあるビジネスロジックから与えられたデータ(配列や文字列など)をHTMLに変換します(リスト32.3)。

+
+

リスト32.3●HTML生成

+
def todo_html()
+  str = "<ol>"
+  for todo in todo_logic()
+    str << "<li>"
+    str << todo
+  end
+  str << "</ol>"
+  return str
+end
+
+
+

リスト32.3の例ではビジネスロジックに属するtodo_logic()メソッドが返したtodoを表現する文字列の配列を元にしてHTMLを生成しています。

+
+
+
ビジネスロジック
+

ビジネスロジックはアプリケーションの「what」の部分を担当します。上記の例であれば、カレンダーの日付を計算する、とかToDoをリストするとかがロジックになります。

+ +

ビジネスロジックはHTMLを直接生成するのではなく、返したいデータそのものを返すようにします。このようにすることで、外観と論理を分離することができますし、なによりロジック部分だけをテストすることができるようになります。テスト第一主義者としてはロジックのテストを行うことができるということは非常に重要です。

+
+
+
DBアクセス
+

今回のアプリケーションはPostgreSQLを使っているので、データベースからのデータの取り出しや書き込みにはSQLを使うのですが、ビジネスロジックの中で直接SQLを使ってデータベースを呼び出すことは今回は避けました。データを取り出したい処理、あるいは更新したい処理ごとにメソッドを定義します。

+

その理由は大きく分けて2つあります。1つは将来データベースに関する大きな変更を加えたときに修正が1箇所にまとまっていたほうがわかりやすいことです。極端な話、将来リレーショナルデータベースではなく、オブジェクト指向データベースに移行するかもしれません。直接SQLを書き込んでいれば、そのような部分を探し回って修正する必要があります。

+

もう1つの理由はテストです。更新を伴うデータベースのテストは副作用があるのでなかなか難しいところがあります。しかし、この部分を独立させておけば、とりあえずそれらしいテスト用の結果を返すダミー(Mockと呼びます)に置き換えてテストすることができます。Mockはテストによく使われる手段です。

+
+
+
データベース
+

一番下の層がデータベースです。先にも述べたように今回はPostgreSQLを用いました。データベースは以前のバージョンでも使われていたのでスキーマその他はそのままです。

+
+
+
新構成のメリット
+

このような新構成にすることで、プログラムが役割ごとにモジュール化され保守や更新がより簡単になります。また、以前は難しかったWebアプリケーションのユニットテストを行うことができるようになります。アプリケーションの機能そのものを実現するビジネスロジックの部分は、単なるメソッド呼び出しですから、通常のテストプログラムの手法でテストできます。機能がきちんと実現されていれば、プレゼンテーションおよびHTML生成については、結合テストにおいて目視で確認できます。

+

こういう構成にする場合、各モジュールへの機能の振り分けを適切に行うことが重要です。それぞれのモジュールが持つべき機能をよく考えて設計すべきです。実際、今回のケースでも機能の分割を間違えていて数回構成の見直しが必要になりました。

+

原稿執筆時点では、このプロジェクトはまだ完了していません。コンサルタントとして参加した私としては、これで成功するといいなあと心から願っています。

+
+
+
+

生活を改める

+
+

「わかっちゃいるけどやめられない」というようなことはいろいろあるものです。頭では理解しているけれども、心では理解していないってことなんでしょうか。

+

私にとってはテスティングはそのような「頭では理解しているが心では理解していない」ことの1つです。ソフトウェアを開発する際に今回自分で説明したように、まずテストを書いてから開発にかかり、コンパイルするたびにテストを実行するという手順を踏めばよいことはわかっているのに、面倒だったり、つい昔ながらのやり方で押し通してしまうことがたびたびです。私が開発している最も大きなプログラムは実はRubyそのものなんですが。

+
+

しかし、最近になってようやっとそんなことではいけないと思い始めました。皆さんの協力もあってRubyそのもののテストも整ってきました。変更や改善を行うたびにテストを行い見直す習慣が次第についてきたようです。

+

それでもまだときどき忘れちゃうんですけど。

+
+
+

まとめ

+
+

今回はXPのプラクティスの1つ、テスティングを中心に説明しました。あなたもテスト第一主義でソフトウェア開発してみませんか? 今までとは違う感覚が味わえるかもしれませんよ。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-005.xhtml b/docs/vol2/xhtml/p-005.xhtml new file mode 100644 index 0000000..b95dbd2 --- /dev/null +++ b/docs/vol2/xhtml/p-005.xhtml @@ -0,0 +1,61 @@ + + + + + +第32章 テスト第一主義 + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ オープンソースと特許

+
+

発明を行うためにはそれなりの苦労が必要です。その苦労した発明が簡単に真似されてしまっては発明しようという意欲がなくなってしまうでしょう。生活も維持できないかもしれません。

+

ですから、その苦労に報いて発明を奨励し、人類の進歩発展に貢献するために、発明を保護する制度が生まれました。これが特許です。特許の歴史は古く、特許制度の原形は紀元前600年頃の古代ギリシャにさかのぼるのだそうです。この頃のシバリスという都市では、特別な料理を創作した料理人にはその料理の1年間の独占が認められていたのだそうです。また、イギリスには17世紀にはすでに現在の形に近い特許制度があったということです。

+

人類の進歩発展に貢献しようという特許の理念はすばらしいものです。特許は情報の公開の見返りに、発明者に一定期間の独占権を与えることでインセンティブを与えようというものです。

+

しかし、特許は発明者(出願者)に出願から20年もの間独占的な権利を与えます。独占的な権利とは、その発明の実施に当たり対価を取ることも、実施を禁止することも自由という権利です。それが問題に感じられるときもあるのです。特にソフトウェアが対象になるときには。

+

日本では長らく発明全体の一部にソフトウェアが用いられている場合を除いて、ソフトウェアは特許の対象にはなっていませんでした。ソフトウェアは「モノ」ではなく、日本の特許法の前提である「自然法則を利用した発明」と見なされなかったからです。

+

しかし、最近の法改正により実体でないソフトウェアそのものに特許を認めるように制度が変更されました。ソフトウェアビジネスにとって特許という強大な権利はありがたいもので、知的所有権の強化の当然の結果といえるかもしれません。

+
+
文化の衝突
+

オープンソースも情報を公開することによって、人類の進歩発展に寄与しようという試みです。情報を公開しようという点では特許に似た側面もあります。

+

ところが先ほども述べたように特許には20年にも及ぶ強大な独占が伴いますから、オープンソースにとって都合が悪い点がいくつかあります。

+
+

これらの点がただちに問題になるわけではありません。ただ、使い方によってはオープンソースにとって非常に都合が悪い事態が発生する可能性があります。知的所有権がますます強化される傾向がある昨今、このままでは悪意のないオープンソース開発者が特許紛争に巻き込まれ、裁判の被告になってしまう事態もありえないこととは言い切れません。オープンソース開発者の一人として私も漠然とした不安を感じずにはいられません。

+
+
+
対抗処置
+

それでは私たちはいったいどうしたらよいのでしょうか。

+

私自身もまだまだ不勉強です。最近になってやっと工業所有権の教科書を少し読んでみたりした程度です。ですから、はっきりとした結論を得ているわけではないのですが、現時点でも以下のような対策が考えられると思います。

+

1つは自分たちのアイデアをどんどん公開して公知(誰もが知っている状態)にすることことです。公知のアイデアには特許が成立しませんから。

+

ただ、公知化の手順はいろいろ面倒で、有効な手段についていろいろ考えたのですが、オープンソース開発者にとって、やはり最も効果的なのはソースコードによってだと思います。つまり、どんどん開発して、どんどん公開していくことで、そのソースコードに含まれるアイデアを公知化していくのが一番よいのではないかと思いました。ソースコードは日付の情報とともに世界中に配布されますから、おそらくは公知の条件を満たすと思います。裁判や審判を経ないと断言はできませんが。

+

もう1つ、私たちが自発的にできることは、オープンソース開発に当たって危なそうなソフトウェア特許をあらかじめリストアップしておくことです。個別の開発者が特許調査を行うのは現実的ではありませんが、特許というのは建前ではその内容が公示されていることになっていますから、危ない特許をリストする行為そのものは、コストを別にすればそんなに難しい行動ではありません。あとはそのコストをどう分配して負担するかですね。海外ではFFII(Foundation for a Free Information Infrastructure, http://www.ffii.org/)がそのようなプロジェクトをすでに始めているようです。

+

これらの対策は比較的容易に始められるはずなので、近い将来実行に移していこうと思います。

+

より長期的には、ソフトウェア特許をオープンソースに対して敵対的に使うよりも、協調したほうが有利であるという社会的な雰囲気を作り出していくことが有効でしょう。

+

それだけでなく、最近ヨーロッパで行われたように、どんなものに特許に適用すると望ましくないのか、どんなものが特許にふさわしいのかについて、法律や経済の専門家を交えた徹底した議論も必要だと思います。

+

さて、そんなことをどうやって始めたらよいのかしら。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-006.xhtml b/docs/vol2/xhtml/p-006.xhtml new file mode 100644 index 0000000..5b03979 --- /dev/null +++ b/docs/vol2/xhtml/p-006.xhtml @@ -0,0 +1,356 @@ + + + + + +第33章 Wiki Wiki + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay33 +
+

+探訪Ruby
+Wiki Wiki +

+
+

[Linux magazine, 2004年2月号]

+
+

そういえば純粋なWikiページを見かけることはなくなりましたね。むしろWikipediaのことを省略してWikiと呼ぶのを聞くことが増えたかもしれません。誰でも気付いたときに情報を更新できるというWikiの性質は、インターネットユーザーが増大した現代ではノイズが多すぎてしまうということなのかもしれません。紹介しているWikiシステムもほとんどがリンク切れです。牧歌的な時代は終わってしまったということでしょうかね。

+

「Ruby開発日記」は「日本Rubyの会」についてです。開発コミュニティとは別に、イベントの主催などを支援する組織としての日本Rubyの会の発足について語っています。現在でも日本Rubyの会はユーザーコミュニティとして活発に活動しています。

+
+
+

この連載でも前の連載でも今までずっと直接プログラム開発に関係するテーマばかり見てきましたが、今月からしばらくユーザーの視点からRubyで記述されたプログラムをどう使うかという観点でRubyの世界を探検します。今月のテーマはWikiです。

+
+
+

Wikiとは何か

+
+

Wikiとは一言でいうと「誰でも自由に編集可能なWebページ群」です。もともとはWard Cunninghamがデザインパターンに関する情報を集めようとして始めたものです。cs.com(http://c2.com/cgi/wiki)にあるオリジナルのWikiには数え切れないほどのいろいろな情報があります。

+

聞くところによると最初のWikiは350行程度のPerlスクリプトだったのだそうです。c2.comは今でも300ドルくらいの自作機で自宅のDSLを使って運用しているそうです。

+

Wikiとはハワイの言葉で「迅速」という意味があるそうです。Ward Cunninghamは最初このシステムを「QuickWeb」と名付けようとしていたそうですが、個人的には「Wiki」という名前にしたのが正解だった思います。短くて印象に残りやすくいい名前です。やっぱり名前は重要ですよね。

+
+

Wikiの歴史や詳細についてはWiki唯一の解説書、Bo Leuf, Ward Cunningham著『Wiki Way — コラボレーションツールWiki』(ソフトバンクパブリッシング、ISBN4-7973-1832-5)を参照してください。

+
+
+

Wikiの特徴

+
+

Wikiには以下にあげるような特徴があります。

+
+

ページの追加・編集が自由

+

Wikiのページを見るとどこかに「Edit this page」とか「編集」いうようなリンクがあります。そこをリンクするとページの内容を含むテキストフィールドが現れます。適当に編集した後、「Save」ボタンを押すとあら不思議、その編集結果が反映されてしまいます。

+

誰でも情報を追加できるという点でWikiはWeb掲示板に似ています。ただ、Wikiではただ単に時系列に沿ってコメントを追加していくだけでなく、新しいページを作ったり、既存のページを編集することが自由にできます。ですから、掲示板などに比べて極端に自由度が高いということができます。逆に自分で意識しないと時間の情報が保存されませんし、誰が書いたのかさえわからないので、注意が必要です。

+

書式は簡単なマークアップ

+

オリジナルWikiは編集時にHTMLを直接書くのを許すのではなく、簡単なマークアップを使っています(表33.1)。HTMLを直接許すと何でもできてしまいますから、妥当な制約だと思います。Wikiクローンと呼ばれるWiki互換システムでは書式が追加されていたり、あるいはまったく別の書式を採用していたりしますが、これについては後述します。

+

WikiNameによるリンク

+

他のWikiページへのリンクはWikiNameと呼ばれる形式で指定します。WikiNameは英単語の先頭を大文字にして結合した文字列です。プログラミングではCamelCaseと呼ばれる形式ですね。Wikiページではこの形式の文字列は、その名前を持つ別のページへのリンクであると見なされます。もし、その名前のページが存在しなければ、WikiNameの右側に「?」というリンクが表示され、そこをクリックすると、WikiNameのページを編集することができます。

+ +

WikiNameは英語では便利な形式ですが、単語を区切る習慣も大文字小文字の区別もない日本語には向きません。そこで日本発のWikiでは「[[」と「]]」で囲まれたものをリンクと解釈するように拡張されているものが多いようです。

+
+
+

表33.1●Wikiマークアップ

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
マークアップ意味マークアップ意味
WikiNameWikiページへのリンク<tab>項目: 説明定義リスト項目
<空行>段落の区切り <p><行頭空白><pre>
—-水平線 <hr><tab><空白>:<tab>引用
<tab>*リスト項目レベル1”文字列”イタリック指定
<tab><tab>*リスト項目レベル2”’文字列”’ボールド指定
<tab>1番号付きリストURLリンク
+
+
+
+

Wikiの魅力

+
+

Wikiは「誰でも編集可能」という点を除けば、ただ単に簡易なマークアップを用いたWebページにすぎませんから、ほとんどあらゆることに使うことができます。しかし、一番向いているのは協同作業による情報の集積でしょう。もともとのc2.comでの目的もデザインパターンの事例や情報を集めることでした。

+

Rubyホームページ(http://www.ruby-lang.org/ja/)では、リファレンスマニュアルやインストールガイドなどにWikiクローンの一種“RWiki”を用いて情報を最新に保っています。Wikiを使ってみんなで寄ってたかって本の原稿の校正を行った例もあるそうです。

+
+
+

そんなことで大丈夫?

+
+

ところで気になるのが、Wikiの安全性です。

+

単なる掲示板でさえ「荒らし」と呼ばれる行為により、悪口などが書き込まれたり、大量の書き込みによってサーバーが麻痺まひしたり、そこまで行かなくても劣悪な状況に追い込まれる事態が問題になっています。Wikiではメッセージの追加だけではなく、自由な変更を許していますから、より深刻な事態が発生しそうです。ページにゴミが書き込まれたり、内容が消されたりしないのでしょうか? とても不安です。

+

ところが、実際にWikiを運用している人の話を聞くとそれほど問題にはなっていないようです。Wikiという仕組みがあまり知られていないせいではないかと思っていましたが、先日デンマークで開かれたJAOOカンファレンスでWard Cunninghamと会ったときにこのことについて話をしたら、c2.comのような超有名な場所でも「荒らし」のような行為による問題はほとんどないそうです。ただ、大量書き込みでロードアベレージが100を超えた(!)ケースが数度あったので、そういう悪質な書き込みはIPアドレスではねているということでした。「私の非力でかわいそうなマシンをいじめないでくれ」とは彼の弁です。

+

Wikiで意外と問題が発生しない理由の1つは悪意を持った人よりも善意を持った人のほうが割合として多いことではないかと思います。ですから、ちょっとしたいたずら書きが発見されると発見した人が即座に修正してしまって問題が顕在化しないことが原因ではないかと考えられます。目玉がたくさんあると問題が早期に検出され重大化しない、というのはオープンソースにもつながる現象ですね。

+

Wikiに対する荒らしとしては、

+
    +
  • よく参照されるページにゴミを書き込む

  • +
  • 役に立たないページを作る

  • +
  • ページの内容を消してしまう

  • +
+

が考えられます。最初のものは発見した人が即座に消してしまいますし、2番目のものはWebサーバーのデータベースに少々無駄なデータが格納されるだけです。一番問題なのは“最後のページを消してしまう”ですが、これも適当なタイミングでバックアップを取っておけば被害は最小限で済むでしょう。

+
+

Wikiに問題が発生しないもう1つの理由は、Wikiという仕組みで「はいどうぞ、何でもしていいですよ」とあからさまに許された場合、人間はかえって悪いことがしにくい傾向があるのではないか? と私は推測しています。

+

Wikiで運用しているRubyホームページのリファレンスマニュアルの場合も問題はほとんど発生していません。ごくたまに数行ゴミを書き込む人がいますが、すぐに対応されています。Rubyリファレンスマニュアルの場合、すべての修正内容が管理者にメールで報告されるので、より発見が早いのです。

+
+
+

Wikiのもう1つの魅力

+
+

Wikiはプログラマーに対しても魅力的です。Wikiというのは非常に単純な原理で動いていますから、Webシステムとしてはかなり簡単な部類に入ります。このことは最初のWikiがわずか350行のPerlスクリプトであったことからもわかります。簡単な実装で面白いことができるというのはプログラミングのテーマとして優れています。

+

ですから、こんな面白いものをプログラマーが放っておくわけがありません。世の中には自分の好みの機能を追加したWikiクローンと呼ばれるWiki互換システムがそれこそ星の数ほど実装されています。その実装もPerl, Python, Ruby, PHP, Javaなどさまざまです。ただ違う言語で実装しただけでなく、Zopeのようなコンテンツマネジメントシステムの上に構築されたZWikiのようなWikiクローンもあります。

+
+
+

さまざまなWikiシステム

+
+

このようにたくさんあるWikiクローンですが、もちろんRubyで実装されたものもたくさんあります。RAAなどを調べてみると、実に11ものWikiクローンがありました。眺めてみるとそれぞれの思想の違いなどもあって面白いです。

+

では、これら11のWikiクローンをひととおり紹介してみましょう。

+
+

AsWiki(http://aswiki.sourceforge.net/

+

TANIGUCHI TakakiさんによるWikiクローンです。RubyによるテンプレートエンジンAmritaを使っているのが特徴です。RCSによる履歴管理もできます。

+

clWiki(http://clabs.org/ruby.htm

+

Chris Morrisさんによるclwikiはデータをプレーンテキストで格納するのが特徴です。BlogkiというWikiによってBlogを書くプログラムが同梱されています。

+

KakiWiki(http://kakiwiki.homeunix.org/KakiWiki/kaki.rbx

+

sayさんによるkakiwikiはtDiaryテーマが使えることと、国際化が特徴です。同じ名前のページを複数の言語で記述し、ブラウザのAccept-Languageで切り替えることができるそうです。また、ドキュメントツリーをキャッシュするため高速だそうです。

+

MiniRubyWiki(http://www.xpsd.com/MiniRubyWiki

+

PhlipさんによるMiniRubyWikiは、Miniという名に反してWikiとしてひととおりの機能を備えています。また、実験中ですがWikiStyleSheetというWikiそのもの(マークアップ形式とか)をカスタマイズする機能を実装しています。

+
+

RWiki(http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb

+

咳さんによるRWikiは、マークアップとしてRDを使うというWikiの中では変わり種です。これについてはあとで説明します。

+

RDocWiki(http://www.sourceforge.net/projects/rdoc-wiki

+

Michael NeumannさんによるRDocWikiは、RWikiがRDを使うようにRDoc形式を使うWikiクローンのようです。また、データをセーブするバックエンドなどを交換できるそうです。ただし、まだソースが公開されていません。RDocはRubyプログラムにドキュメントを追加する方法として最近広く使われている形式です。

+

Ruwiki(http://rubyforge.org/projects/ruwiki/

+

Alan ChenさんのRuwikiはネームスペースをサポートしていて、同じ名前の複数のページを持つことができるそうです。海外では結構使われていると聞いたことがあります。

+

TaoWiki(http://f16.aaacafe.ne.jp/~yand/taowiki/taowiki.cgi

+

a.yさんによるTaoWikiは、他のページをインクルードして部品として組み合わせる機能や、スタイルシートや動的なページも編集する機能があります。面白い。

+

Miki(http://www.mikihoshi.com/miki/

+

kanさんのMikiは比較的小規模なWikiクローンです。標準配布のパッケージだけで動作するのでインストールが簡単です。

+

Tiki(http://todo.is.os-omicron.org/tiki.cgi

+

todo.orgによるTikiはRubyによるWikiクローンの老舗といえると思います。Wikiとしてひととおりの機能をすべてそろえているだけでなく、テーマ、多言語対応、プラグイン機能など充実しています。SourceforgeにはTikiWikiという似たような名前のプロジェクトがありますが、こちらはPHPで実装されています。

+

Hiki(http://www.namaraii.com/hiki/

+

最近登場した竹内仁さんによるHikiは、tDiaryテーマとtDiaryのプラグイン(の多く)がそのまま使える点がウケたのか人気上昇中です。tDiaryの資産をそのまま生かすという戦略が成功していますね。なぜかHikiだけはRAAに登録されていませんでしたが、有名なのでここに含めました。

+
+
+
+

RWiki

+
+

(日本の)Ruby界で最も有名ではないかと思われるWikiがRWikiです。

+

RWikiはいわゆるWiki記法ではなく、RD形式を採用しています。RDはRuby Documentの略で、もともとRuby関係のドキュメントやマニュアルなどを記述するためにPerlのPOD(Plain Old Document)形式を参考に作られた(というか、私が作った)形式です。

+

RD形式はインデントを利用した形式が特徴です(表33.2)。RD形式の文章の例をリスト33.1に示します。

+ +
+

表33.2●RD形式

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ブロック
形式
=見出しレベル1インライン
形式
((<...>))リンク
==見出しレベル2((*...*))強調
===見出しレベル3((...))コード <code>
<空行>段落の区切り((%...%))キーボード入力
<インデント>引用((-...-))脚注
*リスト(箇条書き)
(1)番号付きリスト
:用語定義
+
+
+

リスト33.1●RD形式の文章例

+
= これは見出しです
+
+RD形式はRuby Documentの略です。その特徴は
+
+* プレーンテキストに近い見栄え
+* インデントを解釈する
+* ほどよいマークアップ
+
+です。文章中に((*強調*))や、
+((<リンク|URL:http://www.rubyist.net/~matz/>))を
+入れることができます。
+
+  インデントされた文章は引用です
+  プログラムをそのまま取り込むのに便利です
+
+  void
+  main(int argc, char **argv)
+  {
+      printf("hello world\n");
+  }
+
+箇条書きなどはネストできます。つまり
+
+* このような箇条書きの中に
+  * 次のレベルを埋め込むことができます
+* ネストの状態はインデントで決定されます
+
+これは
+
+(1) 番号付きリストでも
+    (1) 当然有効です
+    (2) あまり使わないかもしれませんが
+
+
+
+

実際、私の最初の本である『オブジェクト指向スクリプト言語Ruby』などの原稿や、本連載の原稿などはRDで記述されています。もっともこれらの原稿での変換は編集の人に手動でお願いしていますが。

+

RWikiのその他の特徴としては、以下のようなものがあり、Wikiとしてはかなり変わり種です。

+
    +
  • WikiName不採用
    +リンクはRDのリンクだけを使います

  • +
  • リンク/逆リンクの表示
    +各ページ末尾に、このページからリンクしているページおよびこのページをリンクしているページの一覧がリストされます

  • +
  • 更新時間の表示
    +上記一覧にはそれぞれ更新時間が表示されます

  • +
  • 「?」の不在
    +普通のWikiでは存在しないページへのリンクには「?」マークが付くのですが、RWikiにはその機能はありません。そのリンクの更新時刻が「-」となるので、存在しないことがわかります。

  • +
+
+
+

RWikiのインストール

+
+

個人的にはWikiとの正しい関わり方は、既存のWikiに書き込むか、自分でWikiシステムを作るかどちらかだと思っているのですが、一応インストールについても説明しておきます。

+

開発者の咳さんによると、RWikiの開発当初の目的として「Rubyライブラリの紹介」というものがあったそうなので、RWikiのインストールには他のたくさんのライブラリをインストールする必要があり、かつてはなかなか面倒な作業でした。しかし、Ruby 1.8になってRWikiが使っていたほとんどのライブラリは標準添付になったのでインストールはずいぶん楽になりました。後必要なものはRDtoolだけです。

+
    +
  • tarファイルの入手先
    +http://www2.pos.to/~tosh/ruby/rdtool/archive/rdtool-0.6.14.tar.gz
    +http://www2a.biglobe.ne.jp/~seki/ruby/rwiki-2.0.1.tar.gz

  • +
+

入手したtarファイルを展開し、READMEの内容に従いインストールします。

+
+
+

RWiki活用事例

+
+

RWikiはRuby日本語公式サイト(www.ruby-lang.org/ja)でいろいろな目的に活用されています。

+
+

RDPはWikiを利用していろいろなライブラリなどのドキュメントを集積しようというプロジェクトです。

+
+
+

Wikiの活用

+
+

このようなWikiをどのように利用するのがよいでしょうか。

+

やはり一番向いているのはオリジナルWikiの対象であったドキュメントの集積でしょう。c2.comには1万5000を超えるページが集積されていて、毎月、数百ページずつ増加しているそうです。

+

ドキュメントの集積といえば、Wikipediaがあります。WikipediaはWikiを利用したWeb百科事典です。誰でも自由に項目を追加できますし、間違いを見つけたら訂正することができます。WikipediaのURLは、

+
    +
  • http://en.wikipedia.org/(英語)

  • +
  • http://ja.wikipedia.org/(日本語)

  • +
+

です。

+

個人のホームページとしてWikiを利用するのもよいでしょう。RWiki公式サイトには個人名のページがいくつもあります。Wikiなので個人ページに他人が「ツッコミ」を書き込むこともしばしば発生し、双方向コミュニケーションが成立しています。

+

『リファクタリング』で有名なMartin Fowlerは彼のBlogをWikiで書いています。名付けてBlikiだそうです。もっとも彼のBlikiは一般ユーザーは更新できませんので、厳密にはWiki的ではありません。注目すべきはこのBlikiの翻訳Bliki_jaで、Hikiで運用されています。こちらは普通のWikiですから自由に書き換えられます。

+
    +
  • Martin Fowler’s Bliki
    +http://martinfowler.com/bliki/

  • +
  • bliki翻訳
    +http://capsctrl.que.jp/kdmsnr/wiki/bliki/

  • +
+

その他にもメモやToDoリストなどにWikiを活用している例はたくさんあります。また関連リンク集と称して、ある特定のトピックに関するWebページへのリンクをWikiを使って集めたものもあり、結構便利に使われています。例として、私も関わった「日本発のオープンソース」の件の反応リンク集をあげておきます。

+
    +
  • http://sheepman.parfait.ne.jp/wiki/cmd=list/

  • +
+

から「日本発のオープンソース」をクリックしてください。

+
+
+ +

まとめ

+
+

今回はWikiについて紹介しました。

+

誰にでも自由に書き換えることができ、今までにないコラボレーションを実現できるWikiには新しいWebのあり方として、応用次第で大きな可能性が広がっています。あなたもWikiを活用してみませんか?

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-007.xhtml b/docs/vol2/xhtml/p-007.xhtml new file mode 100644 index 0000000..0907ac1 --- /dev/null +++ b/docs/vol2/xhtml/p-007.xhtml @@ -0,0 +1,117 @@ + + + + + +第33章 Wiki Wiki + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ 日本Rubyの会

+
+

先日アメリカのテキサス州オースチンで開催されたRuby Conference 2003に出席してきました。前日にはC++の開発者Bjarne Stroustrup博士に招待されてTexas A&M大学でセミナーを開いたりと忙しい旅行であったのですが、実に有意義でした。

+

Ruby Conferenceそのものはわずか50名弱の出席であったのですが、それでも出席者の質も、またプレゼンテーションの質も良好で、これほど優れたカンファレンスはもっと大規模でお金のかかったものを含めてもなかなかありません。プログラムを表33.3に示します。

+
+

表33.3●Ruby Conference 2003プログラム

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1日目
Working in the Garden: Web Apps with Borges – Eric Hodel
The State of XML Processing in Ruby – James Britt
Object-relational mapping with Lafcadio – Francis Hwang
Ruby World: (not) Implemented – Steve Tuckner
Generating Code in Ruby – Jack Herrington
Roundtable with Matz
2日目
Programming LEGO MINDSTORMS with Ruby – Shashank Date
(...aside) – David Alan Black
Building Environment for MUES – Michael Granger
A Cluless Ruby Hacker Explores Security – Nathaniel Talbott
Teaching Ruby to Testers – Bret Pettichord
Introducing Ruby to the Corporate World – Jim Freeze
Keynote 「Visions for the Future」 – Matz
3日目
Building with Rake – Jim Weirich
Toward a Refactoring Framework for FreeRIDE – Hal Fulton
Ruby Java Debug Wire Protocol – Rich Kilmer
+
+

今年で3度目となるRuby Conferenceですが、この質の高さは驚嘆に値します。出席者の中からも「すばらしいカンファレンスだった」「来年もぜひまた来たい」という感想が聞かれました。私もそう思います。

+

今年からはDavid Alan Blackを中心にRuby Central LLCという非営利団体が設立され、今後はその団体の主催という形でRuby Conferenceが開催されることになりました。昨年までは単なる有志の集まりだったRuby ConferenceもRuby Centralの登場で今後はよりきちんとした組織化が行われるのではないかと期待されます。

+

さて、Ruby Conference会場で何度か聞かれた質問に「日本ではRubyカンファレンスって開かれているの?」というものです。

+

話を聞いてみると、海外のRubyユーザーから見ると、日本は開発者は住んでいるし、Ruby関連の本は40冊近くも出版されているし、ruby-listを始めとするメーリングリストで議論は活発に行われているし、日本語でしか書かれていない(ので彼らは興味があっても読めない)ページがたくさんあるし、などなどでまるで日本に対して「黄金の国ジパング」に似たようなイメージを持っているようです。

+

そんな「夢の国」ではきっとRubyに関するイベントはたくさん開かれていて、Ruby Conference以上にすばらしいものに違いない、そういう期待をこめて上記の質問につながっているようです。しかし、意に反して、私の答えは「いや、きちんとしたイベントは開かれていないんだよ」でした。彼らは一様に(ほんの少し)落胆したようでした。

+ +

そうなんです。たぶん日本は世界で一番Rubyユーザーの多い国なんですけど、Rubyカンファレンスのようなイベントがほとんど開催されていません。過去を振り返ると2000年に京都でLinux Conferenceと併催されたカンファレンスはPerl/Ruby Conferenceという名前でPerlコミュニティとの共同開催でした。しかも主催はほとんどPerlコミュニティに任せっきりでした。その次の年に開かれたYAPRC(Yet Another Perl/Ruby Conference)19101でもそうです。2003年はLL Saturdayというイベントが開かれましたが、これもPerl, PHP, Python, Rubyの集まりでした。

+

実はRuby単体のイベントはほとんど開かれていないんです。セミナーのようなものといくつかの単発的な宴会を除けば、ここ数年では2003年10月に島根県の玉造温泉(私の自宅のすぐそばです)で開かれたRuby温泉ミーティングくらいでしょうか。

+

これはもしかするとユーザーコミュニティが存在しないせいかもしれません。PerlでもLinuxでもPostgreSQLでもPHPでも、「日本なんとかユーザー会」のような会が存在していて日本語のWebページを用意したり、ドキュメントを翻訳したり、イベントを主催したりしているようです。

+

ところがRubyの場合、Webページもドキュメントも最初から日本語で用意されていますし、コミュニティといえばメーリングリストを主体としたどちらかというと開発コミュニティそのものしか存在しません。

+

しかし、ユーザーコミュニティの不在はイベントやユーザーとしての交流の少なさなどの弊害を生んでいるといえないこともありません。そこで先日の温泉ミーティングではこの事態を打開すべく「日本Rubyの会」の発足が提唱されました。「日本Rubyユーザー会」ではないのは、日本全国のような広い範囲で「ユーザー会」というのは実効的でないだろうという意見を反映したものです。

+

まだ詳細は決定していないのですが、会長に日本人唯一のRuby Conference皆勤賞(私を除く)のたかはしさんにお願いしようと考えています。私は実際には全然働かない名前だけの「名誉総裁」くらいのポジションを狙っています(笑)。

+

日本Rubyの会では、日本を代表するユーザーコミュニティとして、

+
    +
  • イベントの主催者

  • +
  • 宴会/食事会の名義

  • +
  • 寄付の送金先

  • +
  • 物心両面での開発支援

  • +
  • サーバーなどのホスティング

  • +
  • Webを中心とした情報発信

  • +
  • ユーザー交流支援

  • +
+

などができたらいいなあと考えています。

+

日本における唯一の弱点であるユーザーコミュニティが改善されるとき、日本が名実ともに「Rubyの夢の国、ジパング」になる日がやってくることでしょう(大げさ)。楽しみだなあ。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-008.xhtml b/docs/vol2/xhtml/p-008.xhtml new file mode 100644 index 0000000..a9362a6 --- /dev/null +++ b/docs/vol2/xhtml/p-008.xhtml @@ -0,0 +1,228 @@ + + + + + +第34章 Blogの世界 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay34 +
+

+探訪Ruby
+Blogの世界 +

+
+

[Linux magazine, 2004年3月号]

+
+

Blogもだいぶ廃れましたね。はてなブログは健在ですが。個人が情報発信したいという欲求は変わらないようですが、日々のつぶやきのようなものはX(旧Twitter)やBlueskyに、ちょっと長めの記事はQiitaやZenn、海外だとMediumに、読み物はNoteなどに分散してしまったようです。結果的に記事で紹介されているブログソフトウェアもほとんどが廃れていますね。時代の流れを感じます。

+

「Ruby開発日記」は「Rubyの未来」について。これはちょっと背景を説明しておく必要があります。2000年代初頭、さまざまな言語で過去からのお荷物を捨てて、「次世代言語」に生まれ変わろうという動きが流行したことがありました。PerlではPerl 6, PythonではPython 3000, RubyではRuby 2(コードネームRite)です。これは後に登場するRuby 2.0とは別物です。開発日記ではこの新世代のRuby 2設計の2004年時点での取り組みを解説しています。この時点ではRubyを完全に作り変えようと考えていたことがわかります。

+

各言語の「次世代」はそれぞれ違う運命をたどりました。Perl 6は結局一般化せず、Perlの本流はPerl 5のまま継続しました。今ではPerl 6はRakuという名前に改名され、別の言語となっています。Python 3000はPython 3.xになりました。しかし、その非互換性のためPython 2.xを使い続ける人も多く、Pythonコミュニティは15年以上分断されました。Rubyでは結局作り直すという試みは(主に互換性の維持を理由に)断念されました。当時としては冒険ができず残念に思っていましたが、言語の発展のためにはむしろよい判断でした。その後、RubyはRuby 1.9, Ruby 2.0, Ruby 3.0と漸近的な進化を続けることになったのです。また、このとき実験していたRiteの残骸は後にmrubyにつながりました。

+
+
+

先月のWikiに続いて、今月は何かと話題の個人Webサイト、Blogについて探検してみましょう。

+
+
+ +

Blogとは何か?

+
+

Blog とはWeblog の略です。Webはいうまでもありませんが、Logのほうは、辞書でいう「航海日誌、旅行日記」などの意味で、日々の記録といったニュアンスでしょう。

+

この原稿の執筆に当たってBlogの定義についていろいろ調べてみましたが、これが決定的という定義は見当たりませんでした。基本的にこういう雰囲気だけで使われている言葉に勝手に定義を与えるのは危険です。私はかつて「オブジェクト指向」や「オープンソース」などの定義についていろいろ議論してきた経歴を持つ「前科者」ではありますが、これらについては確固たる自分の意見を持っているからこそできたことで、Blogについて同じような議論を貫く自信もやる気もありません。

+

そこで、多くの人々がBlogであると呼んでいるものに共通すると思われる特徴だけを列記しておきます。

+
    +
  • 毎日あるいはそれに近いペースで更新されている
    +私はこれが最も重要な特徴だと思います。きちんと運営されているBlogは毎日のように更新されます。もっとも、アメリカでのBlogホスティングサービスを対象にしたある調査によると実はBlogサイトの7割は過去2カ月更新されず、平均更新頻度は2週間に一度なのだそうですが。ほとんどのホスティングサービスは利用は無料なので、単にお試しという人が多いのが影響していると思われます。この調査によると1度だけしか更新していない三日坊主以下のBlogが4分の1を超えるそうです。日本でのデータも見てみたいものです。

  • +
  • 新しいものが先頭にくる
    +頻繁に更新されるといえば、先月紹介したWikiのようなものがあります。活発なWikiでは毎日どころか毎時間、毎分の単位で更新が行われます。ですが、Wikiと比較するとBlogには「時系列順」という特徴があります。更新された項目は時間順に並び、トップページでは新しいものほど前に並びます。一方、Wikiそのものには時系列という概念がなく、それが特徴でもあり短所でもあります。中には、ページの構成を工夫してWikiでBlogを運営している人もいます。こういうものはBlikiとかWikilogとか呼ばれることがあるようです。

  • +
  • 個人が運営している
    +Blogは基本的に個人サイトです。Blogは基本的に個人サイトです。たとえば「スラッシュドット」のような一種のニュースサイトも、毎日更新され、新しいものが先に来ますし、実際Blogにも使えるソフトウェアを使って運用されていますから、形式としては上記のBlogの特徴を持ちますが、よっぽど広い定義を持った人以外はこれをBlogと呼ぶ人はいません。やはり、個人が運営しているというのが多くの人が持つBlogに対するイメージだと思います。企業や組織で運営するBlogが存在できないとまでは言いませんが。

  • +
+

以上が、私の考えるBlogの特徴です。中には、BloggerやMovableTypeなどの定番Blogソフトウェアを使ったもの(だけ)がBlogだと断定する人もいますが、これはいくら何でも狭すぎると思います。

+
+

あと、すべてのBlogに共通な特徴とまではいえませんが、Blogにはインターネット上のほかのページにリンクして、そのページについて自分の意見を付け加えるスタイルのものが多く見られます。人によってはこれこそがBlogの本質だと呼ぶ人もいます。確かに歴史的に見ればBlog(あるいはWeblog)と呼ばれたものは、もともとはそのようなフィルタ型のサイトが発祥であったようですが。

+

このような「日々更新」「時系列順」「個人サイト」という特徴を持つサイトとして、日本では古くから「Web日記」とか「テキストサイト」とか呼ばれるものが存在していました。これらはBlogなのでしょうか? そうではないのでしょうか?

+

最初に言ったように、なにがBlogでなにがBlogでないかについて深入りしたくはないのですが、「Web日記」も上記の特徴を備えているので、この記事ではこれらもBlogであるとすることにします。

+

日本で昔からあった日記がアメリカで最近になってBlogとして注目を浴びた背景には、アメリカと日本のインターネット文化の違いがあるのではないかと思います。インターネット発祥の地であるアメリカですが、意外と個人サイトの存在感は薄く、目立っているのは企業や有名人によるサイトばかりでした。そういう状況で決して有名人ではない、個人による「情報発信」のムーブメントとしてBlogという言葉が注目されたのだと思います。

+

一方の日本では、企業サイトと同じくらい個人サイトも存在感を持っていて、その進化の過程で欧米のBlogと同じようなフォーマットを持つ「日記」がより早く誕生したのだと考えています。この違いの理由はいろいろあるでしょうが、一番怪しいのは、日本で一時流布した「インターネットで世界に情報発信」というキャッチフレーズでしょう。このキャッチフレーズに乗せられて開設してしまった個人サイトは数限りなくあったと思います。その中で生き残ってきたものが日本の個人サイトの源だったのではないでしょうか。

+

当時は「日本語で書いててなにが世界に情報発信だ」と思ったものでしたが、こんな効用があるとは予想もできませんでした。

+
+
+

Blogコミュニケーション

+
+

Blogの面白さの本質はコミュニケーションです。たとえば、Blogのスタイルで、毎日自分がどんな食事を食べたかメニューを記録したとして、それを読んでも面白くもなんともありません。100年経ったら歴史的資料として価値が出るかもしれませんが。Blogを通じて外の世界とコミュニケーションをとることで世界がどんどん広がっていきます。

+

ですから、Blogでは外の世界との情報のやりとりが重視されます。多くのBlogツールでは以下のような手段でやりとりを行います。

+
    +
  • リンク

  • +
  • コメント

  • +
  • トラックバック

  • +
  • RSS

  • +
+
+
+ +

リンク

+
+

多くのBlog記事は自分の興味のある情報を示し、それをリストしたり、コメントを付けて自分の考えを示しています。先ほども述べたようにこれがBlogの最も初期の形態です。BlogはWebページですから情報元のURLがあればリンクするのは当然のことです。

+

そのような背景があるので、Blogでは情報を提供するとき、その元ネタのURLを(あれば)明示することが推奨されます。また、どこかのページでその情報を入手した場合には、その経由先のURLを示すのが礼儀正しいやり方でしょう。それに経由先を示すことで、自分と興味の方向が近いサイトとの間にリンクを張ることができます。

+

このようにBlog同士でリンクを張り合うことにより、似た興味を持つ人によるBlogがつながり、次第にコミュニティが形成されていく、これがBlogの楽しさの1つです。

+
+
+

コメント

+
+

しかし、Blogの読者が全員自分のBlogを持っているわけではありません。また、たとえ自分のBlogを持っていたとしても、ほんの一言二言コメントしたいためだけに自分のBlogにエントリを用意するのも大げさに感じられる場合もあります。

+

そういう場合に対応するために、多くのBlogツールにはコメント機能が装備されています。コメントにより、元の記事の見落としが指摘されたり、欠けていた情報が補足されたりします。あるいはコメントをきっかけに有益な議論に発展することもあります。

+

ただ、コメントというのは基本的に匿名の書き込みですから、無責任なもの、攻撃的なもの、悪意のあるものが書き込まれる可能性があります。また、かつて宣伝目的で利用されたこともあります。読者からの自由なフィードバックを重視するか、コメントによる「荒らし」を避けることを重視するか、難しい判断ですが、一般的にはコメント機能を停止しなければならないほど問題が発生することは少ないようです。

+
+
+

トラックバック

+
+

リンクやコメントはBlogが存在する前からあった古くからの手法ですが、トラックバックはBlogによって誕生した新しいコミュニケーション手段です。

+

あるBlog(A)が別のBlog(B)の記事を話題にした場合、AからBへはリンクを張ることによってつながりを示すことができます。しかし、読者にとって知りたい情報は、このページがどのページを話題にしているかということはだけでなく、このページについて語っているページがどこにあるのかということも知りたいでしょう。

+

そこで、Bに対してAで話題になっていることを伝えるための方法ですが、リンクとコメントだけしかなければ、Bのコメント欄にAのURLを書き込むくらいしか方法がありません。正直なところちょっと面倒です。人間は面倒なことはやらないで済ませてしまうことが多いので、これでは面倒さが壁になって知りたい情報が集まらないことになってしまいます。

+
+

サーバーの管理者であれば、ログを見ることでReferer(参照元)の情報を得ることができますが、単なるBlogツールのユーザーには難しいことです(tDiaryには「リンク元」を表示する機能があります)。

+

そこで、登場したのがトラックバックです。トラックバックは相手のエントリを話題にしたことを通知するためのHTTPを使ってBlogツール同士がやりとりするプロトコル(取り決め)です。トラックバックに対応しているBlogツールには各記事ごとにtrackback URLと呼ばれるURLが用意され、記事の一部として表示されます。一方、参照する記事を書いた人は、記事を自分のBlogにアップロードするときに、参照した記事のtrackback URLを指定します。そうすると、アップロードを受けたBlogツールがtrackback URLに対してHTTPで参照情報(URLや要約など)を送ります。これで参照元のBlogは自分がそのページから参照されていることがわかりますから、コメントと同じように参照されているBlogの一覧を表示することができます。

+

トラックバックはMovableTypeというBlogツールで初めて導入されましたが、今ではMovableType以外の多くのBlogツールがトラックバックに対応し、ツール間を超えてやりとりができるようになりました。

+
+
+

RSS

+
+

RSSはRDF Site Summary(RDFによるサイト要約)の略で、機械にもわかる形式でWebサイトの概要を示す手段です。ここまで紹介してきたリンク、コメント、トラックバックはいずれも人間が読み、コミュニケーションするための機能でしたが、RSSはコンピュータが読み込んで処理するための機能です。

+

RSSはXML形式でWebサイトの見出し、概要、更新日付などを記録しています。このファイルを読み込むことで、人間向けに出力されたHTMLファイルを解析するようなことをしなくても、そのBlogに対する情報を収集することができます。各種Blogツールが用意するRSSファイルを読み込んで、Blogの更新と見出しをチェックするRSSリーダーと呼ばれるツールも登場してきています。

+
+
+

さまざまなBlogツール

+
+

MovableTypeなどの初期のBlogツールはPerlで記述されていましたが、Blogツールは単なるWebプログラムですから、実装するのにどの言語でなければならないという理由はありません。実際、Python, PHPなど数多くの言語で実装されたBlogツールがあり、もちろんRubyで実装されたものもたくさんあります。RAAなどを調べてみると、実に9つものBlogツールが登録されていました。眺めてみるとそれぞれの思想の違いなどもあって面白いです。

+

では、これら9つのBlogツール をひととおり紹介してみましょう。

+
+

Blogtari!(http://www.jamesbritt.com/articles/blogatari.html

+

Blogtari! はrubyxml.orgなどXML関係の業績が多いJames BrittさんによるBlogツールです。PerlによるBlogツールBlosxomに触発されて開発されたとのことです。

+

clWiki(http://clabs.org/ruby.htm

+

先月も紹介したChris MorrisさんによるclwikiにはBlogkiというBlogツールが同梱されています。

+
+

Diaria(http://rubyforge.org/projects/diaria/

+

oztenさんによるBlogツールDiariaはBlog用の静的なHTMLを生成するコマンドラインツールです。生成されたHTMLファイルをサーバーにアップロードすることで簡単にBlogを運用できます(が、コメントやトラックバックは無理ですね)。

+

Gurgle(http://ca.compsec.net/arfer/gurgle

+

GurgleはarferさんによるミニマルなBlogツールです。特別なライブラリをインストールすることなく動作します。原稿執筆時点ではWebページにアクセスできませんでした。

+

rb.log(http://www.zweknu.org/src/rb.log/

+

TRrevor Schroederさんによるrb.logはフル機能を備えたBlogツールです。ファイルアップロード後静的ページを生成する機能も備えています。

+

RubyJournal(http://www.thedailychannel.com/rubyjournal/

+

George GirtonさんによるRubyJournalは、Diaria同様クライアント側のBlogツールです。ホストへのFTPアクセスがあればいつでもBlogが始められます。開発はMac OS Xで行われているようです。

+

sakura(http://sakura.sourceforge.jp/cgi-bin/sakura.cgi

+

MoleskinさんによるBlosxom likeなBlogツールです。「私もblosxomを使用する予定でしたが、いまからPerlを覚えるのが面倒なので同じようなものを作ることにしました」だそうです。非常にナイスな開発理由です。

+

tDiary

+

「Rubyのキラーアプリ」として名高い、ただただしさんによる日記ツールです。もともとtDiaryはコメントやトラックバックなどBlogツールの諸機能を備えているのですが、BlogkitというよりBlog的に運用するためのツールも用意されています。Rubyホームページ(www.ruby-lang.org)もこのtDiary+Blogkitで運用されています。

+

xlog(http://sourceforge.jp/projects/xlog/

+

立石孝彰さんによるxlogはXTemplateのサンプルとしてのBlogツールだそうです。ソースコードはCVS経由でのみ入手可能です。

+
+
+
+

tDiary

+
+

2003年5月以来、「Matzにっき」というBlogのようなWeb日記のようなものを書き続けています。URLは、

+
    +
  • http://www.rubyist.net/~matz/

  • +
+

です。現時点で一日も休んでいない(遅れても毎日分ちゃんと書いている)ことを内心自慢に思っています。この「Matzにっき」を運用しているのがtDiaryです。なかなか便利なツールでこれがなければとても毎日の運用はできなかったことでしょう。

+

tDiaryの特徴は、

+
+
    +
  • ツッコミ

  • +
  • トラックバック

  • +
  • テーマ

  • +
  • スタイル

  • +
  • プラグイン

  • +
+

などがあります。

+

「ツッコミ」とは要するにコメントでtDiaryの「t」はツッコミのtというくらいtDiaryの基本的な機能です。tDiaryでのツッコミは短く愛を込めたものが推奨されています。

+

「トラックバック」は上記で説明したものです。これによりtDiaryは他のBlogとコミュニケートできます。

+

「テーマ」はCSS(Cascading Style Sheet)を使ってサイトの外観を変更できる機能です。tDiaryには数多くのテーマが同梱されているので、自分のBlogの外見をいろいろ選ぶことができます。季節や気分に合わせて変更するのも簡単です。また、テーマギャラリーがありますので、その中から「次はどんなテーマにしようか」と考えるのも楽しいです。

+
    +
  • テーマギャラリー
    +http://www.tdiary.org/20021001.html

  • +
+

「スタイル」はBlog記事の入力スタイルです。tDiaryのデフォルトは簡易化されたHTMLですが、その他にもWikiの記法を使うWikiスタイル、Ruby界では人気の高いRDを使うRDスタイルなどが用意されています。RDスタイルがなければ私が「Matzにっき」を始めることもなかったでしょう。

+

「プラグイン」はtDiaryにさまざまな機能を追加するものです。上記のトラックバックもプラグインで実現されています。他にも以下のようないろいろな機能がプラグインで提供されています。

+
    +
  • Amazonアフィリエートプラグイン
    +ISBNに対応するAmazon.co.jpの購入ページへのリンクを生成します。

  • +
  • 脚注プラグイン
    +脚注を付けます。脚注はその日のエントリの下にまとめて表示されます。

  • +
  • リンク生成プラグイン
    +自分の日記のエントリへのリンクを簡単に生成します。

  • +
  • カレンダープラグイン
    +カレンダーを表示します。表示形式・機能によっていくつかのカレンダープラグインが存在します。

  • +
  • ToDoプラグイン
    +ToDoリストを管理します。

  • +
  • RDF出力プラグイン
    +最新のエントリのRDFを出力します。

  • +
+

その他数多くのプラグインが開発されています。

+
+
    +
  • プラグインリスト
    +http://tdiary-users.sourceforge.jp/cgi-bin/wiki.cgi?PluginList

  • +
+

このリストもWikiで管理されていますね。

+

さて、この後tDiaryのインストールについて説明しようと思ったのですが、どうやらそれを始めると、誌面が足りなくなりそうですから、tDiary.orgのサイトを参考にしてください。原稿執筆時点での最新のバージョンは1.5.6です。

+
    +
  • tDiaryのインストール
    +http://www.tdiary.org/20021112.html

  • +
  • tDiaryのインストール
    +http://tdiary-users.sourceforge.jp/cgi-bin/wiki.cgi?FAQ#i1

  • +
+

Webアプリケーションのインストールの経験があれば、インストール手順に従えば難しいことはまったくありません。気を付けるのは .htaccessファイルの記述だけです。私のサイトの場合はリスト34.1のようにしています。

+
+

リスト34.1●.htaccessの例

+
Options +ExecCGI
+
+AddHandler cgi-script .rb
+DirectoryIndex index.rb
+RewriteEngine on
+RewriteBase /~matz
+RewriteRule ^([0-9]+)\.html$ /home/matz/public_html/index.rb?date=$1
+
+<Files "*.rhtml">
+        deny from all
+</Files>
+
+<Files "tdiary.*">
+        deny from all
+</Files>
+
+<Files update.rb>
+        AuthName      tDiary
+        AuthType      Basic
+        AuthUserFile  /home/matz/.htpasswd
+        Require user  matz
+</Files>
+
+
+ +

Rewrite」から始まる3行はApacheのmod_rewriteの設定です。これにより、各日のエントリを20040218.htmlのような静的HTML風のURLに見せることができます。

+
+
+

まとめ

+
+

今回はBlogについて探検してみました。今回紹介したtDiaryはとても奥が深いので、また別の機会を探して探検してみたいです。Emacs上での入力支援ツールtdiary-mode.elや、簡易検索ツールtdiarygrepなど紹介したいことはたくさん残っています。では、またの機会に。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-009.xhtml b/docs/vol2/xhtml/p-009.xhtml new file mode 100644 index 0000000..c52bc55 --- /dev/null +++ b/docs/vol2/xhtml/p-009.xhtml @@ -0,0 +1,53 @@ + + + + + +第34章 Blogの世界 + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ Rubyの未来

+
+

昨年11月、テキサス州オースチンでRuby Conferenceが開かれました。このカンファレンスについては先月もこのコラムで簡単に紹介しました。

+

このカンファレンスのキーノートで、Rubyの今後に関する発表を行いました。今までも今後の構想については小出しにしてきていたのですが、ここ数年、現在のRubyのメンテナンスにばかりに労力を取られて、新しい開発がさっぱり進んでいませんでしたから、ここで自分を発憤させるためにも今後のロードマップを改めて考えてみたのです。あいにく具体的な期日についてはまとまらなかったのですが、今後の計画については整理できたと思います。

+

まず、今まであいまいにRiteと呼んできたものを、言語仕様と処理系実装に明確に区別することにしました。今後はRubyという言語の新しいバージョンの仕様をRuby2、そしてそのRuby2のための新しい実装をRiteと呼ぶことにしました。

+

Rubyは誕生以来、少しずつあちこちを修正することで進歩してきました。私の今までのさまざまなデザイン上の判断の集合が今のRubyだと言ってもよいでしょう。しかし、Rubyの開発を始めて10年の間には残念ながら正しい判断ばかりではなく、いくつものデザイン上の間違いも犯してきました。Ruby開発の初期ではユーザーも少なく、仕様も割と流動的でしたが、Rubyのユーザーがこれほど多くなってしまうと、互換性の観点からあまり大きな変更を行うのは難しくなっています。小さいように見える変更でも、世の中に存在する数千、数万のRubyプログラムの中にはその変更によって大きく影響を受けるものがないとは限りません。

+

しかし、そのような「間違い」を放置しておくことは長い目で見るとRubyのためになりません。「Broken Window Theory(割れ窓理論)」というのがあるそうです。これは、割れた窓を放置しておくことにより、周辺の環境が次第に悪化する、逆にいえば割れた窓をすぐに修理するなど不具合をまめに管理することで良好な環境を維持できる、という理論です。この理論に従えば、デザイン上の間違いを放置しておくことで、Rubyの優れた特質と魅力が次第に失われてしまう(可能性がある)ということになります。互換性と優れた言語の追求、大きな矛盾ではあります。

+

そこで、このような戦略を立てることにしました。非互換性を生む言語仕様の大きな変更は、たとえ間違いがあっても安易には行わない。これはユーザーが増えてきた言語の設計者の責任でもあると考えます。しかし、言語設計者も人間である以上、間違いは避けられませんから、数年に一度の比較的長いスパンで(基本的な方向性を変えない程度で)非互換性を含む大きな仕様変更を行い、今までの間違いを訂正する機会にすることにしました。互換性が問題になる場合には古いバージョンを使い、時間をかけて移行すればよいのです。

+

そこでこの機会にRubyの言語仕様を一度総ざらえして、問題を探し、直すべき点があれば一気に直してしまおうという試みがRuby2になります。この仕様の不備やデザイン上の間違いを見落としなく行い、後悔しないRuby2の仕様をデザインするため、多くの人の意見を広く聞く機会を用意しました。将来のRubyに対する仕様変更を提案したい人は、RCR(Ruby Change Request)と呼ばれる形式で提案を行います。そして、その提案についていろいろな観点から議論を行い、生き残ったものがRuby2に取り込まれます。RCRの議論は現在、RCRchiveと呼ばれるサイトで行われています(英語)。

+
+
    +
  • RCRchive
    +http://rcrchive.net/

  • +
+

現時点もすでにいくつかの提案が行われています。実は言語のデザインというのは絡み合う要素が多く、なかなかに難しいことで、おそらくはそのうちの大半は採用することはできないでしょうが、言語のデザインに積極的に関わることのできる機会はそれほど多くありませんから、皆さんの中で興味を持たれた方は提案してみてはいかがでしょう。日本人にとっては残念ながら、RCRchiveには英語という壁がありますが、ruby-devメーリングリストでまず日本語で議論してから、みんなで翻訳してRCRchiveに持ち込むという手も考えられます。

+

そのようにして決まっていったRuby2の仕様の中には、実際に動かしてみなければはたして良いのか悪いのかわからないものがあることでしょう。そこで、現在の実装の延長線上でRuby2の仕様を実験するバージョンとして1.9を用意します。1.9の開発は1.8.1のリリース後からすでに始まっています。まだ大規模な改変は行われていませんが、近いうちに活発な実験が行われる予定です。

+

現場のRuby言語処理系についてもいくつか問題があります。

+
    +
  • 組み込みに向かない

  • +
  • スレッドセーフでない

  • +
  • メンテナンス性が低い

  • +
  • 遅い

  • +
+

Ruby処理系も長らくつぎはぎで開発してきたため、性能的にもメンテナンス性的にも限界が近づいています。また、他のプログラムに組み込むことやネーティブスレッドに対する対応は、当初想定していなかったこともあってどうしても弱い分野です。このような理由から、現在の実装を捨ててまったく新しい実装を行いたいというのがRiteです。また、せっかく再実装するのですから今よりもずっと高速に実行できるようにしたいと考えています。現在の処理系にはボトルネックになりそうな箇所がいくつも見つかっていますから、高速化については希望があるはずです。

+

具体的な期日は定まっていませんが、個人的な予想としては今年いっぱいはRuby2の設計と1.9による実験が主な活動になるのではないかと考えています。Riteについては私よりも処理系実装に詳しい人の助けを借りることになりそうです。こんな調子ですから、皆さんの元に安定版としてのRuby2をお届けできるのはどんなに早くても来年以降になりそうです。

+

今まで何年もRiteのことが遅れてきたのは、現在のRubyのメンテナンスに忙しかったこともありますが、言語仕様の改変と言語処理系の実装の2つの大きく複雑な仕事を一緒にやろうとして手に余っていたこと(というか途方に暮れていた)も大きな理由です。今回、言語仕様と言語実装を分離してロードマップを決定したことにより、「新しいRuby」の実現が近づいていくことを希望しています。お楽しみに。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-010.xhtml b/docs/vol2/xhtml/p-010.xhtml new file mode 100644 index 0000000..80e85e7 --- /dev/null +++ b/docs/vol2/xhtml/p-010.xhtml @@ -0,0 +1,336 @@ + + + + + +第35章 アスペクト指向 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay35 +
+

+探訪Ruby
+アスペクト指向 +

+
+

[Linux magazine, 2004年4月号]

+
+

アスペクト指向も定着しませんでしたね。本文には「20年くらい前のオブジェクト指向のようなレベル」と書いていましたが、実際に20年後にはオブジェクト指向のように当たり前にはならずに終わりました。未来はわからないものですね。ただ、クラスなどを超えて横断的な関心事に対処するコンサーン(Concern)などのアスペクト指向の思想を受け継いだような機能をときどき見かけるので、まったく打ち捨てられたというわけでもないようです。

+

「Ruby開発日記」は「ゴミ集め」です。ガベージコレクション(GC)とも呼びますね。当時はJavaによってゴミ集めが一般化していた時代です。C/C++のように手動でメモリ管理するのは間違いが多いので、GCに頼りましょうというのが最新の考えでした。現在では、ゴミ集めのないRustのような言語がもてはやされているのとは対象的ですね。Rustは所有権というゴミ集めとは違うアプローチで自動的にメモリ管理しているのが特徴です。

+
+
+

Wiki, Blogと、ここのところアプリケーションの紹介が続きましたが、久しぶりにプログラミングの話題に戻ろうと思います。今月紹介するのは、「オブジェクト指向の次」とうわさされている「アスペクト指向」です。

+
+
+

関心の分離

+
+

プログラミングにおける重要な原則は「関心の分離(separation of concern)」です。関心の分離は分割統治戦略の一種です。人間は一度にたくさんのことを考えられませんから、関心のあることだけをひとまとめに扱い、関心のないことは見ないで済ませることで、プログラマーの精神的負担を軽減することは必要です。関心の分離によってプログラムの保守性や再利用性を高めることができます。

+

プログラミング言語はこの関心の分離を支援するために進歩してきました。たとえば関数(サブルーチン)は繰り返し使われる手続きの一部を切り出して、そこだけを考えるために発生しましたし、構造化プログラミングもアルゴリズムの制御の流れをgotoによるスパゲッティから、逐次実行、条件分岐、繰り返しという単純な制御構造の組み合わせに変えることで、アルゴリズムそのものに注目できるように支援しています。

+
+

オブジェクト指向言語も、プログラムにおいて最も関心の対象となるデータ構造とそれに対する手続きをクラスという形でひとまとめに記述することで、この関心の分離を支援しています。

+
+
+

アスペクト指向とは

+
+

オブジェクト指向言語はプログラムをオブジェクト単位に分割しますが、世の中のすべての関心がオブジェクト単位に分割できるとは限りません。複数のオブジェクトを横断するような処理は、関心事としては1つなのに複数のクラスにばらばらに分散してしまうことがありえます。

+

例をあげてみましょう。メソッド呼び出しの最初と最後にログを出力したいとすると、従来の方法で単純に実現すると35.1のようになります。

+
+

リスト35.1●Rubyロギング(従来の方法)

+
def log(m)
+  STDERR.print Time.now.to_s, ": ", m, "\n"
+end
+
+class Foo
+  def m1
+     log("m1 begin") # m1処理開始ログ
+     puts "this is m1"
+     log("m1 end")   # m1処理終了ログ
+  end
+  def m2
+     log("m2 begin") # m2処理開始ログ
+     puts "this is m2"
+     log("m2 end")   # m2処理終了ログ
+  end
+end
+
+foo = Foo.new
+foo.m1
+foo.m2
+
+
+

このプログラムを見るとわかるように、「ログを取りたい」という関心事に対する処理が、m1m2のそれぞれのメソッドにばらばらに分散しています。これは関心の分離の原則からみるとかなりまずい事態です。この例は非常に単純な例で、追加された処理はわずか4行ですが、ログを取るメソッドが数十、数百に上り、クラスも1つではなく数十もある場合を考えると気が遠くなりそうです。

+ +

「ログを取る」のは1つの例ですが、他にも認証、帯域制限、プロファイルなどなど分散しがちな関心事はたくさんあります。このような関心事をまとめて記述することができたら、生産性の向上ができそうじゃありませんか。

+

この関心事をまとめたものが「アスペクト(aspect)」です。辞書を引くとaspectは「外観、様相、局面、見方」だそうです。このような関心事を分離して記述し、組み合わせていくプログラミングをアスペクト指向プログラミングと呼びます。また、そのような記述を支援する言語はアスペクト指向言語です。

+

アスペクト指向はSmalltalkも生んだXerox PARC(パロアルト研究所)で生まれました。最も有名なアスペクト指向言語はJavaにアスペクト指向を追加したAspectJです。AspectJについての情報は、

+
    +
  • http://www.aspectj.org/

  • +
+

から入手できます(英語)。AspectJではアスペクトをその名もaspectという単位で定義し、処理をjoin pointと呼ばれる場所に挿入するという形を取ります。AspectJでのjoin pointとは、メソッド呼び出し、インスタンス変数の参照、例外の補足などがあります。詳しくは上記のAspectJのページを見ていただくか、以下のDeveloperWorksの記事を参照してください。

+
    +
  • http://www-6.ibm.com/jp/developerworks/java/020405/j_j-aspectj.html

  • +
+
+
+

AspectR

+
+

さて、われらがRubyの話に戻りましょう。

+

アスペクトを直接記述できる言語という意味ではRubyはアスペクト指向言語ではありません。しかし、Rubyは十分柔軟なので、Rubyの持つリフレクション機能(プログラムそのものを操作する機能)を使って、アスペクト指向プログラミングを実現するライブラリを実現できます。それがAspectRです。AspectRはAvi Bryantの作品です。

+

AspectRを使うと最初の例はリスト35.2のようになります。

+
+

リスト35.2●ロギング(AspectR)

+
require 'aspectr'
+
+class Logger < AspectR::Aspect
+  def log(m)
+    STDERR.print Time.now.to_s, ": ", m, "\n"
+  end
+  def log_enter(method, object, exitstatus, *args) 
+    log("#{method} begin")
+  end 
+
+  def log_exit(method, object, exitstatus, *args) 
+    log("#{method} end")
+  end
+end
+
+class Foo
+  def m1
+     puts "this is m1"
+  end
+  def m2
+     puts "this is m2"
+  end
+end
+Logger.new.wrap(Foo, :log_enter, :log_exit, :m1, :m2) 
+
+foo = Foo.new
+foo.m1
+foo.m2
+
+
+ +

リスト35.1のプログラムとリスト35.2のプログラムはまったく同じように動作します。リスト35.1(20行)よりもリスト35.2(29行)のほうが少し長くなってしまっていますが、これは単純な例なのでしかたありません。注目すべきことは、Fooクラスの定義部分はFooの処理そのものしか記述されておらず、「ログを取る」という関心事がLoggerクラスに完全に分離されているということです。ある日、ログを取る必要がなくなった場合、どんなにたくさんのメソッドでログを取っていてもFooクラスにロギングを関連づけている行だけを削除すれば、ロギング機能を外すことができます。リスト35.1のようにロギング処理がすべてのメソッドに分散していたとしたらかなり面倒なことになるでしょう。

+
+
+

AspectRのインストール

+
+

AspectRのホームページは、

+
    +
  • http://aspectr.sourceforge.net/

  • +
+

です。原稿執筆時点での最新バージョンは0.3.5です。最近はあまり更新されていないようですが、私が試してみた範囲内ではRuby 1.8.1でも動作するようです。ただし、添付のテストはうまく動きませんでした。test/unitRubyUnit互換機能の不具合かもしれません。

+

インストールは、

+
    +
  • http://prdownloads.sf.net/aspectr/aspectr-0-3-5.tar.gz

  • +
+

からtarボールをダウンロードし、適当な場所で展開してから、root権限で、

+ +
+
# ruby install.rb
+
+

を実行するだけです。なんて簡単。これでAspectRの全機能を使うことができます。実際にはAspectRはaspectr.rbという1つのファイルだけで実装されていますから、インストールはsite_rubyディレクトリにaspectr.rbをコピーしているだけです。

+

なお、aspectr.rbの147行目に、1.8では警告が出るtypeメソッドの呼び出しが残っていますから、ここをclassメソッドに置き換えておくとよいでしょう。また、229行目のidメソッドの呼び出しもobject_idに置き換えておくのもお勧めです。

+
+
+

AspectRの使い方

+
+

AspectRではjoin pointはメソッドの呼び出しだけです。AspectJではメソッド呼び出し以外にも、インスタンス変数の参照などもjoin pointにできることを考えると貧弱な気がしますが、インスタンス変数の参照はアクセサメソッドで代用できますし、実用上はこれで十分です。join pointに処理を挿入できるということはAspectRを使えば、任意のメソッド呼び出しの前後にあとからコードを追加できるということです。リスト35.2の例ではメソッド呼び出す前と後にログに出力するコードを追加していました。

+

では、再びリスト35.2のプログラムを例に、AspectRを使ったコード挿入の方法を解説しましょう。リスト35.2のプログラムを少しずつ見ていきましょう。

+
+
require 'aspectr'
+
+

AspectRを使うときには先頭でascpctrライブラリをrequireする必要があります。よく見るとaspectr.rbはたった308行しかないんですね(コメント、空行を含む)。Rubyの記述力のすごさを見る思いです。自画自賛ですが。

+
+
class Logger < AspectR::Aspect
+
+

アスペクトはAspectR::Aspectクラスのサブクラスとして定義します。このクラスにjoin pointに挿入する手続き(アスペクト指向の用語ではアドバイス(advice)と呼びます)をメソッドとして定義します。

+
+
def log(m)
+  STDERR.print Time.now.to_s, ": ", m, "\n"
+end
+
+

このlogメソッドはadviceではありません。adviceメソッドから呼び出すためのユーティリティメソッドです。ここでは標準エラー出力に時刻とともにメッセージを出力しています。

+
+
def log_enter(method, object, exitstatus, *args) 
+  log("#{method} begin")
+end
+
+

log_enteradviceとして使うメソッドです。AspectRのadviceにはメソッドの実行前に呼び出されるbefore adviceと実行後に呼び出されるafter adviceがあります。AspectJにはbefore adviceafter adviceの他にメソッドを包み込む形で置き換えるaround adviceがありますが、AspectRでは提供されません。しかし、なくても実用上は十分です。AspectJのadviceメソッドは以下の引数で呼び出されます。

+ +
    +
  • 第1引数   メソッド名(文字列)
  • +
  • 第2引数   レシーバ
  • +
  • 第3引数   終了情報(戻り値、例外)
  • +
  • 第4引数以下 メソッドに与えられた引数
  • +
+

第3引数の終了情報には、正常終了した場合にはその値が配列に、例外終了した場合にはtrueが渡されます。正直なところtrueよりは例外オブジェクトが渡ってくれたほうがうれしいなあ。before adviceはまだメソッドの実行が終了していませんから、終了情報に意味はありません。

+
+
def log_exit(method, object, exitstatus, *args) 
+
+

log_exitafter adviceです。引数の意味などはbefore adviceと同じです。

+
+
class Foo
+
+

Fooクラスはアスペクトの追加対象となるクラスです。「ログを取る」というアスペクトが分離された結果、本来の処理に集中できています。

+
+
Logger.new.wrap(Foo, :log_enter, :log_exit, :m1, :m2) 
+
+

この行が重要です。この行がアスペクト(Loggerクラス)と対象となるクラス(Fooクラス)を結び付けています。この行は、Fooクラスのメソッドm1m2の実行前にlog_enter、実行後にlog_exitを呼び出す、と解釈します。wrapメソッドの引数の意味は以下のとおりです。

+
+
wrap(target, before, after, *methods)
+
+

targetはクラスまたはオブジェクトで、クラスを指定した場合にはそのクラスのインスタンスメソッドにadviceを追加します。クラス以外のオブジェクトを指定した場合には、そのオブジェクトだけにadviceを追加します。

+

beforeafteradviceとなるアスペクトのメソッド名を指定します。どちらかのadviceを指定しない場合にはnilを渡します。

+

methodsにはadviceを付加するメソッドを指定します。指定方法としては今回使ったように文字列またはシンボルで1つずつ指定してもよいですし、正規表現を使ってもあるパターンにマッチするメソッドに一気に追加することもできます。たとえば /^m/ を指定すればmで始まる名前を持つメソッド全部にadviceを追加することができます。

+
+
foo = Foo.new
+foo.m1
+foo.m2
+
+

後は通常のFooの処理を行うだけです。メソッドm1m2の実行の前後にはadviceが追加されていますから、標準エラー出力に時刻とメッセージが出力されます。

+
+

もし、adviceを取り除きたくなったら、unwrapメソッドを使うことができます。アスペクトのインスタンスをどこかに保持しておいて(ここでは変数loggerに格納されているとします)、

+
+
logger.unwrap(Foo, :log_enter, :log_exit, :m1, :m2) 
+
+

と呼べばadviceが削除されます。引数の数と意味はwrapと同じです。

+
+
+

AspectRの応用

+
+

任意のメソッドの前後に後から処理を追加できるAspectRの機能はいろいろと応用できると思います。ここではAspectRのサンプルとして添付されているプロファイラ(rbprof)を見てみたいと思います。

+

プロファイラは各メソッドの実行時間と呼び出し回数を集計するものです。考えてみると、プロファイラの仕事とは、各メソッドの呼び出し前に回数カウンタを増加させ、呼び出し開始時刻を保存し、また呼び出し後に現在時刻と呼び出し開始時間との差分を取ってメソッドの実行時間を計測して記録することですから、アスペクトによって実現できます。

+

rbprofをインストールするためには、AspectRのtarを展開したディレクトリにあるaspect/profilerディレクトリに移動し、root権限で

+
+
# ruby ../../install.rb
+
+

を実行します。そうすると、

+
+
% ruby -r rbprof <プロファイルを取るプログラム>
+
+

でプロファイルが取れます。Ruby標準のプロファイラの起動は、

+
+
% ruby -r profile <プロファイルを取るプログラム>
+
+

ですから、ほとんど同じインターフェイスですね。

+

profile(標準プロファイラ)とrbprof(アスペクト利用のプロファイラ)との違いは以下のとおりです。

+
+

実行時間10倍の差はかなり大きなものです。大まかな情報をrbprofでつかんでからprofileを使うなどの使い分けもできると思います。

+

また、同じ手を使って特定のメソッドだけプロファイルを取ることも可能でしょう。本当はrbprofの標準機能として装備しておいてほしいものですが。

+

ここは宿題としたいところですが、少々難しい宿題になりそうなので、解答を用意しておきます(リスト35.3)。

+
+

リスト35.3●プロファイラアスペクト(aprof.rb)

+
require 'aspectr'
+
+class AProf < AspectR::Aspect
+  @@map = {}
+  @@stack = [[0, 0, 0, "dummy"]]
+  def profile(target, *methods)
+    self.wrap(target, :prof_enter, :prof_leave, *methods)
+  end
+  def prof_enter(method, object, exitstatus, *args) 
+    m = method_line(method, object)
+    unless map = @@map[m]
+      map = @@map[m] = [0, 0, 0, m]
+    end
+    map[0] += 1
+    @@stack.push([Time.now, 0.0, m])
+  end
+  def prof_leave(method, object, exitstatus, *args) 
+    tick = @@stack.pop
+    m = tick[2]
+    unless map = @@map[m]
+      map = @@map[m] = [0, 0, 0, m]
+    end
+    cost = Time.now - tick[0]
+    map[1] += cost
+    map[2] += cost - tick[1]
+    @@stack[-1][1] += cost
+  end
+
+  def self.print_profile(f)
+    data = @@map.values
+    data = data.sort_by{|x| x[3]}
+    f.printf "    self       #      self     total\n"
+    f.printf "  seconds    calls  ms/call  ms/call  name\n"
+    for d in data
+      f.printf "%8.2f %8d %8.2f %8.2f %s\n", d[1], d[0], d[2]*1000/d[0], d[1]*1000/d[0], d[3]
+    end
+  end
+
+  private
+  def method_line(method, object)
+    object.class.to_s + "#" + method
+  end
+end
+
+END {
+  AProf.print_profile(STDERR)
+}
+
+
+ +

aprof.rbの使い方は以下のとおりです。

+
+
require 'aprof'
+
+# プロファイルを取りたいプログラムを定義
+def fib(n)
+  if n<2
+    n
+  else
+    fib(n-2)+fib(n-1)
+  end
+end
+
+# プロファイルを取りたいメソッドの指定
+AProf.new.profile(Object, :fib, :print)
+# 実行
+print(fib(20), "\n");
+
+

こうするとObjectクラスのfibメソッドとprintメソッドのプロファイルだけを取ることができます。

+

出力は図35.1のようになります。

+
+
+
6765
+    self       #      self     total
+  seconds    calls  ms/call  ms/call  name
+   49.03    21891     0.17     2.24 Object#fib
+    0.00        1     0.64     0.64 Object#print
+
+

図35.1●aprof使用例

+
+
+
+ +

まとめ

+
+

今月はRubyによるアスペクト指向プログラミングについて探検してみました。アスペクト指向はまだまだ新しい概念です。ちょうど20年くらい前のオブジェクト指向のようなレベルでしょうか。AspectRを使ってあなたもアスペクトの世界を先取りしてみませんか。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-011.xhtml b/docs/vol2/xhtml/p-011.xhtml new file mode 100644 index 0000000..b605365 --- /dev/null +++ b/docs/vol2/xhtml/p-011.xhtml @@ -0,0 +1,46 @@ + + + + + +第35章 アスペクト指向 + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ ごみ集め

+
+

私は子供のときから片付けるのが苦手で、両親と住んでいた頃は自分の机の上にはいつも山のようにものが積み上がっていました。こんな机では勉強できないので、教科書、参考書、ノートなど必要なものを山の中からピックアップして、兄弟の机を借りて勉強したこともあります。

+

学生時代、一人暮らしのときもひどいものでした。自分の部屋は散らかし放題で、とても客は呼べない状態でした。きちんと片付けることができる人のことはいつも尊敬しています。

+

さて、プログラミングの世界でも片付けは発生します。オブジェクト指向プログラミングではどんどんオブジェクトを作り出すのですが、用事が終わって不要になったオブジェクトは「ごみ」になってしまいます。これをそのままにしておくと、メモリ不足で性能が落ちたり、他のプロセスに迷惑をかけたりします。

+

CやC++であれば使い終わった「オブジェクト」は自分で片付ける必要があります。Cではfree関数を使ってメモリ領域を解放しますし、C++ならdeleteを使います。自分で散らかしたものは自分で片付けよう、というわけですね。大変行儀が良いやり方だと思います。しかし、私のように生来片付けるのが苦手な人は、オブジェクトの後片付けを忘れたり、うっかりまだ使っているものを捨ててしまったりして、面倒なことを引き起こしてしまいます。このようなメモリ関係の間違いは、問題が発生する場所と原因が一致しないことが多く、大変見つけにいバグになります。

+

だいたいそんな細々としたことは人間がわざわざするべきではないのです。そこで、不要になったと判断されたオブジェクトを自動的に片付けてくれる機能のことを「ごみ集め」あるいは「ガベージコレクション(garbage collection)」といいます。「GC」と省略して呼ぶこともあります。

+

Javaに採用されて広く知られるようになったGCですが、最初にGCを採用したのはLispというプログラミング言語で、それは実に今から40年以上前のことです。それ以来、実に長い間研究が続けられてきた分野なのです。GCを使えばCやC++でしばしば悩まされるメモリ関係の問題から完全に解放されて、プログラムの信頼性ははるかに向上します。加えて最近ではGC技術も進歩しているので、手動でメモリ管理した場合に比べて性能の面でも遜色ないケースが多いという報告もあります。

+

そのGCのやり方ですが、コンピュータには人間の意図はわからないので、あるオブジェクトをもうこの先二度と使わないかどうかは自動的には判定できません。ですから、ごみかどうか判定するのには違ったやり方を使います。

+

机の上にいろいろなものが乗っている状態を想像してみてください。それらのものは互いに複雑に関連しあっていて、ひと目では捨ててよいものだか悪いものだかわかりません。あなたの仕事はこの中からごみを見つけ出し、捨ててよいということになります。

+

まず最初にやることは明らかに必要なものを選び出すことです。GCではこれらの「もの」のことを「ルート(root)」と呼びます。ルートのオブジェクトと直接あるいは間接的に関連している「もの」はいつか参照される可能性があるので捨ててはいけません。逆にいうとルートと関連を持たないものは将来参照される可能性がゼロですから、捨ててはいけません。

+

GCの手法の1つmark and sweep法では、まずルートから始めて関連を持つオブジェクト全部に印(mark)を付けていきます。この印が付いているものは捨ててはいけないものと判断されます。関連のあるオブジェクト全部に印を付けた後は、机の上のもの全部を順番に眺めて印が付いていないものを捨ててしまいます。印が付いているものの中には将来二度と使われないものもあるかもしれませんが、それでもかまいません。

+
+

mark and sweep法では、まず「使用中」のオブジェクト全部に印を付けてから、すべてのオブジェクトのうち印の付いてないものを選び出しますから、ごみ集めにかかる時間は現在使用中のオブジェクトの数と、現在存在するすべてのオブジェクトの数に比例します。

+

別の手法copy法では、もう1つ別の机を用意して、ルートオブジェクトを移してしまいます。またルートと関連のあるものも次々と移していきます。関連のあるものをすべて移動させた後、元の机の上にはごみしか残っていないというわけです。元の机に残ったものは一気に捨てることができます。空いた机は次回のごみ集めのときにまた使います。2つの机を使うとはぜいたくな方法ですが、ごみ集めにかかる時間が「生きている」オブジェクトの数だけに比例することがうれしいケースもあります。

+

mark and sweep法にしても、copy法にしても生きているオブジェクトの数が増えればごみ集めの時間が長くなってしまうことには変わりありません。ごみ集めというのはいわば無駄な時間ですから短ければ短いほどよいわけで、そのために作業が中断したりしては本末転倒です。そこでいろいろな方法が考えられています。たとえば、あるオブジェクトがいくつのオブジェクトから参照されているかいつも管理しておくreference count法、机をいくつかの領域に区切って、頻繁に使う領域は頻繁に片付けるgenerational法などがあります。これらにはそれぞれに長所と短所がありますので、必要に応じて組み合わせたり、切り替えたりして使われています。

+

最近の言語にはほとんど何らかの形のごみ集め機能があります。Javaもそうですし、もちろんRubyにもあります。Perl, Python, PHP, Lispなどなど。ないのはCやC++, Fortran, Pascalなど古い言語ばかりです。

+

あなたのプログラムが実行中にたくさんのオブジェクトを作り出すときに、その背後ではごみ集め機能ががんばっていて、使われなくなったオブジェクトを人知れず回収して、メモリ領域をリサイクルしているのです。あなたのプログラムがうまく動いたとき、ガベージコレクタのことをちょっとだけ思い出してくださいね。そうすれば私も苦労して実装したことが報われるというものです。

+

現実世界の話に戻ると、結婚して私の部屋の状態は以前よりもずいぶんマシにはなったのですが、私と私の遺伝子を受け継いだ子供たちがどんどん散らかしてくれるので、妻がどんなに整頓しても、いつまでたっても部屋は片付きません。どうか私のうちを訪問するときには、あらかじめ片付けてからお迎えできるように前もって連絡してくださいね(苦笑)。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-012.xhtml b/docs/vol2/xhtml/p-012.xhtml new file mode 100644 index 0000000..71b00ab --- /dev/null +++ b/docs/vol2/xhtml/p-012.xhtml @@ -0,0 +1,386 @@ + + + + + +第36章 RubyとEmacs + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay36 +
+

+探訪Ruby
+RubyとEmacs +

+
+

[Linux magazine, 2004年5月号]

+
+

EmacsとRuby開発について解説しています。20年後にどうなっているかというと、世の中のエディタがVSCodeが主流になり、Emacsはだいぶ下火になっているのが悲しい現実です。Viの方が(Vimという形で)利用者が多いのが意外というかなんというか。現代では開発はツール支援が重要になっています。もっとも、あまり知られていないだけでEmacsやVimでもコード補完など統合開発環境と同等のことはできるのですが。

+

「Ruby開発日記」は「Emacsによる開発」というタイトルで、私の開発環境を紹介しています。Emacs、独自日本語入力配列、自作メールリーダーと並べると変態的な感じですね。20年経っても、私は変わらずEmacs、独自日本語入力配列、自作メールリーダーです。ただし、独自日本語入力の変換エンジンは当時利用していたCannaではなく、Mozcになっていますし、自作メールリーダーはcmailではなくmorqという全文検索ベースのもの(非公開)になっています。

+
+
+

Emacsをご存じですか? Emacsはviと並ぶUNIX上での定番エディタです。筆者は自他共に認めるEmacsファンで、Emacsに触らない日は1日もないほどです。今回は、RubyとEmacsの関係について語りましょう。

+
+
+

Emacs入門

+
+

Emacsは古くからあるテキストエディタです。Emacsの特徴はなんといってもその拡張性でしょう。EmacsにはEmacs LispというLisp処理系が内蔵されていて、カスタマイズや機能拡張を自由に行うことができます。

+

一番最初のEmacsはTECOというエディタマクロで記述されていたのだそうです。最初のEmacsをTECOで記述したのはフリーソフトウェア財団(FSF)のRMSことRichard Stallmanです。TECOによるEmacsが実装されたのは1976年だといわれています。それから、後にJavaの設計者となるJames Goslingが1981年にUNIXへの移植を行います。GoslingによるEmacs(通称Gosling EmacsまたはGosmacs)は、MockLispと呼ばれるLispもどきでの拡張機能を持っていました。

+
+

しかし、GoslingはGosmacsの権利をUnipressという企業に売却してしまい、StallmanはEmacsのソースコードを使った開発に不自由を感じるようになりました。StallmanがFree Software運動を始めたのはこのときの怒りが原因ではないかと聞いたことがあります。

+

いずれにしても、Unipress Emacsをベースに作業することができなかったStallmanは今度はCを使って再びゼロからEmacsを開発しました。これが現在広く使われているGNU Emacsです。GNU EmacsはGosmacsの拡張性を参考にしていますが、MockLispのようなカスタマイズ用のまがいものの言語ではなく、ちゃんとしたLispであるEmacs Lispを内蔵していました。

+
+
+

環境としてのEmacs

+
+

Emacsは起動時にユーザーのホームディレクトリにある.emacsという名前のファイルを読み込みます。.emacsの内容はEmacs Lispのプログラムとして解釈されます。Emacs LispからはEmacsの持つあらゆる機能にアクセスできますから、理論上はEmacsのすべてをカスタマイズすることが可能ということです。

+

しかも、Emacs Lispはフル機能を持つLisp言語ですから、ただ単にEmacsのカスタマイズのために使うだけでなく、それを使って任意のプログラムを書くこともできます。たとえば、各種プログラミング言語用のエディットモードもEmacs Lispで記述されています。

+

また、編集機能だけでなく、独立のアプリケーションも記述できます。例としてはネットニュースリーダーであるGnus, メールリーダーであるWanderlust, Mew, そしてcmail, それからIRCクライアントのLieceなどがあります。

+
+
+

Rubyモード

+
+

おっと、Rubyの話でしたね。もちろん、Emacs好きの開発した言語であるRubyはEmacsと関係があります。とはいえ、言語仕様上の関連は、文字を表現する「?a」のような記法がEmacs Lispと共通であるというだけですが。

+

私はRubyの開発を始める前には、cmailというメールリーダーを開発していました。cmailは最終的には数千行を超える規模のEmacs Lispプログラムで、LispとEmacsのよい勉強になりました。

+

このような私が、Rubyの開発を始めて言語文法をどうするか悩んでいた際に、一番気にしたのはオートインデントができるかどうかでした。当時、endでブロック構造を表現するプログラミング言語の編集モードはオートインデントをサポートしていないものがほとんどでした。ですから、オートインデントが実現できないようなら、CやJavaのようなブレース({})を使った仕様に変えようかと思っていたのです。しかし、数日Emacs Lispで戯れていると、endを使っていてもオートインデントできる編集モードのめどがつきました。それが現在Rubyに標準添付されているruby-mode.elの起源です。もし、あの時点でオートインデントに成功していなければ、Rubyは現在のようなendで終わる文法を持っていなかったことでしょう。

+
+

ruby-mode.elをインストールするためには、Emacsのロードパスが通ったディレクトリにruby-mode.elを置きます。性能上の問題がある場合にはバイトコンパイルしてruby-mode.elcを作ったほうが有利かもしれません。以前はライブラリのバイトコンパイルは必須でしたが、最近はマシンの性能も向上しているのでバイトコンパイルなしでも十分な速度で動くことも多いようです。

+

バイトコンパイルしてruby-mode.elからruby-mode.elcを作るためには、ruby-mode.elのあるディレクトリで、

+
+
% emacs -batch -f batch-byte-compile ruby-mode.el
+
+

と実行します。出来上がったruby-mode.elc.elファイルの代わりにロードパス上のディレクトリに置きます。

+

インストールしたruby-modeを使うために、自分の .emacsファイルにリスト36.1の内容を追加します。

+
+

リスト36.1●ruby-modeのための設定

+
(setq auto-mode-alist
+    (append '(("\\.rb$" . ruby-mode))
+           auto-mode-alist))
+
+(setq interpreter-mode-alist
+    (append '(("ruby" . ruby-mode))
+           interpreter-mode-alist))
+
+
+

これで拡張子 .rbを持つファイルか、ファイルの先頭に、

+
+
#! /usr/bin/ruby
+
+

のような記述のあるファイルは自動的にRubyプログラムだと見なされます。ruby-modeでは以下の機能が有効です。

+
    +
  • オートインデント

  • +
  • 予約語などの色付け

  • +
  • プログラム構成要素単位のカーソル移動

  • +
+
+
+

ハイライトとオートインデント

+
+

ruby-mode.elの設定を行ってから、EmacsにRubyプログラムをロードするとプログラムに色が付きます。これをハイライトと呼びます。デフォルトでは表36.1のように色が指定されています。

+
+

表36.1●ruby-modeの色

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
要素
コメント
予約語
メソッド定義
変数オレンジ
定数
文字列ピンク
正規表現ピンク
+
+ +

ruby-modeを使ってひと目でわかるのはハイライト機能ですが、作った本人はruby-modeの目玉はオートインデント機能のほうだと思っています。

+

ruby-modeでプログラムを編集中に、TABキーを押すとコンテキストに応じてその行をインデントします。改行時にはC-jCtrlキーを押しながらj)を押すと現在の行をインデントし、改行してからインデントレベルにカーソルを移動してくれます。

+

Emacsを使ってRubyプログラムを入力する場合、プログラムの本文だけを入力すればオートインデント機能によって自動的に行ってくれます。

+
+
+

Rubyプログラムの編集

+
+

ruby-modeではハイライトやオートインデントほどは目立ちませんが、他にもRubyプログラムの編集に役立つ機能が提供されています。表36.2ruby-modeの編集機能を一覧しておきます。

+
+

表36.2●ruby-modeの編集機能

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
編集コマンド編集コマンド
C-jruby-reindent-then-newline-and-indentESC C-nruby-end-of-block
TABruby-indent-commandESC C-pruby-beginning-of-block
{ruby-electric-braceESC C-fruby-forward-sexp
}ruby-electric-braceESC C-bruby-backward-sexp
C-c C-eruby-insert-endESC C-eruby-end-of-defun
ESC C-qruby-indent-expESC C-aruby-beginning-of-defun
ESC C-hruby-mark-defun
+
+

各編集コマンドを解説します。

+
+

ruby-indent-command

+

カレント行をインデントします。

+

ruby-reindent-then-newline-and-indent

+

カレント行をインデントし、改行した後、次の行のインデントレベルにカーソルを移動させます。

+

ruby-electric-brace

+

ブレースを挿入してからカレント行をインデントします。

+

ruby-insert-end

+

end」を挿入してからカレント行をインデントします。

+

ruby-indent-exp

+

カレント行がifなどの制御文やかっこなど複数行に渡る式を含むとき、式の末尾までの範囲内をインデントします。

+ +

ruby-beginning-of-block

+

現在のブロックの先頭に移動します。ブロックとはif文など複数の行に渡る文(または式)の先頭のことです。

+

ruby-end-of-block

+

現在のブロックの末尾に移動します。

+

ruby-beginning-of-defun

+

現在の「defun」の先頭に移動します。「defun」とはEmacsの用語では行の先頭で始まるブロック構造です。Rubyの場合、行の先頭から始まるclass文、module文、def文などが対象になります。

+

ruby-end-of-defun

+

現在の「defun」の末尾に移動します。

+

ruby-mark-defun

+

現在の「defun」の末尾にマークを置き、カーソルは「defun」の先頭に移動させます。

+

ruby-forward-sexp

+

式1つだけ前方にカーソルを移動させます。式が複数の行に及ぶ場合も正しく解釈します。

+

ruby-backward-sexp

+

現在の式の先頭までカーソルを移動させます。

+
+
+
+

ruby-modeのカスタマイズ

+
+

Emacsで提供されている編集モードをカスタマイズするためにはフック(hook)を使います。各モードは開始時にhookを呼び出しますから、そのモードに対するhookを設定しておいて、その中でカスタマイズを行います。

+

ruby-modeをカスタマイズするにはruby-mode-hookを使います。たとえば私はruby-modeで、

+
    +
  • abbrev(予約語補完)を行う

  • +
  • 改行キー(C-m)にreindent-then-newline-and-indentを、C-jnewlineを割り当て

  • +
+

しています。そのための設定をリスト36.2に示します。

+
+

リスト36.2●ruby-modeのカスタマイズ例

+
(add-hook 'ruby-mode-hook
+         '(lambda ()
+           (abbrev-mode 1)
+           (define-key ruby-mode-map "\C-m"
+                      'ruby-reindent-then-newline-and-indent)
+           (define-key ruby-mode-map "\C-j" 'newline)))
+
+
+ +

add-hookruby-mode-hookに手続きを追加する関数です。複数の手続きをまとめるためにはlambdaでくくる必要があります。

+
+
+

RRB

+
+

ruby-mode.elはRubyプログラムを編集することを支援する編集モードでしたが、Rubyプログラムの開発をより積極的に支援するEmacsのパッケージがあります。それはRRB(Ruby Refectoring Browser)です。

+

リファクタリングとは「ソースコードの動作を変えずに、内部構造をよりよいものに修正すること」です。

+

RRBは各種リファクタリング手法のうち、以下のものを支援します。

+
    +
  • 変数名の変更

  • +
  • メソッド名の変更

  • +
  • 定数名(クラス/モジュール名を含む)の変更

  • +
  • メソッドを親クラス/子クラスに移動する

  • +
  • コードの一部分をメソッドとして切り出す

  • +
  • 共通のスーパークラスを持つクラス群に対し新しいスーパークラスを定義する

  • +
+

原稿執筆時点でRRBのバージョンは0.0.2ですから、将来新たなリファクタリング機能が追加されるかもしれません。また、現時点ではEmacs上でのみ動作していますが、Emacs以外にもFreeRIDEやEclipseなどのIDE上でも動作するようになるかもしれません。

+

RRBについての情報は、

+
    +
  • http://www.kmc.gr.jp/proj/rrb/index.html

  • +
+

からどうぞ。

+
+
+

RRBのインストール

+
+

RRBはまだバージョンが若いせいか、私が試したときにはインストールが少々面倒でした。ここではちょっと詳しくインストール手順を説明しておきましょう。RRBは基本的にRuby 1.8対応です。1.6をお使いの方はshimライブラリを入手しておきましょう。

+

まず、ダウンロードします。0.0.2のダウンロードファイルは、

+
    +
  • http://www.kmc.gr.jp/proj/rrb/archive/rrb-0.0.2.tar.gz

  • +
+

です。これを展開するとカレントディレクトリにrrb-0.0.2というディレクトリができます。普段ならこのディレクトリのsetup.rbを実行することでインストール完了となることが多いのですが、現在のRRBは対応していません。ぜひsetup.rb(またはinstall.rb)対応をお願いしたいものです。

+

RRBには2つ拡張ライブラリが付属していますので、それぞれコンパイルします。

+
+
+
% cd reflection
+% ruby extconf.rb
+% make
+% sudo make install
+% cd ../ripper
+% ruby extconf.rb
+% make
+% sudo make install
+% cd ..
+
+

Rubyで書かれたライブラリもインストールします。

+
+
% cd lib
+% sudo cp -r rrb <Rubyライブラリのパス>
+
+

インストールするディレクトリは

+
+
ruby -e 'p $:'
+
+

の結果表示されるディレクトリから選んでください。私は /usr/lib/ruby/site_ruby/1.8にインストールしました。

+

忘れてはいけないことはripperディレクトリに置かれているripper.rbrrb/ripper.rbとしてコピーする必要があることです。

+
+
% sudo cp -r ripper/ripper.rb <ライブラリのパス>/rrb
+
+

次にrrbの本体であるコマンドライン版rrbを実行パスの設定されているディレクトリにコピーします。私は $HOME/binを選びました。実行モードの設定も必要です。

+
+
% chmod a+x bin/*
+% cp bin/* $HOME/bin
+
+

最後にEmacsからRRBを操作するためのEmacs Lispプログラム(rrb.el)をインストールします。これもload-pathが設定されているディレクトリならどこでもかまわないのですが、私は $HOME/lib/emacsを普段から使っているのでそこにコピーします。

+
+
% cp elisp/rrb.el $HOME/lib/emacs
+
+

これでやっとインストール完了です。

+
+
+ +

RRBを使ってみる

+
+

苦労してインストールしたのですから、活用しないと損です。さっそく使ってみたいのですが、技術的な理由からRRBには以下の制限があることを覚えておいてください。

+
    +
  1. 複数のスクリプトからなるプログラムの場合、すべてのスクリプトをEmacs上に読み込んでおかなければならない

  2. +
  3. また、Emacs上に読み込まれているすべての*.rbがリファクタリングの対象となる

  4. +
  5. スクリプトは定義部と実行部に分かれていなければならない

  6. +
+

最後の点だけは特に注意が必要ですので、詳しく説明しておきます。RRBはプログラムを解析するため、プログラムを構成するRubyファイルをrequireを使って読み込みます。そのときに、定義だけでなく実際の実行も行われてしまうといろいろとまずいわけです。基本的には「requireしても副作用が起きない」ことが必要です。

+

具体的には、プログラムの実行部分を、

+
+
if $0==__FILE__
+  ...
+end
+
+

のように囲んでしまうのがよいでしょう。これでrequireされたときには副作用がなく、コマンドとして実行されたときには(__FILE__$0が一致するので)実行部にも制御が渡ります。このテクニックはライブラリではテストコードを囲むために用いられます。

+

では、使ってみましょう。誌面の関係で簡単なコードしか使えませんが、リスト36.3のようなサンプルを使います。

+
+

リスト36.3●RRB例題コード

+
class Foo
+  def power(n,p)
+    n * p
+  end
+  def print_powertwo(n)
+    print "n = ", n
+    print "; ", n, "*2 = ", power(n, 2), "\n"
+  end
+end
+
+class Bar<Foo
+end
+
+
+ +

このサンプルに対して以下のような変更を行います。

+
    +
  • powerメソッドをtimesメソッドに名称変更
    +M-x rrb-rename-methodを使います。対象となるクラス(今回はFoo、複数指定可)を指定し、新しい名前を入力します。古い名前でエラーを出すメソッドが自動的に用意されますので、必要に応じて削ります。

  • +
  • timesの引数(n, p)(n1, n2)
    +M-x rrb-rename-local-variableを使います。対象となるメソッドと新旧の変数名を入力します。

  • +
  • print_powertwoprint_twotimesに名称変更
    +M-x rrb-rename-methodを使います。

  • +
  • print_twotimesBarクラスに移動
    +M-x rrb-pushdown-methodを使います。メソッドと移動先のクラスを指定します。

  • +
  • FooクラスをTwoTimesクラスに名称変更
    +M-x rrb-rename-constantを使います。新旧の定数名(クラス名)を指定します。

  • +
+

最終的な結果はリスト36.4のようになります。この例では自動的に挿入された例外発生用のメソッドは取り除いてあります。

+
+

リスト36.4●リファクタリング結果

+
class TwoTimes
+  def times(n1,n2)
+    n1 * n2
+  end
+end
+
+class Bar<TwoTimes
+  def print_twotimes(n)
+    print "n = ", n
+    print "; ", n, "*2 = ", times(n, 2), "\n"
+  end
+end
+
+
+

RRBで行ったような変更は、もちろんエディタの置換機能を使っても実現することはできます。しかし、RRBはRubyプログラムを解析して、意味的に正しい変更を行ってくれますからずっと安心して変更を行うことができます。

+

なお、今回紹介した、ruby-mode.el(最新版)、rrb-0.0.2, yacc.elは付録CD-ROMに掲載しています。

+
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-013.xhtml b/docs/vol2/xhtml/p-013.xhtml new file mode 100644 index 0000000..2c85e41 --- /dev/null +++ b/docs/vol2/xhtml/p-013.xhtml @@ -0,0 +1,62 @@ + + + + + +第36章 RubyとEmacs + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆Emacsによる開発

+
+

本文でも書いたように私はEmacsの中で「生活」しているわけですが、実際どのような生活をしているか、を紹介しましょう。

+

Emacsはエディタですからやはり編集が基本です。Emacsはカーソル移動にCtrlキーを使った組み合わせを用います。たとえば1文字進めるためにはC-f、1文字戻るためにはC-b、1行進むためにはC-n、1行戻るためにはC-pを用います。これらのキーバインドはすでに私の体の一部になっています。ずいぶん以前になりますが、Mozilla上でテキスト入力中に無意識にEmacsキーバインドを用いていて、しばらくたってからMozilla上でも有効であることに改めて気が付いてびっくりしたことがあります。

+

次は、日本語入力です。私は自分自身をプログラマーだと自認していますが、この原稿を始めとして文章を入力する機会も少なくありません。日本語入力には「かんな」を使っています。「かんな」には日本語入力の配列を再定義する機能があるのですが、それを用いて独自の日本語配列を定義しています。「きゅうり改」と名付けられたこの配列(図36.1)は、左手で子音、右手で母音を入力するようになっており、効率的に日本語を入力できるようになっています。

+
+ +
+ fig3601 +
+

図36.1●きゅうり改

+
+

「小」続く文字が小さい文字(ゎとか)であることを示します。また、「ょ」などのキーを2度打ちすると「ょう」のような連母音になります。

+

以下が「きゅうり改」による入力例です。

+
+
エディタ入力について紹介する
+;vbkgheiirodjekgjkg;foodhkfjrj
+edhitanyuuryokunituiteshoukaisuru
+
+

アルファベットで見ると何を入力しているのかひと目ではわかりませんね。正直、私にもわかりません。配列は手が覚えているので、目で見てもよくわからないのです。しかし、よく見ると、入力に使うキーのうちほとんどが打ちやすいホームポジションと上段のキーで占められていて、指の移動が少なく効率がよいことがわかるかもしれません。

+

私はもう10数年この配列を愛用しています。配列を決めてから使いこなせるようになるまでに3日くらいかかりましたが、それ以降は快適です。

+

英文の入力にはflyspell-modeが便利です。flyspell-modeは実行時にスペルチェックを行ってくれるマイナーモードです。スペルが単語に色を付けてくれます。マイナーモードですから、英文を入力するときにはいつも設定しておくとよいでしょう。

+

私の生活の多くは電子メールの読み書きに費やされています。電子メールを読むためにはcmailを使います。cmailは私がもう10年以上使っているメールリーダーです。1998年頃までは私が自分でメンテナンスしていました。それ以降はRubyのほうが忙しくて面倒が見れなくなったので、メーリングリストによる集団管理体制に移行しています。cmailは設計は古いのですが、MIME対応やIMAP対応など現在でも十分な機能を備えています。もう手になじんでしまっているので、なかなか他のメールリーダーに移行できません。

+ +

私がプログラムを開発するときに、よく使う言語はC, Ruby, shの順です。RubyよりもCを使う時間のほうが長いというのがなんだか皮肉な気もしますが、実際私はRubyを使っている時間よりもRubyを作っている時間のほうが長いということでしょう。

+

これらの言語にはそれぞれのための編集モードが用意されており、予約語の色付けを行ったりオートインデントを行ったりできます。ただし、shモードにはオートインデント機能はありません。

+

Rubyでのプログラミングを支援してくれるruby-modeとRRBについては本文で紹介しました。その他にもrubydb.elというものがあってEmacsを使ってRubyデバッガを実行できるのですが、私自身はRubyでデバッガを使わないのでほとんど使ったことがありません。

+

Cの編集モードはcc-modeといいます。単なるc-modeでなくcc-modeである理由はどうやらC++などC類似の言語にも対応しているからのようです。実際、私がEmacsを使い始めた頃にはCの編集モードはc-modeでしたし。

+

Cでプログラムしているときには実行する前にコンパイルしなければなりません。プログラムを書いたらいきなり実行できるRubyよりも不自由なものですが、それがCですからしかたがありません。コンパイルにはM-x compileを使います。これを実行するとEmacsに新しいウィンドウを開いてコンパイルを実行してくれます。また、コンパイル中にエラーが発生すると、キー操作1つでエラー発生箇所にジャンプできます。

+

プログラミング中に関数の定義場所や使われている場所を探したい場合もあります。このときにはM-x grepを使います。これはM-x compileと同様の機能で、コンパイル結果の代わりにgrepの検索結果を表示して、やはりキー操作でジャンプできます。

+

デバッグにはM-x gdbが便利です。現在実行中のソースコードを見ながらデバッグできます。

+

Rubyのソースコードには1つだけCではなく、yaccで記述されたものが含まれています。Rubyの構文解析を担当しているparse.yがそのファイルです。yaccは文法ルールの中にCのコードが埋め込まれた記述です。yacc自身が一種の言語であると考えてもよいでしょう。

+

大概の言語にはその言語用の編集モードがあるのですが、なぜかyaccモードはEmacsに標準添付されていません。いくら多くの言語処理系がyaccを使っているとはいえ、yaccはあまりにもマイナーなのでしょうか。

+

私はずっと以前ネットで入手したyacc.elというファイルを使っています。このファイルには作者の名前も何も書いてないのですが、なかなか便利です。このyaccモードはCコードを編集するときにはCモードに、外側のyaccルールを編集するときにはyaccモードに切り替わります。

+

唯一の欠点はCコードの編集中に外側のyacc記述が見えないことです。どこかにもっとよいyaccモードはないものでしょうか。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-014.xhtml b/docs/vol2/xhtml/p-014.xhtml new file mode 100644 index 0000000..56f6647 --- /dev/null +++ b/docs/vol2/xhtml/p-014.xhtml @@ -0,0 +1,419 @@ + + + + + +第37章 Instiki + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay37 +
+

+探訪Ruby
+Instiki +

+
+

[Linux magazine, 2004年6月号]

+
+

今回はWikiアプリケーションであるInstikiとその内部の解説です。もうInstikiはメンテナンスされていませんし、使われている技術の多くも(発想はともかく)現代ではなくなってしまっています。そういう意味では時代遅れの記事なのですが、注目すべきはInstikiの作者です。作者はDavid Heinemeier Hansson, つまりRuby on Railsの作者DHHその人です。彼はこの記事が公開された年にRuby on Railsを公開し、Ruby成功の立役者になりました。Instikiを見ると彼の技術へのこだわりがちょっとうかがえるような気がします。

+

「Ruby開発日記」は「歴史は繰り返す」です。繰り返し登場しては失敗する技術というものがあるものです。ここであげた3つの技術は、20年経ってもやっぱり何度も登場しては成功せずに終わっています。わずかな例外としては子供向けビジュアル言語であるScratchでしょうか。同じような技術は他にもあると思います。そういえばタブレットコンピュータも繰り返し失敗した技術でしたが、iPadによってとうとう成功してしまって、貴重な例外になりましたね。

+
+
+

今月は「とんがったWiki」であるInstikiの内部を眺めることで、Instikiが使っている「新しい道具」について学ぶことにします。

+
+
+

Instiki

+
+

InstikiはWikiを実現するWebアプリケーションで、David Heinemeier Hanssonによって作られました。誰でも自由に書き込むことができるWebシステムであるWikiについては、第3回でも取り上げましたが、今月はWikiそのものについては解説しません。Wikiの詳細は2004年2月号の第3回を参照してください。Instikiの原稿執筆時点での最新バージョンは0.7.0です。Instikiのホームページは、

+
+
    +
  • http://instiki.nextangle.com:3000/wiki/show/HomePage

  • +
+

です。このサイトもInstikiで運用されています。

+

ユーザーから見たInstikiの最大の特徴は、インストールが簡単なことです。tar.gzファイルをダウンロードして、任意の場所に展開したら、その中にあるinstiki.rbを実行すれば終わりです。あとは何も必要ありません。HTTPサーバーを用意する必要さえないのです。必要なライブラリもすべて添付されています。

+

しかし、Instikiの本当の面白さはその実装にあります。今回はInstikiを実現している中身を探ることで、明日の開発に役立つ技術を学ぶことにしましょう。

+

Instikiを構成している技術には以下のようなものがあります。どれも面白いものばかりです。

+
    +
  • WEBrick

  • +
  • ERB

  • +
  • RedCloth

  • +
  • Madeleine

  • +
+

Instikiはこれらの技術をMVCで構成しています。MVC(Model-View-Controller)についてはまた別の機会に解説したいと思います。

+
+
+

WEBrick

+
+

WEBrickは、CQ出版社の今はなき『Open Design』誌における連載「Rubyではじめるインターネットプログラミング」の中から生まれたインターネットサーバー構築用ツールキットです。Ruby 1.8からは標準添付になっています。作者は高橋征義さんと後藤裕蔵さんです。

+

InstikiはWEBrickを使って、自前でHTTPサービスを提供します。Apacheなどのインストールが必要ない反面、HTTP標準の80番ポートを使用するためにはInstikiの実行そのものにroot権限が必要になります。

+
+
+

ERB

+
+

ERBはdRubyの作者でもある咳さん(関将俊さん)によるRubyで記述されたeRuby(embedded Ruby)の実装です。eRubyがフォーマットの名前で、ERBがそれを解釈するツールの名前です。ERBはRuby 1.8に添付されているのですが、なぜかInstikiにも含まれています。

+

eRubyはテキストにRubyのプログラムを埋め込んだものです。これがembeddedと呼ばれるゆえんです。Rubyプログラムを埋め込んだeRubyファイルの例をリスト37.1に示します。

+
+

リスト37.1●eRubyファイルの例

+
<HTML>
+<BODY>
+<H1>現在時刻</H1>
+<%= Time.now %>
+<UL>
+<%# loop in eRuby %>
+<% for i in %w(foo bar baz) %>
+  <LI><%= i %></LI>
+<% end %>
+</UL>
+<H1>eRuby書式</H1>
+<P>eRubyは <%% と %%> の間にRubyを埋め込みます。</P>
+</BODY>
+</HTML>
+
+
+ +

これをERBで処理すると、eRubyは「<%」と「%>」で囲まれた部分を処理します。その外側はそのまま残します。「<%= %>」で囲まれた部分はRubyのプログラムとして解釈され、その結果がファイルに埋め込まれます。

+

<% %>」で囲まれた部分はプログラムとしての解釈だけを行い、結果の埋め込みは行いません。

+

<%# %>」で囲まれた部分はコメントとして解釈し、式の評価も結果の埋め込みも行いません。最後に「<%%」と「%%>」はエスケープとして解釈され、それぞれ「<%」と「%>」に置換されます。

+

eRubyファイルを解釈するには以下のようにします。

+
+
require 'erb'
+
+s = ERB.new(str).result(binding)
+
+

ここでstrはeRubyフォーマットの文字列、bindingはRubyプログラムを解釈する場合の名前空間です。ある場所での名前空間はbindingメソッドで得ることができます。bindingの指定は省略可能で、その場合にはトップレベルで評価することになります。

+

InstikiではそれぞれのページのテンプレートをeRubyファイルとして用意しておいて、ERBを通すことでHTMLファイルを出力しています。テンプレートを利用することで、画面表示を比較的自由にカスタマイズすることができるようになっています。

+
+
+

RedCloth

+
+

Wikiは普通「Wiki記法」と呼ばれる簡単なマークアップを使って入力するのですが、InstikiはWiki記法を使いません。その代わりに使っているのがTextileと呼ばれる記法です。もともとはPHPあたりから登場した記法のようですが、表37.1のような記法でマークアップできるものです。

+
    +
  • http://www.textism.com/tools/textile/

  • +
+ +
+

表37.1●Textile記法

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
記法表記意味表記例
ブロックh[n].ヘッダー(H1, H2h1.
記法bq.ブロック引用bq. this is quoted
#番号リスト# numeric list
*リスト* bullet list
インライン_foo_強調
記法__it__斜体
*strong*強調(拡大字体)
**bold**ボールド
??cite??引用
-del-削除
+ins+挿入
^super^上付き
~sub~下付き
@code@コード
"link":URLリンク
!URL!イメージ
|a|table|row|テーブル
%(class)span%範囲指定%{color:red}hello%
+
+

RedClothはTextileを解釈してHTMLに変換するためのライブラリです。作者はRuby用YAML処理系の作者でもあるwhy the lucky stiffです。変な名前ですが、「Why」は彼の本当の名前だそうです(発音は「わい」)。

+

Textileは思想的にはRDなどに近いのですが、RDには、

+
    +
  • 汎用のドキュメントフォーマットを目指しているが、TextileはHTML専用、他のフォーマットには変換できない

  • +
  • ブロック記法は貧弱だが、インラインが豊富

  • +
+

という特徴があります。個人的にはTextile表現は文章を書くためには貧弱すぎる印象を持っているのですが、Wikiくらいの軽い文章を書くのには向いているのかもしれません。

+

TextileはHTMLに特化しているので、RDでは難しいイメージやテーブル、色指定や、それらのアラインメント(右寄せ、左寄せ、センタリングなど)も指定できます。また、<pre><code>などはHTMLタグを直接書くことで対応しています。

+

イメージはURLを「!」で囲むことで表現します。また、かっこで説明文(alt)を指定することもできますし、冒頭にアラインメント指定子(「<」「>」「=」のいずれかで、それぞれ左寄せ、右寄せ、センタリング)を指定します。

+
+
!>http://www.rubyist.net/image/ruby.gif(Ruby Gem)!
+
+
+

かっこによる指定はリンクにも使えます。たとえば、

+
+
"a link (textism site)":http://www.textism.com/
+
+

と指定すれば、「textism site」の部分がHTMLのaタグのタイトル属性になります。

+

RedClothの使い方は非常に簡単で、redclothライブラリをrequireした後、RedCloth.new(str)RedClothオブジェクトを作り、to_htmlメソッドでHTMLに変換するだけです。

+
+
require 'redcloth'
+
+html = RedCloth(str).to_html
+
+

InstikiはURLのリンク化とWikiワードにも対応していますが、これはRedClothの機能ではなく、Instikiの内部で置換を行っています。

+
+
+

Madeleine

+
+

MadeleineはObject PrevalenceのRuby実装です。作者はAnders Bengtssonです。

+
    +
  • http://madeleine.sourceforge.net/

  • +
+

Object Prevalenceとはアプリケーションの永続化のためのデザインパターンの一種です。Object Prevalenceでは永続化するデータをデータベースサーバーのような異なるプロセスに置くのではなく、オブジェクトをそのままアプリケーションプロセスのメモリに格納します。リレーショナルデータベースを使う場合のように、データベースに格納するためにオブジェクトをテーブルに変換する必要もなく、検索のためにSQL文を組み立ててサーバーとソケット通信する必要もないので、構造が簡単で、高性能を実現しやすい特徴があります。

+

Java用のObject PrevalenceライブラリのPrevaylerのホームページには、JDBCを経由してOracleを利用する場合と比較すると、Prevaylerのほうが9000倍(!)高速なケースがあると自慢しています。

+
    +
  • http://www.prevayler.org/wiki.jsp

  • +
+

9000倍とは穏やかではありません。その秘密はどこにあるのでしょうか。

+

Object Prevalenceの仕組みは、スナップショットとジャーナリングにあります。実際に処理するデータは実行中のアプリケーションのメモリ中に保持し、検索などはSQLなどを介さず直接行います。データの更新はメモリに対して行うと同時に、ジャーナルログにも書き込みます。

+

また、定期的にメモリ中のデータをスナップショットと呼ばれるファイルに書き出し、そこまでのジャーナルログは消去します。

+

プログラムの起動時には、

+
    +
  • スナップショットが存在しなければアプリケーションデータを初期化

  • +
  • スナップショットがあれば最新のものを読み込む

  • +
  • ジャーナルログもあればそれも読み込み、アプリケーションデータを最新のものにする

  • +
+

という手順でメモリ中にデータを用意します。プログラムが異常終了した場合でも、スナップショットとジャーナルログは残されていますので、最新のデータを復旧することが可能です。

+
+

基本的な原理はこれだけです。しかし、Java版(Prevayler)では、別の仮想マシンにアプリケーションデータのReplica(レプリカ、複製)を用意して、ジャーナリングとスナップショットの生成はそちらに任せています。これによりスナップショットのために実行を停止させる必要がなく、高性能が実現できているわけです。Ruby版のMadeleineではReplicaは(まだ)使われていませんから、スナップショットを取るために全体が停止してしまいます。ですから、Java版ほど劇的な性能は実現できないような気がします。

+

Object Prevalenceにも欠点がないわけではありません。

+

まず、すべてのデータをメモリ中に保持するため、データ量が増大するとそれにつれてメモリを消費します。リレーショナルデータベースでは参照しないデータはファイルだけに格納されるので必要メモリ量は少なくて済みます。もっとも最近はメモリの最大値は増加しており、サーバーではギガバイト単位のメモリ容量も少しも珍しくなくなりました。価格も低下の一方ですから、メモリ容量は重大な問題にならなくなっているかもしれません。

+

次の問題は、データがアプリケーションプロセスのメモリ中に展開されているため、複数プロセスが同一データにアクセスすることには向かないということです。この場合には、データを保持するプロセスがサーバーとなって、複数のクライアントからのアクセスを受け取るという形になりますが、そうなると、せっかく削減したソケット通信を再び導入することになってしまいます。ここは上手に実装しないとせっかく実現した高性能を台無しにしてしまう可能性があります。

+

最後に、Object Prevalenceそのものの欠点ではないのですが、実は現在のRuby処理系には大量オブジェクトの扱いにGCの問題がありますから、それでなくてもあまり大量の永続データの扱いには向きません。とはいっても、Instikiが取り扱うようなWikiデータ程度の規模なら何の問題もないでしょう。

+

RubyにおけるMadeleineの使い方は以下のとおりです。

+

まず、システムの初期化を行います。

+
+
require 'madeleine'
+
+m = SnapshotMadeleine.new("/path/to/storage") {
+  Data.new
+}
+
+

SnapshotMadeleine.newの引数にはスナップショットやログを置くディレクトリへのパスを指定します。省略可能な第2引数にはスナップショットへオブジェクトを書き込む際に文字列化を行うモジュールを指定します。デフォルトでは組み込みのMarshalモジュールを用いますが、たとえばYAMLモジュールを指定することで、YAMLフォーマットでセーブすることができるようになります。

+

既存のスナップショットが存在しない場合には、ブロックを評価してその結果をアプリケーションデータにします。

+

戻り値がMadeleineへのハンドルになります。データへのアクセス(特に更新)は必ずこのハンドルを経由する必要があります。アクセスの方法は以下のとおりです。

+
+
m.execute_command(command)
+
+
+

commandはコマンドオブジェクトと呼ばれて、データへのアクセスを行うオブジェクトです。execute_commandが呼ばれると、以下の手順で処理を行います。

+
    +
  • ロックを行う

  • +
  • ログに書き込む

  • +
  • command.executeを呼ぶ

  • +
+

commandはどんなクラスのオブジェクトでもかまわないのですが、以下のメソッドを持つ必要があります。

+
+
command.execute(data)
+
+

dataはアプリケーションデータになります。

+

Madeleineには使用上の注意がいくつかあります。

+

まず1つは、commandexecuteコマンドは副作用を持っていてはいけない、ということです。ここでいう副作用を持たないとはアプリケーションデータ以外に影響を及ぼさないということです。これはたとえばアプリケーションデータ以外のオブジェクトを変更することとか、何かを出力することを含みます。executeコマンドはログからの復旧などユーザーが予想しない時点で呼び出されますので、副作用があるとアプリケーションに悪影響が発生します。

+

それから、dataはスナップショットとしてファイルに保存されますから、ファイルに書き込むための文字列化を行うことができるデータだけを含む必要があります。たとえば、SocketなどIOオブジェクトのサブクラスは文字列化できないので、データに含むことはできません。間接的に参照するのでもだめです。

+

また、commanddataへの参照を持たないという点にも注意する必要があります。アプリケーションデータへの参照はexecuteの引数として渡されるものだけを使ってください。commandはやはり文字列化されてジャーナルログに記録されますから、アプリケーションデータへの参照を持っているとログがふくれあがって性能上の問題が発生します。

+

では、ここでMadeleineを使った簡単なプログラムを見てみましょう(リスト37.2)。

+
+

リスト37.2●Madeleineサンプル

+
require 'madeleine'
+
+class CountData
+  attr_accessor :count
+  def initialize
+    @count = 0
+  end
+end
+
+class CountInc
+  def execute(data)
+    data.count += 1
+  end
+end
+
+class CountShow
+  def execute(data)
+    data.count
+  end
+end
+
+# Madeleineハンドルを初期化
+m = SnapshotMadeleine.new("/tmp/data") {
+  CountData.new
+}
+
+Thread.start {
+  loop {
+    sleep 120      # 120秒ごとにスナップショットを取る
+    m.take_snapshot
+  }
+}
+while line = gets
+  case line
+  when /^inc/
+    printf "count -> %d\n", m.execute_command(CountInc.new)
+  when /^show/
+    printf "count: %d\n", m.execute_query(CountShow.new)
+  end
+end
+
+
+ +

このプログラムは標準入力に“inc”と打つとカウンタの値を1増やし、“show”と打つとカウンタの現在値を表示します。execute_queryメソッドはまだ説明していませんが、これはログに記録しないでコマンドを実行するメソッドです。ログに記録が行われませんから、実行されるコマンドはアプリケーションデータを更新しないようにしてください。データの更新が行われると、メモリ中のデータとジャーナルの間に不整合が発生して深刻な問題を引き起こします。

+
+
+

Madeleine::Automatic

+
+

Instikiでは実際にはMadeleineのMadeleine::Automaticという機能が使われています。Madeleine::Automaticを使ったサンプルをリスト37.3に示します。

+ +
+

リスト37.3●Madeleine::Automaticサンプル

+
require 'madeleine'
+require 'madeleine/automatic'
+
+class CountData
+  include Madeleine::Automatic::Interceptor
+  attr_accessor :count
+  def initialize
+    @count = 0
+  end
+  def inc
+    @count += 1
+  end
+end
+
+m = Madeleine::Automatic::
+      AutomaticSnapshotMadeleine.new("/tmp/data") {
+  CountData.new
+}
+Thread.start {
+  loop {
+    sleep 10
+    m.take_snapshot
+  }
+}
+while line = gets
+  case line
+  when /^inc/
+    printf "count -> %d\n", m.system.inc
+  when /^show/
+    printf "count: %d\n", m.system.count
+  end
+end
+
+
+

Madeleine::Automaticを使ったものとの違いは、

+
    +
  • ハンドルのクラス名が違う(えらい長い)

  • +
  • コマンドが登場しない

  • +
  • データオブジェクトのメソッドを(m.system経由で)直接呼べる

  • +
+

という点です。コマンドを使わないで済むのでプログラムがずいぶんすっきりしているのがわかります。

+
+
+ +

まとめ

+
+

今月は実際のアプリケーションであるInstikiの中身を見ることで、新しい技術をいくつか紹介しました。Instikiは進歩が速く、今回の原稿を用意している間に3回もバージョンアップが行われました。実際にInstikiを使うかどうかはともかく、他人のソースコードを読むことは大変に勉強になります。あなたもソースコードを探検してみませんか?

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-015.xhtml b/docs/vol2/xhtml/p-015.xhtml new file mode 100644 index 0000000..7461ce0 --- /dev/null +++ b/docs/vol2/xhtml/p-015.xhtml @@ -0,0 +1,59 @@ + + + + + +第37章 Instiki + + + + +

Matz Essays Volume 2

+ + + +
+

◆ Ruby開発日記 ◆歴史は繰り返す

+
+

この「Ruby開発日記」の中でもかつて何度も言及したことがあるのですが、プログラミング言語は半世紀を超える非常に長い歴史を持ち、しかも非常にゆっくりと進歩してきました。1つの概念が誕生して世の中に広まるまでに10年、20年かかるのはざらです。

+

その中で同じようなアイデアが繰り返し繰り返し発明されては消えていきました。なかにはごくまれに何度目かの再発明で初めて成功するものもありますが、たいていは以前に失敗したアイデアはたとえ再登場してもまた消えていくのがオチです。そのようなことはプログラミング言語に限ったことではないのかもしれませんが、今回はプログラミング言語の周辺からそのようなアイデアをいくつか眺めてみて、今後同じような失敗をしないための肥やしにしてみたいと思います。

+
+

ビジュアル言語

+

現在のプログラミング言語のほとんどは単語が一列に並んでいるという観点からは、いわば1次元の言語です。これを2次元に拡張しようというのがビジュアルプログラミング言語です。

+

このアイデアは研究者にとって魅力的に感じられるようで、昔から繰り返し繰り返し登場しています。古くはフローチャートや構造化記法(PAD)などからプログラムを生成しようとする試みがありましたし、中にはPrographのように実際に商品化されたものもあります。しかし、どれも大きな成功を収めたとはいえないように思います。

+

理由はいろいろあるのでしょうが、私はプログラミング言語の2つの側面を無視したせいではないかと考えています。

+

1つは、入力の繁雑さです。「旧式」のプログラミング言語は、文章を記述するようにキーボードはぱたぱたと打つだけで入力できますが、ビジュアル言語の多くは、パレットから部品を選んでキャンバスに置き、他の部品と線を連結する、などなどの操作をマウスを使って行う必要があります。入力には特殊なツールが必要ですし、正直なところ、プログラミングのロジックを記述するにはやってられない作業です。初心者にプログラミングの概念をイメージさせる教材としてはいくらか効果があるかもしれませんが、仕事の道具としてはいかにも物足りません。

+

もう1つは(こちらのほうが本質的なのですが)、人間の思考が基本的に1次元だということです。おそらくは脳の内部では非常に粒度の高いパラレルな処理を行っているのだと思いますが、人間の意識は同時に1つのことを順に行うことに慣れ切っています。この意識に適合するのは多次元的なビジュアル言語よりも、1次元的な旧来の言語のほうが向いているように思います。旧来のプログラミング言語は自然言語の体裁を流用しており、コンピュータは進歩しても人間はそれに適用しきれないというわけです。何千年も使われてきたやり方をなめてはいけません。

+

今後もロジック記述の方法としてビジュアル言語が主流になることはないと思います。ただし、画面レイアウトのような特殊な領域ではビジュアル言語と呼んでもよいようなものが登場することはあるかもしれません。

+
+
+ +

構造エディタ

+

私が学生時代にはもう下火にはなっていましたが、70年代から80年代にかけて「構造エディタ」というテーマが流行していました。これはプログラミング言語の文法を理解したエディタで、たとえばブロック構造などを(PADのような)図で表現したり、入力中に構文エラーを報告したりすることができるようなエディタです。

+

構造エディタのプログラムを図式で表現する部分は、何度繰り返されてもまったく定着しませんでした。これは構造エディタのために新しい言語を用意する、というような研究テーマとしてはともかく実用上はどうかというような戦略の問題だけではなく、ビジュアル言語と同じような理由も含まれていたのではないかと思います。プログラムの見かけは思った以上に重要なのです。

+

構造エディタの機能のうち、もっと控えめなほうはさまざまに形を変えて最近のエディタやIDE(統合開発環境)に取り込まれています。たとえば、前号のこの連載で紹介したように、Emacsを含む多くのエディタは、オートインデントやプログラムを適切に色付けによってプログラミングを支援してくれますし、RRB(Ruby Referctoring Brower)のように、プログラムの構造を理解した編集支援を行ってくれるツールもあります。

+
+
+

文法独立の言語

+

プログラミング言語は、実際は外見を決定する文法(シンタックス)と、意味を定義するモデル(セマンティック)とに分けることができます。あえてどちらがより重要かと問われれば、当然セマンティックのほうが重要と答えるわけです。

+

この考えを推し進めると、セマンティックの方だけを定義しておいて、シンタックスは自由に選べるのはどうだろうか、というアイデアが登場します。このアイデアは古くから何度も何度も登場します。

+

古くはS式とM式を選択できるLisp、もうちょっと近くでは文法切り替えができる言語を目指したGuile(GNUのSchemeインタプリタ)、最近だとPerl 6チームが開発しているParrotがあります。しかし、どれも成功したとはいえません。Parrotだけはまだ可能性があると思っていますが。

+

これらが成功するのが難しい理由は、1つは実現の難易度の問題でしょう。複数の言語に対応するセマンティック部分は、それらの言語の公倍数の機能を持つ必要があり、複雑さが格段に上昇してしまうからです。

+

もう1つの問題は、前にも述べましたが、文法(見かけ)は思ったよりも重要ということでしょう。意味の点から考えると外見は枝葉末節にすぎないのですが、プログラマーの気持ちという点では実に本質に近いところにあるのではないでしょうか。言語ごとに微妙に異なるセマンティックのために意識を切り替えるスイッチとして文法の違いが役立っている、そんな気がします。

+
+
+

まとめ

+

今回は、プログラミング言語界で日の目を見なかったいくつかのアイデアを観察してみましたが、結論としては「文法が重要」ということでしょうか。言語にとって「見かけ」とか「気分」とかがいかに重要であるかを再確認した思いです。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-016.xhtml b/docs/vol2/xhtml/p-016.xhtml new file mode 100644 index 0000000..b76d3a6 --- /dev/null +++ b/docs/vol2/xhtml/p-016.xhtml @@ -0,0 +1,329 @@ + + + + + +第38章 テンプレート + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay38 +
+

+探訪Ruby
+テンプレート +

+
+

[Linux magazine, 2004年7月号]

+
+

テンプレートツールについて説明しています。今回紹介したものの中でERBは現役でRuby on Railsの標準テンプレートエンジンとして活躍していますね。他のものはあまり見かけなくなりましたね。

+

「Ruby開発日記」は「プロトタイプな世界」と題してプロトタイプベースのオブジェクト指向について解説しています。プロトタイプベースオブジェクト指向は今回の記事でも紹介しているように、いくつかの言語で採用されましたが、最近はあまり人気がありません。JavaScriptが広まったときには、これでプロトタイプベースのオブジェクト指向が広まるかと期待されましたが、そうはならなかったようです。人間にとってクラスベースのほうが理解しやすいのかもしれませんね。生き残ったJavaScriptも、そもそも独自のオブジェクトをユーザーが定義するようなスタイルは一般的ではありませんし、そもそも言語にclass文が導入されたりしてクラスベースに近づいています。

+
+
+

もともと「テンプレート」とは図形を書いたりするときに使う穴を抜いた下敷きのようなものです。コンピュータ業界ではそこから転じて、大枠を決めておいて穴埋めしてファイルを生成するような場合の「雛形」のような意味で使われます。

+
+
+

ファイル生成

+
+

プログラムの実行結果を含めたHTMLファイルを生成するなど、プログラムによってファイルを生成する処理は珍しいことではありません。

+

何も考えないでファイルを生成するプログラムを書くとリストリスト38.1のようになります。

+ +
+

リスト38.1●ファイル生成プログラム

+
puts "<HTML><HEAD><TITLE>こんにちは</TITLE></HEAD>"
+puts "<BODY><P>"
+printf "こんにちは。現在の時刻は%sです\n", Time.now
+puts "</P></BODY></HTML>"
+
+
+

生成結果はリスト38.2です。

+
+

リスト38.2●実行結果

+
<HTML><HEAD><TITLE>こんにちは</TITLE></HEAD>
+<BODY><P>
+こんにちは。現在の時刻はThu May 13 13:28:15 JST 2004です
+</P></BODY></HTML>
+
+
+

これはプログラムが主でファイルの内容が従という構成です。この構成ではファイルの静的部分がプログラムのあちこちに分散して、見通しが悪くなります。

+

また、Webサービスなどではデザイナーとプログラマーが分業することがしばしば行われます。そういう場合にデザイナーとプログラマーが同じファイルを同時に変更するといろいろと面倒なことが起こります。

+

そういう諸問題を避けるため、ファイルの静的部分と動的な内容を埋め込む場所を記述したテンプレートを用意し、動的な内容の展開はそのテンプレートを解釈するライブラリ(テンプレートエンジンと呼ぶことがあります)によってによって展開させることが有効となります。6月号でInstikiを紹介した際にもテンプレートについて触れましたが、今回はそれらにどのような種類があるのかを解説したいと思います。

+
+
+

eRuby

+
+

Ruby界隈で最も古いテンプレートエンジンはeRubyです。これはPerlのテンプレートエンジンeperlに触発されて開発されたものです。eRubyの開発者は前田修吾さんです。eRubyは、

+
    +
  • http://modruby.net/

  • +
+

から入手可能です。原稿執筆時点での最新バージョンは1.0.5となっています。

+

eRubyの最大の特徴はこれが独立したインタプリタであるということです。他のテンプレートエンジンがRubyで記述されたライブラリであるのと比べると、この点が大きな違いになっています。eRubyはCで記述されたインタプリタなので、より高速に動作し、フィルタとして実行するのに向いています。一方、ライブラリではないので他のRubyプログラムから呼び出しにくい(プロセス起動しなければならない)点は欠点になるかもしれません

+

eRubyインタプリタが処理するファイルフォーマットを一種の言語であると考えてeRuby(embedded Ruby)と呼ぶことがあります。eRubyのブロックは「<%」で始まり、「%>」で終わります。ブロックの中身はRubyのプログラム(の断片)でなければなりません。eRubyはプログラムが出力を行った場合、そのブロックを出力結果に置き換えます。

+ +
+
$ cat foo.erb
+こんにちは、<% print "みなさん!" %>
+$ eruby foo.erb
+こんにちは、みなさん!
+
+

<%」の次に「=」がくる場合、そのブロックの内容をRubyプログラムとして評価した値に置き換えます。

+
+
$ cat bar.erb
+こんにちは、<%= "みなさん!" %>
+$ eruby bar.erb
+こんにちは、みなさん!
+
+

<%」の次に「#」がくる場合、ブロックはコメントとして無視されます。

+
+
$ cat baz.erb
+こんにちは、<%# これは
+コメント %>みなさん!
+$ eruby baz.erb
+こんにちは、みなさん!
+
+

<%」の次に「%」がくる場合、これは「<%」のエスケープと解釈されます。静的部分に「<%」という文字列を含むために用います。

+
+
$ cat quux.erb
+erubyは<%%と%>の間を実行します
+$ eruby quux.erb
+erubyは<%と%>の間を実行します
+
+

%」で始まる行は、Rubyプログラムとして評価します。eRubyはその行を出力結果で置き換えます。

+
+
$ cat calc.erb
+% x = 1 + 1
+1 + 1 = <%= x %>
+$ eruby calc.erb
+1 + 1 = 2
+
+
+
+ +

ERB

+
+

ERBは純Rubyで記述されたeRubyを解釈するライブラリです。ですからeRubyとは逆の特徴を持つことになります。プログラムからはこちらのほうが使いやすいのではないかと思います。ERBの作者はdRubyの作者でもある関将俊さんです。

+

実装上の違いの他にERBはeRubyとはいくつかの非互換性があります。

+
    +
  • <% %>」の間での出力はERBの処理に反映されない。ERBは「<% %>」の間のRubyプログラムを実行するだけで、出力の切り替えは行わない

  • +
  • %」で始まる行の解釈は行わない

  • +
+

eRubyプログラムの実例をリスト38.3に示します。この例題を見ればわかるように「<% %>」を使ってループ処理を行うことも簡単にできます。

+
+

リスト38.3●eRubyプログラム例

+
<%
+users = File.readlines("/etc/passwd").collect{|l|
+  data = l.split(/:/)
+  [data[0], data[4]]
+}
+%>
+このマシンのユーザー名と実名:
+
+<% for a,n in users %>
+アカウント: <%= a %>、名前: <%= n %>
+<% end %>
+
+
+

ERBは1.8以降には標準添付されています。1.6系でERBを使う場合には、

+
    +
  • http://www2a.biglobe.ne.jp/~seki/ruby/erb-2.0.4.tar.gz

  • +
+

からダウンロードしてください。

+
+
+

amrita

+
+

eRubyやERBなどeRuby系のテンプレートエンジンは、元になるファイルにRubyプログラムの断片を埋め込むものです。ですから、量はともかくデザインの中にロジックの一部が紛れ込んでいることになります。また、eRubyファイルは厳密にはHTMLファイルではありませんから、HTMLエディタなどでは処理できません。

+

このような問題に対処できるのがamritaです。amritaは純粋なHTML(またはXHTML)ファイルとRubyのデータを結び付けてテンプレート展開を行います。amritaの作者は中島拓さんです。amritaREADMEから特色を引用します。

+ +
    +
  • amritaのテンプレートは <? ... ?><% ... %> のような特殊なタグを含まない純粋なHTML/XHTML文書である

  • +
  • テンプレートは、ほとんどのHTMLエディタで作成が可能

  • +
  • 出力の動的な部分を修正しても、Rubyコードには修正が不要

  • +
  • モデルデータは、Hash Array文字列のような標準のRubyのデータである。また、自作のクラスのオブジェクトをそのままモデルデータにすることも可能

  • +
  • 出力はロジックでなくデータでコントロールされる。そのため、テストやデバッグが楽(eXtream Programmingにも向いている)

  • +
  • 簡単にHTMLテンプレートをRubyのコードにコンパイルすることもできる

  • +
+

amritaはテンプレートとモデルデータをid属性によってマッチさせて、HTML文書を出力します(図38.1)。テンプレートファイルのタグの中身がモデルデータの値に完全に置き換わっていることに注目してください。

+
+ +
+ fig3801 +
+

図38.1●amritaのテンプレート展開

+
+

実際の展開は以下のように行います。

+

まず、amrita/templateライブラリをロードします。

+
+
require "amrita/template"
+
+

それからテンプレートエンジンオブジェクトを生成します。生成にはテンプレートファイル名を指定します。

+
+
tmpl = Amrita::TemplateFile.new("template.html")
+
+

テンプレートと対応するモデルデータを用意します。モデルデータはテンプレートのid属性(この例ではtitlebody)に対応した値を持つ必要があります。

+ +
+
data = {
+   :title => "hello world",
+   :body => "Amrita is a html template library"
+}
+
+

そしてテンプレートエンジンによって展開を行います。

+
+
tmpl.expand(STDOUT, data)
+
+

expandメソッドの最初の引数は出力先のストリームです。「<<」メソッドを持つ任意のオブジェクトを出力先に指定できます。第2引数はモデルデータです

+
+
+

amritaの繰り返し

+
+

先ほどの例はただ単純な置換でしたが、amritaは繰り返しを行うこともできます。idに対応する値が配列(厳密にはEnumerable)であった場合には、対応するタグを配列の要素の数だけ繰り返します。

+

たとえば先ほどの例でモデルデータの一部を以下のように配列にすると、

+
+
data = {
+   :title => "hello world",
+   :body => ["foo", "bar", "baz"]
+}
+
+

出力はこうなります。

+
+
<html>
+    <body>
+        <h1>hello world</h1>
+        <p>foo</p><p>bar</p><p>baz</p>
+    </body>
+</html>
+
+

テンプレート展開は再帰的に行われます。たとえば、次のようなテンプレートとモデルデータに対する出力を考えてみてください

+
+
テンプレート:
+<table border="1">
+  <tr><th>lang</th><th>author</th></tr>
+  <tr id="table1">
+    <td id="lang"><td id="author">
+  </tr>
+</table>
+
+モデルデータ:
+data = {
+  :table1=>[
+    { :lang=>"Ruby", :author=>"Matz" },
+    { :lang=>"Perl", :author=>"Larry" },
+    { :lang=>"Python", :author=>"Guido" },
+  ]
+}
+
+
+

id=table1に対応する値は3要素の配列ですから、<tr> の部分は3回繰り返されることになります。<tr> の中身には“lang”というidを持つタグと“author”というidを持つタグがありますから、配列の各要素がそれぞれモデルデータとして適用され、テンプレート展開されます。その結果、全体の展開結果は以下のようになります。

+
+
<table border="1">
+  <tr><th>lang</th><th>author</th></tr>
+  <tr>
+    <td>Ruby</td><td>Matz</td></tr><tr>
+    <td>Perl</td><td>Larry</td></tr><tr>
+    <td>Python</td><td>Guido</td></tr>
+</table>
+
+

キーに対応する値は多くの場合、文字列が使われますが、nilまたはfalseだった場合にはタグそのものが削除されます。また、trueだった場合にはテンプレートのタグの中身がそのまま使われます。

+

あと、タグの属性を指定する方法を紹介しておきます。HTMLファイルを生成する場合にはタグの中身だけでなく、属性を指定したいケースも多かろうと思います。そういう場合にはAmrita::aメソッドを使います。

+
+
Amrita::a(:href="http://www.rubyist.net/"){"Matz"}
+
+

Amrita::aメソッドの戻り値はAmrita::AttrArrayクラスのオブジェクトで、これが値として与えられた場合には、引数を属性、ブロックの値を内容としてタグが展開されます。

+
+
テンプレート:
+<html>
+  <body>
+    <a id="web">my page</a>
+  </body>
+</html>
+
+モデルデータ:
+data = {
+  :web=>Amrita::a(:href=>"http://www.rubyist.net/"){
+    "Matz"
+  },
+}
+
+出力
+<html>
+  <body>
+    <a href="http://www.rubyist.net/">Matz</a>
+  </body>
+</html>
+
+
+

amritaにはここでは紹介した他にもいろいろな機能があります。たとえば手続きオブジェクトなどを値に使う方法や、テンプレート展開をコンパイルして高速化する方法などは非常に興味深いです。詳しくはamritaのドキュメントを参照してください。

+
+
+

amritaの入手とインストール

+
+

原稿執筆時点でのamritaの最新版は、安定版が1.0.2、開発版が1.8.2です。それぞれ、

+
    +
  • http://www.brain-tokyo.jp/research/amrita/amrita-1.0.2.tar.gz

  • +
  • http://www.brain-tokyo.jp/research/amrita/amrita-1.8.2.tar.gz

  • +
+

から入手できます。

+

インストールは簡単で、ダウンロードしたtarファイルを展開し、作成されたディレクトリ(たとえばamrita-1.0.2など)に移動してから、root権限でruby install.rbを実行するだけです。

+
+
+

amritaのライバルたち

+
+

RAAにはamritaの影響を受けたと思われるテンプレートエンジンライブラリが複数登録されています。

+
+

xtemplate

+

xtemplateは立石孝彰さんによるXML用テンプレートエンジンです。属性の扱い(「@」を前置したキーは属性)の扱いやXPathが使える点などはamritaよりも優れているように見えます。xtemplateはモデルデータとしてXMLやYAMLを直接使うこともできます。xtemplateについては、

+
    +
  •   http://xtemplate.sourceforge.net/

  • +
+

を参照してください。原稿執筆時点でのxtemplateの最新版は0.7.0です。

+

misen

+

misenは白井薫さんが開発されたテンプレートエンジンです。misenの特徴はHTMLだけではなく、任意のフォーマットの展開ができることです。特にスタイルを定義することで、タグの形式も独自に定義できる点が面白いです。サンプルとしてLaTeXスタイルが用意されていて、

+
+
\documentclass{article}
+\title{\misen:title}
+\begin{document}
+  \maketitle
+  \begin{misen:body}
+    body will be inserted here
+  \end{misen:body}
+\end{document}
+
+
+

のような指定ができます。XML(SGML)ふうのタグの代わりにTeXの \begin{}, \end{} で範囲が指定されています。

+

misenについては、

+
    +
  •   http://devel.korinkan.co.jp/misen/

  • +
+

を参照してください。原稿執筆時点でのmisenの最新バージョンは0.11.1です。

+

kwartz

+

厳密にいうとkwartzは「Rubyで実装されたテンプレートエンジン」で「Rubyのためのテンプレートエンジン」ではありません。kwartzはテンプレートに埋め込む言語を独自言語とすることで、Rubyだけでなく、PHPやJavaにも対応しています。kwartzはRuby, PHP, Java用のテンプレート展開コードを生成します。利用者は生成されたコードを(コンパイルして)利用します。kwartzについての情報は、

+
    +
  •   http://www.kuwata-lab.com/kwartz/

  • +
+

を参照してください。kwartzはIPAの平成15年度未踏ソフトウェア創造事業の対象でした。kwartzの開発者は桑田誠さんです。

+
+
+
+

まとめ

+
+

今月はテンプレートエンジンについて調べてみました。現在はWebアプリケーションの開発が盛んです。RubyでWebアプリケーションを、と考えている人も多いのではないでしょうか。Webページのデザインとロジックを分離できるテンプレート技術は優れたWebアプリケーションを開発するのに非常に役に立つ技術です。amritaを始めとしたテンプレートエンジンはきっとそのために役立つことでしょう。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-017.xhtml b/docs/vol2/xhtml/p-017.xhtml new file mode 100644 index 0000000..2637538 --- /dev/null +++ b/docs/vol2/xhtml/p-017.xhtml @@ -0,0 +1,66 @@ + + + + + +第38章 テンプレート + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆プロトタイプな世界

+
+

オブジェクト指向の三要素といえば、昔から、

+
    +
  • 継承

  • +
  • 情報隠蔽いんぺい

  • +
  • 動的結合

  • +
+

の3つと相場が決まっていたものですが、本当にこれらは必須なものなのでしょうか。

+

たとえば、Common Lispのオブジェクト指向機能であるCLOSには情報隠蔽を支援する機能はなく、オブジェクトのインスタンス変数(スロットと呼ぶ)は自由にアクセスできます。では、CLOSはオブジェクト指向ではないかというと、そんなことはないでしょう。

+

C++ではvirtualと明示的に指定しなければ動的結合が行われません。では、動的結合がなければオブジェクト指向とは呼べないでしょうか。個人的にはそんな環境でオブジェクト指向プログラミングをしたくはありませんが、しかし、そんな私でも動的結合がなければオブジェクト指向ではないというのは少々言い過ぎのように思います。

+

では、継承はどうでしょうか。

+

広く知られているオブジェクト指向言語には、たいてい継承機能が付いています。オブジェクトの種類をまとめるクラスが存在して、あるクラスの機能を受け継いで、一部変更・追加などを行い別のクラスを作り出すことが継承です。

+

クラスというのは、たとえば四本足で「わんわん」とえる生き物を「犬」という総称的な名前を付けて分類する行為の延長線上ですから、人間にとって非常に自然な発想であるのは確かです。また、多くの教科書で継承の例題として生物の分類(脊椎動物→哺乳類→犬など)が頻繁に用いられるように、継承も日常的な発想の延長です。

+

しかし、自然ではあっても必須かというとそうでもないかもしれません。別のやり方があるからです。クラスを使うクラス主義に対して、プロトタイプ主義と呼ばれるこのやり方では、クラスという単位を使わずにオブジェクトだけを単位とします。

+

クラス主義が「このクラスに属するオブジェクトを1つ作る」と指定するところを、プロトタイプ主義では「あのオブジェクトと同じのをもう1つ」と指定します。クラスの代わりに具体的なオブジェクトが「雛形(プロトタイプ)」になるわけです。

+

クラス主義が継承を使って「あのクラスと同じだけど、ここが違うクラスを作る」となるところで、プロトタイプ主義では「あのオブジェクトと同じだけど、ここが違うオブジェクト」を新しく作り、それを新しい雛形にします。

+

プロトタイプ主義ではクラスという抽象的な存在は登場せず、代表的なオブジェクトという具体的な存在によってプログラミングを行います。

+

このようなプロトタイプ主義の言語のはしりはSelfという言語であるといわれています。Selfはプロトタイプ型Smalltalkというべき言語で、ずっとSunで研究が行われてきました。Self自体はまだまだ知る人ぞ知るという感じですが、Selfの研究成果はJavaのHotSpotに応用されたり、morphicやtraitsなどの一部の機能はSmalltalkに「逆輸入」されたりしています。

+
+

しかし、もしかするとプロトタイプ主義の起源はオブジェクト指向の他の多くの機能と同じようにLisp界にあるのかもしれません。Common Lispのオブジェクト指向CLOSの仕様について議論されているとき、参考にされたものの1つにHP(Hewlett Packard)で開発されていたCommon Objectというものがあったそうです。このCommon Objectではクラスとオブジェクトの区別がなく、クラスの役割はその種別の代表となるオブジェクトが果たしていたそうです。正確な仕様や開発時についての情報が入手できませんでしたが、あるいはSelfよりも早い時期にプロトタイプ主義を導入していたのかもしれません。

+

他にもプロトタイプ主義の言語はいくつかあるのですが、一番有名なものはJavaScriptかもしれません。歴史的な事情からJavaの名前を使っているもののたいして似ていないJavaScriptはいっぷう変わったオブジェクト指向機能を備えています。JavaScriptを通じてプロトタイプ型オブジェクト指向プログラミングを学んだ人も多いのではないでしょうか。JavaScriptはいまだに進歩を続けていて、バージョン2.0では今度はクラスも導入されたり、セレクタネームスペースというまだ珍しい機能を提供したりしています。JavaScriptは今後注目すべきオブジェクト指向言語かもしれません。

+

時代がプロトタイプ主義に追いついたのか、最近になってプロトタイプ型言語が次々登場しています。皆さんもプロトタイプ型言語で未来の(?)プログラミングを体験してみませんか?

+
+

Io(http://www.iolanguage.com/

+

Ioはプロトタイプ型オブジェクト指向スクリプト言語です。非常に小さな文法と性能がよい(自称)スクリプト言語です。

+

Prothon(http://www.prothon.org/

+

ProthonはPythonをベースにプロトタイプ主義で再設計したものです。今年の7月までは仕様を模索している段階だそうです。

+

SeRuby(http://kumiki.c.u-tokyo.ac.jp/~ichiyama/projects/reports/seruby/

+

SeRubyは言語ではなく、Rubyの上でプロトタイプ型オブジェクト指向プログラミングを実現するものです。わずか200行ほどのRubyプログラムで実現されています。

+

Ruby

+

さて、われらがRubyはもちろんクラス型オブジェクト指向言語なのですが、特異メソッドを使ってプロトタイププログラミング(もどき)を行うことができます。オブジェクトの生成は雛形となるオブジェクトをcloneすることで行い、オブジェクトの定義には特異クラス定義、

+
+
class <<obj
+  ...
+end
+
+

を使います。ただ、Rubyではいくつかのオブジェクト(true, false, nil, fixnum, symbol)に特異メソッドが定義できませんから実用には難しいかも。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-018.xhtml b/docs/vol2/xhtml/p-018.xhtml new file mode 100644 index 0000000..cc445d3 --- /dev/null +++ b/docs/vol2/xhtml/p-018.xhtml @@ -0,0 +1,509 @@ + + + + + +第39章 DBM + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay39 +
+

+探訪Ruby
+DBM +

+
+

[Linux magazine, 2004年8月号]

+
+

DBMについて解説しています。DBMは完全に廃れた技術というわけではありませんが、最近は直接見かけることは少なくなりました。一部の検索エンジンのバックエンドや、アプリケーション組み込みのデータベース(今風の表現だとKey Value Store(KVS)ですね)として今でも使われていますが、そういう局面でも今はSQLiteのほうが人気があるかもしれませんね。SQLiteも当時から存在していましたが、現代のようにあらゆる局面で使われるほどではなかったですね。

+

「Ruby開発日記」は「メールリーダーの新アプローチ」です。当時使っていたcmailに見切りをつけて新しいものを自作しようという宣言なのですが、これがどうなったかというと、1年以上の構想期間を経て、3週間で基本部分を実装し、実は今でもそれを使っているのです。当時はmorgという名前にしようと思いましたが、名前の重複があったのでmorq(mail organizer using qdbm)という名前になりました。ちょうど本文で解説したQDBMを利用しているので、この記事に触発された完成されたと言っても過言ではありません。morqはオープンソースにしておらず、ユーザーは私一人です。

+
+
+

私はデータベースに関するプログラミングの経験があまりないので、リレーショナルデータベースなど使いこなせないのですが、今月はそんな私でも使える簡易データベースのDBMとその仲間を紹介します。

+
+
+

DBM

+
+

データベースといえば主流はリレーショナルデータベースです。オープンソースのものではPostgreSQLやMySQLが有名ですね。これらはテーブルに格納されたデータをSQL(Structured Query Language – 構造化問い合わせ言語)を使って操作するものです。RubyにもPostgreSQL, MySQL, それにInterbaseやOracleなどなど各種のリレーショナルデータベースを操作するライブラリが提供されています。

+
+

しかし、Rubyが得意とする日常的プログラミングでは、わざわざPostgreSQLのようなサーバー/クライアント方式のリレーショナルデータベースを用意するのは大げさと思われることもしばしばあります。そういう場合はテキストデータを使ってデータの処理を行うことが多いのですが、今度はデータ量が増えたときに毎回ファイルを開いて先頭から読み込んでいくのが耐えられなくなることもあります。

+

そういうケースでは、プレーンテキストよりも高速で、サーバー/クライアント方式のリレーショナルデータベースよりも手軽なデータの保存手段が求められているのです。

+

そのような手段はいろいろ考えられますが、1つの解としては、SQLiteのようなサーバー/クライアント方式でないリレーショナルデータベースを導入することがあります。SQLiteはライブラリ形式のリレーショナルデータベースで、直接ファイルに読み書きを行います。名前にもあるようにSQLも使えますし、性能もそれなりに出るようです。これはこれで面白い方法なので、また別の機会に解説したいと思っています。

+

もう1つの解が今月紹介するDBMです。DBMは昔からUNIXで提供されているデータベースで、その名前はDataBase Managerの略のようです。そのまんまですね。DBMはリレーショナルなんて高度な演算は行いませんし、SQLもありません。データはハッシュの形で管理します。キーに対応する値を取り出す、それだけです。

+

RubyのDBMインターフェイスでは、DBMクラスのオブジェクトはHashとほぼ同じメソッドを持ち、ほとんど同じように使えます。違いは? というと、DBMはファイルに関連付けられていて、格納したデータはプログラムが終了してもファイルに保存される(だからこそ「データベース」である)ことと、DBMではキーも対応する値も文字列でなければならないという点です。

+

リレーショナルデータベースのようにSQLによる問い合わせもできず、ハッシュのような任意のオブジェクトの格納もできない制限の強いDBMですが、使いにならないかというとそうでもありません。DBMの構造はリレーショナルデータベースのテーブルよりも単純ですが、簡単なインデクシング(1対1の関連)の扱いはむしろ簡単です。複数の値を対応させたい場合にも、値を文字列にパックすることで実現できます。Rubyにはpackメソッドやunpackメソッドがありますから、このような目的には便利です。

+
+
+

RubyのDBMインターフェイス

+
+

RubyのDBMインターフェイスが提供するクラスはHashクラスとほぼ同じです。簡単な使用例をリスト39.1に示します。

+
+

リスト39.1●DBM使用例

+
require 'dbm'
+
+d = DBM.open("/tmp/bark")
+d["dog"] = "bow"
+d["cat"] = "mew"
+puts d["cow"]
+d.close
+
+
+

前後にopencloseがある以外は、ハッシュと同じように使えることがわかるでしょう。

+

Rubyには3つのDBMインターフェイスが標準添付されています。

+ +
+

dbm

+

そのプラットフォームで使えるDBMライブラリ(ndbmまたはgdbm)を使った標準的なdbmライブラリです。ほとんどのプラットフォームで使えますが、利用しているライブラリが異なる可能性があるので、プラットフォーム間のデータ互換性はありません。

+

gdbm

+

GNU dbmライブラリのインターフェイスです。gdbmがインストールされているプラットフォームで有効です。gdbmは多くのndbmライブラリよりも高性能ですし、ndbmライブラリに対していくつかの機能が追加されています。

+

sdbm

+

dbmgdbmはプラットフォームに何らかのdbmライブラリがインストールされていなければ利用できませんが、sdbmはパブリックドメインのDBMライブラリが添付されていますので、事実上すべてのプラットフォームで利用できます。しかし、欠点もあって、sdbmはあまり性能に恵まれず、そのうえデータベース中の各要素のサイズ(キーと値のサイズ合計)がわずか1Kバイトに制限されます。

+
+

日常的な使用にはgdbmを使うのがよいと思われます。DBMクラスの仕様を表39.1に示します。

+ +
+

表39.1●DBMクラス

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
クラスメソッド
DBM::open(path[,mode])DBをオープン(modeは権限値)
DBM類に共通のインスタンスメソッド
dbm[key]keyに対応する値
dbm[key]=valuekeyに対応する値をセット
dbm.clearDBを空にする
dbm.closeDBをクローズ
dbm.delete(key)keyに対応する要素を削除
dbm.each_key{|key,val|}keyに対する繰り返し
dbm.each_pair{|key,val|}DB要素に対する繰り返し
dbm.each_value{|key,val|}valueに対する繰り返し
dbm.each{|key,val|}DB要素に対する繰り返し
dbm.empty?DBが空のとき、真
dbm.fetch(key)keyに対応する値(不存在で例外)
dbm.has_key?(key)DBがkeyを含むか
dbm.has_value?(val)DBがvalを含むか
dbm.include?(key)DBがkeyを含むか
dbm.index(val)valに対応するキー
dbm.invert値からkeyへのハッシュ
dbm.key?(key)DBがkeyを含むか
dbm.keysDB中のキーの配列
dbm.lengthDB中の要素数
dbm.reject!{|key,val|}条件が真の要素を削除
dbm.replace(hash)DBをhashの内容で置換
dbm.shiftDBから任意のキーと値を取る
dbm.sizeDB中の要素数
dbm.store(key,val)keyに対応する値をセット
dbm.to_aDBを配列化
dbm.to_hashDBをハッシュ化
dbm.update(hash)DBをhashの内容で更新
dbm.value?(val)DBがvalを含むか
dbm.valuesDB中の値の配列
dbm.values_at(key, ...)key, ...に対応する値の配列
gdbm固有のインスタンスメソッド
dbm.cachesize=nキャッシュサイズの設定
dbm.fastmode=boolfastmodeの設定
dbm.reorganizeDBをハッシュ化
dbm.sync同期
dbm.syncmode=bool同期モードの設定
+
+

DBM」の部分を「GDBM」「SDBM」に変えることで、それぞれgdbmsdbmに対応できます。

+
+
+

DBMの制限の回避

+
+

すでに述べたように、DBMの最大の制限は「キーも値も文字列しか取れない」ことです。キーのほうは文字列限定でもさほど困ることはありませんが、1つのキーにレコードを対応させたいケースはたびたびあります。

+

このような場合の回避方法はいくつかあります。1つはデータを文字列にpackする方法です。Arrayメソッドにはpackというメソッドがあって、配列の要素をテンプレートに従い文字列化することができます。同じテンプレートをStringクラスのunpackメソッドに渡すことで逆に配列に戻すことができます。たとえば、8ビット整数4つをpackするにはこのようにします。

+
+
packed = [192,168,0,1].pack("CCCC")
+
+

逆にunpackはこうです。

+
+
p packed.unpack("CCCC")  # => [192,168,0,1]
+
+

C”はchar(文字)の意味で、符号付き8ビット整数を意味します。テンプレート文字の後ろに数字を置くと繰り返し、または長さ指定になります。ですから、“C4”は“CCCC”と同じ意味です。pack, unpackのテンプレート文字を表39.2に示します。

+
+

表39.2●packテンプレート

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
文字説明文字説明
@絶対位置への移動llong
AASCII文字列(スペースを詰める, 長さ指定)MQ-encodingされた文字列(RFC2045)
aASCII文字列(nulを詰める、長さ指定)mbase64された文字列
Bビットストリング(上位ビットから下位ビット)Nビッグエンディアンのlong
bビットストリング(下位ビットから上位ビット)nビッグエンディアンのshort
Cunsigned charP構造体(固定長文字列)へのポインタ
ccharpナル終端の文字列へのポインタ
D, ddouble(機種依存)Q, q64-bit number
Eリトルエンディアンのdouble(機種依存)Sunsigned short
eリトルエンディアンのfloat(機種依存)sshort
F, ffloat(機種依存)UUTF-8文字列
Gビッグエンディアンのdouble(機種依存)uuuencodedされた文字列
gビッグエンディアンのfloat(機種依存)Vリトルエンディアンのlong
H16進文字列(下位ニブルが先)vリトルエンディアンのshort
h16進文字列(上位ニブルが先)wBER圧縮された整数
Iunsigned intX1バイト後退
iintxnullバイト
Lunsigned longZASCII文字列(nullを詰める)
+
+ +

パックテンプレートを見るとわかるようにpackで扱えるデータタイプは整数や文字列のような基本的なデータタイプだけです。より複雑なデータを文字列化するためにはMarshalを用います。Marshalはオブジェクトを文字列化します。

+
+
pack = Marshal.dump(obj)
+
+

たったこれだけで、オブジェクトを文字列化することができます。文字列からオブジェクトを取り出すのも同じくらい簡単です。

+
+
unpack = Marshal.load(pack)
+
+

とても簡単なMarshalですが、注意すべき点がいくつかあります。

+
+

最後にYAMLを紹介しておきます。これはMarshalが用いているバイナリフォーマットの代わりにYAMLというデータ記述言語を用いるものです。使い方は以下のとおりです。

+
+
require 'yaml'
+pack = obj.to_yaml   # => YAML化した文字列
+
+unpack = YAML::load(pack)
+
+

たとえば配列[1,2,3]をYAML化すると以下のようになります。

+
+
--- 
+- 1
+- 2
+- 3
+
+

先頭の“”がYAMLの始まりを、“- ”が配列の各要素を意味します。

+

YAMLMarshalとほぼ同じ制限がありますが、Marshalと違ってプレーンテキストを用いたフォーマットですから、(少々効率は落ちるものの)バージョン依存性が低く、また出力されたデータを人間が見て理解することができます。

+
+
+

Berkley DB

+
+

標準添付のDBMよりも高機能のDBMライブラリとして、Sleepycat(http://www.sleepycat.com/)からBerkeley DBというライブラリが提供されています。BDBはDBMの後継に当たるライブラリで、DBMに対して以下の機能が追加されています。

+
+

また、BDBのほうが各種DBMよりも性能が上回ることが多いようです。BDBはスパムフィルタのBogofilterやバージョン管理システムのSubversionなど多くのアプリケーションで利用されています。

+

RubyのDBDインターフェイス(bdb)は、フランス人RubyハッカーであるGuy Decouxによって開発されています。原稿執筆時点での最新バージョンは0.5.0です。bdbについての情報は、

+
    +
  • http://moulon.inra.fr/ruby/bdb.html

  • +
+

から入手できます。Guy Decouxはruby-talkメーリングリストに古くから参加しているのですが、

+
    +
  • すごく革新的なプログラムを次々開発する

  • +
  • Rubyの内部にすごく詳しい。下手すると私より詳しい

  • +
  • あんまり英語が得意でない

  • +
  • 誰も彼に直接会ったことがない

  • +
+

と謎の多い人物です。彼によって開発されたプログラムには、RAAに登録されているものだけでも、

+
    +
  • bdb

  • +
  • bdb1(Berkeley DB version 1.8用)

  • +
  • bz2(ファイル圧縮ライブラリlibbzインターフェイス)

  • +
  • mmapmmapファイルをアクセスする)

  • +
  • pl-ruby(PostqreSQLでサーバーサイドRuby)

  • +
+

があります。それ以外にも、

+
    +
  • ii(Rubyの構文木を出力)

  • +
  • 未公開のマルチメソッド実装(同じ名前で引数の型が異なる複数メソッドを実現する改造版Ruby)

  • +
+

があり、最後のものは何度お願いしてもコードを見せてもらえませんでした。やっぱり謎だ。

+
+
+

QDBM

+
+

BDBとは別の方向で強化されたデータベースライブラリがQDBMです。QDBMの作者は平林幹雄さんで、原稿執筆時点での最新バージョンは1.8.12です。

+

QDBMの特徴は高性能と高機能です。QDBMのホームページ(http://qdbm.sourceforge.net/)によると、QDBMはgdbmなどよりも数倍高速なのだそうです。またQDBMは移植性も高く、LinuxやWindowsを始めとして多くのプラットフォームで動作します。

+
+

QDBMは機能としては、

+
    +
  • 基本API(Depot)

  • +
  • 大容量向けAPI(Curia)

  • +
  • ndbm互換API(Relic)

  • +
  • gdbm互換API(Hovel)

  • +
  • ユーティリティAPI(Cabin)

  • +
  • B+木API(Villa, Vista)

  • +
  • 転置インデックスAPI(Odeum)

  • +
+

が提供されます。これらのライブラリの名前は5文字の英単語から適当に選んだので意味はないそうです。

+

基本APIのDepotは最も高速に動作します。Depotはハッシュのインデックス部分をmmapシステムコールを用いてRAM上に置くため、高速に動作します。Curiaは大量データに対応するため、データベースをディレクトリ中の複数のファイルで構成します。32ビットOSでは2Gバイト以上のサイズのファイルを取り扱うことができませんが、Curiaを用いることで64ビットOSに移行することなく2Gバイトを超えるデータを扱うことができます。

+

互換APIのRelicやHovelを利用すると既存のDBMを用いたアプリケーションを簡単にQDBM対応に変更することはできます(データベースファイルの互換性はありません)。

+

Cabinはデータベースとは直接関係ないユーティリティを集めたAPIです。QDBMの上位API(VillaやOdeumなど)はこのユーティリティを活用して実装されています。

+

VillaはB+木を提供するAPIです。B+木は順序のあるデータベースで、範囲を指定した検索や部分一致検索を行うことができます。また、Villaはトランザクション機能を持ちます。

+

Odeumが提供する転置インデックス(Inverted Index)は、全文検索で用いられる技術です。Odeumは全文検索エンジンの基本的機能を提供しますから、アプリケーション側ではテキスト解析やユーザーインターフェイスなどを実装するだけで、比較的簡単に全文検索エンジンを作ることができます。Odeumは平林さん自身が作られたパーソナル検索エンジンEstraierで用いられています。

+
+
+

QDBMのRubyインターフェイス

+
+

QDBMには作者自身の手によるC, C++, Java, Perl, RubyのAPIが用意されています。残念なことにC以外の言語では提供されるのは、Depot, Curia, VillaだけでOdeumなどの興味深いAPIは直接使うことができません。

+

しかし、単に高速でスケーラブルなDBMとして使っても十分に有効だと思います。QDBMインターフェイスを使ったサンプルをリスト39.2に示します。

+ +
+

リスト39.2●QDBMサンプル

+
require 'depot'  # depotを使う
+
+name = ARGV[0]
+begin
+  # optionは「書き込み可能、データベースがなければ作成」
+  Depot.open("addr", Depot::OWRITER|Depot::OCREAT){|depot|
+    puts name
+    puts depot[name]
+  }
+# Depotの例外はDepot::EANYのサブクラス
+rescue Depot::EANY => e
+  puts e.message
+end
+
+
+

QDBMのRubyインターフェイスはスレッドを考慮していますから、複数のスレッドから同時にアクセスしても平気です。

+
+
+

まとめ

+
+

さて、今月はSQLなどを使わない簡易データベースDBMとその仲間を紹介しました。DBMは複雑な条件検索はできませんが、アクセスパターンが1種類しかないようなデータベースに最適です。そしてそのようなデータベースはそれなりに多いものです。

+

実際、今月DBMを紹介しようと思ったのは、私が今作ろうとしているアプリケーションでQDBMを使うことにしたのがきっかけです。そのアプリケーションについては「Ruby開発日記」のほうで。

+

簡単、便利なデータベース、DBMを使ってみませんか。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-019.xhtml b/docs/vol2/xhtml/p-019.xhtml new file mode 100644 index 0000000..7958608 --- /dev/null +++ b/docs/vol2/xhtml/p-019.xhtml @@ -0,0 +1,49 @@ + + + + + +第39章 DBM + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆メールリーダーの新アプローチ

+
+

私が電子メールを日常的に使うようになってから、もう15年以上経ちます。最初は日に数通、それも日本語のものだけでした。あの頃は海外への接続は制限されており、高額な国際回線料の負担分配を明確化するために、海外にメールを出すためにはいろいろ面倒なことが多かったものです。当時は「いまだに鎖国しているようだ」と感じたものです。

+

それから10数年の間に、インターネットは一般化し、パソコン通信と呼ばれていたものはすべてインターネットに流れ込み、コンピュータだけでなく携帯電話からも電子メールのやりとりができるようになりました。それに伴い電子メールの数も飛躍的に増大しました。海外からもどんどんメールが入ってきます。

+

さらに悪いことに電子メールの世界にはスパムが蔓延まんえんしています。どこからアドレスを集めるのか知りませんが、毎日毎日数百通のスパムが送りつけられています。バイアグラだの、出会い系だの、もうけ話だの、もう勘弁してほしいです。

+

Rubyが世界中で使われ、海外のいろいろなところからメールをもらうことが増えたこと、また、「ruby-talkメーリングリスト」の流量が半端でなく増えたこともあって、私の1日に受け取る電子メールの量は10年前の100倍くらいになっているような気がします。スパムも含めれば1日1000通を超えることは珍しくありません。

+

以前(2004年6月号)でも紹介したように、私に届くスパムのほとんどはフィルタを使って除去していますが、それでも数百通は残ります。それらのほとんどは目を通すだけですが、返事を書く必要があるものも多く、中には今はいらないけど後から参照したいというようなものもあります。これだけメールが多くなると従来の方法での管理が難しくなってきました。

+

私が現在使っているメールリーダーはcmailです。Emacs上で動作するこのメールリーダーは、私自身がずっと手を入れてきたこともあって、もう10年以上愛用しているものです。しかし、ここ最近のメール量の増大に対応できなくなってきました。

+

最初の問題が動作速度です。cmailはすべてEmacs Lispで記述されたメールリーダーです。インタプリタであるEmacs Lispの実行速度はお世辞にも速いとはいえません。メールを分類しているフォルダに数千通もメールがたまるとただリストを表示するだけでも数分かかってしまうこともあります。これではメールを読むだけでもストレスです。

+

もう1つは、検索機能の弱さです。たまったメールの数が数万通を超えると通常の方法では探し出すことは困難です。「えっと、この件について以前誰かからメールをもらったよな」と思っても、ため込んでいる膨大な過去メールの中から必要な情報を引き出すことはなかなか困難です。結局、メール検索はあきらめて、Googleのようなインターネット検索に頼ることになってしまいます。手元に情報があるのに実にもったいない。

+

そんな不満を抱えつつも、私の望みをすべてかなえるメールリーダーにも巡り合えず、慣れたインターフェイスから移行する気にもならないまま日々を過ごしていたのですが、ある日、Gmailというサービスについて耳にしました。

+ +

GmailはGoogleが提供する新しいメールサービスです。その特徴はなんといっても一人当たり最大1Gバイトものディスク容量が割り当てられるということです。そして、1Gバイトもの容量から目当てのメールを見つけ出すために、Google得意の検索技術が活用されるということです。

+

なかなか画期的なサービスのように聞こえます。しかし、Webを使ったメールサービスはインターネットアクセスが使えなくなったときに困ります。出張中などインターネットにつなげない局面でもメールからデータを引き出したいのは自然な欲求です。やはり、大事なデータは手元に起きたいというのが心情です。その後、Gmailには広告を表示するためメールの内容を解析するのはプライバシーの侵害になるのではないかという懸念が広まるのですが、それはまた別の話です。

+

そういうニュースを読んでいたときに、ふと思い付きました。私の旧式のノートパソコンでも20Gバイトのディスクを載せ、まだ2Gバイトくらいは容量が残っています。ならばわざわざGmailに頼らなくても自前で検索ベースのメールリーダーを作ってしまえばよいのではないかと。

+

調べてみると過去にも検索をベースにしたメールリーダーはいろいろとあったようです。有名なものではOperaに付属するM2というメールリーダーが検索をベースにしていてるそうです。そのようなメールリーダーでは「フォルダ」の代わりに検索条件を指定してメールを絞り込んだりするようです。

+

しかし、私の環境で使えるオープンソースのものは見当たりません。特に私は文章をEmacs以外で書く気にはなりませんので、Emacsフロントエンドは必須です。なければ作るしかありません。なんか久々に大きなものを作る気になってきました。

+

そんなわけで、先日来新しいメールリーダーを設計しているのです。メールを読むというよりは管理するツールなので、「メールオーガナイザー」と読んでいます。愛称は「morg」にしようと思っていたら、そういう名前のオープンソースソフトウェアはすでにあるそうです。名前を決めるのも難しい時代になってきましたね。どんな名前にしようかなあ。

+

設計しているとはいっても、こればかりしているわけにもいかないので、作業は遅々として進まないのですが、それでも基本的な設計はできて、データベース部分についてはなんとか形になりそうです。

+

基本的にはQDBMのOdeumを利用して、パーソナル検索エンジンEstraierを参考にしながら実装しようと考えています。データベース部が完成したら、今度はEmacsフロントエンドです。Web日記でメールオーガナイザーの開発について紹介したら、「Webインターフェイスがほしい」などリクエストもいただいています。

+

というわけで、このところメールオーガナイザーのことをいろいろと考えています。予想以上に手間がかかって完成するのはまだまだ先になりそうですが、個人的にもぜひほしいツールなので口先だけにならないようにしたいと思います。

+

とかいって、あんまりこっちに熱中していると、本業やらRuby2の件やらおろそかになってしまうという難しい状況にあるのですが。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-020.xhtml b/docs/vol2/xhtml/p-020.xhtml new file mode 100644 index 0000000..003f730 --- /dev/null +++ b/docs/vol2/xhtml/p-020.xhtml @@ -0,0 +1,261 @@ + + + + + +第40章 tDiary + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay40 +
+

+探訪Ruby
+tDiary +

+
+

[Linux magazine, 2004年9月号]

+
+

今回はtDiaryの解説です。が、BlogだのWeb日記やらが低調となった現代ではあまりピンとこないですね。tDiaryの作者のただただしさんは「20年続くソフトウェア」という標語を掲げて開発していたと聞きますが、2024年でtDiaryは25周年だそうですから、目的は達成したと言っても過言ではないですね。わたしの日記はいまだにtDiaryですが、もうかなり長い間更新もしていません。Rubyは開発開始から30年以上経ちましたが、まだまだ健在です。もともと言語はソフトウェアの中でも寿命が長いジャンルではありますが。

+

「Ruby開発日記」は「挑戦! 言語塾」というタイトルで当時開設したばかりのlangsmithメーリングリストの話題です。このメーリングリストは、しばらくの間は続きましたがそのうち立ち消えてしまいました。その後も何度かこのようなコミュニティが立ち上がりましたが、なかなか続きません。協力して同じものを作るコミュニティは継続しやすいですが、それぞれが別々のものを作るコミュニティは続かないものなのかもしれません。

+
+
+

以前、Blogについて紹介したときに、さらりと触れたtDiaryですが、今月はこの「Rubyのキラーアプリ」とうわさされるtDiaryとその周辺について探検してみましょう。

+
+
+

tDiary

+
+

tDiaryは、ただただしさんによって開発されているWeb日記ツールです。tDiaryの「t」は「ただのt」であるとも、「ツッコミのt」であるともいわれていますが、確かなことはわかりません。余談ですが「ただただし」というのは本名だそうです。

+

日記ツールとしてのtDiaryの特徴は、

+
+
    +
  • ツッコミ

  • +
  • トラックバック

  • +
  • テーマ

  • +
  • スタイル

  • +
  • プラグイン

  • +
  • 多言語対応

  • +
+

などです。

+

「ツッコミ」とは要するにコメントです。「コメント」でなく「ツッコミ」と表現されているのは、「ちょっとした気の利いた短文を入れてほしい」という意味が込められているのだそうです。ですから、tDiaryでのツッコミは短く愛を込めたものが推奨されています。別にツッコミの長さの制限はないので、短いものしか許されないというわけではありません。

+

「トラックバック」は2004年3月号の本連載でも説明しましたが、トラックバック対応のサイト同士が、「あなたのことを話題にしましたよ」という連絡を行うための仕掛けです。新しい日記文を登録するときにトラックバック先のアドレス(Trackback Ping URL)を指定すると、そのURLを使ってtDiaryが自動的に先方のサイトに通知してくれます。もちろん、tDiaryもトラックバックを受け付けることができます。

+

「テーマ」はCSS(Cascading Style Sheet)を使ってサイトの外観を変更できる機能です。tDiaryはテンプレートを変更することなく、「テーマ」と呼ばれるCSSを取り換えるだけで外観を変更できます。テーマによって自分の日記の個性を表現することができますし、気分に合わせて日記の外観を変化させることも簡単です。tDiaryとともに配布されているテーマであれば、設定画面から簡単に選択できますし、そうでなくてもインストールは簡単です。tDiaryテーマはすでに200種類以上公開されています。また、tDiaryのテーマを理解するツールも数多くあります。たとえば、日記サイトの「はてな」、Wikiの「Hiki」などです。

+
    +
  • テーマギャラリー
    +http://www.tdiary.org/20021001.html

  • +
+

あまりにたくさんあるので選択するのが大変なくらいです。zphotoを使ったFlashによる選択ツールも便利です。

+
    +
  • http://tdiary2.tdiary.net/theme/zphoto.swf

  • +
+

サムネイル画像にカーソルを合わせるとイメージが拡大され、クリックするとサンプルページにジャンプします。

+

「スタイル」は日記文の入力フォーマットです。tDiaryのデフォルトでは、日記のフォーマットは簡易化されたHTMLです(表40.1)。

+
+

表40.1●tDiary HTMLフォーマット

+ + + + + + + + + + + + + + + + + + + + + + + + + +
入力フォーマット説明
空行セクションの区切り
セクション先頭サブタイトル
段落
<」で始まるセクション整形の対象外
<%= plugin %>プラグイン
+
+

その他にもWikiの記法を使うWikiスタイル、Ruby界ではよく使われているRDを使うRDスタイルなどが用意されています。もちろん私は自分が考案したRDを使うのが好みなので、RDスタイルを愛用しています。スタイル情報はエントリごとに記録されていますから、途中でスタイルを変更することも可能です。

+ +

「プラグイン」はtDiaryにさまざまな機能を追加するものです。上記のトラックバックなどもプラグインで実現されています。他にも以下のようないろいろな機能がプラグインで提供されています。

+
+

絵日記プラグイン

+

画像のアップロードと本文での表示を実現します。

+

Amazonアフィリエイトプラグイン

+

ISBNに対応するAmazon.co.jpの購入ページへのリンクを生成します。表紙の画像(書影)を取り込むこともできます。

+

脚注プラグイン

+

脚注を付けます。脚注はその日のエントリの下にまとめて表示されます。

+

リンク生成プラグイン

+

自分の日記のエントリへのリンクを簡単に生成します。

+

カレンダープラグイン

+

カレンダーを表示します。表示形式・機能によっていくつかのカレンダープラグインが存在します。

+

ToDoプラグイン

+

ToDoリストを管理します。

+

RSS出力プラグイン

+

最新のエントリのRSS(RDF Site Summary)を出力します。

+

コメントメールプラグイン

+

ツッコミが付いたときにメールで通知するプラグイン。qmail, sendmail, SMTPそれぞれに対応版があります。

+

最近のエントリ一覧プラグイン

+

最近のエントリのリストを表示するプラグイン。サイドバーに置くのが効果的です。

+

更新時刻表示プラグイン

+

日記を更新した時刻をグラフで表示してくれるプラグインです。人によっては生活パターンが明らかになってしまうかもしれません。

+
+

その他数多くのプラグインが開発されています。

+
    +
  • プラグインリスト
    +http://tdiary-users.sourceforge.jp/cgi-bin/wiki.cgi?PluginList

  • +
+

安定版ではtDiary 2.0から「多言語対応」が含まれるようになりました。1.4まではボタンやメニューなどの言語はデフォルトでは日本語に決め打ちでした。カスタマイズで英語などに変更することはできましたが、統一的な枠組みはなくそれなりに大変な作業でした。2.0からは設定1つで言語を切り替えられます。tDiaryの標準配布には、日本語(ja)、英語(en)、中国語(zh)のリソースが含まれています。韓国語などの新しい言語への対応も(その言語がわかれば)そんなに大変ではないでしょう。

+
+
+ +

tDiaryのインストール

+
+

原稿執筆時点でのtDiaryの最新版は、6月27日(たださんの誕生日)にリリースされた2年ぶりの安定バージョンである2.0です。入手先は、

+
    +
  • http://www.tdiary.org/20021112.html

  • +
+

です。tDiaryのインストールは、過去に何らかのWebアプリケーション(またはCGI)のインストールの経験があれば、難しいことはまったくありません。

+

Debianなどではパッケージになっていますが、ここでは自分のサイトにゼロからインストールする手順を説明します。まず、ソースを入手します。2.0のソースは、

+
    +
  • http://www.tdiary.org/download/tdiary-full-2.0.0.tar.gz

  • +
+

です。サイズは約1.7Mバイトあります。デフォルト以外のプラグインとテーマを除いた最少パッケージ(134Kバイト)もありますが、プラグインやテーマが使えなくてはtDiaryの魅力半減ですから、ここではすべてのプラグインとテーマを含んだフルパッケージをダウンロードします。

+

パッケージを展開したものをサーバーのホームディレクトリの「public_html」ディレクトリに転送した後は、

+
    +
  • ホームディレクトリに .htpasswdを用意

  • +
  • public_html.htaccessを用意

  • +
  • (CGIが書き込み可能な)データディレクトリの用意

  • +
  • tdiary.confにデータディレクトリの設定

  • +
+

をするだけで、基本的なインストールは完了です。後はブラウザで日記を表示させ、設定メニューから、プラグインやテーマなどを設定することができます。

+

トラックバックを使うためにはmisc/plugin/trackbackディレクトリにあるtb.rbpublic_html直下にコピーし、実行可能(chmod a+x tb.rb)にしておきます。

+

詳しいインストール方法は、

+
    +
  • tDiary FAQ
    +http://tdiary-users.sourceforge.jp/cgi-bin/wiki.cgi?FAQ#i1

  • +
+

を参照してください。

+
+
+

BlogKit

+
+

「Web日記」と「Blog」がどこが違うのか、という論争には加わりたくないのですが、MovableTypeを始めとするBlogツールとWeb日記ツールであるtDiaryとは、トラックバックなど共通の機能を持ちますが、記事の扱いで少しだけ差があります。

+
+

tDiaryは日記ツールですから、日が重要な単位になります。同じ日に複数の話題を書くとそれぞれはその日のエントリの中の1セクションになります。コメントやトラックバックも日単位です。一方、MovableTypeなどのいわゆるBlogツールではセクションに当たる1つの記事が1つの単位です。コメントやトラックバックなども記事単位で付きます。同じ日に複数のエントリを書いたとしても、それは「たまたま日付が同じである連続したエントリ」であるとしか扱われません。この辺が日記ツールとBlogツールの違いといるかもしれません。

+

tDiaryを使っていても、記事単位で扱いたいという要望はあると思います。特に同じ日に全然違った話題で複数のセクションを書いたときに、コメントが混ざってしまわないように、セクションごとにコメントやトラックバックを受け付けたいという希望を持つ人は多いような気がします。また、いわゆるBlogツールがほしいが、同時にtDiaryのテーマ機能やプラグインも利用したいという要望もあるでしょう。それらを解決するのがBlogKitです。

+

基本的な発想は、tDiaryの日付を他のBlogツールにおける記事番号として扱おう、というものです。記事の日付そのものは別に記録する「最終更新時刻」で表示します。

+

BlogKitを導入するとtDiaryの挙動が以下のように変化します。

+
    +
  • 日付が意味を持たなり、記事番号扱いになる

  • +
  • 記事に「最終更新時刻(Last-Modified)」が付くようになる

  • +
  • リスト表示時には、記事の最初のセクションだけサマリーとして表示される

  • +
  • 「更新」を選ぶと、自動的に空いている記事番号を割り当てる

  • +
  • Recent EntriesやWhat’s Newで更新情報が公開される

  • +
  • なにやら英語っぽい表記になる

  • +
+

これらの挙動の変化によって、tDiaryを「日記」に特化したツールを超えて、Blogツールとして扱うことができるようになります。

+

1日1つ以上のエントリを連続して入力すると「日付のように見える番号」が恐ろしい勢いで進んでいくことになりますが、まあ、気にしない、ということで。

+

BlogKitは、

+
    +
  • http://www.tdiary.org/download/tdiary-blogkit-2.0.0.tar.gz

  • +
+

から入手できます。「Rubyホームページ(http://www.ruby-lang.org/)」もtDiary+BlogKitで運用されています。

+
+
+

ツッコミメール

+
+

さて、インストールも完了し、tDiaryを運用できるようになったということで、tDiaryの利用をより便利にする小技をいくつか紹介しましょう。

+

まずはツッコミメール機能です。comment_mailプラグインを有効にすると、ツッコミが行われたときにメールが届きます。これは大変便利な機能ですが、このままでは、ツッコミした人の情報がログを見ないとわからないという不満があります。

+
+

困ったことがあれば自分で解決できるのがオープンソースのよいところです。そこでこの点も改善してみましょう。この改善はツッコミメールのテンプレート(skel/mail.rtxt)を書き換えることで行います。mail.rtxtはeRubyファイルでプラグインなどを使うことができます。私はリスト40.1のようなmail.rtxtを使っています

+
+

リスト40.1●mail.rtxt

+
From: <%= name %> <<%= mail %>>
+To: <%= receivers.join(', ') %>
+Date: <%= date %>
+Message-Id: <%= message_id %>
+Subject: <%= mail_header %>-<%= serial %> 
+<%= name %>
+MIME-Version: 1.0
+Content-Type: text/plain; charset="iso-2022-jp"
+Content-Transfer-Encoding: 7bit
+Errors-To: <%= receivers[0] %>
+X-Mailer: tDiary <%= TDIARY_VERSION %>
+X-URL: http://www.tdiary.org/
+X-REMOTE-ADDR: <%=TCPSocket.gethostbyname(ENV['REMOTE_ADDR'])[0] rescue ENV['REMOTE_ADDR']%>
+
+<%= body %>
+--
+<%= @conf.index =~ %r|^https?://|i ? '': @conf.base_url %><%= @conf.index.sub(%r|^\./|, '') %><%= anchor(@date.strftime('%Y%m%d') + ('#c%02d' % serial)) %>
+
+
+

追加されたのは、「X-REMOTE-ADDR」で始まるヘッダー部の最後の行です。内容はツッコミを書いた人のホスト名が表記されます。逆引きができなかった場合には、IPアドレスが表示されます。

+
+
+

tdiary-mode.el

+
+

私がtDiaryを選んだ理由の1つがtdiary-mode.elにより、Emacsで文章を書き、Emacsの中から文章をアップロードできることです。

+

そしてもう1つの理由が、文書フォーマットを選択することができ、RDを使うことができる点です。

+

ところが、tdiary-mode.elはtDiaryのデフォルトの文書フォーマットである「簡易HTML」に対応して、HTML文書の入力支援しか持っていません。RDの入力には不要なものばかりです。RD文書入力用にはrd-mode.elがありますから、tDiaryで日記を書くためにもぜひ利用したいものです。

+

なければ自分でできるのがオープンソースのよいところです。元Emacs Lispハッカーの私は、tdiary-mode.elを改造して、RD版tdiary-mode.elを作りました。これはtdiary-mode.elhtml-modeをベースにしているところを、rd-modeをベースにするように変更しただけのものです。

+ +

改造版tdiary-mode.elは573行もありますから、ここにリストは載せられませんが、付録CD-ROMに収録してもらうことにします。RDでtDiaryを利用していらっしゃる人には利用価値があるのではないでしょうか。

+

このtdiary-mode.elはRDとHTMLが切り替えられないのが欠点です。私はRDしか使わないので困ってないのですが、誰か有志(勇士)がよりよいものを作ってくださらないかと期待しています。

+
+
+

http.el

+
+

唐突に話は変わりますが、先日、www.ruby-lang.orgとして利用していたマシンがクラックされてしまいました。実質的な被害はなさそうだったのですが、改ざんがないことを証明できなかったので大変な思いをしました。ホスト管理者は大変な思いをして復旧していました。

+

そんなこともあるので、www.ruby-lang.orgとマシンを共有しているので、その影響を受けることになりました。tDiaryのアップデートもSSL経由のHTTPSでなければ行えないようになりました。Plain HTTP経由のBASIC認証ではパスワードが漏洩ろうえいする危険があるからです。

+

まあ、妥当な制限だと思いましたが、1つ困ったことが起きました。http.elがHTTPSに対応していないのです。http.elは、tdiary-mode.elがtDiaryの更新のために利用している小さな(127行)Emacs Lispプログラムです。http.elは簡易ブラウザとしてEmacsの中からWWWを呼び出すことができます。

+

困ったことがあれば、まず調査、そして自分で解決です。ちょっと調べた範囲内では、http.elをSSL対応にするコードは存在しないようです。しかし、ssl.elというプログラムがあって、SSLによるネットワーク接続を(opensslを使って)実現しているようです。

+

そこでまたハックです。

+

ssl.elを利用したちょっとした改造により、「https:」で始まるURLへのアクセスはSSL経由でアクセスするようになりました。改造したhttp.el(128行)もCD-ROMに収録しておきます。今回収録する各種プログラムのライセンスはGPLとします。

+
+
+

トラックバック

+
+

トラックバックはBlogや日記の間をつなぐ面白い仕掛けです。「あなたのエントリに言及しました」という連絡により、文章や発想が広がっていきます。

+

しかし、いかんせんトラックバックは面倒です。Permalink(エントリに対応する恒常的URL)を開き、Trackback Ping URLをコピーし、自分のページの更新ページにそれをペーストするのは、結構な手間で、思わず「そんなことするくらいならトラックバックは止めよう。リンク元解析で見つけてくれるよ」と感じてしまいます。

+

しかし、私は間違っていました。トラックバックには「Trackback Auto-Discovery」という仕様があって、エントリにRDFでPing URLを含めることができるのでした。後は適切なツールでそれを抽出するだけです。無知は罪ですよね。

+
+

抽出するにはBookmarkletを使います。Bookmarkletとは、ブックマークのURL欄に登録しておく小さなJavascriptプログラムです。Javascript対応のブラウザでは、ブックマークから選択することで、現在表示中のページに対してJavascriptプログラムを起動することができます。

+

Trackback Ping URLを抽出するBookmarkletをリスト40.2に示します(すべて1行です)。

+
+

リスト40.2●trackback bookmarklet

+
javascript:document.getElementsByTagName( "html" )[0].innerHTML.match(/trackback:ping=[\'\"](http.+)[\'\"]/i);var pingUrl = RegExp.$1;location.href = 'http://YOURSITE/update.rb?plugin_tb_url='+escape(pingUrl);
+
+
+

JavaScript対応のブラウザで新規ブックマークの登録を行い、そのURL欄にリスト40.2の内容を登録します。リスト40.2YOURSITEの部分は自分の日記のURLに変更してください。ブックマークのタイトルは適当に「Trackback」とでもしておくとよいでしょう。Trackback Auto-Discoveryに対応したページを表示中にこのBookmarkletを起動すると、Trackback Ping URLが入力された状態で日記の更新ページにジャンプします。

+

tDiaryのトラックバック対応はTrackback Auto-Discoveryに対応しています。その他、MovableType他多くのBlogツールが対応していますので、このBookmarkletは使いでがあると思います。私も以前よりもトラックバックを打つことが多くなったような気がします。

+

このtrackback bookmarkletもtrackback.jsとしてCD-ROMに収録しておきます。

+
+
+

まとめ

+
+

今月はWeb日記ツールtDiaryを改めて紹介してみました。こうして「困ったこと」を解決していくたびに思うのは、「オープンソースってありがたい」ってことです。商用ツールではなかなか自分で解決というわけにはいきません。問題を解決してそれを公表することで、他の人を助けることもできるようになります。

+

開発者から見たtDiaryの醍醐味は、やはりプラグインでどんどん機能を拡張できる点でしょう。機能を追加することでtDiaryがますます使いやすくなります。日記を書くことよりも機能を追加することのほうが楽しくなるという本末転倒な結果になってしまうケースもありますが、趣味なんだからよしとしましょう。プラグインプログラミングはRubyの入門にも向いていそうです。近いうちにtDiaryプラグインプログラミングについても探検してみたいと思います。

+
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-021.xhtml b/docs/vol2/xhtml/p-021.xhtml new file mode 100644 index 0000000..5c40d79 --- /dev/null +++ b/docs/vol2/xhtml/p-021.xhtml @@ -0,0 +1,54 @@ + + + + + +第40章 tDiary + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆挑戦! 言語塾

+
+

以前にも書いたような気がしますが、プログラミング言語というものはコンピュータサイエンスの中でも「総合芸術」とでも呼ぶような存在です。

+

プログラミング言語の文法はユーザーインターフェイスにつながるものがありますから人間工学や心理学と関連のある領域です。また、コンパイラやインタプリタなどの処理系の実装は、数学的バックグラウンドを必要とする理論的な背景があります。それからライブラリの実装には各種アルゴリズムやデータ構造に関する知識が要求されます。

+

ものづくりが好きでコンピュータとプログラミングを愛する人にとって、プログラミング言語というのは非常に挑戦的なエキサイティングな分野なのです。しかし、「普通」のプログラマーにとって言語は「ありき」として存在するもので、自分で設計したりするものではないようです。まあ、そう思うのは自然だと思いますけどね。

+

しかし、私はコンピュータに触れ始めた少年時代にこのプログラミング言語の魅力に取りつかれ、それ以来ずっと「いつかは自分の言語を作りたい」と思い続けてきました。また、機会あるごとにいろんな言語の文法や仕様を調べたり、処理系のソースを読んだりするようなことを続けてきました。Pascal, C, Lisp, Smalltalkなどなど。今から約10年前にRubyを作り始めたときには、それまでに得てきたそのような知識が役に立ちました。

+

少年時代から、自分自身のことをコンピュータに関しては変わり者であると自覚していましたから(その他の分野でも変わり者だったかもしれません)、そんなふうに言語を作りたがるのは私くらいなものだろうと考えていたのですが、ここ数年、「Rubyの作者」として名前が知られるにつれて、あいさつとして「実は私も言語を作りたいと思ってるんです」という言葉をたびたび聞くようになりました。どうやら単なる社交辞令というだけでもなさそうです。

+

そうなんです。自分のプログラミング言語が作りたいと子供のときから思い続けてきた私は確かに変わり者かもしれませんが、似たような「自分言語を作ろうと考える変わり者」はまだまだたくさんいるのです。We are not alone.

+

とはいえ、言語を作りたいと思っている人の数ほどには、言語は存在していないようです。これは「作りたいなあ」と思っていながらも、実際には構想だけで終わる例がとても多いということではないでしょうか。また、数少ない「自分言語」も、広く使われるようなものはごく少数です。

+

このような構想倒れについて考察すると、いくつかの原因が思い当たります。

+

まず、第一には熱意が持続しないという点です。私自身もRubyの前に作ろうと思った言語は1つや2つではありません。しかし、考えているうちにアイデアに穴があったり、それほど優れているとは思えなくなったり、ただ単に飽きてしまったりなどいろいろな理由で実現には至りませんでした。1つの言語を作るのには長い時間が必要です。その時間をいかに「耐える」のか、というのが鍵になりそうです。

+

もう1つの理由は、プログラミング言語とその処理系の実装に必要な知識の領域が幅広いことのように思います。先に「総合芸術」と言いましたが、これは見方を変えれば「敷居が高い」ということでもあります。言語設計に必要なさまざまな領域の知識を身につけるのは、趣味の個人としては少々荷が重いかもしれません。

+
+

他にも、プログラミング言語のデザインは通常のソフトウェアとは少々趣(おもむき)が異なることなどもあるように思います。

+

しかし、このような障害を乗り越えてしまえば、プログラミング言語のデザインはとても楽しいものです。少なくとも私にとってはそうです。プログラミング言語を作るということは、プログラミングの1つの世界を作り出すような創造性にあふれた作業です。

+

このような言語を作ることの楽しさを感じてもらうため、同じような志を持つ仲間と励まし合ったり、先達やさまざまな領域の専門家と意見交換したり、言語のデザインそのものについて話し合える場があれば、未来の言語設計者に役立つのではないかと考えました。

+

そこで、そんな場としてとりあえずメーリングリストを作ってみることにしました。メーリングリスト名は「言語鍛冶」「言語職人」というニュアンスを込めて「langsmith」という名前にしました。

+

アドレスは、<langsmith@quickml.atdot.net>です。アドレスを見ただけでもわかるようにQuickMLで運営されていますので、メールを出すだけで参加できます。参加希望者は、私のアドレス<matz@ruby-lang.org>にCCして、上記のアドレスにメールを送ってください。最初のメールには簡単な自己紹介を含めてくださるとよいでしょう。

+

原稿執筆時点でのlangsmithメーリングリストの参加者は55名です。

+

まだ、langsmithメーリングリストは始まったばかりですが、すでに「私の言語にこれこれの機能を導入しようと思うが、意見が聞きたい」とか、「こういう目的の言語に望ましい性質は何か」などの非常に興味深い意見の交換が行われています。

+

langsmithメーリングリストのログは以下で参照できます。

+
    +
  • http://www.atdot.net/~ko1/w3ml/w3ml.cgi/langsmith/

  • +
+

langsmithメーリングリストに参加したから、すぐに言語が作れるようになるとは私も考えていません。しかし、まず「プログラミング言語ってのは自分好みのものを自由に作ってもよいんだ」という意識を持つことが大事なんじゃないかなあって思います。また、一人じゃできないことも何人かが助け合えば可能になるってこともありえるんじゃないかと希望しています。

+

最初はおもちゃのようなものでも、「自分の言語」を作り出し、改良していけるようになっていけば、世界が広がるんじゃないかと思います。そしてそんな言語がたくさん生まれてくれば、プログラミング言語の裾野が広がり、影響を与えあって、今までにないすばらしい言語が登場するかもしれません。中にはRubyのあとに続いたり、広く世間で使われるメジャーな言語が登場してくるかもしれません。

+

そんなふうになって、プログラミング言語を取り巻く世界が広がって、よりよいものになればよいなあと考えているのです。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-022.xhtml b/docs/vol2/xhtml/p-022.xhtml new file mode 100644 index 0000000..b33cc6a --- /dev/null +++ b/docs/vol2/xhtml/p-022.xhtml @@ -0,0 +1,362 @@ + + + + + +第41章 Webアプリケーションの基礎 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay41 +
+

+探訪Ruby
+Webアプリケーションの基礎 +

+
+

[Linux magazine, 2004年10月号]

+
+

Webアプリケーションの基礎、特にHTTP, CGI, FastCGI, mod_rubyについて紹介しています。FastCGIやmod_rubyは現代では使われていませんが、CGIの仕組み(渡される情報)は現代のWebアプリケーションにもほとんどそのまま引き継がれています。

+

「Ruby開発日記」は2004年に開催された「Lightweight Language Weekend」についてですね。このイベントは2003に第1回(Lightweight Language Saturday)に始まり(第1回のレポートは本書第29章にちょっとだけあります)、この「Weekend」は2回目になります。LLイベントは途中で「Learn Language」と名前を変えて(途中中断をはさみつつ)継続し、2023年には20周年を記念するイベントも開催されました。20周年イベントでは私も含めた第1回のスピーカーが登壇し、懐かしい思いをしました。

+
+
+

今月から数回Webアプリケーションプログラミングについて学ぼうと思います。今月はその基礎編です。

+
+
+

Webアプリケーションプログラミング

+
+

正直、私自身がWebプログラミングについての経験が足りないので、本連載で解説するのを避けてきたのですが、現実問題、WebプログラミングはRubyの重要な適用分野です。いつまでも避けているわけにもいきません。

+

そこで今月から数回は自分でも学びつつ、Rubyで楽しいWebプログラミングを目指すことにします。

+

ところで、同様の理由で避けてきた分野として、GUIプログラミングとデータベースプログラミングがあります。これらも大変重要なテーマですから、Webプログラミングについての解説が片付いたら、これらも皆さんと一緒に学んでいこうと思います。

+
+
+ +

WWW

+
+

WWW(World Wide Web)はもともとCERNで開発された相互リンクした技術文書を参照する手段でした。文書間のリンクが世界中をクモの巣(Web)のようにつなぐありさまをもってWWWと名付けられました。

+

WWWが最初に登場した時点では、その基本となる技術は、

+
    +
  • 相互にリンクした構造を持つ文章を記述する手段としてのHTML(Hyper Text Markup Language)

  • +
  • 各所のサーバーに分散した、HTMLで記述された(ものばかりとは限らないけど)文書を指定する手段であるURL(Unified Resource Locator)

  • +
  • URLで指定した文書をネットワーク経由でサーバーから取り出すためのプロトコルであるHTTP(Hyper Text Transport Protocol)

  • +
+

でした。ですから、基本的には静的な文章を表現する手段だったわけです。しかし、ページの内容を動的に生成する技術が登場したときに、WWWは新しい局面を迎えることになります。

+
+
+

HTML

+
+

HTMLについては今さら説明する必要はそれほどないかもしれません。HTMLはSGMLと同じ構造を持つ文書フォーマットです。特徴は誰でも知っている <HTML> ... </HTML> という対になったタグです。SGMLから受け継いだこのタグフォーマットは、さらにXMLに受け継がれて増殖中です。

+

HTMLは基本的に文書の構造(「見出し」とか「箇条書き」とか)を表現します。しかし、構造だけでなく、フォントの大きさや色などに代表される「見栄え」も指定できてしまう柔軟性(悪くいえばいいかげんさ)を備えています。

+
+
+

URL

+
+

WWWの基礎技術のうち、URLほど広く目にするものはないかもしれません。今や、テレビのCMや広告のポスターにURLが含まれることは珍しくありませんし、お店で買ってきた商品のラベルにもURLが印刷されています。ラジオをつければ頻繁に「エイチティーティーピーコロン……」というくだりを耳にします。URLはときどき「インターネットアドレス」と呼ばれるようです。文書やサイトを示すアドレスであるという意味からは間違っているわけではありませんが、なんか違和感があります。

+
+
+

HTTP

+
+

URLやHTMLほど人目に触れないのがHTTPです。HTTPはWWWクライアント(WWWブラウザ、Internet ExplorerやMozillaなど)とWebサーバーの間の通信のフォーマットです。

+

HTTPはインターネットの他のプロトコルと同様にテキストベースのプロトコルです。また、その通信内容の構造は電子メールとほぼ同じになっています。HTTPの通信内容はステータス行、ヘッダーとボディからなります。ステータス行は通信の先頭行であり、通信種別を示す情報を含んでいます。ヘッダーは、

+
+
+
フィールド名: 内容
+
+

という行が並んだものです。たとえば、ボディの内容を表す部分は、

+
+
Content-Type: text/html
+
+

のようになります。ヘッダーとボディとの間は空行で区切られています。ボディ部は任意のデータで、そのデータのフォーマットなどの情報はヘッダーに含まれています。サーバーからクライアントへのHTTP通信内容の例をリスト41.1に示します。

+
+

リスト41.1●HTTP通信

+
HTTP/1.1 200 OK
+Date: Fri, 13 Aug 2004 06:50:56 GMT
+Server: Apache/1.3.31 (Debian GNU/Linux)
+Last-Modified: Fri, 13 Aug 2004 06:50:40 GMT
+Content-Length: 76
+Content-Type: text/html; charset=iso-8859-1
+
+<html>
+<head><title>hello world</title>
+<body>
+Hello World!
+</body>
+</html>
+
+
+
+
+

CGI

+
+

さて、リクエストに応じて動的に情報を提供するための技術がCGI(Common Gateway Interface)です。CGIはHTTPによってリクエストを受けたサーバーが、サブプロセスとしてプログラムを起動し、そのプログラムの出力をそのままクライアントに返す仕組みです。この仕組みによって、クライアントからのリクエストに応じた動的な対応が可能になりました。

+

CGIではクライアントからの情報は、環境変数と標準入力を通じてサーバーからCGIプログラムに渡されます。プログラムの実行結果は標準出力を通じてサーバーに渡され、最終的にはその内容がクライアントに転送されます。環境変数も標準入出力も、UNIXでは一般的な情報の受け渡し方法ですから、これらを扱うことができればどんなプログラミング言語でもCGIプログラムを書くことができます。

+

CGIプログラムの実行は具体的には以下の手順で行われます。

+
    +
  1. まず、HTTPクライアント(WWWブラウザ)がHTTPサーバー(Apacheなど)にネットワーク経由でHTTPリクエストを送ります。クライアントはリクエストとして、要求するURLなどの情報を送ります。

  2. +
  3. クライアントから指定されたURLがCGIに対応するものであった場合、サーバーはいくつかの環境変数を用意し、CGIプログラムをサブプロセスとして起動します。HTTPリクエストがPOSTであった場合、リクエストに含まれる情報は標準出力を通じてCGIプログラムに渡されます。CGIプログラムに渡される環境変数のうち代表的なものを表41.1に示します。

  4. +
  5. CGIプログラムは、与えられた情報を元に実行を行い、標準出力にHTMLを出力します。何らかの理由で実行がうまくいかなかったときには終了ステータスとしてゼロ以外の数値を返します。

  6. +
  7. サーバーはCGIプログラムの出力を受け取り、必要に応じてHTTPプロトコルのヘッダーを追加して、その内容をクライアントに転送します。クライアントに渡される情報はURLで指定されるものが静的なファイルであっても、CGIの実行結果であっても違いはありません。

  8. +
+

CGIプログラムの実行の仕組みを図41.1に示します。

+ +
+

表41.1●CGIで渡される環境変数(代表的なもの)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
環境変数説明
AUTH_TYPE認証方式
CONTENT_LENGTHボディの長さ
CONTENT_TYPEボディのMIMEタイプ
GATEWAY_INTERFACECGIのバージョン
HTTP_ACCEPTブラウザが受信可能なMIMEタイプ
HTTP_ACCEPT_ENCODINGブラウザが受信可能な文字コード
HTTP_ACCEPT_LANGUAGEブラウザが受信可能な言語
HTTP_REFERER参照元ページのURL
HTTP_USER_AGENTクライアント種別
PATH_INFOURLの末尾のパス情報
PATH_TRANSLATEDPATH_INFOの実パス
QUERY_STRINGGETメソッドのデータ
REMOTE_ADDRクライアントのIPアドレス
REMOTE_HOSTクライアントのホスト名
REQUEST_METHODリクエストの種別(GET, POST, HEAD
SCRIPT_NAMECGIプログラム名
SERVER_NAMEサーバーのホスト名
SERVER_PORTサーバーのポート番号
SERVER_PROTOCOLHTTPのバージョン
SERVER_SOFTWAREサーバー種別
+
+
+ +
+ fig4101 +
+

図41.1●CGIプログラムの実行

+
+
+
+ +

CGIプログラム

+
+

では、簡単なCGIプログラムをRubyで書いてみましょう。CGIプログラムと言っても何も複雑なことはありません。ただ、環境変数などから情報を得て、標準出力に向けて出力する、それだけです。他のプログラムと何の違いはありません。環境変数や標準入出力の扱い、HTMLを始めとするテキスト操作などはRubyの得意分野です。

+

例題プログラムをリスト41.2に示します

+
+

リスト41.2●CGIサンプルプログラム

+
#! /usr/bin/ruby
+addr = ENV["REMOTE_ADDR"]
+client = ENV["HTTP_USER_AGENT"]
+
+print "content-type: text/html\n\n"
+print <<END
+<html>
+<head><title>hello world</title>
+<body>
+hello, it's #{Time.now.to_s}.<br>
+you are using #{client} from #{addr}.
+</body>
+</html>
+END
+
+
+

このプログラムの実行結果は図41.2のようになります。

+
+
+
hello, it's Fri Aug 13 23:40:25 JST 2004.
+you are using w3m/0.3.2+mee-p24-19+moe-1.5.0 from 127.0.0.1.
+
+

図41.2●CGIサンプル実行結果

+
+ +

これは単純なCGIプログラムをテキストブラウザで表示させた例なので貧弱な外見ですが、多くのWebアプリケーションの実装は、複雑に見えても同じ原理の延長です。

+
+
+

CGIの欠点

+
+

このようにCGIという仕組みを導入することで、WWWは単なる相互リンクされたファイルを参照する仕組みから、ネットワーク経由のアプリケーションを実現する仕組みへと進歩しました。これはすばらしい進歩だったと思います。

+

しかし、そんなCGIにも欠点があります。最大の欠点は性能です。CGIはクライアントからのリクエストを受け取るたびにCGIプログラムをサブプロセスとして起動します。サブプロセスの起動はOSにとってあまり軽いタスクではありません。アクセス頻度が数秒に一度程度なら何の問題もないのですが、アクセス頻度の高いサイトではCGIによるプロセス生成の負荷は馬鹿になりません。

+

もう1つの欠点は、レベルの低さです。CGIというのは動的なページを実現するための最低限の仕組みです。現代的なWebアプリケーションが備える機能(たとえば、セッション管理やユーザー管理、コンテンツ管理などなど)は提供されていませんから、各自が自分で実装するしかありません。

+

これらの欠点は解決不能ではありません。性能の問題はmod_rubyを始めとする「Apacheモジュール」や、FastCGIによって解決できます。また、レベルの低さはそれを補うライブラリやフレームワークを用意することで対応できます。

+

高レベルのWebアプリケーション用ライブラリやフレームワークについては来月以降紹介するとして、今月はCGIの性能問題をmod_rubyやFastCGIがどう解決するかを見てみましょう。

+
+
+

mod_ruby

+
+

HTTPサーバーの代表格であるApacheには、動的にリンクされるモジュールを使って機能を拡張することができます。実はApacheではCGIの呼び出しもモジュールによって実現されています。HTTPサーバーに機能が追加できるなら、インタプリタそのものをモジュールとしてApacheに取り込めばCGIプログラムをサブプロセスとして実行する必要はなくなるわけです。これでプロセス起動のコストを削減できます(図41.3)。

+
+ +
+ fig4103 +
+

図41.3●Apacheモジュールの実行

+
+ +

Rubyに対するApacheモジュールも提供されていて、mod_rubyと呼ばれています。mod_rubyに関する情報は、

+
    +
  • http://modruby.net/

  • +
+

から入手できます。入手方法やインストール方法については上記のサイトを参考にしてください。

+

mod_rubyを使った場合、CGIプログラムはApacheプロセス内部で直接実行されます。その結果として以下の点に注意する必要があります。

+
    +
  • グローバル変数が初期化されない。よって、前回のグローバル変数の値がそのまま残っている。ただし、前回実行されたスクリプトを特定することは困難なので残っている値を利用することは現実的でない。

  • +
  • また、通常、Apacheは同時に複数プロセスが動作してリクエストを待つので、情報共有のためにもグローバル変数は役に立たない。

  • +
  • requireでライブラリをロードするのは一度だけ。なので以前の実行でライブラリがすでに読み込まれていれば、ロードされないかもしれない。特にデバッグ時にライブラリを変更してもロードされない点に注意。

  • +
  • mod_rubyがCGIプログラムに提供するAPIは通常のCGI実行とはいくつか差がある。ただし、Rubyが標準で提供しているcgiライブラリはその差を隠蔽いんぺいしてくれる。

  • +
  • mod_rubyを利用中に妙なライブラリを利用するなどして、インタプリタそのものが誤動作するなどの問題が発生すると、Apacheを道連れに落ちることがある。mod_rubyへ移行はプログラムそのものが安定して動作するようになってからをお勧めする。

  • +
+
+
+

FastCGI

+
+

FastCGIはApacheモジュールとしてインタプリタを組み込んでしまうのとは別のやり方でプロセス起動を削減し、性能を向上させる仕組みです。

+

FastCGIの基本的な発想は、CGIプログラム1つ1つを小さなデーモン(あるいは常駐プロセス)にしたてることです。Apacheでは、この機能はやはりモジュール(mod_fastcgi)で実現されています。

+

mod_fastcgiはリクエストを受け付けると、

+
    +
  1. リクエストに対応する子プロセスがすでに起動しているかどうかを調べます

  2. +
  3. 起動していなければ、起動します

  4. +
  5. 子プロセスにリクエストを転送します。子プロセスは、(1) リクエストを受け付け、(2) 実際の処理を行う、というループになっている必要があります

  6. +
+

という手順で実行を行います。FastCGIの実行を図41.4に示します。

+
+ +
+ fig4104 +
+

図41.4●FastCGIの実行

+
+ +

FastCGIには、直接Apacheにインタプリタがリンクされるわけではないので異常事態に強い、というメリットがあります。また、mod_fastcgiとFastCGIプログラムの通信に用いられるFastCGIプロトコルを解釈できれば、任意のプログラミング言語でCGIプログラムを書くことができるということも重要なメリットです。

+

一方、実装されるプログラムごとにプロセスが常駐するので、プログラム数が多い場合には、モジュールを使ってインタプリタをリンクする場合と比較してプロセス数が増加するというデメリットがあり、またリクエストを受け付けては処理を行うループ構成となるようにCGIプログラムの書き換えが必要となることもデメリットです。

+

FastCGIについての詳細情報は、

+
    +
  • http://www.fastcgi.com/

  • +
+

から入手できます。Apacheモジュールmod_fastcgiについては、以下のページを参照してください。

+
    +
  • http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html

  • +
+

RubyからFastCGIを利用する場合には、MoonWolfさんがメンテナンスしているfastcgiライブラリを入手する必要があります。fastcgiライブラリはpure Ruby版とfastcgi.comから入手できるCライブラリをリンクしたC版が同梱されており、pure Ruby版の原作者はEli Greenで、C版の原作者は私(まつもと)です。

+
    +
  • http://www.moonwolf.com/ruby/archive/ruby-fcgi-0.8.4.tar.gz

  • +
+

コンパイルとインストールには添付のinstall.rbを使います。

+
+
+
% ruby install.rb config
+% ruby install.rb setup
+% sudo ruby install.rb install
+
+

fastcgiライブラリを使ったRubyプログラムはリスト41.3のような感じになります(fastcgiライブラリのREADMEから引用)。

+
+

リスト41.3●FastCGIサンプル

+
#!/usr/bin/ruby
+require "fcgi"
+
+FCGI.each_cgi {|cgi|
+  name = cgi['name'][0]
+  puts cgi.header
+  puts "You are #{name} " if name
+  puts "Connecting from #{cgi.remote_addr}"
+}
+
+
+

each_cgi”でFastCGIのループを構成しています。実際のプログラムでは、処理がすべてeach_cgiのループの中に入るようにします。

+

実はfastcgiライブラリはCGI実行にも対応していますので、リスト41.3のサンプルプログラムはCGIプログラムとしても動作します。将来、FastCGIに移行することが明らかな場合には最初からそのような書き方をするのも1つの方法です。

+

プログラムをFastCGIに対応させる場合にもう1つ注意すべき点は、FastCGI実行中のプログラムからはENVによる環境変数の参照が行えないことです。each_cgiから渡されるCGIオブジェクトにはCGIが環境変数として渡す情報がメソッドを経由して取得できますから、最初からそれらのメソッドを使って情報を得るようにしてください。

+
+
+

まとめ

+
+

今月はWebプログラミングの基礎と、CGIの性能上の欠点を解消する手段としてmod_rubyfastcgiを紹介しました。来月はもう少し「レベルの高い」Webプログラミングについて皆さんと一緒に学ぼうと思っています。

+
+
+ +

おまけ — RubyConf 2004

+
+

ところで、今年のRubyは10月1日からバージニア州のワシントンDCエリアで開催されます。残念ながら今年は私は参加できません。さすがに臨月の妻を置いて海外旅行はできませんでした。

+

私の代わりにはキーノートを発表してくれるのは、なんとObjective-CのデザイナーであるBrad Coxだそうです。私は彼の著書『オブジェクト指向のプログラミング』に大きな影響を受けた過去があるので、ぜひお会いしたかったので、ますます残念です。

+

皆さんの中で時間的・経済的に余裕のある方がもしいらっしゃれば、ぜひ参加されてはいかがでしょう。「達人プログラマー」たちを始めとする世界のRuby界を代表するような人物と直接コンタクトできるチャンスです。また、参加者には先着50名様まで、この秋出版されるPickaxe本ことProgramming Ruby 第二版を世界で最初にプレゼントされることが決まっています。例年、出席者は50名前後ですから、今からでも間に合うのではないでしょうか。参加を検討してみてはいかがでしょう。Ruby Conferenceについての情報は、

+
    +
  • http://www.rubyconf.org/

  • +
+

からどうぞ。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-023.xhtml b/docs/vol2/xhtml/p-023.xhtml new file mode 100644 index 0000000..f0145ec --- /dev/null +++ b/docs/vol2/xhtml/p-023.xhtml @@ -0,0 +1,109 @@ + + + + + +第41章 Webアプリケーションの基礎 + + + + +

Matz Essays Volume 2

+ + +
+

◆ Ruby開発日記 ◆ Lightweight Language Weekend

+
+

昨年「Lightweight Lightweight Saturday」と題して開催され、日本唯一の軽量言語専門イベントとしてすっかり定着した「Lightweight Language」が、今年はいっそうパワーアップして帰ってきました。今年は「Lightweight Language Weekend」というタイトルで8月7日(土)、8日(日) の2日にわたって、東京新宿区の日本電子専門学校を会場として開催されました。

+

昨年は土曜日のみの1日イベントでしたが、今年は「Weekend」の名のとおり、2日間にわたるイベントに成長していました。開催期間が延びただけでなく、出席者も順調に増加していました。出世魚のようです。この調子で成長すれば、来年は「Lightweight Language Week」、さらに将来には「Lightweight Language Month」とかにまで行くのではないでしょうか。

+ +

冗談はともかく、日本ではこの種のイベントを休日以外に行うのはまだまだ難しいようです。「LL Weekend」のようなマイナーな言語を含むイベントの場合、仕事として認知されることはまだまだ難しいのからでしょうか。

+

アメリカではRubyのようなマイナーな言語のカンファレンスでも、金曜午後から日曜午前までの間で開催しています。また、アメリカは日本のように一極集中していませんから、どこで開いても大変な距離の移動が必要な参加者がいて、平日開催以上に障害は大きいように思います。そんな状況下でもそれなりに参加者が集まるというのは、アメリカのIT業界の層の厚さを意味しているのでしょうか。

+

今年の「LL Weekend」のプログラムは表41.2のとおりです。自称「LLの専門家」として参加してきた私ですが、個人的な事情で1日目しか参加できませんでしたので、1日目を中心にレポートします。2日目については参加された方からうかがった内容を中心に報告します。

+
+

表41.2●LL Weekend プログラム

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
1日目: 8月7日 (土)
10:00〜12:00Language Update
13:00〜14:30LLを仕事に
15:00〜16:40君ならどう書く
2日目: 8月8日 (日)
10:00-10:10「その場でどう書く」課題発表
10:10-12:00LLとblog
13:00-14:00Lightning Talk
14:30-16:30その場でどう書く
+
+
+

Language Update

+

Common Lisp, Curl, Gauche, Groovy, Haskell, Perl, PHP, Pnuts, Python, Ruby, Squeakの各言語の近況を紹介するセッションです。「これは本当にLLなのか、と疑問の声があがる」とか、「Update以前に誰も知らないので紹介に終始してしまう」などという事態も発生しましたが、なかなか興味深いセッションでした。Curl, Gauche, Groovy, Haskell, Pnutsなどは知名度を高めるために一生懸命言語を紹介していました。宣伝に一番成功したのはGroovyだったような気がします。意外なのは海外では不動の地位を確立しているPythonがほとんどの時間を言語紹介に費やしたことです。Language Updateに限らずPythonは奮闘していました。世界的なPythonの広まりを考えると違和感ありまくりなのですが。

+

RubyのUpdateは私が紹介したのですが、コンピュータの調子が悪く、プロジェクターの画面が出ずに苦労しました。ここ数年、プレゼンのたびに苦労しているので「これはもうプレゼンはするな」という啓示かと愚痴っていたら「新しいコンピュータを買えってことじゃないですか」とツッコまれてしまいました。

+
+
+

LLを仕事に

+

アンケートの結果を元にBOF形式で語るセッションでした。

+

世間では仕事に使う言語としてはLLはほとんど認知されていなんだなあ、ということが実感できたセッションでした。というか、職業プログラマーの愚痴大会化していたような。皆さん、厳しい環境で我慢しておられるのですね。個人的にはもう少し住みよい環境を求めて流動化してもよいような気がするのですが。

+

あと、アンケートの引用から、Rubyユーザーの忠誠度の高さがうかがえました。Rubyってば愛されてるなあ。

+
+
+

君ならどう書く

+

デザインパターンを重視した「ls-lRシェル」と「nQueenゲーム」の2つのお題に各言語の代表者が挑戦するセッション。Ruby陣営は私の会社から前田修吾くんと、転職したばかりのかずひこくんを送り込みました。前者は言語の差よりも挑戦者の性格が出たような気がします。後者はSqueakが優勝でRubyは2位に終わりました。ちょっとテストが甘かったのが敗因のようです。ゲームとしては面白かったのですが、コードの中身まで踏み込めなかったのは残念でした。

+
+
+ +

LLとblog

+

BlogツールのほとんどはLLで記述されているので、各種Blogツール(日記ツール)の関係者による発表。技術的な話よりもBlogビジネスとかの話が中心になったようで、ちょっと残念かも。

+
+
+

Lightning Talk

+

制限時間5分でとにかく発表してしまうという「ライトニングトーク」です。今回は10人の人々が交代で話してくださいました。詳細はプログラムのページ、

+
    +
  • http://ll.jus.or.jp/llw2004/program.html

  • +
+

を参照してください。Rubyからは「日本Rubyの会」設立の発表と、次期Ruby VMと期待されているYARV(Yet Another Ruby VM)の発表がありました。

+
+
+

その場でどう書く

+

朝、発表になったお題に対して、午後までにプログラムを完成させて、それについて発表するというセッションです。今回のテーマはスケジュール管理のWebプログラムということでした。時間が短いこともあって苦労された人も多かったようです。たださんがtDiaryのプラグインを2行ほど修正して飛び入りしたりと、会場からの反響も大きかったようです。

+
+
+

まとめ

+

2日目の様子は伝聞なのですが、全体に荒削りながら楽しめるイベントであったようです。ただ、来年に向けて少々改善の余地はあるようです。個人的にはもっと技術面にフォーカスした内容を期待したいです。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-024.xhtml b/docs/vol2/xhtml/p-024.xhtml new file mode 100644 index 0000000..473bf31 --- /dev/null +++ b/docs/vol2/xhtml/p-024.xhtml @@ -0,0 +1,459 @@ + + + + + +第42章 Webアプリケーションの基礎 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay42 +
+

+探訪Ruby
+Webアプリケーションの基礎
(その2) +

+
+

[Linux magazine, 2004年11月号]

+
+

Webアプリケーションの基礎の解説、2回目です。今回はHTMLのフォームとCGIが中心です。現代のWebアプリケーション開発でも基本的な構成は継承していますが、さすがにフォームやCGIを直接使うことはなくなりましたね。あと、Webアプリケーションフレームワークも紹介していますが、個別の紹介は次章に任せます。

+

「Ruby開発日記」は「汝は人狼なりや?」ということで、人狼ゲームの紹介です。本文中でも紹介した人狼BBSですが、2020年1月31日いっぱいでサービス終了してしまいました。ログは今でも読めるので(2024年3月現在)、読み返すのも楽しいですね。

+
+
+

先月に引き続きWebアプリケーションの基礎になる部分を学びましょう。それから、Webアプリケーションの作成を簡単にしてくれるWebアプリケーションフレームワークの簡単な紹介を行います。

+
+
+

FormとGETとPUT

+
+

先月解説したように、CGIとはURLにプログラムを対応させて、動的にページを作り出す仕組みのことです。先月は「Hello World」という文字列と現在時刻を表示させました(リスト42.1)。

+
+

リスト42.1●CGIサンプルプログラム

+
#! /usr/bin/ruby
+addr = ENV["REMOTE_ADDR"]
+client = ENV["HTTP_USER_AGENT"]
+
+print "content-type: text/html\n\n"
+print <<END
+<html>
+<head><title>hello world</title>
+<body>
+hello, it's #{Time.now.to_s}.<br>
+you are using #{client} from #{addr}.
+</body>
+</html>
+END
+
+
+ +

しかし、「Webアプリケーション」と呼ばれるものはただ単にURLに対応するプログラムを起動すればよいというものではありません。実際にはユーザーからのさまざまな入力を受け付けます。CGIプログラムがクライアントからの入力を得るためにはHTMLのFORMを使います。

+

Linux magazineの読者の皆さんならば、Webブラウザ上でラジオボタンやリストボックス、テキスト領域などへの入力を行ったことがあると思います。HTMLではそれらを総称してFORM(フォーム)と呼びます。HTMLが提供するFORMには表42.1のようなコントロールがあります。

+
+

表42.1●HTML FORMのコントロール

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INPUTタグのtype属性説明
checkboxチェックボックス
fileファイルのアップロード
hidden非表示
imageイメージボタン
passwordパスワード(入力内容を「*」でマスク)
radioラジオボタン
reset入力のクリア
selectリストボックス
submit入力送信ボタン
text1行テキスト入力
textarea複数行テキスト入力
+
+

HTMLの入力要素は <FORM> タグの中で使います。<FORM> タグには以下のような属性を指定します。

+
    +
  • action

  • +
  • method

  • +
  • enctype

  • +
+

action」はそのフォームの中でsubmitボタンまたはイメージボタンが押されたときにリクエストが送られるURLです。

+

method」はGETまたはPOSTです。GETの場合にはパラメータはURLと一緒に渡されます。具体的には、

+
+
http://www.example.com/index.rb?foo=5&bar=10
+
+

という形式です。「index.rb」までがURL、「?」以降がパラメータになります。複数のパラメータの区切りには「&」が用いられます。また、特殊な意味を持つ文字(空白文字や「&」そのもの、全角文字など)は、「%」に続く16進二桁で表現します。たとえば空白は「%20」、チルダは「%7E」と表現されます。

+ +

一方、POSTではパラメータはHTTPリクエストのボディ部に格納されます(GETの場合は通常ボディ部は空)。パラメータは1行に1つずつ、「名前=値」という形式で渡されます。それと、ファイルアップロードの場合には「マルチパート形式」という方法で渡されるのですが、ここでは説明を省略します。

+

enctype」はリクエストのエンコーディング方法を示します。デフォルトは「application/x-www- form-urlencoded」です。通常は明示的に指定する必要はないでしょう。

+

ですから、リスト42.2のようなHTMLファイルがあれば、パラメータfoobarを与えて、CGIを起動することができます。

+
+

リスト42.2●FORMを使ったHTMLファイル

+
<html>
+<head><title>HTML FORM</title>
+<body>
+<form method="POST" action="http://www.example.com/update.rb">
+<!-- <input type="">で指定する -->
+<input type="checkbox" name="foo" value="1">1<br>
+<input type="checkbox" name="foo" value="2">2<br>
+<input type="checkbox" name="foo" value="3">3<br>
+<!-- selectはメニューリスト -->
+<select name="bar">
+<option value="東京">東京</option>
+<option value="東京">松江</option>
+<option value="東京">那覇</option>
+</select>
+</body>
+</html>
+
+
+
+
+

ステートレスなHTTP

+
+

CGIとHTMLフォームによって、ユーザーの入力を受け付け動的なページを生成できるようになりました。これにより、たとえば検索パターンを受け付けて、データベースをアクセスし、検索結果を返すようなWebアプリケーションを作ることができます。しかし、これだけでは、もっと複雑なWebアプリケーションを作るためにどうしても欠けているものがあります。それは同一クライアントからの一連のアクセスを1つのものとしてまとめる機能です。このような一連のアクセスのことを「セッション」と呼びます。

+

単純なデータベース検索のようなものを除けば、多くのWebアプリケーションは「状態」を必要とします。たとえば、ショッピングカートのあるインターネットショップを実現するWebアプリケーションでは、顧客が今までどのような商品をカートに入れたのかという「状態」を記憶しておく必要があるでしょう。あるいはアンケートを取るサイトでは、ユーザーが今までにどのような質問に答えたのかを記録する必要があるでしょう。これらを実現するためにはセッションが必要です。

+ +

HTTPは基本的にHTTPリクエストに含まれている情報だけでレスポンスの内容が決まり、アクセスの文脈などを考慮しないプロトコルです。このようなプロトコルのことを「状態がない」あるいは「ステートレス」と呼びます。ステートレスなプログラムは文脈を管理する必要がありませんから、実装も運用も楽だという利点がありますが、そのままではセッションを実現することができません。

+

そこでHTTPの上に何らかの「仕組み」を用意することでセッションを実現することになります。

+
+
+

セッションの作り方

+
+

では、どうやってセッションを実現すればよいでしょう。結局、一連のHTTPのやりとりに、これらを連続のものとして識別するIDを埋め込むことができればよいわけです。

+

サーバー側でIDを生成してクライアントに渡し、次のリクエストでそのIDを含むリクエストを渡してもらうためにはいくつか方法があります。

+

最初の方法はHTML FORMのhiddenフィールドを使う方法です。hiddenフィールドはHTML FORMの一部としてパラメータ渡しされますが、ブラウザ上では表示されないものです。表示されないということは、編集もされないのでサーバー側が渡した値をそのまま返すことが期待されます。サーバーがhiddenフィールドにセッション識別用のIDを渡せば、クライアントはその識別IDを戻してくれることが期待できます。これでHTTPリクエストが、HTTPレスポンスに対応することがはっきりわかります。HTTPレスポンスとHTTPリクエストの間の関連付けができれば、連続するやりとりすべてをセッションとして管理することが可能です。

+

hiddenフィールドを使ってセッションを実現するときには、HTML FORMのactionにはGETを選択するべきではありません。GETではパラメータがすべてURLに埋め込まれるため、他人が簡単にセッションIDを入手することができます。POSTにすればすべて解決とまではいえませんが、GETよりははるかに安全です。

+

セッションを実現するもう1つの方法はCookieを使うことです。CookieはHTTPのやりとりにくっつけることができる小さなデータで、HTTPレスポンスにくっつけてクライアントに渡すと、クライアントはCookieに指定された範囲のURLにアクセスするときに、リクエストに同じCookieをくっつけてサーバーに渡します。「くっつく」とはHTTPリクエストやHTTPレスポンスのヘッダー部分に格納されるという意味です。

+

それぞれのCookieは以下の属性を持っています。

+
+

このような仕組みを使ってセッションを実現します。

+
+
+

CGIプログラミング

+
+

さて、仕組みについては十分に見てきました。ここからは実際にプログラムを作ってみましょう。残念ながら実用的なプログラムを作るには誌面が足りそうにないので、非常に簡単なセッションを使ったCGIプログラムを作ります(リスト42.3)。

+
+

リスト42.3●セッションを使ったCGI

+
#! /usr/bin/ruby
+require 'cgi'
+require 'cgi/session'
+
+cgi = CGI.new("html4")
+session = CGI::Session.new(cgi)
+name = cgi["name"].to_s
+
+cgi.out("charset" => "EUC-JP") {
+  cgi.html {
+    cgi.head { cgi.title {"hello session"}}
+    cgi.body {
+      if name != "" || session["name"]
+        if name != session["name"]
+          session["name"] = name
+        end
+        "こんにちわ #{session["name"]}さん。<br><br>" +
+        "あなたが #{session["name"]}さんでなければ、"
+      else
+        "はじめまして"
+      end +
+      "<br><br>名前入力してください<p>" +
+      cgi.form("post", "example.cgi") {
+        cgi.text_field("name") +
+        cgi.submit("login")
+      }
+    }
+  }
+}
+
+
+ +

まず、このプログラムが使っている2つのライブラリ、“cgi”と“cgi/session”について紹介します。これらのライブラリはいずれも標準添付ですから、Rubyが使える場所では特にインストールする必要はありません。

+

cgiはHTTPサーバーから受け取ったCGI情報の解釈と、HTTPサーバーへの応答の作成を支援するライブラリです。GETPOSTで受け取ったパラメータはcgiオブジェクトを使って、

+
+
cgi[name]
+
+

という形式で受け取ることができます。パラメータが存在しないときには空文字列を返します。cgiオブジェクトはHTMLのタグに対応したメソッドを持っています。基本的にタグは、

+
+
cgi.tag("attr"=>"value"){"body"}
+
+

という形式で呼び出します。引数には属性を、ブロックにはタグの内側にくる文字列を指定します。リスト42.3>の例題を見ればわかるように、タグメソッドはネストして呼び出すこともできます。cgiオブジェクトの生成には、生成するHTMLのレベルを指定します。有効なレベルは、

+
    +
  • html3   – HTML3.2
  • +
  • html4   – HTML4.01
  • +
  • html4Tr – HTML4.01 Transitional
  • +
  • html4Fr – HTML4.01 Frameset
  • +
+

です。「とりあえず」の場合には例題にあるように“html4”を指定しておけばよいのではないでしょうか。

+

cgi/sessionhiddenフィールドやCookieを使ったセッション管理を自動的に行ってくれるライブラリです。セッションはハッシュのように使える一種のデータベースで、

+
    +
  • クライアントからのリクエストにセッション情報が含まれていなければ自動的にセッションIDを生成

  • +
  • セッション間で共有される情報は、

    +
    +
    session[name]
    +
    +

    で参照・格納が可能

  • +
+ +

というものです。例題では“name”という名前で、ユーザーから与えられた名前情報を格納していました。cgi/sessionを使うには、まずセッションオブジェクトを生成する必要があります。セッションオブジェクトの生成は、

+
+
CGI::Session(cgi)
+
+

で行います。cgiCGIオブジェクトです。CGI::Sessionオブジェクトはオプションを受け取ることもできます。

+
+
session = CGI::Session.new(cgi,
+    'database_manager' => CGI::Session::PStore,
+    'session_key' => '_rb_sess_id',
+    'session_expires' => Time.now + 30 * 60,
+    'prefix' => 'pstore_sid_')
+
+

有効なオプションを表42.2に示します。

+
+

表42.2●HTMLフォームのコントロール

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
オプション説明
session_keyHTMLに埋め込むセッションキーの名前(_session_id
session_idセッションID(自動生成)
new_session真のとき、強制的に新しいセッションを開始する(false
database_managerデータベースクラス(CGI::Session::FileStore
session_domainセッション用Cookieのdomain
session_expiresセッション用Cookieのexpires
session_pathセッション用Cookieのpath
session_secureセッション用Cookieのsecure
+
+

database_managerにはcgi/sessionの実際のデータを格納するクラスを指定します。標準で用意されているのはCGI::Session::FileStoreCGI::Session::MemoryStoreです。cgi/session/pstorerequireすればデータをPStoreデータベースに格納するCGI::Session::PStoreも利用可能です。バックエンドを用意すれば、セッションデータをPostgreSQLなどDBMSに格納することもできます。

+
+
+

Webアプリケーションフレームワーク

+
+

というわけで、cgiライブラリとcgi/sessionライブラリを利用すれば、セッションを持つCGIプログラムを比較的簡単に開発できるのですが、正直なところある程度以上複雑なWebアプリケーションを開発するためには、少々低レベルすぎる印象があります。HTTPが渡すCGIデータの構造とか、生成するHTMLの属性とか細かなところは気にせず、もっとハイレベルな開発が行いたいものです。また、数多くのページから構成されるWebアプリケーションでは、共有部分を効率よく開発したり、デザインの共通性を最大限に生かすことも求められます。

+ +

このようなニーズに答えるためのものが「Webアプリケーションフレームワーク」です。Webアプリケーションフレームワークと呼ばれるものはたくさんあります。RAAを調べてみたところ、何らかのWebアプリケーションの枠組みを提供するものは実に19個も登録されています(表42.3)。どうもRAAに登録されていないものもいくつかあるようです。

+
+

表42.3●RubyのWebアプリケーションフレームワーク

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
プロジェクト作者説明
ArrowMichael GrangerApacheを対象にしたフレームワーク
BorgesEric Hodel継続でセッションを実現する
CGIKit鈴木鉄也WebObjects類似のフレームワーク
CerisewglozerJ2EE類似のフレームワーク(amritaを利用)
IowaKirk Hainesコンポーネントベースフレームワーク
MortarevanMason類似のフレームワーク
NarfP. May & T. ClarkeUnitTest重視のcgiライブラリ
NoraMoonwolfcgiを置き換えるライブラリ
RadicalIdan SoferHTTPサーバーを含むpure Rubyフレームワーク
RailsDavid H. HanssonMVC(ActionPack)とDB(ActiveRecord)で実現
RoachAaron Barnettjspならぬrspを利用するAPサーバー
Ruby.APPStephan SchmidtJ2EEやZopeを意識したフレームワーク
SWSMarek JanukowiczWebObjects類似のフレームワーク
WAFBryan ZarnettJakarta Struts類似のフレームワーク
WakabaUENO KatsuhiroHTTPリクエストをメソッド呼び出しとみなす
cgi-applicationMoonwolfcgiとcgi/sessionを使ったフレームワーク
div関将俊dRubyを使ったフレームワーク
rwebiGELcgiを置き換えるライブラリ
webapp田中哲CGI/FastCGI/mod_ruby/WEBrickを利用可能
+
+

表42.3のプロジェクトを大きく分類すると、以下のようになるようです。

+
+

標準添付のcgiライブラリを置き換えるもの

+

標準添付のcgiライブラリに不満を持つ人は多いようです。確かにPerlのCGIをベースに設計されたcgiライブラリはちょっと古い印象があります。もっと使いやすいライブラリをというニーズは多いのでしょうか。Narf, Nora, Rwebなどがこれに当たります。

+

J2EEやWebObjectsなどJava系技術の移転

+

Web系技術の開発が一番盛んなのはやはりJava周辺かもしれません。Java周辺で開発された技術をRubyに移転するプロジェクトもたくさんあります。CGIKit(WebObjects)、Cerise(J2EE)、SWS(WebObjects)、WAF(Struts)、Roach(JSP)などがこれに当たります。

+

Java系ではありませんが、PerlのWebアプリケーションフレームワークであるMasonを移植したMortarも方針は類似しているでしょう。

+ +

比較的小規模なアイデア勝

+

アプリケーションを1つのオブジェクトで実現するWakaba, dRubyを使ったdiv、CGI/FastCGI/mod_ruby/WEBrickをほとんどコード変更なしで移行できるwebapp, 標準添付のcgiを利用することでわずか200行強で実装されているcgi-applicationなどはこのあたりに分類されるでしょう。

+

プロダクションレベルを狙うもの

+

Iowa, Railsなどは他からの影響を受けつつもある程度独自路線をとっているようです。これらのフレームワークはショッピングサイトの構築など実アプリケーションに使われています。

+

その他

+

mod_rubyをターゲットにしたArrow, 継続(Continuation)を使ったBorges, pure Rubyを売り物にしているRadical, J2EEなども意識したRuby.APPなどは、まだ十分な情報を入手していません。これから流行するかもしれないので、注目していきたいです。

+

特にBorgesは、Iowa(表42.3で紹介されたものの初期のバージョン)が、SmalltalkのSeasideというフレームワークに移植され、それ(の一部)を再びRubyで実装したというなかなか奇妙な経緯を持つフレームワークです。継続ベースのWebアプリケーションフレームワークは性能を向上させるのが難しいのですが、面白いアイデアではあります。Ruby以外だと、Schemeの継続ベースWebアプリケーションフレームワークKahuaは経済産業省の未踏プロジェクトの対象になっていましたね。

+
+

「こんなになくてもいいじゃないか」という気分にもなりますが、やはり思想の違いを反映しているのでしょう。「Webアプリケーションのあるべき姿」についての考えがそれぞれ違う以上、簡単には結論は出ないようです。ただ、最近の流行を見ていると、

+
    +
  • MVC(モデル/ビュー/コントローラー)の分離

  • +
  • ビューにはテンプレートを使う

  • +
+

ことが有望だと考えられているようです。あとは性能、データベースアクセス周り、ロジック部の書きやすさなどが判断基準になるようです。

+
+
+

まとめ

+
+

今月はHTTPのセッションについて学んだ後、RubyのWebアプリケーションフレームワークについて眺めてみました。

+

しかし、RAAに登録されたものだけで19個となると、「どれを使ったらいいのか」という気分になりますね。もちろん、個人個人のニーズに合ったものを選ぶのが一番なので、来月以降これらのフレームワークのいくつかを紹介しようと思っています。

+

先月、今月とほとんどRubyのプログラムが登場しませんでしたので、来月はRubyプログラムを作れるといいなと思っています。

+

なお、Webアプリケーションフレームワークの調査には、同僚であるかずひこさんのご協力をいただきました。どうもありがとうございます。

+
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-025.xhtml b/docs/vol2/xhtml/p-025.xhtml new file mode 100644 index 0000000..0c094ac --- /dev/null +++ b/docs/vol2/xhtml/p-025.xhtml @@ -0,0 +1,86 @@ + + + + + +第42章 Webアプリケーションの基礎 + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ 汝は人狼なりや?

+
+

私は普段ゲームと呼ばれるものはほとんどしません。うちにはゲーム機はありませんし、アクションゲームははっきり言ってかなり苦手ですし(反射神経が鈍い)、パズルもあんまり難しいのは投げ出してしまいます。また、コンピュータのロールプレイングゲームは、あの経験値稼ぎの非人間的な繰り返しに耐えられません。しかし、そんな私でもカードゲームやパーティゲームは結構好きで、「ウォーターワークス(水道管ゲーム)」や「UNO」などはずいぶん遊んだものです。

+

最近、うちの家族はアメリカ土産の「Pandamonium」というゲームで遊んでいます。これはめくったカード(楽器を演奏するパンダ柄)に対応するポーズを素早くとり、間違えた人は場に出ているカードを総取りする、というゲームです。マリンバとドラム、チューバとホルンなど似たような楽器があって混乱します。

+

さて、そのようなカードゲームにあって、面白そうだけど遊べなかったゲームというのが「汝は人狼なりや?」または「ミラーズホロウの人狼」と呼ばれるカードゲームです。「汝は人狼なりや?」は村人の中に紛れ込んだ人狼を退治するため、占いなどの特殊能力と推理力を駆使して、狼を見つけ出し処刑する、というカードゲームです。無実の人を処刑してしまうことがあるところとかがちょっとブラックですが、推理ゲームとしてよくできていると思います。何でも2003年ドイツ年間ゲーム大賞ノミネートなのだそうです。

+

遊ぶのが難しいというのは、入手が難しいこともあるのですが、それ以上に難点となるのが、参加人数です。このゲームには最低8人のプレイヤーが必要なのですが、なかなか8人集めるのは大変です。また、推理力を必要とする知的なゲームなので、うちの子供たちのような「小さいお子様」は参加できません。私の周りで大人ばかり8人、子供にじゃまされない状態で集めるのはちょっと困難そうです。それはそれでしょうがないなあと思っていたのですが、ある日面白いものを見つけました。

+

その日はいつものようにWebを眺めていたのですが、「人狼BBS」というページに遭遇しました。

+
    +
  • 人狼BBS
    +http://ninjinix.x0.com/wolf/index.rb

  • +
+

これこそ「汝は人狼なりや?」をオンラインで実現するものでした。インターネットを経由して、見知らぬ同士が参加するわけです。本物の「汝は人狼なりや?」では夜のフェーズにはみんなが目を閉じる必要があるのですが、Webで行うならば必要な人に情報を必要なだけ見せることができます。人狼同士の相談も誰にも気付かれずに行うことができます。考えてみれば、これこそインターネット向けのゲームではないでしょうか。すばらしい。

+

などと一人で感動していたのですが、冷静になってURLをよく見ると「index.rb」なんて文字列が含まれているではないですか。なんと、人狼BBSはRuby製だったのです。喜ばしいことです。

+

さて、「汝は人狼なりや?」も「人狼BBS」もご存じない方のためにゲームのルールを簡単に紹介しておきます。

+

基本は、掲示板形式で会話を進めながら、人狼を探し出し処刑することです。すべての人狼を処刑できれば村人たちの勝ち、村人の数が人狼と同数以下にまで減らされてしまったら人狼の勝ちとなります。誰を処刑するかは、生き残っている村人たちの投票によって決定します。

+
+

村人の中には特殊能力を持つ者がいます(表42.4)。これらの能力と推理力を駆使して人狼を特定します。しかし、人狼たちや狂人(人狼に味方する人間)が特殊能力者になりすますかもしれません。

+
+

表42.4●「汝は人狼なりや?」の特殊能力

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称能力
村人ありません
人狼毎夜、1人だけ村人を殺害できます。人狼同士にしか聞こえない会話が可能です。14人までは2匹、15人以上では3匹です
占い師毎夜、村人1人を占うことができます。その村人が人狼か人間かがわかります
霊能者投票による処刑や突然死で死んだ者が、人狼であったか人間であったかがわかります
狂人人狼側の人間です。人狼の勝利が狂人の勝利となります。狂人と人狼は、お互いに正体を知りません
狩人毎夜、1人を人狼の襲撃から守ることができます
共有者もう1人の共有者を知ることができます
+
+

もちろん人間は誰も死なず、人狼だけが退治されればそれに越したことはないのですが、人狼側も知恵を振り絞るので、一方的な勝利はほぼ不可能です。何人か人間を犠牲にしても確実に人狼を退治する非情さが求められます。人狼側も味方を犠牲にしても最終的な勝利を目指す点では同じです。限られた情報を最大限に生かし、全力を尽くしてそれぞれの目的の達成を目指すのが、このゲームの面白さの本質です。

+

人狼BBSでは過去のゲームのログも公開されています。このログも、人間が語った言葉だけ(プレイヤーと同等)レベル、人狼の秘密の会話やすでに死んでしまった人のツッコミの声が聞こえるレベルなど、いろいろなレベルで読むことができます。

+

すべての会話が読めるレベルは、それぞれのプレイヤーがそれぞれの勝利を目指して必死に思考する過程がわかる1つの読み物として読むことができます。推理や戦略、陰謀と裏切りを含む優れた読み物です。また、ときには善意が周囲から誤解され、人間側が自滅していく悲劇のドラマが展開されることもあります。

+

人間の声だけが聞こえるレベルでは、プレイヤーと一緒になって推理を楽しむことができます。プレイヤーの発言を読みながら、誰が人狼か、誰が狂人か、どの発言がどういう意味があるのか、などと考えながら読むのは、もしかすると下手な推理小説よりも面白いかもしれません。一粒で二度おいしいとはこのことでしょうか。私はここ数週間、人狼BBSのログを読むのにはまってしまって、仕事が滞って大変でした。あやうく今月の原稿にもさしつかえるところでした。危なかった。

+

とまあ、ここまで、えらそうに人狼BBSについて書いてきましたが、実はログを読むばかりで、まだプレイヤーとして参加したことはないのです。この原稿を仕上げて、仕事も一段落したら、こっそり参加してみようかな。ログを読む以上にはまってしまって、大変なことになったらどうしよう。

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-026.xhtml b/docs/vol2/xhtml/p-026.xhtml new file mode 100644 index 0000000..edd130d --- /dev/null +++ b/docs/vol2/xhtml/p-026.xhtml @@ -0,0 +1,509 @@ + + + + + +第43章 Webアプリケーションフレームワーク + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay43 +
+

+探訪Ruby
+Webアプリケーション
フレームワーク +

+
+

[Linux magazine, 2004年12月号]

+
+

先月までのWebアプリケーションの基礎に引き続き、Webアプリケーションフレームワークについて解説しています。ちょうどこの原稿が書かれた2004年後半はRubyに限らず、各種言語でWebアプリケーションフレームワークが数多く登場した時期です。そのせいもあって、リストには17個ものフレームワークが紹介されています。今回の原稿で題材として取り上げたのは、CGIKitというフレームワークで、当時の評価は大変高かったのですが、いつの間にか消えてしまいましたね。ちなみに原稿で取り上げたCGIKit 1.2.1は現在でもダウンロードは可能でした。2024年現在ではRails一強で、たまにSinatraやHanamiも話題に登るといった状況でしょうか。

+

「Ruby開発日記」は「Ruby Conference 2004レポート」です。ちょうどこのとき、末娘が誕生するタイミングで、コロナ禍になるまでRubyConfを欠席したのはこの年だけでした。ちょうどDHHのRuby on Railsの紹介をしていますね。笹田くんがYARVの発表したのもこの年でした。

+
+
+

先月はWebアプリケーションの基礎になる「セッション」について学び、Webアプリケーションフレームワークを簡単に紹介しました。今月は、フレームワークの実際を見てみようと思います。

+
+
+

Webアプリケーションフレームワーク

+
+

先月も紹介したRubyによるWebアプリケーションフレームワークのリストを表43.1に示します。先月のリストから厳密には「フレームワーク」とは呼べないものを取り除き、新しくRosieを追加しました。

+ +
+

表43.1●RubyのWebアプリケーションフレームワーク

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
プロジェクト作者説明
ArrowMichael GrangerApacheを対象にしたフレームワーク
BorgesEric Hodel継続でセッションを実現する
CGIKit鈴木鉄也WebObjects類似のフレームワーク
CerisewglozerJ2EE類似のフレームワーク(amritaを利用)
IowaKirk Hainesコンポーネントベースフレームワーク
MortarevanMason類似のフレームワーク
RadicalIdan SoferHTTPサーバーを含むpure Rubyフレームワーク
RailsDavid H. HanssonMVC(ActionPack)とDB(ActiveRecord)で実現
RoachAaron Barnettjspならぬrspを利用するAPサーバー
Rosietwelvesoft.com独自テンプレートのシンプルフレームワーク
Ruby.APPStephan SchmidtJ2EEやZopeを意識したフレームワーク
SWSMarek JanukowiczWebObjects類似のフレームワーク
WAFBryan ZarnettJakarta Struts類似のフレームワーク
WakabaUENO KatsuhiroHTTPリクエストをメソッド呼び出しとみなす
cgi-applicationMoonwolfcgiとcgi/sessionを使ったフレームワーク
div関将俊dRubyを使ったフレームワーク
webapp田中哲CGI/FastCGI/mod_ruby/WEBrickを利用可能
+
+

WebアプリケーションフレームワークはWebアプリケーションの「枠組み」を提供し、最小限の記述でWebアプリケーションを記述できます。

+
+
+

フレームワークの機能

+
+

Webを使ったアプリケーションを実現するための基本的な技術は本連載の10月号で解説したCGIです。しかし、CGIだけを使ってある程度以上のWebアプリケーションを作るのは大変です。そこでCGIのような低レベルなインターフェイスの上にもっと使いやすいライブラリを用意し、さらにWebアプリケーションの枠組みまで提供するのがWebアプリケーションフレームワークになります。

+

Webアプリケーションフレームワークでは以下のような機能が提供されます(すべてのフレームワークが以下のすべてを提供しているとは限りません)。

+
+

セッション管理機能

+

1つのページでおしまいというようなCGIプログラムならともかく、Webアプリケーションは複数のページが連携され、一連の流れとして取り扱われる必要があります。Web上でそのような「セッション」を実現する方法については前回で紹介しましたが、はっきりいって面倒です。

+

ユーザー管理機能

+

たとえば会員制のサイトの場合、ログインした場合には会員個人のページを表示するなど、ユーザーごとに個別化した対応を求められることがあります。いくつかのWebアプリケーションフレームワークでは、このユーザーごとの処理も支援しています。

+ +

ビューとロジックの分離

+

Webアプリケーションのビュー(外見)とロジック(処理)を分離することにはメリットがあります。プログラムの中にHTMLの断片がちりばめられていると、デザインを変更したいときにはプログラムのあちこちを修正する必要があります。

+

それでなくても、HTMLエディタのようなツールを使ってきれいにデザインしたい、あるいはHTMLは専門のデザイナーに任せたい、というニーズがあるので、HTMLは1ファイルにまとまっていたほうがうれしいものです。ですから、ほとんどのWebアプリケーションフレームワークは、何らかの手段でビューとロジックの分離を支援しています。

+

コンポーネント

+

Webアプリケーションの複数のページで「部品」を共有したいというニーズがあります。たとえば、画面の片隅にカレンダーを出したいとか、ヘッダーには共通メニューを置きたいとか。そのようなニーズに応えるための仕掛けがコンポーネントです。コンポーネントはページ全体ではなく、その一部となるような「部品」です。

+

ページ遷移

+

Webアプリケーションはその実行に伴って、ページからページに移動します。その基本的な処理は、

+
    +
  • ページを表示する

  • +
  • ユーザーからの入力を受け取る

  • +
  • 入力に応じて処理を行う

  • +
  • 新しいページを表示する

  • +
+

という流れです。CGIでプログラムを書く場合には、各ページごとにこれら1つ1つを別々のCGIプログラムで実現する必要があります。Webアプリケーションフレームワークは、これを各ページを定義することで行います。多くのフレームワークはページはオブジェクトに対応し、処理はメソッドに対応します。

+
+

今月は数あるWebアプリケーションフレームワークの中からCGIKitを紹介します。

+
+
+

CGIKit

+
+

CGIKitは鈴木鉄也さん(スパイスオブライフ)によって開発されているWebアプリケーションフレームワークです。

+
    +
  • CGIKitホームページ
    +http://www.spice-of-life.net/cgikit/index.html

  • +
+

最近、私の会社では社内で開発するWebアプリケーションのためのRubyによる各種フレームワークの評価を行ったのですが、その中で最も評価が高かったのが、このCGIKitでした。

+

CGIKitの特徴には以下のようなものがあります(ホームページから引用)。

+
+
+
+

CGIKitのインストール

+
+

CGIKitはWebページからダウンロードできます。ライセンスはRubyのものと同じです。原稿執筆時点での最新版は1.2.1でした

+
    +
  • http://www.spice-of-life.net/archive/cgikit-1.2.1.tar.gz

  • +
+

ダウンロードしたtar.gzファイルを展開します。展開したディレクトリ(例: cgikit-1.2.1)に移動し、下記の手順でインストールスクリプトを実行します。

+
+
% ruby install.rb config
+% su
+# ruby install.rb install
+
+

これでインストールは完了です。

+
+
+ +

CGIKitによるWebアプリケーション

+
+

CGIKitを使ったWebアプリケーションを実現するCGIプログラムは簡単です(リスト43.1)。なんと5行しかありません。CGIKitによるWebアプリケーションの本質はコンポーネントにあるので、起動する部分はこれだけで済むのです。どんなに複雑なWebアプリケーションでもおおむね同じCGIプログラムで対応できます。

+
+

リスト43.1●CGIKitを使ったCGIプログラム

+
#!/usr/bin/ruby
+require 'cgikit'
+
+app = CKApplication.new
+app.run
+
+
+

このCGIプログラムをWebサーバーから見える位置に置きます。CGIプログラムとして起動できるように、パーミッションの設定や、Webサーバーの設定を行うのを忘れてはいけません。

+
+
+

CGIKitのコンポーネント

+
+

Webアプリケーションの本質、コンポーネントはこのCGIプログラムが置かれているディレクトリに、コンポーネントごとに別々のディレクトリに置きます。

+

CGIKitではWebアプリケーションの各ページもコンポーネントです。CGIKitは起動されるとデフォルトではMainPageコンポーネントを表示します。コンポーネントを構成するディレクトリには3つのファイルが必要です。MainPageコンポーネントの場合、

+
    +
  • MainPage/        ディレクトリ
  • +
  •    MainPage.html ビュー(HTMLファイル)
  • +
  •    MainPage.ckd  バインディングファイル
  • +
  •    MainPage.rb   ロジック(Rubyプログラム)
  • +
+

という構成になります。ディレクトリ名と同じ名前で拡張子が異なるファイルが3つ、これが基本です。

+

ビューは通常のHTMLファイルです。ただし、ロジックの内容が反映される箇所が <cgikit> タグで示されます。MainPage.htmlの例をリスト43.2に示します。

+
+

リスト43.2●MainPage.html

+
<html>
+  <head>
+    <title>CGIKit Sample - input</title>
+  </head>
+  <body>
+    <cgikit name="ErrorCondition">
+      <p><cgikit name="Error" /></p>
+    </cgikit>
+    <cgikit name="Form">
+      <p>名前: <cgikit name="Name" /></p>
+      <p>性別: <cgikit name="Female" />女性 / <cgikit name="Male" />男性</p>
+      <cgikit name="Submit" />
+    </cgikit>
+  </body>
+</html>
+
+
+ +

HTMLファイル中の <cgikit> タグは「エレメント」と呼ばれて置換の対象になります。エレメントの名前はname属性で決定されます。リスト43.2にはErrorCondition, Error, Form, Name, Female, Male, Submitの各エレメントが使われています。実際に出力されるときには各エレメントがHTMLに置換されるわけです。

+

各エレメントがどのようなものであるかは「バインディングファイル」で決定されます。バインディングファイルの例をリスト43.3に示します。

+
+

リスト43.3●MainPage.ckd

+
ErrorCondition : CKConditional {
+  condition = error;
+}
+
+Error : CKString {
+  value = error;
+}
+
+Form : CKForm {
+}
+
+Name : CKTextField {
+  value = name;
+}
+
+Female : CKRadioButton {
+  name = "sex";
+  value = "女性";
+  selection = sex;
+}
+
+Male : CKRadioButton {
+  name = "sex";
+  value = "男性";
+  selection = sex;
+}
+
+Submit : CKSubmitButton {
+  action = check;
+}
+
+
+ +

バインディングファイルでは各エレメントの種別と属性について記述します。バインディングファイルの記述は以下のようになっています。

+
+
エレメント名 : エレメント種別 {
+  属性名 = 属性値;
+  ...
+}
+
+
+

エレメントの種別を表43.2に示します。表を見ればわかるように、コンポーネントはエレメントの一種なので、コンポーネントをコンポーネントに埋め込むことができます。

+
+

表43.2●エレメント種別

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
エレメント概要
CKStringバインディングしたアクションの結果を表示する
CKHyperlink他コンポーネントやメソッドにリンクを張る
CKImageリソースディレクトリ内の画像を表示する
CKConditional設定した条件の結果によってHTMLを表示する
CKRepetition指定した範囲の内容を繰り返す
CKFormフォームを用意する。送信データはそれぞれエレメントにバインディングした変数に代入される
CKTextFieldテキストフィールドを表示する
CKRadioButtonラジオボタンを表示する
CKCheckboxチェックボックスを表示する
CKPopUpButtonポップアップボタンを表示する
CKTextテキストエリアを表示する
CKBrowser複数選択可能なリストを表示する
CKFileUploadファイルアップロードフィールドを表示する
CKSubmitButton送信ボタンを表示する
CKResetButtonリセットボタンを表示する
CKFrameフレームにコンポーネントを設定する
CKComponentコンポーネント内に別のコンポーネントを設定する
CKContentネスティングしたコンポーネントにて、親コンポーネントを表示する
CKGenericElement一般的なHTMLタグを生成する
+
+

value属性に指定するのはメソッドまたはインスタンス変数です。コンポーネントのオブジェクトに、指定した名前のメソッドが存在しなければ、名前の先頭に「@」を付けたインスタンス変数の値をvalueにします。

+

action属性に指定するのはメソッドです。そのメソッドを実行した結果として次のページが決定されます。

+

さて、ロジック部を記述するMainPage.rbリスト43.4)は、ごく普通のRubyプログラムで、以下の点に注意します。

+
    +
  • コンポーネント名と同名のクラスを定義する

  • +
  • CKComponentを継承する

  • +
  • valueactionに指定したメソッドを定義する

  • +
  • actionに指定したメソッドは「次のページ」を返す

  • +
+
+

リスト43.4●MainPage.rb

+
class MainPage < CKComponent
+  def check
+    if @name.empty?
+      @error = '名前を入力してください'
+      return
+    elsif @sex.nil?
+      @error = '性別を選択してください'
+      return
+    end
+    nextpage = page('DisplayPage')
+    nextpage.name = @name
+    nextpage.sex = @sex
+    return nextpage
+  end
+end
+
+
+

「次のページ」を意味するオブジェクトは、

+
+
page(コンポーネント名)
+
+

で生成します。必要なら「次のページ」オブジェクトに対してメソッドを呼び出し、値の設定などを行います。単に「return」すると同じページをもう一度表示することになります。「処理を行って、次のページに遷移する」というWebアプリケーションで最も重要な点が非常に簡単に実現できていることに注目してください。

+ +

「次のページ」に当たる「DisplayPage」コンポーネントをリスト43.5に示します。これはMainPageで入力された名前と性別を表示するだけのコンポーネントです。MainPageと同様に、DisplayPageディレクトリを作成し、その中にリスト43.5の3つのファイルを格納します

+
+

リスト43.5●DisplayPageコンポーネント

+
ビュー DisplayPage.html
+<html>
+  <head>
+    <title>CGIKit Sample - display</title>
+  </head>
+  <body>
+    <p>名前: <cgikit name="Name" /></p>
+    <p>性別: <cgikit name="Sex" /></p>
+  </body>
+</html>
+
+バインディング DisplayPage.ckd
+Name : CKString {
+  value = name;
+}
+
+Sex : CKString {
+  value = sex;
+}
+
+ロジック DisplayPage.rb
+class DisplayPage < CKComponent
+  attr_accessor :name, :sex
+end
+
+
+

この例題は非常に簡単なWebアプリケーションで、最初のページで入力された名前と性別を次のページに表示します。これを実行した結果を図43.1図43.2に示します。

+
+ +
+ fig4301 +
+

図43.1●MainPage

+
+
+ +
+ fig4302 +
+

図43.2●DisplayPage

+
+

入力にミスがあった場合には、最初のページに戻りますが、エラーメッセージを表示します。図43.3が名前を入力しなかった場合、図43.4が性別を入力しなかった場合のメッセージです。

+
+ +
+ fig4303 +
+

図43.3●エラーメッセージ1

+
+
+ +
+ fig4304 +
+

図43.4●エラーメッセージ2

+
+

MainPage.rbでインスタンス変数 @errorに設定したメッセージが、ビューのErrorエレメントによって表示されていいます。エラーメッセージを追加するだけなら、わざわざ別のページを用意する必要はありません。

+
+
+ +

CGIKitの評価

+
+

Webアプリケーションフレームワークの代表として紹介したCGIKitですが、実際に使ってみるとコンポーネントベースのアプリケーション設計は、思った以上に使いやすいし、再利用性も高そうです。

+

ただ、不満もないわけではありません。ビューとして用いるHTMLで用いられる <cgikit> タグはHTMLエディタとの相性があまりよくありません。amritaのようなHTMLとして正当なテンプレートか、あるいはいっそRosieで用いられている「#[]#」のようなHTMLのタグとは関係のない記号を用いたほうがデザイナーとプログラマーの分業には有効だったかもしれません。

+

あと、これは不満ということではありませんが、私にはバインディングファイルの有効性がよくわかりませんでした。エレメントの種別と属性くらいならテンプレートに直接書いてもよいような気がしましたし、validate(値の正当性チェック)のようなものはむしろロジックの一部として記述したほうがよいように思いました。

+

もっとも、私はまだほんの小さなサンプルプログラムしかいじっていませんから、もっと大きなWebアプリケーションでたくさんのコンポーネントを利用する場合にはバインディングファイルが有効になるのかもしれません。

+
+
+ +

まとめ

+
+

今月はWebアプリケーションフレームワークの代表としてCGIKitを紹介しました。フレームワークを使うとWebアプリケーションの開発が飛躍的に簡単になります。

+

今回紹介したCGIKitにはロジック部のデータベースマッピングを支援するTapKitと呼ばれる姉妹品があります。こちらはSQLを書くことなくRDBを操作できるライブラリで、WebObjectのEnterprise Objects Frameworkを参考に作られているそうです。こちらも近いうちに紹介できたらと考えています。

+

なお、CGIKitのサンプル作成など、今月も同僚であるかずひこさんのご協力をいただきました。どうもありがとうございます。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-027.xhtml b/docs/vol2/xhtml/p-027.xhtml new file mode 100644 index 0000000..fdb23c5 --- /dev/null +++ b/docs/vol2/xhtml/p-027.xhtml @@ -0,0 +1,95 @@ + + + + + +第43章 Webアプリケーションフレームワーク + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ (行ってないのに)Ruby Conference 2004レポート

+
+

10月1日から3日まで、バージニア州ワシントンDCエリアにてRuby Confernce 2004が開催されました。今年は4番目の子供の出産と重なったので残念ながら出席できませんでしたが、今年の会場は無線LANが使えたので、会場からのレポートが数多く提供されました。

+

今回は、それらのレポートを元にして「行ってないのに勝手にカンファレンスレポート」をお送りします。

+
+

10月1日(金)

+

Teaching Ruby in a Corporate Environment(Jim Freeze)

+

ISO9000企業でRubyのような「新参ソフト」を活用するというのがテーマ。Jimは毎年似たようなテーマで努力と成果を報告してくれています。

+


+

Using and Extending Ruwiki(Austin Ziegler)

+

JavaプログラムとそれをコントロールするRubyプログラムの例。RubyをDSLとしても利用しているとそうです。

+

Ruwikiについて。Ruwikiは海外では結構人気のあるWikiクローンです。カスタマイズ(マークアップのカスタマイズ、マークアップエンジンの変更、ストレージバックエンドの変更など)が簡単だそうです。

+


+

Tycho: A Proposed Ruby-based PIM(Hal Fulton)

+

RubyによるPIM(Personal Information Manager)の実装。

+


+

Hacking Ruby(Paul Brannon)

+

Rubyをハックする。いろいろやってくれてるようですが、オブジェクトをすり替えるbecomeだけは邪悪すぎるので勘弁してください。

+


+

Alph(Rich Kilmer)

+

AlphはMacromedia Flashをフロントエンドとするユーザーインターフェイス。Flashならではの美しい画面をRubyからコントロールできます。

+
+
+

10月2日(土)

+

Narf: revisiting a 2 year old(Patrick May)

+

NarfはRuby標準添付のcgi.rbの置き換えを狙うもの。興味深いのは彼が紹介したWikiへのいたずらを防止する仕組みで、悪質なIPアドレスからのアクセスは「コピー」にリダイレクトされ、いたずらやスパムなどの変更は他には見えない、というものです。これでもうスパムもいたずらも恐くない?

+


+
+

ruby-doc.org: Now and the Future(James Britt)

+

Rubyのドキュメントを集めたruby-doc.orgについて。特に集められたドキュメントのカテゴリ分けなどについて。Jamesはこの後、ヨーロッパのRubyカンファレンス(Euroko)にも参加するそうです。

+


+

Ruby on Rails(David Heinemeier Hansson)

+

最近売り出し中のWebアプリケーションフレームワークRuby on Railsについて。Rubyのすばらしさを発見したDavid(元PHPプログラマー)は、それを大衆に広めるためのツールとしてRailsを開発したそうです。

+


+

The Many Facets of RubyGems(Jim Weirich)

+

Ruby向けパッケージングシステムRubyGemsについて紹介。RubyGemsはそのうち標準になる、かもしれません。

+


+

YARV: Yet Another Ruby VM(SASADA Koichi)

+

Rubyの高速化の試み。「言葉の壁」にもかかわらずかなり高い評価を得たようです。よく頑張りました。ベンチマークも紹介され、それなりに速くなってる(というか、今のRubyが遅いんだけど)ことが示されました。

+


+

"Test::Unit".downcase.sub(/::/,"/")(Nathaniel Talbott)

+

Test::Unitの作者であるNathaniel Talbottが「よりRubyっぽい」テストスイートについて語る。現在「test/unit2」として開発中だとか。

+


+

RubyZine(Shashank Date)

+

飛び入り。Rubyに関するWebzineの発行が決定した、というお知らせ。

+


+

Objective-C: A Retrospective(Brad Cox)

+

Objective-Cの設計者であるBrad Coxによるプレゼンテーション。聞きたかった。ところで、彼の話の後半は、彼の最近の活動であるDRM(Digital Rights Management)関係の話だったようです。ちょっと意外。

+
+
+

10月3日(日)

+

RubyX(John Knight)

+

RubyXはあらゆるスクリプトがRubyで書かれたLinuxディストリビューション。興味深い試みです。そこまで徹底するのがすごい。

+


+

Ruby on Windows(Dan Berger)

+

RubyはWindowsにおいて弱い(私のせいだ)。その点を改善するためのwin32utilプロジェクトについて。

+


+
+

How Dynamic Can You Get?(Jamis Buck)

+

Dependency Injection(またはInvesion of Control)の紹介。Ruby用CコンテナCoplandが題材になっていたそうです。

+


+

Code generation with Ruby in a heterogenous network application(Gorden James Miller)

+

「Rubyはコード生成ツールとして非常に有効だ」という話。目には見えなくてもRubyはあちこちで活躍しています。

+
+
+

まとめ

+

レポートからの印象からは、今年のカンファレンスも成功だったようです。来年は行きたいなあ。10月の前半は外してくれるといいんだがなあ。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-028.xhtml b/docs/vol2/xhtml/p-028.xhtml new file mode 100644 index 0000000..1ec33d2 --- /dev/null +++ b/docs/vol2/xhtml/p-028.xhtml @@ -0,0 +1,468 @@ + + + + + +第44章 マークアップ・マークダウン + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay44 +
+

+探訪Ruby
+マークアップ・マークダウン +

+
+

[Linux magazine, 2005年1月号]

+
+

シンプルなマークアップ言語の良さを力説した後、実例として、RD, Textile, Markdownの3つを紹介しています。Markdownは現在非常に広く使われていますが、残りの2つはあまり見なくなりましたね。ただし、私が書く原稿は今でもRD(のサブセット)で書いていますし、プレゼン用スライドもRDで書いてRabbitで表示させていますから、私にとってはRDはまだまだ現役ですね。

+

「Ruby開発日記」は「名前重要」です。内容は私があちこちで述べていることで、たとえばオライリーの『プログラマが知るべき97のこと』(2010年)という本に書いたエッセイとだいぶ重複していますが、時期的にこちらがオリジナルですね。後半、末娘の名付けに悩む心情はなかなかリアルです。20年前にそんなに悩んでいたとはすっかり忘れていました。

+
+
+

今月はWebからちょっと離れて、ドキュメント記述などに使われるマークアップ言語について探検します。

+
+
+

私の嫌いなもの

+
+

ただ単に文章を書くだけならプレーンテキストで十分ですが、プレーンテキストではカバーしきれない要求、たとえば図を入れたい、きれいにフォーマットしたい、などに応えるためには、何らかのマークアップが必要になります。マークアップのフォーマットにはいろいろあって、代表的なものにはTeX, SGML, HTML, XMLなどがあります。これらは有名ですからこれ以上の説明は不要ですよね。

+

マークアップ言語の目的と意義については理解しているつもりなんですが、これらはそろいもそろって、読むにはマークアップが目ざわりで、書くのはおっくうという欠点があります。TeXの、

+
+
\begin{document}
+  ...
+\end{document}
+
+
+

というのも、たかだか文書の始まりと終わりを指定するのになんでそんなに書かねばならないのか、と不満ですし、HTMLやXMLの、

+
+
<HTML>
+<HEAD>...</HEAD>
+<BODY>...</BODY>
+</HTML>
+
+

のようなのも冗長で好きではありません。「マークアップ(markup)」という単語はもともと「組版指示」というような意味ですから、文章の内容から考えるとさほど重要な要素ではありません。飾りみたいなもんです。それがこんなに目立つ記法を持っているというのは何か間違っているとしか言いようがありません。そんなわけで私は「マークアップ言語」が嫌いです。

+

そんなマークアップ言語嫌いがデザインした文書フォーマットがRD(Ruby Document)です。

+
+
+

RD

+
+

RDは、私たちが『オブジェクト指向スクリプト言語Ruby』(アスキー、ISBN4-7561-3254-5)を執筆していたときにデザインしたマークアップ言語です。RDはPerlのドキュメントに用いられていたPOD(Plain Old Document)フォーマットと、プレーンテキストからTeX文書を生成してくれるPlain2というツールの記法とを組み合わせて生まれました。

+

その特徴は、

+
    +
  • プレーンテキストふうの記法(と若干のインライン記法)だけで文書のマークアップができる

  • +
  • インデントを利用することにより、自然な文章の構造化を行うことができる

  • +
  • rd2プログラムにより、さまざまなフォーマットに変換可能

  • +
+

という点です。

+

RDフォーマットは上記の『オブジェクト指向スクリプト言語Ruby』の執筆に用いられた後、Ruby関連のさまざまなドキュメントに用いられ、今では、

+
    +
  • RWiki  – RDを全面的に採用したWiki
  • +
  • tDiary – スタイルの1つとしてRDを利用可能
  • +
  • Rabbit – RDで記述するプレゼンテーションソフト
  • +
+

などさまざまな局面で用いられています。また、『Ruby 256倍本』の1つ『Rubyを256倍使うための本 魔道編』(アスキー、ISBN4-7561-3747-4)では、RDラブを自称する「るびきち」氏がRDを主要なテーマにして1冊まるまる解説しています。

+
+
+ +

RDの文法

+
+

RDはプレーンテキストに毛が生えたようなフォーマットですから、あまり複雑な構造を表現することはできません。ですが私たちが日常的に書く文章のほとんどはカバーできると思います。

+

RDの基本的な文法は以下のとおりです。

+
    +
  • 空行は段落の区切り

  • +
  • = 見出し」で見出し(<H1>相当)になる。以下、「== 小見出し1」(<H2>)、「== 小見出し2」と続く

  • +
  • *」で箇条書き

  • +
  • (1)」で数字付き箇条書き

  • +
  • :」で定義リスト

  • +
  • インデントした領域は引用

  • +
  • 二重かっこによるインライン。((- 脚注 -))((<リンク>))など

  • +
+

リスト44.1にそれらを使ったRDの例を示します。

+
+

リスト44.1●RDの例

+
= 大見出し - RDの文法
+
+この章ではRDの文法を解説します。
+
+== 段落区切り
+
+RDの文章はプレーンテキストと同様です。
+文章中の改行は特別扱いされず、バックエンド(TeXや
+HTML)にそのまま渡されます。
+
+ただし、空行は段落の区切りとしての意味を持ちます。
+
+== 箇条書き
+
+RDの箇条書きは2種類あります
+
+  * 単なる箇条書き
+    * 箇条書きはネストできます
+  * 数字付き箇条書き
+
+数字付き箇条書きは
+
+  (1) 最初の要素
+  (2) 次の要素
+  (4) かっこ内の数字は無視されます
+
+のように書きます。
+
+用語の定義もできます。
+
+  : 用語
+
+    同じレベルで始まる段落がその定義になります。
+
+また、インデントによって引用できます。
+
+  #! /usr/bin/ruby
+  print "hello world"
+
+以上で簡単な説明は終わりです。
+
+
+
+
+ +

RDtool

+
+

RDを実際に処理するプログラムがRDtoolです。RDtoolはToshさんによって開発されました。現在のメンテナンスはMoonWolfさんによって行われています。RDに関する情報は、

+
    +
  • http://www2.pos.to/~tosh/ruby/rdtool/ja/index.html

  • +
+

から入手できますが、メンテナー交代を反映していないので少々情報が古いようです。原稿執筆時点でのRDtoolの最新版は0.6.16です。

+

Debianではパッケージ化されているので、

+
+
# apt-get install rdtool
+
+

だけでインストールできます。その他のプラットフォームでは、rdtool-0.6.16.tar.gzを展開したディレクトリで、

+
+
# ruby setup.rb
+
+

をroot権限で実行することでインストールできます。Emacsのrd-mode.elを利用したい人はutilsディレクトリにあるrd-mode.elというファイルをEmacs Lispディレクトリにコピーしてください。インストールが完了するとrd2というコマンドが使えるようになります。

+
+
+
# rd2 example.rd > example.html
+
+

のようにするとRDを変換してくれます。デフォルトではHTMLに変換します。

+
+

rd2のバックエンド

+

rd2コマンドの主要な部分はrdライブラリとして分離されていますので、Rubyで書かれた他のプログラムからRDを処理することが簡単にできます。

+

rd2にはHTMLとman形式への変換を行うバックエンドが用意されていますが、自分でバックエンドを用意することで新しい形式へ比較的簡単に対応することができます。RDツールはVisitorパターンを使っているので、バックエンドを記述するためには、

+
    +
  • RD::RDVisitorクラスのサブクラスを用意する

  • +
  • それぞれのマークアップに対応するメソッド(例: apply_to_Headline)を再定義し、目的の形式に変換した文字列を返す

  • +
+

だけです。実際、HTMLバックエンドは(コメントや空行も含めて)487行、man形式対応はわずか247行で実現されています。

+

ここではバックエンドの1つの例として、同僚の前田修吾さんが作ったrd2sxiを紹介しましょう。これはRDから、OpenOffice.orgのプレゼンテーションスライドファイルを生成するプログラムです。

+

rd2sxiは全部で1700行を超えるプログラムなので(出力するXMLのテンプレートが大きいのです)、誌面に収まりませんが、作者の前田さんの許可を得たので、編集部のWebサイト(http://www.ascii.co.jp/linuxmag/update/)に掲載してあります。ダウンロードして、rd2sxi-0.1.tar.gzを展開したら、そのディレクトリのsetup.rbを実行してください

+

なお、rd2sxiはオープンソースGISソフトウェア、GRASS日本語版と一緒に配布されているIPAフォントがインストールされていることを仮定していますから、ご使用になる場合はIPAフォントをインストールする(あるいはrd2sxiを修正する)必要があります。GRASS日本語版については、

+
    +
  • http://www.grass-japan.org/FOSS4G/GRASS/grass-int.html

  • +
+

を参照してください。

+
+
+
+

Rabbit

+
+

RabbitはkouさんによるRDでスライドが記述できるプレゼンテーションソフトウェアです。原稿執筆時点でのRabbitの最新版は0.0.5です。

+
    +
  • http://www.cozmixng.org/~rwiki/?cmd=view;name=Rabbit

  • +
+

rd2sxiがRDテキストからOpenOffice.orgのスライドを作って、画像やテーマなどの編集はOpenOffice.orgに任せているのに対して、RabbitはRDだけでスライドを完結させることができます。画像を入れることもできますし、テーマ機能で見栄えを別に定義することもできます。

+
+

なかなか楽しいソフトウェアですし、実用性も高そうです。

+
+
+

Textile

+
+

目立ちすぎるマークアップは嫌い、という考えは私だけのものではないらしく、RDと似たコンセプトのマークアップは他にもあります。その1つがTextileです。TextileのホームページのURLを以下に示します。

+
    +
  • http://www.textism.com/tools/textile/

  • +
+

Textileの文法については、以下のほうがわかりやすいかもしれません。

+
    +
  • http://hobix.com/textile/

  • +
+

Textileの特徴は以下のとおりです。

+
+

シンプルなマークアップ

+

行をベースにした非常にシンプルなマークアップです。

+

シンプルなインライン

+

RDのインラインは二重かっこ(())を使うので少々うっとうしいのですが、Textileではインライン修飾記法はもっとシンプルです。

+

HTML専用

+

複数のフォーマットに変換できるRDに対して、TextileはHTML専用です。そのぶん、HTML的なスタイルや属性の指定が可能です。右揃え、センタリング、左揃えなどのアラインメントの指定も可能も可能です。また、Textileで表現しきれない複雑なことはHTMLを直接書くことで対応します。

+
+

Textileも空行が段落の区切りを意味します。見出しは行の先頭に「h1.」を置くことで表現します。レベルに合わせて「h1.」から「h6.」までがあります。引用は「bq.」、脚注は「fn1.」、箇条書きはRD同様「*」を用い、数字付き箇条書きは「#」です。

+

その他Textileの文法を表44.1に示します。

+ +
+

表44.1●Textileのスタイル指定

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ブロック修飾子
hn.見出し <Hn>
bq.引用 <BLOCKQUOTE>
fnn.脚注
p.段落 <P>
*箇条書き
#数字付き箇条書き
インライン修飾子
_強調_<EM>
*strong*<STRONG>
??引用??<CITE>
@コード@<CODE>
-削除-<DEL>
+挿入+<INS>
^上付き^<SUP>
~下付き~<SUB>
%span%<SPAN>
テーブル
|a|table|row||で囲む
リンク
"linktext":urlリンク
!imageurl!イメージ
[n]脚注への参照
+
+

先にも述べたように、TextileはHTML専用なのでHTML属性などを指定することができます。ブロック修飾子の場合ピリオドの直前に、クラスやIDを指定するかっこ「()」や、スタイルを指定するブレース「{}」、言語を指定するブラケット「[]」を置くことができます。インライン修飾子の場合には、これらの指定を先頭の文字の直後に置きます。スタイル指定できる場所にはアラインメントも記述できます(表44.2)。

+
+

表44.2●Textileのスタイル指定

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
(class)クラス指定
(#id)ID
{style}スタイル
[lang]言語
<右寄せ
>左寄せ
=センタリング
<>ジャスティファイ
+
+

リスト44.2がTextileの使用例です。

+
+

リスト44.2●Textileの例

+
p(example). A          → <p class="example">A</p>
+p(#big-red). Red       → <p id="big-red">Red</p>
+p{color:blue}. Blue    → <p style="color:blue">Blue</p>
+p[fr]. rouge           → <p lang="fr">rouge</p>
+
+It's %{color:red}red%  → <p>It's <span style="color:red;">red</span>
+p>. Right              → <p style="text-align:right;">Right</p>
+
+
+
+
+ +

Markdown

+
+

もう1つのプレーンテキストふうマークアップがMarkdownです。

+
    +
  • http://daringfireball.net/projects/markdown/syntax

  • +
+

Markdownの特徴はTextileとほぼ同じです。

+
    +
  • シンプルなマークアップ

  • +
  • シンプルなインライン

  • +
  • HTML専用

  • +
+

ただし、TextileのようなCSSクラスやスタイルの指定などはできません。逆に引用などの表現力はMarkdownのほうが高いように感じます。Markdownの文法をリスト44.3に示します。

+
+

リスト44.3●Markdownの文法

+
見出しは下線で
+==============
+
+小見出しも同様
+--------------
+
+# 「#」も見出しに使える
+## 「#」の数でH1からH6まで
+
+> 引用は「>」を行頭に
+> > ネストした引用も可能
+
+* 箇条書き
+
+1. 数字付き箇条書き
+
+コードの引用はRD同様インデントで行う
+
+  #! /usr/bin/ruby
+  print "hello world"
+
+インラインはTextileに似ている。
+
+  * _強調_
+  * *strong*
+  * `コード`
+
+リンクはブラケットを使う
+
+  [リンク](http://www.rubyist.net)
+
+自動的にリンクにすることもできる
+
+  <http://www.rubyist.net/~matz>
+
+
+
+
+ +

RedClothとBlueCloth

+
+

TextileにしてもMarkdownにしても記法だけではあまり意味がなく、実際にHTMLに変換するツールがあって初めて役に立ちます。TextileをHTMLに変換するRuby用のツールはRedClothといいます。Markdown用のツールはBlueClothといいます。なんだかややこしいですが、RedClothが先にあって、BlueClothがその名前を真似たということのようです。

+

RedClothの作者はSyck(YAML for Ruby)の作者でもある「why the lucky stiff」です。RedClothは、

+
    +
  • http://www.whytheluckystiff.net/ruby/redcloth/

  • +
+

から入手することができます。原稿執筆時点でのRedClothの最新版は3.0.0で、このバージョンからTextileとMarkdownの両方をサポートします。インストールするとredclothコマンドによってTextileからHTMLへの変換ができるようになります。

+

また、

+
+
require 'redcloth'
+
+

とすることで、Rubyプログラムから変換を行うこともできます。

+

RedClothオブジェクトはStringクラスのサブクラスです。オブジェクトの生成は以下のように行います。

+
+
r = RedCloth.new("_textile_ text")
+
+

RedClothオブジェクトからHTMLを取り出すにはto_htmlメソッドを使います。

+
+
r.to_html # => "<p><em>textile</em>text</p>"
+
+

to_htmlに引数を指定することで、変換エンジンを変更できます。

+
+
# Markdownとして変換
+r.to_html(:markdown)
+
+# Textileとして変換
+r.to_html(:textile)
+
+# Markdown優先で変換
+r.to_html(:markdown, :textile)
+
+
+

RDtoolは「1つの文法からいろいろな形式に変換する」というアプローチでしたが、RedClothは「複数の文法からHTMLに変換する」というアプローチです。どちらも興味深いですね。

+

BlueClothのほうもRedClothとほとんど同じです。ホームページは、

+
    +
  • http://bluecloth.rubyforge.org/

  • +
+

です。原稿執筆時点での最新版は1.0.0です。BlueClothとRedClothの違いは、

+
    +
  • BlueClothはMarkdown専用

  • +
  • blueclothコマンドは完全なHTMLファイルを出力できる

  • +
+

ことでしょうか。

+
+
+

まとめ

+
+

今月はプレーンテキストふうマークアップ言語を3種類紹介してみました。皆さんもシンプルマークアップの魅力を体験してみませんか。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-029.xhtml b/docs/vol2/xhtml/p-029.xhtml new file mode 100644 index 0000000..ac709a1 --- /dev/null +++ b/docs/vol2/xhtml/p-029.xhtml @@ -0,0 +1,43 @@ + + + + + +第44章 マークアップ・マークダウン + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ 名前重要

+
+

「名前重要」は私の座右の銘です。

+

プログラミングにおいては名前は重要です。プログラムあるいはその一部に名前を付けることはデザインの重要な一部です。関数名、変数名、クラス名、モジュール名などなどなどプログラムには名前を付ける必要がある存在がいっぱいです。

+

経験的にはよい名前を付けることができれば適切な設計はできたも同然という明らかな傾向があります。プログラムは形のない概念上の存在であることがプログラミングにおける名前の重要性を高めているのかもしれません。適切な名前を付けることができるということは、その存在が果たすべき役割が明確に把握できているということで、それだからよい設計ができるのだと考えられます。実際、Rubyに対する提案のうち、「適切な名前が思い付かない」という理由で保留になったものがかなりたくさんあります。

+

しかし、名前のパワーはそれだけにとどまらないようです。古代インディアンの伝説では、すべてのものには「真実の名前」があり、その名前を知るものはそのものをコントロールすることができるのだそうです。彼らにとっては名前を探求することと適切に名前を付けることは魔術の一部であり、世界を思いどおりにするための手段の1つなのです。この世界観を取り入れたファンタジー小説にアーシュラ・K・ルグィンの『ゲド戦記』がありますね。

+

名前に力があるという考えはインディアンに固有のものではありません。日本でも姓名判断が広く行われていて、名前(の漢字の画数)によって運命が決まると信じている人は多いようです。子供の名前を決めるときに画数を考えて決める人はまだまだ多いようです。

+

人間の名前がその人の運命を決める(かもしれない)ように、プログラムの名前もそのプログラムの運命を決める「何か」があるのかもしれません。世の中にはオープンソースプログラムがそれこそ星の数ほどあります。その中には成功して多くのユーザーから広く使われるものもありますが、どういうわけだかあまり人気を集めることができずに消え去っていくものもあります。技術的な理由だけでは説明できない「何か」がソフトウェアの運命を左右しているような気がしてなりません。最近、私はそれはもしかしたら「名前」なのではないだろうかと怪しんでいるのです。

+

もちろん、人間の運命同様、ソフトウェアの運命が名前だけで決まるというのはナンセンスです。それはもっと複雑で、技術的な理由や、コミュニティの性格、ユーザーの気質、開発者の特質などがからまって決まるものだと思います。しかし、その中で名前も重要な要素のような感じがします。ソフトウェアというものが形のないものであるだけに、名前の重要性はより強まっているように思います。ちょっと考えてみると、メジャーなオープンソースソフトウェアにはみんないい名前が付いています。長すぎず、覚えやすく、発音しやすく、よいイメージがある名前が付いているものがほとんどではないでしょうか。ちょっと考えてみても、「Perl」— 短くて発音しやすい、「Linux」— インパクトがあり、覚えやすい、「Ruby」— 短くて、発音しやすく、美しいイメージがある、ちょっとありふれすぎてるかな、などが考えられます。

+

他のオープンソースプロジェクトのことについては断言できませんが、私がここ10年以上関わってきたRubyに関していえば、もしRubyがRubyという名前でなかったら、これほどまでに広まらなかっただろうと考えています。Rubyという名前が人々をひきつけ、Rubyという名前が開発者である私のモチベーションを維持するのに役立っていたのではないかと考えています。

+
+

これまで私は、Rubyの誕生日は1993年2月23日であるとあちこちで語ってきました。これは、最初のバージョンをリリースした日でも、Rubyのプログラムが初めて動作した日でもなく、実は「Rubyという名前が決まった日」なのでした。この日の時点ではRuby処理系は1行も書かれていませんし、それどころか言語の文法さえ漠然としたもので、はっきりとは定まっていませんでした。にもかかわらず、私がこの日を誕生日とするのは、ソフトウェアにとってそれだけ名前が重要であるということを反映しているからです。名前が付いて、私の頭の中に「Rubyと名付けられた何か」が存在を始めた日こそが、Rubyの誕生日ではないかと思っているのです。この「何か」は誕生後11年以上が過ぎた今日でも少しずつ変化しながら成長しているのです。

+

このように、ソフトウェアプロジェクトにとって名前は重要です。もし皆さんが、何か新しいソフトウェアの開発を開始することがありましたら、プロジェクトの一番初めにきちんと時間をとって名前について考えてみてはどうでしょう。そのわずかの手間が、将来そのプロジェクトの命運を左右することになるかもしれません。

+

さて、普段から「名前重要」と繰り返している私なのですが、先日、大変困ったことが起きました。実は、10月28日に三女が産まれまして。この少子化のご時世に4人目の子供に恵まれるというのは、大変めでたいことなのですが、産まれた子供には名前を付けなければならないのです。しかも、産まれて14日以内に届け出ないと罰金モノなのだそうです。名前が重要で運命を左右するかもしれないと常々感じている私としては大変なプレッシャーです。この子の将来未来永劫にわたって影響を与えかねない名前をわずかな時間の間に決めなければならないというのは大変な責任です。

+

もちろん、妊娠がわかってから実際の出産までには何カ月もあったのですが、締め切りが近くならないとなかなか本気にならないのはいつものことです。いくつかの候補を絞ったものの、実際に産まれてきた子供の顔を見るとイメージが違う気がして絞り込めません。おまけに夫婦それぞれに思い入れがある名前があったりして、なかなか合意に至りません。上の子供たちまで「あんな名前がいい」「こんなのは嫌だ」と口をはさむので大混乱です。今までで一番名付けに苦労したような気がします。

+

産まれて1週間が過ぎ、10日が過ぎ、周りからの「まだ決まらないの」というプレッシャーを跳ね返しつつ、夫婦の間で真剣な話し合いが行われ、やっと決定したのは締め切りの数日前でした。ここでは公表しませんが、シンプルでかわいらしいよい名前が付けられたと自画自賛しています。願わくば本人もこの名前を気に入ってくれるとよいのですが。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-030.xhtml b/docs/vol2/xhtml/p-030.xhtml new file mode 100644 index 0000000..37aa70a --- /dev/null +++ b/docs/vol2/xhtml/p-030.xhtml @@ -0,0 +1,364 @@ + + + + + +第45章 ダイコン + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay45 +
+

+探訪Ruby
+ダイコン +

+
+

[Linux magazine, 2005年2月号]

+
+

DI(Dependency Injection)について解説しています。私自身はDIについて否定的で、Rubyのような動的な言語では煩雑になるだけという意見を持っているのですが、この文章を書いた時点では意外と好印象で驚きます。20年の間に意見が変化したのでしょうか。タイトルは「DIコンテナ」から取ったものであると書いてありますが、他では聞いたことない略称なのでたんなるジョークとして理解すべきなんでしょうね。

+

「Ruby開発日記」は「文字コードの憂鬱ゆううつ」です。文字コードについて歴史的事情を含めて解説しています。この辺の悩みがRuby 1.9のM17N(多言語化、Multilingualization)につながるんですね。とはいえ、現在では文字コードはほぼUnicodeの勝利に終わったので、もう悩む必要はないのかもしれません。もっともUnicode自身が絵文字を含めて大変実装が難しいので、そういう意味での悩みは尽きないのですが。

+
+
+

今月は、最近、(Java方面で)人気のDependency Injectionパターンと、それを実現するためのツールであるDIコンテナ、略してダイコンについて紹介します。

+
+
+

Dependency Injection

+
+

「Dependency Injection(依存関係の挿入)」(通称DI)はソフトウェアを構成する単位(コンポーネント: モジュール、クラスなど)の間の依存性をコードから分離して、コンポーネント間の結合を弱め、再構成を可能にするデザインパターンです。DIはもともと「Inversion of Control(制御の反転)」(通称IoC)と呼ばれていました。しかし、これでは何の制御を反転させるのかわからないので、『リファクタリング』のMartin Fowlerらによって付けられた新しい名前が「Dependency Injection」です。

+

DIを言葉だけで説明するのは少々骨が折れるので、ちょっとした例を元に考えてみたいと思います。仮に私がBlogツールを開発しようとしているとしましょう。そのツールの構成はたとえば図45.1のようになるでしょう。

+ +
+ +
+ fig4501 +
+

図45.1●Blogツール構成図

+
+
+

表45.1●各コンポーネントの機能

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Blog全体の管理
InputHTTPリクエストを解析する
DBMSデータを格納、検索する
MarkupテキストデータをHTML化する
Pluginカレンダーなど各種部品
DisplayテンプレートからHTMLを構成する
+
+

旧来のやり方で開発するならば、それぞれのコンポーネント(クラス)は全体を管理するBlogクラスが初期化します。たとえばリスト45.1のような感じでしょうか。

+
+

リスト45.1●従来型初期化

+
class Blog
+  def initialize
+    @input   = Input.new(...)
+    @dbms    = DBMS.new(...)
+    @markup  = Markup.new(...)
+    @plugin  = Plugin.new(...)
+    @display = Display.new(...)
+  end
+end
+...
+
+
+

この場合、このBlogクラスはInput, DBMS, Markup, Plugin, Displayの各クラスと強く結び付いてしまいます。Blogクラスを使うということは自動的にこれらのクラスを使うということになり、プログラムの内部構造に手を入れない限り、これらの組み合わせを変えられなくなってしまっています。たとえば、データを格納するDBMSを交換したくなった場合、あるいはMarkupの文法をTextileからRDに変更したくなった場合、プログラムを(この場合はBlogクラス)を書き換えるか、コンポーネントを置き換えできる仕組みを自分で作り込んでおく必要があります。

+

リスト45.1ではBlogクラスと他のクラスとの関係しか記述していませんが、実際のプログラムでは他のクラス相互も関係を持っていますから、依存関係はより複雑になり、クラスの置き換えの手間は増大するでしょう。また、各コンポーネントが強く連結されていると、コンポーネントごとのユニットテストを行うことが難しくなります。

+ +

結局、問題を引き起こしているのは依存性なのです。Dependency Injectionはそのような依存性を制御するテクニックです。

+
+
+

ハリウッド原則

+
+

このようなDIのことを「ハリウッド原則」に従っているといわれることがあります。「ハリウッド原則」とは「電話をするな。こっちが電話するから(Don’t call us. We’ll call you.)」ということなのだそうです。

+

つまり、映画を作るためにどのようなスタッフを選ぶかはプロデューサーが決定して通知するので、個々のスタッフは個別に他のスタッフやプロデューサーを呼び出してはいけないということです。DIコンテナに応用すると、個別のコンポーネントは他のコンポーネントやコンテナのことを関知する必要はない、というところでしょうか。

+

ハリウッド原則はDIに限らず、一般的にフレームワークと呼ばれるもの全般で有効なテクニックです。ということは、DIコンテナは各種フレームワークの基盤として応用できるツールであるということになります。Javaの世界でDIコンテナが注目されているのも、このあたりが理由のようです。

+
+
+

Constructor Injection

+
+

Martin Fowlerらによれば、依存関係の指定方法にはConstructor Injection, Setter Injection, Interface Injectionの3種類があるのだそうです。

+

Constructor Injectionはコンポーネントのオブジェクトを生成するときのコンストラクタ(Rubyの場合ならnew)の引数として依存するコンポーネントを指定する方法です。Setter Injectionはコンポーネントオブジェクトの生成後にメソッドを使って依存するオブジェクトを指定する方法です。Interface Injectionは(Javaの)interfaceを用いてSetter Injection類似のことを行う手法ですが、interfaceのない(必要ない)Rubyでは用いられません。

+

では、実際にDIコンテナを使った例を見てみましょう(リスト45.2)。このサンプルプログラムで利用しているDI::Containerというクラスは自作のものです。実装は非常に簡単ですから、あとで紹介します。

+
+

リスト45.2●DI的初期化(Constructor Injection風味)

+
class Blog
+  def initialize(input,disp)
+    @input   = input
+    @display = disp
+  end
+end
+...
+
+def start_app
+  c = DI::Container.new
+  c.register(:blog, Blog, :input, :display)
+  c.register(:input, Input)
+  c.register(:dbms, DBMS)
+  c.register(:markup, Markup)
+  c.register(:plugin, Plugin, :dbms)
+  c.register(:display, Display, :dbms, :markup, :plugin)
+  blog = c.instance(:blog)
+  ...
+end
+
+
+ +

registerメソッドの引数の意味は

+
+
サービス名, クラス, 依存するサービス名, ...
+
+

です。

+

Constructor Injectionではコンテナに対してインスタンスが要求されると、コンテナはそのインスタンスがまだ生成されていなければ、そのクラスのnewメソッドを使って生成します。そのとき、newメソッドには依存するサービスのインスタンスが引数として渡されます。

+

リスト45.2Blogクラスの定義を見てください。他のコンポーネントは外から与えられ、Blogクラスの定義中に他のクラス名やそれらのインスタンスの生成方法は登場しません。これによりBlogクラスから他のコンポーネントへの依存性をなくすことができました。これならば、コンポーネントの構成を変更することも簡単ですし、依存するコンポーネントとして他のコンポーネントの「ふり」をするオブジェクトを与えれば、コンポーネントごとにユニットテストを行うこともできるようになりました。

+

ここで用いたDI::Containerの定義をリスト45.3に示します。20行以下ということで、これはおそらく世界最少のDIコンテナ(の1つ)と言ってもよいでしょう。Rubyの記述力には驚くばかりです(自画自賛)。

+
+

リスト45.3●DI::Container(Constructor Injection)

+
module DI
+  class Container
+    def initialize
+      @services = {}
+      @instances = {}
+    end
+    def register(name, component, *dependency)
+      @services[name] = [component, dependency]
+    end
+    def instance(name)
+      return @instances[name] if @instances[name]
+      component, dependency = @services[name]
+      args = dependency.map {|service|
+        self.instance(service)
+      }
+      @instances[name] = component.new(*args)
+    end
+  end
+end
+
+
+ +

DI::Containerが行っていることは簡単で、Rubyが読める人ならコードを見ればすぐわかるでしょう。初期化して(initialize)、サービスを登録して(register)、インスタンスの要求に対してまだ生成していないオブジェクトを生成する(instance)、これがDIのコアのすべてです。

+
+
+

Setter Injection

+
+

Setter Injectionはnewメソッドで依存関係を指定するのではなく、属性指定で依存するコンポーネントを与えます。こちらはコンポーネントインスタンスを生成した後、属性設定メソッド(obj.foo=valのようなもの)を使って依存関係を構築します。Setter Injectionを使ったコンポーネントの定義をリスト45.4に示します。

+
+

リスト45.4●DIコンポーネント(Setter Injection風味)

+
class Blog
+  attr_accessor :input, :display
+  ...
+end
+...
+
+
+

Constructor Injectionのコンポーネントと比べて、initializeでの依存関係の構築がなくなり、attr_accessorだけになっているぶん、定義がずいぶん簡単になっているのがわかります。Setter Injectionを使うDIコンテナの定義をリスト45.5に示します。リスト45.5のDIコンテナはAPIはConstructor Injectionのものと同じにしてありますから、start_appの定義はリスト45.2のものから変更の必要はありません。

+
+

リスト45.5●DI::Container(Setter Injection)

+
module DI
+  class Container
+    def initialize
+      @services = {}
+      @instances = {}
+    end
+    def register(name, component, *dependency)
+      @services[name] = [component, dependency]
+    end
+    def instance(name)
+      return @instances[name] if @instances[name]
+      component, dependency = @services[name]
+      @instances[name] = c = component.new
+      args = dependency.map {|service|
+        c.__send__(service.to_s+"=", self.instance(service))
+      }
+      c
+    end
+  end
+end
+
+
+ +

このバージョンのDI::Containerには依存関係が循環していても動作するという副作用があります。が、Setter Injectionが必ずそうだという保証があるわけではありません。

+
+
+

Block Injection

+
+

Jim Weirichが自らのBlogで紹介したより「Rubyらしい」やり方がBlock Injectionです。あ、Block Injectionは私が名付けたもので、Jim本人はそうは呼んでいません。

+
    +
  • Jim WeirichのBlogの記事
    +http://onestepback.org/index.cgi/Tech/Ruby/DependencyInjectionInRuby.rdoc

  • +
+

Constructor InjectionやSetter Injectionはインスタンスの生成方法が厳密に定められていますが、Block Injectionはブロックを使ってインスタンス生成方法を指定するので、Constructor InjectionにもSetter Injectionにも対応できます。Block Injectionを使った例をリスト45.6に示します。

+
+

リスト45.6●Block Injection

+
def start_app
+  c = DI::Container.new
+  c.define(:blog) {|c| Blog.new(c.input, c.display)}
+  c.define(:input) {Input.new}
+  c.define(:dbms){DBMS.new}
+  c.define(:markup){Markup.new}
+  c.define(:plugin){|c|
+    p = Plugin.new
+    p.dbms = c.dbms
+  }
+  c.define(:display) {|c|
+    Display.new(c.dbms, c.markup, c.plugin)
+  }
+  blog = c.instance(:blog)
+  ...
+end
+
+
+ +

ここでは仮にPluginコンポーネントだけSetter Injectionで定義され、残りはConstructor Injectionであるとしてみました。Block Injectionではインスタンス生成方法をブロックを指定するので、インスタンスを生成するメソッドはnewでなくてもかまいませんし、Constructor InjectionもSetter Injectionも同時に利用できます。ということは、より柔軟性が高いということができます。

+

Block Injectionを行うDIコンテナをリスト45.7に示します。instance_evalなどリフレクションを使ったdefineメソッドの定義がちょっとトリッキーですが、それ以外は非常にシンプルだと思います。

+
+

リスト45.7●DI::Container(Block Injection)

+
module DI
+  class Container
+    def initialize
+      @services = {}
+      @instances = {}
+    end
+    def define(name, &block)
+      @services[name] = block
+      class << self
+        self
+      end.instance_eval {
+        define_method(name) { self.instance(name) }
+      }
+    end
+    def instance(name)
+      return @instances[name] if @instances[name]
+      @instances[name] = @services[name].call(self)
+    end
+  end
+end
+
+
+
+ +

DIコンテナライブラリ

+
+

RAA(http://raa.ruby-lang.org/)には、以下のDIコンテナライブラリが登録されています。

+
    +
  • Rico

  • +
  • Copland

  • +
  • Needle

  • +
+
+

Rico

+

Thoughtworks(Martin Fowlerらがいる会社)に所属しているDan Northが、自作のJava用のDIコンテナPicoを自らRubyに移植したものがRicoです。私の知る限りではRuby用では最も古いDIコンテナです。古いといっても2003年ですが。

+

RicoはConstructor Injectionを採用しています。Ricoは古い実装ということもあり、機能が少なく実際にアプリケーションの一部として使うには物足りないかもしれませんが、DIパターンの実装を理解するためにちょっと試してみるのには役立つかもしれません。少ないと言っても上記の20行のDIコンテナよりははるかに高機能ですし。

+
+
+

Copland

+

Coplandはユタ州Brigham Young UniversityのJamis Buckが、Java用のDIコンテナHiveMindを参考に開発したものです。JamisはHiveMindとDIを理解するための習作として作ったと述べています。

+

CoplandはSetter Injectionを採用しています。Coplandのもう1つの特徴は、コンポーネントの構成はコードではなくYAMLで記述することです。Java系のDIコンテナでは構成をXMLで記述することが多いのですが、その影響を受けつつRubyらしさを出したということでしょうか。

+

しかし、作者のJamisはCoplandを開発しているうちに、「これはRubyらしくない」と感じたようです。その彼がよりRubyらしいDIコンテナとして、新たに開発したのが次に紹介するNeedleです。

+
+
+

Needle

+

Needleは「Rubyらしさ」を追求したLight-weightなDIコンテナライブラリです。ここでの「Rubyらしさ」はどうやらブロックとmethod_missingを多用したデザインのことのようです。

+

NeedleはRuby Conference 2004において、Jamis BuckとJim Weirichとの間で交わされた会話から生まれました。その後、JimはBlock Injectionに関するBlog記事を書き、JamisはNeedleを開発しました。

+

Needleを使ったDIプログラミングの例をリスト45.8に示します。

+ +
+

リスト45.8●Needleプログラミング例

+
require 'needle'
+
+def start_app
+  r = Needle::Registry.new
+  r.define do |b|
+    b.blog{Blog.new(r.input, r.display)}
+    b.input{Input.new}
+    b.dbms{DBMS.new}
+    b.makrup{Markup.new}
+    b.plugin{Plugin.new(r.dbms)}
+    b.display{Display.new(r.dbms, r.markup, r.plugin)}
+  end
+  blog = r.blog
+  ...
+end
+
+
+

defineメソッドがブロックに渡すものは「Builder」と呼ばれるオブジェクトで、このオブジェクトは自分が知らないメソッドが呼び出されると(method_missingを使って)、自動的にサービスを登録してくれます。defineメソッドとBuilderを使う代わりに

+
+
r.register(:blog) {Blog.new(...)}
+
+

を呼び出すこともできます。

+

Needleはオブジェクトの生成と依存関係の挿入以外にも、サービスの呼び出しにフックをかけるInterceptorと呼ばれる機能があります。この機能によってサービスの呼び出しをログに記録するなどの処理が可能になります(リスト45.9)。このInterceptor機能は、NeedleだけでなくRicoやCoplandでも実現されています。

+
+

リスト45.9●NeedleのInterceptor

+
reg.register(:foo) {...}
+reg.intercept(:foo).with {Needle::LoggingInterceptor}
+
+
+

これにより、サービスfooの呼び出しはNeedle::LoggingInterceptorを使ってフックされることになります。自分でクラスを作ることによりフックをカスタマイズすることができますし、withの代わりにdoingを使うことで、ブロックを使ってInterceptorを定義することもできます(リスト45.10)。

+ +
+

リスト45.10●NeedleのInterceptor

+
reg.register(:foo) {...}
+reg.intercept(:foo).doing {|chain,ctx|
+  ...
+  chain.process_next(ctx)
+}
+
+
+

InterceptorはなんとなくAOP(アスペクト指向プログラミング)を思い出させます。AOPという概念はこうして定着していくのかもしれません。

+
+
+
+

まとめ

+
+

Ruby界隈ではDIはまだまだ新しい概念です。私は昨年のJAOOカンファレンスでRicoについて紹介してもらいましたが、本当に理解しようとしたのはつい最近です。しかし、DIコンテナの基本部分がわずか20行以下で実装できるのは私にとっても驚きでした。簡単な割にはなかなか有効そうなテクニックなので、次の仕事ではDIを使ってみようかなあって考えています。

+

本連載のために参考にした記事をあげておきます。まだまだDIに対する理解が浅い私にとって、これらには大変お世話になりました。この場を借りて各記事の作者の方にお礼します。ありがとうございました。

+
    +
  • Martin FowlerによるDIの解説
    +http://www.martinfowler.com/articles/injection.html

  • +
  • 角谷さんによるその邦訳
    +http://www.kakutani.com/trans/fowler/injection.html

    +

    Rubyist MagazineのDIコンテナ紹介の記事。本連載と思いっきりかぶっている。

  • +
  • http://jp.rubyist.net/magazine/?0002-RLR

  • +
  • Jim WeirichによるDI紹介の記事

    +

    この記事の内容がきっかけになってNeedleが生まれた。

  • +
  • http://onestepback.org/index.cgi/Tech/Ruby/DependencyInjectionInRuby.rdoc

  • +
  • Dave ThomasによるDI紹介の記事
    +http://www.pragprog.com/pragdave/Tech/TransparentIOC.rdoc

  • +
+
+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-031.xhtml b/docs/vol2/xhtml/p-031.xhtml new file mode 100644 index 0000000..573ff02 --- /dev/null +++ b/docs/vol2/xhtml/p-031.xhtml @@ -0,0 +1,59 @@ + + + + + +第45章 ダイコン + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ 文字コードの憂鬱ゆううつ

+
+

テキストが記号の羅列のようになってしまう文字化けは困りものです。海外でも「Moji-Bake」と呼ぶことがあると聞いたことがあります。これは全部「文字コード」が悪いのです。

+

コンピュータは基本的にオンとオフで構成される2進数しか扱えませんから、数値以外のデータを直接取り扱うことはできません。テキストやそれを構成する「文字」は一度数に直してから処理します。コンピュータに表現させようとする文字の集まりを「文字集合」、文字集合に属する個々の文字を数に置き換える処理を「文字符号化」といいます。この「文字符号化」の方法を俗称として「文字コード」と呼びます。アルファベットのための符号化方法としてはASCII(ISO646)が有名です。古くはEBCDICという符号化系も存在していたそうですが、今では一部の汎用機を除いては使われなくなっています。

+
+

西洋の歴史的事情

+

ASCIIが事実上唯一の標準となった英語のアルファベットについてはほとんど問題は生じません。問題はそれだけでは表現できない文字があることです。ヨーロッパには英語で用いられる「通常」のアルファベットの他に、アクセント記号などの付いた文字を使う言語があります。これらはASCIIでは表現しきれません。幸い、ASCIIはアルファベットと記号だけで128文字以下しか使わないので1バイトのうち7ビットしか消費していませんでした。そこで、(もともとはパリティとして使われていた)残りの1ビットを使って導入した128文字にそれらの文字を割り振った「文字コード」が設計されました。これがISO-8859です。ISO-8859には国ごとにいくつかのバリエーションがあり、ISO-8859-1からISO-8859-16まであります。一番広く使われているのがISO-8859-1、通称Latin1です。

+
+
+

わが国の歴史的事情

+

アルファベットのような表音文字は文字の種類が少ないため、1バイトあれば全部の文字がなんとか表現できます。しかし、日本語の数千の表意文字はとても1バイトでは表現しきれません。

+

汎用機全盛の昔にはEBCDICコードの空き領域にカタカナを割り当てたEBCDIKという文字コードが使われていたそうです。その後、ASCIIが広まるとISO-8859と同様の方法でカタカナを取り込んだJIS-X-0201が登場しました。これがいわゆる半角カナです。

+

しかし、カタカナだけではどうにも読みにくいので、通常使う全部の文字を表現したいという要求は当然でした。そこで登場したのが、世界初の多バイト文字コードであるJIS-X-0208でした。これはISO-2022という規格で定められた枠組みに従い、複数バイトで1文字を表現することで、ひらがな、カタカナ、漢字、記号、ギリシア文字など数千の文字を含む文字集合を表現できる文字コードです。今でも電子メールは基本的にこの文字コードを使っています。

+

しかし、ISO-2022の定める枠組みは「ここからはアルファベット」「ここからは漢字」というように文字種を切り替える仕組みになっていますから、コンピュータによってテキスト処理をするのにはどうにも使いにくい方式でした。場所によって同じバイト列の持つ意味が変化するので、いつも先頭から1バイトずつスキャンしなければなりません。

+
+

それを解決するために登場したのがシフトJISです。シフトJISは、以下のような条件を満たす文字コードとして登場しました。

+
    +
  • マルチバイト文字の先頭バイトは最上位ビットがオンである

  • +
  • 先頭からスキャンしなくても処理可能

  • +
  • 当時すでに広く使われていた半角カナと共存可能

  • +
  • JIS-X-0208の文字からテーブルを使わなくても変換可能

  • +
+

シフトJISは文字コード、つまり文字に対応する番号がJISの文字番号をずらす(シフトする)ことによって得られるから、このように名付けられたそうです。シフトJISは本誌(Linux Magazine)を出版しているアスキーの技術者が発明したのだと聞いています。シフトJISはマイクロソフトによって採用され、PC業界で広く用いられました。

+

一方、UNIX業界ではEUC(Extended UNIX Code)と呼ばれる文字コードが使われていました。シフトJISでは半角カナの領域を避けるため、漢字などのマルチバイト文字の一部は通常のASCIIの範囲と重なっていましたが、EUCでは半角カナの使用をきっぱりあきらめたため、マルチバイト文字は最上位ビットがオンのバイトだけから構成されます。これにより、マルチバイト文字とシングルバイト(ASCIIの範囲)文字とが明確に区別できます。

+

このような歴史的事情により、日本ではJIS-X-0208(通称JIS)、シフトJIS、EUCの3種類の文字コードが広く使われることになりました。JISは比較的簡単に区別が付きますが、シフトJISとEUCはテキストから自動的に区別することは困難です。文字コードの判定を間違えたときは当然正しい文字を表示できません。これが文字化けの原因です。1つの国で3種類もの文字コードが並列して使われた例は珍しいと思います。日本は文字化け先進国だったのです。ちっともうれしくありませんが。

+

おかげで日本では複数の文字コードを切り替えて処理する技術が発展しました。

+
+
+

海外の事情

+

表意文字を使うアジアの各国では状況は似たようなものです。韓国ではEUCとほぼ同じ符号化方法であるEUC-KRが主に用いられています(EUC-KRと対比して日本のものをEUC-JPと呼びます)。中国ではGB2312、台湾ではBig5と呼ばれる文字コードがあります。どれも似たような方法でマルチバイト文字を表現しています。幸い、日本のように1つの国の中で複数の文字コードが対立するような事態はあまり起きなかったようですが、国際的に情報交換ができないのは問題です。

+

その問題に対する答えとして登場したのがUnicodeです。Unicodeは古今東西の文字をすべて表現できる文字集合を目指して開発されました。過去の反省を生かしていろいろとうれしい点も多いUnicodeですが、「Unicodeに含まれない文字は救済不可能」などの課題も残っています。結局、プログラムが対応しなければならない文字コードがまた1つ増えたというのが現実のようです。Unicode以後の文字処理の話はまた今度。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-032.xhtml b/docs/vol2/xhtml/p-032.xhtml new file mode 100644 index 0000000..23d99bc --- /dev/null +++ b/docs/vol2/xhtml/p-032.xhtml @@ -0,0 +1,377 @@ + + + + + +第46章 最終回・ネタのタネ + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay46 +
+

+探訪Ruby
+最終回・ネタのタネ +

+
+

[Linux magazine, 2005年3月号]

+
+

『Linux Magazine』連載「探訪Ruby」の最終回で、(当時の)私の情報源を紹介しています。とはいえ、紹介されているRAA, RubyForgeはすでになく、メーリングリストは現存するものの低調です。ブログなども紹介されているものは(私自身の「Matzにっき」を含めて)ほとんど止まっています。IRCもSlackやDiscordに置き換えられましたね。「アンテナ」が紹介されていますが、この言葉も久々に耳にしましたね。現代ではRSSにすっかり置き換えられていて、そのRSSも利用者が減っていますね。Ruby関連のカンファレンスの紹介もありますが、RubyConfの参加者が数十人と今とはまったく違った印象ですね。たとえばRubyKaigi 2024の参加者が1400人であることを考えると隔世の感があります。

+

では、現在の情報源は何かと考えると、私はいまだにRSSリーダーを使っています。あとは、X(旧Twitter)かなあ。どちらも当時はなかったものですね。YouTubeやTikTokで情報発信というのもあるようですね。

+

「Ruby開発日記」は「型についての一考察」です。この頃は動的型全盛期だったはずですが、すでに静的型についての検討が行われているのは興味深いですね。しかも、静的型に対する私の態度がこれだけ時間が経ってもまったく変化していない。

+
+
+

最終回となる今回は、今までの連載を振り返るとともに、今まで紹介してきたようなRuby関連の情報をどのように入手できるかについて紹介します。

+
+
+

連載のまとめ

+
+

本連載は2003年12月号から、「入門Ruby」に続く連載として始まりました。前回の連載は初心者を卒業してから幾星霜いくせいそうの私にとって入門記事を書くのは結構厳しく、音を上げてしまったというのが、正直なところです。それに続くこの「探訪Ruby」はRuby関連の最新情報を紹介するような連載として始まりました。表46.1に第1回から先月までの本連載の過去の内容を示します。

+ +
+

表46.1●「探訪Ruby」連載リスト

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
03年12月号Rubyの国へようこそRubyの簡単な紹介と連載の方向性について
第1回オープンソースのビジネスストーリービジネス視点からのオープンソース論
04年1月号テスト第一主義テストファーストプログラミング
第2回オープンソースと特許ソフトウェア特許の問題点と課題
04年2月号Wiki Wiki誰にでも書き換え自由なWikiについて
第3回日本Rubyの会RubyConf 2003と日本Rubyの会
04年3月号Blogの世界Rubyによる各種Blogソフトウェアの紹介
第4回Rubyの未来Riteについて
04年4月号アスペクト指向アスペクト思考の紹介とAspectR
第5回ごみ集めガベージコレクション入門
04年5月号RubyとEmacsruby-modeとRRBの紹介
第6回Emacsによる開発Emacsのある生活
04年6月号InstikiInstiki, Redcloth, Madeleineの紹介
第7回歴史は繰り返す過去の失敗から学ぶ
04年7月号テンプレート各種テンプレートライブラリの紹介
第8回プロトタイプな世界プロトタイプベース言語
04年8月号DBMdbm, gdbm, bdb, qdbmの紹介
第9回メールリーダーの新アプローチ検索ベースのMUAについて
04年9月号tDiarytDiaryの紹介など
第10回挑戦! 言語塾Langsmithメーリングリストについて
04年10月号Webアプリケーションの基礎HTTPとCGIについて解説
第11回Lightweight Language WeekendLLWイベントレポート
04年11月号Webアプリケーションの基礎(その2)CGIとセッション
第12回汝は人狼なりや?人狼BBSの紹介
04年12月号WebアプリケーションフレームワークCGIKit解説
第13回Ruby Conference 2004レポート行ってないのにレポート
05年1月号マークアップ・マークダウンRD, Redcloth, Blueclothの紹介
第14回名前重要私の「座右の銘」について
05年2月号ダイコンDependency Injectionについて
第15回文字コードの憂鬱文字コードに由来するトラブルなど
05年3月号ネタのタネ最終回、情報収集の方法
最終回型に関する一考察プログラミング言語と型について
+
+

本編のほうはそのときどきの最新ネタを紹介したつもりですが、ちょっと難しすぎたかもしれません。また誌面と私自身が下調べに使える時間の両方の制約から内容の突っ込み具合が足りないと感じられた方もいらっしゃるかもしれません。一方、私の日ごろ考えていることの一端を書きつづった「Ruby開発日記」は、いろいろな人に楽しんでいただけたようです。どうやら「役に立たないが面白い」という評価を受けていたようですが、そうだとしたらまったく私の狙いどおりということになります。

+
+
+ +

Ruby情報の集め方

+
+

さて、今まで本連載で紹介してきたようなRuby界での情報を得るためにはどうしたらよいでしょうか。私が利用しているものは、主に以下のような方法です。

+
    +
  • RAA

  • +
  • RubyForge

  • +
  • メーリングリスト

  • +
  • Blog/日記

  • +
  • Web Magazine

  • +
  • IRC

  • +
  • 各種イベント

  • +
+

それら1つ1つについてもうちょっと詳しく紹介してみましょう。

+
+
+

RAA(Ruby Application Archive)

+
+

RAA(http://raa.ruby-lang.org/)は今回の連載の最大の情報源です。これはRuby関連のアプリケーション、ライブラリ、その他についての情報を集めたインデックスサイトです。RAAはインデックス情報を提供するだけで、ソフトウェアの配布などは行いません。オープンソースコミュニティでたとえるならば、freshmeat.netであって、sourceforge.netではないというところでしょうか。

+

RAAのトップページには、新たに登録された5プロジェクトと、最近更新された10プロジェクトがリストされています。これをウォッチしているだけでかなり最新状況を把握できます。最近ではRSSフィードにも対応しています。

+
    +
  • http://raa.ruby-lang.org/index.rdf

  • +
+

をお使いのRSSリーダーに登録すれば、いつでも最新の更新をチェックできます。RAAは単にライブラリだけではなく、ドキュメントやRubyで書かれたアプリケーションもインデックスしていますから、RAAの更新をチェックするだけでRuby界隈の動向のかなりの割合をカバーできそうです。

+

原稿執筆時点で、RAAには220カテゴリーにわたる1308のプロジェクトが登録されています。またプロジェクトを登録している開発者は646人に及びます。

+
+
+

RubyForge

+
+

RAAがfreshmeat.netのRuby版であるならば、sourceforge.netのRuby版がRubyForge(http://rubyforge.org)です。RubyForgeはRuby関連のプロジェクトをホスティングするサイトです。RubyForgeはCVSリポジトリ、バグトラッキングなどオープンソースプロジェクトに必要なツールをさまざまに取りそろえています。ホスティングにはSourceForgeで使われていたソフトウェアから派生したgForgeを使っています。残念ながらgForgeはPHPで記述されています。まあ、使えるツールは使えばいい、何でもRubyで再発明する必要はない、という現実的な判断なのでしょう。アメリカ人らしい合理性です。

+
+

RubyForgeもRSSフィード

+
    +
  • http://rubyforge.org/export/rss_sfnews.php

  • +
+

を提供しています。原稿執筆時点で、RubyForgeには469プロジェクト、1419ユーザーが登録されています。RubyForgeはInfoEther社の提供で運営されています。

+
+
+

メーリングリスト

+
+

昔からRubyの開発はメーリングリストを主体として行われてきました。Web全盛のこの時代にあっても、いまだにコミュニティの中心と開発の母体はメーリングリストにあるといえます。Ruby関連のメーリングリストはたくさんありますが、ここでは主要な4つのメーリングリストを紹介します。

+

ruby-listはRubyユーザーのためのメーリングリストです。ruby-listは最も古いメーリングリストです。その始まりは1995年にさかのぼります。最近は書籍やWebから情報を得られるせいか流量がすっかり少なくなってしまい、メールはだいたい日に数通程度です。雰囲気は良好だと思っていますが、聞くところによると初心者には近寄りがたいところがある、と感じられるところもあるそうです。そうなのか。まあ、「なんか動きがおかしいのですが」という質問に対して、「このパッチで直ります」などと、開発者メーリングリスト顔負けの回答が来ることがあるところなどが原因なのでしょうか。とはいえ、別に恐いところでないので気軽に参加していただければよいと思います。

+

原稿執筆時点でのruby-listの累計メール数は40537、登録メンバー数は2470名です。

+

ruby-devは開発者のためのメーリングリストです。バグレポートや修正パッチ、あるいはRubyの仕様を改善する提案などが流れています。C言語の知識や各種OSに関する移植性などの情報、プログラミングテクニック、また言語やライブラリの設計のあり方についても論じられることがあります。Rubyに関わっていて一番面白いのは、もしかしたらここではないかと思います。言語そのものに関心がある人、Rubyの実装に興味がある人だけでなく、プログラミング全般に興味のある人にもお勧めのメーリングリストです。原稿執筆時点でのruby-devの累計メール数は25473、登録メンバー数は661名です。

+

ruby-listとruby-devは日本語のメーリングリストですが、海外でも広く使われているRubyには英語のメーリングリストも存在します。それがユーザー向けのruby-talkと開発者向けのruby-coreです。

+

ruby-talkの登録メンバー数は1306名しかいませんが、NetNewsのcomp.lang.rubyニュースグループと相互乗り入れを行っています。ruby-talkに投稿したメールは自動的にcomp.lang.rubyに流れますし、逆にcomp.lang.rubyに投稿された記事はruby-talkの転送されます。そのため、ruby-talkの読者の数がどれだけいるのかは調べることができません。おそらくは万単位の人が読んでいるのだろうと想像します。読者数を反映するのか、メールの流量も多く、今や日本語のRuby関連のメーリングリストの流量すべてを合わせたものの数倍の量のメールが流れます。現在までの累計メール数は126464で、実にruby-listの4倍を超えます。同様の形態を取っているcomp.lang.pythonやcomp.lang.perlよりは流量が少ないとはいえ、下手をすると1日に100通をゆうに超えるメールが流れます。これが全部英語ですから、読むのもなかなか大変です。

+
+

ruby-talkではいくつか面白い企画が行われています。その内のいくつかを紹介します。

+
+

ruby-dev summary

+

最近では、海外ユーザーのほうが多くなってしまったと思われるRubyですが、開発の中心はいまだに日本人が担っています。そのことから重要な議論はruby-devメーリングリストで日本語で行われることが多いです。そのような「最新動向」をぜひとも知りたいという非日本人のためにruby-devでの議論のサマリーをruby-talkに紹介するという企画です。数名の日本人ボランティアが毎週翻訳を行っています。新規ボランティアは常時募集中です。

+

Ruby Quiz

+

毎週出されるプログラミング課題にRubyで答えるという企画です。ルールとして、問題提出後48時間は解答をポストしないことになっています。最近の問題としては「コマンドライン引数で受け取った数字をASCIIアートでLCD表示しなさい」というものがありました。

+

Ruby Weekly News

+

Ruby関連の情報を毎週まとめています。当然ですが海外のニュースが中心です。

+

comp.lang.ruby FAQ

+

comp.lang.rubyニュースグループ(およびruby-talkメーリングリスト)に関する「よくある質問」をまとめたものです。1カ月に1回程度ポストされています。このFAQリストをメンテナンスしているのはRuby Wayの著者であるHal Fultonです。

+
+

英語による開発者メーリングリストruby-coreには351名の登録メンバーがおり、累計メール数は4230通です。こちらはNetNewsと相互接続していないので流量はおとなしいものです。ruby-devに負けないくらい濃い内容のものが多いですが、メールの量はruby-devよりもはるかに少ないです。

+

これらのメーリングリストは開発者と直接やりとりできる機会でもあります。あまり気負わずに参加してみてはどうでしょうか。

+

これらのメーリングリストに参加するには、「ruby-*-ctl@ruby-lang.org」にメールを送ります。メールのサブジェクトは空でよく、本文に「subscribe 名字名前」という行を含めます。アドレスの「*」の部分にはメーリングリストの名前「list」「dev」「talk」「core」が入ります。Fromアドレス宛に登録確認メールが来ますので、そのメールに返答することで登録が完了します。

+
+
+

Blog/日記

+
+

Blogや日記から得られる情報も馬鹿になりません。Ruby関連の日記やBlogを監視するためには、アンテナと呼ばれるものが便利です。アンテナは各種Webページをチェックして最近更新されたものから順に並べてくれます。

+

Ruby関連のアンテナで最も充実しているものは、おそらく、Ruby hotlinks(通称「るるりん」、http://www.rubyist.net/~kazu/samidare/)でしょう。とりあえずRubyに関係ありそうな話題が頻繁に登場する日記などはほとんどカバーしているのではないでしょうか。

+
+

その他に私が愛用しているアンテナは、\ayアンテナ(http://kazuhiko.tdiary.net/a/)です。これらには直接Rubyに関連ないページもたくさん含まれていますが、面白いものが多いです。

+

さて、個別のBlogからもいくつか紹介しておきましょう。まず、最初に紹介するのは私自身の「にっき」(あるいはBlog)です。

+

Matzにっき(http://www.rubyist.net/~matz/)は、Rubyのこと、プログラミング言語論から私の家族や日常生活まで、雑多な内容の日記です。更新は毎日とはいかないのですが、365日毎日ぶんのエントリを書いています。最近はRubyの記事に混じって、「XML批判」とか「PHPについての考察」なんかも書いています。

+

もう1つはYAML for Rubyの開発者、why the luckystiffが音頭をとって始まったRedHanded(http://redhanded.hobix.com/)です。日本語がわからないなりに、日本の状況を一生懸命ウォッチしている姿が印象的です。最近はライターに日本人も加わり、より的確に強力に日本の情報を「世界に発信」してくれるのではないでしょうか。

+
+
+

Web Magazine

+
+

Ruby界でも「雑誌のスタイルをとったWeb」であるWeb Magazineが発行されました。その名もRubyist Magazine(http://jp.rubyist.net/magazine/)、略して「るびま」です。現時点では、第4号まで、ほぼ月一(ただし、1月はお休み)で発行されています。例として第4号の目次を表46.2に示します。

+
+

表46.2●Rubyist Magazine 第4号 目次

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
0004号(2004-12)
巻頭言
Rubyist Hotlinks 第4回
Rubyではじめるプログラミング
RubyOnRailsを使ってみる
Ruby Library Report 第3回
lilyでブログカスタマイズ 第2回
Win32OLE活用法 第2回
build Ruby on Windows 第1回
Ruby/Tk講習会レポート
RubyNews
RubyEventCheck
編集後記
+
+

入門から高度な内容までカバーした充実した内容です。これだけのクオリティのWeb Magazineを毎月、しかも、無料で、発行していることは驚きに値します。

+

「るびま」が発行されたときには海外の人たちから、続々と「いいなぁ」という声が上がりました。そこで、現在はartima.comのBill Vennersを中心に英語版のRuby Web Magazineの発行に向けて準備中なのだそうです。無事発行の暁には、「るびま」との翻訳記事のやりとりも行いたい、とのことです。

+
+
+

IRC

+
+

Intenet Relay ChatでもRubyについて語り合っている人々がいます。Ruby関連のチャンネルはたくさんあるようですが、主要なものは日本語では「%Ruby」、英語では「#ruby-lang」です。

+ +
+

%Ruby

+

irc.tokyo.wide.ad.jpなどでコネクトできます。*.jpドメインからの接続に限定されています。最近はあんまり盛り上がっていないようです。「%rrr」というチャンネルもあると聞いたことがありますが、私は参加したことがありません。

+

#ruby-lang

+

irc.freenode.netでコネクトできます。こちらは180名以上の参加者がおり、活発な議論が行われています。WebアプリケーションフレームワークであるRuby on Railsについて語り合う「#rubyonrails」やRubyForgeを話題とする「#rubyforge」などもあるそうですが、こちらも参加したことはありません。

+
+

しかし、IRCはリアルタイムな会話なので大変時間を消費します。IRCに没頭すると開発の時間や原稿を書く時間がごっそり削られてしまいますから、私はこれらのチャンネルにログ記録用のbotを常駐させて、1日一度のペースでログをメールで読んでいます。これらのチャンネルでmatzを見つけて、話しかけてもお返事できないかもしれませんから、あらかじめごめんなさい。だいたい、matzをキーワードにして斜め読みしていますから、IRCで私に何か伝えたいときには、ログの中にmatzという単語を含めると確実です。

+
+
+

各種イベント

+
+

ネット上のやりとりもよいですが、ときには直接顔を合わせるのも大変有効です。Rubyもあちこちで認知されていて、Rubyに関連する話題が取り上げられるイベントも増えてきています。現時点で予定がはっきり決まっているのは『オープンソースカンファレンス2005』です。

+
    +
  • 『オープンソースカンファレンス2005』

  • +
  • 2005年3月25日(金)・26日(土) 10:00-17:00

  • +
  • 開催場所: 日本電子専門学校 7号館(東京・大久保)

  • +
  • 主催: オープンソースカンファレンス実行委員会

  • +
+

それからLightweight Languageというイベント(一昨年はLL Saturday、昨年はLL Weekend)が毎年開かれています。これはMITで開かれているLightweight LanguageというイベントにインスパイアされたRuby, Python, Perl, PHPなどの軽量言語を取り扱うカンファレンスです。実は、このLightweight Languageが今年も開催されるという情報を入手しました。まだ、日程や場所などは未確定です。昨年は、Ruby, Python, Perl, PHPにとどまらず、Curl, Gauche,Groovy, Pnuts, Squeakなどについても紹介されました。今年はどのようなプログラムになるでしょうか。

+

また、大阪では毎年『関西オープンソース』というイベントが大阪産業創造館で行われており、きっと今年も開催されるでしょう。

+

海外でもイベントは行われています。今年、確定しているものは、8月のOSCON 2005(O’Reilly Open Source Convention. August 1-5, 2005. Portland, OR)および、秋頃のRuby Conferenceです。Ruby Conferenceはアメリカ東海岸と西海岸で交代で開催されています。昨年は東海岸(バージニア州)で開かれたので、今年はどこか西海岸で開催されるでしょう。

+
+

Ruby Conferenceは毎年の参加者が50名から60名程度のこぢんまりとしたカンファレンスです。しかし、Dave ThomasやDavid Alan Black, Hal FultonなどRuby界の有名人と直接会うことができますし、なによりプレゼンテーションの内容が、この人数にはもったいないくらいに高度かつ良質なものばかりです。毎年、日本人は3~4名くらいしか参加していません(昨年は私も出席できませんでした、残念)が、今年はもうちょっと多くの日本人が参加できればよいと思っています。言語が英語なのがちょっと難点ですが。夏頃までには開催地も決まり、情報がhttp://www.rubycentral.org/conference/で告知されると思います。

+

一方のO’Reilly OSCONのほうは、オープンソース全般をカバーする大規模なカンファレンスです。私は2003年に出席する機会がありましたが、キーノートスピーチでは聴衆が数千人を超える本当に大きなカンファレンスでした。OSCONではPerl, Python, MySQLなどオープンソースソフトウェアごとにトラックが割り当てられ、同じ部屋で連続してそのソフトウェアに関するセッションが開かれます。

+

昨年は人材不足などからRubyトラックを開催できませんでしたが、今年はすでにRubyトラックを実現するための画策が始められているそうです。日程(と予算)の都合がつけば今年は私もぜひ出席したいと考えています。こちらも詳細はまだ発表になっていませんが、いずれ、http://conferences.oreillynet.com/で告知されることでしょう。こちらもLarry WallやGuido van Rossumや、そのほかオープンソース業界の有名人と直接コンタクトできる貴重な機会です。日本からOSCONに参加するツアーとか組んだらどうかなあ。「まつもとゆきひろと行くOpen Source Convention」とか。いかがでしょう。

+

アメリカのイベントばかり紹介しましたが、ヨーロッパでは、EuRuKo(European Ruby Conference)が開催されています(昨年の会場はドイツ、カールスルーエ)。今年も開催されそうですが、まだ情報が入ってきていません。

+
+
+

おわりに

+
+

長らく続いてきた連載もこれが最終回です。なごり惜しい気はしますが、お別れです。ただ、Rubyそのものはこれからも発展を続けます。これからますます広がっていく「Rubyの世界」の中で、皆さんとまたどこかで再会できることと思います。そのときまで、さようなら。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-033.xhtml b/docs/vol2/xhtml/p-033.xhtml new file mode 100644 index 0000000..ea5e559 --- /dev/null +++ b/docs/vol2/xhtml/p-033.xhtml @@ -0,0 +1,69 @@ + + + + + +第46章 最終回・ネタのタネ + + + + +

Matz Essays Volume 2

+ + +
+ +

◆ Ruby開発日記 ◆ 型についての一考察

+
+

プログラミング言語の重要な要素として「データの型」があげられます。文字列データはString型とか、整数データはint型とかいうときのアレのことです。CやJavaのような言語は変数や式の型がプログラム中に明示されます。このような型を「静的な型」と呼びます。「静的」というのは「プログラムを見ただけで実行しなくてもわかる」という意味です。ところがプログラミング言語によっては変数や式の型をプログラムの中では指定しないので、実行してみるまでは型がわからないものもあります。Rubyはその典型的な例ですね。このような型を「動的な型」と呼びます。「動的」は読んで字のごとく「静的」の反対で、「実行して初めて決まる」という意味です。

+

静的な型はプログラムの字面を解析しただけで型の整合性が漏れなくチェックできるので、バグを早く見つけることができるというメリットがあります。

+

一方、動的な型には、変数や式の型を明示的に指定しなくて済むのでプログラムが簡潔になる、また、状況に応じていろいろな型のデータを統一的に扱うなど柔軟性が高いというメリットがあります。特に一連のメソッドを持っていれば、そのオブジェクトの型がなんであっても動作するのは大きな利点で、Duck Typingと呼ばれています。たとえば、ファイル入出力を行うIOの代わりに文字列に対して読み書きを行うStringIOを用いるようなことが簡単にできます。

+
+
log = Logger.new(STDERR)
+....
+
+s = StringIO.new
+log = Logger.new(s)
+....
+puts s.string   # 文字列を取り出す
+
+

Javaなどであれば、IOStringIOの双方が共通にimplementするinterfaceが必要になるところです。Duck Typingの由来は英語のことわざである「アヒルのように鳴き、アヒルのように歩くものはアヒルに違いない」から来ているようです。

+

Javaなどの静的型を持つ言語の経験が多い人にとっては、Rubyなどのような「実行してみないとわからない」型は不安に感じるもののようです。メーリングリストなどでも、「Rubyにも静的な型を」というリクエストがたびたび登場します。これはRubyに対してだけではなく、Pythonなどでも同様のようです。もちろん全面的に静的な型を採用してしまえば、もう違う言語になってしまうのですが、オプショナルであればかまわないだろうという主張のようです。

+

そのような要望を受けて、Pythonの開発者として名高いGuido van Rossumが、Pythonに将来(省略可能な)静的型システムの導入について自らのブログに書き込みました。

+
+

これを読んでみると、最初の2つは、Javaでも導入されたばかりのGeneric Typeや、型のオーバーロード、interfaceの導入など、静的型言語の型システムとしても十分に通用する本格的なものをアイデアとして紹介しています。しかも、型の同一性の判定に、デフォルトではDuck Typing(必要とされるメソッドを持つかどうかで判定)を採用するなど、動的型の言語として長い歴史を持つPythonの伝統にも配慮したすばらしいものです。

+

しかし、これを読んでいろいろと考えたあとで、私が思ったことは「Rubyではこのような静的型システムの導入はやめよう」ということでした。主な理由は以下のようなものです。

+
    +
  • これだけ完備した型システムを用意しても、オプショナルでは効果は半減以下である。言語が複雑になる割には得られるものが少ない

  • +
  • 効率のよい実装が思い付かない。私の知識や能力の限界かもしれない

  • +
+

Guidoも同じように思ったのかどうかはわかりませんが、数日後に3番目の記事がポストされました。こちらでは新文法の導入は、

+
    +
  • def文でのメソッド引数と戻り値の型の指定

  • +
  • interface文の導入

  • +
+

に限定し、また、型のチェックは実行時に行うことにしたようです。いきなり現実的ですね。これならば実装もずいぶん簡単になりますし、それなりの効果もありそうです。もっともコンパイル時のチェックを希望する人々にとっては大きな後退かもしれませんね。

+

Rubyについては現時点では、将来的にも静的な型を導入するつもりはありません。型によるチェックは便利な点もありますが、すべてのバグを見つけてくれるわけではありませんし、むしろ網羅的なユニットテストを推奨するほうがバグの検出率も高く、実用的だと考えるからです。Lispなどの動的型言語の長い歴史も静的な型なしでもうまくやれるということを示しているように思います。とはいうものの、今後面白いアイデアが見つかれば、喜んで検討を行うつもりです。

+

型に関する話題はまだまだホットです。特にプログラムには型を記述せずに、その使われ方から変数や式の型を決定する型推論という手法にはさまざまな可能性が秘められているようです。Pythonに対しては、よく似た文法を採用し、静的な型と型推論を導入したBoo(http://boo.codehaus.org/Home)という言語が開発中です。

+

Rubyに対しては、Rubyプログラムを解析して型推論を行い、可能な限り静的な型チェックを試みるTyping Ruby(http://truby.sourceforge.jp/index.j.html)が登場しています。

+

Typing Rubyはまだまだ開発が始まったばかりですが、非常に興味深い可能性を示していると思います。

+

プログラミング言語と型、切っても切れないこの関係には今後も注目していこうと思っています。

+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-034.xhtml b/docs/vol2/xhtml/p-034.xhtml new file mode 100644 index 0000000..7006392 --- /dev/null +++ b/docs/vol2/xhtml/p-034.xhtml @@ -0,0 +1,106 @@ + + + + + +第47章 ハッカーとの遭遇 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay47 +
+

+まつもと ゆきひろのハッカーズライフ
+ハッカーとの遭遇 +

+
+

[UNIX USER, 2005年4月号]

+
+

連載タイトルにも含まれている「ハッカー」という言葉の説明です。言葉というのは生き物でなかなか思うようには使われてくれないものですが、ハッカーについては、当時広まりつつあった「ハッカーとは悪い人」というイメージはこの20年でだいぶ払拭できたのではないでしょうか。うれしいことです。一方、WikipediaのことをWikiと省略するのは残念ながら定着してしまいそうです。

+

今回の記事ではさらに「ハッカー」と呼ばれる人の気質を『ハッカーズ大辞典』(JARGON FILEの和訳)からの定義とLarry Wallの「ハッカー三大美徳」を引いて紹介しています。この気質は時間が経っても変化しないようです。やはり人間の気質や性格は技術などに比べてだいぶゆっくりとしか変化しないようです。

+
+

こんにちは、はじめまして。まつもと ゆきひろと申します。世間ではRubyというプログラミング言語を作った人として知られています。職業はプログラマーで自称ハッカーでもあります。この連載では私たち「ハッカー」の生態や心理について紹介できればと考えています。

+
+

ハッカーとは

+
+

「ハッカー」といっても必ずしもネットワーク経由でシステム侵入を行ったり、パスワードを破ったりするような悪者ではありません。そういえば最近そういう誤用をあまり耳にしなくなりましたね。

+

ハッカー(Hacker)とは文字どおり「Hackする人」という意味です。「Hack」というのはもともとは「(おのなどで)叩き切る」というような意味だそうですが、転じて「(プログラムなどを)でっちあげる」というような意味で使われています。「でっちあげる」というとずさんな仕事のように思えるかもしれませんが、実際には「素早い仕事」というニュアンスで、すばらしく出来のよいものも「ハック」ですし、その場限りに間に合わせのような仕事もやっぱり「ハック」です。そんな仕事を好むハッカーは、要するにコンピュータ(あるいはプログラムできるものすべて)にのめり込むようなタイプです。

+
+

ハッカーたち自身がまとめた用語集である「jargon file」ではハッカーをリスト47.1のように定義しています。長いでしょう? それだけHackerという単語にこだわりがあることがうかがえます。

+
+

リスト47.1●ハッカーの定義(『ハッカーズ大辞典』、アスキー、ISBN4-7561-0374-X の掲載要旨)

+
+

①プログラム可能なシステムの細かい部分を探ったり、その機能を拡張する方法を探求したりするのに喜びを感じる人。必要最小限のことしか勉強したがらない大半のユーザーとは対照的。

+

②熱中して(さらには取りつかれたように)プログラミングする人、またはプログラミングを単に理論化するのではなく、プログラミングを楽しむ人。

+

③ハック価値(hack value)を評価できる人。

+

④手早くプログラミングするのが得意な人。

+

⑤ある特定のプログラムのエキスパート、または頻繁にそれを使って仕事する人。たとえば「UNIXハッカー」。

+

⑥あらゆる種類のエキスパートまたは熱狂的なファン。たとえば「天文ハッカー」。

+

⑦創意工夫を発揮して制約を打破したり回避したりするという知的な難問を楽しむ人。

+

⑧(誤用)あちこち調べ回って機密情報を探りだそうという悪意の詮索好き。このことから「パスワードハッカー」「ネットワークハッカー」などといわれる。正しい用語は「クラッカー」。

+
+
+

ハッカーは他の人から見て、一見不可能だと思えることを現実にしてしまうことがあります。プログラミングの知識がない人、経験が浅い人からは魔法使いのようにみえることもあります。プログラミングの生産性も大変高いことが多いようです。「好きなことにのめり込んでいる」という意味では幸せそうですが、富とか資産とかいう単語とは無縁の人が多いようです。しかし、世の中には例外的に自分の才能を上手にお金に変える手段を見いだしているハッカーもいます。

+
+
+

良いハッカー・悪いハッカー

+
+

システム侵入をするような悪い人がハッカーと呼ばれたのは、それがかつて「創造的な知的チャレンジ」だったので、そのようなことを行うハッカーが存在したからです。

+

たいていのハッカーは世間一般と倫理観に少々ずれがあります。ときには法律を順守することや「良い社会人」であることよりも、知的好奇心を満たすことのほうが大切だと考える気持ちはわからないでもないです。

+

ですが、ハッカーであることと、悪人であることはまったく独立です。いや、むしろ、仮に本物のハッカーがシステム侵入を行ったとしても、それの動機はおそらく「やってみたかったから」「できることを証明したかった」であって、「利益を得たい」というような犯罪的な動機ではないだろうと思います。ハッカーにはお金のような物質的欲求の低い人が多いのです。

+
+
+ +

あなたはハッカーか

+
+

さて、「あなた」はハッカーでしょうか。こんな雑誌(と言ったら失礼ですね)を読むくらいですから、あなたはきっとコンピュータのことが好きで、プログラミングにも関心があるでしょう。また、単なるコンピュータユーザーにとどまらず(そうだったら、Windows関係の雑誌を読んでるはずです)、ハッカー的特質を備えたUNIX系OSのユーザーであるということは、あなたがハッカーである可能性は十分に高いと言ってもよいと思います。

+

私の仮説によると、ハッカー的素質を持つかどうかは、以下の2つの条件を満たしているかどうかで決まります。

+

1つは「クリエイターであるかどうか」です。マニア的要素を持つ人材は「コレクター」タイプと「クリエイター」タイプに別れる傾向があります。もちろん、両方の特質を備えている人もありますが、この場合問題になるのは「プログラミングに対してどちらがより強く表れるか」です。コレクタータイプはマシンスペックや最新の機器に関心を持ち、コンピュータやソフトウェアの使い方には関心を寄せますが、クリエイタータイプは「ないなら作ってしまおう」「ここが気に入らないから直そう」などと自分でばりばり「世界」を変えてしまいます。ですから、自分の好みにいろいろ設定できるようなソフトウェア、特にプログラミングできるようなソフトウェアを好みます。「もの作り」への情熱、それがハッカー的素質の第1要素ではないでしょうか。

+

もう1つは「ブレーキが壊れていること」です。こういう言い方は変かもしれませんが、私が知っているハッカーのほとんどは、何らかの形でブレーキが壊れています。普通の人が「あ、これ無理そう、やめよう」と思うところで、ハッカーは「やればできるかも、やってみよう」と思うようです。その理由は、単なる無知だったり、無謀、根拠の薄い自信、あるいは人並み外れた能力だったりするのですが、とにかく人よりはあきらめが悪い、遅い傾向が見受けられます。だからこそ人のできないことができたりするわけです。もっとも、いつも成功するというわけではありません。しかし、ハッカー予備軍は人知れぬ失敗を繰り返しつつ、いつかハッカーへと成長するのです。

+
+
+

ハッカー三大美徳

+
+

今や知らぬ人などいないスクリプト言語であるPerlの作者、Larry Wallは当代一流のハッカーです。彼によれば、プログラマーの三大美徳は、

+
    +
  • 無精

  • +
  • 短気

  • +
  • 傲慢ごうまん

  • +
+

なのだそうです。もちろん、ここでの「プログラマー」はハッカー的特質を備えたプログラマーのことです。

+

しかし、「無精」だの「短気」だの「傲慢」など、どう考えても短所にしか思えないような特質が「美徳」とはいったいどういうことでしょう。Larry自信の言葉を引用すればこれらの定義はリスト47.2のようになっています。

+ +
+

リスト47.2●ハッカー三大美徳(『プログラミングPerl』、オライリー・ジャパン、ISBN4-8731-1096-3 の掲載要旨)

+
+
    +
  • 無精(laziness)

    +

    トータルで見たエネルギーの支出を減らすために、多大な努力をするようにあなたを駆り立てる性質。こうして労力を省くために書いたプログラムは他人も使うようになり、そのプログラムに関する質問にいちいち答えずに済ますためにドキュメントを書くようになる。そのために、プログラマーにとって最も重要な素質である。またそれゆえ、この本が存在するのである。

  • +
  • 短気(impatience)

    +

    コンピュータがサボっているときに感じる怒り。あなたの司令に反応するだけでなく、実際に指令を予測する — あるいは、少なくともそのようなふりをする — プログラムを書く原動力になる。それゆえに、プログラマーにとって2番目に重要な素質である。

  • +
  • 傲慢(hubris)

    +

    ゼウスの怒りに触れるほど、プライドが高いこと。また、他人にケチを付けられないようなプログラムを書く(そして維持する)ための原動力になるもの。それゆえ、プログラマーにとって3番目に重要な素質である。

  • +
+
+
+

「楽をするためには苦労をいとわない」というような変な話なのですが、ハッカーというものは自分の知的欲求を満たさないことには指一本動かすのも嫌がる一方で、自分のやりたいことにはどんな苦労も苦労と思わない傾向があります。また、短気と傲慢のせいで、自分がコンピュータのために働かされていることを嫌います。コンピュータに与えるデータを作るために機械的作業を繰り返すくらいなら、機械的作業をコンピュータにやらせるスクリプトを作ろうとします。あるいは、今後そのような作業をいっさいしなくてもよいようなツールの開発を開始するかもしれません。普通の人には本末転倒に見えるかもしれません。でも、それがハッカーなのです。

+

この連載では、そんなハッカーたちの生態や心理を観察していこうと思います。ハッカーの生き方は、もしかしたらあなたがより良いプログラマーになるのに役立つかもしれません。保証はできませんけど。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-035.xhtml b/docs/vol2/xhtml/p-035.xhtml new file mode 100644 index 0000000..87d8d2d --- /dev/null +++ b/docs/vol2/xhtml/p-035.xhtml @@ -0,0 +1,158 @@ + + + + + +第48章 キーボードへのこだわり + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay48 +
+

+まつもと ゆきひろのハッカーズライフ
+キーボードへのこだわり +

+
+

[UNIX USER, 2005年5月号]

+
+

和田英一先生(東京大学名誉教授、現IIJ技術研究所研究顧問。2024年時点で御年93歳だそう)と増井俊之さんと私自身のキーボードについてのこだわりを紹介しています。先のお二人と私を並べるのはおこがましい感じがしますが、自らの経験を語ることも大事なので。

+

和田先生は自分の好みのキーボードを商品化しておられます。増井さんはここではキーボードの「;」キーの置き換えしか紹介していませんが、後にAppleに移ってiPhoneのフリック入力を開発されました。世のほとんどの人が日本語を入力するときには増井さんの業績にお世話になっているわけです。私自身は自分の使っている日本語入力用配列「きゅうり改」を紹介しています。20年経った現在でもまだ「きゅうり改」を使い続けているのです。日本語入力システムは「かんな」から「Mozc」に変化しましたが。最近はオープンソースの日本語入力システム開発は低調で、他に入力配列レベルでカスタマイズできるシステムもなく、もしMozcになにかあったらどこに移行すればよいのか悩ましいところです。

+
+
+

キーボードとくら

+
+

生産性にこだわる職人は、自分の道具を選びます。現代のコンピュータ職人が最も接する道具といえば、キーボードではないでしょうか。今月はハッカーのキーボードへのこだわりについて考察します。

+

ハッカーのキーボードとして最も有名なものはHappy Hacking Keyboard でしょう。これは国内ハッカーの「はしり」とでも呼ぶべき、和田英一東京大学名誉教授1 の監修で企画された商品であり、「UNIXハッカーのためのキーボード」と高く評価されています。特徴としてはこだわりのキースイッチ、Sun Type3キーボード2 互換のキー配列、最小限のキー数3 とそれによるサイズの削減などがあります。和田教授のキーボードへのこだわりは、以下のような談話からもうかがえます。

+ +
+

アメリカ西部のカウボーイたちは、馬が死ぬと馬はそこに残していくが、どんなに砂漠を歩こうとも、鞍は自分で担いでいく。馬は消耗品であり、鞍は自分の体に馴染んだインターフェイスだからだ。いまやパソコンは消耗品であり、キーボードは大切な、生涯使えるインターフェイスであることを忘れてはいけない。

+
+

最近ではパソコンは数年で性能が陳腐化してしまいます。CPUが遅い(遅くなるのはCPUではなくソフトなのですが)、HDDの容量が足りないなどの不満から、どうしても買い替えてしまいます。しかし、手になじむ高品質のキーボードは、PC本体を買い替えても、ずっと使える大事なインターフェイスであるというのはわかる気がします。日常接する時間の長いインターフェイスであればこそのこだわりであるといえるでしょう。

+
+
+

十人十色

+
+

ハッカーのキーボードに対するこだわりは、いろいろな形で現れます。知人のPerlハッカーは、アルファベット入力にDvorak配列4 を使い、日本語入力にはT-Code5 を使っています。キーボードやキー配列にこだわる人は多いですが、DvorakとT-Codeの両方を使っているのは彼だけです。

+
+ +
+ fig4801 +
+

図48.1●Dvorak配列

+
+

これまたハッカーとして知られる産業総合研究所の増井俊之さん は、キーボードの配列を変更しているようです。Rubyist Magazine6 第5号のインタビューによれば、最近あまり使わなくなったセミコロン(;)を置き換えてしまったのだそうです。

+ +
+

増井:それから、最近気がついたことは、セミコロン打たなくていいですよね、あんまり。キーボード入力してる時、セミコロンって小指にあるじゃないですか。これは非常にいいポジションなんだけど、CとかPerlでは打つけど、Rubyでは打たなくていいですよね。で、使わないキーがこんないいところにあるのはもったいないから、これリターンにしちゃったんですよ。

+

一同:(爆笑)

+

増井:だから、私の機械は今全部、右手の小指がリターンなんです。すると手を全然動かさなくていけるんですよ。普通の人は、バックスペースで右手を動かすし、リターンでも動かすから、かなり無駄なんですよ。日本語を入力しててもかなり手が動いてるはずです。でも、ここをリターンにしてから、ほとんど手を動かさずに舐めるように入力できるようになりましたよ。

+
+

Rubyに合わせてキー配列を変えるというのも、「ブレーキが壊れている」ハッカーらしい態度ですね。このインタビューには、他にも増井さんのハッカー的人格の原点がうかがえるようなエピソード7 がたくさん載っていますから必読です。

+
+
+

日本語入力の配列は「きゅうり改」

+
+

さて、最後に私自身のことも話しておきましょう。ノートPC派の私は和田教授のような「一生もののキーボード」というわけにはいきません。

+

それでもキー配列に対するこだわりはあって、まずアルファベット入力には、日本語キーボード(いわゆるJIS配列)を英語配列(いわゆるASCII配列)で使っています。これは「A」の段で「Enter」の隣のキーの数が気になるからです。英語キーボードではここにキーがないため「'」キーが変なところにさまよっている8 のが気に入りません。また、JIS配列では「[」と「]」が縦に並ぶのも不満です。「(」と「)」はちゃんと横に並んでいるのに。私がASCII配列を好むのは、最初に就職した会社で使っていたソニーのワークステーション(NEWS)のキーボードが、この「ASCII配列だがEnterの横にキーが多い」タイプだったことが原因の1つかもしれません。

+

キー配列のこだわりはもう少しあって、実は日本語入力用のキー配列に独自のものを定義しています(図48.2)。私はこの配列を「きゅうり改」と呼んでいます。

+
+ +
+ fig4802 +
+

図48.2●日本語入力配列「きゅうり改」

+
+

「きゅうり改」は左手が子音、右手が母音となるキー配列です。たとえば「G」のキー(アルファベットのQキー)を押してから、「U」のキー(アルファベットのJキー)を押すと「ぐ」が入力されます。基本的に左手と右手が交互に動きますからリズムよく入力できます。

+ +

「きゃ」のように拗音ようおんを含む文字は子音キーのあとに「ゃ」キーのような拗音キーを打ちます。それ以外の小文字は「小」キーを使い、

+
    +
  • H」「小」「A」→「ふぁ」

  • +
+

というように入力します。ローマ字入力であいまいになりやすい「ん」と「っ」は独立したキーが割り当ててありまから、「な行」と「ん」が混ざってしまったとか、「っ」で終わる文が打ちにくいとかいう問題とも無縁です。

+

日本語変換システムとしてCannaを使用している方は、私の使っているkpdefファイルを利用することにより、「きゅうり改」を試してみることができます。kpdefファイルは次のURLからダウンロードしてください。

+
    +
  • http://www.rubyist.net/~matz/kyuri.kpdef

  • +
+

Canna付属のmkromdicを使って、kyuri.kpdefファイルからローマ字かな変換テーブル(ドットで始まる名前のファイル)を作ってください。あとは、その変換テーブルをホームディレクトリに置き、.cannaファイルに、

+
+
(setq romkana-table "<変換テーブル名>")
+
+

という行を追加すると「きゅうり改」が使えるようになります。<変換テーブル名> の部分は、作成したローマ字かな変換テーブル名にしてくださいね。

+

「きゅうり改」は完全に私のオリジナルのアイデアというわけではなく、もともとは狩野宏樹さんが1991年に作成された「きゅうり9」という配列に触発されて誕生しました。確か1992年頃だったと思うのですが、キー配列のカスタマイズに凝っていた私は、日本語入力に「きゅうり」を使おうというアイデアに取りつかれました。しかし、実際に使ってみると私にはちょっと使いにくいところがあったので、私の指の癖に合わせて打ちにくいキーを移動したり、拗音の連続で「ゃあ」「ょう」「ゅう」などを入力できるような改善を行い、「きゅうり改」が誕生しました。

+

日本語入力の配列をまったく新しいものにするのには少々勇気が必要でしたが、やってみたら3日で慣れました。プログラマーと言ってもプログラムばかり書いているわけではなく、ドキュメント書きやメール書きなど、日本語を入力する割合のほうがはるかに多いので、日本語入力の効率は非常に重要です。「きゅうり改」は私の生産性を高めてくれています。

+

このように手になじむ道具の追求はハッカーの特質の1つです。皆さんも身の回りのツールの使い勝手を極めてみませんか。ハッカーの気持ちがわかるかもしれません。

+
+
+
+
+
    +
  1. +

    和田英一名誉教授

    +

    和田教授はパラメトロン計算機の開発やAlgol Nの設計、また和田研フォントの開発などでも知られている。
    +http://www.ipsj.or.jp/katsudou/museum/pioneer/e-wada.html +

    +
  2. +
  3. +

    Sun Type3キーボード

    +

    筆者も学生時代に愛用していた名作。その後、SPARC Stationに付属していたType4キーボードはがくんと品質が下がっており、がっかりしたことが記憶に残っている。 +

    +
  4. +
  5. +

    最小限のキー数

    +

    初期のHappy Hacking Keyboardにはカーソルキーすら存在しなかった。どうしても必要なときには、ファンクションキーと併用することで代用。さすがに「使いにくい」との声が上がったのか、Happy Hacking Keyboard Lite以降は小さなカーソルキーが追加されている。 +

    +
  6. +
  7. +

    Dvorak配列

    +

    August Dvorak博士 が開発したキーボード配列。Dvorak Simplified Keyboard(DSK)と呼ばれることもある。一般のキーボード配列は上段の並びからQwerty配列 と呼ばれる。Dvorak配列は図48.1のような配列で、母音が左手に集中しているため、学びやすく打ちやすいといわれている。 +

    +
  8. +
  9. +

    T-Code

    +

    無連想2ストロークによる日本語入力方式。2つのキーの組み合わせに漢字、ひらがな、カタカナが割り当てられていて、それらを直接入力する。変換作業がないため高速に入力できるが、「覚えてない文字は打てない」のが弱点。ただし、ひらがなさえ覚えていれば変換による入力は可能で、変換した文字のストロークを教えてくれる。
    +http://openlab.jp/tcode/ +

    +
  10. +
  11. +

    Rubyist Magazine

    +

    「日本Rubyの会」の有志が発行しているWebマガジン。Rubyist Hotlinksという連載ではRubyに関連する「有名人」のインタビューを掲載している。
    +http://jp.rubyist.net/magazine/ +

    +
  12. +
  13. +

    原点がうかがえるようなエピソード

    +

    筆者が一番印象に残ったのは、ICチップをつないでマイコンを作った話。1970年代後半にはマイコンキットが(小さな)ブームになったが、それを見て「そんなキットを買ってるやつは『なんと生ぬるいんだ』とか『回路なんかできてるじゃん、面白くないな』とか思ってた。自分で回路を考えて、チップを全部そろえて、配線して、それを制御するプログラムを全部書いて、というのがコンピュータの自作だと思ってた」というのは尋常ではない。
    +http://jp.rubyist.net/magazine/?0005-Hotlinks +

    +
  14. +
  15. +

    '」キーが変なところにさまよっている

    +

    英語キーボードでは、「'」キーの位置が「1」の横とか右手側一番下の段など、製品ごとに異なる。悪い冗談としか思えない。 +

    +
  16. +
  17. +

    きゅうり

    +

    オリジナルの「きゅうり」の情報は、狩野さんのページから入手可能。
    +http://khdd.net/kanou/im/kyuuri.html +

    +
  18. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-036.xhtml b/docs/vol2/xhtml/p-036.xhtml new file mode 100644 index 0000000..08632f6 --- /dev/null +++ b/docs/vol2/xhtml/p-036.xhtml @@ -0,0 +1,110 @@ + + + + + +第49章 ハッカーと仕事 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay49 +
+

+まつもと ゆきひろのハッカーズライフ
+ハッカーと仕事 +

+
+

[UNIX USER, 2005年6月号]

+
+

ハッカーっぽい活動はどうしても自分の趣味に陥りがちで、どうしても生活の安定とは遠ざかる傾向があります。それは社会の仕組みの一部で20年経ってもあまり変化していません。そんな中で、ハッカーらしく生きながら、生活を成り立たせる方法について語っています。ここで紹介したいくつかの手段、たとえば趣味のハックと仕事のハックを分ける、ハッカー活動を上司に認めてもらう、起業するなどは現代でも有効です。この時点ではあまり具体化していませんでしたが、ハッカー活動を背景にして、企業の技術顧問に収まるという手段を取る人も増えました(私もいくつかの企業の技術顧問をしています)。あと、ここでは書いてなかったタイプとして、起業や投資などで財を成し、アーリーリタイアしてプログラミング三昧という人も何人かは知っています。こういうのも憧れますが、冷静に考えると、現在の私の状態も、好きなプログラミングをして、カンファレンスなどに出席し、ときどき技術顧問として技術者と交流し、コミュニティ活動もするなど、かなり時間に余裕を持って生活しているので、アーリーリタイアと大差ないのかもしれません。

+
+

ハッカー傾向のある人々は、正直あまりビジネス向けではないかもしれません。なにしろ彼らの美徳は「無精」「短気」「傲慢」ですし、好きなことにはのめりこむタイプですが、逆に嫌いなことはあまり我慢しないかもしれません。しかし、ビジネスとはそんなに甘いものではないのかもしれません。

+

しかし、ハッカーも人間です。眠たくもなれば、お腹も空きます。いくらハッカーでも、かすみを食べて生きていくわけにはいきません。そこで今月は、ハッカーの仕事生活を紹介しましょう。もっとも私の周辺のごく限られたサンプルからの情報なので、独断と偏見があることはあらかじめご承知ください。

+
+

論文や卒業がネック

+
+

ハッカーが多く見受けられるのは、やはり大学や研究機関のたぐいです。大学や研究機関から生まれた「ハッカー技術」は、UNIXやC(AT&Tベル研究所)、BSD(カリフォルニア大学バークレー校)、TeX(スタンフォード大学)などを始めとして数多く存在します。この半世紀、研究職ハッカーがコンピュータサイエンスを発展させてきたと言っても過言ではありません。

+
+

これらはハッカーの知的探求心を満足させつつ、職業として成立する貴重な分野です。ハッカーにとって理想的、と思えるでしょうが、世の中はそれほど甘くありません。研究社会では、主に論文によって業績が評価されます。プログラムを作ることが大好きで、それだけをやっていたいソフトウェア系ハッカーにとって、論文書きはそれなりに苦痛を伴います。人類全体への貢献を考えると、プログラミングが得意なハッカーにはプログラミングだけをさせておいたほうがためになるような気もしないでもないのですが、社会の仕組みとはそうなっていないようです。

+

大学の職員ではなく、学生ハッカーも見逃せません。学生は若さとそれに伴う行動力に満ちあふれていますし(そうでない人もいますが)、また、時間に余裕があるケースが多いので、なかなか面白い作品を作り上げることもあります。学生の作品として最も有名なものは、ヘルシンキ大学時代のLinus Torvalds氏によるLinuxがあります。学生ハッカーには試験やアルバイトといった障害もさることながら、「いつかは卒業してしまう」という厳しい(?)現実があります。Ruby界でもそのような例があり、一番印象的なのは、Intelのx86系を対象にしたJITコンパイラrubyjitと、同じ作者によるRubyをCに変換するrb2cです。いずれも非常に面白いプロジェクトだったのですが、作者の卒業に伴い開発が中止してしまい、後を継ぐ勇者が現れませんでした。残念なことです。

+
+
+

本業と副業が逆転

+
+

学生が卒業すると、就職することになります。大学に残り研究員になることについてはすでに述べたので、企業に就職した場合について考えてみましょう。なお少数ながら、就職して業務でソフトウェアを開発するうちにプログラム開発の面白さに気付きハッカー魂に目覚める「社会人デビュー組」もいます。

+

社会人ハッカーの多くは「副業タイプ」です。本業の仕事は業務命令としてこなしつつ、本当に面白いプログラミングは自分の趣味として行います。仕事の合間とか、帰ってから自宅でとか、寝る時間を削ってとか。まあ、プログラミング以外の趣味を持つ人はたくさんいるわけですから、それと同じだと考えられます。食べるためにそれなりの仕事をして、自分の趣味のためにプログラミングをする。なかなか安定したライフスタイルかもしれません。

+

問題は、ハッカー的人格にあります。ハッカーはブレーキが壊れている傾向があるため、ついつい好きな方にのめりこんでしまいます。また、成果をオープンソースソフトウェアとして公開したりすると、そのソフトウェアのユーザーが増えるにつれ、サポートやメンテナンスなどにかかる時間が半端でなくなってきます。私も最初は、社会人プログラマーの余暇としてRubyの開発を始めました。数年は仕事の合間を縫って開発してきましたが、Rubyのユーザーが増え、メーリングリストのメールが一日数十通を超えるようになると、そのメールを読んで返事を書き、また報告されたバグを修正するだけでも、一日の大部分を消費するようになります。そうなると破綻が見えてきます。ここで、副業タイプのハッカーは次のアクションへの選択を迫られます。

+
+
+ +

次の一手

+
+

考えられる選択肢はいくつかあります。すぐに思い付くのは以下のようなものでしょうか。いずれも実際に行われている選択肢です。

+
    +
  • フリープログラマーになる。仕事をする期間と「ハックする」期間を明確に分ける

  • +
  • 上司を説得してハッカーというもの理解してもらう

  • +
  • ハッカーに対して理解のある職場に転職する

  • +
  • 起業する

  • +
+

フリープログラマーというのは安定性に欠けるのは難点ですが、自分の思いどおりの仕事ができます。ただし、自分で仕事を見つけるためのコネクションが不可欠ですし、自己管理能力も求められます。ハッカーはこの自己管理能力の弱い人が多いようにも思われますが。

+

上司を説得した例としては、WideStudioの平林さんがいらっしゃいます。彼はIPA1 の「未踏プロジェクト2」に応募し、スーパークリエーター3 に認定されることで上司に理解してもらい、自分のハックの成果(=WideStudio)を仕事にすることを認めてもらうことに成功しました。このように、未踏プロジェクトを利用して自分のハックを世に認めてもらった人は多いようです。

+

私自身は、転職によって居場所を見つけました。1997年に現在の職場であるネットワーク応用通信研究所に転職したわけですが、転職の際には「Rubyの開発者」として採用していただきました。この会社はハッカーの扱い方を心得ていて、居心地のよい職場環境を提供してくれています。おかげで転職以来8年間、快適に仕事をさせてもらっています。ハッカーの多くは経済的成功への野心が少なく、食うに困らない収入があれば、適当に面白い仕事と技術的チャレンジ、および他のハッカーとの良好な交流があるだけで満足します。ハッカーの生産性は「普通の技術者」の数倍から数十倍に相当しますから、会社にとっても十分にお得なわけです。また、有名なハッカーには企業の看板、あるいは広告塔としての働きもありますから、そこでも有効に活用することができます。

+

ハッカーと言ってもいろんな種類の人間がおり、中には野心のあるタイプの人もいます。プログラムをハックするというよりも、技術を生かして社会をハックするといった感じでしょうか。ベンチャー文化が発達したアメリカでは、ハッカーによる技術を前面に押し出したベンチャービジネスがいくつも見受けられます。成功して大金持になるハッカーもいるわけです。たとえば、Lispを「秘密兵器」としたViaWebというインターネットショッピングASP事業で成功した(『ハッカーと画家』4 の、といったほうが有名でしょうか)Paul Graham氏、Netscape Navigatorのリードプログラマーとして有名なMark Andreessen氏などがいます。あまり起業とかベンチャーが盛んではない日本ではあまり目立った「起業ハッカー」はいない5 のですが、日本の将来のためには社会が変化して、このようなハッカーがどんどん出てくるようになったほうがよいのではないかと思います。

+
+
+ +

Win-Winの関係

+
+

ハッカーは悪い側面だけが強調されてしまうと、社会適合性の欠けたただのぐうたら社員ということになってしまいます。けれども、ハッカーたちは、実は優れた生産性を持つプログラマーであるだけでなく、新しい技術への鋭敏なアンテナの持ち主でもあります。このような人材は活用の仕方によっては、企業の「秘密兵器」になり得るのではないでしょうか。ハッカーは知的好奇心を満足させるプロジェクトや住み心地のよい環境を手に入れてハッピー、企業は優れた生産性を活用して業績を上げてハッピー、というような構図が一般的になるとよいのですが。

+
+
+
+
+
    +
  1. +

    IPA

    +

    情報処理推進機構。経済産業省所管の独立行政法人。情報処理技術者試験や各種支援事業を行う他、セキュリティ情報の提供を行うJP-CERTの運営も行っている。
    +http://www.ipa.go.jp/ +

    +
  2. +
  3. +

    未踏プロジェクト

    +

    正式名称は「未踏ソフトウェア創造事業」。今までにないソフトウェアの開発を行う個人を発掘することを主眼とした事業。まつもとも2000年度(第1回)で採用されている。
    +http://www.ipa.go.jp/jinzai/esp/ +

    +
  4. +
  5. +

    スーパークリエーター

    +

    未踏プロジェクトでめざましい成果をあげた人に対してIPAが授ける「称号」。未踏プロジェクト採用者全員に与えられるわけではない。ちなみにまつもとはもらっていない。 +

    +
  6. +
  7. +

    『ハッカーと画家』

    +

    オーム社から翻訳書が発行されている。
    +http://ssl.ohmsha.co.jp/cgibin/menu.cgi?ISBN=4-274-06597-9 +

    +
  8. +
  9. +

    目立った「起業ハッカー」はいない

    +

    元オン・ザ・エッヂ(現ライブドア)CTOの小飼弾さんは日本における例外的な起業ハッカーかもしれない。彼の日本人的でないセンスのおかげだろうか。 +

    +
  10. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-037.xhtml b/docs/vol2/xhtml/p-037.xhtml new file mode 100644 index 0000000..ed6fb65 --- /dev/null +++ b/docs/vol2/xhtml/p-037.xhtml @@ -0,0 +1,102 @@ + + + + + +第50章 Emacs 対 vi + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay50 +
+

+まつもと ゆきひろのハッカーズライフ
+Emacs 対 vi +

+
+

[UNIX USER, 2005年7月号]

+
+

有名なエディタ対立であるEmacs対Viを、MITのLisp文化とAT&Tベル研のUNIX文化の違いであるとまとめたのは、個人的にはすばらしい考察だと自画自賛しているのですが、ほとんどの人にとってはどうでもいいことのようで、当時でもあまり話題になることはありませんでした。そうこうしているうちに、IDE(統合開発環境)が台頭し、特にVSCodeの登場以降は、EmacsもViも「ロートルが使うエディタ」という印象が強くなってしまいました。

+

まあ、実際、若い人でEmacsを使う人はもうほとんどいませんし、Vi(この場合はVimかNeoVim)を使う人もそれほどは多くありません。ただ、EmacsもVimも進歩を続けていて、たとえばLSP(Language Server Protocol)を話して、VSCodeっぽいリッチなコード補完ができたりするんですけどねえ。

+
+
+

論争のタネ

+
+

ハッカーといっても一枚板ではありません。いろんな種類のハッカーがいます。悪ぶっているだけの「自称ハッカー」は論外としても、いろんな趣味、いろんな文化のハッカーが存在します。そして彼らは、しばしば自分の意見や文化について論争を起こします。そのような論争のテーマはたくさんありますが、典型的なものは「どのプログラミング言語が一番優れているか」「どのOSが最もよいか?」、または「サイコーのエディタはEmacsかviか?」などです。今回は最後にあげた「Emacsかviか?」を例に、ハッカー文化圏について眺めてみましょう。

+
+
+

TECOから進化したEmacs

+
+

オリジナルのEmacsは、Richard StallmanがTECOエディタ用に開発したマクロです。Richard StallmanといえばGNU活動で有名になりましたが、もとは超一流のハッカーで、ばりばりプログラムを書く人物であることを忘れてはいけません。TECOはマクロ機能を備えたラインエディタで、Stallmanはそのマクロ機能を駆使して、スクリーンエディタである最初のEmacsを書き上げたわけです。

+
+

TECOによるEmacsが実装されたのは1976年だといわれています。その後、Javaの設計者となるJames Goslingが1981年にUNIX版Emacsの開発を行います。GoslingによるEmacs(通称Gosling EmacsまたはGosmacs)は、MockLispと呼ばれるLispもどきの言語を使った拡張機能を持っていました。しかし、GoslingはGosmacsの権利をUnipressという企業に売却してしまい、StallmanはGosmacsをベースにした新しいEmacsの開発を行えなくなってしまうのです。

+

いずれにしても、Unipress Emacsをベースに作業することができなかったStallmanは、再びゼロからEmacsを開発しました。これが現在広く使われているGNU Emacsです。GNU EmacsはGosmacsの拡張性を参考にしていますが、MockLispのようなカスタマイズ用のまがいものの言語ではなく、より「ちゃんとした」LispであるEmacs Lispを内蔵しています。Emacsの本体は基本的な編集機能とEmacs Lispを内蔵しているだけで、Emacsの便利な機能のほとんどはEmacs Lispを使って後付けで実装されています。ということは、一般のユーザーもEmacsの基本機能をベースにしてさまざまな機能を実装することができるということです。事実、Emacsではプログラミング言語を支援する各言語モードなど、さまざまな編集支援機能がユーザーからの寄贈によって追加されています。また、エディタの機能を超えて、メールリーダー、ニュースリーダー、Webブラウザ、ゲームなどなど、あらゆる領域での拡張機能が提供されています。Emacsはもはや単なるエディタではなく、1つの環境、あるいは一種のOSと呼べるくらいにまで発展しているわけです。

+
+
+

edから進化したvi

+
+

viはVisual Editorの略だといわれています。BSDの立役者で、長らくサン・マイクロシステムズの副社長だったBill Joyによって1976年頃に開発されたviは、UNIXの標準ラインエディタであったedおよびexをベースにスクリーンエディット機能を追加したものです。edマクロを使った非対話モードの作業が簡単に行える点がメリットであり、いつでもラインエディットに戻れる安心感があります。最近では、どちらも必要になることは珍しくなりましたが、私が学生のころは端末がおかしくなってviをラインモードで使う1 こともときどきありました。

+

そういえば、学生時代の友人で普段からラインエディタexを愛用していたEくんは、ある日「lessのように画面を直接見ながらedコマンドで編集できるエディタがあれば完璧だ。lessedと名付けよう2」と言いながら、lessのソースコードをハックしていました。見かねて「それはviというものなんだよ」と教えてあげると彼は感動していました。1988年のことです。毎日UNIXを使いながらviを知らなかった彼は大物なんだか、変人なんだか。

+
+
+ +

ニュージャージー対マサチューセッツ

+
+

viはUNIX哲学の体現だといえます。ニュージャージー州にあるAT&Tベル研究所で始まったUNIXの哲学は、「単機能のツールを組み合わせた柔軟性」です。UNIXツールのことをよく知る人なら、各種フィルタを組み合わせた「パイプライン処理」のことを思い起こすはずです。cat, grep, awk, sed, nroff, pic, tblなどの単機能のツールをパイプラインでつなげて加工するのは職人芸と言ってもよいでしょう。UNIX哲学では、もちろんエディタもそのようなツールの一種として見なされます。2つのファイルの差分を取るツールdiffは、「-e」オプションを指定するとed形式で出力します。この出力結果の最後に「w」を付加してedに渡すと、自動的に書き換えて保存してくれます。もっともこのやり方では、ファイルが少しでも変更されていると悲惨な結果になるので、最近はedよりも少し賢いpatchコマンドを使うことがほとんどでしょうけど。

+

このようにviは、「小さいことはいいことだ」あるいは「よけいなことはしない」という思想を反映したツールなのです。

+

一方のEmacsはまた違う思想を反映しています。今ではUNIXで使われることが多く、UNIX系エディタとみなされやすいEmacsですが、オリジナルが開発されたのはUNIX上ではありません。Emacsが反映している(と思われる)のは、MIT(米マサチューセッツ工科大学)のLisp文化です。Lispは1958年頃にMITで誕生3 しました。もうすぐ50年になるんですね。ほとんどのLisp処理系は対話的に処理を行い、必要となる関数を次々定義していくことで環境を整備するという開発スタイルを取ります。このような環境で育ったLispハッカーにとって、Lisp処理系に編集機能を追加し、エディタにまで育て上げるというアプローチはごく自然なものだったのだろうと想像します。1970年代、Stallmanが名うてのLispハッカーであったことを考えると、「彼をして、このエディタあり」ということだったのでしょう。

+

Emacsの魅力はその拡張性、さらにいえばその「プログラム可能性」です。Emacsを開発のベースに使えば、画面操作などの標準で備わっている基本的な機能を利用して効率よくプログラムを開発できます。私自身、日常的な編集を支援するEmacs用の小さなツールをたくさん書いていますし、さらにRubyの変数とインデントを支援するruby-mode、Emacs上のメールリーダーを2つ(cmailとmorq4)開発しています。

+

しかし、一方ではEmacsはもともとはエディタでありながら、あらゆる機能を飲み込んでいってしまい、どんどん複雑化、肥大化しています。これを称して「キッチンシンク」と呼ぶ人もいます。洗い物を何でも雑多に突っ込んだ台所の流しのようだと揶揄やゆしているのです。

+

小さいツールを組み合わせることによって柔軟性を提供するUNIX思想、プログラム可能なツールによる柔軟性を提供するLisp思想。2つのエディタの対立は2つの思想の対立でもあったのです。

+
+
+ +

NASAの乱入

+
+

しかし、後にEmacsがUNIX上の代表的なエディタとみなされるようになって、戦況はやや混乱します。どちらもUNIXの仲間と思われてしまって、UNIX対Lispというわかりやすい対立軸が見えにくくなったからです。そして、別の「キッチンシンク」であるPerlの参戦によって、この対立軸は完全に見えなくなります。

+

Perlは、UNIX系文化がもともと個別のツールで提供していた機能をすべて1つの言語で提供しようというアプローチのものです。開発者のLarry Wall(当時NASAのジェット推進研究所所属)がLisp系文化の影響を受けていたかどうかは定かではありませんが、「キッチンシンク」アプローチの有効性を広く示したことには変わりありません。結果的にPerlはUNIX文化とLisp文化の掛け橋になったといえるでしょう。

+

皆さんも今度「Emacs対vi」の論争を見たら、それは遠い昔のUNIX対Lispの思想の対立の名残なのだと思ってください。思想は形を変えながら今もハッカー文化の中に息づいているのです。

+
+
+
+
+
    +
  1. +

    viをラインモードで使う

    +

    スクリーンエディットに必要な端末の制御コードがわからないとき、viはラインモードで起動する。これは要するにedとして動作するということ。 +

    +
  2. +
  3. +

    lessedと名付けよう

    +

    ここでviのことを黙っていたら、もしかしたらEmacs, viに並ぶ第三のハッカー用エディタができていたかもしれない。惜しいことをした。 +

    +
  4. +
  5. +

    Lispは1958年頃にMITで誕生

    +

    Lispの父はJohn McCarthy。実際にプログラミング言語として開発したのはSteve Russellだといわれている。 +

    +
  6. +
  7. +

    morq

    +

    morqは全文検索ベースのメールリーダー。現在のユーザーは私一人。2005年夏一般公開予定である。 +

    +
  8. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-038.xhtml b/docs/vol2/xhtml/p-038.xhtml new file mode 100644 index 0000000..cbf98f6 --- /dev/null +++ b/docs/vol2/xhtml/p-038.xhtml @@ -0,0 +1,128 @@ + + + + + +第51章 Emacs 対 vi + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay51 +
+

+オープンソース開発って何だろう +

+
+

[Linuxソフトウェアアンテナ, 2005年7月号]

+
+

技術評論社のムック『Linuxソフトアンテナ』オープンソース特集の一部となる記事です。オープンソースの定義からその精神、メリットなどについて記述しています。

+

注目すべきは、オープンソース開発者のさまざまな具体例をあげているところです。これらの開発者は当時の個人的な知人の経験に基づいて記述されています。いずれも具体的なモデルがいるか、あるいは複数の実在人物の経験を組み合わせたものです。最後例6「マツモトユキヒロさん」は誰だかはっきりわかりますね。他にも例1は学生時代の私、例2はRubyを作る前の私、例3は同僚複数の経験の組み合わせ、例4はネットワーク応用通信研究所社長(当時)の井上浩氏、例5はRubyコミッターの中田さんがモデルです。

+
+

「オープンソース開発」とは、簡単にいうと「オープンソースのやり方にしたがったソフトウェア開発」です。しかし、その一言で終わってしまうにはあまりにも深い意味を持つ言葉でもあります。

+
+

「オープンソース」の定義

+
+

まず、「オープンソース」という言葉の定義から見てみましょう。オープンソースと聞くと、「ソースがオープン」だからソースコードが一般に公開されていればそれでいいんでしょ、と考えてしまいがちですが、そもそも「オープンソース」という言葉は世に出たその瞬間から明確な定義をもって誕生した言葉なのです。OSI(Open Source Initiative)によればオープンソースの定義は次に示すとおりです。この原文はhttp://www.opensource.jp/osd/osd-japanese.htmlで入手可能です。

+
+
+

オープンソースの定義

+

オープンソースの定義

+

八田 真行訳、2004年2月21日

+


+

「オープンソース」とは、単にソースコードが入手できるということだけを意味するのではありません。「オープンソース」であるプログラムの頒布条件は、以下の基準を満たしていなければなりません。

+

1. 再頒布の自由

+

「オープンソース」であるライセンス(以下「ライセンス」と略)は、出自の様々なプログラムを集めたソフトウェア頒布物(ディストリビューション)の一部として、ソフトウェアを販売あるいは無料で頒布することを制限してはなりません。ライセンスは、このような販売に関して印税その他の報酬を要求してはなりません。

+

2. ソースコード

+

「オープンソース」であるプログラムはソースコードを含んでいなければならず、コンパイル済形式と同様にソースコードでの頒布も許可されていなければなりません。何らかの事情でソースコードと共に頒布しない場合には、ソースコードを複製に要するコストとして妥当な額程度の費用で入手できる方法を用意し、それをはっきりと公表しなければなりません。方法として好ましいのはインターネットを通じての無料ダウンロードです。ソースコードは、プログラマーがプログラムを変更しやすい形態でなければなりません。意図的にソースコードをわかりにくくすることは許されませんし、プリプロセッサや変換プログラムの出力のような中間形式は認められません。

+

3. 派生ソフトウェア

+

ライセンスは、ソフトウェアの変更と派生ソフトウェアの作成、並びに派生ソフトウェアを元のソフトウェアと同じライセンスの下で頒布することを許可しなければなりません。

+

4. 作者のソースコードの完全性(integrity)

+

バイナリ構築の際にプログラムを変更するため、ソースコードと一緒に「パッチファイル」を頒布することを認める場合に限り、ライセンスによって変更されたソースコードの頒布を制限することができます。ライセンスは、変更されたソースコードから構築されたソフトウェアの頒布を明確に許可していなければなりませんが、派生ソフトウェアに元のソフトウェアとは異なる名前やバージョン番号をつけるよう義務付けるのはかまいません。

+

5. 個人やグループに対する差別の禁止

+

ライセンスは特定の個人やグループを差別してはなりません。

+

6. 利用する分野(fields of endeavor)に対する差別の禁止

+

ライセンスはある特定の分野でプログラムを使うことを制限してはなりません。例えば、プログラムの企業での使用や、遺伝子研究の分野での使用を制限してはなりません。

+

7. ライセンスの分配(distribution)

+

プログラムに付随する権利はそのプログラムが再頒布された者すべてに等しく認められなければならず、彼らが何らかの追加的ライセンスに同意することを必要としてはなりません。

+
+

8. 特定製品でのみ有効なライセンスの禁止

+

プログラムに付与された権利は、それがある特定のソフトウェア頒布物の一部であるということに依存するものであってはなりません。プログラムをその頒布物から取り出したとしても、そのプログラム自身のライセンスの範囲内で使用あるいは頒布される限り、プログラムが再頒布されるすべての人々が、元のソフトウェア頒布物において与えられていた権利と同等の権利を有することを保証しなければなりません。

+

9. 他のソフトウェアを制限するライセンスの禁止

+

ライセンスはそのソフトウェアと共に頒布される他のソフトウェアに制限を設けてはなりません。例えば、ライセンスは同じ媒体で頒布される他のプログラムがすべてオープンソースソフトウェアであることを要求してはなりません。

+

10. ライセンスは技術中立的でなければならない

+

ライセンス中に、特定の技術やインターフェースの様式に強く依存するような規定があってはなりません。

+
+

1998年初頭、マイクロソフトとの競争に敗れつつあったネットスケープ社は起死回生のウラ技として、1つの大胆な戦略を立てました。それは自社の主力製品であるNetscape Navigatorの新バージョンをフリーソフトウェアとして公開し、コミュニティの力で成長させようというものです。しかし、フリーソフトウェアの「フリー」という言葉が「自由」よりも「無料」を想起させるのが悩みの種でした。ライバルのInternet Explorerも無料ですから、マーケティング戦略的にはもっと差別化できる用語が必要です。そこでネットスケープ社は論文『伽藍とバザール』で知られるEric Raymondに相談しました。1998年2月3日、Raymondは何人かの「フリーソフトウェアビジネスの有名人」と会議を開き、その会議の最中に「オープンソース」という言葉が誕生したのでした。同じ月のうちにBruce PerensがまとめていたDebian Freesoftware Guidelineをベースにして上記のオープンソースの定義(の最初のバージョン)が策定されました。1998年2月23日にネットスケープ社は自社のブラウザのソース公開を行うというアナウンスを行い、これが「オープンソース」という言葉が広く使われるようになった最初です。

+

オープンソースの定義と用語の歴史的経緯を考えると、以下のことがいえると思います。

+
+

オープンソースはライセンスのあり方の定義である

+

オープンソースの定義には個別のソフトウェアの性質について何も語っていません。定義されているのはそのは頒布条件とライセンスだけです。オープンソースという考え方が注目しているのは、「どんなソフトウェアか」ではなく「ソフトウェアをどう扱えるか」であるということです。

+

オープンソースはマーケティング用語である

+

オープンソースという用語はビジネスを強く意識しています。1980年代以降長く使われてきたフリーソフトウェアという用語を使わずあえて新しい用語を作ったのは、「無料」との混同を嫌ったこともありますが、効果的なマーケティングに新語が効果的であることも理由でしょう。

+
+

自由を守るとことを目的とするフリーソフトウェアと比較すると、オープンソースはずいぶん実利主義に見えます。実際、オープンソースという言葉がなければ、現在のようにソースが公開されていて自由に利用できるソフトウェアは広まらなかったと思います。

+
+
+ +

オープンソースでできること

+
+

先ほど、オープンソースはソース公開ではない、と述べました。オープンソースの定義によればオープンソースであることとは、ただ単にソースコードが入手できることではなく、入手したソースコードをどのように取り扱うことが許されるべきかについて明確な規定があります。これはいったいなぜなのでしょうか。オープンソースの定義の10ヶ条のような細かな「制約」がありながらなお「自由」というのはどういうことなのでしょうか。

+

それは、一見制約に見える定義をゆるめると結局そのソフトウェアに対して「できること」が減ってしまうからです。オープンソースの定義を満たしている限り、ソフトウェアの利用者はそのソフトウェアに対して著作権者の許可をいちいち求めることなくどこまでのことができるのか明確です。たとえば、あるソフトウェアのライセンスに「利用は平和目的に限定される」という条項があったとしましょう。平和目的は立派な心がけでそれ自体に避難すべきところはありません。しかし、そのソフトウェアを含むディストリビューションは、受け取った人がそのソフトウェアを平和目的以外に用いないように確認する必要性が発生するかもしれません。そんなことが起きれば、ソフトウェアの利用に大きな制限がかかってしまうでしょう。そういうことを避けるため、そのようなライセンスはオープンソースの定義の第6項で禁止されています。面倒に見える決まりはみなソフトウェアを安心して利用するためにあるのです。

+

あるソフトウェアのライセンスがオープンソースの定義を満たしているとわかれば、少なくとも以下のことを自由に行ってよいことがわかります。

+
    +
  • そのソフトウェアを再配布する

  • +
  • そのソフトウェアを改造する

  • +
  • 改造したソフトウェアを配布する

  • +
  • そのソフトウェアをビジネスの一部に組み込む

  • +
+

これらのことは、開発者にとっては安心して開発に参加できることを意味します。いちどオープンソースソフトウェアとして公開されたものは、将来、主開発者に何かあって開発が中断されても、有志が開発を継続することができますから、消え去ってしまうことを心配する必要がありません。自分の労力が無駄にならないという安心感があります。

+

継続の安心感は、ビジネスマンにとっても有効です。自分のシステムのコンポーネントとして組み込んだソフトウェアがベンダーの都合でサポートが中止される事態は、商用ソフトウェアにおいて珍しいことではありません。しかし、オープンソースソフトウェアならば、ソースコードが入手できているので、必要ならば必要なだけ自分でサポートを行うこともできます。

+

ビジネスにとってのオープンソースのメリットは継続性だけではありません。最近はソフトウェア産業も成熟してきているので、新規参入者が既存のビッグプレイヤーを打ち負かすのは容易なことではありません。打ち負かすどころか生き残ることさえ難しいでしょう。生き残りに有効な方法は、既存のプレイヤーが採用していない新しいルールの下で勝負することです。この新しいルールとしてオープンソースが有望なのです。たとえばデータベースを考えてみましょう。商用データベースはOracleにしてもIBMのDB2にしても長い時間とたくさんのお金をかけて開発されてきたものです。これに勝つのは並たいていのことではありません。しかし、スウェーデンのMySQL ABという小さな会社は自社開発のデータベースエンジンをオープンソースソフトウェアとして公開することで、これらのビッグプレイヤーと対等に渡り合っています。

+
+

ソフトウェアビジネスにおいてソースコードを他人にあげてしまうことは許容できないと考える人は多くいます。しかし、考えてみればソースコードを隠蔽いんぺいすることによって稼げるお金はどんどん小さくなっています。現在のソフトウェア産業構造は、ソフトウェアパッケージが1割、自社向けシステムの開発が3割、受注システムが6割なんだそうです。今やソフトウェア産業のお金が動くところは、ソリューション構築やサービスの提供、そしてサポートなのです。ですから、コアコンポーネントのソースコードを無償で提供しても、それによってもうける手段はそれこそ山のようにあるわけです。いや、マイクロソフトほどはお金を生み出せないかもしれませんが。

+
+
+

オープンソース関係者の気持ち

+
+

一言にオープンソースといっても、それに関わる人々の気持ちはそれぞれです。ここではオープンソースに関わる人々のさまざまな立場と気持ちを紹介します。なお、ここで紹介する人々は現実の人間をモデルにしていますが、あくまでもフィクションです。

+
+

例1: 学生

+

タナカ・カナタさん(22)は国立大学工学部の4年生です。最初は研究に利用するツールとしてオープンソースソフトウェアに出合いました。カナタさんはStallmanの唱えるソフトウェアの自由を信奉しており、ソフトウェアはできる限り自由であるべきであると信じています。ですから、彼の使うソフトウェアはすべてソースコードが入手できるオープンソースソフトウェアです。カナタさん自身はオープンソースソフトウェアと呼ぶよりもフリーソフトウェアと呼ぶ方を好みます。しかし、この世から「不自由なソフトウェア」を駆逐するべきだというほど過激な思想を持っているわけではありません。現在、カナタさんはオープンソースソフトウェアの主開発者として活躍しています。もともとはインターネットで他の人が作ったツールを改造していたのですが、変更点を還元しようと開発者にコンタクトしたら「もう使わなくなってしまったのでご自由にどうぞ」といわれてしまいました。そのままにするのももったいないので自分でメンテナンスすることにしました。メーリングリストには数十人のユーザーが集まっています。コミュニティの規模としては小さいですが、なごやかな雰囲気で活発に開発が行われています。カナタさんの開発はあくまでも趣味の領域で、本業の研究の合間を縫って行われています。

+

例2: 職業プログラマー

+

シミズ・ヒロシさん(31)は職業プログラマーです。ヒロシさんはプログラマーとしての自分に箔を付けるために名刺の代わりになるソフトウェアがあればよいと感じてオープンソフトウェアの開発を行いました。自分の能力を見てもらうためにはソースコードも含めてすべて公開するオープンソースが最適だと考えたのです。ヒロシさんの試みは成功し、優秀なプログラマーとして見なされる機会が増えてきました。ヒロシさんは自分のソフトウェアをひっさげて最近転職を果たしました。勤務条件も向上しました。転職先の会社は一定の範囲内でオープンソースソフトウェアの開発を認めてくれています。最近では雑誌の記事を書くなどの副業収入も少し入ってくるようになりました。

+
+

例3: 若手SE

+

コダマ・マドカさん(25)は某ソフトハウスに勤める若手SEです。SEという肩書を持ってはいるものの、実際には顧客との交渉から設計、コーディングに至るまで何でもこなします。最近、マドカさんは上司から、業務で開発したプロダクトをオープンソース化するように命じられました。これまでマドカさんはPHPやMySQLなどオープンソースソフトウェアのユーザーだったわけですが、急に開発者として参加することになって戸惑っています。業務開発の世界とオープンソースの世界とではやり方がずいぶん違うようです。でも、業務としてオープンソースに関われることはもしかしたら幸せなことかもしれないと考え始めています。

+

例4: オープンソース企業CEO

+

イノウエ・コウジさん(45)はソフトウェア系ベンチャー企業の社長です。コウジさんは8年前、仲間と一緒に起業しました。Linux系サーバーの構築とソフトウェア開発が主たる業務です。以前SEの経験もあるコウジさんはRubyなどを使ったソフトウェアの開発も行いますが、あくまでも趣味のレベルです。しかし、会社のコアとなる技術としてオープンソースは欠かせないと感じています。コウジさんの会社のように小さなソフトウェア企業が大企業と渡り合うためには、オープンソースが重要な武器になると考えているからです。コウジさんの会社のソフトウェア開発はほぼ例外なくオープンソースソフトウェアを利用して行われます。これにより、コストや開発期間で競争力を獲得しています。また、ブラックボックスがないので問題が発生したときにどこまでも対処可能であるという安心感も見逃せません。コウジさんはただ利用するだけでは差別化が十分ではないとして、積極的に自社開発ソフトウェアをオープンソース化したり、オープンソース開発者を雇用したりしています。おかげでオープンソース業界では知る人ぞ知る企業としてもポジションを獲得しつつあるようです。

+

例5: フリープログラマー

+

ゴトウ・ユウゴさん(38)はフリープログラマーです。普段は派遣のプログラマーとして働いたり、知人から紹介してもらったソフトウェア開発を行っています。ユウゴさんのもう1つの顔はオープンソース開発者です。ユウゴさんはあるオープンソースソフトウェアの開発にも関わっています。ユウゴさんは主開発者ではありませんが、協力者として長らく開発に参加してきました。メーリングリストに報告されたバグをユウゴさんがいち早く修正したりすることは珍しくありません。主開発者からの信頼も厚く、ソースコードへのコミット権もいただいています。ユウゴさんが提案して採り入れられた機能も数多くあります。プログラミングが大好きなユウゴさんにとって、オープンソース開発への参加は最大の趣味と言ってもよいでしょう。ソフトウェアがオープンソースでなければユウゴさんは参加することはできなかったわけですから、ユウゴさんはオープンソースに感謝しています。

+

例6: 職業オープンソース開発者

+

マツモト・ユキヒロさん(40)は某ソフトハウスに勤務するソフトウェア技術者です。ユキヒロさんはここ10年ほどあるオープンソースソフトウェアを開発しています。ユキヒロさんの開発したソフトウェアは日本のみならず世界中で使われています。ユキヒロさんはもともと副業としてオープンソースソフトウェアを開発していましたが、サポートなどに割かれる時間が本業に影響を与えているのが悩みでした。そこで、7年前オープンソースソフトウェアの開発者として現在の勤務先に転職しました。ユキヒロさんは技術コンサルタントや技術マネージャとしても働きつつ、多くの時間をオープンソースソフトウェアの開発に割いています。勤務先はユキヒロさんがオープンソース開発者として露出することで間接的に利益を上げているので、そのような時間の使い方を認めています。ユキヒロさんは開発だけでなく、各種イベントでのプレゼンテーションや雑誌記事の執筆なども積極的にこなしています。それらに割かれる時間が多すぎて開発時間が少なくなっているのが最近の悩みです。

+
+ +

ここであげたのは多種多様なオープンソース関係者のうちごく一部ですが、それでも参加する動機、時間の使い方、経済的事情などさまざまであることがうかがえると思います。あくまでも趣味で参加する人もいれば、逆に単に仕事として参加する人もいます。

+
+
+

まとめ

+
+

オープンソースはソフトウェアを有効に利用する新しい手法です。これは単にソフトウェアのソースコードを公開するだけでなく、すべての人に一定の自由を保証するライセンスを含むよう明確に定義されています。オープンソースへの関わり方は多種多様ですが、いずれにしてもオープンソースが保証する自由が大きく影響を与えています。オープンソースに関わる人のほとんどは何らかの形でこの自由を利用しようとしています。利用の仕方は自分が自由を満喫するためだったり、ビジネス上で優位に立つためだったりしますが。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-039.xhtml b/docs/vol2/xhtml/p-039.xhtml new file mode 100644 index 0000000..05e8965 --- /dev/null +++ b/docs/vol2/xhtml/p-039.xhtml @@ -0,0 +1,110 @@ + + + + + +第52章 ハッカー環境問題 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay52 +
+

+まつもと ゆきひろのハッカーズライフ
+ハッカー環境問題 +

+
+

[UNIX USER, 2005年8月号]

+
+

ハッカーが自分の環境に対して手を加えたい欲求を「環境問題」と呼ぶという一発ネタ。ハッカー気質のある人は暇があると自分の環境に手を加えてしまいたい欲があり、たまにうっかり環境を破壊してしまい、むしろウキウキしながら環境復旧するマッチポンプのような状況を発生させることがあります。これは問題解決を楽しみとするハッカー気質の持ち主にとって大変楽しい活動ですが、環境復旧にかかりきりになっている間は生産性が下がってしまうので、周囲に迷惑をかけてしまう可能性もあります。これもまた「ハッカー環境問題」の一種かもしれません。

+
+
+

環境を改変していく能力

+
+

「環境問題」といっても、地球温暖化などの話ではありません。ハッカーが生活する空間、つまりコンピューティング環境のお話です。

+

地球上には数えきれないほどの種類の生物が棲息していますが、人間ほど広い範囲に住んでいる生物はいないと思います。人間は灼熱の赤道直下から、極寒の極地にまではびこっています。これは生物としての耐久力が高い1 からではありません。人類の繁栄は、衣服や住居によって自分の周囲の環境をコントロールすることで実現されているのです。どんなに外が寒くても快適な住居を作り上げる能力、暖房や冷房などを発明する能力、そしてなによりも自分の周囲の環境を積極的に改変していこうという意欲、これこそ人類が地球を実質的に支配している理由でしょう。もっとも、積極的に地球環境を改変しすぎて、環境バランスを崩しそうになっていることは大問題ですが、それはまた別の話です。

+
+
+ +

世の中にあふれかえるコンピュータ

+
+

現代では、20年以上前とは比べものにならないくらい大量の、しかも高性能のコンピュータが人々の周りに満ちあふれています。最近のコンピュータは昔のスーパーコンピュータをはるかにしのぐ性能を持っています。また、数の点での発展も目覚しく、テレビやカメラ、車にも炊飯器などにもコンピュータが内蔵されています。日本などの先進国では、すべての人が何らかの形でコンピュータを所有しているのではないでしょうか? また、ほとんどの人が所有している携帯電話は、通話機能とネットワークアクセス機能を持った携帯型コンピュータそのものです。電車の中や道端でケータイに向かってピコピコやっている姿を見ながら、すごいことが現実なったものだと感心します。携帯型コンピューティングデバイスを誰もが持っていて、日常生活で頻繁に利用するなどとは、SFの中でしか描かれなかった未来像です。

+

また、組み込みでない汎用型コンピュータ、いわゆるPC2 の普及率も高く、コンピュータ人口は昔に比べて格段に増加しています。しかし、ほとんどの人は、コンピュータを特定の仕事を果たす道具として利用するだけで、Webページをブラウズしたり、ワープロソフトで文書を作成したり、表計算ソフトで集計したりはするものの、プログラミングすることはほとんどありません。私の家族もご多分に漏れず、多少はPCを使うようになりました。子供たちの学校には「パソコン室」なるものがあり、ある種の情報リテラシーのような授業が存在します。そのせいか、私がいないうちにPCの電源を入れて、インターネット経由でアニメを見たり、ゲームを楽しんだりしているようです。

+

道具としてコンピュータを使う、与えられた機能を与えられたままに使いこなす。それはそれで悪いことではないのですが、与えられた環境に自分を適合させるというのは、人類としては退化しているように感じます。実際に情報系の大学ではコンピュータを使ったことはあるが、プログラミングについては何も知らない新入生が大量に入学して当惑する事態が頻発しているそうです。

+
+
+

プログラムによるカスタマイズ

+
+

私がコンピュータに初めて接した頃、コンピュータはプログラミングのための道具でした。BASICしか載っていないコンピュータでは、できることなどたかが知れていましたが、それでもプログラミングすることは楽しい経験でした。当時のコンピュータ3 のユーザーは、ほぼ全員が何らかのプログラミングを行っていました。あの頃のコンピュータは非力で、機能も少ないものでしたが、プログラミングによって「自分のやりたいことをやらせている」という感覚が味わえたものです。してみると、この20数年の間にコンピュータというもののありかたはすっかり変化してしまったようです。

+

しかし、今も昔も変わらず、ハッカーという人種は「無精」で「短気」で「傲慢」なので、与えられた環境にそのまま満足するとか、環境に自分を合わせるなどということには我慢ができないものです。ハッカーは「電子計算機」であるコンピュータを前にして、電卓を叩くなどということには耐えられません。彼らは「傲慢」なので、そのようなことは自分がコンピュータの奴隷になったように感じますし、「無精」なので単純作業の繰り返しに我慢ができません。また、「短気」なのでそのような苦痛から逃げ出すためにあらゆる努力を行い、おそらくはその作業を自動化するプログラムを作り上げてしまうでしょう。

+ +

このことこそが、ハッカーの多くがLinuxなどUNIX系OSを愛好する理由だと思います。Windowsなどとは違い、UNIX系OSではカスタマイズの余地が非常に大きいのが特徴です。気に入らない部分があれば自分の手に馴染むようにカスタマイズする、それがハッカーのやり方です。

+

私が長らくEmacsを愛用しているのも同じ理由です。前回も紹介しましたが、Emacsはコア部分以外のすべてがEmacs Lispによる拡張機能として実現されています。ほしい機能があれば、Emacs Lispでプログラムすることですぐに機能が追加できます。15年以上Emacsを使ううちに、.emacsファイル4 に蓄えられた自分のために作ったEmacs Lisp関数は相当の分量になっています。あまりにカスタマイズしている5 ため、他の設定ではEmacsを使いこなせません。また、私の .emacsでは、他の人は当惑することでしょう。

+
+
+

ハッカーはオールドタイプ?

+
+

環境を改善して省力化を実現するためには、スクリプト言語も有効です。データから数値を抽出して集計するために、紙に印刷してから電卓を叩くなどという苦行を行う代わりに、小さなスクリプトを書いて計算させたほうが、よっぽど生産的です。たとえ電卓を叩くよりプログラミングに時間がかかったとしても、それはそれでいいんです。単純作業を繰り返すよりは、プログラミングという生産的な作業を行ったほうが100倍幸福です。Ruby, Python, Perlなどのスクリプト言語は、まさにそのような「ハッカーの道具」としてハッカーの電脳環境の改善を目的として誕生したのです。

+

先日、電気工事のミスによってオフィスのサーバー室が停電になってしまい、UPSを付けていなかったすべてのマシンが止まってしまいました。私のメールボックスが置いてあるマシンもこの事件に巻き込まれて、ネットワーク経由でメールが取り出せなくなったのです。メールボックスの一部にゴミが混じってしまったため、POPサーバーが誤動作するようになったようで、ユーザー認証に失敗してしまいます。なぜ、メールボックスが壊れたくらいでそんな事態になるのか理解不能ですが、このままではメールの読み書きができず、私にとっては死活問題です。しかし、ハッカーたるもの、このようなときも慌てず騒がず6、壊れたメールボックスを手元にコピーして、簡単なRubyスクリプトで切り出し、メールソフトに読み込みました。与えられた環境でしか生きられなければ、このような事態には手も足もでなかったことでしょう。

+ +

ハッカーはただ単にコンピュータを使うだけでなく、その背後にあるソフトウェアの仕組みを理解し、必要であればその仕組みそのものを変えてしまう力を持っています。その力の源は「プログラミング」なのです。電脳環境をプログラムすることで、与えられたソフトウェアを使うだけでは実現できない魔法のような力を発揮できる、それがハッカーのパワーなのです。

+

このように見てみるとハッカーは電脳世界の進化の最前線にいるように思えてきます。しかし、よく考えてみると現実世界でも文明が進歩するにつれて専門化が進み、ほとんどの人は自分で家を建てたりはしません。自動車を作ったりもしません。やるのはせいぜい趣味の日曜大工程度でしょうか。それと対比するならば、あらゆることを自分の手で改造しないと気が済まないハッカーは、進化の最前線どころか時代に取り残されたオールドタイプなのかも知れませんねえ。まあ、自分で何にもできないユーザー7 よりは幸せですが。

+
+
+
+
+
    +
  1. +

    生物としての耐久力が高い

    +

    生物としての耐久力が高いといえばクマムシだろう。体長1mmほどのこの生き物は、ほぼ絶対零度の−272°Cから151°Cまで耐え、真空にさらされても平気なのだそうだ。 +

    +
  2. +
  3. +

    いわゆるPC

    +

    日本では「パソコン」と呼んだほうが通りがいいかも。「マイコン」を経験した世代には、パソコンという略語にはなんとなく抵抗がある。「パーソナルコンピュータ」なら「パーコン」ではないか。いや、それもいやだけど。「スーパーコンピュータ」の略である「スパコン」にも同様に抵抗がある。 +

    +
  4. +
  5. +

    当時のコンピュータ

    +

    70年代後半から80年代前半にかけて、個人向けのコンピュータは「マイコン」と呼ばれていた。パーソナルコンピュータの略である「パソコン」という単語が登場するのはもう少しあとになる。 +

    +
  6. +
  7. +

    .emacsファイル

    +

    Emacsのカスタマイズファイル。Emacs起動時にホームディレクトリの .emacsというファイルが読み込まれる。ここに関数やキー設定などを書いておくことで自分専用のEmacsを用意できる。 +

    +
  8. +
  9. +

    あまりにカスタマイズしている

    +

    今回、.emacsファイルの行数を数えたら812行あり、思ったより少なかった。私の場合、第2回(2005年5月号)で紹介したように日本語入力用のキー配列まで変えている。 +

    +
  10. +
  11. +

    慌てず騒がず

    +

    うそである。実際にはかなり慌てたし、騒ぎもした。しかし、この対応は出張中のホテルで行われたので、慌てたのも騒いだのも誰にも見られなかったのは幸いだ。しかし、なんで出張中のタイミングで停電が起きるかなあ。 +

    +
  12. +
  13. +

    自分で何にもできないユーザー

    +

    MITハッカーコミュニティではこのようなユーザーのことを「負け犬(looser)」と引っかけて「luser」と呼んでいたそうだ。ハッカーの傲慢さがうかがえる。 +

    +
  14. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-040.xhtml b/docs/vol2/xhtml/p-040.xhtml new file mode 100644 index 0000000..70ccb84 --- /dev/null +++ b/docs/vol2/xhtml/p-040.xhtml @@ -0,0 +1,116 @@ + + + + + +第53章 言語の重要性 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay53 +
+

+まつもと ゆきひろのハッカーズライフ
+言語の重要性 +

+
+

[UNIX USER, 2005年9月号]

+
+

言語オタクとしてプログラミング言語の重要性について語っています。言語には、思考の手段、記述の手段、読む手段、そして実行する手段としての側面があり、それぞれに重要であると述べています。プログラムを開発する人は例外なく何らかのプログラミング言語を学ぶわけですが、その言語は記述の手段と実行の手段としてしか捉えていない人が多いでしょう。しかし、あまり注目されない思考の手段としての言語、また読む手段としての言語も重要です。思考の手段としての言語は、人間がプログラミング的に思考することを支援してくれますし、ある種のパラダイムを強調する言語では、「問題の捉え方」そのものが変化してしまうかもしれません。また、プログラミングを学ぶ最良の方法は他人の書いたプログラムを読んで考えることであり、そのためにも読む手段としての言語は重要です。これは時代が変わっても変化しない真理だと思います。

+
+
+

言語へのこだわり

+
+

ハッカーは、プログラミング言語にこだわる人がとても多いことが知られています。たとえば『ハッカーと画家』1 などの著書で知られるPaul Graham2 はLispに大変こだわっており、著書やエッセイの中でLispのパワーについてたびたび熱く語っています。私自身もプログラミング言語に深いこだわりを持つハッカーであり、自ら「言語おたく」を自称しています。私以外にもプログラミング言語好きのハッカーは数多く、中にはそれを本職にしてしまっている「言語屋」と呼ばれる人たちも存在するほどです。

+ +

では、なぜハッカーはそんなにも言語にこだわるのでしょうか。それはおそらく、プログラミング言語がハッカーの力と密接な関係があることだと思います。前回、プログラミングがハッカーの力の源であると述べました。そして、そのプログラミングが言語を通じて行われる以上、言語はハッカー最強の道具です。ですから、どのような言語をどのように使うかは、ハッカーの力の大きさに直接関係します。ハッカーは自分の能力や道具の良し悪しにとても敏感ですから、どうしても言語にこだわってしまうのでしょう。

+

いわゆる「普通の人」には、この気持ちを理解することは難しいのかもしれません。普段あまりプログラムを書かない人にとって、どのような言語でプログラムを書こうとも、結局はアルゴリズムを記述しているのであり、その本質は大差ないと感じることでしょう。確かにチューリング完全3 な言語であれば、任意のアルゴリズムを記述可能だそうですから、数学的には(ある一定の条件を満たす)すべての言語は等価なのかもしれません。しかし、現実にはすべての言語は等価ではないのです。

+
+
+

思考表現の手段としての言語

+
+

たとえ理論的には同じアルゴリズムを記述したとしても、言語が違えばその表現は大きく異なります。そして、その表現の違いが言語の違いを生むのです。プログラミング言語というものは、プログラムというコンピュータに対する仕事の手順を記述するものですから、その対象はコンピュータであると考えがちです。しかし、実際には言語によって影響を受けるのは人間のほうです。言語は人間の思考をコンピュータにも理解できる形で表現する手段なわけですが、思考の道具でもあるのです。

+

自然言語学には「人が話す言葉と、人の物事の理解の仕方や振る舞い方には密接な関係があるのではないか」という「Sapir-Whorf仮説」というものがあります。私自身も日本語で話しているときと英語で話しているときで性格が違うような気がする4 ので、個人的な経験からはこの仮説は成立していそうなのですが、実際にこれが正しいことを示す学術的な証拠は見つかっておらず、どっちかっていうと否定されているっぽい仮説です。しかし、自然言語についてこの仮説が正しいかどうかにかかわらず、使用するプログラミング言語によってプログラマーの発想が影響を受けるのは事実です。

+

私がBASICユーザーだった中学生の頃、関数が自分自身を呼び出す再帰という考え方が理解できず、3日間Pascalの教科書とにらめっこした覚えがあります。まあ、実際に手元にPascalの処理系があって実行することができればもっと早く理解できたのかもしれませんが、当時は自分で自由に使えるコンピュータを(BASICポケコン以外は)所有していませんでしたから。もし私が最初に使った言語がLispだったりしたら、おそらく再帰という考え方に違和感を覚えることはなかったでしょう。

+

このことから、「より強力な言語を使うことはプログラマーがよりよい発想を持つ助けになる」ということがわかります。言語の選択はプログラマーの能力に影響を与えるのです。また、一度学んだ発想は他の言語を使うときにも応用しやすいので、新しい言語を学ぶということはより優秀なプログラマーへの近道でもあります。名著として知られる『達人プログラマー』5 の中で著者たちは「1年に1つ新しい言語を覚える」というチャレンジを提案しています。これも同じ理由からです。実は彼らはこの本を書いた直後にこのチャレンジを自ら実践してRubyを発見し、あまりに気に入ったので英語圏における初のRuby解説書である『プログラミングRuby』6 を書いたのでした。

+
+
+ +

プログラムを書く手段としての言語

+
+

このように言語は考えることも助けてくれますが、考えるだけではプログラムは完成しません。やはり言語の一番重要な側面はプログラムを書くことです。

+

さて、名著『人月の神話』7 によれば「基本的な1ステートメントを製造するに要する工数は言語によらずほぼ一定」なのだそうです。とすれば、同じ処理を記述するときに言語Aで1000行、言語Bで10行必要であったとすれば、言語Bを採用するだけで生産性がおよそ100倍になるということになります。「そんなバカな」と思うかもしれませんが、たとえばJavaとRubyで同じ処理を記述する場合、ステートメント数で2倍以上の差がつくことは珍しくありません。アセンブラとRubyだったら100倍どころか1000倍の差がつくケースもありそうです。プログラミング言語進化の歴史は「いかにより簡潔な記述を可能にするか」を探し求めてきた歴史でもあります。

+

また、言語の差よりも重大なのはライブラリがそろっているかどうかです。たとえばネットワーク経由でHTTPアクセスをしたい場合、ソケットを用いてネットワークコネクションを確立する処理から書き始めれば、どんな言語を使っても500行以下で実現できるとは思えません。しかし、HTTPを直接扱うことのできるライブラリがあればHTTPアクセスそのものがたった1行で実現できるかもしれません。この差は大変重要です。

+
+
+

プログラムを読む手段としての言語

+
+

ほとんどの場合、プログラミングとは一度プログラムを書いてそれで終わりというわけにはいきません。バグがあればプログラムを読み返して、本当に正しい記述が行われているか確認しなければなりませんし、他の人が書いたプログラムを読んで保守しなければならないこともたびたびです。また、半年も経てば自分が書いたプログラムでも他人が書いたものと同じです。読んでみないと、何をしようとしていたのかわからないものです。とすると、もしかするとプログラムを書く時間よりもプログラムを読む時間のほうが長いかもしれません。

+ +

一般に、書きやすい言語によって書かれた簡潔なプログラムは、無駄な「お約束」が少なく、処理の本質に集中できるので読みやすいことが多いのですが、プログラムの簡潔さと読みやすさがいつも比例するとは限りません。簡潔すぎて情報量が少ないプログラムは読解のために推測すべきことが多くなり、かえって読みにくいこともあります。たとえば、書くときには面倒なだけの型情報は、読むときにはずいぶん役に立ちます。また、記号などを使って「圧縮」されたプログラムは短くても超難解です。「write-only language」とか「executable line noise」などと悪口をいわれるプログラム言語もあります。特に名前を出しませんが(笑)。

+
+
+

プログラム実行系としての言語

+
+

異なる言語で、同じアルゴリズムを使って同じようにプログラムを書いたとしても、同じような速度で実行できるとは限りません。プログラミング言語は、その実行形式(コンパイラ型かインタプリタ型か)や処理系の優劣によって実行性能が大きく変動するからです。ハッカーの中にはスピード命というタイプもいますし、最終的なプログラムの実行性能を重要視する人も多いです。一般に柔軟で生産性の高い言語は、実行時に行うことが多くて、実行性能が低い傾向があります。開発時の生産性か実行時の性能か。なかなか難しいトレードオフです。

+

ああっ、もう誌面が尽きてしまいました。言語おたくが言語について語り出すと止まりません。来月もこの続きを語ることにしましょう。

+
+
+
+
+
    +
  1. +

    『ハッカーと画家』

    +

    Paul Graham著、川合史郎訳『ハッカーと画家 コンピュータ時代の創造者たち』オーム社(ISBN4-27406-597-9)。ハッカーの生態をわかりやすく描いた書籍として知られている。全16章中、実に4章が言語を主題にしており、さらに多くの章がハッカーと言語の関係について語っている。ハッカーについて理解したい人にとって必読書。ハッカーにとっては前半は当り前すぎて退屈かも。 +

    +
  2. +
  3. +

    Paul Graham

    +

    『ハッカーと画家』の著者。ベンチャー企業Viaweb(現Yahoo!Store)を成功させたリッチなハッカー。Viawebの成功の秘密は、Lispを使った生産性にあったそうだ。ハッカーでもリッチになれるという希望の星。しかし、彼の名を本当に高めているのはViawebの成功ではなく、彼の書くハッカーの生態を描き出したエッセイである。『ハッカーと画家』に未収録のものも多いが、そのいくつかは川合史朗さんによって翻訳されている。
    +http://www.shiro.dreamhost.com/scheme/index-j.html +

    +
  4. +
  5. +

    チューリング完全

    +

    Alan Turingがアルゴリズムを記述するために考案した仮想的な機械チューリングマシンを表現できる言語のクラス。チューリング完全な言語は停止可能な任意のアルゴリズムを記述できるらしい。 +

    +
  6. +
  7. +

    性格が違うような気がする

    +

    私自身は英語を使っているときのほうが論理的な思考をするような気がする。先日、英会話番組でソニンも同じようなことを言っていたから、そう感じるのは私だけではないらしい。 +

    +
  8. +
  9. +

    『達人プログラマー』

    +

    Andrew Hunt, David Thomas著、村上雅章訳『達人プログラマー』ピアソン・エデュケーション(ISBN4-89471-274-1)。プログラマーとしての能力を向上させる基本的なルールについて解説した本。プログラマー必読の書だと思う。 +

    +
  10. +
  11. +

    『プログラミングRuby』

    +

    Andrew Hunt, David Thomas著、田和勝訳、まつもとゆきひろ監訳『プログラミングRuby』ピアソン・エデュケーション(ISBN4-89471-453-1)。英語ではRuby 1.8対応の第2版が出版されている。第2版も邦訳が予定されている。 +

    +
  12. +
  13. +

    『人月の神話』

    +

    Frederick Phillips Brooks Jr.著、滝沢徹/牧野祐子/富澤昇訳『人月の神話【新装版】』ピアソン・エデュケーション(4-89471-665-8)。なんか今月はピアソンの本ばっかりだな。原著は20年以上前に書かれたものだが、その本質は変わらない。 +

    +
  14. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-041.xhtml b/docs/vol2/xhtml/p-041.xhtml new file mode 100644 index 0000000..482b03f --- /dev/null +++ b/docs/vol2/xhtml/p-041.xhtml @@ -0,0 +1,110 @@ + + + + + +第54章 言語の重要性 その2 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay54 +
+

+まつもと ゆきひろのハッカーズライフ
+言語の重要性 その2 +

+
+

[UNIX USER, 2005年10月号]

+
+

前回「言語の重要性」の続編です。今回は、自作言語について語っています。多くの人にとって、プログラミング言語はプログラムを開発するために「学ぶもの」であって、「作るもの」ではありません。人間というのは無意識のうちに線を引いて「ここからは自分の領域ではない」と思い込んでしまうもののようで、「言語を作る」ことというのは典型的な領域外に属する活動のようです。この「無意識の線引き」からは誰も自由ではなく、最近、Rubyのために「コンパイラ・コンパイラ」(構文解析機のソースコードを自動生成するツール)を開発する話になったときに、自分がコンパイラ・コンパイラは既存のものを利用するだけで新規に開発することを意識の外に置いていたことを自覚して愕然がくぜんとした経験があります。

+

今回は「おまけ」としてOSCON参加レポートもついています。そういえばこの頃は直接Rubyをテーマにしない海外カンファレンスにもたまには出席していましたね。カンファレンスへの招待が増えるにつれて、Rubyを直接テーマにしないカンファレンスへの出席は避けるようになってしまいました。2024年にはRuby on Rails20周年ということでRails World Conferenceに出席しますが、それは本当に稀有な例外です。

+
+
+

本当のハッカーの定義

+
+

しばらく前の話になりますが、VA Linux Business Forum 2005においてOSS Roundupという討論会に参加しました。これは、私を含むオープンソースに深く関わっている5名のパネリストがオープンソースに関して自由に語る形式のものです。この中で「ハッカーとは何か?」という話題が登場しました。一番定義が緩いのは「オープンソースプログラマー」の肩書でテレビにも出演していらっしゃる小飼弾氏で、「(民主主義社会では)あらゆる人はハッカーである」と定義しておられました。それはまた極端な。

+

でも、これをきっかけにイベントが終わったあと、「本当のハッカーの定義は何だろうか?」と改めて考えました。私は、小飼さんほど範囲を広げるつもりはないのですが、自分の中で「ハック」という用語をプログラミングに限定しているわけでもなさそうです。あえて、言語化すると「普通の人は変えられないと思い込んでいるものも変えることができる力を持つ人」くらいでしょうか。そして、コンピュータに関連した領域では、その力の源はプログラミング能力にありそうです。コンピュータに関係ない領域でも、政治力を駆使して社会を変革する「ソーシャルハック」とかありそうな気がします。経済力と常識にとらわれない発想力で社会に大きな影響を与えるライブドアの堀江さんなどは、「ソーシャルハッカー」なのかもしれません。まあ、そんな私でも、やっぱり何も修飾なしに「ハッカー」という単語を使えばやっぱりそれはプログラミングを行うハッカーのことを指しますけどね。

+
+
+ +

キーワードはINSANE

+
+

もっと最近の話になりますが、8月1日から5日まで米オレゴン州ポートランドで開催されたO’Reilly Opensource Convention(通称OSCON)1 に参加してきました。前述の弾さんとは、ここでもまたご一緒しました。また、David Thomas, Rich Kilmer, Jim Weirichなど、Rubyを通じて知り合った海外の友人と再会できたのもうれしいことです。OSCONのリポートは227ページを参照していただくとして、世界中からオープンソースに関心がある人々とハッカーが集う様子は壮観でした。

+

さて、OSCONで強く感じたキーワードはINSANEです。辞書を引くと「正気じゃない」「精神異常の」とか「ばかげた」「非常識な」とかひどい意味が並んでいますが、実際にはもっとずっとポジティブに使われています。口語で「正気の沙汰さたじゃない」や「普通じゃない」などというときのニュアンスに近いでしょうか。この連載で何度も繰り返しているハッカーの「ブレーキが壊れている」様子をよく表現していると思います。

+

OSCONの4日目に、Larry Wall(Perl)、Rasmus Lerdorf(PHP)、Guido van Rossum(Python)と一緒にランチをとる機会がありました。言語デザイナーとして、こんな豪華なメンバーのランチに参加できたのは光栄の極みです。Unicode対応のやり方とか、最近のトピックについていろいろと話をした2 のですが、ここでもINSANEは話題になっていました。GuidoがLarryに向かって「あなたたち(Perlピープル)のINSANEさはけた違いだ」と言っていましたが、これは「あなたたちは気が違っている」という意味ではなく、「われわれも確かにINSANEだが、Perlの人たちにはかなわない」というニュアンスでしょう。Guidoは、「われわれはこれだけ後方互換性に気を使って言語を変化させているのに、まだ変化が速いといわれる」とちょっと残念そうでした。確かにPythonピープルは保守的な人が多いかも。先入観でしょうか。それに比べると、Rubyはずいぶんいいかげんだなあ。

+
+
+ +

自分言語を作るのは難しくない!?

+
+

正直なところ、世の中にこれだけたくさんの言語があって、それぞれに特徴を持っているのに、さらにまた新しい言語を作ろうと思い付くその時点ですでに相当INISANEでしょう。常識的な人間であれば「これだけいろんな言語があるんだから、この中から自分の目的に合うものを探そう」という発想をするはずです。そこを「自分の言語を作ろう」と思っちゃうんですから、INSANEといわれても仕方がありません。しかも、言語を作ってそれを成功させようと思ったら、ただ単に言語をデザインするだけでなく、

+
    +
  • 処理系を実装(誰も代わりに「自分言語」の処理系を書いてくれない)

  • +
  • ドキュメントを書き(誰も代わりに「自分言語」のドキュメントを書いてくれない)

  • +
  • Webサイトを用意(誰も代わりに……以下省略)

  • +
+

などする必要があります。なかなか厳しいいばらの道ですよね。

+

じゃあ、「自分の言語」を作るのは本当に非現実的なことなのでしょうか。まつもとがRubyを作ったのは、本当に彼が「正気じゃない」からでしょうか。そうでないとは言い切れないのが悲しいところですが、私も最初から他の人と違ったことをしたいからRubyを作ったわけではないのです。「成功しよう」とか「完璧なものを作ろう」とか最初から気負うから大変なのですが、実際には「作りたい」という思いがあったから作った、そして言語の設計や実装はそれほど難しいことではないから実現できたわけです。

+

冷静に考えてみると、システムをデザインするということは、ある意味、言語に語彙ごいを加えていくことに他なりません。「どのような語彙をそろえているか」は言語の性質を決定しますから、自分の言語をデザインしていることでもあります。その辺をもうちょっと突き詰めて、語彙を超えて文法の領域にまで手を入れたくなると、アラ不思議、自分言語の出来上がり、ということになります。

+

ここ数十年のコンピュータサイエンスの進歩により、言語処理系の開発は本当に簡単になりました。特別に変な文法でなければ、BNF3 に似たような記法で文法を定義するだけで、コンパイラと呼ばれるツールを使ってあっという間に構文解析器を自動生成することができます。今や性能のことを第一に考えなければ、簡単な言語を作ることなんて数日あればできることです。

+

しかし、自分言語を作ることで何かメリットがあるのでしょうか? ええ、あるんです。

+

1つ目のメリットは、言語処理系というものがプログラミングの中でしばしば登場するテクニックの集合体であることです。たとえば、設定ファイルを読み込むルーチンなどは、言語処理系の字句解析、構文解析そのものです。また、言語処理系はコンピュータサイエンスの総合芸術ですから、処理系を実装するために用いたテクニックはあらゆるプログラミングに応用できます。

+

また、よい言語をデザインしようということは、人間の気持ちをより深く考えることでもあります。つまり、インターフェースのあるべき姿について、より深い考察を行うことでもあるわけです。自分言語を作る2つ目のメリととしては、言語レベルでの使い勝手を考えることで、プログラムの使い勝手に関するより深い経験と知識を身につけられることがありそうです。

+
+
+ +

一段高いプログラマーへの道

+
+

最後に、言語デザインはとにかく面白いです。プログラミングの世界は、結局すべてのものが言語によって表現されるので、言語を変化させることはあらゆるもののあり方を変化させることでもあります。つまり、言語のデザインは、究極の自由だといえるでしょう。このような自由を享受する機会は、それほど多くないはずです。

+

自分言語をデザインするということは、一段高いプログラマーへの道に通じているのかもしれません。たとえ結果的に、その言語が他の人にまったく使われなかったとしても……。そう思って、昨年からlangsmithメーリングリスト4 を運営しています。言語好きな人たちが集まって、自分の新言語を発表したり、議論したりしています。この中から未来を担う言語が登場したり、時代をリードするプログラマーが誕生したりするといいなと思っているのです。

+
+
+
+
+
    +
  1. +

    OSCON

    +

    今年のOSCONの情報ページやプレゼンテーション資料は以下のURLで公開されている。

    +

    http://conferences.oreillynet.com/os2005/
    +http://conferences.oreillynet.com/pub/w/38/presentations.html +

    +
  2. +
  3. +

    いろいろと話をした

    +

    LL(Lightweight Language)言語のデザイナーが顔を合わせてざっくばらんな話ができる機会はそうそうあるものではなく(前回は2年前)、せっかくの超貴重な機会なのだが、私は英語が拙くてあまり突っ込んだ話はできなかった。痛恨。 +

    +
  4. +
  5. +

    BNF

    +

    Backus Naur Formの略。BNF記法は、ALGOL 60の文法定義を形式的に行うために考案されたものである。 +

    +
      +
    • 右辺 ::= 左辺

    • +
    +

    という形式で文法要素を決定するルールを並べていくことで全体の文法を定義する。yacc(yet another compiler compiler)のようなツールはBNF(に似た)記法を受け入れて構文解析を行うソースコードを出力する。 +

    +
  6. +
  7. +

    langsmithメーリングリスト

    +

    アドレスは<langsmith@quickml.atdot.net>。参加するためには、まつもとのアドレス<matz@ruby-lang.org>にCCしながら上のアドレスに参加希望のメールを出すこと。 +

    +
  8. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-042.xhtml b/docs/vol2/xhtml/p-042.xhtml new file mode 100644 index 0000000..001d722 --- /dev/null +++ b/docs/vol2/xhtml/p-042.xhtml @@ -0,0 +1,129 @@ + + + + + +第54章 言語の重要性 その2 + + + + +

Matz Essays Volume 2

+ + +
+ +

まつもと ゆきひろのOSCONレポート

+
+
+

2005年8月1日から8月6日にかけてアメリカ、オレゴン州ポートランド開催されたO’Reilly Open Source Convention 2005に参加してきました。アメリカに限らず世界のあちこちからハッカーが集まる特別な機会について、やや偏った視点からレポートします。

+
+
+

OPEN SOURCE CONVENTION

+

オープンソースコンベンションはもともとはO’Reillyが主催していたPerl Conferenceが母体になっています。Perl Conferenceの規模が段々大きくなり、他のオープンソースに関するイベントも取り込むようになってオープンソースコンベンションという形になりました。3年前まではアメリカ西海岸のあちこちで開催されていましたが、一昨年にオレゴン州ポートランド市に定着し、昨年からは毎年Oregon Convention Centerで開催することにしたようです。Linus Torvaldsもオレゴン在住のようですし、今やオレゴン州はオープンソースの聖地と呼んでもよいのかもしれません。しかし、その割にはポートランド空港の入国管理官との間に、

+
+

管理官 : 入国目的は?

+

ハッカー: OSCONに出席するため

+

管理官 : OSCON?

+

ハッカー: オープンソースのイベントである

+

管理官 : オープンソースとは何か?

+

ハッカー: ソースコードを自由に……

+

管理官 : ?

+

ハッカー: あーっ、めんどくさい

+

ハッカー: そのパソコンはネットに繋がってないのか

+

管理官 : 繋がってない

+

ハッカー: インターネットで見れば一瞬なのに

+

管理官 : まあ、いいでしょう。次回は書類を用意して

+

ハッカー: @#%@!#$%

+
+

のようなやりとりが実際に行われたようで、聖地といえども一般への周知はまだまだのようです。

+
+
+

トラック

+

OSCONは2000人以上が参加する巨大なイベントです。セッションは複数のトラックに別れて同時並行に開催されます。だいたい興味深い話が同時に行われることになっているようで、泣く泣く選ばなければならないなどということはしょっちゅうです。今年開設されたトラックは以下のとおりです。

+
+
+

Apache

+

Apache 2.2の話題から各種モジュール、Webスケーラビリティまでさまざまな話題が取り扱われました。

+

Databases

+

海外ではMySQLが人気なのですが、MySQLに限らずPostgreSQL, Firebird, IngresなどさまざまなDBMSが取り上げられました。それぞれの開発者が直接「対決」するセッションもありました。

+

Emerging Topics

+

新しい話題全般を詰め込んだセッションです。Macromedia Flashを利用したリッチクライアント技術から、オープンソース開発のケーススタディまで、雑多な内容が詰め込まれています。

+

Java

+

あまりオープンソース的でないといわれることの多いJavaですが、Spring, Hibernate, Tapestry, Eclipseのような具体的なオープンソースソフトウェアにフォーカスしたセッションが多数開かれていました。

+

Perl Confernece 9

+

前述のようにOSCONの母体となったPerl Conferenceです。今年で9年目になります。もっとも独立したイベントにはなっておらず、「OSCONにはPerl関連のセッションが多いな」程度の印象です。Perl 6やPerl 5それぞれの最新情報が披露されました。

+

PHP Conference 5

+

Perl同様PHP Conferenceも併設されています。

+

Products & Serveces

+

オープンソースビジネス企業が自社の経験や商品を披露するトラックです。今年のOSCONはビジネスとしてのオープンソースも注目されており、たくさんの人を集めていました。

+

Python

+

Pythonについてのトラックもあります。Pythonは毎年2月にPython Conference(通称PyCon)を別に開いているので、Conferenceという名前は付いていません。

+

Ruby

+

昨年のOSCONにはRubyトラックがなかったのですが(一昨年にはあった)、今年は開設されました。今年は平均的なJavaによる開発よりも10倍生産性が高いといううわさのWebアプリケーションフレームワークRuby on Railsが大変話題で、注目を集めていました。

+

Security

+

Securityセッションではセキュリティ、特にネット上でのセキュリティについてさまざまな角度から扱っていました。

+

XML

+

「なぜXMLか」とかいうような段階はすでに過ぎ去り、具体的にどのようにXMLを扱うかというようなレベルに到達していました。「なぜSOAPは複雑でなければならないか」というセッションはなかなか興味をひかれました。時間の都合で聞けませんでしたが。

+
+
+
+ +

Perl 6

+

やはり、Perl Conferenceから始まったOSCONではPerlが幅を効かせています。割り当てられる部屋もPerl関係は数百人が収容できる大部屋がほとんどで、ときには異様に密度が低いこともありました。それでもDamian ConwayとLarry WallがPerl 6のあるべき姿を紹介するセッションは広い会場でも立ち見が出るほどの盛況ぶりでした。Perl 6は話を聞けば聞くほど「ほんとに実装できるんかいな」というような「何でもあり」の仕様なのですが、Haskellで実装されたPugsと呼ばれるPerl 6コンパイラ(フロントエンド)も、Parrotと呼ばれる仮想マシン(バックエンド)も順調に開発が進行しているということで、このままであれば、あと数年で普通の人が実際に使えるPerl 6が手に入るかもしれません。数年前にも同じことを聞いたようにも思いますが。

+
+
+

Ruby

+

今年はRubyは注目されていました。Ruby関連のセッション(表54.1)はどれも超満員でした。もっとも部屋が狭かっただけという説もありますが。

+
+

表54.1●Ruby関連のセッション

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Extracting Rails from BasecampDavid Heinemeier Hansson
Yield to the Block:
The Power of Blocks in Ruby
Yukihiro Matsumoto, netlab.jp
10 Things Every Java Programmer
Should Know About Ruby
Jim Weirich, Consultant, Compuware
A Starry Afternoon, a Sinking Symphony,
and the Polo Champ Who Gave It All Up
for No Reason Whatsoever
why the lucky stiff
Metaprogramming RubyGlenn Vanderburg, Principal, Delphi Consultants, LLC
Dependency Injection:
Vitally Important or Completely Irrelevant?
Jim Weirich, Consultant, Compuware
+
+

今年の注目は、やはりRuby on Railsのおかげでしょう。実際に10倍の生産性の違いがあるかどうかはともかく、チュートリアルでは目の前ですいすいとWebアプリケーションが実装されていく姿はやはり感動を覚えます。おかげでRails 開発者のDavid Heinemeier Hansssonは、このOSCONで発表されたO’Reilly+Google the Best Hacker of the Year Awardを受賞しました。めでたいことです。

+
+
+

オープンソース全般

+

OSCONは技術主体のイベントではあるのですが、やはりビジネスとしてのオープンソースに関心は高く、それ向けのセッションはかなり人が多かったようです。また、「オープンソースと女性」というテーマでの議論も行われていました。しかし、確かにOSCONでも女性は少数派ですが、少なくとも、ほぼ皆無の日本よりはずっとたくさんの女性を見掛けたことだけは確かです。

+
+
+ +

まとめ

+

技術主体のオープンソース関連のイベントとしては世界最大といってもよいOSCONからのレポートをお届けしました。私は時間(と体調)の都合からあまりたくさんのセッションに参加することができませんでした。来年はもっと体調を整えて、積極的に参加したいと思っています。やはりここが最新情報が発信される場であり、人と人とのコネクションが構築される場所ですから。それにはもっと英語を勉強しなくちゃな。

+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-043.xhtml b/docs/vol2/xhtml/p-043.xhtml new file mode 100644 index 0000000..dd803b4 --- /dev/null +++ b/docs/vol2/xhtml/p-043.xhtml @@ -0,0 +1,117 @@ + + + + + +第55章 ハッカーとオープンソース + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay55 +
+

+まつもと ゆきひろのハッカーズライフ
+ハッカーとオープンソース +

+
+

[UNIX USER, 2005年11月号]

+
+

フリーソフトウェアとオープンソースについて簡単に解説しています。フリーソフトウェアやオープンソースについては本書でも何度も解説していますから、あまり新しい内容はありませんが、これらが目指す「ソフトウェアの自由」はハッカー気質に取って欠かせないもので、だからこそ一流のハッカーであったStallmanが生涯をかけて啓蒙してきたのだと思います。人々がもう少しフリーソフトウェアについて柔軟に受けれ入れていれば、Stallmanがプログラミングに集中できたのではないかと残念に思う気持ちと、彼の努力がなければそもそも人類はフリーソフトウェアもオープンソースソフトウェアも手に入れることができなかったであろうから喜ばしい気持ちと両方があるのです。

+
+
+

オープンソース貢献者賞

+
+

先日、IPAとオープンソース推進フォーラムから「オープンソース貢献者賞」なる賞をいただきました。今回受賞したのはDebianプロジェクトの貢献者として知られる鵜飼さん(日本ヒューレット・パッカード)、Linuxカーネルハッカー高橋さん(VA Linux Systems Japan)、NamazuやGonzuiなどで知られる高林さん(グーグル)、そして、まつもと(ネットワーク応用通信研究所)の4人でした。第1回目ということで、オープンソース界隈でそれなりに名前が知られていて、かつ実際にコードを書く人を中心に選定したというところでしょうか。いずれにしても大変ありがたいことです。

+

本来、私は表に出たり、有名になったりするのはあまり好きではありません。しかし、最近ちょっと考えを変えることにしました。私自身が好むと好まざるとにかかわらず、「Rubyのまつもと」はこの業界では知れ渡ってしまったのですから、今さらこれをどうにかできるものではありません。それならば、むしろ精いっぱい「成功」して、あとに続くオープンソース開発者の模範あるいはロールモデルになろうと思うようになりました。「オープンソースをやっていても食べていけるんだ」とか、「オープンソースを仕事にして幸せそうだ」とかいうありさまを見せることも私の使命の1つなのでしょう。きっと。

+
+

さて、今回、オープンソースの貢献者の一人として認定された私ですが、私がいわゆるオープンソースと関わり出したのは、オープンソースという単語が生まれた1998年をはるかにさかのぼります。当時はフリーソフトウェア1 と呼ばれていました。最初の出合いは1989年頃で、EmacsとGCCに触れたのが始まりだったと思います。それ以来、職業プログラマーが会社のために仕事として開発したものはともかく、そのようなしがらみのないものをフリーソフトウェアとして公開するのは当然だと考えていました。フリーソフトウェアにはお世話になりっぱなしなのですし、それくらいは当り前ではないでしょうか。

+
+
+

フリーソフトウェア好きのハッカーたち

+
+

私に限らず多くのハッカーたちはフリーソフトウェア(オープンソースソフトウェア)が大好きです。それはなぜでしょうか。

+

タダだから? それもあるでしょう。数多くの優秀なソフトウェアが無償で利用できるのは大変ありがたいことです。私のノートPCには、OSとしてDebian GNU/Linux、そして数えきれないほどのソフトウェアがインストールされていますが、そのほとんどはフリーソフトウェアです。

+

しかし、ハッカーがフリーソフトウェアを愛する最も大きな理由は経済的なものではなく、自由です。ハッカーは自分が理不尽と感じる理由で行動が制限されることを大変嫌います。あるソフトウェアがどのように動いているか知りたくなったときには、ソースコードを読んでそれを確かめたい。ソフトウェアにバグがあったときには、自分でそれを直したい。自らの行動を制限するものがあれば、ソースコードを読み、プログラミングテクニックを駆使して、それを排除したい。それはもうハッカーの本能のようなものです。

+

世間的に「ハッカー」という言葉に悪い意味を与えてしまったクラッカー(システム侵入者)たちも、もともとは自分たちに対する制限への過剰反応が起源です。70年代にMITなどの大学に生息していたハッカーたちは、自分たちの問題を自由に解決するため、ときどきかなり過激なこと2 を行ったと聞いています。それだけ彼らは自由を切望し、自由を獲得するために闘争していたのです。いつもそれが正しかったとは言いませんが。

+
+
+

フリーソフトウェアの起源

+
+

そもそも、フリーソフトウェア自体も、自由の獲得が起源になっています。昔々、ソフトウェアはハードウェアの付属物であり、コンピュータを買うとソースコードごと付いてくることは決して珍しくなかったそうです。メーカーから買ってきたコンピュータはOSすら付いておらず、「あらゆるソフトウェアはユーザーが開発する」というケースもあったようで、同じコンピュータを購入したユーザー同士は自分たちが開発したソフトウェアを交換して、お互い助け合っていました。洗練されてはいませんが、今のオープンソースソフトウェアと少し似ていますね。

+ +

その後、ソフトウェアは商品となり、ソースコードは簡単には外に出せない「企業秘密」に変貌します。昔を知るものにとっては、だんだん自由が奪われていったわけです。それでも大学に所属している人々は相変わらずソフトウェア交換を行っていたわけですが、その自由も次第に商用ソフトウェアに侵食されていきます。

+

そして、とうとう大学で細々と行われていた自由なソフトウェア交換をゆるがすような「事件」が発生します。それは本連載の第4回「Emacs対vi」(2005年7月号)で説明したEmacsにまつわる事件です。

+

最初のEmacsは、Richard Stallmanという天才ハッカーがITS3 上のマクロエディタTecoを使って記述したものです。使いやすいエディタと評判になったEmacsは数多くの派生版を生み、後にJavaの設計者となるJames Goslingによって1981年にはUNIX版のEmacsが開発されます。GoslingによるEmacs(通称Gosmacs)は、MockLispと呼ばれるLispもどきの言語を使った拡張機能を持っていました。Stallmanも、UNIX版Emacsがほしいと思い、Gosmacsをベースに変更作業を行おうとしました。MockLispではなく、本物のLispを組み込んだEmacsがほしくなったからです。しかし、GoslingはGosmacsの権利をUnipress4 という企業に売却してしまい、StallmanはGosmacsをベースにして新しいEmacsの開発できなくなりました。結局、Stallmanはゼロから開発した5 のですが、まさにこのとき「ソフトウェアの自由は自分で守らなければいけない」ことが明らかになったのです。この時点で「ソースコードが公開されているだけでは十分ではない」という事実に気付いたStallmanは、世間を15年は先んじていたといえるでしょう。

+

この後、Stallmanはソフトウェアの自由を守るための団体であるFSF6 を組織し、ソフトウェアの自由を保証するライセンスであるGPL(GNU General Public License)を定義し、また上から下まで完全に自由なOS環境であるGNU(GNU’s Not Unix)を作るべく積極的に活動し始めました。

+

いや、ソフトウェアの自由は確かに大変重要なものですが、だからといって「そこまでやるか?」と言いたくなります。この辺がStallmanの「ブレーキが壊れた」部分であり、それこそ彼が真のハッカーである証しなのでしょう。フリーソフトウェア運動を推し進める彼の情熱とパワーには、敬服するしかありません。驚くべきエネルギーです。でも、おかげでStallmanは、プログラミングに割く時間があまり取れないそうです。彼の膨大なエネルギーを純粋にプログラミングに向けることができたらどんな偉大なことが実現できていただろうかと考えると、すごくもったいないような気がします。

+
+
+ +

フリーソフトウェアからオープンソースへ

+
+

ある意味、現在は幸せな時代です。オープンソースは世間の注目を浴び、膨大なフリーソフトウェアの蓄積があって、ほとんどあらゆる種類のソフトウェアのソースコードを自由に閲覧したり、必要に応じて改造や再配布も自由に行うことができます。また、プログラミングに必要な情報のほとんどはインターネットを経由で瞬時に入手できます。UUCP7 のバケツリレーでメールやニュースを受け渡し、ソフトウェアの配布は磁気テープの回覧で行っていたことが神話時代のことのように感じられます。

+

しかし、そのような幸せと自由は過去のハッカーたち(特にStallman)が熾烈しれつな闘争によって勝ち取ったことを忘れてはいけません。将来、再びソフトウェアの自由を奪い去ろうとする動きが発生しないとも限りません。実際にソフトウェア特許やDRM8 の領域で、その傾向がうかがえます。私たちハッカーとその仲間たちは、いざというときに自由のために立ち上がる備えをしておきべきかもしれません。

+
+
+
+
+
    +
  1. +

    当時はフリーソフトウェア

    +

    もちろん現在でもフリーソフトウェアという呼び名は存在している。個人的な意見をいえば、フリーは自由を意味するので、用語としてはオープンソースよりも優れていると思う。しかし、マーケティング用語としてはオープンソースのほうが成功したのは間違いなく、また、私がご飯が食べられているのもそのマーケティングのおかげである。複雑な気持ちだ。 +

    +
  2. +
  3. +

    かなり過激なこと

    +

    たとえば、ハッカーという言葉そのものを生んだMIT鉄道クラブ(TMRC: Tech Model Railroad Club)のメンバーが夜な夜なMITの建物に忍び込んでコンピュータを無断使用していたことは有名である。当時、その行為はあまり問題視されなかったようだ。大らかな時代である。 +

    +
  4. +
  5. +

    ITS

    +

    ITS(Incompatible Timesharing System)はMIT人工知能研究所(のハッカーたち)が独自に開発したOSである。当初はDEC PDP-6、その後PDP-10で動作した。 +

    +
  6. +
  7. +

    Unipress

    +

    UnipressはGosmacsをUnipress Emacsという商品として販売を始め、自分たちが権利を持つUnipress Emacsのソースコードを再配布しないようにStallmanに通告した。しかし、Goslingがこの事態を望んでいたとか、予想していたと考えるべきではないと思う。 +

    +
  8. +
  9. +

    ゼロから開発した

    +

    これが現在も使われている(私も使っている)GNU Emacsの起源である。Unipress Emacsがもはや影も形もないことを考えると皮肉なことである。 +

    +
  10. +
  11. +

    FSF

    +

    Free Software Foundationの略。 +

    +
  12. +
  13. +

    UUCP

    +

    Unix to Unix CoPyの略。一定間隔、あるいは要求に応じて電話回線などを使ってリモートホストに接続し、メールやファイルを交換する接続形態。 +

    +
  14. +
  15. +

    DRM

    +

    Digital Rights Managementの略で、音楽や動画などのデジタルコンテンツに対して、暗号化などを施して不正コピーや流出を防ぎ、正規流通を促進させる枠組み、およびそれに利用されるテクノロジー。 +

    +
  16. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-044.xhtml b/docs/vol2/xhtml/p-044.xhtml new file mode 100644 index 0000000..7317107 --- /dev/null +++ b/docs/vol2/xhtml/p-044.xhtml @@ -0,0 +1,126 @@ + + + + + +第56章 測定狂時代 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay56 +
+

+まつもと ゆきひろのハッカーズライフ
+測定狂時代 +

+
+

[オープンソースマガジン, 2005年12月号]

+
+

今回はパフォーマンスのプロファイリングとチューニングの話について触れています。この「ハッカーズライフ」連載は分量が少ないのでどれも表面的な解説しかできないのが残念なところですね。ツールについてもgprofの解説しかありません。実際にはプロファイリングツールには各種あり、使いこなせばずいぶん便利なものがたくさんあるのですが、これはまた別の機会に解説するとしましょう。

+

「おまけ」は「ハッカー養成塾」というタイトルで、わたしの過去作品や教訓などについて記述しています。うろおぼえですが、掲載誌が変わったタイミングで執筆者の多くがこのような記事を書いたのだったと思います。今(2024年)から見れば30年以上前の話がほとんどで、懐かしいですね。ここであげられている作品のうち、morqだけは今でも使っているのです。

+
+
+

測定狂

+
+

「バカは風邪をひかない」と言いますが、幸い私のバカさ加減は許容範囲内のようで、年に数回風邪をひきます。もっとも例年夏風邪をひくことが多いので「やっぱりバカなんだ」と思うことも多いのですが、今年はなんとか大丈夫だったようです。

+

風邪をひくと体温計で体温を測ります。昔は水銀の入った体温計ですが、最近はデジタル体温計が主流のようです。測定が終わるとビープ音が鳴ったりして、なかなか賢いです。さらに、わずか1秒で体温がわかる、耳で測定する体温計もあります。ガジェット好きとしてはぜひほしいアイテムですが、家族の理解が得られず、まだ入手していません。

+

風邪をひいたときの行動は人によっていろいろでしょうが、私はとにかく頻繁に体温を測ります。ひどいときなど数分おきに測定して、家族をあきれさせることもあります。でも、体温を測るとなんだか自分の体のベンチマークを取っているようで楽しくなりませんか? 病気が直っていく様子がうかがえるようで、私にとっては病気でしんどいときの数少ない楽しみです。

+
+

日常生活における測定といえば、体重測定があります。体温ほど熱心に測定する気にならないのは、なかなか自分の望む方向に(私の場合は減る方向に)変化しないせいに違いありません。健康のためにはもうちょっと痩せたほうがいいんだけどなあ。運動もしないでコンピュータの前に座ってばかりなので、増加してないだけでも喜ぶべきなのかもしれませんが。気乗りしないといっても、数日に1回は入浴前に体重計に乗り、その結果をPDAに記録してグラフを書いてたりするんで、やっぱり測定好きなんですね。

+
+
+

スピード狂

+
+

さて、私の知人のハッカーの中には何人か「スピード狂」がいます。スピード狂といっても峠で自動車レースをするわけではなくて、プログラムの実行速度を速くするために異常に熱意を燃やす人たちのことです。彼らはRubyのようなスクリプト言語は使いません。「だって遅いじゃん」。使うのはもっぱらCです。まれにC++を使う人もいますが、あまり多くはありません。「C++は(コンストラクタとか暗黙の呼び出しがあるから)実行コストが直接的に見えないので好きでない」という人が多いようです。Javaは以前に比べてずいぶん高速化されましたが、それでもまだ不満そうです。また、個人的な知人たちの中にはいませんが、高速化のためにはアセンブラを駆使する人も存在すると聞いたことがあります。もっともRISC以降、単にアセンブラで書くよりCなどで書いたほうが高速化されることも多いようで、アセンブラ派はめっきり数が少なくなったようです。

+

もちろん、そんなに極端な人はたくさんはいないでしょうが、ハッカーの多くは何らかのスピード狂的側面を持っているようで、同じ動作となるプログラムの実行時間を短縮するという課題は燃えるものがあります。プログラムを繰り返し実行しながら「ここをいじるとコンマ何秒短縮された」などとハックを繰り返すのは、ハッカーにとってある意味大変幸福な時間です。パズルを解くときの知的チャレンジに似ているからでしょう。

+

CでコンパイルしたプログラムをCPUで直接実行するのに比べると、Rubyのようなインタプリタ型言語の実行はだいたい100〜1000倍くらい遅い1 ことが知られています。では、スピード狂はまったくインタプリタ型言語に寄り付かないかというと、そうでもないようです。もともとの実行時間が長いほど、改善による時間短縮幅が大きく、より達成感を感じられるからです。インタプリタ型言語の場合、処理をどれだけライブラリルーチンで消費できるかが鍵になります。Rubyの各ライブラリルーチンはそれぞれそれなりに工夫して作られていますから、上手に使いこなせば、素朴にCで実装したプログラムと同等近い性能が出る場合もあるそうです。

+
+
+ +

無駄な努力

+
+

プログラムの高速化のように、プログラムの意味を変えずに性質(実行速度とかメモリ消費量など)を改善することを最適化2 と呼びます。ハッカーは最適化が大好きですが、そのような最適化の努力がいつも報われるとは限りません。最近のruby-talkメーリングリストに以下のようなポスト(ruby-talk:158426)がありました。

+
+

私の会社ではC++による3次元レンダリングソフトを利用しています。そのソフトはJavaScriptとLua3 のバインディングが提供していました。LuaはRubyほどには使い勝手がよくなかったうえ、私たちは速度とメモリの効率のため、より面倒なプログラミングテクニックを使う必要がありました。そのテクニックは確かに効果があり、FPS4 は1〜2%向上していました。私は大変苦労してLuaのプログラムを書き、単純なシーンのレンダリングで890〜910FPSを達成したことに誇りを覚えていました。

+

しかし、昨日、C++プログラマーの一人がレンダリングアルゴリズムにある変更を行ったところ、FPSが劇的に向上しました。今まで15FPSだった複雑なシーンのレンダリングが170FPSでできるようになったのです。私たちが非常に苦労して実現した数%の向上など、10分ほどかけて適切なアルゴリズムに変更するだけで吹き飛んでしまったのです。

+
+

ソフトウェア業界には昔から「premature optimization is source of all evil(早すぎる最適化はすべての悪の源)」ということわざがあります。プログラムの高速化においては努力がいつも報われるとは限らないのです。無闇な高速化の試みは、かえってプログラムの見通しが悪くなったりする弊害のほうが大きいのです。

+
+
+

無駄でない努力

+
+

ハッカーたるもの無駄な努力をするべきではありません。天より与えられたハッキングの才能を浪費することは許されないのです5。では、努力を無駄にしないためにはどうしたらよいでしょうか。

+

そのためには「パレートの法則」を理解する必要があります。パレートの法則とは「80 : 20則」とも呼ばれる法則で、全体の8割の数値は全体を構成する2割の要素が生み出しているという法則です。19世紀後半のイタリアの経済学者ヴィルフレド・パレート(Vilfredo Federico Damaso Pareto)が発見したことから名前が付いています。

+ +

パレートの法則からわかるのは、要するに努力が報われる8割の領域と報われない2割の領域6 があり、報われない領域でいくら努力しても無駄にしかならないということです。だから最適化を始める前にその作業は無駄になるかならないかを見極める必要があります。

+
+
+

プロファイラ

+
+

作業が無駄になるかどうか見極めるツールをプロファイラと呼びます。Linuxで最も有名なプロファイラはgprofでしょう。

+

gprofを使うためにはコンパイル時にccのコマンドラインオプションに「-pg」を追加します。このオプション付きでコンパイルされたプログラムには、関数の実行状態を測定するルーチンがリンクされます。プログラムを実行するとカレントディレクトリにgmon.outファイルが生成されます。プロファイル結果を見るには、そのディレクトリで、

+
+
gprof <プログラム名>
+
+

を実行します。これによって、

+
    +
  • どの関数がどのくらいの時間を消費しているか?

  • +
  • どの関数がどこから何回呼ばれているか?

  • +
+

などの情報を含む長いリストが出力されます。それを調べることで、「どの関数で最も時間がかかっているか」とか「どの関数が無駄に関数を呼び出しているか」などを確かめられます。この情報に基づくことで、より効果的な最適化ができることでしょう。

+

実行速度を見るgprof以外にも、メモリ消費量を調べるメモリプロファイラなど、測定するプログラムはたくさんあります。

+

正しく測定して効果的な最適化を行うことは、ハッカーの測定狂的性質とスピード狂的性質の両方を一度に満足させることができます。一粒で二度おいしい最適化、あなたも試してみませんか?

+
+
+
+
+
    +
  1. +

    100〜1000倍くらい遅い

    +

    とはいっても、実際には実行時間のほとんどがCで書かれたライブラリルーチンの中で消費されるので、直接1000倍の差がつくことはめったにない。 +

    +
  2. +
  3. +

    最適化

    +

    最適化とはいうものの、最適(最もよい状態)になることはめったにない。より正確には「ちょっとマシ化」とでも呼んだほうがよさそうだ。英語では「optimization」と呼ぶ。「optim-」は「optimistic(楽観的)」から来ているから、英語のほうが実態を的確に表現しているようだ。 +

    +
  4. +
  5. +

    Lua

    +

    ブラジルで開発されたスクリプト言語。アプリケーションの組み込みの容易さと実行速度の高速さが特徴だといわれている。ブロックが「end」で終わるところだけはRubyに似ているかも。 +

    +
  6. +
  7. +

    FPS

    +

    Frame Per Second。1秒間に処理できる画面数。 +

    +
  8. +
  9. +

    浪費することは許されないのです

    +

    念のため注釈を付けておくが、当然冗談である。だが、ハッカーが無駄な努力を嫌う傾向があるのは事実である。 +

    +
  10. +
  11. +

    8割の領域と2割の領域

    +

    パレートの法則の80 : 20の関係は経験則であり、実際にはもっと極端な場合もしばしばある。少なくともプログラミングに関しては90 : 10とか99 : 1とかは決して珍しくない。 +

    +
  12. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-045.xhtml b/docs/vol2/xhtml/p-045.xhtml new file mode 100644 index 0000000..02a8e88 --- /dev/null +++ b/docs/vol2/xhtml/p-045.xhtml @@ -0,0 +1,95 @@ + + + + + +第56章 測定狂時代 + + + + +

Matz Essays Volume 2

+ + +
+ +

ハッカー養成塾!

+
+
+

著者プロフィール

+

1965年大阪生まれ、鳥取県育ち。大学卒業以来ずっとぐうたら職業プログラマーをやってます。今の職場に来るまでは、職業プログラマーとして、社内OAシステムや造船設計システムを開発してきたことになっています。が、その実体はシステム内部で使われるツールやライブラリを好き勝手に開発してきました。

+
+
+

作品リスト

+

ハッカーはその結果によって評価されるのだと思います。最近では「Rubyのまつもと」として知られるようになってしまいましたが、その他にも以下のようなものを作ってきました(その他パッチなどは数知れず)。今まで作ってきたものは「ハッカーとしての私」を表現しているような気がします。

+
+
EmacsLispによるメールリーダーcmail
+

cmailはもともと山梨大学(当時)の林さんが開発されたメールリーダーですが、学生時代の私は、自分が使いやすいようにcmailをいろいろと改造して使っていました。それより以前はVMという名前のメールリーダーを使っていました。が、VMはだんだん規模が大きくなって、拡張の方向性が私の好みと合わず、また操作性も低下したように感じました。そういうときに見つけたcmailは、私にぴったりだったというわけではありませんが、規模が小さく見通しがよかったので、私好みに改造するのは難しくなさそうでした。

+

このように改造を施したcmailですが、フリーソフトウェアなんだしせっかくなのでこの改造を本家に還元しようとして林さんにメールを書いたら、「私はもう使っていませんからご自由にどうぞ」ということで私が引き取りました。私にとって最初のフリーソフトウェアということになります。cmailはコミュニティの協力を得てさまざまな新しい機能が追加され(mime対応、gpg対応、3ペイン表示、imap対応などなど)、発展を続けました。私は数年前にメンテナを引退しましたが、昨年新しいメールリーダーmorq(後述)に移行するまでは、実に14年もの間cmailを使い続けていました。

+
+
+
日本語が使えるXView風GUIライブラリ
+

以前勤めていた会社(独立系ソフトハウス)で社内OAシステムを作るのに日本語が通るGUIツールキットのソースコードが手に入らなかったというのを言い訳にして開発した自作GUIライブラリです。日本語が通らないというのはGUIライブラリの国際化の進んだ今では信じられないことですが、もう13, 4年も前のことですから。当時はまだMotifとOpenLookの対立が盛んな頃で、OpenLookのほうが優れていると感じていた私はOpenLookツールキットであるXViewを参考にしたAPIをデザインしました。ただし、単なるGUIライブラリだけではなく、まずObjective-C風のメッセージ呼び出しの仕組みとクラスライブラリ(OrderedCollectionとか)を作って、その上にGUIツールキットを構築しました。ですから、WindowButtonのような部品もそのオブジェクト指向ライブラリのクラスとして実装しました。あの頃、私は若かったなあ。このライブラリは社内ツールにとどまり、フリーソフトウェアにできなかったのは残念なことです。もうどこにもソースコード残ってないだろうなあ。実は、このライブラリのごく一部はRubyに流用されています(st.cとメソッドキャッシュの部分)。

+
+
+ +
bash 1.12でEUC-JPを通すパッチ
+

これも13年くらい前の仕事です。当時のbashはクォートによるエスケープに文字の8ビット目を使うという凶悪な仕様だったのでEUC-JPを使えるようにするためには苦労しました。確か基本的な部分は一晩徹夜して実装したような気がします。独身の頃は会社で一晩中ハックするのも珍しくありませんでした。昔は日本語を通すという単純なことを実現するだけでもえらい苦労したもので、当時の日本人技術者の労力はこうして浪費されていたのです。

+
+
+
オブジェクト指向データベースクラスタの分散ガベージコレクション
+

これは9年くらい前の仕事です。ObjectStoreというC++のオブジェクト指向データベースを使ったシステムを開発していたのですが、メモリ管理を自動化したいという要求に応えるため、同一データベース内ではマーク&スイープ方式のガベージコレクション、データベースを超えた参照(external reference)はリファレンスカウントを使う方式の分散ガベージコレクタを実装しました。ネットワーク上に分散したデータベースの位置を管理するため、小さな中央サーバーを用意したのですが、この部分はRubyを利用しました。ソケットプログラミングが非常に楽で重宝した覚えがあります。

+
+
+
検索ベースメールリーダーmorq
+

長らくRubyの開発ばかり行って、単体で動作するアプリケーションはあまり開発していなかったのですが、昨年から今年にかけて久しぶりに開発したアプリケーションがmorqです。本当はMail ORGanizerでmorgにしたかったのですが、Music ORGanizerでmorgという名前のソフトがすでに存在していましたので、Mail ORganizer using Qdbm(QDBMを使ったメールオーガナイザー)という意味でmorqという名前にしました。「もーく」と発音してくださいね。

+

morqはgmailの影響を受けて開発されました。大量のメールが届く昨今ではメールを分類するという行為は遠からず破綻します。これからはgmailのような「必要なメールは検索する」「必要に応じてメールにラベルを付けることもできる」というメール管理法が有効だと考えました。しかし、gmailにはネットワーク接続がないと使えない、1Gバイトの容量制限(当時)は将来的には不安、という欠点があります。しかし、ふと見ると手元のパソコンにはまだ数Gバイトの空きがあるではありませんか。ハッカーたるものなければ自作すればよいのです。そういうわけで作ったのがmorqです。現在はバックエンドはRuby+全文検索エンジンRast。フロントエンドはEmacs Lispでできています。現時点では本気でmorqを使っているのは世界中で私だけのようです。cmail以上にマイナーなメールリーダーですね。

+

私はもうかなり長い間morqをメインのメールリーダーとして使っていますが、なかなか快調です。「確か先月頃、こんなフレーズを含むメールがあったよな」というおぼろげな記憶からメールを見つけ出し、そのメールを含むスレッドを一度に読むことができます。人間がいくらこまめに分類しても、数万から数十万通のメールからこの速度で目的のメールを見つけ出すことはできません。morqはRastのパッケージに同梱されています。

+
+
    +
  • http://projects.netlab.jp/rast/?download.ja

  • +
+

からRastの最新版を入手してください。原稿執筆時点での最新版はRast 0.3.1です。Subversionを使えば、より新しいmorqを入手できます。

+
+
svn checkout http://projects.netlab.jp/svn/morq/trunk/morq
+
+
+
+

ハッカー人生訓

+

ハッカーの定義はあいまいなものです。ハッカーとは「ハックする人」以上の意味を持たず、むしろある種の性格分類だからです。その性格がプログラミングに向かうとき、人はその人をハッカーと呼びますし、分野が違えば「異端者」「改革者」「革新派」などと呼ばれることでしょう。

+

さて、そのようなハッカーが幸せに生きるための人生訓のようなものをいくつか紹介しましょう。いくつかは、私の「ハッカー人生」から学んだものですし、いくつかは実体験の裏打ちのないものです。

+
+
「できない」といわない。「やらない」という
+

プログラミングの世界で不可能なことはめったにありません。制限は時間と手間と知識の限界だけです。ですから、いつでも「やればできる」のです。こう考えれば「やりたいことをやらない」理由が減ります。

+
+
+
ほしいものがなければ自分で作ろう
+

世の中に同じものがすでにあるのに新しいものを作るのは無駄なだけです。そのような無駄は「車輪の再発明」として嫌われます。しかし、車輪が存在しないとき、あるいは自分ならもっとよい車輪が作れると感じたときには躊躇ちゅうちょせずに作り始めるのがハッカーというものです。ちょっと偉くなると自分で作る代わりに部下に作らせたりします。

+
+
+
制約を打ち壊せ
+

あらゆる制約はハッカーの敵です。自分の能力、意志、行動、言論への制約により不愉快な思いをするときには、それを取り除くべく行動するのがハッカー的です。フリーソフトウェア運動も、オープンソースもそのようにして発生しました。ただ、あまり過激になって非合法活動(クラッキングとか)に身を落とさないように忠告します。

+
+
+
コミュニケーションを忘れない
+

ハッキング能力とコミュニケーション能力は比例しません。しかし、ハッカーとして「作品」を一人で完成させることができる人はまれです。ですから、(たとえ苦手でも)コミュニケーションに時間をとることがハッカーとして「成功」するのに役立ちそうです。

+
+
+
+ +

まとめ

+

大学卒業以来、「ハッカーでも社会人として(なんとか)生きていける」ことを目標に生きてきました。今のところなんとか実現できているようです。皆さんもハッキングと幸せな生活を両立させてくださいませ。Happy Hacking!

+
+
+
+ +

+
+
+ + diff --git a/docs/vol2/xhtml/p-046.xhtml b/docs/vol2/xhtml/p-046.xhtml new file mode 100644 index 0000000..c97c55b --- /dev/null +++ b/docs/vol2/xhtml/p-046.xhtml @@ -0,0 +1,132 @@ + + + + + +第57章 ソースを読もう + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay57 +
+

+まつもと ゆきひろのハッカーズライフ
+ソースを読もう +

+
+

[オープンソースマガジン, 2006年1月号]

+
+

ソースの読み方について解説しています。多くの人はプログラミングはソースコードを記述することだと認識しているようですが、実際にはコードを読む時間のほうがずっと長いものです。特にデバッグのときにはコードに間違いがないか一生懸命読むものです。そういう観点から、コードの読み方と、それから(将来の自分を含めた)誰かがコードを読むときに読みやすいコードを書くコツについて簡単ながら説明しています。「プログラミングはむしろ人間のため」という原則を思い出させる記事ですね。

+
+
+

ハッカー能力を向上させる方法

+
+

『Code Reading』1 という書籍があります。私が監訳をしているからいうわけではないのですが、結構よい本です。今回の「ハッカーズライフ」はこの本を読んだ人には当り前のことかもしれません。

+

ハッカーとしての能力を身につけるのに最も優れた方法は、実際にコードを書くことと、他の人の書いた優れたソースコードを読むことだと思います。特にコードを読むことは普段あまり強調されませんが、他人のソースコードはいろんな意味で知恵と知識の源です。考えてみれば、私自身もたくさん他人のソースコードを読んで学んだように思います。

+

「コードを読むことは勉強になる」ということで、世の中には「Linuxカーネル読書会」と称して、Linuxカーネルのソースをmain関数から読み進めていく会合もあるのだそうです。一度出席してみたい気もしますが、私自身はそのような読み方でモチベーションが維持できるような気がしません。なんていうのかな、相手が巨大すぎるというか。ソースコードには小説のような読み物ではないので、漠然とソースコードを読むことはなかなかできないものです。

+
+
+ +

ソースコード読解の秘訣

+
+

私が過去にどのようなソースコードの読み方をしてきたのか振り返ってみると、プログラミング能力の向上を目指したコードの読み方のヒントがあるかもしれません。

+

まず1つは、「全体を読もうとしない」ことです。ソースコードには「物語」はないので、全体を通して読む必要はありません。面白そうなところをつまみ食いして、先人の知恵を学べばそれで十分です。

+

もう1つは、「目的を持って読む」ことです。何かを学ぼうと思ってソースコードを読めば、効果的に読解して知識を得ることができます。たとえば2、「再起下降構文解析の実装法を学ぶ」とか、「この処理系がどのようにガベージコレクションを実装しているか」とか、「なぜこの処理系はこんなに高速に動作するのか」とかです。プログラミングの教科書にあるコードは非常に小規模なものが多く、枠組を理解することはできますが、実用的なプログラムでどのような問題が発生するか、あるいはそれら問題にどう対処するかについては、あまり教えてくれません。実際に動いているプログラムはそのような「教科書が教えてくれない話」の宝庫です。

+

目的を持って読む、といえば、自分のプログラムに取り込むためにソースコードを読むというのも1つの重要な目的です。幸いなことに現代ではオープンソース、言い換えればライセンス的に自由なソフトウェアのソースコードがたくさん手に入ります。自分が十分に理解していない領域のコードでも、他の人が苦労して作ってくれたソースコードを参考にして問題解決できることはたびたびあります。私が体験した最近の例ではpom(phase of the moon)というプログラムがあります。pomは月の満ち欠け(月齢)を表示するプログラムです。昨年、末の娘が生まれたとき、空に見事な満月がかかっているのに感動して、他の人の生まれた日の月齢が知りたくなりました。で、pomを使おうと思ったのですが、あいにくエポック(1970年1月1日)以前には対応していません。そこで、BSDライセンスのpomのソースコードを入手し、Cのソースコードをほぼ逐語的にRubyに書き換えました。日付ライブラリがエポック以前に対応しているRubyでは、そのままエポック以前の日付にも対応したpom3 が完成したわけです。

+

ただし、ライセンス的に自由なソフトウェアといっても、何をするのも完全に自由なもの4 はそれほどありません。他の人が作ったソースコードを取り込むときには、それぞれのライセンスを尊重するようにしましょう。特にGPLは「ソフトウェアの自由」を保証するため、いくつかの制約5 が加えられています。理由があってそのような制約があるのですから、無視しないようにしましょう。

+
+
+ +

ソースコードの読み方テクニック

+
+

ソースコードを読み解くときには、まずプログラム全体の枠組みを理解することが有効でしょう。プログラム全体を読む必要はないのですが、自分がほしい情報がどこにあるかを見つけ出すためには、プログラム全体の構造のイメージをつかんでおくと便利なのです。ここで最も役に立つのはソースファイル名です。たいていのソフトウェアのソースコードはいくつかのファイルに分割されていますし、各ファイルにはプログラムの機能に関連した名前が付いています。たとえば、メモリ管理について知りたいときには「memory.c」とか「gc.c」などという名前の付いたファイルが怪しいといえます。

+

それで見つからない場合には、プログラムのスタートであるmain関数(Cの場合)からたどっていくことになります。ここでもプログラム全体を読む必要はないので、個別の関数の働きは関数名から推測して、必要そうなところを探すのに集中します。

+

ソースコード探索における最大の武器はgrepです。grepは「正規表現にマッチする行を見つける」という単純なツールですが、適当なキーワードを検索するとか、関数やメソッド、変数を探すなど、いろいろな目的に活用できます。Emacsなどgrep機能を支援するエディタでは、見つけた行に直接ジャンプすることも可能です。その他、関数定義に直接ジャンプするctags6 や、プログラムをハイパーテキストとして参照するGLOBAL7 なども役に立ちます。

+

プログラム読解向けツールのニューフェイスは、ソースコード検索エンジンGonzui8 でしょう。プログラム中の識別子をインデックス化するctagsやGLOBALとは違い、Gonzuiはさまざまな検索を支援しています。関数定義だけでなく、関数の呼び出しを見つけることもできますから、「関数呼び出しの実例から使い方を学ぶ」というような使い方にも向いています。

+
+
+

良いソースコード/悪いソースコード

+
+

このように、ソースコードを読む経験を積むと、読みやすいソースコードと読みにくいソースコードがあることに気が付くと思います。私が最悪と思ったのは(失礼ながら)Perl 5のソースコードです。

+
    +
  • ライブラリ手続きがpp.c, pp_ctl.c, pp_hot.c, pp_sys.cなどに分散しており、ファイル名が手続きを探すヒントにならない

  • +
  • 関数定義にマクロが使われているためctagsの類が使えない

  • +
  • 内部データのアクセスにもマクロが多用されており、また極端な省略形が使われているため、名前から機能が想像できない。SvUVX()SvPOK_only_UTF8()などなどの数百の名前が何を意味するのか理解するまではソースコードを把握できないような気がする。

  • +
+ +

もちろん、このソースコードを書いたLarry Wallは一流のハッカーで、上記の点にはそれなりの理由があるのです。たとえば、ソースコードファイルが機能別になっていない点は「Perl開発当時の古いマシンではオブジェクトファイルの配置によって関数呼び出し速度が異なっていたため、少しでも速度を稼ぐ意味で、頻繁に呼び出される関数を目的によらず1つのファイルに集めた」という理由がありますし、マクロの多用も「コードの繰り返しを避け、ソースコードをコンパクトにまとめる」という理由があります。わからないでもないのですが、ソースコードを読み解くという観点からは、やはりつらいものがあります。

+

このことから、良いソースコード、読みやすいコードの書き方を学ぶことができます。Perlのソースコードのちょうど反対をすればよいのです。Rubyを開発する際、Perlのソースコードも参考にしましたが、この悪い点は真似しないようにと決めていました。これによって、RubyのソースコードはPerlのものよりはずいぶんマシになっていると思います。例によって自画自賛ですが。

+
+
+

誰かのために、自分のために

+
+

ソースコードを読むことがハッカーの能力を高める。このことは最近になって次第に知られてきました。ここではもう一歩踏み込んで、ソースを読むこととその読み方について考えてみました。

+

ソースコードを書く際は、読まれることを意識するのも重要です。あなたの書いたソースコードを読む必要があるのは、見知らぬ誰かだけではなく、半年後の自分自身なのかもしれませんから。

+
+
+
+
+
    +
  1. +

    『Code Reading』

    +

    Diomidis Spinellis著、まつもとゆきひろ/平林俊一/鵜飼文敏監訳、トップスタジオ訳、『Code Reading — オープンソースから学ぶソフトウェア開発技法』、毎日コミュニケーションズ発行、ISBN4-8399-1265-3
    +http://book.mycom.co.jp/book/4-8399-1265-3/4-8399-1265-3.shtml +

    +
  2. +
  3. +

    たとえば

    +

    「たとえば」と書いているが、どれも私が実際に目的としたものばかりである。すぐに思い付く範囲内で読んだソースコードが言語処理系ばかりというのも、さすが「言語おたく」というか何というか。 +

    +
  4. +
  5. +

    エポック以前の日付にも対応したpom

    +

    ソースコードは以下のURL。
    +http://www.rubyist.net/~matz/20041028.html +

    +
  6. +
  7. +

    何をするのも完全に自由なもの

    +

    著作権が存在しない、いわゆるパブリックドメインに該当するものはまさに「何をするのも完全に自由」。メジャーなソフトウェアで明示的にパブリックドメインなものは、SQLiteくらいではないだろうか。 +

    +
  8. +
  9. +

    いくつかの制約

    +

    自由のために制約が導入されるというのも皮肉なものであるが、そのような制約がなければソフトウェアの自由が奪われてしまうというのがFSFの考えであり、それには一理あると私も思う。 +

    +
  10. +
  11. +

    ctags

    +

    ソースコードに対する識別子をインデックス化するツール。基本的にctagsはvi用だが、Emacs用のetagsもある。もっともこの2つのプログラムが作るインデックスは互換なので、どちらでも使える。現在では、両方ともRubyをサポートしている。 +

    +
  12. +
  13. +

    GLOBAL

    +

    エディタから独立したソースコード索引システム。C, C++, Yacc, Java, PHP4に対応。
    +http://tamacom.com/global-j.html +

    +
  14. +
  15. +

    Gonzui

    +

    検索エンジンNamazuの開発者と知られる高林哲さんが未踏プロジェクトで開発したソースコード検索エンジン。
    +http://gonzui.sourceforge.net/ +

    +
  16. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-047.xhtml b/docs/vol2/xhtml/p-047.xhtml new file mode 100644 index 0000000..a620aab --- /dev/null +++ b/docs/vol2/xhtml/p-047.xhtml @@ -0,0 +1,128 @@ + + + + + +第58章 Let’s Talk Lisp + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay58 +
+

+まつもと ゆきひろのハッカーズライフ
+Let’s Talk Lisp +

+
+

[オープンソースマガジン, 2006年2月号]

+
+

最古にして最強のプログラミング言語(誇張した表現)であるLispについて語っています。こんなに強力なのにLispはいつになっても人気がないんですよねえ。ガベージコレクションにしても例外処理にしても、多重継承にしてもLispが起源だったり、そうでなくてもLispでの実験によって発展した技術は多くて、JavaやPython, Rubyなんかで知られるようになったテクニックや実装技術でLisp由来のものは驚くほど多いのですが。もっとも私もLispから多大な影響を受けていながら、全然Lispでない言語を作っているので人のことは言えないのですが。

+
+
+

Lispは学ぶ道具? 使う道具?

+
+

Eric Raymondのエッセイ「ハッカーになろう」1 では、Lispのことが以下のように紹介されています。

+
+

LISPは、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。たとえ、実際にはLISPそのものをあまり使わなくても。

+
+

それに対してLispハッカーであるPaul Grahamは以下のように反応2 しています。

+ +
+

彼がLispについて言っていることはよくある意見だ。つまり、Lispを学べばよいプログラマーになれる、でもそれを実際に使うことはない、と。

+

何故だい? プログラミング言語なんてただの道具じゃないか。Lispでよいプログラムが書けるなら、使うべきなんだ。

+
+

そのとおり。あまり使われていませんが、Lispには優れたところがたくさんあります。私は、Paul GrahamほどのLispハッカーではありませんが、Lispプログラマーの端くれ3 として、今回はそのすばらしいLispについて簡単に紹介してみようと思います。

+
+
+

Lispの歴史

+
+

Lispの歴史は古く、その誕生は1958年だといわれています。1958年といえば、まだほとんどのプログラミング言語が登場していない時期です。この頃にすでに存在していたプログラミング言語で今でも生き残っているのはFORTRAN(1954年)とCOBOL(1959年)くらいのものでしょう。

+

Lispがプログラミング言語として特異なのは、もともとはプログラミング言語として設計されたのではなく、数学的な計算モデルとして設計されたことに原因があると考えます。Lispの設計者として知られるJohn McCarthyは、それが計算機言語として使えるとは考えもしませんでした。単なる計算モデルとして記述した万能関数evalを、彼の研究室の大学院生であるSteve RussellがIBM 704の機械語で実現したことによって、初めてプログラミング言語Lispが誕生したのです。

+
+
+

Lispのすごさ

+
+

しばらく前になりますが、あるオブジェクト指向関連のイベントで「私がオブジェクト指向を理解したのはMartin Fowlerの『リファクタリング』を読んでからです」という講演を聞いて驚愕きょうがくしました。オブジェクト指向に最初に触れたのが1980年代で、処理系といえばSmalltalkという私のような人間は「もう、じじいの領域だな」と強く感じた一瞬でした。

+

しかし、実際問題として、Javaで初めてオブジェクト指向を学んだ人はすでにかなりの割合になっているようです。そういう人たちにとっては、オブジェクト指向が真新しい概念のように感じられるかもしれません。また、Javaで強調されている例外処理やガベージコレクション、バーチャルマシンなどの概念も、最近登場したもののように感じられることでしょう。

+

しかし、実際にはそれらはみんなJavaよりも何十年も(文字どおり何十年も)前にLispで実現されていたのです。オブジェクト指向の登場が1968年のSimulaであったことをご存じの方も多いと思います。実に40年近くも前のことです。1980年代にはLisp処理系上にオブジェクト指向システムを構築する研究が多数行われており、それらの研究を踏まえて、1988年にはCommon Lispの標準としてCLOS(Common Lisp Object System)が取り込まれています。

+ +

このCLOSは多重継承やマルチプルメソッドなど現在でもまだ斬新と考えられる機能がたくさん盛り込まれています。また、最近話題のアスペクト指向に類似の機能4 であるメソッドコンビネーションも含まれています。Javaなどがようやく取り込もうとしている技術は、20年前のLispの技術だったわけです。

+

アスペクト指向だけではありません。Javaで初めてガベージコレクションを知ったという人も多いでしょうが、Lispはごく初期の処理系からガベージコレクションを備えていました。データをオブジェクトとして取り扱い、メモリの割り当てを明示的に行わないLispでは、ガベージコレクションは必須だったのです。これまた40年も前の技術ということになります。

+

バーチャルマシン、バイトコードインタプリタなどの単語もJavaとともに広く知られるようになりましたが、もともとはSmalltalkで用いられていた技術です。Smalltalkの実装は1970年代後半から1980年代初頭にかけて行われており、その技術もまたLispの影響を受けています。見る人が見ればSmalltalkの処理系はLispの処理系にそっくりであることがわかります。

+

同じ時期に生まれたFORTRANやCOBOLが今まで蓄積した膨大な資産を管理するためにほそぼそと生き残っているのに対して、Lispはいつも時代の最先端に位置しているのは興味深いことです。

+
+
+

Lispの強さ

+
+

最先端の機能を提供してきたLispですが、その強さは特定の機能に見出せるわけではありません。むしろ、Lispはいろいろな機能を実験してみるのに非常に便利なため、その中でよいものが生き残ったと考えるべきでしょう。Lispの先進性は、Lispの強さの副作用とでも呼ぶべきものなのです。

+

その強さを表現するキーワードは「動的」です。インタプリタそのものであるevalを持っているLispは非常に動的で、単なるデータだけでなくプログラム自体を取り扱うことができます。Javaなどにもリフレクションという名前でプログラム自体を扱う機能が提供されていますが、データとプログラムが同一のフォーマットで表現されるLispの動的性にはかないません。プログラム自体を扱うプログラミング、メタプログラミングによって、Lispの上にいわば別の新しい言語を作り出すことが簡単にできます。新しく言語処理系を書かなくても目的別に特別設計された言語、ドメイン特化言語5 を作り出すこともできますし、言語自体に手を加えなくてもオブジェクト指向機能のようなものも実現できます。

+
+
+

Lispの不幸

+
+

そんなに優れた言語なのに広まらなかったLispは、不幸としかいいようがありません。もちろん、ただ単に運が悪かっただけではなく、いろいろと理由はあるのでしすが。

+

その1つはさまざまな誤解です。Lispは他のプログラミング言語に比べて「高級」なので、実装が大変に難しく、なかなか性能のよい処理系が登場しませんでした。性能第一のFORTRANなどの言語と比較すると、その点で長らく不利でした。その後、実装技術が向上して他の言語と遜色ない性能が出せるようになってもその誤解は解けず、いつまでも「Lispは遅い、使えない」と思われてきたのです。また、学者しか使わない言語というイメージが形成されたのもつらいところです。

+ +

もう1つの理由はあのかっこでしょう。Lispのプログラムには大量のかっこが登場します。慣れれば優先度などが明確に表現されるよい文法なのですが、少なくとも初心者は引いてしまいそうです。また、プログラミングスタイルが「普通」の言語とは相当異なることも問題です。この点では関数型言語も似たような障壁に当たっているようです。

+
+
+

MatzLisp

+
+

JavaはLispで培われてきた技術を広く知らしめるのに貢献しました。今まで知る人ぞ知る技術であったものが、Javaのおかげでたくさんの人が知る「常識」に格上げされたといってもよいでしょう。しかし、Javaには、Lispの強さのごく一部しか取り込んでいません。「時代は動的言語」といわれていますが、それはJavaが提供しなかったLispの強さを取り込んでいく、世間がますますLispの強さに気が付いていく過程なのかもしれません。私のデザインしたRubyがその一翼を担っているのは誇らしい限りです。

+

先日、某イベントの二次会で「実はRubyは『MatzLisp』6 っていうLispの方言だったんだよ!」と語られたようです。なんとも傑作なネタですが、Lispの強さを痛感した私が「自分が満足するために」作り出したRubyは、文法こそ違うものの、その本質としてLisp文化を継承しているのかもしれません。

+
+
+
+
+
    +
  1. +

    ハッカーになろう

    +

    原題は「How To Become A Hacker」。日本語訳は山形浩生さんの訳で以下のURLで読める。
    +http://cruel.org/freeware/hacker.html +

    +
  2. +
  3. +

    以下のように反応

    +

    エッセイ「普通のやつらの上を行け」での反応。このエッセイの川合史郎さんによる日本語訳は以下のURLで読める。
    +http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html +

    +
  4. +
  5. +

    Lispプログラマーの端くれ

    +

    もっとも私が普段プログラムしているのはCやらRubyやらで、Lispを使うのはもっぱらEmacsのためだし、私の書いたプログラムはいつもLispらしくないのだが、今回はそれは棚に上げることにする。 +

    +
  6. +
  7. +

    アスペクト指向に類似の機能

    +

    それもそのはず、CLOSの設計者にはAspectJの開発者Gregor Kiczaleがいる。「アスペクト指向に類似」というよりアスペクト指向の元になったというべきか。 +

    +
  8. +
  9. +

    ドメイン特化言語

    +

    目的別に特別設計された言語(DSL: Domain Specific Language)。 +

    +
  10. +
  11. +

    MatzLisp

    +

    MITで開発された有名なLispにMacLispというものがあり、それとかけているという点でもこのネタは秀逸である。 +

    +
  12. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-048.xhtml b/docs/vol2/xhtml/p-048.xhtml new file mode 100644 index 0000000..b49a776 --- /dev/null +++ b/docs/vol2/xhtml/p-048.xhtml @@ -0,0 +1,110 @@ + + + + + +第59章 スケーラビリティ + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay59 +
+

+まつもと ゆきひろのハッカーズライフ
+スケーラビリティ +

+
+

[オープンソースマガジン, 2006年3月号]

+
+

原子やそれ以下の素粒子の振る舞いが、われわれの日常生活の常識では考えられない挙動をとる量子力学的構造が、プログラミングの世界でも成立して、データ量やアクセス数などが増加すると、思いもかけない挙動が発生することを予見した記事。文中で「プログラミング言語では過去20年間大きな変化が起きていない」とありますが、それから約20年経ってもあまり大きな変化は起きていないようです。もちろん、動的言語全盛期の当時と、静的言語が流行している現在とではいろいろ異なることもありますが、当時まったく存在していなかった概念ではないという意味で。現在でもスケーラビリティは未来予測のための重要なキーワードだと思います。大きな構造は時間が経ってもそれほど変化しないようです。

+
+
+

20年間大きな変化のないプログラミング言語

+
+

先日、某雑誌のインタビューに答えているときに「プログラミング言語の領域では、ここ20年革新的な進歩は起こっていない」と発言して、記者の人を驚かせてしまいました。「これだけ進歩の激しいIT業界にあって、20年間にわたって革新的な進歩のないとはいったいどういうことか」という顔をしていました。

+

前回でも紹介したように、プログラミング言語において革新的な「発明」はLispの周辺でみんなずっと昔に登場してしまっています。進歩しているように見えるのは、最近になってようやっと世間が追いついてきて、昔から存在していたものを「再発見」しているからです。オブジェクト指向に例外処理、ガベージコレクションやバーチャルマシンも何もかも、もう何十年も前から存在していたのです。知られてなかっただけで。

+

もっともプログラミング言語というものは、もともと人間が自分の考えをどのように表現するかという「記法」としての性質が強いですから、人間の本質がなかなか変化しない以上、あまり急激には進歩できない領域ではあります。

+
+

プログラミング以外の領域においても、決して進歩が速いとはいえそうにありません。急激に普及したネットワークの分野でも、改めて考えてみれば、今でも日常的に使われているメールが最初に発信されたのはもう30年以上前のことですし、インターネットの誕生からも同じくらいが経過しています。Webは確かに目新しいアイデアですが、それを構成している技術的要素は古くから存在していたもので、決して革新的なものではありません。

+

結局、普通の人が感じている「ITの目覚ましい発展」とは、実際には「ITの目覚しい進歩」ではなく、「ITの目覚しい普及」にすぎなかったのでしょう。今まで知らなかったからといって、存在していなかったとは限りませんからね。

+
+
+

ハードウェア領域の目覚しい進歩

+
+

ソフトウェアの領域と比べて、ハードウェアの方の進歩には目覚しいものがあります。

+

1946年、世界最初の電子計算機と呼ばれたENIACは、1秒間に5000回の演算を行うことができたそうです。ということは、0.005MIPS1 ということになりますね。さて、私の愛用のコンピュータでbogoMIPS2 を計算するとだいたい3162bogoMIPSになるので、大ざっぱに比較すると63万2400倍になります。63万倍ですか……。技術に進歩は恐ろしいものですね。

+

ところが、これらの変化が本当に「革新的」と呼べるものかというとよくわかりません。実際、世界で最も多く使われているCPUはいまだに30年以上前の命令アーキテクチャを引きずっているわけですし、逆に真に革新的だと思われたiAPX4323 などのCPUアーキテクチャはほとんど失敗に終わっています。これらは連続的な進歩であって、別に革新的なことではないのかもしれません。小さな工夫を積み重ねてハードウェアの性能を向上させ、大量生産によって価格を低減し、高い計算能力を備えたデバイスを広く普及させてきた、不断の努力の結果だといえるでしょう。このような変化は連続的なものですが、偉大な変化でもあります。

+

実際、63万倍の変化は馬鹿にできません。同じx86アーキテクチャで比較しても、1978年リリースの8086/5MHz(0.33MIPS程度)と2004年リリースのPentium M/1.6GHz(3162MIPS程度)では、26年間にMIPS値が9500倍以上になっています。

+
+
+ +

スケールによる劇的な変化

+
+

以上のことから、ITの変化というのは、ソフトウェアの進歩よりもハードウェアの性能向上と、価格低下による普及によって実現されてきたといっても過言ではないでしょう。これまでの歴史では考えられなかったような高性能のコンピュータが、広く、多く、大量に使われるようになっているのです。連続的な変化とはいっても、これだけスケールが伴うと大きなインパクトが発生します。

+

物理学の領域では、極端にスケールが違うとまったく違う法則に従うことが知られています。たとえば、極端に小さな素粒子の世界では、粒子はある場所に確率的にしか存在しないとか、どんなに観測精度を向上させても決して確定させることができない事象が存在するとか、日常的な常識では考えられないこと4 が起こります。また、逆に何億光年という極端に大きなスケールにおいても、異なる法則が登場してきます。

+

今、この瞬間にITの世界でも似たようなことが発生しているような気がしてなりません。20年前、私たちがやりとりするメールの数は一日数通とかそんなものでした。しかし、今や一日数百通のメールを受け取るのは普通ことで、中には数千通を受け取る人もいるでしょう。世界中に数千ページしかWebページが存在しなかった頃と、数億ページの情報があふれている現在とでは、情報の探し方も異なってくるはずです。

+

このような変化を発生させている元凶は、人間にあります。数百通のメールを管理を想定して設計されたアプリケーションで数百万通のメールの管理をすることは不可能ではないでしょうが、たぶんいろいろな局面で不都合が発生することでしょう。メールの処理に耐えがたい時間がかかったり、必要なメールを見つけ出すことができなかったり。あるいは、数億ページのWebからある単語を含むページを探し出すことは、通常のテキストファイルを検索するgrepのようなツールが用いているのと同じアルゴリズムを用いても不可能ではないでしょうが、ベタに検索したのでは結果が出るまで何日もかかるでしょうし、検索結果として得られたその単語を含んでいる数万ページのうち、どれが重要か判別することはほとんど不可能でしょう。人間には忍耐力にも取り扱うことのできる複雑さにも限界があるのです。

+

このことをいち早く認識していたのがGoogleです。彼らは、ある情報を含むページをただ単にリスト化するだけでは不十分であり、どのページが重要であるかを高速かつ自動的に行う必要があることを認識していました。PageRankという手法を導入した彼らの検索エンジンは既存のライバルたちよりも「よい結果」を返し、Googleは後発ながらもあっという間に首位の座を獲得したのです。

+
+
+

キーワードはスケーラビリティ

+
+

ということで、これからのキーワードは「スケーラビリティ」になると予想します。今までと同じペースかどうかはともかく、コンピュータの性能はこれからも向上していくでしょう。また、ネットワークにつながれたコンピュータの台数や、それらの持つ記憶容量、また流通する情報量は、想像を超えるレベルで増加するはずです。「そのような事態にどう対処するか?」が今後最も大きな課題になっていくわけです。

+

考えてみれば、増大する複雑さに対処するというのは、プログラミング言語を始めとしたソフトウェアが長年直面してきた課題ですが、これからはその増加速度がどんどん加速するのではないでしょうか。

+ +

エクストリーム・プログラミング(XP)は、「テストがよいものであれば、限りなく頻繁に行えばよいだろう」「コードレビューがよいのであれば、いつもレビューしながらプログラムすればよいだろう」というように、ボリュームを極端(エクストリーム)にひねってみることから誕生したのだそうです。IT業界の未来を予想する際も、ボリュームを極限までひねってみるのがよいかもしれません。たとえば、「インターネットユーザーが数十億人を超えたらどうなるだろう」とか「一日に受け取るメールが数万通を超えるようになったらどうしたらよいだろう」など。そのときは、できるだけ機械化・自動化する(Google PageRankの例)、みんなの力を結集する(Wiki、ソーシャルタギング5 などの例)、非同期化してクライアントに処理を分散する(Ajaxなどの例)といった技法をいろいろと考案していく必要があります。ふと考えてみると、これらはみな最近話題になっているWeb 2.06 で注目されているものだったりします。Web 2.0を説明するには、スケーラビリティの観点から行うとよいかもしれません。

+

私の得意なプログラミング言語の領域でも、「ある言語から利用可能なライブラリが数万を超えたらどうなるだろう」とか「名前の衝突の回避や組織化をどう行えばよいのか」など、いろいろ考えることはありそうです。

+
+
+
+
+
    +
  1. +

    MIPS

    +

    Million Instructions per Secondの略。CPUが1秒当たりに処理できる命令数を100万命令単位で表現した数値。CPUの性能を比較するおおざっぱな指標として、ふた昔前に用いられた。もっともコンピュータの性能はI/Oなどトータルなシステムで決定されるので、処理命令数だけでは決まらない上、命令によって処理時間が異なったりするCPUもあるので、結局、指標としては廃れてしまった。 +

    +
  2. +
  3. +

    bogoMIPS

    +

    Linuxが内部で計算する「非科学的な」MIPS値。CPUの大まかな性能を示すが、厳密なベンチマークに使えるほど正確な値ではない。ただ、Linuxマシンであればすぐに得られるので便利な値でもある。/proc/cpuinfoを表示させることで確認できる。 +

    +
  4. +
  5. +

    iAPX432

    +

    1981年、i80386に先立って発表されたインテル初の32ビットプロセッサ。 +

    +
  6. +
  7. +

    日常的な常識では考えられないこと

    +

    日常的なスケールでは無視しても実質的に変わらないため、これらを考慮しない法則が使われている。 +

    +
  8. +
  9. +

    ソーシャルタギング

    +

    ソーシャルブックマーク(Web上に登録していくブックマークシステム)などに集積された情報にタグを付加してカテゴライズする方法。 +

    +
  10. +
  11. +

    Web 2.0

    +

    次世代Webの主流となるべきスペックやポリシーのこと。現段階では、はっきりした定義が決められているわけではない。 +

    +
  12. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-049.xhtml b/docs/vol2/xhtml/p-049.xhtml new file mode 100644 index 0000000..76bf318 --- /dev/null +++ b/docs/vol2/xhtml/p-049.xhtml @@ -0,0 +1,127 @@ + + + + + +第60章 オープンソースライセンス + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay60 +
+

+まつもと ゆきひろのハッカーズライフ
+オープンソースライセンス +

+
+

[オープンソースマガジン, 2006年4月号]

+
+

オープンソースライセンスの選び方についてです。この点については現代でもほとんど状況に変化はありませんね。この原稿が書かれた頃と比べると、MITライセンスの使用例が劇的に増えたことと、Apacheライセンスを採用するものもそれなりに増えた点でしょうか。この当時はRubyは独自ライセンス(Rubyライセンス)とGPLのデュアルライセンスでしたが、このあと、大変な苦労をしてRubyライセンスとBSDライセンスのデュアルライセンスに変更しました。これはRubyライセンスにリライセンスを許可する条項が入っていたから可能になったもので、そうでない場合はFSFが行っていたようにソースコード貢献者すべてから事前に同意を取っていなければ事実上不可能だったことでしょう。

+

ライセンスの取り扱いは確かに面倒ですが、より大きな面倒を避けるために最初にキチンとしておいたほうがよいでしょう。これは時代を超えた教訓です。

+
+
+

プロジェクトの障害

+
+

先日、15年ぶりにGPL1 の新版(v3)のドラフトが公開2 されました。具体的な内容はともかく、フリーソフトウェア/オープンソースのライセンスが再び注目されています。今回はライセンスというものについて考えてみましょう。

+

世の中にハッカー気質を持つ人はたくさんいますが、その数だけオープンソースプロジェクトがあるかというと、なかなかそうはいきません。「自分のオープンソースプロジェクトを始める」のは敷居が高く、さまざまな障害があるわけですが、オープンソースプロジェクトにおける非技術的な障害の筆頭はライセンスでしょう。他の問題の多くは、そもそも根源的な問題である「何を作るのかを決める」とか、「実装手段を考える」あるいは「デバッグする」に至るまで、ある程度「ハッカー魂」を揺さぶるものがあります。だからこそ、ハッカーたちは喜んでプロジェクトに参加するわけです。

+ +

ところが、ライセンスときたら、プログラムほど明確ではないし、技術的にも面白くもないし、その割には厳密な話をし始めると面倒で、煮ても焼いてもおいしくありません。いっそ「こんなものなければよいのに」と思うほとです。では、なぜわざわざライセンスを用意するのかというと、主な理由は意思表明のためです。適切なライセンスには、「開発者がこのソフトウェアをどう扱ってほしいか」という意思をはっきり示すことになります。それによって、ユーザーは安心してソフトウェアを使うことができるわけです。これが不明瞭な場合、ユーザーが確実に安心してソフトウェアを利用するには、開発者に直接問い合わせるしかありません。世界中から「こんなケースに使ってもよいか?」と問い合わせが殺到するのは、決してうれしいことではありません。また、ライセンスには、訴訟など法的なトラブルから守られる(かもしれない)という期待も込められています。

+
+
+

ライセンスの選び方

+
+

オープンソースプロジェクトを開始するとして、そのソフトウェアに設定するライセンスとして何を選んだらよいでしょうか。

+

私からできる最初のアドバイスは、「決して新しいライセンスを作らない」です。13年前、Rubyの開発を開始した時点でそのことがわかっていれば、私の人生はもうちょっとだけ楽だったでしょう。当時の私は、ソースコードの流用を明示的に許可したライセンスを提供したいと考えていました。そこで、Perlのライセンス(Artisticライセンス3)をベースに流用を許可し、入出力データ(Rubyの場合はRubyプログラム)には制限が及ばないことを明記したライセンスを用意しました。ライセンスを作るのは、プログラミングに少し似ています。何を許可したいとか、何を禁止したいとか考えるのはアルゴリズムのときと同じです。思い返せば、確かに作っていたときは楽しかったんです。

+

しかし、この「コード」はプログラムよりもずっとデバッグが大変です。プログラムほど簡単に「実行」できないので、問題はすぐには発見されませんし、たとえ見つかっても簡単には修正できません。

+

たとえば、自分で作ったライセンスに含んだ条項に何らかの問題があったとしましょう。すぐに思い付くのは、GPLと互換性がなく、GPLソフトウェアとリンクができなくなってしまうケースです。「似たような思想に基づいて作られたライセンス同士が非互換とは、いったいどういうことか」と悲しくなりますが、これがライセンスの現実です。その場合には、(困るユーザーもいることでしょうが)GPLソフトウェアとのリンクをあきらめるか、あるいはライセンスの変更を行うことになります。

+

このとき、ライセンスを適用したソフトウェアの全コードがあなたによって書かれたものであれば、問題はほとんどありません。新しいバージョンを新しいライセンスでリリースすればそれでおしまいです。しかし、たとえば別の人のパッチが含まれていれば、ソフトウェアはあなただけのものではなく、法的にはパッチを書いた人との共同著作物という扱いを受けます。厳密な話をすると、他人の権利を勝手に侵害するわけにはいきませんから、理論上ライセンスの変更にはこれら共同著作者すべての合意が必要です。何年もの間、開発を行ってきたRubyのようなソフトウェアでは、権利関係者が何人いるのかすでに確認しようがありません。FSF4 のソフトウェアのようにコードを貢献する場合には権利譲渡契約を結ぶようにしているなら楽なんでしょうが、パッチをもらうたびにそのような手続きを行うのも面倒です。たいていの場合は、ライセンスの変更をあきらめてしまうか、さんざん努力しても結局は全員の確認を取れず、誰かから苦情が出ないことを祈りつつ、変更することになります。

+ +

自分でライセンスを作るということは、そのような苦労を何年にもわたって一手に引き受けるということも意味するのです。心からアドバイスします。止めたほうが無難です。

+
+
+

オープンソースライセンスの選び方

+
+

あなたがオープンソースプロジェクトを開始するとして、将来問題が起きない(起きにくい)ライセンスを選ぶにはどうしたらよいでしょうか。

+

世の中にはたくさんのオープンソースライセンス5 が存在します。すでに多すぎるほどです。この中から選び出すだけで十分でしょう。それもメジャーなものを選択することをお勧めします。だいたいライセンス変更のようなトラブルが起きるのは、マイナーなライセンスを選んだプロジェクトと相場が決まっています。メジャーなものは広く使われているので、大きな問題が残っていないと考えられますし、いざというときに仲間が多いのも安心です。マイナーなライセンスでは、他のライセンスとの組み合わせなど十分な検討が行われていないことが多く、不安が残ります。

+

ソフトウェアのライセンスを選ぶに当たってまず考えなければならないのは「コピーレフトを望むか」どうかでしょう。コピーレフトとは、簡単にいうと「あなたの書いたフリーなソフトウェアに対して、自由を擁護しないものがタダ乗りすることを許さない」というものです。FSFはソフトウェア自由の擁護者として、コピーレフトを強く推進しています。一方、コピーレフトについてさほど気にしていない開発者も多いようです。あなたがコピーレフトを望むのであれば、選択肢はほぼGPLしかありませんし、ライブラリとして使われるものであればLGPL6 も候補にあがります。ライブラリにGPLを適用すると、事実上GPLソフトウェアからしか使えないので、より「制限」の緩いLGPLのほうが広く使われる可能性があります。しかし、LGPLはあまり使い勝手がよくないうえに、「わかりにくい」「十分な考察が進んでいない」などの欠点がありますので、コピーレフトを強く望まない場合にはお勧めできません。

+

コピーレフトにそれほどを強いこだわりのない人には、GPL以外の選択肢もあります。ここで重要なのは、「そのソフトウェアは、別のソフトウェアとのリンクが必要かどうか」です。将来、何らかの形でGPLソフトウェアとのリンクされることが予想される場合には、GPLとの互換性7 が重要になります。プラグイン機能を持つソフトウェアやライブラリはこの点に注意しなくてはなりません。GPLと矛盾しないライセンスとしては、修正BSDライセンスやX11ライセンス8 などがあります。

+ +

もう1つの検討すべき要素は、関連ソフトウェアとライセンスをそろえることでしょう。たとえばEclipseプラグインなどはCPL9 を選択すべきでしょう。また、PHP関連のソフトウェアはPHPとライセンスをそろえたほうが無難です。Rubyで書かれたソフトウェアは、Ruby自身とはライセンス的に独立なのですが、それでもRubyライセンスを選ぶ人が多いようです。

+
+
+

避けたいライセンストラブル

+
+

すでに述べたように、ライセンスのトラブルは「面倒くさい」「面白くない」などイヤなものです。しかも、悪いことに法的な問題は「問題があるのかないのかはっきりしない」というオマケ付きです。「はっきりしたことは裁判してみないとね」とかいわれても、被告になんかなりたくないし……。

+

訴訟リスクをゼロにすることは不可能みたいですが、それでも面倒な問題を回避するためにも、ライセンスについては賢く付き合いたいものです。そして、われわれの本来の「仕事」であるプログラミングに集中しましょう。Happy Hacking。

+
+
+
+
+
    +
  1. +

    GPL

    +

    http://www.gnu.org/licenses/gpl.txt +

    +
  2. +
  3. +

    ドラフトが公開

    +

    http://gplv3.fsf.org/draft/ +

    +
  4. +
  5. +

    Artisticライセンス

    +

    Perlのライセンスは、このArtisticとGPLの二本立て。Larryが自分の意見を表明したもので、FSFからは単体では「フリーソフトウェアライセンスではない」とまでいわれている。これをベースにしたのがRubyライセンスの不幸の始まりというか何というか。 +

    +
  6. +
  7. +

    FSF

    +

    Free Software Foundationの略。
    +http://www.fsf.org/ +

    +
  8. +
  9. +

    たくさんのオープンソースライセンス

    +

    「オープンソースの定義」を満たすとしてOpen Source Initiativeが認定したライセンスは60種類近くに上る。認定されていないが定義を満たすであろうライセンス(Rubyライセンスもその1つ)を含めるといったいいくつになることやら。 +

    +
  10. +
  11. +

    LGPL

    +

    http://www.gnu.org/licenses/lgpl.txt +

    +
  12. +
  13. +

    GPLとの互換性

    +

    http://www.gnu.org/licenses/license-list.ja.htmlにはGPLと他のライセンスの組み合わせという観点から種々のフリーソフトウェアライセンスについて述べられている。ライセンスのことを知ろうと思えばまずここを読んでほしい。 +

    +
  14. +
  15. +

    修正BSDライセンスやX11ライセンス

    +

    http://www.opensource.org/licenses/bsd-license.php
    +http://ftp.x.org/pub/X11R7.0/doc/html/LICENSE.html +

    +
  16. +
  17. +

    CPL

    +

    Common Public Licenseの略。
    +http://www.opensource.org/licenses/cpl1.0.txt +

    +
  18. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-050.xhtml b/docs/vol2/xhtml/p-050.xhtml new file mode 100644 index 0000000..27192b8 --- /dev/null +++ b/docs/vol2/xhtml/p-050.xhtml @@ -0,0 +1,138 @@ + + + + + +第61章 Get Thing Done + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay61 +
+

+まつもと ゆきひろのハッカーズライフ
+Get Thing Done +

+
+

[オープンソースマガジン, 2006年5月号]

+
+

タイトルこそ「Get Things Done」ですが、David Allen氏のライフハック術とは無関係にToDo管理について紹介しています。さすがに利用しているツールについては時代の影響が大きく、現在でも使っているツールはほぼありませんでした。現在はPDAの代わりにAndroidスマートフォン、スケジュール管理はGoogle Calendar、メモにはGoogle Keep(とhowmもまだ使っている)、Rubyのイシュー管理はRedmineに移行しています。そういえばメール管理にmorqを使っている点は同じでしたね。

+
+
+

老化現象

+
+

時間とともに衰えていくのは世の常ですが、万年青年を目指す私も最近老化を感じるときがあります。最も端的なのは忘れっぽくなったことです。日常会話でも「アレ」とか「ソレ」とかを連発して、家族に笑われます。どうでもいいようなトリビアはいつまでも覚えているのに、日常生活に関わる肝心なことを忘れてしまうのです。私の記憶はいったいどうなっているんでしょう。

+

つい最近のことですが、海外出張の際、自宅を出てからパスポートを忘れているのに気が付き、慌てて取りに戻りました。さらに翌日、出張先のレストランでパスポートの入ったカバンを忘れるという失態を演じてしまいました。幸いすぐに気が付いて、次の日には無事に回収できましたが、あまりの失敗にこれ以上ないほど落ち込みました。しかし、こんなうっかり者でも致命的な事態を回避できたのは、不幸中の幸いというか、悪運が強いというか。

+

ハッカーたるもの、能力の不足はツールで補うべきでしょう。かくいう私も、いくつかのツールを使って役に立たない記憶力を補っています。

+
+
+ +

スケジュール

+
+

まずはスケジュール管理。世のビジネスマンと比べるとアポイントメントの少なそうな私ですが、それでもスケジュール管理は必要です。月に1度程度はどこかのイベントでプレゼンテーションを行っていますし、年に数回は海外出張もあります。また、仕事以外にも細々とした予定が入るものです。

+

それらのスケジュール管理にはPDAを使っています。機種はもう骨董品レベルのVisor Edgeです。モノクロ低解像度で、最新機種に比べるとオモチャのようなものですが、意外と役に立って1 くれています。

+

一時は普段から持ち歩いているノートPCでスケジュール管理しようと思ったこともあったのですが、ノートPCではサスペンド状態から復帰するのにそれなりの時間(10秒程度)がかかります。通常の利用であればそれほど気にならない時間ですが、ちょっとスケジュールを確認するだけのときには耐えがたいほど長く感じます。フル充電のバッテリでも3時間弱しか持たないので、残量をいつも気にしなければならない点も問題です。

+

それに比べたら、PDAは起動が速いのでいざというときにすぐ見られますし、充電しなくても何日も持つのでバッテリ残量をほとんど気にする必要がありません。また、PDAではスケジュール管理しかしないので、CPUパワーも気にならないのです。ちなみに私は、日本語入力にPOBox2 を、スケジュール一覧にDate@Glance3 というソフトウェアを使っています。

+
+
+

ToDo管理

+
+

PDAには、スケジュール管理以外にToDo管理やメモなどの機能がありますが、私はそれらをほとんど利用していません。ToDoなどを知りたいと思うときにはPCを起動していることが多く、わざわざPDAの打ちにくい入力方法4 を使う必然性がないのです。

+

ToDo管理をするソフトウェアはたくさんありますが、私は主にメールリーダーの機能を使っています。仕事の依頼の多くはメール経由でやってきますから、必要なメールに特定のラベルを付けておくことで、ToDoリストの代わりになります。自作のメールリーダー(morq)には、1キーでメールに「action」というラベルを付けたり、外したりする機能を用意しています。私の場合、スケジュールなどと独立したToDoはあまり存在しないので、この程度で十分のようです。PDAによるToDo管理は、入力が面倒なためにあまり更新しなくなり、更新しないのでチェックもせず、結局活用しなくなりました。また、Webアプリケーションを含む、その他のツールも長続きしませんでした。もっと忙しい人ならば、違った結論になるのかもしれません。

+ +

また、現在のToDo管理方法に完全に満足しているわけでもないので、これからもToDo管理ツールについては考えていきたいと思っています。

+
+
+

メモ

+
+

ちょっとした思い付きをその場限りで書き留めるためとか、考えをまとめるために書くメモは、その辺の紙切れに書き付けます。何でもPCに頼ってしまうのは悪い癖です。図やグラフを含めて考えを記述する方法としては、PCよりも古典的な手法である紙とペンのほうが勝っています。

+

しかし、紙が万能というわけではなく、いくつかの欠点もあります。1つは検索できない点です。紙に書かれたデータはあとで検索できません。片付け上手でない私は、書いたメモをすぐにどこかになくしてしまうので、あとで参照する必要のあるデータは検索できる形式でPCに格納しておきます。

+

もう1つの欠点は、書いた字を読めないことがある点です。私の字はお世辞にもほめられたものではありません。文章を書くのにPCを日常的に使うようになってからは、ペンで字を書く機会がすっかり減ってしまい、ますます汚い字になってしまいました。単に汚いだけなら恥ずかしいだけで済むのですが、あとで自分でも読めないとなると笑えません。そのような欠点を考えると、文字だけで表現できるメモはやっぱりPCに入力するのがよさそうです。

+

メモ入力に使っているツールは、Emacsでの「一人お手軽Wikiもどき」であるhowm5 です。実はhowmにはスケジュール管理機能とかToDo管理機能も付いているのですが、私はそれらをあまり活用していません。もっぱら「思い付いたことを適当に書きとどめる」という使い方をしています。ふと浮かんだアイデアは、そのままだとすぐに忘れてしまうので、とりあえずhowmにメモとして放り込み(PCを起動していないときは紙に書いてあとで入力)、必要に応じてあとで検索しています。

+

今回、自分のhowmメモの中身を振り返ってみると、「原稿のネタ」「Ruby 2.0新仕様のアイデア(ボツになるもの多し)」「日記6 の下書き」「議事録」などが多いようです。

+

Webを眺めていて、日記のネタとしてあとでコメントしようと思った場合には、いしなおさんのMM/Memo7 を活用させてもらっています。Firefoxのbookmarkletで簡単に登録できるので重宝しています。興味を持ったページはとりあえずMM/Memoに登録しておき、あとでその中から選んで日記に書いています。何でもWebブラウザで行う最近の風潮は(たとえAjaxを駆使していても)あまり賛成できませんが、いま見ているものに対する処理をWebブラウザ内で行うことについては非常に合理的だと思います。

+
+
+ +

協調作業

+
+

私自身の情報管理は上記の方法でほぼ満足しているのですが、これだけではカバーできないこともあります。それは複数の人が関わる協調作業についてです。

+

私の関わる協調作業で最も重要なのは、やはりRubyの開発でしょう。特に、バグフィックスや機能拡張などにおけるToDo管理は必須です。このために利用しているツールは2つあり、1つは「Rubyのバグ(勝手に)トラッカー8」です。これは、メーリングリストに報告されたバグがどんどん登録され、ChangeLogに対応するメール番号を入れてコミットすると、自動的にfixedマークが付けられます。

+

バグの管理はRubyのバグ(勝手に)トラッカーでよいとしても、リリーススケジュールの管理には不十分です。Rubyの開発者は30人近くいますから、彼らをまとめるには別のツールが必要となります。この目的にはbasecamp9 を使っています。これはRuby on Railsの開発者David Heinemeier Hanssonが所属する37signalsが提供しているプロジェクト管理ツールです。というか、basecampの基本部分を抜き出したものがRailsなのです。1.8.4リリースのときからbasecampを使い始めましたが、非常に便利です。

+
+
+

いつでも最適化を

+
+

情報管理は基本中の基本です。ハッカーであれば、自分の情報管理を最適化するための工夫を怠ってはなりません。日々精進です。ところでこの原稿を書いていて、やり忘れていたToDoを発見してしまいました。私にもまだまだ改善の余地はありそうです。

+
+
+
+
+
    +
  1. +

    意外と役に立って

    +

    すっかり気に入っているので、将来壊れてしまったときに備えてもう1台譲り受けて保管している。 +

    +
  2. +
  3. +

    POBox

    +

    予測と曖昧検索に基づく高速テキスト入力システム。
    +http://pitecan.com/OpenPOBox/PalmInline/ +

    +
  4. +
  5. +

    Date@Glance

    +

    Palm OS用の予定表補完ソフトウェア。
    +http://simple-palm.com/dateatglance/ +

    +
  6. +
  7. +

    PDAの打ちにくい入力方法

    +

    予測変換入力法であるPOBoxを使えばずいぶんマシになるが、それでも長文の入力は現実的ではない。 +

    +
  8. +
  9. +

    howm

    +

    http://howm.sourceforge.jp/ +

    +
  10. +
  11. +

    日記

    +

    「Matzにっき」
    +http://www.rubyist.net/~matz/ +

    +
  12. +
  13. +

    MM/Memo

    +

    http://www.1470.net/mm/ +

    +
  14. +
  15. +

    Rubyのバグ(勝手に)トラッカー

    +

    http://mput.dip.jp/rubybugs/ +

    +
  16. +
  17. +

    basecamp

    +

    http://basecamphq.com/ +

    +
  18. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-051.xhtml b/docs/vol2/xhtml/p-051.xhtml new file mode 100644 index 0000000..178bcf2 --- /dev/null +++ b/docs/vol2/xhtml/p-051.xhtml @@ -0,0 +1,104 @@ + + + + + +第62章 若人への手紙 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay62 +
+

+まつもと ゆきひろのハッカーズライフ
+若人への手紙 +

+
+

[オープンソースマガジン, 2006年6月号]

+
+

当時の中学生からいただいたお手紙への返事。もちろん、雑誌の記事にするだけでなく、返答部分は本人にも直接送っています。しかし、2006年に15歳ということは、(2024年)現在すでに32歳ということになりますね。改めて時間のすぎることの早さを実感します。

+

さて、返事の中では静的型言語、動的型言語、関数型言語(Lispを関数型言語と呼ぶのは若干の抵抗がありますが)の3つを学ぶことを勧めています。現在であれば第1グループはC, C++, Rust, Go, 第2グループはJavaScript, Python, Ruby, 第3グループはHaskell, OCamlくらいでしょうか。言語のレパートリーは若干変化しても、本質的な部分はあまり変わっていないようです。

+
+
+

後輩からの手紙

+
+

先日、見ず知らずの方からメールをいただきました。プログラマーの後輩として、どのようにプログラミングを学べばよいか尋ねる内容です。以下、引用します。

+
+

はじめまして。

+

僕は、今15歳です。

+

僕は、コンピュータにとても興味があり、近い将来、ITに関わる仕事がしたく、まつもとさんのような超優秀なプログラマーになりたいと思っています。そこで、いまからITについて猛勉強しようと、いろんなウェブサイトを見て回りましたが、何しろ情報量が非常に多く、かえって混乱してしまいました。そこで、ご質問なんですが、具体的にどのようなことから勉強を始めればいいですか。それから、入門に適切な書籍やウェブサイトなども紹介していただければ幸いです。

+

お忙しいでしょうが、お返事をお待ちしております。

+
+
+

私ごときが「超優秀なプログラマー」と呼ばれるのは気恥ずかしいのですが、若い人がプログラミングに対して真剣に向き合おうという姿勢はとても頼もしく感じました。

+
+
+

昔の記憶

+
+

考えてみると、私の若い頃と現在の若者とでは周囲の状況がまったく違います。私は、ちょうど彼と同じ頃にプログラミングを始めましたが、そのときに使っていたのはシャープのポケコン1 で、400ステップのBASICプログラムを実行するのがやっとでした。あの頃はインターネットというものはありませんから、情報の入手先も主に雑誌と書籍だけです。雑誌に載っているプログラムリストを必死に入力して、動かしては悦に入っていたことを覚えています。主にゲームでしたが、文字がピコピコ動く程度のかわいいものでした。

+

それに比べると、今の若い人たちは大変恵まれた環境にいます。世間にはコンピュータがあふれていますし、情報はインターネットからいくらでも入手できます。また、ゲームは昔に比べると超高速のマシン上ですばらしい品質のものが遊べるようになりました。しかし、プログラミングに興味がある人は以前よりも減ってしまったようです。現代ではIT技術が進歩しすぎて、コンピュータを使うことと、プログラミングが分離してしまっているのかもしれません。

+

傑作SF作品である『宇宙船ビーグル号の冒険』2 の1エピソードでは、非常に優れた文明が、衛星も近くの惑星もないため、段階的に発展できず、恒星間航行の技術を発明することなく滅んでしまいます。コンピュータの発達期に少年であった私たちは、自分自身の成長に応じてコンピュータが発展してきました。しかし、今の若者が「ファイナルファンタジー」を見て自分で作ろうと思っても、実現させるのはほとんど不可能3 ではないでしょうか。

+
+
+

先輩からの返事

+
+

現代において、コンピュータ好きのうち、プログラミングに興味を持つ人の割合は確かに下がっています。ただ、決していなくなったわけではありません。そして、その中にはインターネットからの情報とオープンソースの力を借りて、まさに超優秀なプログラマーが育っています。

+

たとえば、Haskell4 を使ってPerl 6コンパイラの基礎を2週間で作ってしまったAudrey Tangは、そのとき20歳になったばかりでしたし、その他にも10代や20代前半で大きな成果を上げる若者もそれなりにいます。15歳でコンピュータとプログラミングに興味を持ち、優秀なプログラマーになりたいと考える彼も、将来大変有望なのではないでしょうか。

+ +

そう思って、以下のような返事を書きました。

+
+

お若いのにご自分の将来について真剣に考えていらっしゃることを大変うれしく思っています。

+

さて、どのようなことから勉強を始めればよいかという質問ですが、これは大変答えにくいものです。というのは、何が効果的かは人によって違うからです。同じ本を読んで感動する人もいれば、全然何も感じない人もいます。コンピュータの勉強も似たようなものだと思います。

+

しかし、私がプログラミングを始めたのも15歳くらいでしたし、自分の若いころを振り返って役に立ちそうなことをいくつかあげておきましょう。

+

まず、コンピュータを使うこととプログラミングすることはまったく違うということをしっかり認識してください。昔、そう20年くらい昔にはこの2つはあまり区別されていませんでしたが、いまでは全然違います。ソフトウェアを使うのもまあ重要なことですが、プログラミングによってコンピュータに新しい仕事を教えこむことはそれ以上にエキサイティングで楽しいことです。

+

次に、プログラミング言語について学んでください。それもできれば複数。プログラミングは言語を駆使して行います。言語を知らなければプログラミングはできません。そして、プログラムを作るのにどのプログラミング言語を使うかで、プログラマーの思考は影響を受けます。ですから、1つだけの言語では考え方が偏ってしまいます。C, C++, Javaのような言語と、RubyやPythonのような言語、それからLisp, ML , Haskellのような言語の3種類からそれぞれ自分に向いていそうなものを学ぶといいと思います。プログラミングは手段であって目的ではないことに気を付けてください。つまり、プログラミングは(わかる人にとっては)とても楽しい行為ですが、それでも「完成したプログラムで何を実現するか」ということが最も重要なことで、それがなければプログラミングそのものにはたいして意味はなくなってしまいます。自分がどんな分野に興味があるのか、プログラムを作ることによってどんなことがしたいのか、そのことがわかれば能力を伸ばすことができると思います。私の知っている優秀なプログラマーは、みんな「自分が何を好きで、何がやりたいのか」をはっきり知っています。私自身はプログラミング言語にとても興味があり、いつか自分の言語を作ろうと心に思ったのは高校生のころでした。そのような気持ち(熱意)の継続により、大学に入り、就職し、Rubyを作り、世間から「優秀なプログラマー」と見なされるようになったわけです。自分から見れば、実際に優秀かどうかはやや疑問符が付きますが。いずれにしても、プログラミング言語を作りたいと思ってから実際にRubyを作るまでには10年以上かかっていますから、その間「作りたい」という気持ちを維持できたことが成功の1つの原因ではないかと思います。

+

自分が何に興味があるのかある程度認識できたら、その分野を中心にほかの人の書いたプログラムを読むのがよいのではないかと思います。書籍に載っているサンプルプログラムや、オープンソースソフトウェアのソースコードなど読むことのできるプログラムはたくさんあります。ただ、漠然と読むのは難しいですし、興味を維持することができませんから、知りたいことを調べるために読むという目的意識が必要でしょう。

+

私の若いころには思いどおりに使えるコンピュータなど個人レベルで買えるものではありませんから、中学生、高校生のころは本ばかり読んでいました。Pascalの本、Lispの本、人工知能の本など。ちゃんとプログラムを書き出したのは大学に入ってからです。それでも基本的な知識はあったので別に困りはしませんでした。

+
+

さて、年寄りの話はここまでです。パーソナルコンピュータが普及し、インターネットが当たり前になった時代に生きるいまの若い人は、また違った形でプログラミングを身につけるのではないかと思います。しかし、時代が変わっても、熱意とか継続とかは変わらない原則ではないかと思います。ご自分がなぜコンピュータに興味を持つようになって、本当はどんなことをしたいのか、ちょっと考えてみてはいかがでしょう。

+
+

このような若者がいる限り、「未来は明るい」と信じたい今日このごろです。

+
+
+
+
+
    +
  1. +

    シャープのポケコン

    +

    シャープ製ポケットコンピュータ「PC-1210」。1980年に発売された、シャープ製BASIC内蔵ポケットコンピュータの第1号。これでプログラミングにはまった業界人は多いと聞く。 +

    +
  2. +
  3. +

    『宇宙船ビーグル号の冒険』

    +

    A・E・ヴァン・ヴォークト著/沼沢洽治訳、「宇宙船ビーグル号の冒険」、東京創元社、ISBN4-488-60901-5。 +

    +
  4. +
  5. +

    実現させるのはほとんど不可能

    +

    しかし、技術の進歩によってフルCGアニメをほぼ一人で作成した「ほしのこえ」(制作: 新海誠)や「惑星大怪獣ネガドン」(監督: 粟津順)のような例もあるので油断はできない。 +

    +
  6. +
  7. +

    Haskell

    +

    プログラミング言語の研究を行うための共通の基盤を築くことを目的とし、近年定説となりつつあるプログラミング言語理論を集大成して作られた非正格純粋関数型言語。 +

    +
  8. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-052.xhtml b/docs/vol2/xhtml/p-052.xhtml new file mode 100644 index 0000000..d46f2f0 --- /dev/null +++ b/docs/vol2/xhtml/p-052.xhtml @@ -0,0 +1,142 @@ + + + + + +第63章 オープンソースのマーケティング + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay63 +
+

+まつもと ゆきひろのハッカーズライフ
+オープンソースのマーケティング +

+
+

[オープンソースマガジン, 2006年7月号]

+
+

技術者として「良いものを作れば売れる(or 広まる)」という考えは自然なものです。私もそのように感じてきましたし、実際Rubyについても開発開始(1993年)からこの記事を書く少し前(2005年頃)まで、私自身がそれほど広報活動をしたわけではありません。しかし、Ruby on Railsの登場は私の考えを変えました。きちんとした情報発信をしなければ、たとえ良いものでも広まらない、あるいは広まるのが遅すぎるという事実は私にとって驚きでした。まあ、気がついたからと言ってすぐに行動を改められるわけではなく、Rubyの広報活動はコミュニティメンバーに任せきりではありますが、それでも各種情報発信やカンファレンスの開催などでRubyに対する認知は大きく向上したのは確かです。

+
+
+

マーケティング表裏

+
+

マーケティングはお金に魂を売った人たちのもの、それが言い過ぎなら、ビジネス指向の人たちだけのもの。そんなふうに考えていた時期が私にもありました。技術者は技術で勝負。技術的に優れたものを作ればそれでよい、と思っていたからです。しかし最近、少々考えを改めつつあります。

+

たしかにマーケティングと呼ばれる活動の中には、些細ささいなことを大げさに表現したり、技術的にたいしたことのないものをさもすばらしいことのように表現して、大衆の耳目を集めるのが目的となっているものもあります。エンジニアやハッカーのような中身がわかっている人々にとって、そのような活動はあまり尊敬できるものではありません。むしろ軽蔑や揶揄やゆの対象となることが多いでしょう。

+

しかし、すべてのマーケティング活動がそのような「邪悪なもの」というわけではありません。マーケティングには人間の心理的特性に着目し、好意的な反応を引き出すというような興味深い側面もあります。今回はそのようなマーケティングの側面と、オープンソースにおけるマーケティングについて考えてみましょう。

+
+
+ +

オープンソースとマーケティング

+
+

オープンソースソフトウェア(以下OSS)は、その定義から無償で入手1 できる必要があるので、市場の拡大・活性化を目的とするマーケティングとは無縁のようにも感じられます。OSSのユーザーが増えても、その増大に応じた「売り上げ」が上がるわけでもありませんし、ユーザーが増えたからといって開発者が増えるとも限りません。

+

しかし、OSSの成功のためには、ある種のマーケティングが役に立つのではないかと最近感じ始めています。効果的なマーケティング手法を使うことによって、OSSプロジェクトの成功確率が高まるのではないかと思うようになったからです。

+
+
+

オープンソースの成功

+
+

「OSSの定義」を満たすライセンスを付けてソースコードを公開したからといって、必ずしも成功するとは限りません。一昔前にしばしば見受けられた「OSSにすればコミュニティができて、バザールモデル2 が成立し、開発サイクルがうまく回る」などという幻想は、現実が知られるにつれて目にしなくなってきました。

+

個人的な意見ですが、成功するためにまず必要なのは、何をもって成功とするかを定義することではないでしょうか。もちろん、偶然「成功」することもあるでしょうが、意図的に成功するには、どのような状態を達成できれば成功と見なすかを定めないと難しいはずです。

+

では、ここで「OSSの成功」を定義しておきましょう。人によって定義は違うでしょうが、パッと考えつく範囲内では、

+
    +
  • コミュニティの成立

  • +
  • バザールモデルによる持続的な開発

  • +
  • 好きなこと(OSS開発)をやりつつ生活の安定

  • +
+

などがあります。他にも、ビジネス的成功など、いろいろ考えられますが、とりあえず今回は上記のような成功に絞って考えましょう。

+

これらの成功をまとめると、「持続」というキーワードが登場するような気がします。コミュニティが成立しないようなプロジェクトは、オリジナルの開発者が延々と孤独に開発を続けることになりがちですし、開発者が飽きてしまえばそれでおしまいです。私自身の経験から考えても、外部からのインプットはモチベーションの維持に大変重要です。また、生活の安定も持続のために必要な要素で、学生主体のプロジェクトが主開発者の卒業や就職のために停止してしまった例3 もたくさんあります。逆に、持続性が期待できないプロジェクトには参加を躊躇ちゅうちょされるでしょうし、バザールモデルによる開発も成立しにくいでしょう。つまり、上記の定義に従えば、「OSSの成功とその持続性は、表裏一体である」ということができます。

+
+
+ +

持続することの難しさ

+
+

「継続は力なり」という言葉もありますが、逆に「それだけ継続することは難しい」ということを意味しています。

+

先日調査した結果4 によると、Freshmeat.Net5 に登録されている25841プロジェクトのうち、実に61%に当たる15779プロジェクトが1年以上更新されていませんでした。「とりあえずアイデアを思い付いて、プロジェクトを登録してみた」というPlanningレベルでは、実に8割を超えるプロジェクトが停滞しています。このデータは、持続的開発が実に困難であることを示しています。プロジェクトをOSSとして公開しても、必ずしもコミュニティが成立するわけではなく、またそれだけで持続的に開発できるわけではないのです。

+

では、持続的開発には何が必要なのでしょうか。重要なのは、開発者の生活の安定と外部からの継続的なインプットだと思います。しかし、これらは鶏と卵のようなものです。つまり、開発者の生活が安定するために仕事を頑張りすぎればOSSを開発する時間はなくなってしまいますし、逆にOSSを開発するために仕事を抑制すれば今度は生活が安定しません。一番よいのはOSS開発者としてどこかの企業に雇用され、OSS開発自体が仕事になることですが、そのためにはOSSそのものの価値が高く評価されることも必要でしょうし、OSS開発が安定している、つまりすでに持続的な開発が行われているかどうかが重視されそうです。持続的な開発のために生活の安定を求めているのに、そのためにはすでに持続的な開発が行われていることを求められるようでは、簡単な解決策はなさそうです。

+

では、いったいどうすればよいのでしょう。

+
+
+

持続への解決策

+
+

1つには開発者の生活の安定でしょう。OSS開発にかまけていても生活に不安がなければ、心配することなく開発に没頭できます。特に経済的な側面で心配のないことが重要です。しかし、親の遺産を受け継ぐような運のよい話はめったにありませんし、ビジネス的に成功してお金持ちになった人は、今度はビジネスに対する責任からOSS開発どころではない人のほうが多そうです。結局、これはあまり一般的に有効な方法ではなさそうですね。

+ +

もう1つの方法がマーケティングの利用です。商品ではないので「広報」と呼んだほうがよいのかもしれません。オープンソースは商品ではありませんから、売れなければならないというプレッシャーはありませんし、単純に考えればユーザーがどれほど増えても関係ないと思えます。しかし、ある程度以上のユーザーを獲得できれば、開発モチベーションの観点からも、コミュニティ形成の観点からも、大変有利です。また、LinuxやRubyのようにスポンサーによる支援6 を受けるためには、そのプロジェクトが技術的に優れていることは当然として、「どれだけユーザーがいて、どれだけの影響力があるか」が重要になります。

+
+
+

マーケティング手法

+
+

近年、OSS分野のマーケティングにおける成功例としては、Ruby on Rails7(以下Rails)があげられるでしょう。RailsはWebアプリケーションフレームワークとして優れている点はもちろんですが、「Javaの10倍の生産性」というわかりやすいキャッチフレーズや「わずか10分でブログソフトを実装」という人目を引くビデオによって注目されました。「わかる人だけわかればよい」というようなテキストオンリーの無愛想なドキュメントが横行するOSS業界にあって、このアプローチは特異だったように思えます。

+

具体的には、

+
    +
  • 何が達成できるのか、わかりやすい表現

  • +
  • 特にビジュアルな表現

  • +
+

が重要のようです。Rubyのような言語はこれが苦手なので、ずっと困っていました。言語はプログラムを書けば原理的には何でもできるからです。差別化も難しいですし。しかし、Railsの成功のおかげで「RubyではRailsが使えます」といえるようになりました。最近、Rubyが注目されている原因8 の1つはRailsでしょう。ありがたいことです。

+

これからはオープンソース分野においても、見栄えや広報などマーケティング的側面がますます重要視されるのかもしれません。

+
+
+
+
+
    +
  1. +

    無償で入手

    +

    正確には「無償で入手することを妨げてはならない」。有償の頒布が禁じられているわけではないし、配布手数料・複製コストなどを徴収することも認められている。 +

    +
  2. +
  3. +

    バザールモデル

    +

    1997年5月にEric S. Raymond氏が発表した論文「伽藍とバザール(The Cathedral and the Bazaar)」に登場するキーワードで、有志の開発者がゆるく組織化されたソフトウェア開発モデル。Linuxが代表格。
    +http://www.catb.org/~esr/writings/cathedral-bazaar/ +

    +
  4. +
  5. +

    主開発者の卒業や就職のために停止してしまった例

    +

    筆者にとって印象に残っているのは、カリフォルニア大学バークレー校で開発されていたSatherという言語。Eiffelの影響を受けつつも、より優れた言語であったSatherだが、主開発者の卒業による開発のバトンタッチに手間取り、とうとう消えてしまった。 +

    +
  6. +
  7. +

    調査した結果

    +

    2006年3月調べ。 +

    +
  8. +
  9. +

    Freshmeat.Net

    +

    http://freshmeat.net/ +

    +
  10. +
  11. +

    スポンサーによる支援

    +

    CMっぽくなるが、「ネットワーク応用通信研究所はRubyの開発を支援しています」。 +

    +
  12. +
  13. +

    Ruby on Rails

    +

    Webアプリケーションフレームワーク。Rubyによる動的プログラムを活用した生産性に定評がある。
    +http://www.rubyonrails.org/ +

    +
  14. +
  15. +

    Rubyが注目されている原因

    +

    もう1つの原因は「開発者のヒゲ」ではないかと邪推している。一説によると、開発者がヒゲを生やしている言語は成功するらしい。
    +http://www.rubyist.net/~matz/20041206.html#p02 +

    +
  16. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-053.xhtml b/docs/vol2/xhtml/p-053.xhtml new file mode 100644 index 0000000..9279ba2 --- /dev/null +++ b/docs/vol2/xhtml/p-053.xhtml @@ -0,0 +1,117 @@ + + + + + +第64章 キャズム + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay64 +
+

+まつもと ゆきひろのハッカーズライフ
+キャズム +

+
+

[オープンソースマガジン, 2006年8月号]

+
+

前回に引き続き、マーケティングよりの話題です。キャズム理論をベースにオープンソースが広く受け入れられるための方策について考察しています。この点については昔から変化していないのにも関わらず、現在になってもあまり取り組まれていない印象があります。やはり、根っからの技術者である(ことが多いと思われる)オープンソース開発者にとっては、マーケティングよりも「良いものを作れば売れる」という方向性のほうが馴染みやすいのでしょうか。しかし、それで「作品」が広く使われないのであれば、それは大変もったいない話です。

+
+
+

市場における5セクション

+
+

マーケティングに関する面白い話題としては、「キャズム」と呼ばれるものがあります。これは米国のマーケティングコンサルタントであるジェフリー・ムーア氏が提唱した概念です。

+

彼によれば「市場は大きく分けて5つのセクションに分類できる」そうです。

+
+

①イノベータ(新しモノ好き)

+

②アーリーアダプタ(差別化志向)

+

③アーリーマジョリティ(差別化したいが危険は避ける)

+

④レイトマジョリティ(定番志向)

+

⑤ラガード(頑固者)

+
+

新商品が出ると「人柱1」としてすぐに試してみるイノベータや、とりあえず成功の見込みがありそうならやってみる2 アーリーアダプタなどは、新しいものを受け入れるのに柔軟です。しかし、大衆はもっと保守的です。「失敗したら損」ですし、定着しなければ投資が無駄になることを恐れる気持ちと、新しい技術で差別化したい気持ちの両方を持つアーリーマジョリティは、成功例が複数登場するまで手を出しません。もっと保守的なレイトマジョリティは、周り全部がその技術に移行してしまって、重い腰を上げざるを得なくなるまで動きません。超守旧派であるラガードは、周りに取り残されても構わず古い技術に固執します。

+ +

ある商品が次のセクションに受け入れられるのは大変です。特に、イノベータとアーリーアダプタで構成される初期市場と、アーリーマジョリティやレイトマジョリティによって構成されるメジャー市場の間には、容易には越えられない「chasm(キャズム: 深いミゾ)」があるとされています。新しい技術のマーケティングに関しては、「このセクション間のミゾをどう飛び越すか?」が課題になります。

+

同じ人が、同時期に異なるセクションへ所属することもあります。たとえば、筆者はプログラミング言語について、とりあえず新しいものを調べてみるという点ではアーリーアダプタレベルでしょうが、実際に使っているのはCとRubyばかりで、むしろレイトマジョリティレベルでしょう。エディタについては、いつまでたってもEmacsに固執するという点でラガードかもしれません。オープンソース関係者だからといって、いつもアーリーアダプタとは限らないわけです。

+

キャズムはテクノロジーマーケティングの文脈で誕生した概念ですが、実際には人間が新しいものを受け入れる過程全般を表現していると思います。新しい文化、たとえば日本のアニメが世界市場で受け入れられる過程を観察すると、似たような分類が見られることでしょう。

+
+
+

キャズムの乗り越え方

+
+

では、キャズムを越えて、マジョリティ(大衆)にアピールするためにはどうしたらよいでしょう。大衆は周りの人が使っていないと使い始めないわけですし、周りの人が使っているということは、すでに大衆が受け入れているということになります。これでは「鶏と卵3」です。

+

ジェフリー・ムーア氏は、「マーケットを小さなセグメントに分割して狭いマーケットでの成功事例を蓄積し、それを背景に近傍のセグメントへの波及効果を狙い、最終的に対象をマジョリティに拡大する」という方法を提案しています。分割統治のテクニックですね。

+
+
+

オープンソースとキャズム

+
+

オープンソースソフトウェアの多くはボランティアによって開発されており、採算を気にする必要はありません。好きだから、楽しいから、という理由で開発に参加している有志には、採算やマーケットへのアピールなどあまり関係なさそうです。というか、本質的に無償であるオープンソースソフトウェアにマーケットって存在するんでしょうか。別にユーザーが少ないからといって、ただちに「不採算だから開発をやめる」ということにはならないわけですし。

+ +

となると、マーケティングから誕生した概念であるキャズムは、オープンソースソフトウェアとは関係ないという結論になるのでしょうか? そんなことはありません。前回も触れましたが、オープンソースソフトウェアにもある種のマーケティングが必要です。それは以下の理由によります。

+
    +
  • 知名度の価値

  • +
  • コミュニティの持続性

  • +
+

誰も知らないオープンソースソフトウェアは、開発者が1人、あるいは少数で細々と開発することになります。このようなソフトウェアは持続性という観点から脆弱ぜいじゃくです。「孤独な開発」は開発者のモチベーションを下げがちですし、不採算による開発の中止こそ存在しなくても、開発者が何らかの事情(卒業・就職、転職、家庭の事情、やる気がなくなった、など)で開発を続けられなくなると、そのプロジェクトは停止してしまいます。そして、停止したプロジェクトはほとんどの場合、再び顧みられることはなく、死に絶えてしまいます。

+

逆に知名度があると、そのソフトウェアの周辺にはユーザーや開発者による「コミュニティ」が発生しやすくなります。実際にはコミュニティができたからといって、すぐに開発協力者がどんどん出てくるわけではないのですが、たとえ開発に参加する人がそれほどいなくても、知名度とそれによるコミュニティは大きな助けになります。ビジネスほどの大規模なマーケティングは不要としても、オープンソースにも知名度を高める必要があり、それは一種のマーケティングと呼んでも差し支えない活動です。そして、マーケティング活動には必ずキャズムがつきまとうのです。

+

たとえば、新しくオープンソースのDBMSが登場したとして、それが実際に広く使われるようになるまでに、高い壁があることは容易に想像できます。実績がないから使われず、使われないからなかなか実績が蓄積しない、というのは典型的なキャズムの構図です。

+
+
+

オープンソースキャズムの深さ

+
+

さて、ここまでの観察をまとめると、

+
    +
  • オープンソースにもマーケティングが必要

  • +
  • オープンソースにもキャズムがある

  • +
+

ことがわかります。人心に影響を与えるマーケティングに疎い筆者には残念な結論です。しかし、オープンソースのキャズム論には、通常のマーケットと違う要素が付け加わります。

+

まず、アーリーアダプタ層の大きさです。現時点では、オープンソースという概念そのものが、アーリーアダプタか、せいぜいアーリーマジョリティ層の手を出すレベルです。ようやくレイトマジョリティ層もオープンソースに気が付いてきたくらいでしょうか。その結果、オープンソースに深く関わっている人たちは、新しモノ好きの傾向が強いだろうといえるでしょう。

+

次は、オープンソースの導入コストの低さです。オープンソースソフトウェアが無償といっても、新しいものを試すにはそれなりにコストが必要です。特に学習コストはバカになりません。しかし、商用ソフトウェアと比較すればコストは低いので、冒険しやすいことはいえるでしょう。

+
+

最後に、開発を持続させるために必要な「顧客」が少なくて済む点があります。商品を販売することでコストを回収することを目指す「商品」とは異なり、オープンソースソフトウェアは開発持続に必要なモチベーションなどを維持することだけが必要です。これは、ビジネスを維持することに比べると圧倒的に少ない顧客数で達成できそうです。

+

結果として、オープンソースキャズムは思ったよりも深くないということです。

+
+
+

オープンソースキャズムの克服

+
+

では、どうすればよいのかといえば、やはりムーア氏の提唱した戦略を実践することでしょう。セグメントを限定して、そこでのシェアを高めることです。たとえば、汎用言語であるRubyが、Ruby on RailsによってWebアプリケーションという分野で注目されたことは(筆者の意図したとおりというわけではありませんが)よい例です。また、「お試しコスト」を下げるため、既存のライバルとの互換性を高めて、移行しやすくするのも有効でしょう。

+

キャズムを意識した戦略により、より多くのオープンソースソフトウェアが「生き残る」ようになればと祈っています。

+
+
+
+
+
    +
  1. +

    人柱

    +

    剣呑な呼び名だが、必ずうまくいくと保証されているわけでもないのに新商品を試し、場合によってはドライバを書くなどして対応させてしまうような人たちのこと。われわれ(特にLinuxのようなマイナーOSのユーザー)の使う多くのデバイスは、このような人柱の数知れぬ「犠牲」のうえに使えるようになっている。合掌して感謝しよう。 +

    +
  2. +
  3. +

    成功の見込みがありそうならやってみる

    +

    その心は「成功したら差別化できてラッキー」。 +

    +
  4. +
  5. +

    鶏と卵

    +

    「鶏が先か卵が先か」というのは、古来さまざまな人を悩ましてきた問題ですが、先日、英国で哲学者や生化学者のグループが討論した結果、鶏が先という結論が出たそうだ。「生物の遺伝子は途中で変化しないことから、最初の鶏になった卵が先」ということらしい。こんなことに真剣になる哲学者たちってステキ。 +

    +
  6. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-054.xhtml b/docs/vol2/xhtml/p-054.xhtml new file mode 100644 index 0000000..61afc63 --- /dev/null +++ b/docs/vol2/xhtml/p-054.xhtml @@ -0,0 +1,124 @@ + + + + + +第65章 言語の壁 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay65 +
+

+まつもと ゆきひろのハッカーズライフ
+言語の壁 +

+
+

[オープンソースマガジン, 2006年9月号]

+
+

言語と言っても人間の言語、特に英語学習について語っています。この20年の間、機械翻訳はものすごい進歩していて、多くの場合で使い物になるようになりました。私は学生時代に英語のマニュアルを機械翻訳で日本語にする作業のオペレーターのバイトをしたことがあるのですが、もとの原稿をOCRで読み込む作業もエラーだらけで修正に追われ、読み込んだ英文が長すぎると機械翻訳システムがエラーを出すので英文を短く分割し、出てきた日本語の品質が悪いので校正したりと、「これだったら自分で翻訳したほうがずっと早くて楽だ」と思ったものでした。それを考えると現代の機械翻訳のレベルは驚異的です。私も英作文のときにはたまに機械翻訳を使うことがあります。しかし、それでもなお、直接英語を使ってコミュニケーションする機会がなくなったりはしないので、結局勉強しないといけないんですよね。

+
+
+

外国語教育

+
+

うちの子も中学生になって、英語を勉強するようになりました。日本語とはまったく違う新しい言語を学習するのに苦労しているようです。私自身も言葉で苦労することは多く、「日本語と英語は何でこんなに違っているのだろうか」と悩むことしきりです。

+

先日、テレビでフィンランドの小学生がインタビューされているのを見ましたが、10歳にして流暢りゅうちょうな英語を話す姿はとても印象的でした。北欧は英語の上手な人が多いのですが、それにしても小学生で外国語を使いこなす姿は普通の日本人には真似できません。やはり、幼いときからどれだけ外国語に接することができるかが鍵なのかもしれませんね。

+

フィンランドへ行ったことはありませんが、その隣国であるデンマークには2度ほど訪問しました。ホテルでテレビを見ると、ほとんどのチャンネルで英語の番組を放送していました。字幕さえ付いていません。毎日見るテレビ番組が英語なら、たしかに上手になるわけです。

+
+
+ +

独自文化の維持

+
+

テレビ番組が英語ばかりというのには、もちろん理由があります。デンマークは人口がわずか500万人強の小国なので、独自の番組をなかなか維持できません。必然的にテレビ番組は輸入に頼ることになります。おかげで国民は英語が上手になりますが、逆に独自の文化を維持しづらくもなります。これはデンマークばかりではなく、小さな国がどこでも直面している問題です。

+

先日訪問したマレーシアでも、IT関係の情報は英語でしか入手できず、マレーシア人講師がマレーシア人に教えるITセミナーでも英語が用いられていました。それに比べると、日本ではほとんどあらゆる局面において日本語だけで用が足りてしまいます。日本人が英語下手な最大の原因でもありますが、見方を変えると幸せなことかもしれません。世界的に見ればどうしても英語中心のコンピュータ業界でさえ、ほとんど英語を使わずに済むのですから。

+
+
+

ハッカーにとっての英語の重要性

+
+

しかし、このような幸運な日本の中にあっても、ハッカーに限っては英語を使う十分な理由があります。Eric Raymondは『ハッカーになろう』1 の中で次のように語っています。

+
+

4. まともに英語ができないならば、身につけなさい。

+


+

……英語以外を母語とする数名から、英語はハッカー文化やインターネットでの作業用言語なんだということ、ハッカーコミュニティーで役に立つには英語を知らないとダメだということを指摘するようにいわれたのです。

+

これはまったくそのとおりです。1991年頃、母語が一緒でも英語を第一外国語として身につけている多くのハッカーたちは、技術的な議論をするときに英語を使うというのを知りました。そのとき教わったのは、英語は技術用語がほかの言語よりも豊富で、だから英語のほうがとにかくこの仕事に向いているのだということです。

+

フィンランド人であるリーヌス・トーヴァルズは自分の書くコードのコメントを英語で書きます(どうやら英語以外で書こうなんて考えたこともないようです)。彼の流暢な英語は、Linuxの開発者の世界的なコミュニティをリクルートしてくるにあたっての、とっても大事な要因でした。

+
+

日本語に限っていえば、先達の労苦によって「英語のほうが技術的な議論に向いている」ということはありません。とはいえ、ハッカー文化が英語圏の文化に大きく影響を受けていることは否定できませんし、それに逆らうのもあまりスマートな態度ではないでしょう。

+ +

さらにいえば、コンピュータ関係の多くの情報が英語で発信されている以上、それを誰かが日本語に翻訳してくれるまで口を開けてボーッと待っているのは、どう考えても「ハッカー的」な態度ではなさそうです。

+
+
+

ハッカー流英語学習法

+
+

それでは、どのようにして英語を学習すればよいのでしょうか。ハッカーらしいスマートな学習方法はないものでしょうか。

+

知人の中で最も効果的に外国語を学習した人たちは、いずれも「その国に飛びこんで1日中その言語を使わざるを得ない状況に自分を追い込む」ことを実践していました。この方法は非常に効果的で、早ければ数か月で言語をマスターできます。ただ、デンマークのようにテレビから英語漬けという環境でない限り、肉体的、精神的、そして経済的にとてもチャレンジングな方法なので、どなたにでも手放しでお勧めできるわけではありません。

+

もっと「普通の人」にお勧めの方法2 はないものでしょうか。すぐに思い付くのは、世の中によくある英会話学校です。しかし、英会話学校はネイティブスピーカーの優秀な講師をそろえているかもしれませんが、だからといって「EmacsとViのどちらが優れているか」とか、「動的言語の優位性」などについてのディスカッションに付き合ってくれるかというと、どう考えても望み薄です。ハッカーの英語という観点からは、英会話学校は費用対効果が低いかもしれません。ハッカーとしての英語を身につけたい場合には、もうちょっと違う方法を考えてみる必要がありそうです。

+

英語力は、以下の4つに分類されます。

+
    +
  • 読む(reading)

  • +
  • 書く(writing)

  • +
  • 聞く(hearing)

  • +
  • 話す(speaking)

  • +
+

理想をいえば、この4つがまんべんなく上手であるのに越したことはないのですが、とりあえずハッカー的に英語を学ぶのであれば、これらには明確な優先順位があります。つまり、

+
    +
  • reading >>> writing >> hearing > speaking

  • +
+

です。

+

現在、ほぼあらゆる情報はインターネットを経由した文字情報3 でやり取りされます。ですから、まず優先すべきは文字情報の取り扱い、それも情報収集に効果的なreadingの強化でしょう。

+

言語の学習は、いかに大量にその言語に触れるかで決まります。英語を学ぶ、特にreading能力の強化は、どれだけたくさんの英語を読むかで決まるわけです。ここでお勧めなのは、ソフトウェア関係のメーリングリストを読むことです。自分が興味を持っており、最新情報の日本語化が少し遅いようなジャンルのメーリングリストがよいでしょう。私はruby-talkなどのRuby関連メーリングリストを活用していますが、これは流量が少々多すぎる4 かもしれません。まあ、読めなかったり、意味がわからなくても、実害はないので、どんどん読み飛ばせばよいのですが。このとき、翻訳ソフトを使ってはいけません。あれは学習の害にしかなりません。文法理解の力を怠けさせるからです。その代わりに辞書を活用してください。

+ +

readingができるようになれば、次第に英語表現の幅が広がり、writingもできるようになります。writingには好きなだけ時間を使うことができるので、readingによって英語に親しむようになれば、次第に上手に表現できるようになってきます。少しずつメーリングリストに書き込みもできるようになるでしょう。

+

hearingとspeakingはもう一段難しくなります。readingとwritingで基礎体力を付けたら、海外のイベントに参加するとか、Skypeで話すなどの手段も考えられますが、これらについてはまた別の機会にまとめましょう。

+
+
+

逆手に取る

+
+

日本において英語が読めるというのは、いろいろな意味で有利になります。日本語のおかげで「情報格差」が存在するわけですが、「格差のあるところにチャンスあり」です。最新の情報を入手している、知られざる情報を教えてあげられる、日本の情報を発信できる、どれをとっても立派なチャンスです。ビジネスとして成功するか、ハッカーとして大成するか、いずれにしても英語力はあなたの助けになることでしょう。

+
+
+
+
+
    +
  1. +

    『ハッカーになろう』

    +

    原題『How To Become A Hacker』。
    +http://www.catb.org/~esr/faqs/hacker-howto.html
    +山形浩生による日本語訳は以下のURLで読める。

    +

    http://cruel.org/freeware/hacker.html +

    +
  2. +
  3. +

    「普通の人」にお勧めの方法

    +

    もっとも、「ハッカー」であって「普通の人」というのは存在しないような気もするが、気にしないことにしよう。 +

    +
  4. +
  5. +

    インターネットを経由した文字情報

    +

    最近はPodcastingのような音声情報も増えているが、情報入手という観点からは無視しても実害は少ないだろう。ちなみに、Podcastingはヒアリングのトレーニングに役立つ。 +

    +
  6. +
  7. +

    流量が少々多すぎる

    +

    原稿執筆時点でruby-talkの1日当たりのメール数は200通弱である。 +

    +
  8. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-055.xhtml b/docs/vol2/xhtml/p-055.xhtml new file mode 100644 index 0000000..173f652 --- /dev/null +++ b/docs/vol2/xhtml/p-055.xhtml @@ -0,0 +1,107 @@ + + + + + +第66章 ハッカーの生産性 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay66 +
+

+まつもと ゆきひろのハッカーズライフ
+ハッカーの生産性 +

+
+

[オープンソースマガジン, 2006年10月号]

+
+

プログラマーの生産性を高めるライフハックについて。集中して作業できる「魔法の時間」こと「ゾーン」の入り方などについて解説しています。中国の故事に「三上」というのがあって、良い詩作ができる場所(時間)が3つあって、「馬上、厠上、枕上」というのだそうです。つまり、移動中の馬の上、トイレに座っているとき、寝る直前なのだそうです。現在の状況に合わせると「散歩(通勤)しているとき、お風呂(シャワー)に入っているとき、寝る直前」でしょうか。確かにこのタイミングでいろいろ思いつくことが多いように思います。私は犬を飼っていて、自宅にいるときには朝と夕に散歩しているのですが、これが気分転換と発想に貢献しています。

+
+
+

生産性の高さ

+
+

古典的な意味での「ハッカー」は、ときとして信じられないほどの生産性を実現します。一説によると、並のプログラマーと一流のプログラマーの間には、数十倍から100倍くらいの生産性の差があるそうです。考えてみれば、ある種のプログラマーは普通の人が逆立ちしても思い付かないようなプログラムを実装してしまいますから、その場合には「不可能を可能にした」という意味で、生産性の差は100倍どころではありませんね。ハッカーが魔法使い(ウィザード)にたとえられるのもわかる気がします。

+

私自身は「不可能を可能にする」系のハッカーではありませんが、それでも「普通の人がやらないことをやり遂げた人」ではあります。また、全体の平均はともかく、瞬間的な「最大風速値」はかなり高いのではないかと思っています。

+

このような生産性は、どのようにしたら実現できるのでしょうか? 普通の人が、ハッカーたちの生産性をある程度まねする方法はないものでしょうか。

+
+
+ +

ゾーン

+
+

プログラミングの生産性を向上させる方法はいくつか考えられますが、その最大のものは「ゾーンを大切にする」ことではないかと思います。

+

人間が集中力を最大限に発揮できる時間は限られています。人によって異なりますが、15分から1時間程度ではないでしょうか。注意散漫になることなく、最大限の集中力を発揮して高い生産性を維持できる時間のことを、一部の人たちは「ゾーン」と呼んでいます。ゾーンの最中の生産性は目を見張るものがありますが、逆にゾーンに入っていない時間の生産性はあまり褒められたものではありません。これは、程度の差こそあれ万人に共通ではないでしょうか。となると、いかにゾーンを長時間維持できるか、あるいはゾーンに突入できる回数が、その人の生産性を決めるといっても過言ではないでしょう。

+

過去の経験からいっても、ゾーンは大変壊れやすいものです。「本気で仕事を片付けるぞ」と集中しようとしたとき、電話がかかってきたり、後ろから声をかけられたりすると、それだけであっという間に去ってしまいます。そして一瞬で失ったゾーンを取り返すには、また何十分も、あるいは何時間もかかるのです。プログラマーの高い生産性を実現するには、外界の雑音をシャットアウトできる環境1、いちいち電話を取り次がなくても済むような環境が必要です。

+

集中しているときは、オフィスにいても些細ささいな音がじゃまになりますし、ノイズを遮断しようと音楽でも聞こうものなら、音楽自体が思考を疎外してしまいます。また、どうしてもメールやWebのチェックが誘惑となって、仕事に集中できないこともあります。メールやRSSリーダーで浪費した時間を合計すると、恐ろしいことになりそうです。インターネットは便利なものですが、同時に生産性を下げるわな>でもあります。深夜であれば2、そのような「誘惑」が少ないので、比較的集中力が維持しやすくなります。

+

ゾーンは大変気難しいものです。プログラマーのほんのちょっとしたイライラがゾーンを疎外します。ですから、プログラマーには優れた、そして手になじんだツールが絶対に必要です。私がEmacsに固執するのは、そのような理由からです。エディタ以外のツールはときどき新しいものに置き換えてきましたが、Emacsだけは手放せません。すでに私の一部になっており、(特に文章を書くときには)これがないと自分の思考を文章として表現できないのです。人によって違うものの、ハッカーにはそれぞれ「こだわりのツール」があるようです。考えてみれば、私が開発してきたRubyも、ゾーンの大敵となるストレスを減らすことが最初の目的だったような気がします。その他、コンパイル・リンク時間、テスト時間など、イライラの原因はいくらでもあります。予算との兼ね合いの範囲内で最良のツールを選ぶことは生産性に直結します。この点、オープンソースソフトウェアの無償性はありがたいですね。優れたツールがタダで入手できる3 わけですから。

+
+
+ +

ゾーンの入り方

+
+

広い世の中には「さあ、今から仕事をするぞ」といって、スイッチを入れるようにゾーンに入れる人もいるのかもしれませんが、私はなかなかそのようにはいきません。プログラムをどうやって実装しようかあれこれ考えたり、メールを読んだり、Webを見たり、ぼーっとしているように見える時間をだいぶ過ごさないと、ゾーンに入れないのです。端から見ると怠けているように感じられるかもしれませんが、実際は……ただ怠けているだけのときもかなりありそうです。でも、多くの時間を情報収集に使っているのは本当で、他の人の考えや苦労話はアイデアの宝庫となっています。

+

実際の私をご存じの人は、まるで動物園の熊のようにあちこち歩き回っているのを目撃したことがあるかもしれません。これは癖のようなもので、難しい問題に遭遇したときや、原稿のテーマが思い付かないとき4 には、ブツブツと小声で独り言を口にしながらあちこち歩き回ります。少々体を動かすことでリラックスする効果があり、比較的自由に考えを巡らせることで、アイデアを練ってゾーンに入る準備ができるようです。そういえば、Rubyの言語仕様の一部5 は、10年以上前、当時まだ赤ん坊だった長女を抱っこして寝かしつけながら考えたものです。

+

私自身の生活を観察してみると、メールなどでバグリポートが来て、それを直す場合などは比較的ゾーンに入りやすく、逆に大規模なバージョンアップのような改善はなかなかゾーンに入りにくい傾向があります。どうやら「何をするか明確にわかっているときは、短時間でゾーンに入れる」ようです。バグリポートの場合、「原因を同定して、それを直す」という手順が明確に定まっていて、しかも多くのケースでは期待される結果も明白です。あらかじめ詳細な設計を行う必要まではないのですが、頭の中で何らかの「見通し」があるということなのでしょう。一方、仕様改善などは、「そもそもどのような仕様が望ましいのか」という点から考える必要がありますから、楽しいことではあるのですが、取りかかる前にはどのようなことをどのような手順で行うべきか明確でないことがほとんどです。したがって、タスクを細かく分割し、1つ1つの手順の「見通し」が明確になればゾーンに入りやすくなるのかもしれません。これで本当にゾーンに入りやすくなるのか、さっそく試してみようと思います。

+
+
+

夢のお告げ

+
+

ゾーンは生産性を高める大事な時間ですが、私にとってアイデアを得る瞬間がもう1つあります。それは眠りに入る直前です。いろいろ悩んだ挙げ句、問題が解決できなくて失意の下に寝床に入るとき、眠る直前のぼんやりとした思考の中で突然稲光のように何かがひらめくことがあります。「あ、あそこにバグがある」とか。

+

たぶん、それまでに詰め込んだいろいろな知識や思考が眠りに落ちる直前に再構成されて、思わぬところが結合するのではないかと思います。脳裏にソースコードが浮かんで、ある特定の行にバグがあることが目に見えるような経験をすると、「俺ってば、すげー」と思うと同時に「普通じゃないよな」とも思います。

+ +

もっとも、そのような「思考のひらめき」は自分で制御できないので、いつも成功するとは限りません。ある晩、「あそこにバグを見つけた」とひらめいて、あとでソースコードを眺めてみたら、そのバグはずいぶん昔に修正済みだったという経験もあります。

+
+
+

まとめ

+
+

プログラミングという生産活動は、精神の状態に非常に大きく作用されるという点で、通常のモノの生産というよりは、デザインや芸術に近いものがあります。そのような精神活動を伴うからこそ、プログラミングは面白いのだと思います。ハッカーの特質の1つは、(意識的か無意識的かはわかりませんが)そのような精神活動をある程度制御できる点にあるのかもしれません。

+

皆さんも、自分の精神を制御してハッカーの生産性を身につける工夫をしてみませんか? とはいえ、人間の心は本当に複雑なので、完全な制御など誰にもできないのですが……。

+
+
+
+
+
    +
  1. +

    外界の雑音をシャットアウトできる環境

    +

    筆者は自宅で仕事をすることも多いのだが、自宅では幼い子供が「おとーさーん」とすり寄ってくるので、親バカモード全開で「かわいいなあ」と思うものの、正直全然仕事にはならない。 +

    +
  2. +
  3. +

    深夜であれば

    +

    もっとも、Webはいつでも更新されているし、海外からのメールは時差の関係で深夜のほうが多かったりする。 +

    +
  4. +
  5. +

    優れたツールがタダで入手できる

    +

    もちろんオープンソースソフトウェアの利点が単に無償であることにとどまらないのは、本誌の読者であれば当然ご存じのことだろう。 +

    +
  6. +
  7. +

    原稿のテーマが思い付かないとき

    +

    今月もだいぶ歩いてしまった。 +

    +
  8. +
  9. +

    Rubyの言語仕様の一部

    +

    ちなみに、そうやって赤ん坊をあやしながら思い付いたものとして、たとえば「変数名でスコープが決まる」という言語仕様があげられる。 +

    +
  10. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-056.xhtml b/docs/vol2/xhtml/p-056.xhtml new file mode 100644 index 0000000..0f2c3d6 --- /dev/null +++ b/docs/vol2/xhtml/p-056.xhtml @@ -0,0 +1,124 @@ + + + + + +第67章 理系・文系 + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay67 +
+

+まつもと ゆきひろのハッカーズライフ
+理系・文系 +

+
+

[オープンソースマガジン, 2006年11月号]

+
+

理系と文系の区別について。意味がないなとずっと思っているのですが、20年経っても衰退する気配はないですね。人間はわかりやすい二分論が大好きで、固執するということなんでしょうか。ただ、プログラミングの重要な一部としてユーザーの気持ちを考えること、要求されているものを明確化し言語化するなどの工程があり、それに求められる特質は世間一般に言う「文系的能力」なのは間違いないと思うのですが、あまり理解が進まないですね。やはり「プログラミングは理系のもの」とイメージはいくら時間が経っても強固なものなんですかね。

+
+
+

2種類の人間

+
+

「世の中には2種類の人間がいる」というのは、よく使われるフレーズです。私の一番のお気に入りは「世の中には2種類の人間がいる。人間を2種類に分類したがる人間と、そうでない人間だ」です。実際、人類の分類癖は相当なもので、科学の発展の歴史は分類の歴史といってもよいでしょう。私の愛するオブジェクト指向も、その根源にはクラスによる分類が関係していそうです。

+

学生の頃の典型的な分類は、理系・文系というものです。私が高校生の頃は、「工学部や理学部、医学部などに進学したい人は理系、それ以外は文系」というような分け方でした。また、理系では数学や物理、化学などの「理系科目」が重視され、文系では国語、英語、社会などの「文系科目」が重視されていたように思います。高校を卒業してからずいぶん経つのですが、今でも似たような分類をしているのではないでしょうか。

+

しかし、高校時代の私は、この分類があまり好きではありませんでした。高校生になる前からコンピュータ好きで、将来はプログラミングの分野に進もうと考えていた私は、当然のように理系に進みました。ソフトウェア関係の大学の学科はたいてい工学部とか理学部などに所属していましたし、その目的のためには理系に進むのが当然の選択のはずでした。

+
+

ただ1つ、想定外だったのは、興味の方向と裏腹に私の得意科目が(得意な順に)国語、英語、社会であり、苦手なのは(マシな順に)化学、物理、数学だったことです。理科や数学が嫌いというわけではないのですが、どうにも計算が苦手で、よい成績を取れませんでした。特に数学は、母校(いちおう進学校でした)の理系百数十人中、ダントツで最下位1 ということもあったほどです。自分の望む進路のためには一番苦手な科目を克服しなければならず、相当つらい思いをしたこともたびたびでした。

+

そんな私ですが、共通一次試験2 の数学以外の科目と、二次試験の英語に頼って何とか大学に潜り込みました。しかし、大学に入ってからも数学には苦労させられます。理系学科の学生は、(私のような一部の例外を除くと)かなり数学のデキがよいのです。周りの学生が当然のように理解していることがさっぱりわからず、単位取得に苦労3 しました。

+

進路指導上の便宜的な分類のはずの「理系・文系」ですが、その影響は卒業して社会に出てからも続きます。たとえば、理系学科を卒業した人よりも文系学科を卒業した人のほうが、生涯収入が高いそうです。これも学歴社会の影響でしょうか。また、「理系的性格の人はこういう行動をする」という性格分析も盛んです。

+
+
+

理系的人格

+
+

ところで、理系的人格って何でしょう。典型的には「工学部や理学部の出身4」「数学や理科などが得意」「ものづくりが好き」などと形容されるようです。他にも「ブランドなど形のないものを受け入れない」「何でも修理・分解したがる」「人間関係が上手でない」「理屈っぽい」「知識が深い」「のめり込みやすい」などがあげられます。

+

たしかに、この業界には、そういう条件に当てはまる人が多そうです。とはいえ、そういう人ばかりかというとそうでもないですし、「そういう人が、本当にプログラミングに向いているのか?」と問われると、実は少々疑問があるのです。

+
+
+

プログラミングと理系・文系

+
+

そもそもコンピュータは、理系的分野から誕生した技術です。初期の計算機は歯車で構成されていましたから機械工学の産物ですし、電子化された最近のコンピュータは電気工学、電子工学などで作り上げられています。また、計算機の基礎となる理論は、数学によって構成されています。ブール代数やラムダ計算5 など、名前を聞いたことがあるのではないでしょうか。

+ +

そのような「理系の塊」と言ってもよいコンピュータですが、本当に理系的人格だけが必要なのでしょうか? 考えてみると、コンピュータとその背景の原理は理系的ですが、ソフトウェアの開発は必ずしも理系的ではありません。ソフトウェア開発の手順を見てみると、多くの場合、ソフトウェアが解決すべき問題を把握し、その問題を解決するような仕組みとしてソフトウェアがデザインされます。そこで最も重要なのは、「人間が関わる組織の作業をコンピュータによっていかに自動化するか」という視点です。扱うのは人間と人間の関わりであり、あえて分類するなら文系的な活動です。さらにソフトウェア開発には、仕様書や設計書といった文書がつきものです。文書作成も本質的には文系的活動ですよね。

+

オープンソースソフトウェアでも事情はさほど変わりません。オープンソースソフトウェア開発で最も重要なのは仕様の策定やコミュニティ運営だと思いますが、仕様の策定は先ほど述べたように文系的活動ですし、コミュニティ運営に求められる人々のコミュニケーションを円滑に行うことも文系的活動以外のなにものでもないでしょう。

+

私は言語設計者として、人々が使いやすいプログラミング言語はどうあるべきかについて日々考えていますが、「人間がプログラミング言語を使っていてどう感じるかについて考えること」も、これまた文系的です。「人間工学に近い分野であり、理系ではないか」と言ってくださる方もいますが、Rubyのデザインは決して工学的アプローチにのっとっておらず、お世辞にも理系的ではありません。

+

要するに、一般の人には理系バリバリと思われているプログラマーの活動は、実はその大半を文系的活動が占めているわけです。私のような理系的頭脳に欠陥がある人間でもやっていける理由は、この辺にあるのです。

+

ただ、プログラミングが理系的人格と無縁かというと、そうでもありません。あまり頻繁ではありませんが、何らかの数学的知識が必要な領域のプログラムは存在しますし、また理系的発想が問題を解決してくれる局面もあります。つまり、プログラミングにはいろいろな才能が発揮されるさまざまな領域が含まれるということなのでしょう。

+
+
+

プログラマーへの向き・不向き

+
+

プログラマーが文系的活動を多く含むのであれば、いわゆる文系人間を捕まえてきてプログラマーに仕立てれば良いのでしょうか? そのようなことは、実際に行われています。たとえば、私が最初に就職したソフトハウス6 では、同期入社が数百人もいて、その多くがプログラミング経験のない文系学生でした。「やっぱり向いていない」と短期間で辞めていく人もそれなりにいましたが、どちらかといえばプログラマーとして適応していく人のほうが多いようでした。プログラマーとしての適性は、世間でいう文系・理系とは違う軸に分布しているようです。そういえば、大学時代の同期にも「やっと卒業した。もう二度とコンピュータは触らない」と高らかに宣言した人がいましたね。

+

このようなことを考慮すると、実際にプログラマーに向いているのは、

+ +

という人ではないかと思います。世の中にはコンピュータが動作するロジックを頭の中で描けない人が一定数いますが、そういう人はやっぱりプログラマーには向いていない気がします。

+
+
+

文系的理系プログラマーの勧め

+
+

このように、プログラマーの活動には思った以上に文系的要素が含まれています。文系・理系と区別するばかりでなく、調整能力に優れた文系的特質と、技術力に優れた理系的特質の両方を組み合わせてこそ、最高のプログラミングを達成できるのではないでしょうか。

+

理系的なプログラマーの皆さん、文系的能力を伸ばすことにも関心を持ちましょう。文系的人間の皆さん7、実はプログラマー適性の持ち主かもしれませんよ。そういうことを気付かせてくれたという点でも、私の理系的学力のなさも捨てたものではなかったかもしれません。ありがたいことです。

+
+
+
+
+
    +
  1. +

    ダントツで最下位

    +

    正直、ここまで低いと自分の脳を信頼できなくなりますね。 +

    +
  2. +
  3. +

    共通一次試験

    +

    正式名称「共通第1次学力試験」。現在の大学入試センター試験に相当するテスト。年が知れる。 +

    +
  4. +
  5. +

    単位取得に苦労

    +

    しかも、情報系って数学が必須科目なのである。 +

    +
  6. +
  7. +

    工学部や理学部の出身

    +

    「それ人格じゃないじゃん」という批判は甘んじて受けよう。 +

    +
  8. +
  9. +

    ブール代数やラムダ計算

    +

    ブール代数はジョージ・ブールが考案した0と1からなる2値論理を扱う代数系、ラムダ計算はアロンゾ・チャーチによって考案された関数の定義と実行を抽象化した計算体系。 +

    +
  10. +
  11. +

    私が最初に就職したソフトハウス

    +

    当時の経営者がそこまで考えて学生を採用していたかどうかはわかりませんが……。 +

    +
  12. +
  13. +

    文系的人間の皆さん

    +

    本当の文系的人間は『オープンソースマガジン』は読まないような気もするが。 +

    +
  14. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-057.xhtml b/docs/vol2/xhtml/p-057.xhtml new file mode 100644 index 0000000..9769cef --- /dev/null +++ b/docs/vol2/xhtml/p-057.xhtml @@ -0,0 +1,120 @@ + + + + + +第68章 美しいコード + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay68 +
+

+まつもと ゆきひろのハッカーズライフ
+美しいコード +

+
+

[オープンソースマガジン, 2006年12月号]

+
+

コードの美しさについて語った記事です。コードの美しさといえば、そのテーマにまるまる一冊を捧げた『ビューティフルコード』(オライリージャパン)があります。この本は著名なプログラマーによるエッセイ集で、実は私も寄稿しています。英語版のBeautiful Codeが出版されたのが2007年6月(日本語版は2008年4月)であることを考えると、この時点ではエッセイに取り掛かっていた可能性があります。おそらくは出版前でまだ口外できないものの、作業中のエッセイに触発されてこの記事を書いたものと思われます。とはいえ、今読み返したら、この記事の内容と、実際のエッセイの内容はあんまり重複してませんねえ。

+
+
+

ハッカーの好む美しさ

+
+

新しい日本の総理大臣のキャッチフレーズは「美しい日本」だそうです。日本にはよいところ、美しいところがたくさんあることは承知しているつもりですが、それでも政治の分野で「美しい」という主観的な基準を持ち込むことには少々抵抗があります。「美しい」とは、大変魅力的であると同時に、人によって基準の異なる大変難しい単語でもあるわけです。

+

政治家と同様に、ハッカーも美しさにこだわります。ハッカーが扱うのは主にソフトウェアですから、こだわりの対象はソフトウェアの美しさです。しかも、たとえばGUIにおけるアイコンのデザインといったアートの美しさよりも、コードの美しさやシステム構成の美しさに対するこだわりのほうが大きいように感じます。この辺は「数式の美しさ」にこだわる数学者の心情1 と似ているのかもしれません。

+
+
+ +

どのようなコードが美しいのか

+
+

では、ハッカーはどのようなコードを美しいと感じるのでしょう。私もコードについて美しいとか醜いとか日々感じているにもかかわらず、改めて「どのようなコードが美しいのか?」と問われると、即答できない自分に気が付きます。

+

とはいえ、何かあるはずなので考えてみたところ、以下のような基準を思い付きました。

+
    +
  • 明快なコード

  • +
  • 単純なコード

  • +
  • すばらしいコード

  • +
+

どうやら、私はこのようなコードを美しいと感じているようです。

+
+
+

明快なコード

+
+

以前、社会人になった直後のことですが、Cで書かれているにもかかわらず、どう見てもCOBOLにしか見えないプログラムを読む機会がありました。Cなのに、

+
    +
  • すべての変数はグローバル

  • +
  • 変数名、関数名は連番数字付き

  • +
  • ファイル先頭には「IDENTIFICATION DIVISION」というコメント

  • +
+

というプログラムには、正直、頭がクラクラ2 しました。COBOLがダメだとは言いませんが、TPOがあるだろうと思ったものです。

+

これは極端な例かもしれませんが、「プログラムとは、文法エラーにならないだけでは十分でなく、その表現に優劣がある」ということを強く感じさせる経験でした。簡単にいうと、「同じ言語で書かれていても、読みやすいプログラムと、読みにくいプログラムがある」のです。

+

もちろん、コンピュータ側はプログラムの読みやすさなんて気にしません。どんなに超絶技巧を尽くした暗号のようなプログラム3 でも、文法を満足している限り、何の文句もいわずに実行します。しかし人間の場合、そうはいきません。人間は視覚に影響されやすく、またプログラムに埋め込まれている「意図」に敏感に反応するからです。仮にプログラムに登場する名前をまったくランダムな単語で置換したとすると、プログラムの挙動を読み取れなくなる人が続出するでしょう。

+

プログラムを人間が読む行為は、一般に考えられているよりもずっと重要なことなのです。ほとんどのプログラムは「書いて実行したらそれで終わり」ではなく、バグがあれば、人間がプログラムを読んで、本当にやりたいことと実行内容の違いを見つけ出さなければいけません。他人が書いたプログラムを保守するためにも、プログラムを読まなければいけませんし、自分自身が書いたものでも半年以上経っていれば他人が書いたものと同じような状態になります。

+ +

となると、プログラムの見栄えや読みやすさも、それだけ重要ということになります。コードは適度にグループ化されているか、関数は適切に分割されているか、変数名や関数名に適切な名前を選んでいるか、あるいはインデントやフォーマットが一貫しているか、そういう見かけが「美しいコード」への第一歩です。

+

ある程度経験を積んだプログラマーは、それなりに自分のコーディングスタイルを持っています。インデントや制御構造の使い方、名前の付け方などに独自の癖が出やすいからです。以前、私ともう1人のベテランが一緒にプログラムを開発していたときなど、一目見ただけで誰がどの部分を担当していたのかわかったものでした。ある関数の担当が変わると、最初に自分のコーディングスタイルに合わせてリファクタリングしてから作業にかかったからです。途中から意地の張り合いみたいになってしまいましたが。

+
+
+

単純なコード

+
+

単純なコードには美しさを感じます。とはいえ、単純なだけのコードなら誰にでも書けます。しかし、一見とても複雑そうに思える問題の本質をとらえて、的確に分割し、単純な部品の組み合わせに切り分けられたコードを見るのは喜ばしいものです。単純なコードに美しさを感じるのは、複雑さの中に隠された秘密を解き明かし、鋭利な切り口で切り出してくる職人芸に対して感銘を受けるからかもしれません。

+

単純なコードは、理解しやすく、変更に強いものです。しかし、この単純さは適切な分析によって取り出されたからこそ得られるもので、ただ漫然と問題に当たっていただけでは得られません。最初の単純さを生み出す過程4 にこそ、美しさの秘密が眠っています。

+

たとえば、デザインパターンは「単純な美」を実装したものでしょう。ソフトウェア開発にしばしば登場するパターンに名前を付けたカタログであるデザインパターンは、典型的な問題を解決するための分析を優秀なプログラマーが一生懸命考えてくれたおかげで、生み出されたものです。これらのパターンはよく考えられていて、問題が必要以上に複雑にならないように、各オブジェクトに役割が適切に分担されていますし、将来の変化への対応も局所的に解決できるようになっています。このような理解しやすさや変更への強さなどが、ハッカーにソフトウェアを美しいと感じさせる原因なのでしょう。

+
+
+

すばらしいコード

+
+

外見が美しいコード、構成が美しいコードは、確かに美しいのですが、これだけでは真にハッカーの心を打つコードとはいえません。真に必要なのは「驚き」です。つまり、普通に考えてはできそうもないことをさらりとやってのけるコードに美しさを感じます。その本質はアルゴリズムにあります。

+

最近、感動した例としては、圧縮されたインデックス検索を行うコードです。通常、全文検索などで用いるインデックスは、文書量が大きくなるとそれに比例する形でサイズが増加します。ある程度以上大きなインデックスは扱いにくいし、ディスク容量の問題も発生するので圧縮したいのですが、インデックス操作の効率は検索速度に直結します。空間効率を取るか、実行効率を取るかは難しい問題です。

+ +

ところが、両方の効率を一度に実現するすばらしいアイデアがあったのです。通常、データ圧縮に用いるハフマンコーディングという技法は、頻出する「単語」に短いコードを、あまり登場しない「単語」に長いコードを割り振ることで圧縮を行います。このため、圧縮データは単語辞書と辞書によるコード化を行った文書の組み合わせになります。一方、全文検索に用いる転置インデックスは、単語辞書と出現位置の組み合わせですから、本質的に類似した構造を持っています。圧縮辞書検索はこの類似を利用して、圧縮されたままインデックスを直接検索できるテクニックです。これを最初に見たときには、やられたと思いました。発想による美しいコード、私にとってこれが最も美しいコードに感じられます。

+
+
+

まとめ

+
+

ハッカーがコードに感じる美しさについて、書きつづってみました。実利主義的なハッカーは、読みやすい、変更しやすいなど実用的なコードに美しさを感じます。しかし、頭の良い人の書いたコードに対する羨望せんぼう(や嫉妬)のような感情からも美しさを感じるようです。自分の書いたコードを読み返すと、美しいものもそうでないものもあります。皆さんも、美しさという観点からコードを眺めてみてはいかがでしょう。

+
+
+
+
+
    +
  1. +

    「数式の美しさ」にこだわる数学者の心情

    +

    映画『博士の愛した数式』では、オイラーの等式が美しい数式の典型として登場している。数学オンチの私にはよくわからないけれども。 +

    +
  2. +
  3. +

    正直、頭がクラクラ

    +

    そのプログラムを一緒に眺めていた先輩は「どんな言語でもCOBOLは書けるんだよ」としみじみ語っていた。 +

    +
  4. +
  5. +

    超絶技巧を尽くした暗号のようなプログラム

    +

    実例としては、毎年開催されるIOCCC(International Obfuscated C Code Contest)に参加しているコードがあげられる。びっくりすること、請け合い。
    +http://www.ioccc.org/ +

    +
  6. +
  7. +

    単純さを生み出す過程

    +

    これは優れた工芸品に対して受ける感動と同類のものだと思われる。あるいは、雪の結晶のような自然の作り出す、シンプルであると同時に神秘的な美しさにもつながる。 +

    +
  8. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-058.xhtml b/docs/vol2/xhtml/p-058.xhtml new file mode 100644 index 0000000..9c0d3b4 --- /dev/null +++ b/docs/vol2/xhtml/p-058.xhtml @@ -0,0 +1,138 @@ + + + + + +第69章 オープンソースよ、永遠に + + + + +

Matz Essays Volume 2

+ + +
+ +Matz Essay69 +
+

+まつもと ゆきひろのハッカーズライフ
+オープンソースよ、永遠に +

+
+

[オープンソースマガジン, 2007年1月号]

+
+

ハッカーズライフ連載の最終回。フリーソフトウェアとオープンソースについての解説。特にあまり触れられない背景と動機について解説しています。オープンソースのありかたもあまり変化していませんね。この20年の変化について考えると、

+
    +
  • ソフトウェア全般

    +
      +
    • オープンソースがより一般化した

    • +
    • ソフトウェアがますますWeb中心になった

    • +
    • コンピュータの性能は上がった

    • +
  • +
  • プログラミング言語

    +
      +
    • 静的型言語の流行

    • +
    • 関数型アプローチの流行

    • +
    • 新しい言語は企業がバックについているものが多い

    • +
    • JavaScript/TypeScript技術の盛り上がり

    • +
  • +
+

などがありますね。しかし、総合的に見るとこれだけ時間が経っているのに、ユーザー体験は意外と変化していないというのが正直なところです。これから20年後はいったいどうなっているのでしょうか。新しい技術により、まったく違う世界になっているのか、それともやはり「意外と変化していないね」と笑うのか。未来はどっちでしょう。長生きして明るい未来を見たいものです。

+
+
+ +

オープンソースって?

+
+

オープンソース/フリーソフトウェアとの付き合いも、ずいぶん長くなりました。初めてフリーソフトウェアに触れたのは大学時代の1989年で、EmacsとGCCがフリーソフトウェアとの最初の接近遭遇です。自分でリリースした最初のフリーソフトウェアは、Emacs Lispで書かれたメールリーダーcmailでした(1990年)。その後、Rubyをリリースしたり(1995年)、今の会社に転職してフルタイムのフリーソフトウェア開発者になったり(1997年)、私の生活に占めるオープンソースの割合はどんどん高まってきています。

+

このように「オープンソースな生活」をしている私ですが、困ったこともあります。IT業界人でない人に、「オープンソースとは何か」をなかなか理解してもらえないのです。こちらにもこだわりがあるので「無償のソフトウェア」などという簡単かつ誤解を生みそうな表現はできませんし、苦労して説明しても結局は煙に包まれたような顔をされてしまいます。

+

この「理解されにくさ」は、そもそもオープンソースという単語が誤解されやすいうえに、いろいろな側面を持つ多面的な概念であることと無関係ではないでしょう。というわけで、今回はオープンソースという概念の多面性について考えてみます。

+
+
+

定義

+
+

まずは、言葉の定義から見ていきましょう。フリーソフトウェアの定義は「(FSF1 の考える)ソフトウェアの自由を保証するソフトウェア」であり、ここでいうソフトウェアの自由とは、

+
    +
  1. 実行する自由

  2. +
  3. ソースコードを読む自由

  4. +
  5. ソースコードを改変する自由

  6. +
  7. ソースコードを再配布する自由

  8. +
+

のことです。実行の自由を保証するため、ソフトウェアは無償で入手できる必要がありますし、学習・研究用にソースコードも入手可能でなければいけません。また、不具合の修正や自分の目的に合わせるための改変を許可したり、他の人に勧めるために再配布も自由である必要があります。

+

一方、オープンソースソフトウェアとは、「オープンソースの定義」2 を満たすライセンスで配布されているソフトウェアのことです。オープンソースの定義が、作者の意向でもソフトウェア自体の性質でもなく、ライセンスによって定められることに注目してください。つまり、どのようなソフトウェアであるかよりも、そのソフトウェアが「どのように扱えるか」という点を問題としているわけです。

+
+
+ +

オープンソースの歴史

+
+

オープンソースは1998年に誕生した新しい単語ですが、それよりもはるか以前から成立していたフリーソフトウェア運動に端を発しています。これは、当時MITに所属していたRichard M. Stallmanが始めた「ソフトウェアの商用化によって、それ以前にプログラマたちが享受していたソフトウェアの自由が奪われていくのを憂えて誕生させた運動」です。1983年、Stallmanが自身で開発していたEmacsエディタなどをGPL3 の下で公開し、他の人々にもこのライセンスの採用を勧めました。それ以来、StallmanとFSFは数多くのソフトウェアをGPLの下で公開しており、優れたコンパイラであるGCCや、UNIXコマンドの多くをカバーするGNUツールなど、オープンソースにとって欠かせない存在になっています。

+

しかしこの考えは、企業にあまり理解されませんでした。一説には「フリー」という単語が「無料」を連想させるからとも、商用ソフトウェアを毛嫌いするStallmanの態度が商用ソフトウェアも扱うIT企業に敬遠されたともいわれていますが、はっきりしたことはわかりません。そのような環境の中で、フリーソフトウェアをビジネス領域に定着させるための方策として誕生した単語が「オープンソース」です。これは「ソースコードを公開している」という部分しか表現していない単語ですが、

+
    +
  • 真新しい言葉が持つよいイメージ

  • +
  • 無料というビジネス的に望ましくない側面を強調しすぎていない

  • +
  • なんとなく新しいビジネストレンドという印象を与えられる

  • +
+

などの利点から、ビジネスに近い人々から支持されました。Stallmanたちは「オープンソースという言葉には最も重要な『自由』が含まれていない」と反対しましたが、現実派は「オープンソースの定義によって自由は保証されている」として、この点をあまり重視しませんでした。

+
+
+

オープンソースの背景

+
+

「なぜオープンソースなのか?」、また「なぜオープンソースが成立できるのか?」という点が気になる人もいるでしょう。

+

フリーソフトウェアの場合は簡単です。フリーソフトウェアには「ソフトウェアの自由を維持する」という崇高な目的があります。過激な行動こそありませんが、基本的には人類の歴史で繰り返されてきた自由闘争の一種です。ところが、自由にそれほど固執しないオープンソースの場合には、ちょっと話がややこしくなります。無理やり一言で表現するなら「近年の社会の変化に適合したソフトウェア開発のありかた」とでもいえばよいでしょうか。

+

もともと知識や情報を共有するという行為は、科学の領域では普通のことでした。知識を論文として(無償で)公開し、先人の業績を利用して新たな研究を行うことは当たり前のことです。ソフトウェア、特に商用ソフトウェアは「商品」として扱われるので忘れがちですが、論文の内容と同様のやり方が適用できます。とはいえ、ソフトウェアの開発にはそれなりに費用がかかるわけですが、それを「無料のソフトウェア」として公開してしまうことに抵抗はないのでしょうか? これには2つの理由があります。

+ +

最初の理由は、コンピュータの普及とインターネットの発達です。昔はきちんとしたソフトウェアを開発をしようと思えば、高価な大型コンピュータを導入し、たくさんの技術者を集める必要がありました。それが今では家庭にあるコンピュータでも十分可能で、ネットでのやり取りだけで開発されることも珍しくありません。趣味のプログラミングのレベルでも、相当な開発ができるようになったのです。

+

もう1つの理由は、ソフトウェアの複雑化とコモディティ化4 が同時に起こったことです。ソフトウェアがカバーする領域はどんどん広くなり、ソフトウェアはどんどん複雑になっています。昔は1万行程度で実現できていたOSも、今では600万行を超える5 ような一大ソフトウェアになっています。ところが、人間の財布の中身はさほど変化しませんから、1つ1つのソフトウェアの規模がどんなに大きくなってもソフトウェア全体にかけられる費用はそんなに増やせません。結果として、よほどの大手でなければ、自分たちだけで必要なソフトウェアを開発・提供できなくなってしまいました。企業がオープンソースに注目する理由はここにあります。「すべてのソフトウェアを自分たちで開発できない以上、競争力の源になる一部を除いて、みんなで共有して開発したほうが得になる」という企業側の冷徹な計算があるのです。

+

オープンソースに関わる人々の思惑は1つではありません。経営上の損得から参加する企業、ソフトウェアの自由のために参加するプログラマー、上司の命令だから参加する会社員、それこそ千差万別です。しかし、オープンソースによってすべての人が幸せになる可能性があり、それが継続していくような発展的な循環が起きているのは、本当によいことだと思います。そして潤沢なオープンソースソフトウェアに囲まれることで、ハッカーは自らがハッカーたりえる「場」を見いだせるのではないでしょうか。

+
+
+

終わりに

+
+

これまで皆さんにご好評いただいた本連載「まつもとゆきひろのハッカーズライフ」は、残念ながら今回で最終回になります。UNIX USER時代から数えると24回にもわたってお付き合いいただき、本当にありがとうございます。連載が終わってもハッカーとしての人生はまだまだ終わりません。これからも皆さんがプログラミングライフを楽しむことができるようお祈りしています。Happy Hacking!

+
+
+
+
+
    +
  1. +

    FSF

    +

    Free Software Foundationの略。
    +http://www.fsf.org/ +

    +
  2. +
  3. +

    「オープンソースの定義」

    +

    オープンソースの定義は、もともとDebianディストリビューションにおいてフリーソフトウェアと認定する基準を定めた「DFSG(Debian Free Software Guideline)」がベースになっている。第1特集Part 4のリスト1参照。
    +http://opensource.org/docs/definition.php
    +http://www.opensource.jp/osd/osd-japanese_plain.html +

    +
  4. +
  5. +

    GPL

    +

    GNU General Public Licenseの略で、ソフトウェアの自由を保証するために定義されたライセンス。
    +http://www.gnu.org/copyleft/gpl.html +

    +
  6. +
  7. +

    コモディティ化

    +

    コモディティ(Commodity)は日用品。日用品のようにありふれていて、安く手に入り、生産にコストがかけられなくなること。 +

    +
  8. +
  9. +

    600万行を超える

    +

    最近のLinuxカーネルだけの話。Windows 2000が約2000万行、Windows Vistaもおそらく数千万行クラスだと思われる。 +

    +
  10. +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-bmatter-001.xhtml b/docs/vol2/xhtml/p-bmatter-001.xhtml new file mode 100755 index 0000000..206e348 --- /dev/null +++ b/docs/vol2/xhtml/p-bmatter-001.xhtml @@ -0,0 +1,67 @@ + + + + + +初出一覧 + + + + +

Matz Essays Volume 2

+ + +
+

初出一覧

+
    +
  • 探訪Ruby: Rubyの国へようこそ, Linux magazine, 2003年12月号, アスキー.

  • +
  • 探訪Ruby: テスト第一主義, Linux magazine, 2004年1月号, アスキー.

  • +
  • 探訪Ruby: Wiki Wiki, Linux magazine, 2004年2月号, アスキー.

  • +
  • 探訪Ruby: Blogの世界, Linux magazine, 2004年3月号, アスキー.

  • +
  • 探訪Ruby: アスペクト指向, Linux magazine, 2004年4月号, アスキー.

  • +
  • 探訪Ruby: RubyとEmacs, Linux magazine, 2004年5月号, アスキー.

  • +
  • 探訪Ruby: Instiki, Linux magazine, 2004年6月号, アスキー.

  • +
  • 探訪Ruby: テンプレート, Linux magazine, 2004年7月号, アスキー.

  • +
  • 探訪Ruby: DBM, Linux magazine, 2004年8月号, アスキー.

  • +
  • 探訪Ruby: tDiary, Linux magazine, 2004年9月号, アスキー.

  • +
  • 探訪Ruby: Webアプリケーションの基礎, Linux magazine, 2004年10月号, アスキー.

  • +
  • 探訪Ruby: Webアプリケーションの基礎(その2), Linux magazine, 2004年11月号, アスキー.

  • +
  • 探訪Ruby: Webアプリケーションフレームワーク, Linux magazine, 2004年12月号, アスキー.

  • +
  • 探訪Ruby: マークアップ・マークダウン, Linux magazine, 2005年1月号, アスキー.

  • +
  • 探訪Ruby: ダイコン, Linux magazine, 2005年2月号, アスキー.

  • +
  • 探訪Ruby: 最終回・ネタのタネ, Linux magazine, 2005年3月号, アスキー.

  • +
  • まつもと ゆきひろのハッカーズライフ: ハッカーとの遭遇, UNIX USER, 2005年4月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: キーボードへのこだわり, UNIX USER, 2005年5月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: ハッカーと仕事, UNIX USER, 2005年6月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: Emacs 対 vi, UNIX USER, 2005年7月号, SBクリエイティブ.

  • +
  • オープンソース開発って何だろう, Linuxソフトウェアアンテナ, 2005年7月号, 技術評論社.

  • +
  • まつもと ゆきひろのハッカーズライフ: ハッカー環境問題, UNIX USER, 2005年8月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 言語の重要性, UNIX USER,2005年9月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 言語の重要性 その2, UNIX USER, 2005年10月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: ハッカーとオープンソース, UNIX USER, 2005年11月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 測定狂時代, オープンソースマガジン, 2005年12月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: ソースを読もう, オープンソースマガジン, 2006年1月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: Let's Talk Lisp, オープンソースマガジン, 2006年2月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: オープンソースライセンス, オープンソースマガジン, 2006年4月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: Get Thing Done, オープンソースマガジン, 2006年5月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 若人への手紙, オープンソースマガジン, 2006年6月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: オープンソースのマーケティング, オープンソースマガジン, 2006年7月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: キャズム, オープンソースマガジン, 2006年8月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 言語の壁, オープンソースマガジン, 2006年9月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: ハッカーの生産性, オープンソースマガジン, 2006年10月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 理系・文系, オープンソースマガジン, 2006年11月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: 美しいコード, オープンソースマガジン, 2006年12月号, SBクリエイティブ.

  • +
  • まつもと ゆきひろのハッカーズライフ: オープンソースよ、永遠に, オープンソースマガジン, 2007年1月号, SBクリエイティブ.

  • +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-bmatter-002.xhtml b/docs/vol2/xhtml/p-bmatter-002.xhtml new file mode 100644 index 0000000..f14a655 --- /dev/null +++ b/docs/vol2/xhtml/p-bmatter-002.xhtml @@ -0,0 +1,796 @@ + + + + + +索引 + + + + +

Matz Essays Volume 2

+ + +
+

索引

+

数字・記号

+

.emacs, 62

+

<% %>, 75, 86

+

<%= %>, 75, 87

+

<%# %>, 75, 87

+

ruby-mode, 205

+

\ayアンテナ, 186

+

A

+

a.y, 29

+

action, 132

+

add-hook, 66

+

advice, 53

+

after, 54

+

Alan Chen, 29

+

amrita, 88

+

amrita/template, 89

+

Andreessen, Mark, 202

+

Apacheモジュール, 124

+

arfer, 42

+

Array, 7

+

Arrow, 138, 144

+

Artisticライセンス, 256

+

ASCII, 179

+

ascpctr, 53

+

AspectJ, 51

+

AspectR, 51

+

使い方, 53

+

AspectR::Aspect, 53

+

assert, 16

+

assert_equal, 16

+

assert_instance_of, 16

+

assert_kind_of, 16

+

assertassert_nil, 16

+

assert_raises, 16

+

assert_respond_to, 16

+

AsWiki, 28

+

AWK, 5

+

B

+

Barnett, Aaron, 138, 144

+

basecamp, 262

+

bdb, 103

+

before, 54

+

benchmark, 8

+

Bengtsson, Anders, 77

+

Berger, Dan, 155

+

Berkeley DB, 102

+

bigdecimal, 8

+

Bignum, 7

+

binding, 75

+

Black, David Alan, 34, 188

+

Bliki, 32

+

Block Injection, 174

+

Blog, 38

+

BlogKit, 112

+

Blogtari!, 41

+

Blogツール, 41

+

BlueCloth, 165

+

BNF(Backus Naur Form), 225

+

bogoMIPS, 252

+

Bookmarklet, 116

+

Borges, 138, 144

+

Brannon, Paul, 154

+

Britt, James, 34, 41, 155

+

Broken Window Theory, 46

+

Bryant, Avi, 51

+

bsh, 5

+

Btree, 102

+

Buck, Jamis, 156, 176

+

Builder, 177

+

C

+

cc-mode, 71

+

Cerise, 138, 144

+

cgi, 8, 136

+

CGI(Common Gateway Interface), 121

+

欠点, 124

+

cgi-application, 138, 144

+

cgi/session, 136

+

CGIKit, 138, 144, 145

+

cgikit, 147

+

checkbox, 132

+

CKBrowser, 149

+

CKCheckbox, 149

+

CKComponent, 149

+

CKConditional, 149

+

CKContent, 149

+

CKFileUpload, 149

+

CKForm, 149

+

CKFrame, 149

+

CKGenericElement, 149

+

CKHyperlink, 149

+

CKImage, 149

+

CKPopUpButton, 149

+

CKRadioButton, 149

+

CKRepetition, 149

+

CKResetButton, 149

+

CKString, 149

+

CKSubmitButton, 149

+

CKText, 149

+

CKTextField, 149

+

Clarke, T., 138

+

Class, 7

+

CLOS, 94, 248

+

clWiki, 28, 41

+

cmail, 5, 106, 205

+

command, 79

+

Common Lisp, 94, 248

+

Comparable, 7

+

complex, 8

+

Constructor Injection, 171

+

Cookie, 134

+

Copland, 176

+

copy, 60

+

Cox, Brad, 155

+

CPL(Common Public License), 258

+

cs.com, 25

+

csv, 8

+

ctags, 245

+

Cunningham, Ward, 25

+

curses, 8

+

D

+

date, 8

+

Date, Shashank, 34

+

Date@Glance, 260

+

DBM, 97, 98

+

制限, 99

+

dbm, 8, 99

+

debug, 8

+

Decoux, Guy, 103

+

delegate, 8

+

DI(Dependency Injection), 169

+

DI::Container, 171

+

Diaria, 42

+

digest/md5, 8

+

Dir, 7

+

div, 138, 144

+

DIコンテナライブラリ, 176

+

dl, 8

+

drb, 8

+

DRM(Digital Rights Management), 234

+

Dvorak, August, 196

+

Dvorak配列, 196

+

E

+

EBCDIC, 179

+

EBCDIK, 179

+

ed, 204

+

Emacs, 5, 61, 203, 233

+

〜による開発, 70

+

GNU, 62

+

Rubyモード, 62

+

オートインデント, 64

+

ハイライト, 63

+

Emacs Lisp, 5, 62, 204

+

enctype, 133

+

Enumerable, 7

+

ERB, 74, 88

+

erb, 8

+

eRuby, 74, 86

+

etc, 8

+

EUC(Extended UNIX Code), 180

+

EuRuKo(European Ruby Conference), 188

+

eval, 248

+

evan, 138, 144

+

ex, 204

+

Exception, 7

+

execute, 79

+

execute_command, 79

+

expand, 90

+

F

+

FastCGI, 124, 125

+

fastcgi, 126

+

fcntl, 8

+

Feldt, Robert, 51

+

FFII(Foundation for a Free Information Infrastructure), 23

+

File, 7

+

file, 132

+

fileutils, 8

+

find, 8

+

Fixnum, 7

+

Float, 7

+

flyspell-mode, 70

+

form, 132

+

Fowler, Martin, 32, 169

+

Freeze, Jim, 34, 154

+

FSF(Free Software Foundation), 233, 257, 292

+

ftools, 8

+

Fulton, Hal, 34, 154, 188

+

G

+

GC, 59

+

GC, 7

+

gdbm, 99

+

George Girton, 42

+

GET, 132

+

GLOBAL, 245

+

Gmail, 107

+

GNU Emacs, 62

+

GNU(GNU's Not Unix), 233

+

Gonzui, 245

+

Gosling Emacs, 62, 204

+

Gosling, James, 62, 204, 233

+

Gosmacs, 62, 204, 233

+

GPL(GNU General Public License), 233, 255, 293

+

gprof, 238

+

Graham, Paul, 202, 219, 247

+

Granger, Michael, 34, 138, 144

+

GRASS, 161

+

Green, Eli, 126

+

grep, 245

+

Guido van Rossum, 188

+

Guile, 84

+

Gurgle, 42

+

H

+

Hacker, 191

+

Haines, Kirk, 138, 144

+

Hansson, David Heinemeier, 73, 138, 144, 155, 229, 262

+

Happy Hacking Keyboard, 195

+

Hash, 7, 98

+

Herrington, Jack, 34

+

hidden, 132, 134

+

Hiki, 29

+

Hodel, Eric, 34, 138, 144

+

hook, 65

+

howm, 261

+

HTML(Hyper Text Markup Language), 120

+

フォーム, 132

+

HTTP(HyperText Transfer Protocol), 120

+

リクエスト, 123, 133, 134

+

レスポンス, 134

+

http.el{http.el}, 115

+

Hwang, Francis, 34

+

I

+

iAPX432, 252

+

iconv, 8

+

iGEL, 138

+

image, 132

+

input, 132

+

INSANE, 224

+

Instiki, 73

+

Integer, 7

+

Interface Injection, 171

+

Io, 95

+

IO, 7

+

Iowa, 138, 144

+

IPA, 201

+

IPAフォント, 161

+

irb, 8

+

IRC, 186

+

ISO-8859, 179

+

J

+

Janukowicz, Marek, 138, 144

+

jargon file, 192

+

JavaScript, 95, 237

+

JIS-X-0201, 179

+

JIS-X-0208, 179

+

join, 102

+

join point, 51

+

Joy, Bill, 204

+

K

+

KakiWiki, 28

+

kan, 29

+

Kernel, 7

+

Kiczale, Gregor, 249

+

Kilmer, Rich, 34, 154, 224

+

Knight, John, 155

+

kou, 161

+

kwartz, 93

+

L

+

lambda, 66

+

langsmithメーリングリスト, 118, 226

+

Latin1, 179

+

Lerdorf, Rasmus, 224

+

LGPL, 257

+

Lightweight Language, 187

+

Lightweight Language Weekend, 128

+

Lisp, 84, 205, 219, 247

+

動的性, 249

+

Lua, 237

+

luser, 218

+

M

+

Madeleine, 77

+

Madeleine::Automatic, 80

+

mark and sweep, 59

+

Markdown, 164

+

文法, 164

+

Marshal, 7, 101

+

Math, 7

+

matrix, 8

+

Matz, 34, 126, 229

+

Matzにっき, 42, 186

+

May, Patrick, 138, 154

+

McCarthy, John, 205, 248

+

method, 132

+

methods, 54

+

Miki, 29

+

Miller, Gorden James, 156

+

MiniRubyWiki, 28

+

MIPS, 252

+

misen, 92

+

MM/Memo, 261

+

MockLisp, 62, 204

+

mod_fastcgi, 125

+

mod_ruby, 124

+

Module, 7

+

Moleskin, 42

+

MoonWolf, 126, 138, 144, 160

+

Moore, Geoffrey A., 271

+

morq, 205

+

Morris, Chris, 28, 41

+

Mortar, 138, 144

+

N

+

Narf, 138

+

Needle, 176

+

net/ftp, 8

+

net/http, 8

+

net/imap, 8

+

net/pop, 8

+

net/smtp, 8

+

net/telnet, 8

+

Neumann, Michael, 29

+

nkf, 8

+

Nora, 138

+

North, Dan, 176

+

Numeric, 7

+

O

+

O'Reilly OSCON, 188, 224, 227

+

Object, 7

+

Object Prevalence, 77

+

observer, 8

+

open-uri, 8

+

optparse, 8

+

OSI(Open Source Initiative), 207

+

ozten, 42

+

P

+

pack, 99

+

PageRank, 253

+

Parrot, 84

+

parsedate, 8

+

password, 132

+

PC-1210, 264

+

PDA, 260

+

Perens, Bruce, 209

+

Perl, 5, 206

+

Pettichord, Bret, 34

+

Phlip, 28

+

POBox, 260

+

POD(Plain Old Document)形式, 29

+

pom(phase of the moon), 244

+

POST, 133

+

pp, 8

+

profile, 8

+

Prothon, 95

+

pstore, 8

+

Q

+

QDBM, 103

+

Queue, 102

+

Qwerty配列, 196

+

R

+

RAA(Ruby Application Archive), 8, 183

+

Rabbit, 158, 161

+

Radical, 138, 144

+

radio, 132

+

Rails, 138, 144

+

Range, 7

+

Raymond, Eric, 209, 247, 268, 276

+

rb.log, 42

+

rbprof, 55

+

RCR(Ruby Change Request), 46

+

RCRchive, 47

+

RD(Ruby Document), 29, 114, 158

+

文法, 159

+

rd-mode.el, 114

+

rd2, 161

+

rd2sxi, 161

+

RDocWiki, 29

+

RDtool, 160

+

readline, 8

+

Recno, 102

+

RedCloth, 76, 165

+

RedHanded, 186

+

Regexp, 7

+

Replica, page{78}

+

reset, 132

+

rexml, 8

+

Rico, 176

+

Rite, 46

+

Roach, 138, 144

+

Rosie, 144

+

RRB(Ruby Refectoring Browser), 66

+

RSS(RDF Site Summary), 41

+

Ruby, 95

+

1.8, 74

+

1.8.0, 15

+

1.9, 47

+

組み込みライブラリ, 7

+

コア, 6

+

思想と哲学, 9

+

世界, 6

+

誕生日, 168

+

特徴, 4

+

未来, 46

+

メーリングリスト, 184

+

リフレクション機能, 51

+

Ruby Conference, 34, 46, 128, 154, 188

+

Ruby hotlinks, 185

+

Ruby on Rails, 262, 270

+

ruby-mode, 64

+

ruby-mode-hook, 65

+

ruby-mode.el, 63

+

ruby-mode.elc, 63

+

Ruby.APP, 138, 144

+

Ruby2, 46

+

rubydb.el, 71

+

RubyForge, 183

+

Rubyist Magazine, 186

+

RubyJournal, 42

+

RubyUnit, 15

+

Rubyのバグ(勝手に)トラッカー, 262

+

Rubyライセンス, 256

+

Russell, Steve, 205, 248

+

Ruwiki, 29

+

rweb, 138

+

RWiki, 29, 158

+

S

+

sakura, 42

+

SASADA Koichi, 155

+

Sather, 269

+

say, 28

+

scanf, 8

+

Schmidt, Stephan, 138, 144

+

Schroeder, TRrevor, 42

+

sdbm, 99

+

select, 132

+

Self, 94

+

SeRuby, 95

+

Setter Injection, 171, 173

+

socket, 8

+

Sofer, Idan, 138, 144

+

SQL, 97

+

SQLite, 98

+

ssl.el, 115

+

Stallman, Richard, 61, 203, 233, 293

+

str, 75

+

String, 7

+

stringio, 8

+

Stroustrup, Bjarne, 34

+

Struct, 7

+

submit, 132

+

SWS, 138, 144

+

Symbol, 7

+

T

+

T-Code, 196

+

Talbott, Nathaniel, 15, 34, 155

+

TANIGUCHI, Takaki, 28

+

TaoWiki, 29

+

target, 54

+

tDiary, 42, 109, 158

+

スタイル, 110

+

ツッコミ, 110

+

ツッコミメール, 113

+

テーマ, 110

+

トラックバック, 110

+

プラグイン, 111

+

tdiary-mode.el, 114

+

TECO, 61, 203

+

tempfile, 8

+

test/unit, 8, 15

+

text, 132

+

textarea, 132

+

Textile, 75, 162

+

文法, 162

+

Thomas, Dave, 188

+

Thomas, David, 224

+

Thread, 7

+

thread, 8

+

Tiki, 29

+

Time, 5, 7

+

tk, 8

+

todo.org, 29

+

Tosh, 160

+

Tuckner, Steve, 34

+

Turing, Alan Mathison, 220

+

twelvesoft.com, 144

+

U

+

UENO Katsuhiro, 138, 144

+

Unicode, 180

+

unpack, 99

+

unwrap, 55

+

uri, 8

+

URL(Unified Resource Locator), 120

+

V

+

VA Linux Business Forum 2005, 223

+

van Rossum, Guido, 224

+

Vanderburg, Glenn, 229

+

vi, 204

+

Visor Edge, 260

+

W

+

WAF, 138, 144

+

Wakaba, 138, 144

+

Wall, Larry, 188, 193, 206, 224, 246, 256

+

Web 2.0, 254

+

Web Magazine, 186

+

webapp, 138, 144

+

Weblog, 38

+

WEBrick, 74

+

webrick, 8

+

Webアプリケーション, 119, 131

+

Webアプリケーションフレームワーク, 137, 143

+

Weirich, Jim, 34, 155, 174, 224, 229

+

wglozer, 138, 144

+

why the lucky stiff, 76, 165, 229

+

WideStudio, 201

+

Wiki, 25

+

荒らし, 27

+

安全性, 27

+

活用, 32

+

クローン, 28

+

特徴, 26

+

マークアップ, 26

+

WikiName, 26

+

Wikipedia, 32

+

Win32API, 8

+

win32ole, 8

+

WWW(World Wide Web), 120

+

X

+

X11ライセンス, 258

+

xlog, 42

+

xmlrpc, 8

+

XP, 13, 254

+

xtemplate, 92

+

Y

+

yacc(yet another compiler compiler), 225

+

YAML, 102

+

yaml, 8

+

Z

+

Zarnett, Bryan, 138, 144

+

Ziegler, Austin, 154

+

zlib, 8

+

+

アーリーアダプタ, 271

+

アーリーマジョリティ, 271

+

アクセプタンステスト, 14

+

アスペクト, 51

+

アスペクト指向, 49, 50, 249

+

アドバイス, 53

+

アンテナ, 185

+

+

いしなお, 261

+

依存関係, 169

+

イノベータ, 271

+

インタプリタ, 6

+

+

ウォーターフォール型開発, 14

+

鵜飼文敏, 231

+

美しいコード, 288

+

+

エクストリーム・プログラミング, 13, 254

+

エバリュエータ, 7

+

エレメント, 148

+

+

オートインデント, 62, 64

+

オープンソース, 292

+

キャズム, 272

+

持続性, 269

+

成功, 268

+

定義, 207, 292

+

特許, 22

+

背景, 293

+

ビジネスストーリー, 11

+

マーケティング, 268

+

歴史, 293

+

オープンソースカンファレンス2005, 187

+

オープンソース貢献者賞, 231

+

オープンソースライセンス, 257

+

オブジェクト指向, 94

+

+

カーソル, 102

+

学生ハッカー, 200

+

拡張ライブラリ, 7

+

かずひこアンテナ, 186

+

ガベージコレクション, 59

+

ガベージコレクタ, 7

+

関西オープンソース, 187

+

関心事, 50

+

関心の分離, 49

+

かんな, 70

+

+

キーボード, 195

+

起業ハッカー, 202

+

キッチンシンク, 205

+

キャズム, 271

+

きゅうり, 198

+

きゅうり改, 70, 197

+

+

組み込みライブラリ, 7

+

クラス, 5

+

クラス主義, 94

+

桑田誠, 93

+

+

継承, 94

+

結合テスト, 14

+

研究職ハッカー, 200

+

言語おたく, 6

+

言語塾, 117

+

+

構造エディタ, 84

+

構文木, 7

+

傲慢, 194

+

コード

+

美しい〜, 288

+

単純な〜, 289

+

明快な〜, 288

+

小飼弾, 202, 223

+

後藤裕蔵, 74

+

コピーレフト, 257

+

コマンドオブジェクト, 79

+

ごみ集め, 59

+

コメント, 40

+

コンピューティング環境, 215

+

+

最適化, 237

+

+

シェル, 5

+

時刻, 5

+

実装, 14

+

シフトJIS, 180

+

自分言語, 225

+

ジャーナリング, 77

+

ジャーナルログ, 77

+

社会人ハッカー, 200

+

修正BSDライセンス, 258

+

状態, 133

+

情報隠蔽, 94

+

白井薫, 92

+

+

スーパークリエーター, 201

+

スケーラビリティ, 253

+

助田雅紀, 15

+

鈴木鉄也, 138, 144, 145

+

ステートレス, 134

+

スナップショット, 77

+

スピード狂, 236

+

スロット, 94

+

+

咳, 29, 74

+

関将俊, 29, 74, 88, 138, 144

+

設計, 14

+

セッション, 133

+

+

ソーシャルタギング, 254

+

ソースコード

+

読解, 244

+

ゾーン, 280

+

測定狂, 235

+

ソフトウェアテスト, 13

+

ソフトウェア特許, 234

+

+

高橋浩和, 231

+

高橋征義, 35, 74

+

高林哲, 231, 245

+

竹内仁, 29

+

ただただし, 42, 109

+

立石孝彰, 42, 92

+

田中哲, 138, 144

+

短気, 194

+

単純なコード, 289

+

単体テスト, 14

+

+

知的所有権, 22

+

チューリング完全, 220

+

+

ツッコミ, 43

+

+

データベース, 97

+

手紙, 263

+

テスティング, 13

+

フレームワーク, 15

+

テスト第一主義, 17

+

添付ライブラリ, 7

+

テンプレート, 85

+

テンプレートエンジン, 86

+

+

動的結合, 94

+

特許, 22

+

ドメイン特化言語, 249

+

トラックバック, 40, 115

+

トランザクション, 102

+

+

中島拓, 89

+

名前重要, 167

+

汝は人狼なりや?, 140

+

+

日本Rubyの会, 34

+

+

パーサー, 7

+

ハイライト, 63

+

バインディングファイル, 148

+

バザールモデル, 268

+

ハッカー, 191

+

英語, 276

+

英語学習法, 277

+

学生〜, 200

+

研究職〜, 200

+

三大美徳, 193

+

社会人〜, 200

+

生産性, 279

+

素質, 193

+

定義, 192, 223

+

ハリウッド原則, 171

+

パレートの法則, 237

+

半角カナ, 179

+

+

ヒアリング, 13

+

ビジュアル言語, 83

+

雛形, 94

+

平林俊一, 201

+

平林幹雄, 103

+

+

無精, 194

+

フック, 65

+

フリーソフトウェア, 232, 292

+

起源, 232

+

定義, 292

+

フリープログラマー, 201

+

プログラミング言語, 219

+

プロトタイプ, 94

+

プロトタイプ主義, 94

+

プロファイラ, 55, 238

+

文系的理系プログラマー, 286

+

分析, 13

+

文法独立の言語, 84

+

+

マーク・アンド・スイープ, 59

+

マークアップ, 26

+

マークアップ言語, 157

+

マーケティング, 267

+

前田修吾, 86, 161

+

増井俊之, 196

+

+

未踏プロジェクト, 201

+

+

明快なコード, 288

+

メールリーダー, 106

+

+

文字, 179

+

文字コード, 179

+

文字集合, 179

+

文字符号化, 179

+

+

ユニットテスト, 14

+

+

ライセンス, 209, 255

+

ラガード, 271

+

+

理系・文系, 283

+

理系的人格, 284

+

リファクタリング, 66

+

リフレクション機能, 51

+

リレーショナルデータベース, 97

+

リンク, 40

+

+

るびきち, 158

+

るびま, 186

+

+

レイトマジョリティ, 271

+

+

ロギング, 103

+

ロック, 103

+

+

和田英一, 195

+

割れ窓理論, 46

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-colophon.xhtml b/docs/vol2/xhtml/p-colophon.xhtml new file mode 100755 index 0000000..3033062 --- /dev/null +++ b/docs/vol2/xhtml/p-colophon.xhtml @@ -0,0 +1,84 @@ + + + + + +Matz Essays + + + + +

Matz Essays Volume 2

+ +
+ + +
+
+

+
+
+

Matz Essays Volume 2

+
+
+

2003〜2007

+
+
+ + +
+

まつもと ゆきひろ

+
+ + + +
+

2024年11月26日 発行

+
+ +
+

本書(電子版)は下記にもとづいて制作しました

+

『Matz Essays Volume 2』

+

2024年11月26日初版発行

+ +
+ +
+

発行者 夏野 剛

+

発行所 株式会社ドワンゴ

+

〒 104-0061 東京都中央区銀座4-12-15歌舞伎座タワー

+

03-3549-6153(編集)

+ +

https://asciidwango.jp/

+
+ +
+

+本書(電子版)に掲載されているコンテンツ(ソフトウェア/プログラム/データ/情報を含む)の著作権およびその他の権利は、すべて株式会社ドワンゴおよび正当な権利を有する第三者に帰属しています。法律の定めがある場合または権利者の明示的な承諾がある場合を除き、これらのコンテンツを複製・転載、改変・編集、翻案・翻訳、放送・出版、公衆送信(送信可能化を含む)・再配信、販売・頒布、貸与等に使用することはできません。 +

+アスキードワンゴ編集部
+編 集  鈴木嘉平、星野浩章

+
+ +
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-cover.xhtml b/docs/vol2/xhtml/p-cover.xhtml new file mode 100755 index 0000000..7c1ea46 --- /dev/null +++ b/docs/vol2/xhtml/p-cover.xhtml @@ -0,0 +1,27 @@ + + + + + +Matz Essays + + + + +
+ + + + + +
+ + + diff --git a/docs/vol2/xhtml/p-fmatter-001.xhtml b/docs/vol2/xhtml/p-fmatter-001.xhtml new file mode 100755 index 0000000..e751a60 --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-001.xhtml @@ -0,0 +1,37 @@ + + + + + +Matz Essays + + + + + + +

Matz Essays Volume 2

+ + + +
+
+ + + +
+
+ +

+
+ + + + diff --git a/docs/vol2/xhtml/p-fmatter-002.xhtml b/docs/vol2/xhtml/p-fmatter-002.xhtml new file mode 100755 index 0000000..f1992e6 --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-002.xhtml @@ -0,0 +1,29 @@ + + + + + +Matz Essay + + + + +

Matz Essays Volume 2

+ + +
+

商標

+

本文中に記載されている社名および商品名は,一般に開発メーカーの登録商標です.
+なお,本文中では TM・©・® 表示を明記しておりません.

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-fmatter-003.xhtml b/docs/vol2/xhtml/p-fmatter-003.xhtml new file mode 100755 index 0000000..7d80b9c --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-003.xhtml @@ -0,0 +1,34 @@ + + + + + +はじめに + + + + +

Matz Essays Volume 2

+ + +
+

はじめに

+

本書は、過去(2003年から2007年まで)、いろいろな雑誌に掲載された執筆した私の記事をまとめたものです。もう20年くらい前のことになってしまいますね。若かったからなのか、この頃の執筆量は現在よりもはるかに多いですね。この時期には、執筆だけでなく、ばりばりとプログラミングもしていたはずなので、すごい生産性です。若さってすごい。

+

Vol. 2の記事は基本的にRubyのことをまとめたものです。言語としてのRubyは驚くほど変化が少なく、これらの記事に書かれていることは現在でも有効です。ただ、前半「探訪Ruby」をまとめた部分は、ちょうどRuby on Railsがまだ有名になっていない頃の記事ですから、特にWWWを扱った部分は古さが目立ち、直接役立つ知識ではなくなっていますね。たとえば第37章で紹介しているInstikiはRuby on Rails開発前のDHHが手掛けたWebアプリケーション(Wikiシステム)です。直接役に立たなくても、過去のDHHの思想の一端が垣間見えるかもしれません。

+

この本をまとめるにあたって、すべての記事を読み返してみました。もちろん、古い内容もたくさんありますが、今でも変わらないものもたくさんあります。私たちは普段、次々と現れる新技術に追い回されていて、常に新しいことを勉強しなければ取り残されてしまうような不安にさいなまれがちです。しかし、古い記事を読み返してみると、長期的な視点では変化しないものがあり、本書を読みながら、どの部分は古びて、どの部分は生き延びているか考えることで、この業界で個別の流行に過度に振り回されずに生きることについての示唆を得られるような気がしました。

+

本書を読む皆さんには、私と同じ時代を生きた人もいるかもしれません。それらの方々は懐かしく感じながら読んでいただければ幸いです。あるいは、これらの記事が書かれたは自分が生まれる前だった読者もいらっしゃるでしょう。そういう方々には、本書から時代を超えた学びがあることを心から希望します。

+

2024年9月
+島根県の温泉地にて
+まつもとゆきひろ

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-fmatter-004.xhtml b/docs/vol2/xhtml/p-fmatter-004.xhtml new file mode 100755 index 0000000..0624526 --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-004.xhtml @@ -0,0 +1,29 @@ + + + + + +本書の刊行にあたって + + + + +

Matz Essays Volume 2

+ + +
+

著者紹介

+

まつもと ゆきひろ

+

プログラミング言語Rubyの創始者。Rubyアソシエーション理事長。ほかネットワーク応用通信研究所フェロー、OSS Vision社CTOなど肩書多数。鳥取県出身、島根県在住。2009年から島根県松江市名誉市民。妻1人、子4人、犬猫1匹ずつ。東京嫌い、温泉好き。

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-fmatter-005.xhtml b/docs/vol2/xhtml/p-fmatter-005.xhtml new file mode 100644 index 0000000..3df1da5 --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-005.xhtml @@ -0,0 +1,32 @@ + + + + + +本書の刊行にあたって + + + + +

Matz Essays Volume 2

+ + +
+

本書の刊行にあたって

+
    +
  • 元原稿を参照しているため、表現や表記などが雑誌掲載時と異なっていることがあります。

  • +
  • URLは雑誌掲載時のままになっています。リンク切れなどがあることがあります。

  • +
  • 付録CD-ROMは本書には添付していません。

  • +
+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-fmatter-006.xhtml b/docs/vol2/xhtml/p-fmatter-006.xhtml new file mode 100644 index 0000000..47ad487 --- /dev/null +++ b/docs/vol2/xhtml/p-fmatter-006.xhtml @@ -0,0 +1,57 @@ + + + + + +Volume 2 目次 + + + + +

Matz Essays Volume 2

+ + +
+

Volume 1 / 1999〜2003

+

第1章 言語にとって美とはなにか?: Rubyにみるスクリプト言語の実装技法

+

第2章 Free Language Report: オブジェクト指向スクリプト言語Ruby

+

第3章 UNIX系OS間の移植性について

+

第4章 連載 スクリプト言語: スクリプト言語の歴史

+

第5章 特集 開発ツールをもっと便利に使おう: 最強の開発環境を求めて: Ruby最古のユーザーとしての開発環境

+

第6章 初等Ruby講座: はじめの一歩

+

第7章 初等Ruby講座: 条件判断とループ

+

第8章 初等Ruby講座: オブジェクトと変数

+

第9章 初等Ruby講座: 配列

+

第10章 初等Ruby講座: ハッシュ(または連想配列)

+

第11章 初等Ruby講座: 文字列の操作

+

第12章 初等Ruby講座: パターンマッチ

+

第13章 初等Ruby講座: 入出力

+

第14章 初等Ruby講座: 数と電卓

+

第15章 初等Ruby講座: CGI

+

第16章 初等Ruby講座: Rubyで作るCGI

+

第17章 初等Ruby講座: CGIの道具箱

+

第18章 初等Ruby講座: ファイル処理

+

第19章 初等Ruby講座: ネットワークプログラミング

+

第20章 初等Ruby講座: 番外編: Rubyカンファレンスレポート

+

第21章 初等Ruby講座: プロセスとフォーク

+

第22章 初等Ruby講座: スレッド(その1)

+

第23章 初等Ruby講座: スレッド(その2)

+

第24章 初等Ruby講座: データの保存

+

第25章 初等Ruby講座: XMLとYAML

+

第26章 初等Ruby講座: XMLとYAML(その2)

+

第27章 初等Ruby講座: エクストリーム・プログラミング

+

第28章 初等Ruby講座: 独習Ruby

+

第29章 初等Ruby講座: 再入門オブジェクト指向

+

第30章 初等Ruby講座: 最終回: ここからのRuby

+
+ +

+
+ + + diff --git a/docs/vol2/xhtml/p-toc-001.xhtml b/docs/vol2/xhtml/p-toc-001.xhtml new file mode 100755 index 0000000..c338063 --- /dev/null +++ b/docs/vol2/xhtml/p-toc-001.xhtml @@ -0,0 +1,318 @@ + + + + + +目次 + + + +

目次

+

はじめに

+

著者紹介

+

本書の刊行にあたって

+

2003〜2007

+

第31章 探訪Ruby: Rubyの国へようこそ

+

Rubyの紹介

+

昔々のお話

+

Rubyを取り巻く世界

+

思想と哲学

+

まとめ

+

Ruby開発日記 — オープンソースのビジネスストーリー

+

第32章 探訪Ruby: テスト第一主義

+

ソフトウェアテスト

+

仕様としてのテスト

+

test/unit

+

テストのある生活

+

システム構成の見直し

+

生活を改める

+

まとめ

+

オープンソースと特許

+

第33章 探訪Ruby: Wiki Wiki

+

Wikiとは何か

+

Wikiの特徴

+

Wikiの魅力

+

そんなことで大丈夫?

+

Wikiのもう1つの魅力

+

さまざまなWikiシステム

+

RWiki

+

RWikiのインストール

+

RWiki活用事例

+

Wikiの活用

+

まとめ

+

Ruby開発日記 — 日本Rubyの会

+

第34章 探訪Ruby: Blogの世界

+

Blogとは何か?

+

Blogコミュニケーション

+

リンク

+

コメント

+

トラックバック

+

RSS

+

さまざまなBlogツール

+

tDiary

+

まとめ

+

Ruby開発日記 — Rubyの未来

+

第35章 探訪Ruby: アスペクト指向

+

関心の分離

+

アスペクト指向とは

+

AspectR

+

AspectRのインストール

+

AspectRの使い方

+

AspectRの応用

+

まとめ

+

Ruby開発日記 — ごみ集め

+

第36章 探訪Ruby: RubyとEmacs

+

Emacs入門

+

環境としてのEmacs

+

Rubyモード

+

ハイライトとオートインデント

+

Rubyプログラムの編集

+

ruby-modeのカスタマイズ

+

RRB

+

RRBのインストール

+

RRBを使ってみる

+

Ruby開発日記 — ◆Emacsによる開発

+

第37章 探訪Ruby: Instiki

+

Instiki

+

WEBrick

+

ERB

+

RedCloth

+

Madeleine

+

Madeleine::Automatic

+

まとめ

+

Ruby開発日記 — ◆歴史は繰り返す

+

第38章 探訪Ruby: テンプレート

+

ファイル生成

+

eRuby

+

ERB

+

amrita

+

amritaの繰り返し

+

amritaの入手とインストール

+

amritaのライバルたち

+

まとめ

+

Ruby開発日記 — ◆プロトタイプな世界

+

第39章 探訪Ruby: DBM

+

DBM

+

RubyのDBMインターフェイス

+

DBMの制限の回避

+

Berkley DB

+

QDBM

+

QDBMのRubyインターフェイス

+

まとめ

+

Ruby開発日記 — ◆メールリーダーの新アプローチ

+

第40章 探訪Ruby: tDiary

+

tDiary

+

tDiaryのインストール

+

BlogKit

+

ツッコミメール

+

tdiary-mode.el

+

http.el

+

トラックバック

+

まとめ

+

Ruby開発日記 — ◆挑戦! 言語塾

+

第41章 探訪Ruby: Webアプリケーションの基礎

+

Webアプリケーションプログラミング

+

WWW

+

HTML

+

URL

+

HTTP

+

CGI

+

CGIプログラム

+

CGIの欠点

+

mod_ruby

+

FastCGI

+

まとめ

+

おまけ — RubyConf 2004

+

Ruby開発日記 — Lightweight Language Weekend

+

第42章 探訪Ruby: Webアプリケーションの基礎(その2)

+

FormとGETとPUT

+

ステートレスなHTTP

+

セッションの作り方

+

CGIプログラミング

+

Webアプリケーションフレームワーク

+

まとめ

+

Ruby開発日記 — 汝は人狼なりや?

+

第43章 探訪Ruby: Webアプリケーションフレームワーク

+

Webアプリケーションフレームワーク

+

フレームワークの機能

+

CGIKit

+

CGIKitのインストール

+

CGIKitによるWebアプリケーション

+

CGIKitのコンポーネント

+

CGIKitの評価

+

まとめ

+

Ruby開発日記 — (行ってないのに)Ruby Conference 2004レポート

+

第44章 探訪Ruby: マークアップ・マークダウン

+

私の嫌いなもの

+

RD

+

RDの文法

+

RDtool

+

Rabbit

+

Textile

+

Markdown

+

RedClothとBlueCloth

+

まとめ

+

Ruby開発日記 — 名前重要

+

第45章 探訪Ruby: ダイコン

+

Dependency Injection

+

ハリウッド原則

+

Constructor Injection

+

Setter Injection

+

Block Injection

+

DIコンテナライブラリ

+

まとめ

+

Ruby開発日記 — 文字コードの憂鬱ゆううつ

+

第46章 探訪Ruby: 最終回・ネタのタネ

+

連載のまとめ

+

Ruby情報の集め方

+

RAA(Ruby Application Archive)

+

RubyForge

+

メーリングリスト

+

Blog/日記

+

Web Magazine

+

IRC

+

各種イベント

+

おわりに

+

Ruby開発日記 — 型についての一考察

+

第47章 まつもと ゆきひろのハッカーズライフ: ハッカーとの遭遇

+

ハッカーとは

+

良いハッカー・悪いハッカー

+

あなたはハッカーか

+

ハッカー三大美徳

+

第48章 まつもと ゆきひろのハッカーズライフ: キーボードへのこだわり

+

キーボードとくら

+

十人十色

+

日本語入力の配列は「きゅうり改」

+

第49章 まつもと ゆきひろのハッカーズライフ: ハッカーと仕事

+

論文や卒業がネック

+

本業と副業が逆転

+

次の一手

+

Win-Winの関係

+

第50章 まつもと ゆきひろのハッカーズライフ: Emacs 対 vi

+

論争のタネ

+

TECOから進化したEmacs

+

edから進化したvi

+

ニュージャージー対マサチューセッツ

+

NASAの乱入

+

第51章 オープンソース開発って何だろう

+

「オープンソース」の定義

+

オープンソースでできること

+

オープンソース関係者の気持ち

+

まとめ

+

第52章 まつもと ゆきひろのハッカーズライフ: ハッカー環境問題

+

環境を改変していく能力

+

世の中にあふれかえるコンピュータ

+

プログラムによるカスタマイズ

+

ハッカーはオールドタイプ?

+

第53章 まつもと ゆきひろのハッカーズライフ: 言語の重要性

+

言語へのこだわり

+

思考表現の手段としての言語

+

プログラムを書く手段としての言語

+

プログラムを読む手段としての言語

+

プログラム実行系としての言語

+

第54章 まつもと ゆきひろのハッカーズライフ: 言語の重要性 その2

+

本当のハッカーの定義

+

キーワードはINSANE

+

自分言語を作るのは難しくない!?

+

一段高いプログラマーへの道

+

まつもと ゆきひろのOSCONレポート

+

第55章 まつもと ゆきひろのハッカーズライフ: ハッカーとオープンソース

+

オープンソース貢献者賞

+

フリーソフトウェア好きのハッカーたち

+

フリーソフトウェアの起源

+

フリーソフトウェアからオープンソースへ

+

第56章 まつもと ゆきひろのハッカーズライフ: 測定狂時代

+

測定狂

+

スピード狂

+

無駄な努力

+

無駄でない努力

+

プロファイラ

+

ハッカー養成塾!

+

第57章 まつもと ゆきひろのハッカーズライフ: ソースを読もう

+

ハッカー能力を向上させる方法

+

ソースコード読解の秘訣

+

ソースコードの読み方テクニック

+

良いソースコード/悪いソースコード

+

誰かのために、自分のために

+

第58章 まつもと ゆきひろのハッカーズライフ: Let’s Talk Lisp

+

Lispは学ぶ道具? 使う道具?

+

Lispの歴史

+

Lispのすごさ

+

Lispの強さ

+

Lispの不幸

+

MatzLisp

+

第59章 まつもと ゆきひろのハッカーズライフ: スケーラビリティ

+

20年間大きな変化のないプログラミング言語

+

ハードウェア領域の目覚しい進歩

+

スケールによる劇的な変化

+

キーワードはスケーラビリティ

+

第60章 まつもと ゆきひろのハッカーズライフ: オープンソースライセンス

+

プロジェクトの障害

+

ライセンスの選び方

+

オープンソースライセンスの選び方

+

避けたいライセンストラブル

+

第61章 まつもと ゆきひろのハッカーズライフ: Get Thing Done

+

老化現象

+

スケジュール

+

ToDo管理

+

メモ

+

協調作業

+

いつでも最適化を

+

第62章 まつもと ゆきひろのハッカーズライフ: 若人への手紙

+

後輩からの手紙

+

昔の記憶

+

先輩からの返事

+

第63章 まつもと ゆきひろのハッカーズライフ: オープンソースのマーケティング

+

マーケティング表裏

+

オープンソースとマーケティング

+

オープンソースの成功

+

持続することの難しさ

+

持続への解決策

+

マーケティング手法

+

第64章 まつもと ゆきひろのハッカーズライフ: キャズム

+

市場における5セクション

+

キャズムの乗り越え方

+

オープンソースとキャズム

+

オープンソースキャズムの深さ

+

オープンソースキャズムの克服

+

第65章 まつもと ゆきひろのハッカーズライフ: 言語の壁

+

外国語教育

+

独自文化の維持

+

ハッカーにとっての英語の重要性

+

ハッカー流英語学習法

+

逆手に取る

+

第66章 まつもと ゆきひろのハッカーズライフ: スケーラビリティ

+

生産性の高さ

+

ゾーン

+

ゾーンの入り方

+

夢のお告げ

+

まとめ

+

第67章 まつもと ゆきひろのハッカーズライフ: 理系・文系

+

2種類の人間

+

理系的人格

+

プログラミングと理系・文系

+

プログラマーへの向き・不向き

+

文系的理系プログラマーの勧め

+

第68章 まつもと ゆきひろのハッカーズライフ: 美しいコード

+

ハッカーの好む美しさ

+

どのようなコードが美しいのか

+

明快なコード

+

単純なコード

+

すばらしいコード

+

まとめ

+

第69章 まつもと ゆきひろのハッカーズライフ: オープンソースよ、永遠に

+

オープンソースって?

+

定義

+

オープンソースの歴史

+

オープンソースの背景

+

終わりに

+

初出一覧

+

索引

+

奥付

+ +

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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch16/16-1.jpg b/docs/vol1/image/ch16/16-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f2ca50100f7de753b9054e5c93796f6dfb1c4eb GIT binary patch literal 86685 zcmeFadDJUOb{F`)_iA6ds;jE2_wLu#OLe#URc1=5?R8ak=e|iPWu|fyUOJVT%1mWS zxk{N5W-}f$V|*~!#&}_Ed|+%d_KZ2$U^WBx7!Dj8494uI4aZ}9Fwnqh8}JOCE9vd^ zs=D0n;VSdKyZFR3 zOsljE)9h;JCG=uI3gavP?&A1)`k3P4(gmbF|NZr!^S&>vs_Z&~Y|57$FJ1UAx#=2d zoD9KULXnG?Kh>F1+P+m1b|0 z2T!lOaHC;$UB6U!UP_Aq!G^;jg0_)%`x>OUR_-^I(_Gt>A3THH#G(DtEuyT7(#_Q) zuCqwD)hjQ&a4hK7=iD&Qy;V-OEs|3yo{RX2zxFp(2}Hz@`{e`j+{$=g%D+w~PFM$T zoH0P6b?|y+j>m7DdA+`G&azVd+XTIDeaqQC^AXiA({17Uko<%9Ye88tJD}tnvE1E2 z%nrzSU#KWawq;c~Ra)F1@Qws0UcO&_vOD*KX@6r9ebNUj!CPiO8gUZ-r|`Pml8>JckB`R$Yx1&i|F#I}(T}Ov4 zba)*_Uq)V&_Kt>~-lbl&+~13Wc8@4nXMO|VcA|T-Q-u!|xHtR#Dse~3`(dQTEKQSF z&l8Ann;)*WdoOjbest`(KscBPKX$Is3GGInd*Ei_cD>j*QBvMR-y_lQChxg3Z+6)6 zedZLUe`NnxUbxBsce2gx-Ur$p$M5wz@~ZIFcDHw`*Bw!}YxUYpp&tcd^(r=O-_CU- z?v1kDU|4a=aJTc_hRh<uxp60k2NDp zucOwdM9Whm-CkGc=ipRx-A%%|d8|)(s+2y*Zahczts3g~%|!7TWX@sR`7wBEK3T(a ze0naApp@WkjO6r;9&18z-a1J<2%eifJe3?Tc%yQTLF8QW!Zbn`5|P9)6A^oyv2q|l z(#J<)>?W$F9N*K&_rZ9MsoDwf&Pe;7L;!-Hnh)6)9kT0!fZ*^-AaUbNpqcJu76ck+ zbQYX}dK9Ld0HJpa+Y)1ek#`G=3>O<{H>W0U8#wO9huNHZJ2>{dykffY%C5!{-rRhD zSAoNiE|&0 zgx6>0KBl_`xadJrdWAt89p42?Mr-J(3fCdu%DD@a(vH114dJUQhw8WPH^*DMed_sBvNuY50=#dA+gaaK=;q+KvxeK#*rn}eGPB#G znXnyeBr`YXp=UOzz@9p8wP-gx&k_Q+Lxy%+4@Me!&|{CfS?d3ka<2Y{H$#%Yn z(bMk6j-_UcHXb-89-IKb2>0Jz^V1XAKGyKYi&-|s36>pfVRTMUfG{P~eV7GEatt%M z>~2mR!k%X0b0%_388!i&ND!>M?6$GQwr&qgnCWkQ?(CEsk<#=O*vQ#@e~wZxQ5QHF zb2s+Qj5o%mPEY|cB}j$f6v8K{@p+_3z~}@m5OPiQkF&a}kP^WRU=k+h1d9`PO{N5g z5^g|t2)-r)h2jXIBw~Ux2r(r#H5C(5OcVjNKi6>N5<7w>iLp)WYg!>>ooLr|KumO^ zSHomCwTV^@3zg!Mw8G2?H75C*NeHbZ#{q*AGn`Zvc1#!oc>**QHXuxwTm&peSTz~c z+=!S9(GABM?eO(j}u2szGvN##Pi7Db&n5 z&{A?_GYv7DodC%R16?p{kqXN4gkF%dl+_f&CQX<1YLg@9Hk$<|M!GtSDON%*ZH^3V zlZ;$Wu7Ng5%sIilPo_0@0^BIhjx3=cmBotO={#Axb8=tuQ^lK-ZHD&8TA`9bWI2^G(wfM(RH;iHqBu}>IXVFfLD{7+X5=Vag6amNlGq7U ziy5_)TBE6StkjK5^ZIxd>^Jn77`K(ffmTpi3^0N=QrRQg6WWR8y6*TVKzbQWm>S>G zaXgt5U4+icNfq=pdW%mfWsuM)Gqr+YkM7#jvPPzKt5ztLSToF6u~o9gh^4YsX^WZa z>Isl(;GaHF7bvU zhRTLzV%-U~bCX#K)eqsUW>vwENyB6H6Gh)+)Df=N&a=xF~gWHS2I0?lfvq za*eW>G}Vg3(?uEX9G(zdDQq;JFWs~`j8B04RQLE0<9Unl)@q05{n}^4F2S!;KOuW9 zej6{DX3*l>@iHM>2;WKrRwGG)tAjN~Gs2Vzd5RSTOAk+gsm4!)Wf_Tk(GXH0D)u8! zsMFPilGj34S=G_B7Rf<8)6{_|m2o@LMR67+4rN-R>n6j!y%AwP5BE;z1SoEU4M%yR z*hx3}e(6dCnojp&BS}JvQ86dYg3Q^kJ;@_-B1$o79pvkMF_mhekfSP-x@duFH9Ml? z@&veu_R&aoE1JT{k!4r;z7vi@dpo0g)TnT`{b&%6uyhw|2tPvbTAq>RSW@ctfzif# z+5{`EH(m;RX(gT|hjCW!F?uYIQTwnwOz<(npwdB2WD!T(v_6w{6bla)B`?voe3u-IvP*LLHATca+XjNYtY@%o9<*~_dGh^Pqu^pXjT=IUfS=` z^=8WHgN#0`rkXIcXYFw66D@)62Gg8q;q)M!wizT{A<+p?p=4stP-|u4k&@2liqnw& zSg4haNLBi%qZ~4NsZR-&kQo)#Bz4>cJ~j+>p0S;bT4+eh%^wA}u!ThbE zk*dj_$m_{Ua}sgDq#bR8NzHMXVDe}k@1hx%joo-@ z$P;sjd5qB&ty2wgHrSawX791sG0kMYWm6vhI9XC)CTc7aW0zR8;fBejN1JcM&D8W~^H!2h+mY!^noMc09cRg&0W~gPIyQ(Sdg?}r_lyJ>4mVk1j1|;>OPy}_9Wa$9EQ97u-g(yA8Fb)}?ZTDTaF*Q01Iifd)P+&hj~7;98o6y4h0 z2y1uP#o~=8`HI-vZkqNo>LR_ATL*24Ju`N?a3V36%(Qk^UOruCtP?jq9nYNgn#-M0 zwrg(|`7+2^DQ%>2SYja8B194ebJK7viL21AK-LzZ(R@ z{pfHWdXsY9-LFH_EnR2I!)%O@|{AMQ5|7 zQblaMGiH^gVu@w8WzRh|8Eet@TwbMZ^DrNHS-ZX4Edse_J3`?xa@*{L2S2R_S*M2t z@|GIn`Yb$5#2H@gR(5MzboptFOiZR5bk--pWD9b0Z(2Gt~>1(;!7=ZgXhy2 zZ@J5!ffSooXE`8|y^Uy_;da*@A=Lp{ED;20;l~|jyl9IF!OhNc_YzqUf^wFz$v^>l zS7*pTXUQPuNW~VZIslO^7|}#3QFSUE1!kJ4kN*{#z^4o`n9$^S#*)g6Y3c>nlrG;4 zmZv5k1E>Era}?!dnm}zR!RA6;W!3cj?q-@V^7n4QI}#%UQ1d7Os4rk!P%|n)2r8kB zRbq)S#CaRegGLGj`8#+13VQ-1YJr2z3r`U-G!GISh4Fh6D+C3t1(LV|rKBTBML_`| zv?~vL+?Bv&iNUQZUsS1$08L5^H2oRKvLTVh9!I7OHkqMw z>!=_wvBtBKp*e4dFxaaS)M`7sqhj91!~OG`lJ%E7)>?KZOlUiNB&?+f-vgt!sJN>c zN#@(@dA`_)ZGY31R+(h3vtE?t`L-;a-Yz}T7n(27q@pvYCIg!=6mZ4jNZ^p6N$MzK zFs!c1p%BcQV9xB*1z)pcUd1(;Vhu5Jcg#VgRXPYAP2Zc54HF63nV$7FvM(}0 z(c{Iem1}A{Er(Lm5xwp12x9@PU(AM#hSaoh zj5yVB2{8ShDok5GyNillzTGXB{YaF1%YIt5S|=PBIz!Xfc46;k8ibe{n;7Xbik$yEHQps$In@>cH|hD4tgf zZ8z;YoVqyG&=!oLa8M9E<&g45akoPnu~-9L$E_u& zjaG|+s0d3#Y8#~?&XQiEnqAm$=Y4jiZFZ*`M)|yMFV~8+G|*g)OpynI+kAy`QgLt` z1gS|gnjx{ez=2p<0UZGSGHt16YOZ%c-!nDMvnX;Tx^p7>UD*(Vy*t~@P5^#5li<7+L#0)0>SNBQHtvJbi5?#@lV8oMV%25UqArf>zkd zS2Vx0(|}o-GSRdr?OqiXlY$xC3TWL49kVl*WW^Y}^YxU=cz4sq^I$j{?0VUJ-S!=-zwuF}Q381pPH0wZ z&TKQCN{u}rcl)ew!?;|5EwXdy2o5)>?0LOmi*Xxe_bbU5F&440ksT4`H9jQ9hC0SJ z1zB1ZUT8f~L`x??i#eEsux;~rV)~QaETu>s>*whNLutLgROjA!$h9^@v)wBELKYV# zOVU)Hi;2+cATnt2iz>=DiC-=A5*ihU~V(H?dP4&CIeHc)IQn>BinQaoD zj|;=ysmP3%Ry3#^76%aY?xv;NsFBEhC_1) zyvZn{$oEd2QdK>7!|Yk#X%(o2ty8JRhf!`1Dh(#bq(N$eT`XaEEm+IF9mn4ywGnz z!rv+>&bw$Lwud3SE(RU3i+kiCZ6yM_l-ldAOBsbKNZ#1+ou$?9BT1GZxV-BfCrM-p z)8A+|LQXX##$0FU8s2aT-9No2T}>a;)r%!|Tm)M%xwg!;g%HARC}Mg$$qDe74ymbQ zx}c2|u=T6di} z@Zs$w1L9QL?IZ{xLXsAJUiDgAn45PU$hb%MK#SYy2E-8x(%nn~0sthb>Dx(a`mQAB zCIiR`>J}*n#EIlJbsMUt?@j`F?xr^60aBg-ffl!*p!B=b-RQkH+i@qrH`9APvZW^n z7i1Vpz>>sQ=$S|n2R5{NuA%bX8Vcrt%T9pHL5+40X0&9jq$OD(sj#o}RhV8m?0_n| zoD=a@WFny^p>9rz`_$k*F>Ct|%@}{%IN_Pv^(5!bXZM6)n% z+E#14oQTG3mb-?wrh0L(+S(|AcXTE6s$M`DqN47wu8QYtW7AEx3k##!g^8SHY)uw6 zK|I?qwIUi(!5~b(83_%tKCUd5RiRkN@38HGqfT9IH%47sP_;h0m4diWZQCs==Wa3E zsmb?ayCH*!K;$E-`}24$F%2T;V74C~r^t{R?6`K)b=i@g$DmhljBeJ7hBKslW}7b3 zQWr~z?(|036lM;)3qvqAJHxTzofAULn@V#6{BnUEaZZ3=j+))9)Cur6+svC_N1PMj zZ-!=ff*o;AfM03{+zWQZIRSnty?H;dBhCrXm?JH{%Dj4suNWnazu`QpSQ(>Zl9(-5J9P4M((L8K=o4LU?zAG=1Fx(gz zC~UpdG>ruO5`=+|F*X|+EIaI-mAZ|=cBbovzHm6LyWVaYMv_ITOA(~OYO|`%N!ctz zHig-b{7$vmvaND*Q1>*tVk}b{4ZBmGL&QXx5zTo`(KJ;zrcoZr+5mNii;Apwrctct zHZw!*4z)o$PMD)+7sm=68SSE6oh{e1ZWgag+?#ld^~6+~j*J@WS+hh_s_hdvXGOJF zO9(qm!Y0qse2rS0m6d6MW^nUe-pSRJ=&D5+cZH0|yPB}=^Fd1Bo6XCs6>X=(7Q-)!PGiWPFlhH+LC(aHt9xLuZbD@;&Gu!`o*PR% zn6?vsmVuyu9(q~d*tN_6h7M66GZ49s5g@yyFgFqsa+)Z8Y=N92Kv}^Y=chX&Ze{_D zn`8M+1971Kn836jnP_WWXMSf8h;rE(c7=&z;Wx}55ki@yU4qC2n=jw4EVBoEz8d;7 zl=YRiqm83I=VtXHUX3%HtGH~NwL(KJmt(H#Ofd?UqjH?r>%k2(oXcaddNNKhs?D7^ znMztV!rIh;HxzWY-W^7yZEZ7f86ANF!>mTW$T4}u(O722?ta1z#Tq58pt5-5tf~SU zi6$~09h`+WKh6(n(k$w9&hk`J$92cmq#zq{pvN9zu&&NmU0`j)Q>$Wcw#LfXIP_d0 zOx2zmo(+YuSrFTTD>mM2RyW2NOfzeArswNwjY}&osc3OAas-rFNyP;1Itokg z!EjDTAh=KGT0HPN-N;s2MK(-9pNpA>y^#`aV%7b#9^08EO=f|=cS}koXE4CG71Coj zw(5#TE8R~SzT1SoF|RDy?WS+|J7?3t=6dS;b2T@>0H$?XnL46}=K8Fv%Cph-Aoi+d z)G-vZNA1FXUaYsf@v^7bO?#M+6ba@4bLFk=#%Qs7)JO9E5_&pu;w2sB(_kxF!D?LX z&f5yAn?%z>ZAAf}hhUSIDPIOx1VceUw8ZR20oA119c>4mK$J7Vq|=(Pmz175C5a?3 z70%EWvgJ#>@y-+Megh_^6=U0sIc}s5lN-zBmMQSq^9F_*qwRRYjq~QHy|((=w$$PU zC`qO?YY4q=nv&wSV2DZS&3XhcH-^!g^PrY2+SO?+_vamVo>a5NtO*9%KvTAZ-amRRbLn1bk< zf~>Qg3M)Ylrr`t}AX@>{ZsNDgjOzmTZ##T{mKS_P17YNWF0r0q`aCY2Y8c9bqwoRI z;LK<+={RX?)o!$%-$J(6gYr#B&Z&oZumGQjWp`^M?#36KKCs*hpG`^k1yfV}TSy`BR0L`7srJ*D% zUtaXYRJT{-4R*FkO(r8dVDzdT7dxPh-LvyD7}V-i9E&M%L%f}jOv&#~Nq#QcIGfHo zNt|TNu5W-ktsM4*MUTQHrd9E0Gn~NlcC!cdQr2%(Ru6VWT+x~rmeyrWyy|w;jW=;6 zKUegKX+#6`tpg`2^v)1=9y6-OsLn2QIRay==^1dLEpkj0R%&Qybt~wvV9=`*i9c@o zKua-D3r8CfXg79MEuPlqMAm(EBjOb@QV5h3IlR%*rrp|X!?RZv+f15Rlh}4e+d`Kmh6x=qa4@s-!>PsU^vLZkdi^%4dyP0Q=|jOAOqUc%c7|^gv)yTd zic|&$Ijuwy-)sY|hgc-t1c_Y@-=Ja!eZoN(F*7R@H+ZcDGg?yR!!Th?iY|3Zs_? zL+7Zdd-KthbW0eNYfj`hG*!AgE@aPuky&Ou-v$u@bd+hklhmbML=7|r4Y%50h1j@g z%%{;JI<#`?uo!C7s3pJ(z!s?=I2+m93-g^7Bt!0OTxjHN8LU?GL~lwZ(`E2l8>HUB zFbK09w@ew9V6K;#xZn2YNS^NxAjyI(3Jw;aZ|dl5l1gZ61!`t&cJ}V;WL`PYc@SO7 zzBr;lU>fk^VwiiF?(Sw?a$-1q0%GiPnayECwrJPUX5)K_wPK8s#C2(mstBKo>A0hu zIt8XkHQEljO;x}E$1--?krW|Yb*m-@F-aHcah^A^U6>JU7omUB%`An2qj5AbEzFFJ zbk3|TTs4ccj2#H(&RRA+s3A7k$Q)@{HP04)JK4=gUQ2Fh0yfU#tQXK)G?7$n(8Cxu!Xws2eX9;9<9z*oZ7852@3f_p0{I!0r$53fH&2N6K=;5AFrsiJ=dH7JXOpFNn7~X zJMcaIAf0-d(M9=K_)8sMdm2{dgFBL$ZGj2HRynnLOJgwQf6=DnG+T7b$Z%FSLqYKA7-n^5?s zLa78qFfbWeqLH*XBM7yuFCBn+B|9_Z5xOu6(DnJ9^H|ocZ2_tobF&_mbKi~jP*o5! zsI-TYZ59>|eL7ku9b-7+(x`<=;3DTS9HD6kI-DiuYJ6BvlRdWweec=-5S@UXU|g;B zZ3gZX;`q4jwD(CY@$tms5@))lcPPHf^JrlnK!1byozZ%R%|%}7=kfR4ktisybnp0Q9EGGiuQ|8%d1(ya-FuX$i69M3$i=M z#F3A~Cf(U)dNKsfl7a72ID)umxLNEZm@AnC*&dwzu|q1KRt1Gb8aHw9p)F~1Q8}cY zAwHj$pvzR2p&81G)CapVcoeP2MqI{&TF&e4VBT&`BefZ?NPWEB2WQnizi^Mzy}m*7 z!KTE5^)?H7`z?|;vnl7u`l>JG4jd&2?SS4oAO$Sc(ZEbPB%d>T&7x;heqzlxE7;zh zMG<2bFGGWX>8ag@LzFPwvTZsW3E{RqOGLtm)d(Es^j$uwSOPD5OX@(b_QOyiK_rNK z%@BG99D`dUia%?X`g2oQ@maZ=mXh9$#)XAQAdYOtwwr<_VC|=7MOx()%m~>b0!OW; zF-D_}mTWL?GIY9ImNHQ+U#N5GtdKlV^LT+-t86E1vVj3Qi3MaKBn&t?7bRn*N7IP6 zr?n&%@?JI<=-$k=WktJKPpS^B4b9p8XojMs&uRmkFkT7gaWau4`y^`8=PCj*?K&u#nFDvk5Y2DTJClVo_7}DXhBp$Gj$q2PZyFN3J;#Lcp`$U&T! z7v>OGnEj!RdzscyWkcnrD6|C3j)!zP8A?=W%)-9Y-bB*=Y+oJ;aYR~1Lei34(>iSV z@?40dTp)6ZV0Ad0z$=8EcV43%=V0kuP83l3?ovI9eY|y+U`=05QE%DdnKELdaMHpD zu!S-_2JIXcj>z-5nKqq$8g%zMILwangD3P{U$pf;%FldQR?1>=Ahy|Te_rSljKd<+ zD|}8?51AesaQdobg{hfMD>KiF`KSOtn4L;Vtz3^+ZdrF_bF7cG6>dzqT}gM^hE?(T zd@G!#FIFn3T|ScOeGB%!G>0!j3%8RczGTp%g@JOM>tdk99!^#}5%uQX$v7T^7A+)J zK?!?rd^U83(Ht+ZD+~zOJ#d7QG2_VmBUPnqTMWP1W^rVxOW(U z@;zy-J$)w|yTWObm2Q^xiqbSvbDHty#MrC@rxWE~Wx;g1UpXsTHKu`R1ObS%Yl_eq z2Kbn?+!06bka*RFO}KB!|qFFgKWd($N-X=R7$u;3pE20=-RRAW4ldL$h_z zcFtDPXRUB37FI7=Y`TpIS|?bprWuGK`$mBcWsGECR)iQrR_!)urp^MVG;6J;su%J+ zn{sK>2&L<^%hZ6AHN;Tff}jiz^9YV}Yp`AoV1o&6aCx)>T}LL9n4V2}nw~4!q&JzJ zhu#34=XpF{2D&~Pcc%8x-;G!uMfd0~<)lN##R{D)wPc=`eVAE|6f2ZL&L<_Ug)m31 zWw024`b%#N?1q+DI~dck+_ifFR#xjlOtts3!VTO2T}}3WqA;?BD{YV{u&go+8uVB@ zeU7s+8=32N z6|It;xvfF{XKZ(}pEa#gSnwDZ;?+QLr5+QH&kD&oDe9Sm>F6}XV1py>#+@~&cNw(R zwgs{o&9qf~kR}^SM8a;I&)P&W1DXFYz&go+Uz7{E@G{J6YjEJ~RKu7Wv*2E@P#q}` zHtrG#Xtmb;T}z#UQqnaR$jrkKVbkG{HrG2Js%5qX>#isuTj+U^xX&6+wBs%J;;=cY zrqSNe9nE3^D@qCDkPfWGp14CqD7O|ugX+ZxEVbWFDw3(Uwp8ogfi)E4QL%5ejiFZPIEwcNd9Jgt z0xa=9hljvJ$u5L*R$gkKPa(13JdD8^9i>mC%W|0aQGAlGw_(SE?V+q=<_wu}+Z2Re zVYNcnjvPr1NLR~9$9Q{~+xfoF(xA_1r{-C5a7)w@_XRfz2yj=Lt2ox%)77kLv|to* z6emn*dEBlYNg9uPu)U-vpxG-G9PG7L2QC+AJ7CZqNk~!EXALJaruXqCGCRytSbsj1qNmnC`&3zRW3*_fzMm6mS7+%?VHid^ zWUH(=b&6dVUT4%Ewu+n4~L%{HgBNbImWy0Epu#BedWms%s4`%n4*}xml70Y#3O*RQ)LuBwR zQRmW`ZDLTdOnW4PgN35SBGu6raeM;t?DWI}4~@qzSl9{1=z&6^IP&ogGkeZqGuZJu zo3kbU)XO&qsSDzF%l1b|M1TNh!<`F9%RHPEyCs9DQkqdrz!clcZ!!%OjjV(%9F{mP zKza#M`Ux;S#L2of?{XPvy3EXOJERgbPDrF?BuUg{17|OhIf(PcqMd*}?a&B^2~ms< zQY2_9oVrV{(*ac#I3J%?_f%?1vW-!p0_z-=OAZyNFnmaA9)&8W zLWicH52P@v2rUabdKIt)Z_c+p{=_gIW*E+F(L@9BeY4Ux!Awg)B?z5lcq~dE#Cg-yooz-9BOKeFXhuW8Wed3rSNm0k?4sPNPL|kWZO4%ILTb_K87aV3plD zob}kF;S$U>Lw)9U*{QthtwyyDE+`bMDw)_D7zJ$2!m^KoM+wErnu59roUcel%mH2B z3|y@a;$RwK64siYjSD)-^0^#}SqY-Ml^|#$u=*g?SN@ocN{I+9UrLCCm}IHa%l8;& zA{+mpTP`t1RWI&zmpiJjayt$ru~U<$(X#CKhxHbuV5~4k2V>M~mmMmbcc^Ay+T@y6 z%MAU3H%7pT{ZBOn74oo^?4~3&B*1OEaZ8p; zd|AST-e84-2DmCDP6ib%oU4`+5%i4FW{H!+v}qYIYURzc>A>XM(8c!b_f>?oF;y^Y zhp)<|6G~urdVT*Ix?`+Jce~oVH7xDsDvnn&rObw5QVe7JtV|15T?{Z5KzLL?8riI>>!Vpv&qaz)EpoFFL^78Uez%3{>5&wrfhg!YFC;7Fyc-qmcmuvs z`ryu0etBNytf2xfiFNQ$qphfj;OsFmPnB6o_S7C)AXA8|_NO>gX35p0n}P4?6r5EHYm7Q!Hi}60 zyzv3c)=J>THI>WVNd}4qkN_9-80}`X*G4m39H~rqx$Q~=IG5SlcNlaE<0#){)~1CB zAf$mu5-2$PXmPmV+QD~E7MwNGEgHkYc5byj)YT094mQYYdGx4{krnt3h+rOu+UH$+ zl+6q))HhopnzoKUwIT11Q<9^5jA;4Chjfj%-CPFdSJ}DQQu>; zUbjWC>pubdn_|R3X`A>)5AVP!f7rUSX+5Kh?Diw%$ON)4f!=U{bb#_VX#;l9Wq%Oe zu$r+lasWoT6Xw`b%Bhoj8}(p56ZVKPuM#D91~ih$AZMUErIKKkRK01k#Yw4e##9`a zXHg_pw_ri>riQ)hq<+eRlHTzxkEy7p0wHI*W{oPxs6kEctV+UL;7lFqXm1b4Vg$p` zT`f^QnPz3fpm+CTH|ud?1z-6dr&o)O>ws zyt};gPJp+kz&k@JZ$U?`!X8*6iKEA(SmJp(*dlObf3|Dc&RHOU#p+I1y%XU5Jonyg zTux#g!O_q8ByxBwd)b19& zPemVjE077SP;pSo3Efezvx>D&WW>G!=kpXQBxP6yPk=D{Zaf<4ZRHBtPgV#a!2&Uy z^mqhw7vO#3@h8vhtfL^UVg(-Vs}wmpo}ZF{NrY=7U0y|wF6F%wpohX*A>D*KdW@s} z6o%bv;A$EUyu+MHL8&*BAx2XHR~$$;=C%T+F<;&E= z$DTL=evuvqt+`n_vYf)n8Ftz3@287>8jYk-w3{{Dh}Hu$3xW*eS8m^~cD_38-pkc~ zBNzA`FWI~Am2}5z{Kn(!!lta8jq3~as}S*06nWQiaBc%<^WHUZaqC~h(H?efI9Phu z+<`Ofb%r2Sb^TKn@6LX^mN%g3)ZHGhuDk*5{RW}$$o?AWNfE&nqE2#0n(Y?wyL1~J z4BPmyL$Wl9VM7cj2Hhb_cd#xxpawUqeV_cVDMR%)UUa;;lS-Vjd^Ic56fWrVmNzl( zdHag_bUbrtFO~HXPA55 z--fu^d3SWq9oID8U|c>b;VRJm9WRdLJKoQz`T5L;hg1VYSi^3`PSF!F(#~Xz2N_8XmnFx2>t$mu5&#`cGH{2SI+`2aWHS_hY z`Si;fxZSKTC+a;|zg5UR1bO4f-y+u=)90SIzeTQl2=c~{zeTP$rq4ZZe~VoA5af*? ze~VmiOrLw+z7e?|yZyr>uxotfg&KZVrz9=gCTE*!Va#u__2{{D%;P*+PxbPV7A{K`LupG1Mr zKfK0IuU@?!|E5B3b+e*^-&C1G>W&9L90K95gK$z;*)jg}5Pl9E8zFr8fn&IU3PSiD z$8c~CAAgMHxy3pB>0{ViZ#+nItaIkAy<_;tApAe?wmyWfj3E5=yU4F0{Er~~p=7&` zApBn-{M_1i%8QE!o;b!=z8gXqh42%_Or;?F^2Nm?PXu>_7k7lgLjdY|aY3co9&`d> zb@ij}$F9P!rVOsay{U;`RoABQYcNjX!Ed#!GiS5ExHz}@nCs%1BWUZ}{?7sy7ZC`}UmTKP#s`yY&3uyB&8s@9ntsvlkbGF92=+;O)4@cU)Zj@c(pi z@s59XJMKe&^5WvDue-STp`W^=JZS=?W^}cLALH?_Ub~lxzvPT}RO^mGxmy z=1bps=}%qyo=gA7rN4CPZ(RC2m;S+}e|qWXF8$J_|8(iUUA}VpiObJje(&XvTt+Sr zE)$of%d^X0c{#Y8Up`#^y32py^0#09?Bzdq`G+q5jmv-c^3PoU+~t3J`3qMrt~`F_ z`70l|a_!3C3Uy_2WqxIOrMU7tuYALmZ@co@E8lub{I&=G%!7a7!5@F{XCD0d2Y=fx_{_&Xl{a}WRZhkyFvpMUtj zJo5M>?|-EI2>ZzVkcdYFPkq%> zho`>nsXzbJPd)X^Pe1zfN1mphcAoy7Pk-0bf9dI;efkS;efF)`TPJT_zx5m6`n_-c zJ8%8PXC8j$BhN6;c+Y&@Gk^M-zxB+&dG^Y)AAFX2)_wN(KKtFz{`j*$|J*~*z4)B) z-0HdC|J?uf+)qCD`L{juHvDbI+nTq1*W3Q;+dlXFmFGY5yzqST{5L)SgU|ot=l|Q= z-}`pr?f%>Um$!fa+kg7)zxs}MzvI*I@Za$b@A!dt{LDN4+dHqmlX++S&Oh|dAAaY* zeAff-`uMw)ch&Fux z+pZEz#_H!>i|I+BCuYKu^3~6M>I0v0KK0p8 z{p(ME@YCL>|IDXsg-y!~(^n|2I-zoj;(Z@%{=tstv z$Kv=~#{WY8u)L9fcycijCf_pom(v%g`SdR<4=GdSyOjS+#ni7+e?og!`)cibwO^T$ zvu~RHbN!?GR{xvEQ^r>q-(&o$Nt@qne$GOy-(me-`(1Wq|Hb*kb7THz=3n@2%y0X{ zzwPJ0qWcwJ{}uoED_{J|<}3fsSH0`2lCS!!U;WfqJ74|hKl9*c%+Gx9XZ{~&;(XTm z!a`X5(Z%Oo%Kanmzx6)teXI9N{ww}B`@gV!W%~kH^9CRJ(9LZ6gsR5_E zPX10yP;qE7^we3+xypsq#oA@S^`2|6>-rn1H#u&YZpLoy?#%Aq?n@pZkIc7dZ;jrz zd$M@?d9Hd%d*yrMd4s(NeIEKm`+W6P_igZ__w({w@t5{53Lpxw510xR2}}>d46+Cs z3Vsxv7lO~cMCzqwrr39y(q`poa zO_NM3O{Y%}P5+)@kujYqomu;V{X<+9b`~^iEn6+SCkL2QkV}&rntPdNowu0(GQYDx zu%Mujt}wC)y~wF(vskBixa4U`T`5;-W*KE!XgQ$VseG%#pklI8uCl!fSXElhR-ICF zvnHe#t=6@6A7&0)tkbL;sh6#9ZxCsyfpf$28krlDn<$zhoAH|cny*{lw0vu|ZQX7& zYg=j8Z%1}$bc}Z@cMf&Qb@g^jb$9fDdRltLdK*6qf2{8V_QCoE`fCUH2WkfS2Wy4| zhH5_veyST58g3X79cdnw7;PJSI@Ue@e7t``VPa(R)#UV)&eY=c>*wqMS-19nJvQg-j|R_{sf4eV>|uO8SRTpxxV-8#zq%J;SXo6@)WW61IO zNyzD~)BH2wSs^1&m3c_#$Nlelm27Hzg2RL01#lH3MR!M1xNsp2rWei z(Ssg`nGdj!N0{lInEUUb{stB*S9!`O7_oe*5fOC6VsVDv zV2Pxc6SC{WUL?#~dP&G`&<)(Wg=Q|%hI0*g8L}%SbWkgZ12|40beY%;6kySMDUeYz zXMa_630&3Ot@nI&m118Y&esu+=`r;L-d#E z|1t!yo^#F6_A8V;o(tdpmZLg1#b(JbI=Cp}CDCN3u8^8kRvj50;g&jGj$Uux3XGW8 z;(B~csQ${g+S`IKc>znS&xW^qn@$QC&Wt#_|BXoAT@7r>56BGe*`)rxE-AYxoEMw`2 zX3+xMUPa{$zQ|I^m)IbB_2hY)^+teE2g`swmpM6K?;X!=%F4>|M4su>tZTd8 zZ!iy=<*&L1#Q0jeeuJv*4|72?#XgSn17CYMYloL$WDhGrqox~_Rv1duR+MKpBfC|7 zWz&3;QfaGGTUT`y675eRGKTBo?lm2LSWU-9-`&2rP3k`MCLAy4OSwmL>xq{Q4I#|H zEzQ`vD5&)s06VQ4)fF19dh|_}zv*V(3bMRJJe5G{%Lx~H_+0O@CDaCesO~h~)wH{J zw5@Sy7=)M{TLjfbDn_f}bQQh|46KSE_A4W(250xqsnu+F!uD17OVq2PYvM}DfP{%! z@<82J86&zZAC5h`CLGR9Ptd~gD=%&;V{r6?nercuy93BhD)cr$P)%+{i{zM@CN4hC!QT>Jy`#i8cWuBE{ ztvrrBkY0{oo}&)qe9~ZyJN+i>+Z?H+Yrs2VLg3^BNge`m=MxGGFX5qSIM~^3g`g`{lIqC_K2PI*Zy=~OShev2YjB~XQJ3}6w)}F%A7`iEU zf-&I*->(55NaYe+ra$0*-PG#YQXq6Vvc5~hSy`ab+dcVs_Yt)=qls~Z+~D)FFrkuJ zM=uerZ==azBjV|vH9tDeZexb6d8tvUK$1SgjtZ@$#puZ(_O)uhkw&>PNJ-htR#8G) zciBkDSnB<#%85@rjor)B2-iVA(Yr#KBKgv0$xFRH&gxg9)1KZ=^2v%0H%K3nn4{ju zh7(kz8$FpD^@wpl;wha*9h3r=%(!oqypG}D*y*AHR~Q8AFo#_O5JKcCp`0%L3-~uO z`3P-rI-b&brCtL9kA9Y66YsyGtz3If*R-l7+d({l2A=fo43Wuu2wi7wH#(w#EZToO6^!APjSBnZ` z_eihLB$B3sf$o;{ZKC@Mdma7y_zyuMo2X?sY-Zb>U_@g(Pn-wB`o4em&&=7)oh{*G z_nL5py-l|}HWIjzT;s<_XEy^gB2sbR$-M!t^bT%ulH5jVQN2CcL*HraOX;^=+axDC zf@;|UoF9|yEV$XO!;WA2CY8Dqn}4a&7ic`t3t(*dymT-{uB&7y(TU~5Yx&pVe9VIe z{N0W2GC~d_5lB~QFCNSxTF6?D84olyZi=`fqR}KP%An1BBz1&0{2GAoqGXr6u5u+h zaoM@h@&ks708XI~R$;;K`Oiug`Si}YV5*<^?3tEN_AW%{jcn4DL`0{r0p6(6kcDPR zLN_asDb6pBP#`>byM;1UQhJ?_+1M3Ibep=LgDnZWbKtlT zKXq;FT&OdGtmS#5T3kD)f@R_uT^A#w^)Hl0g2vx6CZT zg_k=He@=Yqysm^^XNK+tBtwL#y$q`TmO60_MMQ(d^=m++U_$bVt@hv=_gIxS`rD81 zFNd@I<6egFvXjln^EXPM6G^yV13FOlJVP-tc|bSMq;?B+`m;c7L`_aNyYh!7(pKNF z1>pqbVC3n|w_Bb)C?Pvxm(VvGD}98*T+4->pT;u%qnm*ptQi(r&^lG7&;A`n*8m2~ zx63ycf&`A-g{X`P)a*N1U%%jzShAr9QdNPibmhl5&QWZlyaUBV4hD=w34X%)0n(Qp zq=^H*+3OegJuC)o(DJZc-Zv#7O*dmNf3y4#iv+hgFRdL>S^OlV$nORj%De{H2zq_i zTmU+_iB2#s>iUIM1l2?a`|{f#X}9eci^VDTlRpSfo~bgqrG4~FG0=#Jwn}>~O|OUD zEhTvjP66G+UR%k-QneW?RxqB{(`D*CG_qjJBe2y6ZP$($ga{v)(1nOVHD){6LxBDC zS|pSEG`8x&IOu%+>~VD(@Q3ChKJ3>3;;w7JGx|C2x`vuTi(|?Fq1z&jPqOaZr6##c zjQ(BFq;}Cic7=;p^f{^taim@EQEVC*;$o>9)DsPx&4+c5}3tA$g&fs_P@ z#JOe?q5{+p-YqT=aDz1n@$;csR%`k~m_ z=2!`C5WW!2MwL&hHvQ{8&Nv^qD=qyd^y_K5o_dSF~@a@`(s~;++ z#w`>?q&EnW*p@_)KFX!6!fDEhfNrb#O<6|B$yw0Jm6!|$s9SeQx0=Iu`yt~!KhUTh zzant@K_efNYJ%`ENO2aIL)XQ!4&Hc?oY>2Xk%brOp?;oxW=puLfEgFX&fU_yK< zeH*H+rEdSDi7SG85*MzGUE!!0Oe~lHe*%U~JQ}16{yj7{d!m?m^KTBtJywZy`Vk1A z+W+k4zXjJ{PX04$kl4AcUoqJ52!8qzR8S%Hw;*%pZ@&1HPVaBdDgU!xh5o{_jm z5fh&_xyA zq$5N<5g`G2ZtlgIBE9MB-3ScN3Tbdl)GDv$O*Loc zK04eltE-Cu(a!61@6qT=`IckZj}jUPz58S#ry}+IIO?lB+Qv$S7Q-imDZhj%V-whQ zngMMT^tk;4%IIMLda3lExOr_yMl_ZTzSuVV3{o-d12NpO@X z5|L=tYTBdolyb0Z^e&X0u?mGD@B7{mg?Q_)3`BoSL~Yej(h3g z;4tFV_V@P-Xd!f8Y;v<&Ib%!J58cuo>{lm&hKCvocw4ZBxw%GK-JV%b0h0h>IsWdJ zJx*F9Df3p!xZ1&IaG=t&>`!bTlU^=sOf@{bA@YnkFx;x(g`#v|IBEo+zKXZ|E-`Rt zd4DQcZUDGVboH60jh1y{*3A4}h&6tIRgIa1b>Ar^TnXM(NyRJ936-5qu4e}OR%8eT zGi~47Euxs6LL1pcPIX;yzy@t(2xiBYyVPq&Q}6r3lHN)U%5THBrkI3WizUd2bt6_@ z)Wh5!SaUxe<)z|XR$-BJ?evyf8PrAu?3938YvPhvc@(%AF3*v^g!p$sM6`6ZF5B1% z%K{nW;Kv)Ez%za(-7=fa1r$Y%u~JKiGr@VWQMDT)35J+_(OVK?<}S9{ghsR<^@jSv zO%5{r^Zf8fuCl2SiJYZ$$a6etp5kbmK)w+8hmLSr;+vIw(si|9>$Q3+&HcKlQ57gq zn6K0%0QF8gF<<%dDMI-C9xY#l3vI<+`VS!1^K6#yXVrX>gM>? zJM0sa%d-N$bVEhqpc3sD(-6IYRO{h|cdee zECqz9Fmv*7$k*0rSe6uY#rK`X52aa2?9R;|yZNjk{YiD=V05Amz}nibNZ?H4mC>gs zwKert0}___p+rC&bkPsKx;Cug$06U_g&3u+t7M*k^3&|16QU|8wTAGQBNMZEP!nVFcm%tbN=XL91`Lj_)heor$=z`w(=EQf_-1tG;2W zF4?y;d5DgJ(E1#YVQX`fsG(qZTcZ%IKZh&)IEKh(f0*B)B z$~S4{55Or?%dYjj7d6^A=MtuyF9J^=Ac;l1RC1Ewc53uF-IFg_;89ICLko1_ve?1U z{yA>^T&lQ_>9=^C`FCw@EvxGwYFfRX5#gASt4)q*wND$jg_QzVRP<;L3gjj4aOu{3 zsLo#m4d_udjam%4C7sOP(pr>33#bTCKhF=ZqoO^fSLf{>+0Lq<-Ef7sE$#1U-%!Xx z4t6*W?1Jri&W{N&stCwNY4e~7t79iTx;%<)^{_O4T?Ao1<(W_= zD4nH(?-LCDGmVG1NHFB9oZ771P17CC0UNG6%-px)_|D--H)GK$vKI_TBm*ZvA4&es zk`{Qaau1lkWxDy3>&)DclVEOH+fa8i#n#x&j`-+UWenvTv<8;U zMfihFSQR2OZIT@aToc;{gY8Nz3kd-N_LH^m+)QilpU-=P6xI!o|Y+P#8;aD)D5H+TW4TcWrZ65n;o z3TZxFuO{dUIZv>OkVLA_yn#*D;jP7rld?T~y_N zEKBUCUa3F6VV9KlWqOAjEy3T(-rU&Z4*gv*&wP|#c}`o7ER7E(HmYLZoWwu7P#lgK zR&;gL@4UPrhRNVor7|-wPP|wZD^jL%DQ))sUukuG5*c{3MGMMQe&C9PZEN=ZhQ|+k{i^Bj@c$0k6biDXD|{jKvR@$lLIt!A=a(3F zmuNG)=d73aSfmHzN11<8)*ZR=L2y0|G$v?tq3KHq=ak0u{a~jtbby2g~WpNYk=_&5PqxF zoe|aIZ@-9>_LE7tq9=NJk|G^wD7F6+-9Dr00uW07pgjt;Tr82E@jtB;MYK!lwhK!8 zJgB9cThEXG{+zV$^IVoregk$>;RksCnUg%pwKTK-%|ZVQgZ~$t_~qvRNhyDc{8Kdh z-JSlzpqzT10!f*o~<03~m6OJDo5vrUqsy!Rq(vR1@97tEqIQ=%!)!LA}qkkdo zzS6C#o4ZotnWAQW4Oo>wiMY&p>Z34bH`y}8fv^^yI_r`OV%-s>2VX3w{wAkt{@3BZ zVEKy<|6jSmT1%H_iYl1yu1NZY8*5~e$I9##xOd?BQfN3-IB)fY5qb?MRKIl%h-e9y z*ljuPgo~*ho=3txC+-4YKLu6&(ceprr&|X26+e4uQYjX^)pb7M^?2#KqV9Q^d*1VQ z^ux=!Yd~M}9{ss&Fd8WdDe3<^8%oro-asW(dr!Zdj$M7Z23W~eO-MYbJBMAqtowA~ zbYXD~aJmN6vdwIz$Ip5ouL?jNw{H`sS9m5^ruTlYsT`vlbrD_woqGfK?8lN;+6$DkaWH%cmOA{Q z>_F7I`rUcPPmkg83jtgO17tCgh7nxT`H!Xg#`Pjz+q!q zV^xaMxx&k|;6lCbO^D&pRdKY%<;1RD)YvS_UIwtNLpZXz)(3E37(c3)0E6 zUMEh%5nxS*-Ri^esI66b0^*ME?6F;%Wnq1mGPlB#>#l(?Wg<>UpXi?(>82H&dHhI%vE804Wh;v3WtSD)pHwfJ zS9TY^$r9ZnC9%2;z35QAlAefi{2sqL<>_!|;?MKp#KJ{E^T9%O{(IOjuaJED6!YnS zcavi-jlNj}4mKR#7F6hyGc3rEScQi>@GWBdm3D*sX+6k#YP5svqaeomSNf+x%aX^? zwdHd~cXiDi+V;stKI{PgVh1fb^ZJ?Uo<|B1Un#B4N_YKY2Hr}m<3aXI)7-j0ZhwUd z^U3=NyteW$>3v!gDY&ml%0N+2Pkt;r@X~jOWAWS?lLiUlKcR8j*}>i&b856;1@6(m zGr=GtQ2Q=&l?y`8jqtK1?@}J^kF5OujacL|?;0?9ud8#kXS+78 zH@mkTnX&Zp2JI(wys73-!Xkp7Y{Z&6j0;?Ro-hOW>L$b6L%hdwgcV%~>M`NI3?hA> z=S}-%P4*}Bj&=70siLT;o_?{o*KUa)Y%m}-7&@PDIwz2mC;L2nWav~gfGnED&|H*G zl>+r1vyt^?zmK$uv^3i}qhupWXt{uc5{n#pAl37?j9DAy2%b)zK~C!%Wg;wDT#J3s z8V9L*cNUv&Us3%E$2dhty?!0>d%@W93F#{g==BZ5k>RLU3hx;mTQ5U8)yY2&#@6>7 z$jm5r`=;-}y0hzi^(egqgXOX+#=rtY4swW@MAmE~G!_Rs0nX@ig-wl(^D0Gi2RRHs za@#w2Q^N5xE+X<1+hw-3^l7@Yr6P5h6Ncu45!6!=L0oPx4C|{r2I2G?)`QIs<=FhY zxtI|YI8}$VT)fu+r8_BuLtLH9Cyxv}{B^D4ma-R~aa}fz6>$wmjOs2CeS9&5c~5{u zX3w++cpIGh2zKk)4WO(dwg?Go+&`18xq@gvhP)oOV@?58lej~1R}H2N^Qig!P8Q^5 z@p3MqS|lI^Y>{V<@UP7TvwX0_aaHFp?Gws29;CC(tJe5J#l0xRaln($pB?Rvo3MR4 z^52i~|J!2nLmWaEb68TzEZL@-9na!NT4Q1gMt(nfe~WvZ zY^v%Vo|4Jx9g|_XmSkpy3)H+RPgZCdNzR)cVv3uu*IBO#6Z*^xaeAIXCzr%LP48#N z-u9SxDi}wFHAyVJ>U)mgO|!bUD~~!7o@{d4y{q*brnA+AHH_pAJDzjSaM+KCfWk)t zd|3nhX9lHl&{qpN6Sirk(N2|?B&9{X>=@CB(s;5rj;F}F?C&(BM*4>vPhVs%f2i(z zhOY*fu5C(w34@~+;F44B6qO@{>B`#I+Rfi1$ zgvMtc^R!`I11xReYK8mlyvRuaj&#DwS396l^-4!ajmeP1tj?j_Txf7-G&EX`1Q?0C zs9jgOb2*aClFr*1>s34@-zL%N9`R}2b1 zQZRO)lOk=nuPX@}RI09-mZZk)AX5~GC0rcbXPVg%{D9c9Jpmwt($OA>B1B;(GCf%3 zXsIzffJnouxv~Xjziv@hQ*1g>o+Rh z_BT8>$!tQ|4B#MI+2vBx=;ftRnJ1|Mx3jJC@WMiXUMo+kCxkMT^D!eZW$|2;|Np~s z3cfsaI(JOl4@_NHQ1!6liB?F#;^I@u{g=)3LBz6f7rfh8mH=uIe3aNjP5aL|yyN0W*S5?XjjS2-ukHUh0*0?&)`d~h26r0# z%N|*w&3axmY63jj_BX};UGbf3fNI846e;#6)WwLC;x%9j)j!WYi-_x67VuT?JoXZZ z)_S~p8S=Bk=CmRH%5J-~@=LJJG=1zRJBTKGyQiJ>ZW?S{WFTf(U;P1K#NeZR3mNhI z^SqL8L`SFrlsPe*eCNbF8O?=k7JS_~n6XSMsfSEw>J4uel=gTPL1JT*-veEv-{5cM zDl75yoX0r~t8R_>LaV={7_$o;K7cYammq3uHH93-y18}~OH6&-7SHmLbP@Spbo zYH0I;LGPaBuPr=Z3_ zm%!}Q1FCm>BwydTFZ{A$+E0^Uef2GV@)_PK#<~~e{zKGv?P?SJAFP$_JaA_XCBv3> z5)j+>TS3S_78G$B1OZp<6F(POrmxri7aBz^JUk;h_#t!i=s(JE{iIja{K0TaX)VcGEZ5~XP`_Yo%a-@L1Jxz2Rf^6U8TY}}+jK%4GS zUu1}O?$nbjLMezdc=?m6H-0fs|2a*yB6hfKo*deNN=i9@kcCd^>D}Kd{@unuY3{+& zw47t#@LxgC?*b0}VHbKmrZKgKM#q0;A(wpDK*BoW=f=&DttScJ!{1|!f{r48XZ7y} z$F8`+*SGyl3S(5^G|*Jt^b||H^3QA@wLprdQ~Cqqc``zpe`R%t;dNu1(K|e$FKZVV~@7nxFgMX8A^&6PS^X_y9&$uw6 zQpq2gQ*45kGd^9ZhqnJCT>l}Fv`emlS_70G@)vac2)94e$KPXsHc)=Cqy4w|srw%? z3>BVQ0$~xhH7x^*F|1q@xJ%9PG zEd5AdpkqbtybI?a8I@rZoI)a;UXMz?6^$D6OrM)VMjupfnh5exni6%^bXY|8nJ?=K z{JLTDnx+u(>sF?cZEujT#kTqyP2M4D7Dky)V1@qA+jmVkLd6T#PTn?bQ)XVsK-8RP zS9PlTMs)a1)rPv-k(KC4tHXgO1~GRj9)!g?=-?uNYF)>b&Y!^4T{9<7%oJTw7cb<( zadC4}QqLUcR+H}@_N|^v${R?wYI)Y@_gum*F{OK(@E*z*@#d`pWMsX4l^Nv`%J0 zhIUO~!)(uQSt?j2@tF|j=db8>=ZTnst+`GF4(p_C#BH}{A|EA;C@V*BsuOwhIkUZc zRN2|P!EMPp1lq8k-GV*r&gbJub;X>Ex8E=|p0jHtn#UH-nR(>k06|@@Ju9v_Qn*Dm z17gW^tgmefB#pm!Q~<8nTz>w-trxP1NPRh*xWRIkofOlWHwJlKOQrqksPuIrTtGbK z>A}7DxTNd{b=yQ)yY{G;cy7ZS7hTuadlo@AYeIu+eayAO|x8hpn>74GJ(MPJ1(M*xIiL;)*d-&q! zvSKg>=FcCbJfc7*gM|BDsQ|))1%QA zy`C>HGs`wVk!?7Ichskg6r_1al+q6Uqi z-l9H_kG^=n@Z_b=!}%UQc>l4M9INQ?YzYM+lx|GgE(39r8dSfH{8Td|D*~}UP_e9F zt#~@TsVfyT*t&m#pH}X%=SV3$CR!==n%9PglO+M$(hAvHe5~xrU*rGfkrYx&!LWpb zN$8QOA)O<_*TllZ0xARZkl6>?ok`lUO=g*yYt4M_U7zA6;?Ln6!3lRw>WXai*@@^i z_@pAcHZ{jud&bA=iLrmdS` zmY`eqa0|X=t$JuA;-kG`YNedW zskZM@*d%rN8S>7`7N`4O^$8^+iXdKCT{j4<2Ycir81hj8pM8S3~*-n`wl3rr;rM7VUbg9SM%I5dwh?z zx;)O5aJ#K^P7r&dExTIH4}w3S*6_~ZMf_QS(1*E)9!#$o&8>|MD~(g5KCE#tdW*It zkW+q5eFZ}}TX^yu5T6hrpVLg%Z{$OD%y$J>#=jv`WPap^v4kfvOtcA*xV-KV_9$Tn+w{p~A9#5e|UkzmC6CswN z1+5(^JX#*qo-O0uS~zmPMX*$MK5gIfB_*gIO_Sc1&m7%X89Bo zE3V90$?4F-TUr7stP?8mJU0!zRSAd==Mj1n6I&ohuMRG_cKF~_$v(z%%4c`S=M7Jc z%w$+NAKEx0zsnxDk;CpQ?M4wXe5%vA)MQHFhKaE*JT#-N((i%t+?PaV`ZB&~sTsgr z_e1ASpQ);N7?tv1bBsrvbGgG4a||sDuN$6}Ib35akhRT{T#XYe= z#|uGKtE@N7)?8L)nS=}T(0B}$WBJH{>b2NhNKSS9v8|j*eE?)t>T7d7tsaJM;eeLB zFTY@Y`55O4mr$xVfRO_$U@(7vcA%Gad-(CX6n$*8X;hw>u%9Z$7Q*APCR=6Vd1xFC z^?H_m0!CCGQ>*Gqjbec%bdn^jhp$wKDUwtZSBO@N}2Gc``YprJdqJ+9~o>SG`lce!+I|5Xpr==KI5&`Q1KH}TE-{U z6tyF}%<~IR8IOIoUOpqHeLTJijVr4N|5QGYV_F33g44O&^L5IRvt55NGpBhg9*=-i zk4>+Sw!iLa_xj!C-m!LR-{3dHS%h($VUdpFL*awT-m{$gmSX9>x=`_{$Q^fa1zHkF zce+!X^H$HjBTH+eany8TWVf~4cjgvRL2u=2z?DMXGBk39gD)%Zq^LX1)dzjcp+U1J z{(vd&`}1Oce7AVHr1{ltFX{Jq!qQag0(T6wt!644t(@LIQ&cHk6JC4~-eUvw$*Ufm znWk^kM<~g+mRAyugZwm~Qa^kDZ+_9v30~b@z6NAyG&pV>I`Y`i>tGw)Gj|!2Z=WI# zXdzM7w>Wl|cC{avk){nm&s&S?_Ejm?`*MFQ*Uc(_DJ~s+3vnF5W-n5r&qN=|b3RGD zt5a4>qV?QZApJuXceefHo4Q@sftXA|p0gQc7*_f5+bP95Gox{Xxvh8C0LuHj&Wewa zLt&pcRE!Ac>$%4G))Ug};|a{^kB~h9T`v!%W@K(Rj30`1JbK#>e~yu*$7ZY+0OZ>l zFy^G~2u2*IQP9C^_uU>7R4UQR5?Oq4N5fRB>~UreL8{J+$FkUJhfAJ~ugJMIff_u% z+NFLQv(BmYJJJk-&{nJ1&?KJJR&5^y z2zFCk+OVdMHr4#7Ncp<%<$HajHP}OI%=LBQSiFdsBAxT+j_0W?YV&PoFJhp!bGu)K z@{&05O&^pP^tHwL4{laLZ0|K^?%*5NJNbv{mc25xJ|sXE z^0#Ns%+IC^HHzMY@F0?JyTH?H%2n9rrJiZU=vUbUs}E{#% z(y{^-RZfZJ#%rWa%IS1P2^&HhgG{nIEK&q%taSNPzmyuCOIh#IaNK`2_}=T0gBM^p ziOadlPIkJCd(~Rm*@<;H#8+dLzya#{CQc@qz44S4Vi?yuDZIlS^FYS90!LuxvLL`i z_RuZ-(oZl(fc>?9q7gS?c&rU@b$|z0q?I_8QTY%FuiAonc95f6hs|8bh=%hQsk4(C0wd@DCQ;7Wy&96n%BU?~onNb82dyY8?d zEn;z3xENTmBu?JO5qNSN@WD`30h6rq{j1+^ixrW6edY0wWBAp_oImI6OqD*FF8eul zuji|hKj?&Hfx%*&Q_$rxYU^O@_n~6O0Y{6pwN?jZ>Ym9R=Oy1)Axf5nX;rXV5Gyp(p$Wc!I33I zZo}x>cKI{o2WCl>m0W8|*MKSm7A^*h+Rz-zW4`=(bql)jS&dY9o6cKHB9kPK*^^;i zJvo`3qt!@GyP?^Q7kAPy#(yb8@leoq;1O1d7Z=&`YIlaiijPYUDrn{VF zELH2)4U0a>el0&5b*)~$HKf#cnduH}4DWgu+3r-r&pak|F+gfQ6Z1s|*?H^x97?QZ zQh{7*7<^kaR4H{LS&~xYs8yb7OB!oE;NcjXDlkK$6*@WV>FN`sG3Ha=5o71PwM>UE zi(H_`HSBe1{AEt>do-yui>$diUCo7!ULe7`p&7FpaY=j6Tq-X@2~E>3v~(nwEG#IN zK^Y#Q0Yyma*+F;OV4fVbx6ZbOR1BYDD8@;SG@+ZU+{kzr-bw%I5vTJ|!WN6}l|c>C z%}y#D(HgkCrWY<>10>R*Dg-HD&ti;UAiLYeDI05D=UcwdSujtP9j1g2%EG-=OUlg3 zSy=o6;L-v?NDom0OfOp^OCkyc+iZpYb2~_!<^m^Tc1Lt7Bur}y@^W5te!-%)!SSK> z0));wWc`tDL!1CL!k+ArNeOhgbgF8aCbD`)$A0*f600_)RaaWT2TmhV4(i#cg?)EO zhHy2XxU8^sO+sO!{?!gA21%w|CD>hCd(vsn&&B#r_B?n6yb~>?Qna=$8Yq7VT8n3}?qEdh7v7L_`cCS5SFI{PL_Z)-woQzl0;7wrJU zz6m47X*XF_kk)2Sob0ySUk9LqXp$9Xj$B5wy#p>^mhN~l@Q*_w5&{N{sO64cElyjo zj(0xauSp5wGk#@2j)As>S`8#(FyMC$_q$&5^V4_9J=hQ?2z3C{vc2^{5 z9uR4k-`=grC{{DqP`ak-V+-~NKPzVrm31cPS==EYSs-QzP=EtF?|J5zdw>rKK1>gjyFLD_jhGb>H~7g;HaT@_|e z!6)jGZq9CB3RulczzKZ&R)sAykT-FtCy?E&tPJ|P141UflwRRHGKrf~8rKzTIY7M> zF5R5S1F9ZwMR*yfzhp`$x=y^S{RCpYtYc(o*BL#c6&vvp{M)Jkvr&(x+9^-yp!|m&UrWl!=EjR2%WE1r z;?Nd{E9~j}xZzrAk{ZN367XenEz3jGzGI=)>($5o+^<{wu3g za)q}C0~Vg|CGUh4x^b)wy)`6foGevqR`^KXk$GFCkMt+u94Is@``!5QBGeO6O90mBu4tn4!gBE;_;4GC?3=`X3Q@-k z>GsBh2M*VO8w*rBprdn? zgqF~dXbj&@X|N~r0+K1)aAt$YjbPX_+V>(3})l(jR6Qwd+IL(XAFJ5$5MHeF`b!JV`g!O z`^V>bQi5)o&1_9KlM>!`RU|9ipA{eGiKzaBTHnqiPYyeBI?JSHu9^S_J+DK|Ip=2_!Nb^KtOpKpNr7>$r629p()YMGo(M8w9zwA$1>Mo7iH8f<&ir`<=g;$@_Th#YXDLK-iLF~s&C}9ns2OF$N zr4V1I+efkce4jF8H8h$=H9ZKqv)}M|EiF}G!k%}FCbI!6{w3OC)R}+_-tOx$?YY!< z;YW>m4ngZ{%R1*CDIysN8Ty`st1bNVFYz1f&U3z;5`#WZUcBxPt=(2-25<8UxWVIZ z=+X2hvc2YpcEpZ%;BklaD29j$)kZ%ZC@s;@x@*3?4Z>F^N{4n=d6L9IWmqGmYldzo zW1HcP=0A|X-!y%6D_U^a%d|+(H4STE6Gk)Ok^ND?+${EZ&@tj&P0rV>idH4=Qm|Wc z@*Q3+p3Wqb{5-)9J^rHV;a%#FT=UBt>CDlktWjD5A4*#ND68dC)j)iLkWgovsCP2M zS8h_KYXiG+Z9!UJrujw8aOB=xu6!ruRi7Boam|g*QQO7c-C1%3l`wmkgm(&O3*yCe z_>?(i_a58$MMT?`i^jj67D_?D9wL0Yim8alP&q&r>8oEu#C$567S&@krK8zwk)GS( z;W$-|zNyW{K(oj*fP-z#2CI%+Jqs%#w5F|iOiTnR%$`(#xX|wbiJfV+AS%d5tI1Wq zV&J=Jfv_!^Ic)TDMdVtMUL zwZ0rVywQhhO?2e_h@)$+Q@IEBm2V`MZJ9r~E48Z;+D>I7cG?^BY$*Y}#Ez3Tv6}Wx%tzvY6wYbh< zRyS^G+uV-b>t*uGk*a2OnbXYhG7D>i(Wzw+vNIzBvCEN8t4GrzROjYxyQb!Mv(u+j zkT~E_gFP#>O14jR#D7MzOGlhdb8w-zKRxHD@uOxsDaNmQN&8!?-6wxLDt*0k?0ehAWUH46OAYQzH|A&Btq#Y21 zTv?}sMJ{PkGRKZi)RN(A`Mg+aW=fxt9)c$1Afq+}AKdSjYZ|$9`Nb9l&{0x9x_hvnT1YC~hl!1;l$Fr+S+y61~Ks zKvP?4{i7&^Am>TiupN`}OW?59GjeBvBeL7EWqAPGJD-(cs$&bB)5xH1SyQ&1%=|Jz za>@~D`cATjDA}2ZXQf1W9nWso;0w$O&y2#}Oj421&11xeW4%{G&T9|RM@{rDcRUt| z3}>s4pt->riJNzlkq9JzI48}+oGgVHiWWHLbn$sGIJpygz{!d5zk%)(>iw+Pkr3ZW8Qv$qNG!D%ilu!-SgFWauq+nf`uynKt+8o?|aVw{?GYv?>!&xmo@fI_OqWg z*2oxHYd-Utb7q=+!HVjS9A6+?pPAeiZX$}V3DQIO{!*f9nEU(J2_KSt*|1z~`)p7+ znPkn6r)#Hh@1}w^)~q4E7|CJT{obK!p9<+av%JVLTbSv#r!>T<7kUj7-=4)&xF=Wi zX3oTf4AKTwwOo{SpB(e|+i{TnBk_r5rTRx^KJ8aIRb%s<6x$9~45Ix1`$}{mY=*-tB`$$o8go0J;N9(4a>P9Oz)B^gr28mv5Nr zsP<@yDCNsNc=&p~+v+v=h?UxYf6Z$(qeLy2<-!h6OKOvf* z5Jza5sV1dnBk`In7>%kN^9UkdwNI?t`Y=4<@R`e1w9Lmzia&M<$od68y*ap!7uh9; zA99-Fd{`W~s@-!hfxu7G&T+)hTO7Vb=`iZuHogdPRSSW(!Vc zopxrQ!237yG&c0H3?Qn;nWjv!fZWQ6Z;&p&w5Tqp8u1h%Sy>h3r)Hn;>3Fa29OZswx6EI+b9q;Kt!ACaa7S0P z$@W0ufy0W*cq1pOA=TQd%SaCq|8eXg_Iu$t`l z|3fU;5cN&T@cgd-!#7cTmKF2c$~$i9p{&Xn^W6KFMw)fUr3RjreH)`T_Pqu2fn!VJ z511chkRqRePBaQNMzX9VC`5-%!aO_6JQI!@w*9_ZLLiXdq@aMOU7L43*DZgY=>`qs zR^LAelMmQ~Tre4we|B_`N_hK;Bw#9JJ8ju2luR@qI8ypnxTpE} zlyMKJt2l1+(t7+O_T4?9W`!c3IbkjvC4U}Rg|uq96wm40Q1mtz@0IT8)mN1n zgqu2IL7zsFu4)B&{F81D@GaLa>v$2@f3^<`mX}95(LR;vO45<34x8}k4&mQpUBs_3 z{;A1+XTQZhCGq@T(^mm3>G1#|PO^&Hoi56sAxq&@*j3O?=>v}(UH|1&d!V0%c7*{q zqzzue0W&t6hDoO`9>M)a$P+D+KdnFiJR4RKXjgc!b&^}a&wlUE*W%U_d3n~XW{K$h z$#JecESop;zCG@{XxxD4eg8bYZ)X+bWC7g1^76-~${Pwfj#(R_$W7x%SOKIrAA@NlNvzMkJuwiG`P(>L`<5`*;Eh5Uw0`^T z4N$ys7&d2Is2*jdF{vV9<~Dn|-E++DC-$~NuA~+Krc~j*dXSz_aqbvpy{+yl1$aU) z)SFYWUkcEELRlQiTi|;8f;T4XI?D0xK@VBNbyaw;yVECrJ{d^X=y)%ramd!VoFPF% z((62f5?814~=NsYV5Ao!KYd`pI{798e2HU+C*CW+8NpDw`k&%>b z?cIi5Hvyg|XdyMcS|J;#aqwJq{{1CgejW6k=Nv||?TFuWq9<%1PY(dFNe>W)Z0eQ$ zl6^NOBX3SM`cji|55Oi|eoK;m?)JS`&3 ztcZ7T@B3iiRV9cEyfUje9_TUx)|n!o^YBBgNUqlvcf5zXY`vMib@!=gR|oAu4qpBkf=45bkb}Kb@Txgq zeiK~d^agwa7oljRBkR~o`pfPpa5iHdM9E*t4_)`nU~Dbns(%&?^?aZA$u$-qwffWM zO&4H}8793jm=n|CQ&|N%Ko7w)Q~rtus1Qmfw{!=K$Y|Cu5@~v{vtZ>fcga7`HkoAv z#!`xTCd2ogN9tkaQVIHtOF5>%VOf%dg{{w*bItCZ8Cl0^IgUO2Cw_ICn_nz1y3?PZ z@mAUIeC#}^p{ht)EUW>n`vfrH1Gz&t+Sjp$<{9G9o0wd%D+J}O&bm%(}Cxj*i>^@uHc15n{5q9<}kWMGzsp&2{p%eFoe~)0g;>N{ev!w3DI^KNFm|fFvcgmi(ZNJm&%7Vt~6bnVr z&-5RInx$;KW-^;2Dhs1yj<+N&W2-r9{!~DVx$>PKGzD!rR&L5L{PJ(MT(x}zm-{w8 zCTWiT@j8&_;)J|B$h}(s#;oWCJ9xm{f%D~KRD!*{W%Q+fqWNpkLqgM1D?y##-(Os? zUJm!CrEO<-^f96DiAO*923l9vQSg4Feo9AogC7}ex=6`!D6u<2epqdj#=ZVEDQZ(Z z030y?@$W-gL}O;haIhZ+(MhoyTOE0L?k|>z(*S*%o;jnjiG7v%X%#2+RJDL*0TwwV z@v@kpNIsjPkoSYN-WE~GoRy5}-qzv27$*3ve~Dvz`fLgo6RrZaYI1G5)o8wGS-S2T z2gylk4e_-rMJg^=8cFqw&|M{hNjuSwV`(PZHt%P;e2lXkEiPE9dJ`TT=O4T%CleBR zxohg<8$_)v7zdenr(EW7U~AsX5VE3dm$rmy@p?W`OC_HRXjrn#N(~GBL z+5Q7Y$Kk)sGn-?qUNwMz4PQRlYB$MNt}_bI(THj$re1<7!FvAWc?L{V=!njc1)R&G zN^Rw(D06vUIllrfX%3382^{}9oYu5S_%-|GAhZVZ_5-sPy8pPep=K(1=NYCm{`!`D z6wKHS>R3eR9+D+HYYKDwaKrrZNSMH|6i7z6B&VZ6Vc)*pDYMH&$LXNAF#K0+HJ@Ne zAm=Mb7cdHOMS;G{k@0N0w50Y&wsU;{3mr~!Ku8Fqf(nTf4=*n%>yLo@|a^QL1(r9Tg8r0U?x}Lmz2^p+X zvS3{D9mI6yNi_iI^9T9>V)kL>E zu%c^$9{6T^#D>9RmI-96_txIGM{JT_5?CfX{ZXA{zmsYz`n;!Bqk1>uIN*Iz0n}3J z+mia{?QTN1c6oEC6ut+3q$u2ze{P-`Y^%+Fxx+OjBZs7e=Sh-Cnw9SY0>ops+fVHQ zM#}QauQ+NXHnKAI`B2YRY$bR=j5Mcdxsk&(6)J9gjJ7YLxBpphN52~2$eXl6LXjaU zoGoxfsoO@G~S0+rNq))e}gRA{CH#w zzSG^h7zE7_2<`(cwxgEHtMkA)3bAIGKdm|w9p=Ea0~3>O{5#2y^o21#l;@(+TW!T- z4!-$*a&$?wZ5(QkbgzoepykLY|Al&!;L}@*>x3(R&Lz42Xl5 zi$C82+GdiEZqM%zJ!6R)&u_5ob}a%+rCx}6DiW+xCm; zV&u;?8gp7)xASU9I}H(Z`)EIYG)nHyN({7BjN=S34Ghp9 z-^?XMqkpWH{#~+dNj0R1*@<3n7x+l>3b6S^v5k1i6to*IibUv)Kj#)xSKv&d;G`pn z>)(YLP5DC+Ng>7#0(yTJZ80lr5->iPjFVsOq?!}b$hGv!&nQ;!rLRQ)VMY|nqbnOU zX*otazr*G>!!Ct76HOyurk=*0Y5*h!RnO?bCH{1B zvz{h=I(=x2B9NwvY9F9GWKFkZTDb&x&7OI^2r|gBRsh=y1v|x{eJs~FOTGwXrfU6! zgf@7F{vfKmgavU;(-z5CDq#=$b@xc(;hn)`S83Wk9`NtqAWM(6Z8aXg6+(lg*9_2k z6mm;kgzz}UVAXz8ZXVO1%(D8>+6@~;RChLCMUzJ6Sh@apjRV_U)Ko`pLjh%H_f%RL zN*Q}u6eQXiZ*kQZ!k;#iI=-fwKRr!Hnh?uqifpXmt^E`2x1!!T99>ALcXYXG`(nR2 zPD<0H?4{6m8dX66AWYj-)TvZsUC?o~3aq?#Qz$-9Gt zh`1z{SbdUGeodZt8x_jY&Y;jDy6NWV>~LV%uT)I6q87a6d380sy6>^hkKoV?3rLS6 z3#Z=hi-C6gLX*@i%}NL6NQCZFo5E~0Td4r`HI1dx(*fx4hi~YJLY7NpWyzC0c5PEU zHUfS)vz~eT%H8OE2aDr9Ox?||@{O0y9MOf})2zsofQZ9y*5Q?})-W@jY!d0my3<^m zZMhh89Gha@mbG?h1$YeuOy~M&u0Vli8x0*8EyF#lx!#VwxKPo_yV4o7|LbfJTBbth zy#@3T3tK7AC*V0+#ppdJf9oMkm8c#4Yiu@$C#urL%q@h=Q3f&K0sF*veR0oIQJJmd z2LNOasa6q8w`3w=+y40${u3g7{66q>8}pbDc|0m@Z;5kzKsIHMnEa+lz$lNGOw5+& zLq4LCJ(QpHO<4bUlM2sysRER}MHHl|slgp1twStc1}z+ghsuMNi5obWrtyMyPm*7l z5-qKQr4IIc9z7LxcF_XfcG$HLok-(#DyhI}yof^#to1UP>oGHg}F7(vL^2qc@v)&lGCR1$M`3`S?NP%0#81uN`l}I%UX)z$hpt;6=>Hw5Db`1K=WJ%J zM7pK3IVW5BCCg#q>!aDd1C0lQks+3K`vjpgvT1oK_UllG)vl%>xSQZx37gMZ2*=($ zC08Q1=>vT#8lXOE0^ zh<#1FIS}KSPZV;CQH(lo%a>kUtib0#?+trNY8EbC63rOJJ(^YD+qctuv=6FCtm&*S zgUhF+T6G6CAX-4e`%}Quz0%!u!%^g5beL$cR2zlHM%9C@?LYKjjyXK|&l6_>N`xJB-fo z)Z3Wy+RWU6brJu~#q*M$4VQ###HHojZ`Qq7@XC71nH42}H28r<_!WIutfoI>xMJI% zl4b?dy=Q)oCUlEY$$~iz+-kJ%Imeq6LY|lwfG3xeIZIwds8}#4%r7`)P~1<6ClB}` zV%(o^q^32Pv0+S{$!|p{$&5z2viuh-P-Hml|Gxf@%Fq7;LohnF)Ez&~!s8?8GPLI! zPJyzPW4^Vc`ei^Vi{aD@+Flts_DJ6XQb159_}*Ca!bJg!a> zREn$ODi`voPuRNE4d59XIxqPsp_;Kup1pmw)`9iaw8*o%8nQZ4Y~q|eCU}3^?XI`B z^YvM`UhQaTA~JQ-8!$LOI4>h-J{Pxa^{m~R^4tjK6%tH#Ka(L4*er83095!gO2K5C z7cc6yGReL-iW)u>MS-k7`LvL_%Z_oktFv8;m+`EAz<)99NNFDK__w-%~BdaH|u!HrZT$16Ge$EzC zQ?oE7w+h)Td}8$1`01c%tu*5`Kz0d4nB<2Xm7eWxu0 zW0z(4U2vl9=BSZs6#3}|-kUzhh$l8!>nQh9s!cAom#yG21q*9V;0$Qw+fc~Y93MgH zZX14=I29CW(jf9h9YJoWXH5ccG~G%q%z3f+0&%fIyITno(T+X?zldM6JdSl_wFIIB zTED+#IdVec-ghL}I6vwxB8Fxue58T4u+;00CMvljutn?2!jz5blmJMf{-WteF8#&RSwW%m9#YV&$jjxil|h z$TX@%J?}x*^MFJ=RI$e!{bg8mM^>BRY90+_SCWLQf~Owg-8A+3<{r8J8eGQ4cFAW) zK#T_6j(qufD0c`hgV!4^INBT2u7$Gu`jp15>(8}s>90~~FVtTuglFv8h1shKHQ2Z- zu+hNaz8=3<{6m@?Q4E@4YN=r`fridhko;n0n+Dn9=~nh{rD^D^rQ_-@bi%v zN~kZFXS&kehLPlG6D7O7(+s$fk0B51X5_-jsEgMJNWXCs0wi;jvCPJMs-%vOsckQ; zN$hqY8OT*uqJrvz#4n#uHfB%4rV6CrzkTXgQoDX~S`HOI$`j&kvU+^Jsw~ySp+Wve zlxUsWa7GHDuarWDYmu6UE*zMCdO<5e^ZuZ^=up!zDm_e&)FkBo@Mmt%BfXi|0RIuP zl0P6jPu@iHJ19XNJ?3MAES2jtNLFlJ-YC8~HG8{W)G#^C#zxRG0l0zXR9MC6it|Q$ zY|waj9iNgVLA6X=h4YYXZYnDJ?7N;FU8rdW)nCp7E_^)W+AgN7U6BU0>nEXqecY-9~d>>*q_R_=ElLk0B&& z7L2=1%K-T=N`B?{gYFq@=9Y)d8yF8tIXJR{y!j1RF?%=jM_na~bNd^%3!c6(0Zg8r zQ|zL3W9cJaM7BD=OA(BSrDQW>xsA`ZJs@sust+Lw26qa|%AxYNwJ zq4m?wX-sSW=-{!2x^jPX?NZz0X-MSE?c3p4kJN=~ zCbKj$cyBmYsu3(H+Vr-@q;>1YSVxVh0~SjocdIaq4JSrUzH+_npSBvCwi=1dJ8X?O z!CVn~(me*MrG@(%Eq#`0tLKY2;_b6D+Ep`lhM!tWIE4^UNmTOUhgbNRudcTM5N-ad zf_#4F2Kj35HWkcliV1$&`n^)fh_ab;`Ku-Q zm;D{erc?I)D-Jtg2DwOAQw`C@`EF^^UGXYdxm%iDn8(QGbd!WYYeB5q9evujk3Qh> zbNp;3*u0HPa!o*KnDav^38-G#Kjbm4J_6!om--rki>{Aq_|x;ny`TxPSH_!M1)$Qh zk051i&S@m`gAUqSBBmq#YJ83!5i;=+bP4PI&J z&F(wD_4+0JDz0BQtWFl1T#tny(!k}YT_a@z&+Nh2BXtAXCaq{43u)-H@a&ybH~ zB+o_J=ojA@b!O?7kd-c=yOQ7{(jCVXjzBVKGxzv0FR8kecdh|QcFi|RGenMjz>%l3 zEyt)kDh2CY{7{8Sh8aNaaSWHyskQG)8ELw=Z2FU5ez>6<@MP6`>s22(4hgctF6HJB z_Rbfc;u63cTAR7{zQW=OpbhNk)=y(olGaMgbkq5Na`V3f}yfB8Tt#r%yIY~NL6f3qeWM@P?279*~6&QDTRuR z(f9a-G}lrstJxt zSRe59OTgD5M_BWUJ#&wqZQaYt?&PzhzMq|v3caqM0sj3v>CcV}a%>nv?=O;LU{;J*EK!0&~z z!6qG*fTxntU_9fWshuT#o;7=qtYE2bHn(IM!-hmrO%Dx4u!a7DfommxgW;2sMwzsI zR)u4y5c_V^{H-7-g925|HgDB|DXzlQk&(gi)S2`71KO0B;d%O`M(vc2qPY*-i3ZRg z_Z5BIS_~Kkn`nqpq00L2Yit2iisHe^ZkOWRLr6zhmB&EiLZfZ^O4GuRbyzK0o>QeTs)F-f$EyG5i}Bw{uwmNB>Ccqj zkqV5~m);xwnCw*F7vmnL zxve)MY3YtaR*XapgiGGec#KXSfADbja4c26JLdEc5Pns!GMCtn?>G*voz`%({Gq^> zPwlzM%n0e`S(hP5r6&jIe&%Vn7gJrhvg81mv`Mu~H7UrMrLk=(!GR3&#@?>y;~aW2 zcTyDKh&3nddftfzI$M?;#=q+|jeR5@>ru|?--f^hv?&}i zb(Puwpu3aIQDCRh8E>Bj0Fmo@AA}ndJ!?h3GgeIbVU?|5fa^>~#j?q&;D|Ltt1|kR z9|f57H1@biKbVFW$H|ukq{eu*lF~-w!$#S~4?w%D6VqIh^yzU-o%~8qwR~-SwtIO7 zZl0QrY*23LE^!iq4d^UD@bI%!4oYCc~d;P}`MvZP9O9Q-bmc4*`{x7s0y&D3yWl|YItw0Q?f7|q=7#HlLzNL)hq+$r&@ZV?+adFx`>PwU9 zACDqfc=$vAB34erJ~_Q}Ma_lcfAsU+8T5+I9A9xpwM_8Qc^v?X`()(?ah^A5|ZX z%WmsvmWFfR@hrz8{DiogJWn!HIg~~ z;;?&rp5BdO?46vQ!uZ2PfH-)0hoR4_l%EzHhkon@;zO zCPc>xM*(=N?keYxmvZsn{y&Mamapk6bgMPFGBxA~ab#QHbPe{I2A#vo#69cdA4VP| zRL!}Tb|Txg`OhM8FZZv}g@@8VZwoIH(Iv%Xo)^s;q7Hv;C!58Q-d7t2)re;Gs$RU~-bD8R|7~_&zsF`{oQ@`Q}Tj(w>G3@peRX@FTytX zs+H0y2mpyx#1?e?9I=Tg_PD9>3AiKP2iqoM-l3_EvaJ#}VWROSjUht6h3HAu!oL-G zyyVS!(O|{^eT3HaefU9Xe_xW|^8x5f>zt?eP{zOr`iyI=eYHL3FFxdrAGJvv+%8Y> zTsa>V62iI@uf;-MObz2j506noZH+`U?K18~w*mkF67v4urFe#?%VK5TCf+On)+2A{QNgHe#VKFF2=@Id|YdK(lrMXyC3zDbjAz;kwrY4Vc1hQ4taO zc>jKeZ-^8&$&PU=h}YuG4pa5|8YR;tL8A#P4Uq&2Cxv=;-j9KFc6h_56l=q~{AE=c zv&o>YYR{5+P0c|%FMkdoz7IQl)*MW$J>$wmBHiU9yY&pp$%a)$I z^eEV^QD*az1eH6OkiAj^Zos|r@CNX3ie5}gKE@X?JYC55-Ywk-L(d_+-J zvT*1#bD-&KNm-t(A|xyPU2|}_1=7IE1Y|Q)#IMc z*O=-smHG-0(hLD|i=GE&9ni+b5K~RJB|TZ^hgUm8tqe7{yx`8J^)mYIfx)5EoS=k+ z@7MXB+O2YxS^&aBzPw?R8!XxL}9CWi9JNllpEDJ5XdqfCSPDmk{FP{v@TQ%Le8Nh%ar@ddYi z!{<4EJh3}?Q3Sbc+N}d?%-9}}@YrO_oho%s`hOAKp{TH~vx*`?J$b2Z`1Ij_c37g3 z%he$h;JuZHh+B@^_`K zLk`mgl;mnF!8>U~M?u?s9TAp(Q~FDBWncWw$Y9bdm;KL0i{rEioAKlwbqUmNg$^Nw zDy31#{CxV{-SfuG{2>4q9&D0ASd-Up!gn;bV)E^~16!Asq)@uMNq)=#igm5ku8}h$ zVp}gMpgUP}e5%$2mu&Mb7W8y2f1n@ZZ`&uR+L$gIs_PwC2^c{6m#tz>jsxFGJ4_RL zurt}ArixwCskba(Tf4F%z4f0(;J=TjjcJKXsFH}|OcS5FenhMu4;pTED-Z{u6@KqF zd9vj`OxrPZ%X05c`L=0XNL11Y5(#Jn48dfPp?+I81Br;;?F;}h^{-crTTTBW3Rwau zkN|~;2CN<-t_BToIgsmAI(@32Pp~!UAB~P(2>=;On$17uky(NNBI+^%o$g#*B6`=~ zq5H%)f;5SkXZAGSo^0TYeU5t6g;N`wXPV3gv~^4qEl}yyAzuNu`}cE5VqOokE^huA z*=*W)<0M1pproKKz2apy%*uzJ0>T*TNll@(Ver3f7$yy8CZ((7+c9YH64t>I7G zvw!#zQgXA1ui>2!Mw?jhef1HqHy~I?>tbUrlnA*;p53G3h;`v00hy^=nvh%-I<>}Lf9ub(jev3cN80$$y=9p ztvUNH28E981wXDtHT%oC5$&!Vu8|E-{}Hj@4f29qXkvPqId%+S-afpDZ#om%;v^o6 zG8UYx8I~Qw5;lSc@FIgEq#yHkq_M;^=WaN+Yl?ola((W=oLtjG!XuyF!fP=sB46+# zbMni3s-$Xy8QEt4*IH#2aGFfjuRt%7Sn|w9HthFL$W77NP&?cAjGeTRjrKdGDo7O! z{oBspV{E3D$e2hWSo3rm+m((9&pPJ;L|YAN>P=vjH&0i%0d3$w+fhGmotOKveu_(L z=qT;WQ@BUSsfxS~XblPzYkgIfFKCIX=piCf2xLJRewOx?{V7010?-I44^a{yA)kb; zK}p0Nqs3Ng2c{9TstFylgLnGqGm&&cmfY<^1`jOGru9yV_mrpkD7MerZ&5IT5 z5+9vZy-~c%{{$W%eq(X}wxmja^;@+CG5 zryk3~_9bob&u`2l)L6{OV2LidwMp4Ga$DRo3*(n`*Pk;3<7=+g4OKI_>AuA1wh z;G8F=2Tskb6+a$hK|Z0C2A2$Eeq;HDUP#x5&CMBDcbJSifhu)y5h27?WxHu_V>`rc zeXAQZGFB$zmxjpPx7YW+*itu1#Wk$d`T@*Y>mgq}e$RJ2NuXYW`!UVMBexZ;%j2{Pkk z2hWg74ovo(f(+%^8PzBeadHxUI;K{kiY>00c&QiE<^1^ba_Yce#?ht;Q9e)j77>tt zfuc!33MjkLsyT3@A`(tT>n!F&+qn7RUqm8bq}OObv0aUO)l?TAL6&XQp5pRS!|ZED zJWYvt^!dn*8dZIX^QN3tJ&OdS=5P} zH;+fhet?uyouB^394}UAJ|Ou!*yUMtrL^5T&Fj(Pa+(xrPyp%#YMTa4V`DW6Q|dLQ zT26kfwGl`#nGoj}m|~+ey@MUa=D=w;r$v668kOz3%--IH_Ra1vI1l2bj7)wSGVT#4 z-N|*<#kg}=8`gsA-hcy9s{Mdeg-@-rHszmEKkjwK=&%}Fuu1#4XeaqSZMC%f{4bL% zWV7VqI8SCg#J-i{u07~D}}(ur=;lPqy%PY=@e395E3^gX#{%_ zw*E0&cj)tsq#vv##vzpQ4kQVq#1*^DbdOk#XW{CBaHWjesbOq(nD$E_cQojf2D&vm zH2}Vsq8VG@p}d7CBFmh7{`F;Ma?#YgOO;N!@%~kGJ7RaKwHovyB)p=RST5qEjd~Ilwr_3Cpc5PqDKkJUj_d4Rlb&SDU z9Jw|AGIMb+nfvXZHyn(1ywoId@8xm&e8~S>pzfa~>OJ_KO3&F!&xE^PUeL&0p^$7o zI81!n)-XSAtE0F4r8SqK5x{&VpG~i7iWws{K_aaMclAKLF3>m%7ZSH(B3JP=HBxA` z<=LxRzUjHBj`Zeu(;Jd&~fF)(~NgW|b zG_2OZK5%SXE`_|bGV+cCtGEvOSMD+53Xu+)ZfQN`$7muQ2JxyCVJL$j(5KEJ?;2C;E8`)s&J^jhaUEf5e_4>jN6K4jS6HK?JJF+WQ1O!VSKk}?Awgzh<2 zyK~h#%F?|}>Bza@h~gG>L5?C{O0lQJtLfLR&11q8`ND=Bm!~fWbVx>7qeU(IzKm{9 ztHyo}v-1wcwdVgQnJ{0mZCUY zPIBK?LGG?A4$e{gG|evGPoZ+0P}7vZpld_H7;$`uoCo&L z)JGTF7(;N1a@LQK&%@QMdGAO;e{V~s0kh9&7}y2cw$whA6k9sN1Nxla27tx%mB|?P{#X`o2-Ba zfVjqCb*E+VXZcKTHLf1d6wZIYd|i&Fk9Lawx&grTc)t5rh2Lp@=O~6~o^iDGade8y z^4H|j9Ki zzyD>I!g&1OH~()8Y|2|uM)c8VF=jd%Nkd^xBzQ62kYW)?sQ^&_-CphhJupmAq+xnZ z=eIs(Y(1TP6#o`4+={?Q{fo#o04y8-lRD&E=CsXiAA`Ev@jsnj^P{^)(wpYuQ)<)0 z!QPBCUG)~pE2|Lj1W%R>q%xVs2hW&5D_+o;gCAjjgvmuE>$$>%oxlkcM0<&e$!aXB zqvev(kkXD52@L6NkK6h8EW=f2e})~3fvh*K)3(z>;Z*gT)dn*CSzft@qdbJ~UppU- zM|+(4ij{mYNj<-X=KwiaCK1t`s1{MS>m|J6%=lWz_bpQgbVNyB(O%)x-J4Ov)f~ zwab2!v~u49BC0z>9dfbWHKkBVPgj3%f3MzU9U)O|o&o8IRk&2`_$yTJU(FJdsgkaG zJVz?#47C7IBKQWQSDR_l?7+NPZmX7Y+1S{_2P<A*Kr#?Qx&=KkhsWKCD?F}vXQJ|ThL6Kx1IpTe$6-)~wnd+yB@Ds8_gKT(n7_Cfh*^@GVT z-nN@iN(q;DP25Q;n9mVMJ zFuX?ce2FUo-8Kk$PVIvFt9z$`|3spiine(GiA|o1H^y6#fkm+dMNJ6T=woiNXS+zD zThrwhq)^LS>HnR_@;~}n6De=MYWpu+<_EaA*HBp&@txL%s6_~* z8{DFuuWZDrAmujFH^AVLd;BSOGR(sjUdUHOP_ud(NjM}ft;=j~yIwE>d@QVNoXJZL z@+YNjuz$u%`7pMae3>(Bn~M4-E+!SdE*;I>IhtQNKc|z5RqrQ?-Z zMsxRKS$F0)H5=z0D#cbTs4Uk*n~u!tb$eFj{9#c@KFKDJiwP~XV6NaIn<>O{r$9wi zR->tP;h-IxwU;f=lnXgxKMaB2@u%x2PZoG}GP}6w>A)D}ke0JT-e)8z;|rA9G9huA zF&Y}WI}Jql^8UYw9tvIzck*l}p>7?dGN-p9j7i+LWdkE4AX~rHIK>Og zZRqk+MkUclcozA8WJqW?)e7CYXLPw!~pXyYiDKZfWv&B_t>x_!!yTgyJ-etj8(02Eo#{uR@~<)Z4@Z=jm-3YTCokNZ(_Yi?1|;sCWm~@usP_hN+tNiSMhIZec{H?<&t{i+ zI>mi;BwqfmyP8%Dj#6(m<^`Rv+_|^=zgxc;litc0jxGH6X5#-;#xVN7;E!8-9+3Cg zo^=>pYMMV%gS3;j#?LxqqB}In?H&4%g@n_wgF?ld-N&WNdx?SjYj{^*5ZqsM)$(17 zZt%lbI?7?9;AyoW(TG6#IU~8EqJ7J|XuW1VdW~kgtj}>=M67(yb?yn2mSwM~`jl!h1GCrP z>x>7l`|i&`DW~pM>3vzsKH_#9Ufyjqffa>?4%Mv7Tna-rM(sNW-wJGNuB4DXHkww` z4A%(T{{a#prU&GN$Nq@+ar_3@r`{$u<+u>rS@ggCjBNqRzkF?$`y5HW)EQfF=cQZOQKz!M=ic7|@)6diBTHC= zNnWrEDr5SKWu`0_Ymw}k+f~F;{&9dW+=5^s=b43LfH8XAZ1fhR2{$yj>F+<$Gq$d` zy%egt695;-dhU5bVJ7KQ;1k+3@z=iTW9I=vHygMGI$yLpsEF#P5a?|U;xok+FoC+! zNAxl6&^MBH;*j52Mf?C4+kAT;QB1bodu5GMSw2RSTa4yqzNI(0lxW)-gne4nO8Lb= z&41#B9gMZ_$-Vel5!KYt>be8Um!aweqSuig32{DYkr&4slgGQxN~3@hyn*c6JKy-FXq8)jJd! zo@;A%>iwx5FYGosF}__p)04&5UI7n%(r+wM$-X~T4lKt1JM!=HM~zo3blVTFs{hx( zksC!;<-mgH?WyDgtnWMZ{(T?z?~u2T%1ZweW&EEI>QA>xZ`0lTPp;@+B3%DYr=7el zAUbdnz_ZT#KOf$F$aefc6Ww0?f5iTKF0`>CS@m?k$T2ChA?og(jt;nx(o}R86%=5UkS^B+5+fUeil0Bb7e*k}#_qz@p?URnp3X(hRZqpH3CvE2W z;gGj-PZ;kxO4@FNJT9Ga)dtu8>%Hp)3@&Z&YRyDiwqr;@8?t+VDKK#Hbs5bMp##Qm zx^Q!=7Q7XjQOO_t1d||A1|RQP>{@K@OaMZ!u9N)_9C^a)BDQ(f)s&L8P8M%1hv>AJ zhfl)jel31J3%;9-t{!YBTb{{KG6?IW?B;tQH!X#K)`vgWAh`+2B0J7;Ore|A;@re^ zhjKe(x;)b|(gi3dDJVCdxeYr1U+sN&SX0fmH%OHxQlw*{gCLzCpdiwVN{7&U2ni(+ zKvbH5^dh|oNEbp430;t0La(7nO)LQ^itu9j^49a7d(V6C`R@0f``r6H{tQnMKm`|4S44lQ7-dYfjD_w%BkHbi)0w zF|jlflgL*(ex^dqV}ajEX6lz)?TkMbycK&B9_{<~;hm|FlKhdU^&m%9NV zB9Mwymw;$!j9v2d<{zuXhHZJx+nE8^i=2nO9b;l#oubDR55A2Zz0GlHii3!G`M1X$ zexQ=82?FP*rpsa)s+><_cDNzWLl)J`@eYM=WpXYi7`V<2+xF;qaBzI!sU{+9mGK$ToktlE_4;PE2DFdQQE`?S46tFj6M> zSv~k_6Ye9-CFEFx;!Iy>LB;h8eXyWs=WVuvQSl2iupAFz)6*)~u`aQrgf};b5Mq%& zFDe)06ddG>+r7>$)Hm(3u(xvfLj>aSvhY}M^DLVAcZi8NuPd;Z%PkF=@~IA&D*yy6 zTH%7Dt1Q)4cKVQKkaZnARdC&PCVWux(&VI8^})R4X*%NS2?aX4-AldC&%#UZC^6D$CeO;nAXkBMJfZke^D z4RCj>t!CGAeetvEe9lVRLUp4yDt0JC5-naVrv1Wj-t8@$>szO$J3+4RWB77J0?Zk4 zDa)u0@f<}F8w@I8BF%I`Gr8DE^3UFJ>20ar}T9)bnV2n0QSceFDSNXUEl zRQINTeJ}cXV5VM>7Z$NX>6u+QUJAO!FbYTqc1X=j(7kqUI@xonfu!MQh}e@6oGy;d zZH>_LKiekEir%V(>7u zV>ER5>Z+w$Q0pq4V@jg}l)<$pjN4tt1+s|9K7WFsFYhAR+ZSU2oUgYhnF~YGo!{+*#*T;T7|~%s^oc8JdI&0gVk%akzq>$OxB6 z)`JTpPLdSe2T3^ z?}UotjT=Dr(whRlFq=f1c53k}*+Qp>1Iz3REj}t?{puztBy^21gJ<^ zc1`VyXtYWFc`x)!R|e}v8&vv+CA`$RhtV%h#zl(Q&7-6SUay0?AT8F;$I zshWd!*CT0j35NdMM;`QL%Ahc-%8uvLo4I~(h4(Zxc!)CIW0ZFiG|x<(EnscedM5F$ zSz2F(e6IWz?>|MP|4s1Ir`PUj9j#Hr3nIls!f&EUEHBM``Bm@v`$_!oGA8Fy=TQs% zX<0Di`xCgrf0RjwoT$lT%_Q0#e}6WUYPb5;ai;Tkb~L0brB03ezLVVMZPSl`a3KzIq@tyqqa zx$pBweQr>Wc=Y#A%-xFzM+_dciy6x$xwQxy;j<7mLEQ`SB%5j<1>en0Y4E3v zaL303Uh+lMxmPZ1ueV|TI z9K%aIO+UsU)?<5D)PiA9%&s~gc|vb15)(DUvpBP3$(S|HY=1J<(xm{oZdx`=6@sM< zcZmn=w-i2f8M&}5qnhK(E^cTuV{STnV_vLL!F46h+#f!ISoU(oSyZ*tagbtetun#M zFKWep&7_lv84V^awE`#gn%NQ2(h?|1p0So4LEX#ig4Z1qo;y-|)5{I73LrCzlD&qjjvS$OsQs>lE^?t4|!vX z)JNAMEeO*4Ntr21Eai_Mv_BD>U(>DPiL#ad(jK$mvU%~^6`D`KR7f2h2svcN|EbBJ zYGy^N;T(YjBZK)-w#4d7wRT~@)GYn&NB^#g$&315AMooh!#j*#4E*wd-=2FexBFq` zQNBFDlDP==`h(6np&bgKE++)2V>?(wE??`Joi|6toCRz4cun&jSOlzJ%qAD-`$BRq zrHXz6fhAzV837Ec+{!8}oE_YqLPHGPYu1O|S=&^inMQ4qDD;IfZ_lyF6HaaNR9X!R z4-d21RtIn=rkdUH-QD9ZTmH$-^!0=OfsSUX3*p`aAP)w^*LN9%Z+Z`L_b*FpM%Crm z(>XC31kR1$X+}S)ue?2EMOcb20dP(}&X4olIWs#u?nRaZ5AOo+9hz4l0S;LsboZo< z^~dN*a%dp*HNBiK-PspqV{+C&m_q1kt|_qJx?8L?HrRDwYDDHqh%9}mM6AJe9Sf&q zDU6a@CA-rrwiqN_|6QkW-nk6ycapbiM#JWJJO*y$l2*Z))t>B$yNvR$uHGJ?ybe_K zNt-x>H)?(`J1JxMz?072$!eK%ZjD0TlZ!1AWckb%*N<2&nHQA2_a^WW4m4+fG)>!x3J*+nBn|Dy7Ax)0Hf8 z%9;FT6rJSn#eGj}tEoj3O8{$eGC1~1Tly(t=ldFylmtnd#1?pri#H z7bXJtr7BQ1BU%dM>=a-f8tZ~VZW?eHp$3O=}}_zjptdt?kX;m&`*@FuHk4UbaA zlYlit)dW2K@bY?ZMyMa?qo8iGb4d)WthBIY?@Yy|ERT2LzOfVg#E_HYG;X+K5tgXNldhKj3cc@=Pl*7KsrS0c* zF_Yt0>kE)z9j6xLQqQZR$Wh2#iS-(Jo#7h~P=QQKQM>=z^Y?}k4Ej;*+6Z?m>3#F! zCWaVNaY1Sw2w4s%>e?Q}Y~4M30(IpgRui1p zoV85pO@AFQ-EMx=Ehnblul zyI@NU<4^kVjJu=;RqACx;PqYXszRo;{+CN_Ia37T&S;@V!~;S3j!Cz&Pm|m={`9~^ zYxnjcLQ^(4;GUKjpIE8|=N!Ns!p$BL`?Ar~Dx#(Y)0W(n^?=Mp>)5-h#D>H& z*FGuuZGocrLwCs$jin^F^)gG&#n9ffs&M5%w8x%GPGqCBc7&6YHUElyg6ke9ewYIt zULnAKm&ChgL$^vL%2U%}pBdfzn~5avL)qB(E(U@ z1A^sbkxGr*|$1@mjrBf z5|K_>r4|Z0N($fDpi-G)OIUg*Y&CgUnMms(Fk7?pDZOMOY>eBECbMO2Z3M?)8d3a8 z3$wJvU_#Fr;U&d#X?Wv?=N_aTP_!ZpKVn&Xd zVDDT5&f{L2;3NfvgONTWH8l{#^HuA%tHDwf3lq;s0@K+yc0Q|=ZhlQp;=k9HHwDga za8Y6~?hOylZL8S6n#gpN@K`pbvCFLW&~#?ehwf@rl>QU4fxFqe4R^$b%qStH zvE&^ya+^zP-DD^0eO1x@eeLWooQGBSQfAhnWBkl_;Kv^jh*0u71yaf!Tv;xCSFh2J zgGNP~^Y;>IqKtXU6U^Lqta|E){eCi!mj7D7DsqRW9OMnWPy`*0!FA*a0yr<=NsHEw z&qY!o?11u$79*Bh!GmDl!9&TXS)_N@6VEcB2DC^rL@qxwZ&1+SQ@56(v*on0Zd$kH zrL7Sccku~AJNtI*_SZTLdvESl)MQCqgO1x z6|jA!IaG^==6+`r%!LaozA*A+#kx+D?rCQv;#6L)N8W1Yn3eJr>?JVbl&C13EXq5X z(^TsH)Uj_YQ=oC_8rUyWay|f@7VFl%XqOch_F~!^d#6;F1LnLut-$9xI*eBAif>8e z@Q6S^Do&kJN*tGct~$j*D{~_e>M_+uOhI>)G8Ok!C4JhGA9DYrUGsMC;KnpYAo* zD{fX>y-YOYMY{^lcq(-#snion@7t1doqUq-;r5lE+i(zYUnm{}rcLK3vRZX$VPUj8 z#fkj{mBRt9Lk-=g*$S3NvyD%Uk%_{eU2AgXw?ofcm**!C6?nQ+W;*4|`iI${lac*C zWkPuKt_WAJ(ud7CN2jYP$U+WUL=`FsS zjXK&@yp+ZjE=o$LXvdrbx)*zPMUHNc1NH!M~F5)Y$NZu zDsAJwz%Y!?F#Z-!wwL6LG%18~R9+lb4rx=OyC%KD8|UM8JSIf{jD_hf+SmY$brruF zqAnuWm62b1|9W4PFXm7Nl@5Y|6GvsPB7vZsK;~xZ%Wst=xbZ>awP&r5XCLNW&+mE9 z0g}4AYt!|5S#1VoF&aGDbD5*+UY}_dXZqo8iIl2AF% z#F=u?=G_GkpK<==5m`sG?GlJL=7|ua0bILcYN5JS=NXeSIf;q9q~s z;mZdJm)ob*g<;=j(GL+LvS_TH-;p-f=#=Tu9Jj!e`$frIh$sC$az${C>3#GvJf1ef zck7W?9>F7`5(FlOtxu$82uR3z63wU1-H*wLmcMo11T(q! z0&CjQS5r{Aw5-vV>92@TPmqrKg57(ZvwHZoakCE63wt|?a^5C@m~Ju(6CMaFwAz-g zG7cUg>zeuso9}XxKItW%-ZpKSlp47VRyh>fMhEC%E~XFjoz~H*ioldfK+{IyB!-^c zzS?HxDDTJ&s#0jIgw@lNS2jY{*aK+J%C=QiWhjqvsOcvqw%AzBJ$`C+Pc5Lr7XD_l zF)o-)1|IDK3#(Fd)sM=B&st1vC;36t$zf^+1a&7^DsF>g<&aaDARBDwn_uo@<2jt0Pjy7iH0`<(NynH2ar6d)NOhWLM5qp6Y(#oaH;K$Jj>1=xsF~ zg-_rxs4JUHRCsv;@Or$@J0>;R`u<7%qA`+>FrL!;(>pE+2P+1cj0Y`?VSEBsqH8|g zW`sI}YD4Fk)bpv?ISh7V`U3IM{$lXf0LW=zvPkz}ApEol^ z1AaY_jU$&!A+bneSX8^qNkjMB>gJ=RtaY}8VLo}NI9RO`epFjg@rIzLr#mn4p)`#e z%;yFs^W(yWUmQA!9&*I3qf~#9%Fl78&r;ML6IJtn=-~hEZteD(+SP}wb|zms zH+Nru(yhO!VLp5FTJtITt5HPM?b}>;{)WG~r4sw4$K;#VY>NMz%ON`U)xfrsD^Zt^TaM8kMat@ zx@P4`3Ow>vq&M3L;h;~BNUO?4Z)sKd?SmD{) zn0#cZK+3w0IE&P_3C;=PaB-zu;bZ+%ql&1}!Hc@F&4k*tJDm0125~oOXyz}N&7X5_ z9LSzDm*DrSQ=;Cmh4_sqU5^Vqz#)Rh0GvU$_r*dM%0ml7Etg^fit_gBX7)JuYww_A z4&=>IwGinIc*Nb3V`g%W=RX6MDAmjjzP(BN;)9UH@U&yo9>KCyQg!cz!Ia<8GCZSC z=LLi3*jlM1#*iXlTO^5-8VYe}NeYmGNjIG-@iq=kl-mVlvp^EU^(h<*)-m?J41BcP)o6LY^b|% zS4&n3!@QAZrVu_)r%8U7aL;nlYO$`*b2MH^idBe{^e|?_jHd6AWQ1(Z>~^)2{58`J z_3(2{QmK;l8wjOG0%n`Kb9GQH=}A<}=TX)&CDCy08mPl`0Z+$E&sfE?PoG_>Hh^#kEf9|9s|+3;)vLLc z&Rxz89Gh5mom#fV=A?7q_kS~0!`IR@h|6rM`@rcjF-+wOI?h1#=w~gf4p`yr$5X}E zI7I1#X8S9yovPQ`T3FxEY%B26)zUnKMI~k!Tg_?|y^eET!Cbtd9T2<#_iLm)e4^~% zeFyQz@MUXu#uxlhrV`v`m{U{28{uBsIDI*(NrT(;89v~d^1zqYlrh0vM)T>f=!`&^ zj+54Pg9Wb1SCjxvv{$BK26YqdN;ORHj#Ac|Ow{3ZOP~I@r&ArdGhAgDVuGh+l_^Rb zsA7&}XS3Tb4d<^3jfa=)^l$oQRUcau`MEMwf{$AAV&=4Vis5RBKPfKwZ?%DJB z8Qq)fykDmRj0|3$0xH`TFGe|OewlTg!i~M*igRs|BD+=KU8~lD#wE-R>wZDS?WR)S_$9MS z%)}?{_0HzR2Azy$r%T1lGF!N9Vjfk43av`zWeqNcxx>0%E;9uQ_(W$pv!Os$lFkgm z5!DpSO>h|vFw)BoPvg+H)JtN8U0QfkhwT#|aX=FK73~<|dqepMas1{arnj_p`YI=W zB@VJRTZwOJk^t;YN2-@9+)F&zvbNm46uf$**A6~pS~mpyu(Bgc;>T8qM|cLy&-bCZ zf(1ShhiAZ!BQ39I(z{W{5n+^tHDwAalhN9krA`=84@-AzhE}ga93tX|b&C$lZtLce z$&*6R-&z2{lNuXhS9V8_Tu0v-HTl51?r_q3N)QtR%#504J2yJ}YVT|&LY+#Wl*m%H zCs2rgA%1mn3!M;Uu>0{@5~Z1o61VA_YG(+plrQ(l+#sR4*C{=+X1&KFd~R+Z{ULvD zsZ0av@YoI9n9;0QvlRJ2_)4xVinz=6y!^U%Y9V**>WG?t`%$VpiCOuaKscb}A$p&E z-mjnH6|(zz{5=E|;a%Mgm(D9(E4Z z13y6WJ9dom-~d0b#X|;(QSTndn$xoh{Ux8ZIv``4@a66nv=cWtlF?%NgKN7}0Y6uc zG2Qy?QZE%#qjFmof7)hBX_x1Mn1+^KQ*+|RyN$pA`sS7GXvs&`p~%Cq{xWeb>e9Q+snrqBQ@WHo z0Ltdj&_jus&535mbj9g@Fc&?F2tE0s5$QYG2W_k`1WMK8}_|w$bT$E0L|_jNP&cTs12Vzq~LU5F8KqcEJv%Q??)dXz0T+A#^i-YmDdV> z!$|Wy8OLv4nr&v48JPrm*nm^=;s@WQ4^}X*pz>#iEZB(Yhh$yx@7joTwx z+t4|anSGJsdH!I;>XOyc*pYhYDg*fSq3?EOVSkkchW1|6)W&T62MwJ5cond1MM<(p zK}lh-W~sZf0jyotunO#2SZrUdZ?W#tKhY$956aUpV&o$c0#M~j#NQc-{_NfPU(S|x z>sxBKC2`>|{7aqJZ-n3AmDB!m+wo5lD2(r>YHxtEK<15(ke|< zxOZ`T8fR64>E7Gt0qxl@hhgg8_-#0syjX@pYQEyuAeXWqMy7&eET}xfm5Y_i%H!O0 zNp$1wOx>T)ze;uC z5cC8SRvO6GA^Q1l!QIvf$@2EFYM?jRE&?trUTsIa$XBUX?RhxtzZv6X3(W{Q*{V zehLvEwGFPA+h7F_xrOU+UX2_9>UQjNaK8(y+ncnWesNl+Kgi?75h}O8JvjP_e8Q&? z`?Hf_W%JChQMiAxMFgA&FzWqj&snYYC-1?3DineIKjWnh;|f697h$O^8k4CuQsOoe zJ65=)G;*Qio?~AetU>Wr^(zJ*uQ6S0^6qd7fUnw zvc*LJudQ2})Z()1<=Jm;>DeqG&JL>qX1oOpl*cH=;sv3TXi_y)c_hVbdSu#v`X+z3 zbN}tN?-@|1QD!P4`w_B6)tBZI`0pmp!;*d~I5i8d{Z4WyQTLt1{9Ei#mkRx&^3ef8 zCqx2ea`%(AmW$-X+iu3Y*VPS|+MezWeJ5$6OeHC7Z!KR9nY6pjqEzxo`u%qjT*!`E z3DUEzg>^~i=26v~2-`n8GA{$EJ-)EAyarYmq+0K`z0GU2jG(XNr!V)2nXNoFdB-GT zOw6tHm*ewaJ$qbvG}T_ICu*kPK<-|$@_6O(`R7mJ%y34{Sc3(F1vO3)1&9AK3Cvy@ z;Gm#J?&fYh8@LkrF82&Qv}B<5V6gG|qUd*$@M^Qjc)HvWW?$V+^VX6X=B#)F`Py^S z&x7OgeAbqR+do??``7j~_D8HtBBKmG7Vp?%Cf+)p70hyI(qcK+5}4}h9Elj>mP4ra zHMp`U(F-@oHdAt2O!J!TR>8ssqNCHv(QNg-n~eBTxYm=skCg^-7xt6~p@QG|TE!3C zrSmkg6{iinnPbN%cR}8sN{?=sTmX`B$&{(c=syw_uDKkTjh3S63`_hvj8igCe2-on z*gGiq@4iLJOKiEI3lzzM(Sn#`&m*;t#j^SLp;RyTu=P#x2)cLx+};yZT9x0Nq) z_GhoUnbkd<{Rs7W4UY>f4XTygs^Zz~qq4~_nE;p&`sm`x>4@2E$v2Qc@wC16qF-(t zJ~8yD>qKC2Yc!K?vjRC|z^XU)xk2VuA8d!{xv>gxf`{gKB$b=&eh+g=P@$9FlOB84 zb;~F-46}fXZ$}a4nEC}?C@5!)usZez%E|96i643u7@$}Wz}5-G!ycr$8> z^-NH!ppMAIo=ecfz}CH_Vdb1z&Guq33jp)$ZwLid23Y7Qzg(A0;2hcb+j}ERySsdo z>oY<@iMXq;T{l$WAZZwO(^##Mg=-Jo=vW)_kTtSu7hf5B-IcyHXpEkvk_>e3t(1+r z19yPoxVMa}5C2?^4|^L=Y&lXW2s$FUvff-{HZ7@0YwN*iSN}5nr)6vPd*=@-?}Y}C zDtow%aB*7WNk~R@F447vpH0)DS`9u`VV&};Gc4ZFx=(b?O*>#OTuPt!rM}&_v-=uJ zI(w=+xg5B;SNP^iOSo&M2A}OD5*g9BX8X9>r`TE)?$iXU*COY%8F6Y3<{#V_;3dmi zCL(V)@bNb@QPA9x%zrw{1y6H-^ z8|&^51l8i}AR2w0`fF2pM|f_z#WkxBE?3&2Paz#J{RiLJ*!*7iS1b;H`xtF>K83EO z?RJaLBQy5Ju?2VU-oh1w8sGqoTRaMsEoilTd*V3T*f99e!JxbgCGHJV&+(WNodT#? z+hi18{dn^6?PexwJg+Yc7GXQdWixhp<#KN;1^@sZA^c&~#SAsrsMx}WCk+wQ4NoNF zg#U*ZX_mLyP5pnL@l_sWl_w7eR$jjQ#YbuJlTe2OS~780+TR~ z0AL;d!+(jusO}H)3Lr!5ay=6YpO-H&VYKoAQ8}1a%c@*6Ow_JkThS7S#gF^LNX{7y z#CV>kaF;z*3SjHuHD|Imu=WA)l&bT_l=b;7HLs5-fwgc!SZRVpS>HoOb&6{FeR*N7 zl=zx^Mj&Hji`+Ora3V=eyIItfOqXI`^b| zbR9#9#5Ma=N!=POcD@&1Uq{*0=1x-BTX~+cb5ng3r_3yR9vBlS=p z)rKY#Dl z_K025p5AfxOV&u)1tko~B*`X&#(Xx+?@{oTfVK?jOxfuDd=K;E?523GimlzX3|1_* zz_84rPFox>t?(co{k3R&{P{Y>^Gi`!ESEcwoPLN|EWJrET~0}7^IoGtqf483F3)8b z--eoX#YDN9SrFshT#aeBR>*Q4E$xWZvJ-sCR)H8OBo?5F}09c?vM$hUc2X2Gtt`z;G1&eRQ@{#O$1VTK&_Q$?xSwO^w66pBs$-){t2KX!zsv{Lf~Jhc`_A zVBCS}Upf2-L^U54jefz*0fcW%69rhs3lG=UhvO7{Ap;n( zNX!oXea^m{AGU4vK6Qb`gI~3hjjUAdhfF_Cu!8=k=;(}*PJVmpO zaEoe~*6_luKfmqvty?Vp!mV<)nyPw)(X-04zz}A&rZ%&+g1+?`7j3*?vU4)<21clC znGBraXy@d@tqbHkL3v&cZQZf}3GEBFV)M6dX;m9r2sbdcBWjZyY#_x9A#VIL5#jh9kg47&=fpz@9w~56Jl^X;h*I=D{19kTo!$?48x>!5a?- z2W&YCd1Eg_4@mE*IrR*PH%9I_&U)NH0kpSvuYSxy zLo0NQg>vrEnT3{OPPlLF9Q9ny9BZzRL_FE98(n4Wgj+9a1lBOT09u0V+jLpG zFUAE$`@j4Gpl~~@VC3masE|r%Tr?k2+f#+@>0A>=cEYKh*-SE3*qKUQ06hVARmT?3 zT;1wU_s5dTF0kY}yAbRJ+OIhg7=VENn;(dXRgee5;Ra3DbuL;O5PGjZY)PX#vRlrn zDjHxMFofqWDOzCL)n-3*&E9yR4i(E8?Z@9a)AwcXQkc61Hh=CZ!N{1a|Akw3>;G!C z*(-g(yZQLt8C!bTyC|JS7j&(v+Dp|F8}$s!?1dM>h4kK5yXp?sY?s0^jbdqUyIqwB zYq!wwi=aXuLNJUI><+`57>=1myn+=+7)C-l4jYN3UZj@_Go@6BX|g)5Vi>~NP7O<@ zu*HRA0DgWIv9q>Ku%~0(yfL^q42P0*RW3Rt2NyWeE|dguLIFS=Jgo}FiKhpN1;W zDVkrYDNKt5KnJc}2EhcNe5%izN{jZh1;S2Anzdt4(VkO=kMs;5FMzrWAhA6N zm-ps^a#3@79eGYqZ$XsUfp^_o@g54r_HH11iKJ74$DMg`(S1Ay_x9p`G)GF%`cQHf z_o+E0L`fewjt+{;E*BPWw$-u}D)S<=e6uP`Jq-Zi*t`*D>m{kLfC5g=Z?UT8@B%k~ zPR^g3)eg)H3xumH+xr0lB*>!spqZM%vl?&^lrm?srK(4h#caK4nnFp+s3j?-6EL?x z2&5adTZ~N?YmwT*d+HGMyTm(M8fe_Et2kUp+nh_j)-Psj{dQQjkjd`nyZ$aI)Zm3a zF}zq!SDSXaW~HW;{!%6OYw%}pmpohzMgfUgyDP|<2$X$s$E#JDa+CvTBzU}3?m65Z zgenR^$vzC~NP8coxHSNR3K0>s>nr;pC4{;38a?n6jtX|CRqO9T2akiY#RmIXhhF?tu67k`t*G?ky+;g@fxLF%dx59c>^1;fSU*AGc{|+?j&Wlg`>o zi}%ztVk$CXE)f11?cbO3#T}lWQ@HCv(`z6YMdim}bT$?Ufk`HFzzX1a6DMXUZ_Hi4@GW9K72u z;bvRLEv;0G0dE|;q?nx??#87B!Xc+b_z1|6Q~P)%mho8Y;L}mL!RZY=T`cREQNpu! zIlv4EFVN*I*F^|yM3-Z8N)+3)Z1%Mvp^5`e=;3U?II0TBq)Ha2)h0Iq z6Dd+{dU%5>CPfkNaYL$Ti%L&ec9~*R;;h$RC~#CbpA3+boGZlhfWsKI?-b5&uN18jCRTl`$4N))m;BvWz z=>tAPmW|k;dReSIa194XljX79El%>ua@y`XcoHfnU6T@UoG!)YfFO%>1M8Iuil$p) zZ-LMi%5}OsvY06&(JpNT(~3^VZof{{26UF|$5ta|@Vwm=_&mdo?6f5^Ow)7}LT)jd z<`kywAp`7rZ>nS#2$``tED<`xWZa=Y?P@HRavRg$gk@9xmA0wpSeHqKdj zy8^qBEkNZ8gv7NbKB}@@oSqehs_0J4ehIC1=_%W1mYze^8%<%dTC1kov+k^pRH0&u zo$*eMK~iZ_Y}UjS+?%zCS~r!h%{tSXkEGG2X4leKW=M8hb(}*)(yG?0W_Cd#-gJn1 zE1!+XVYc3HqdMtN>*IW`(hP$->gG@~9yUs1-XmxIhCmnE&2+C}U`d+HnhhUIB4obT zNEacu4_OO@98tqMMPk6!b(|F`pHn7y&Zc8-$Pl4e$#64|?1~MH$7)4BC9r%o3-nl$ z_>MqRNcv=$U1lo`ooxIKk!MV6h; zm~zYDkK#E2ET<&Zks_x>N?OmE$t^+G4JyO5dY++DXrUDsx@{>rYh#irrHQ3IY&Ryo zX1ZjxyOJfytk#b3K9{by+R4!7z~Zb^cbtYS3mrorG-O5SjC;d|Y&1Jb$8Dr7S*cGv zEDv|=|M9+9x6~_B&Da3%Jsr_DV#6_3&GM<{1MOSZ2Faqe(y)d0D>$0A!A;ng2Y*Z&%b~s=R zLr3|c?-((kYiA;&OHg^UHS2Xns^GQ|ygOi$3xx47-|r$klx^c>leKWdr2lE$kwIsH(CVUWhYnb4MpPU( z%J)n4>eNk5`W>qVA=yEHgf?n!(y%dwQ$13)n@QehXx<+B0+OxO?3^OfjKDe#L0TYe zWm^o;Jb9SaSSKU55T;ihRICoe47fpeswhk#4N|NcWMgee541uSwud@va11&gPSRZ~ z3!!dlV5V7Wso1WnSd7ogZmjfmzcKJA#h#!d;wghc$yX{~lpd;n*YqjYov?PsR|bBW z^&5W72D%b?0W}?^ShyId)_6f-ML~PPM2V~%hKDDpON3+8$kXanjd;1x&mnB&3P~teKqIJy zX;pF*%UvAFGu=3hNV(boL4$H}Hj*k6tzY6tDmh7&%TeAeOe?eH(5sII*=fJehWSx? znp3MaZ3@qtty-ud=~cPG}S=cq-LwPC}l6tC7?UTRiNvmW$?IM^9Yv~Hi>VA9=*3!E&h%!68|J+X3YoPrQ9#6IZ&qiTNEr3o z$wrVZH*Bab7qez&ut4aHf!~Y{-RjuNqoV4i>Yj>@TY*-OayeQJi$+?@S^aTXFJQU+ zES4LjlW$cf5X4sVli|#RxKyE9fyG8^={XbznRF5|*d#tg{DzGrwJs__!7!QW=5c7+ zhJ;~Z9Azs|ID^zK1VKq;zQVNCG~-~U=F;!(LMldcOCK9IIpFV#McfoA+_XzL*Jg;= z1TLFdAu*RFVwase%p?}i|8XRSG>TZhPU6)jg>%i~Bvwn4kyf7MyNfQ*3yXhoaqi01 zNG#O`Z)lf#B2V$|^4V^fKl68AgsXs|JP7k}CJ0}EWkFozF^uLhuF7LwsE93>;bjn! z0*?IZl|M%<5MnW10*jY2f!UyY0ATKn?+?sj1n4bbiAEEgTLDl6cmZ(QIRexHjsP6M zj4ctGRUX6vD4M4yoK!3o(?v^b7saYq>fsZ4!dVSm49mUhq+{g?eriTVhnw+D+h?ck zOoOP2+|WkrvszDI+QUw{Nv6g$&A3&D=$V}!16bz^DJiT;EFMe|s8NLL%~Yo~4-m-k zL~l6-xs&dJ!5)r4SS@O2cvv6mh_Regyj-^oC%c(?vDa407Cm4sWC|2LN!VFIay+9w z==kc8NgKl~+xJ*`;Gvf1`{PldppiT0FX%o^;+$AqbQ!2gkpNnu&KcY*k~lGUF^ZJP z*Lt+snV6m8)K$wdRW0*~P$MXbv9zc-V@RGfdx{`VWvdMg37%;z<2E&eDVh^qv}1G8 zWv1VuN|tWxl$go;^;tYMy;QO>>oI~IR-0nB!89G^q{pexn75IV{`MkZ&GlpOi#aZy@QXiv*A zq{&G(ge2X7(6Bg!Kt#`+NEx`*Qc@6Kbh^oEvBZv(K3afah0({+98C+LHG*cLC_phu z&np%bb^)3k%F~UcK}A*&`Qu3K<}9X$c5`l+OfK+%p;M3zA?l&KVY=YH3E8}g_&GEP zl9?o8E!TQzyV9M%Oz-BgWYDNUF=o+KN$}xRe}>wHSRG)qII6b7xKhtZE@I8ZJ`?a` zx}&2~ItNcA)j;`VyP8_^Z~%vJ$aI^Q1lRg_tyIR_Q^#o1a4B06ytD^c=6Bs_HY@Oj z2I_W$wk<_1Wfo2eYo=KNF1QW0jIbsKFI^E>lSDby&re8|p9HGUq!7)Ed@0KFq8&aL@XrAq@VVwVKp&`KYS6O4TEAE=r>$vn={Y2Y(nK2P!h$4Egn?b{;{-g@25eR1 z$_$gPXJVkZEx9NMO@$$;GFS(c8I|`aI`S~F+Qw_$pr{U_FNv#_JQvz$vLWL9w=Pb%KUWwj*^S zJE@MqiDPCEW|vWsQQVlYqr7emxgt3UG7_f;Zplk0ttr|;Ye4tHupk$JGn{F&M2V8b zCd(J1q!MCyOQocGCO=ljkyio(V?m)%8PG+;AuB4+4Rat)W%xO`Tydrq+X<(dB#~JI z#u2&aw4_dZ&^H*^K*Ht}tdHy=GKumngapP@Lp#2`KsXq*bju0!k?PjH!O+M!tkvrH zSkp`S1|4wS3Lt~gNx0TaLKaMLc7AG2(^K9r$c-vSPqSvitkC|$rYA+RABgcwh z=ZttFW#Oc1=ks+lDRu>0X*gf|3L3Cm-6)Sij^{uz zL8{5|(m0HhQ3lLf`@#VuI)_7Q5jvlQARuw5(wxsXdr*Nk`+|Tri!RUMuaM}0w4;%d)MVSYeUC^eC%^ z#`djfg0Z!@o@Biiu1`6>RaNwgUrBj{0%Ju>FoOur@`yjE^|Qk$*Phmvifv12hEDYi zHrs^hv}F;vh`>3cUj{=C>r*0dk-cDC7*|3hWf_QLbX+9nEGJ#jB%Dc8I&kyE>O$$3 z2%m)GtC_uu&tROV1F%P!Do^`pu`N)rjyy+Vdk zl5(Ny*n=VqNk~r`NCsc1mMx;N3}Qsh32?|KMmy*iO7%`KNU5Stz;a0{_3bw6b$ine z80=H5QdR@5P?f}rI%@=#OjT(@Zk86x)xL#_b~O-|{vlN=fOHSBQL$JFtW_OJoP|-9 z8j1KY3gm$8s|^qyVfzCQv+dF(Un+#C#QI@!7*^*~Z<2&S;tH4_rF?zS<&i9cZM|MZ zdkmT4nPR8k?7Ad)4pIfm$sAr_u!$6Q(j9IZfgLM}MvG-it{8e$lXC6|EwQrIl}f_` zO)Q7r2(9BIrL6S36rw94J^>E3098v+7zj$%9Md^>LYL$kQzUEiIUHAbxIzO4}bqr~#`G2+u=U zu&@_iPKuJU2`2ef6~KVZAutx2+m8jp)$Oq2+^YQbh;}zwAe-%iWaNyT4M@6GFc5@lBd~1wL=f;+Hq+HA z6U327!BC*8Xn+vCS9QV#g-m%eG~h4=<|aRmEk3OeY{j!2GOl{O(KNfAiNw;;4A0N} z$Zu8@oX+`a%OR?Lkh(po2i-DixqZ!b)a9msKTkJA1Z)vb^*|n>j+f7my^umvTFf^% zoXC?T#YAE#=7$X~*cR^uJ6@^l55Fn*ukPJss zvjL~_ByeI|&A85v3wjp=ZZ-^qIzKH)vTOp~x59!K=4!^Y$#eueIkK%OKl7GLvsRJ! zt&!9zb?Q+ZiE0kaoX`kK_d}XaQzfA$wGEsw!J<1IR^&FDO0fdS6e;Q4#H}Tfi4+vd z3h-|8qtw#3f#|S{wtYC+*X#4aE|(!&27YsslI%jisdgf z2(~hEnk-7wf$8DX2v-Ge(dA~kpY+?-NF`bpQD<{wVuBVigPBNFD};SiCYth~#|xRF z4YCafJ)*~DZ4&oKVZH46VAdx=G!FDiWYndUL6o%*5(8>(+mrgz5STlD2-ij52FaQ! zib|sez2J!9xW>V;;`zm5-Qv2EOAicKOOJAfNBh-GdEoa*F}a|yJVgfsux||Fvn9D6 zPTJhWrnpj}N)F{(tAYz`kXI?Ch5)wcoNUG1R4zEBoG^BY5L5C3JG5EM3*m~sOyI!= zmLt(MC90_*B(|D54iX`l5)m=vh=v73b@--a%{bZzzD`9MMjYz{-xJL+#(*uPgp3R_ zYKr3#FXppL3VEiMt_1mVZsKFZHrX}Ctm~r#yFg5pRH|2Y9HW7z`*9w#8il}WA!^Pj z0H4f9z$RCwUGK*|+QSR7mS0lX@4L#t^0R?dcW}5o1Mjz`QDrRGmAEfpr5at9i(|P0 z`?Bj$n3wNm=z0tm{%9?ggB;*6XQ{b;lcSWrpwP=el?n+>E3M>!4TZ_Xm3WHqUDr27 zjOwbCSkX9{Y519<*kJ=P0)1ymBus&sLGV0!V9|Z6(CH_$jpeeU@8oep5>qJQg796J zF_d;8oY{k(k~Z9Ib($xrI@D^LB6wJ9DEy2ci2f)j(miF!dSsD^QZ=Bncqs3RaN?em z9K~SEnS|q@GRmo4s#$RJ-J#`&eg{vLMS&Dc=>gryW3w3`m}$3qVWF6+SNT#41^Eor zNGXb8+78l-E<-V10Oq@C=Hp2{9}mJzNZaF1MP`j`121=&HX_kXZaM`!+F}>jA-^_^ zdSsVNd)yF4vKgHc{YKyG+2l6a-tZe>ZT zVz6GrFXRHS?^?eX#tdTs?oQP5`r{d0X`=dBhlC=`-S0u|G z5(FpbQP#)dDw8c@RFsa&l$h_2RC?kz)k!hWk3~6ZX4`(0bki-U(kKIq0@zjsAqala z6f5U9nOMyMA8kmdyybG5~G_rca{+nH1#BBj;2fBm*eyuour8i~(Ya z?MjGmEJLRF+<4{C{(Qw=X;Aa`&8JwHm_XT%8$$Ws8~{mEmI8-JzZK*c01@hRpd7N7 zkXk#v+zuuopd(<6#+{t+vqhaAOx(nY&1VE_JL+dU>8*jr*gv< zO0uikP0LSqxr#PvmXy3xth$Y$*He2k4h_m)3Zw@Zcm`d@u_>{myS^dk3OL(|ouC@| zBW?!5ex|{f!E_kSSE~#UHNi+3lq?7_!Lu?|=Nm<>KWa9+P@_vpquNBBEu|bVBnzx- zu~+8Jm?>CfuI;Bgv;{tBVqLB;<%(vJ%=1>jjoW0k&9mO1l(qc2j0CMd3>ZJMqg;te z2{N(_5%djCb5lAj4KQ4Bak{|^npiiZ9BT~Sna7ADkVr!NeOxYO%o%V;B!1vUbSYuTm{3tlPY*wM6zf#7nB5~Xrj zavLHhC3C>d0nxM;CHr8~wt=<+B;%zAYXxH&l&!#+M*>`!uCpN++zqX(mZwnP^2JQD zA84&Onl{wQb7DBlL+=xJbw-tO>R(v3h~A*`Fr9iIZ>Q+g$YrFrJ3VH2gwv{EvN zdTa#6`>g9q-@pS4WhZvJQz%s(3p1LV#rb@t^a%sEZprIe2f$7lJOclkTQD#uPJ24xqTY+1M9-;#`4;;~E zX5bHyN{zzcVNEdy4OqxlJ*!Q1><)|v9LrB~$=Wj2P2#1>Y46f;t0YB zF11o|sgp*AW>|uJFram2%*<3po%GBQv%T7kYOu4a*R^NUN>d4_47%ttj0V8OG-wcp z2Wrr&GNdr#c(F*gG8B<3+R1uco=&8CD!E%@b6{rm?UYs;WW-btnM}B8J!cTUw<{B4 z#-u^$)9qHwq`Pd>|5ayd1P6^li8Btvthi*A91QWVk2H7e;oX$3zxkzFvgS-NdahzdLQJKtu zOWrqXZFFSe1H4o6Leyy#zygyAjlN^RNq7$e441oh3lF&KT?`4<@0OsRI2$yKu{3{i@e? z78H_F+BI#Fs*U+1JAi@V3o9_t%UpvGK;Akq8%B1_>tls&HDJ$iny@4^3z_n4Oi?AV zP1G#2RU>x__H!7l=HKiGw%c#gesM%QCCJ~b#^O4o7)YyC^gHKD6 zjt2fnO}-VN6Sm-ow5fVc)yn|m+)Xt=vJ@n$+7Rj&hlQ$Ghrpm;@K6s*V7G$c1s!rH zQk?1vcxt3}V`yvxN5RjDZ3KZTNtd6{BTY%CVu=E|?8YF&0q-ZIKoom!gyMV)DlWq; zmd^&jp{;dYV8!}_e!n-e3Nd&{XPtVp7=}nL4|>~dsxru#^{Td}(WJvu z>`dyU$+BJQFP)`9FAHKU?UF-+?TsqXySW3VTYjaPBOto%XXf`@eLR{fl`fc)rs>p- z<RLzrURIf>tf&YU8*%VEtY`LbawiK+wDo$-yuuu@V&3!5+B` zAzEr2Dowb81Am5XYU-#KcXKl^8FliJq6iaayfmTy{-*yQ<1N&JYtD#b%3B0m)idYUk+%Jtey#TUa=*Fbv zp@KdeYm%m8seF%<#|@KVAym?=UOih+4O<|Eft*4f(h*8y#T%K)FjK?Brdr4XpJ^fG zpy!r`d1A;Sh;7?l&{1vZgT8WG{mD;pEcUPz+(-if7dbyIaf*Np+0NJdrCe7@n2G7vLD{C+#id5wbD^??ttRNkdf=4!mq z<=sEP0x(H_B8~Jah~)e=yj>tX0E3q=0QvWOUesz8`sFU#(d24BDwlOGB=X>cJDo!v zL1I9*e~`gJAaQ}P9(SF<6Vq^Qf6C#Uz1*V*u?i&0D9Mb8TRsK8JZ+=6TMvlYaLjb&QI@im ztW%vdz}$rU8DrD~gN;Gv>;oUg0HZ1`^lSOEpm2}QE$ZY!a@w^uNi8>5+t8ua+qDfLjfqF7bTl&+mq4x{;IZ2oLD&HOtWs-7*+B;%ZcWL(gayrF;S;{5H2N&SvNnJfpzrK zILu8w%qIijZamp`n-`6SSrBWU01HND%4snCK;YNgwHjXZh)epwzg!4q&(M#F-Ta;G z9{L~?9yp$>1+sW4$>qgpMdS68?uTI7iYSum6lOy2vgDj*0 zB-Cnyu%cuYo~d{fO6{9+wkAmkjJbr->SpHAzg{^D<;OzIH76OoN==pyCrx{VhgJJ* z3Cmz;zSjh?5lU%h$EmIq6%eLb;SZ`G2p@twc8n0BNdYvAbn&s#Y6Qn3jY6U^)rUJeqPHBHUg-DUj(jp{Cbr64w zqhbU$UQ;9+)rI=5Suc=T-ks`EF|dGH>Xv~%jSu*Tg((&SmSqe~kAWo94F@VyQiCG* zDBd!WtPD3nM!-UuuxhOaO;wd*GkiB$$Gsu6dlB(OJ@R9a*JNA36J$D6g%6M(yUZny z#`6G3-;g1qE==Y(V&{(v!iiV9>Co$ z$jAaAKSR=Msi`{}IF>ZzGqS&2fZOeqT$LC(O1I(ie937j4N@QH1YwE^q&2O?9!Q-- zZLmMl%*rEyPbP;TaFSx(fTf6<0KQB!YI-jMy%{g0T$x5~ZdwvpK`K`j4sN9;$y~oe zQ5g7~wOj>(mL~Y7%FVH9Dk{zDZYPs%H0>sx)uU05hgFbcQrvB^76^CGmwT48f6i1X zY+gZ0&+LMI)5?q&5qbuV$RzkSW9cllKwcLjKzYk+Bo*K*q0ZtKqkSNK#seW7A0&Ct z?cE-T{Tl4OT~N3{vaDN;Bn_=bA~(C>>kc|w7tuz^lLT6>&!}b+E@gCJ=N(jJXl6L> zFA#E$U!rY^!Goxr_VSG$NPBAmm$=^^wT4~ADfQZ<>JYCLApQ(MrLv44&Uv#B8sHv_ zz-O5?=UFlbr)Ym-_VDnprDz1Q=Q1^c=_Yw`2m!Pp(>9EVU7HJle_%B_?->j}N|^Iz z7u2{Qr@<6l%Ufnz(a2ee6&iT269g!cRX=Y zsGP3iApb-%$Mv>bC>8jm&>LG0TWKPGQIewyFqECiqRUAId?{C%DlPbQi4F1`haqCFAGODNQE{@GS#~ z%b-bmK_Rfb{ia*vd!%PHtt>_mY^&31P+UO4Amuio3?tJQ2C(4wK}2eg`*gt40^vbH z!1@GiU6x7UD$Fx}fa3x7&^lRtzJ40cr*{wvoX_I}pv+(%Um$$4$@ocU=>t8$&>YZ| zrNwTD-DF!)0R_NQk%mqN>YIuV%}BnR=Sr;CKWG>B?fHVjKf{-Kr}NtGx7uk<0{JeB z2`2+pYs;wBt`4(H1G}#aGv~x#&4hV}Cvkyas?E~L1H8r*Jdpbnv<%cN14m`r0aGiT z^1-)=9A=sWun`0V)ExJqLaUU9vSl6uWdtcklS7>Z!!YQp-F)AL=2?D)Itrv++aDcBrykcrAe5y&Tm=hj>RdSB)iJ&s)%7wQ$k*QW)`d{^ygJ7Be>FfdfAt(4aIB+L&IK;p6VS!vqQe+b zUsAXS7MgcB4^Gnn-J z*o@T|9mZ(1vD|swEs}-kfGtdcZaslHF|iNWfh0VC>w<^>R}!8JcY)A1Lj@iRj9!Wm zB!^}UV9Fc`ET;%z0zUJ>$^oDkf|e%`EzZ?h9%HlrK{tQRVM_A@j}CY|(ELcHYIP?) z9EHkIGidT6P_e_Z^qneNfU|lR*`6;b+3iRd*0-w}CBMC(b+uexN789USscc*Z}YuW z?m|tv8t}@7;V#trUx|8E^CzIL2NpQaO>tJijK=_fmQ1Jeg)~yg;1r3&Z~;cJe72Ax zGjKKq!lt{)K0x~?yn{D}x-~yUjc}CF=prw0U2s^E-rbF3zvoYAPa1(089EiXgT*my zfBu}M3l;~J?X;dKl8m9LX&A|G&*i)Nc0>U`c_o+M4rkCVYG~<{0fW9hq4{2#=7)4G zAL~z)%3p(hRr3R3cmHO=EU7y{`vbiucv9Ic(d_qpFN)p5TP2)TM`rC(+_E(S$FfaV zJ(#m^epZ%X`1{uGegFW2=bPYUH5lHBq<0^&wxnbM_2fuKZa0jTz`#sk1P*-6S!Um3 z&X#ERZTIB(HISWP8u~@hZr1It*uTkv?dAW8=rng28A140h!2R2j>_Dr|H*&XxK z9QT3R)q2T8jPkM;oT3U&aE109;rax7y~m#ZUl#Uu>;Dq#ez^YrlKmKR@Y}z$ z>)`y^@9E#!wI4$ce*1TJ9h^V=J^eeo_G8GwZ~xA&gY##`@r$^;QHG3a%0Puz4d=lX_Mv!AvoW@0iZKFIK&;4 zF9BsI4!wE(qoBN5wddtE>*nPE5D3aA&CBMpJU+*`M|?cO@~ zszf6H7~sw8_SUIyP9$#r$3)_!Z||);<6jerqc2G$Zu-iq{+uw^msKbFTZXn{&d@#A zp9RQ3IC1FR?#poF7+A|j(hi?5}Tj9BXP`EHYe8p^v=Y( z;|@=(eb(E-la)Pks~jdJ<|9u&?MF+!2W9Yl@w?B@n%9EcH6zR1GOs51<`!)nMDsEj z6Z4-#5*rgoCpITePCPBKEpbj_dm^34C7zzRI8jV6iF%@$XeXYN&=S4GAQ2?u#0wHH zNxVGq%EapuZ%n);@s7m16W1iJPkcCWbK+x(PbEH=_;TW_iF*_GCmu*VnD|NJ(ZsJ4 ze^^;r*|2it%5f_vubj4W=1OuUy^>$KXr;JPS>adOE6-aoSB5L&l^3kMY~__JZ&-QD z$~#xCS^3b)tt+2e`QpmmE8klA{>nou|Go12HEY)#v1ap{r>;3`4YVe|23y0fX|8$p z8gq@mX13;%HLqE7#hR zwVk!ywZYmKt-W;Z$G+L zx)-f`)w;K=d*8a7)_rE(*VcW1-J|RNbjXp1oO(#|ke!FnhqMkc4~Y+X`5~7d^4>#k zJmj;7+KQKYM*{eR+L*eSiJ)*S~80+t%N({*&wPUjM`Ok8Rkn;p7d; z4Hs^xZ%{Ub8(zNQ%^N z^hbyO;jm*4JM*xeht&_$51StL+QZ&`*hdfh%3%*4_J@s|HlDrl!i~+1{f#f#c*Vx+ zH-2{GcQ*d=@WT(^dU)Y*?r`hye>nV#!#{ZV7Y_ga;lDfL*dxw6f;i$?M~shn%@J20 z@yR2;b;K`^Jo3o1j=cED&XM7fuQ~FXBR_rQ_m2GSQO6y%<0$$l{iqiob>&ev9d*x9 zKRf!cqt84VJNh|C&yK$Q=#L!zm7^ay=CEVVI)*q#Ip#&jTzSl`$9&_M$2J|e3EouS zG}!d2P4D0I#Z5mxcEhn}9a}tBKlYMi-*xP#kNx3sYmeJ@9C4g>+{=!8_i>*+?!nFL zH=n(k-rV2(%FWkpzH9TN#~*t9_oUrzUvreE-a87vb2_HV;z7u|b z;!{t=PBcz@#fjISc+ZKyIq4}UU3`*p(xoTeaMHae{r==FCl^n)Pk#N$H=q37Q`Vhw z-YMKE@hNXV<+G;5myi@s8pMUDRPQCNg$DaDMr8GAvK7D-pJ5Rss^gnDpd#kwhrCV><`rU0Cx8=8Ww_UdFj%|;gaoQQxGhT4UwP$?$ z%)`#ipV>R}O=o`o%-@`K_F3{-|8&;PXZ`r>lg_5ko}GQ|+21+m$a9`?j(^To=Y0L# z_2=f#wafNdP;bUP2ekuG>_`lQVrM2{x>91#w z%utyZXKu;-0!bnU@^<8#+2gX+>_27i$o>xsj+H{MM<2?ak$Yb5t+{XHH|HDqSLMG@ zIHZ6VUR?NC;deXHo#D<8@BI1Gw?Ex}`um^$;|tEdz_{Su7yR(Ttrsd6zVpHdF4}U@ z^Dg?=iynB!>CaG}an&<^aPhW_^^4zo@sF@`u|D}Pli93*oi{u^Q^@j~L0%RM*59R%5RV#XhE$Pw!YjxrERru>1^moo%ePg zduH*OZ+zy1&&odQ<bo(kmt$Id;jzPsMM9K zl*d$BeXIJYMrd!+exhHjU#34~Txh((_)+)5?i;#4HZL^)#eAsujNawFM=Zj6i}j0s zx&My-Z|u5#wf(pwJ2wmt9XxMv>+o2Re)t*pY3{_m+e>;c_a5+f`fv0f4cOqlqm|LK zN4JEVfirdI_?+=Sj=vvW6kQqpHkRU#Og2r1lRKy9O&KIq`NPW>AFW&azOJ4loKa~FAeJ|Pg68k0p{?gP--|*63y-a@DM=yEm zCI4{A5C5_BkJrBZsFw#X|HeN({h!|P&+Go#`sce|k$J_NU-73)^-I6>%G4__f8`%v zrM>D)uZCZJ#j78GP4_i-y%v4#+h4c-b;H-)_xfkN{(W!Q^oH3Re)uodf4S+hEtg$- z*{|OC+&6yla^&)NylLZ`#&3GyipmwYy!nhbzwXU{d`s^w_g;x#dBa;zed{aU`kS}u zZ@cI17r*`bcRckSuYAYv|JC}}Z@#ni&YP|}>#ED&wf^FDOnhuII`@sa#TuK%|)|Lv_e9(UuVH?7<>z3I`LdpAFDOZ%3)Z)I-1 zaKYskjU;BxTpSa``kKaDK{jpDapM2y~=BIvm$8+zv|I@8c zfBiGuXYTqe``Isij{4lEKaYL>_Agxcg^zu4=NE7NQvORfe;NJqO?PJRyz$?&|9<0L z=v_B`CHIwEzFPR|NAJGi?oZtFjC(%yHS%kp`#SygFW+0c_wM_|`@Z>&XMN*=Z|dLt z@wc3B{o>ovxBqbeKYZtq?_B!bW4?R&_fGxZRsV7Bf86i@`oPD(Pk#T-9|%9V|A*QS zfAXKB|NP^Fm;Bd}|8@C~PW#a{KTiMnV-Haeef8mIKK$TMyr2Bxk(d8;(@)>}vvYp- zZ$H2I=XXBZdi23x1iyIvzhCvslYe>juaIBe@mS-r@BMo4>p%SF(%+u^+xPu0|GUrs zUjF@${t*9h!ym8spL74`qkm%m^qt2Ck3atS&k{#1g2oB`lfV~PdHnvwC5eq-jyiP1 z#zPO?c=Sf_@7N@mk|-hA{Xa2>sQ^NA;&a?**LPdn}O(@#5X`}yae zzdgO@S~+~<#>0;|{HP<2IO^D=jymet&EV&#%_nc#bnK>0CvQ1%Gq_INa_ZAgIpvh6 zow{w?mMz=1C6nhSlY82yAOB=x)1hm=xAyL}D_aw5Hm$7PwDS0860ZU7&6>6Iwa=bw z<&d@O*00$B{EIzR%fiYriIug$UD$B=#2<@f#Y)`#zY=B>A5XFQ%rUwg;A|n3x88W-A1{0E;|cBf@4RaCLuXjpdf~M%{l=@l_vXTfwp-Jfg6-v7+Km97@bL%hq@|%A1+=sq)S@f*iKl*s0_SW}S z@}K)V?Ehc+06qx)!uPIwcIVRXzWU+E-cxz#Js&^enrrUOpXk?rn!obu+P}-+D}C{DL(&yT&3(QhGN5MBQQ|G~lN#t&V~J^jH; zAO6i(AM5GC%{P2Iv+X;tu7Cc@bvF0RyW-zm{IFb|!FNU1Qt0*ZA6^7qcE>ljz39k$ z&%3=CAO68ld*2ei`_TQ{Za?|_?_ByIv*U&LedptUT625(`PcpGo7bQ5`EAb>pVL?G zyZYBJiN3sn-uABHb@GSbSi9kKZ~Wl}k5NBAcE^2Ry7nXg^Kt7RCwH;6TW`DR6Zc$R ze$Lyp4~%cSdh3lJ``qhdYU-QS?E_v`wMzZ@Z~3tF(d$}QocGvl^oh}>AG+wmuIgjYWM%ERtC`?gn~ee(-${J`~Z6g#gd{?|>Ht-bLPU17l_^#5!{}zTf{Ncsd{r6jc;-2}YYWcqJU-ynbz2?aG|MKBSuKWH~ z$A9~h-z4AH_rCD^pWXbF&MWTepY#8)_nu)*ZQK5E?AtCPAWhsfrArA#1l?|mbOVGy z0;qHdp@m*VtPt9!gcgu(=m`l@LI~ADuTnxu2-1760s?Q`ThF=o?sM+*o_pW_`{Dnb zFR+p|)*NI0#&3){)|_*#@Mii4j7Q4?&0B{L0IvF1w&RNIhkK@n_}&>Pj+M;iS(8X8 zVBK!J5EzS_e`C97m*~3ZNCt}G{GU(oCQ2>Vbmxe~h5o-tRC>EPx%x)JJl2@ndwXdeLjnfMqzo|$EhZ+aDo^nKFz`h!D88_f*urZ&iLt-rmHV$r@(@Hk5i2{Kw{ z@y>BK;P7OS&qf)HXU}yK5!JR>L0$7ZR6QA})V^U}9kn~Y4*p1NvdZa!^|`sUa)Zq9 z_ePIwth0=5*|=*-{h5v=Gtvtp-@@DNOXtP1T9cH)_&6&s&k5-kd%5#gLYrGaH->3Tzt4LFTPfh!gn&siNW@2SnhjxK7Z@SvK;QXcqRsJJaH1}MG0dvk1&d6D!24y?# z+*$4UR=<3wBw8c>1D?ycc*{v~ya#AfEr*0o``-&EUGan?oO5fQ@gY;5xE1KOT$vrx z=+ekQbLuL3a~qk9;-SCkwK)MDh6D-_gn~C#*WB~SlXCuxsWUc_2}J+;jmYMHTID2x zH=ubmR{EV;Lg#I1HlCYN;tIU|PGft&L*a>cINS-tZ+rVg z>N6bOU)Wcq@dQVWhgIpC?~%Zr$w8f=M(;F}&z~ArNlJ&IbP)Ja^!de{t2|KsCHsV` z-iH@`y24%MU6&tvk{5akHizD|%y9KKZkb8q2 ze}8(G$agje2=O&yXJeskxEFs^ir;X`@R?K!QGByOo+D@+ti*u0Eo9g*kJ`L zCWlZNT94ppUKc77&BAh-h9h`8kFv+k^!Z_U5Z3*;D0oVbxrq72%7-4|%87`|yg`kl z$xWq0&fds#-8kCF7wNu8XzFuu_DJ2uuz1%k*oPCG)j_w%+J?{W?!9&e%s)bPIbg*2 zZP{zoD?L>-6vD{Tp@yaO`EOo5 z0N68`qK`*RClBZRe4b2#gWJR6)e6)r0q&S7BW}OK{o&8$=_`}V=O_?^dt_qNt=y7n zGAdJd@8)GQv9U-_Ar`#Gf(IBdj&a*L05qhe51&+CQ72<+ew$A|hVSny6}I)@&jBhL z=46pdAx56f!7siAjn6~8t30>S)z7NT5L-T1%_xQ3DD_sWv!2t3`?9C9jmm7m5twWr zzr1f83@-lWn<^$|3pWX5to_sfK+tNBECp7?dylibrCxrxB+qm2TZ^2-PSv;0qFsTN zo_97)8^rIIU*C$eYfff{0q(?EDq+n)$|z2yU2k@=i^v!r9P}K{L+Q!at08%%EJ>Jm5Ls-`riin zUTE-nNair15N;ptw2l>Gj7CL5M1@aSQ>5lTXdZOlZ>$+{%99w??4US6%i8*7en*ANcnV`%WoN+drPV_ zvlp-=;wb!T-~z5sJEv&0?w`yaEazN>!TfWEi|wiUcU1k$y|9`05tSgT-9O#bDj; z*RiKN9?3AxAL!|V{WM)!$wzTp_aX2>hiMy5%8@RNKzkpS->21L19{Rbj7(gq|&@lo67e~y zcN^`0KzR^L@#}eyrmv#!Yvs{Z?HaPzgpxbjYV4HC97v;wDSZ4*-r>4UNd8Aq(51e@ zM8mRJvGww}w3N5v(TsE%dKefsm} ziSR3zaQGJe zO@$Zu567$UBt_4y7Fk5602xwftvQJUvWXcM?GM?R4KSLJ;ss@8QEHJ(5b26~d~T0L z=*x*rt`ADTbvWvPGX%fh+YwWRh(oi3O&9z_nz{`^3WE0ORI*|SJPV(qCmk86Y?i@Wp1zwBF>gmsvZ zsM*S=2pa0;sQpb`Oao=M%_1)u6l=%)p(QttzHW=!-VL~AF?3RI%sNX%Kjs0#(PLM? zHRU6oE~P~u4^pDn_LJz0Bfpx(-H$Ui9iaq@>*%(^uT1i{q&1?(_0OrY3P?$b55OJ0 zWHZZR3J1j_k*UcRZ7mQ{$)0{Q#&iN%LFEyvk3hztiaWFxM>JWFi>|hv$3tZ?Z79JP zWd)rBAC5~1`$;n2Y}lL+XK?Z37MPDNMidQ{Ci^;;d~`+d7R%Jft4~P|NiO(CR5CCu z{UN3?MS2!3%7*INE^JL039}A*QPqcv`xRA1I>~%&6+$k0gTIj)=N-b6!60vu3S6BJ z@WV|NW&bZV&6vR6^%z+sWU{u8)RiWVqPN`^u*=@G*nr1yNCCrF0ZquPA^L}wJR;0X z0J>ky--Kp?rnX0lVJ`0HGDrm9Q*@P!Lnqno_iy0{NSnGOvK?o*xHo?{kC6i#SC@tO zW|f%$L_DTD2&_&0Z2YObEag2h23kLKQ(bd0#t`U41^e=1WCH7=3eS!g*n>$!6kNE) z7_3;K7r4GB<-b)7Dr}4b#|2asC^;m1)K`7I^IlnUJs{k!bP*n3-tnR~Di%{RJl#bJ zwNda!_5)qA%Me3bz5|)aP6fv{?4x=!=rsFV6+V9Z2Rm9QBNs%}z72G@27WX@1|mOO zky$4*sje9$4rd(3^)Aj83ZZR~yjLuSG(|l#jiIBqRu(wfy`G-Hlgc$LRP6;d37bxW z;ET7mnFyi{oDkH!eVV>MKucv9tr zI?c9gqO!8eHZ$>}z{3zW^Jp)Nn8v|&f)n0cM{8YKD|J8w-55GJIDwbna~Ab~+c{j6 zwpw4g#h-It9n79Y@qL0P$7<}>1wG=4&LEp*g3Z6Er(GW(SJ6Wv9SIpOb}?3%uSsJb zcq75U`8F?Br;)oOJI?0=SB=tCbz7o8y;n3i*Dc^VKt;-Sj;3CkF+NMf;Yjk?pT-dv zb5T)HP(bE_9?8mi@v_TA*-JsM67Fpt3YgNFBq|AXV>5AKm^rO7mldqaD2*ip=-j-w z-58=N?0ue4PgnH}X9}kc66>;}5FS%z7>~7n`?=J1YYf(s?J`^*kS15LS;479oXl2M zjCK#Gv1tM?>2_j4g=?|l<{UDLr|97Ux#E0yp^cVIZ!?8+XcNI9JO~;ws@rd+JM*}7 zRdvWXEHZl=ItBbvpdkEU%qS>mh@{14PI=>xC!1z7!Z1KLd5f(2UPB>9;}B|e7UDuZ zgtaKz(s??A+Hg)@iQ_<8POcQNloML(H2Eb@Cv!YP(P(0(urt2W=ms7q(ntX(+9|Y> zRwbYH_@PpGT>wKkwU1H|^r5+rAIC2Z=aQ)zxI=$l_W9i`B|$#gmKWvvW^#$OfJ&Yd$4FHbX6S^0RUz}5NlDwC zJ5K$KHh1rSWO=01JrcN%r7@mXY5VznBOKQM-j%6{JJV&f+j) z*lPfTxq&y~8)sp!W(m~wJ_{F_eH9E*N&kxTJdwbMFAeY!jJROBHqB^U9W*qK$eilMhnf&npZ9pA~} zk8C#&0NZD_gE2Z*Im~sGpVOt*9QY)TJ|XTh=!x_8Btr402_Ugg<~@FwT&kIkAj2l!O_ z%bF9s>UgNwY%Tem0fA8qR$8Fet#`MwlX1c-8B7^gou01r?X#HM$5L;L%#B)bd^`Vs zMKXLrRq*x0D@M9K%nAAFodl2P-9WViz>aEGYED6z=L5$T!L<{$I?w+4H(}nI*#B0fN*|T>=IOqUlEH(E z)79OhT9fC$D+R2U+vQex{h`f2eNp+g&_6NA)nO~R$^N>Ytg&7SQ|&+KT!55Oma^vg zb+cv;ot|D&&rMkHu~fdl3bG8OWPt-T+2~)yCj^RtdTHN)^Z$~lzL|c};6|VhcGn>6 zTGENvtvv?-_YLt0-elb4Z}|TMk(Qp713=@#x0Zf*=^sjcZzz%JNX7x+pLKET%F;Ho zp>I+jAFP^@r&N9zqbk%Hlv5kmdZc;AKc%<)C8Or)H}9k`{xkpSlNNY_JDG4v8T~hK z?S1Sij`#l4kAKDKN`S0U!vR2m%=VStBdWD$&a$&%kKN;S^><_VzPs|!R59@OV33Z| zUB{FZ{%a2NUlaa;(1d53Uhsaj5A!6mEhZp~!T*>umf1B208RVx|IRWdk2_gdK?B9h zX3fffbNfGl{%@L?XuTfl{AW7ta!wv>*N- zhg>=EgKcIV;K0o6#(N*qH_e(I;9Oqw-o%uEwt43q1@GPklk6VD&94344cwglloR5; zQS=CaBdfF%4GtYTqam743Nm(Ir*B(W1ibZ=;g!tV@#@==@e@Tpo_?H% z-x^u9xv8hKK3B7DvuZ3b2GQD|b=~0o+EZ&=aR5Lo>_qK5S^W=+tpDvLzX-a8tUuWE z4NVDb+UFBBTpQx+7TQ&XY2V)SI{+MZEuPS}40yj|USr?lz{iU{e1}hS>(>pv2Q|#% ztjp;^j>Q2W<63Nv!s4shl$ytU!oOzr)aWyNq+uX*=L_}o*Swk@pEVAwEVPG{&N@aLY@-|)k2XXjPFw{cI=5Z)g(C~Nw`%<%+<#WpM<$3zX9)LtNilC zuu@Y0hM3dy?iX&qIvoIXYPx57lhrKBNDgItU`qi#kO*}6=*Y(x-e=qvW5XjM*4}~H zt>uBsX0V|uzqqOFj^F1~A39Oxmk$}6D_(f?_Jl7g5+i>qbwz$uU9Hc9g^FQ*n$QzQVJzun)gB{ZxSrg4yja20qV;%_gsUr(x@W4sp{N#?F`5X zQTLF%DA7E%VIe9a;01N7oEAx_m_+(SM1=`UAVhO}cHkcj`LS5ajRF9xUP&G6bC#Dp zr|$i0$R1YI5_o4 z1WeT9{dk6!iu8nq-#brbLL}fI6wwrINxheV5h?jdc!Z@1-QG!9_c>*ibO`L2EkC8z zZhjy#Xp_|8_F}^r>U5WKBE0mM+b9qF->^kXH6V`Y3_tIXaH_ZH!Ma#?Bs5$Xal>} zug`-Z!S4L}vqWWbeZKLIm^L|dinowW@rLCW)~^AtG;Ox(7D*pRKd3bovmF4Ge9w85 z7;o$2wX0?=7Y6mpP@~C8MdX{oDS1VC^(Ryl$vx^2QK_@g)K^vPLUAUfNwJJ5)1e)c zc+FChaleasK;v#w8lTS}E~ zlmxqn$>_^F*6LYo@Q@4~%nQCPK^<6~m@>pbqXwcm?H^@0v6sKdj|yu>MdM?L&8c$o6xQOUaNogm+f&txPoZ;8D<%@Ex=KHZlPhc~Qf z;&VN78zC$=Z#C3pphm*<<42Zar<4{UD&P(eYP&fY?2Y^FNSLqDlM2-0 z=aCr#dO_BT)9uu^Vx7!Yn;$D&NvX>`3>`biLeg-S{B(U` zl`>`MHLi_MP}#M`f|@$LSYMozoOG0woe^#Ju#sD@D z7;wxOeCH6D?LGjk{(t`$hYUrZV;2f8I8g(h1hF0fEQ8-+=C=(KUoSsSlp0v2ftaOH zvlr)otciaQ^aY>m@cXfjWdb$ulu5I>^g`bqg+Tr1z-8Un}Mc<=b3@)u#N zY#U?a#b5_M(JuzD^>fS2`Pm;02Ely8-!rz4uP7!?9+|lP{o02={|E!MC*+Xg>cRlWGb%qD)r4Bsb#IU^E3tb>2=CSvsL=%Lm0=cJlD zONW_rr9yd;j_kuN$wx&ZwX6J{5l z`Tt`Tv;SKa-(hE}c$MF8d_L~$wLh(V_5*Fz-^y!6Fewvi+1JB#AAhp265Khr)G0D? zXf62p#`m6mzvfk!vfUXaqUGwfR1VWuvlW!5h~+2SHGjcuhPU7xPoHSPG1m5z`RZh` zYMZtHDE5N^Ofhyj>$k&LzmKIq6J#o?)c%QB;i;e#CMEr^-4;TPrj;iR6whP++Km|c zg+0x{rm1uNFTACxOV?6QwC#V_^mh;3TL=|)vZOK7}7#`8%fs zNF$@>?%ID?rVA$OpADP($9P!r<<5Icu(tCSoHa^WTs-;D#g>w9jeIxppEmVxnLk|k zZ+!ktD1Q$-Ce8jY=LUosy5Ic%Bbol_I~DubTj0wj@vyJ|F+2ZAA+yA^NHyjzOWS62 z&PnCkZN=-%y!*GPfBhrxnnBSJBuLRBWWt5NpIGM$x_=)1*9?-^%b$h3hP)&sY?TG2 zq+l$bVh^nr{3QueFFK@$^F(1M-h&)QFOG`uR(=j6OBj|6K-~|mcKlU5LE}Y?Jji{N z_J?Uz-v+<;%YQR%2q^ZdRUtGCb)7jd{AFwdxd`YH)fys2@0x!gnN+c{9)o6oPCcIx z_?Ik>i!1b3EI?i;u8(Ra>Nb&Bi~y?OA8OA3uxbZqz?JQU1^R;TKTnH#k4sLpI<#8z zG>0R-_49ss`I$3ZMuqba9z}f#BO|#B6s}N13tnMG`m)Kjy8^mBZ<jB>T;f0l6CKU z^vbY{p4-?+#8ejBUdbmus8u(nQ8hh{Pqiew@MW5*_g-ll;L*AjN`#1Y#s`^{jeRr< zxaZtyVL8yEoOMsZH~?2APuXQNd5NA3%T?`gcPP0xnJFvQ#D z)3%$x3QI|AdwA+ZT}v(ObJ41f61TnNakeJ-+ z1Qtyi1%LcqkGHw#xR+@%@5RYHVK4P*m%&-GjP?DLOYN0UUGNl7S?R^HApvq|1K1)? zK|y|KnBC23K4tXY0LMt37=a;)C~)e|NXUuQF^@LT5;Af9xikj~#e2A3j~PKD!H_3y zIRi~cTxbV?{kqy%vRy+L<`T8Cg!*$(!+kG4WNZ;A{Y6F2k-qfwE6bNTj9>Fw8-+!f zVPCl?)VHs?SKV1aQ;EU;-S+h##zc zbHQ3Jr}EgLR~NPc4{z{Y{rle|Y$NZEA2|&AiT?EJnd65XU)+C$0=#>u{QL1E0D#b$ zB%6ju5sjg!TJ-_u#{R%=oLVbJ7ANF z-$~}OMy`hv?-wEHZ!#+|&)X`z&A*zx#R=B}A5~H%Twup`T;F(Px--_eUu)t-g%?6` z@pYz z!cL0t7E^1D>@Ram;fezVI9@@k&r)h$$RF}M#vrst59$~r#Gb`D`G6E7?*HORZyMTC zvhpbQMv-(`)6|H^ProFUr#-dBa|FByE_+l`^t8{ge2^?`8!j(O%5bCM>yPEH3f^xK zNc_D|c~U#(Or9J|bNI6)>ULK)vDoo!d%EgIa!g^>E?6EosGVvb$!AbRCXrKqTD|wh z6h%ob69qnwEx5pbA`EQ^G&Xk|_$+gI>Hr|p-)(pM`lV7DVxdR8Oi#m1jDz1-Rz6`^b8B|fZb4izng>k-Dp zN-&KahO_sZUdt7?CW#_r7VJ+2J3e~kbyUl3fKSuw6;_CYQu_p9reCbFDS`YjVT~iz zg`(vh;w$27LO`;X_w{I{M`5MZlAL|D(fcMDSSgmD`iqVr1QZ z>Z5Sw7&qNU8i6CC1#Vo5V6}Bz%fkod3@{{DCz6YDxZ{rE_Sp1qh>+lE7TivGc6qSS zPDfd9NvjW>Bz4nH1cxMNT9s3$qRA`nCAG8V2}6C1F9!hj(+M|6%^BjT&1$;%x*87e zH~nDRBt>ujrzZZEVAp$#oXK+u8Un~sR3uc%7w~rLS-!H4zYOzdA9*Hmec3~ojO8Q^ zX}u6w2d*kMOZ9m;Nj8Yh@|ePggY`50!TMy=Asz^vRw*n7+ja0FXcaZ7ThuAxr~ASH z@9kaLRw)udg_eXQn*i^=IVHu&AmPc4ons#~rrMC=9Vj5Alj^CJ5ar`pR8me(hoC!^ zWsvZvSxVvcFB2yo@CTB*n_SKS9! z?hQ?Nn~)$f2;h22WpA>4arSJS))})mVW9o0R5NHR!`KX+@n4HyL}%-$gQ(QyC~pY0)IVoG3|8PewBr z3vxGfp*YN?-j^yOW8q+C zB+6pnsX0pD*(uLhQ$jb^tc5ob>>Z}#@WsFDQSw09T*($&WCXM{?$(7x#x>KAvT2=m zmTX5dafb0r1)dK@UTp$?%Ds`x1F&=XK>ks*2+xZJ{ig*%$^qc}ieSk&b8^H8vh;Dh z(d&2PSy>CO#)XA(#*`WuDo{#+t%uI~H=LdFQ*a(wd(B)PguMDHvD!mA{Kk1BtqRGv zo-uLS9!~|iil$02iuq!*$`0q?;35YAI=$zfV01nP=vL;&{yEtaBAn}e(#mKDS zYqR@fo`A<5H(wW{2orGf^4J9P46lJ{&e!r0HN8PcgVBo}W*Hz?5pAjhXfOS@qM%k7LvI4_}vX4K8B?Q zA|zUI#;8RA%z{_jJ~L>`SH;SB59cPZwD4Eu&J$WoGUi@fI8I<1Fu`S(fwA7Ml~D5W5U&gzr;(T-AeUd z*nPE07KTjdCqPZm+1;hzFYpdZ&sa%oKEaa!@fdgRXgkdn;Sb77HhOgoXC+xe)+G-- zzz|%DMhsSG7|K^Viq{{@QZ(%cc5ZVH{_a7R@6vKVTkA6Q5p(KVw{E4VV^If4C#Rh_ zgJ)~f2)dNRN&nuyvT8@?m-dMxDX$gU9KPT+o4AT9+)Y09z9m=iK|LxJm`$~9InClTMHC$2I78O!a z4=-=`1KwLq-6=XXfnc2}mg4N)49af%yyA0xe)lHC=Nm$*J55~{zq+4Bidpuc;rdph z6gp&^YYWO>ZDzvO!rQ_#z=~j3hY}@~quw||Z5mL-fwgZ(F1ueU;?HSnb|>nWdPlw2Y2#&(&tamS{@U8fW@ZRmbJ>%OxarimMUbk z2LP#w*2VkR4+RZu!hC$Q+mRHlS@wA15?3F*^y}~+!VB`_bcTz4r2%Br2-MflG?B2&c+?6|_UL?EMZzkDN$f zZ@NiJ)~UK(KNOfCj|(?l)@2c0NLNxxckE=WLCU|i{x~HFJ6gCv5C2A@E=)}@?OJ4VYMqoKd4to}w&{i9RL@vl2dvZebbzI|Dvb6VY;UM}jx?3QYq;}Tg~P`V+!jsQ=CG@^2Wvj%NCfDYyA2+rP8%56%CXY2RG* z2f3NO|AzlJKn6A+N7sLA`gK&g80F4}Q~CmJNb~>z6eH=$kM0{s=Z}+&TW%?_Ad7I( zE>74ikfX6gN_}C8-AC@Y)Zf7t{qkZkZuq?e!10r#=A{05elk3v;$)8}ETB(QIr!A7 zp!&-|3p5M@q{s@GL_tT*o?KsAD9Gq~-84C8m?b(-h=zBElsU`Z29?IlZvC3PL`z1? zKdNP>!VKzF6rRU3U}l}k+7kBS2I9xn7y!M z`*?GNYdo-|#T6Rf4It{$cL0z+{{=RYhcJTPyG%YQiWQ5w0nRcE zHyW}X8#w~J4?Y95lm?Iee|Ge0UK;FM2Z{JeZpq@Djn?(??4M?(t|($&rqw62eOxOy zBU36yAy?3G6KSCM5V;(@U&CCeu6QHYxHWUJ)<>3-w7lyS2_<1 z6p<@)p1PKz%uXw7lY0Kzfs5npQ$g}eA$2&itAwby%#rYUW%K}WBseCU!PQyNKGnG6 z+)7|>^DqjEgkSDe!1kzVuQ2a40Cx83XN2uM@1OiHHy(FbEO3yyn-K{YGR7ip{Cgvq z^Ix5?cc@g`S0~)CTZG#y1~Elqk^_1z&=L>oyk_T3iz`>`^FRtd` zo+&CDhhr6z$oM6*!M`6<6~KHV1R{zpRxwK3%V8_)>FUygo$XWM>8pZ%Ei1+CtoZ0x zDR@k$h&v`Y7eR}>vv@THJ^k;cxBm_fbj;uIy9V?1DAJTxigi{i$h;|W+su>ZZ^2c2j!OWHN zYB7Kg+D-(Sec|QNm&*COWs8?5n;A4@F;@B1vd@_=xKha!<3rs`4WnBeA_*GcZ6n`W z9|idy{*xIndN>^=f3%6}6R+;7Aeb!s5N%N+Mj$q8)Fyk|f_co6%HZLHV}bkV)9xB`3{w^LLur^Lp#D`M31j58~RV0Lka zEfSZln-1FM2E;-r=i+|9~Gxx-IC ze^w^bnrE!S^MSa$7-Ey9mzbH@-H+;9PuD;%?Nwr=JL@MjIva758Gii~zoZ4FxqiEs zI!VJNdfm`uiwa9G7#K%BR$JD!b)W3V%4ytp{dLGb36{JE z+0?^r%zFGCe_nXCr`)_3yTzn#bmR=Ud7b%+B5RWGJBHES$;BDl!GS`&fFaQ{m*Nnv zjxE%iU1j6g@^kU8fKGS9+SBsT?qH|RjqN+Ml4|6HslAiD@yC>Sbz`EF9d!9hz+JU+ zPeTC#J5F99n7L>f?zQJ8Eu&9>A&%D%#Px|vu$NerrF7oi2EwXIn#IejKxw#N(uAgS zE;oB3*)^GvqT?KH-q@h5T9+l7sC z4EHr~)t3er2kDO{o$ zyy>cyW8)eH^l$7{a>pYdj!VxCtuY+?L|o5Y-v|a4nBcHV;5KcXiXw`@KGa4_!7nBd zUKe(0jE)C5BrW9CEF)XW@B-PRPzc53%$HyVYYd{a6Sy&ktM5O z3-a!4szq*E?piddF8Xq!`z*{VO3TY|LVjJ`L+jNL8qI)jB(tc2n=S#3gr{tY;)Lsd zef{!%>6S^;nL=GMM+8LJxtZ!eI@x(KKKs-OSD$Q*%ch7D5Cm< z7GLzO!dhHq`OPa{iLr>aweH}mF}{(JhR2nWXQCL)U2QH`D6kiX$$hV$=TvkqJV-DF z{*;d7^(eGcS8r1@=c3IY$*JzKDzdhTRT5MuvhYh?v}Qi>mhyS%i%k`U>{XI?Nl6AL z&EmJvN};UNTxPo{g&(;DSRPf`ycUz)Qc%r0p8@BLbNuAU2ercIW z4$aE;&^FX;7VD`6;4bu|Sl{DzE1Z$6Q_1Mmq4F~~EMS8`-b<0p%~?<^QDs6}D{p}0 zSm{*Ii6y5EHE%YSiDWv|XXM0>?W!7U?Q>JFXdO3>nc)H%!K?4f9+oWxxvM+5 z<#2fRrW+N8m`0aH%Bl!td-vi$Tl|hV!h`%MBU&e58MXmt3l0e>&raR8tSyU_F_OX4 z)p1~%v9*xW^DHfwNQ`@Z*dSq?Xdv$8@mUi?Epa_GZhEyh%C$>-C8XpG`<9!zz?KWH zu(>Udq}(i2fx2cB1lP;c4!$89b>xx)ODigWcq~h|@_#hHVdZa?^L$jLN~t-%!ST|_ zA}C<^4v(U{^GQoyrnX^#UT#>Vci>Z01>n%fUq}vsGv4!ZGBV>D5&4v zjVG@Z?*4TAXl0sJ6XhAwoM;Em5-CDwe{7KyjHFnTORZVx^`v~`h7h+AsmrPLTfeOz z6Hj^38rdZ1Ru!d>G^ZLHn{ylk@ouy_M4+x;ZVQcc%05|am1qnA-JJEQ)BMF{l5A~W zXI$rt(PvR z32%sm*waoYe+!N6Iked+>;g_Xo+5b4vb);&eIev!?rgAZi)#+Nxac|*---i*e7|gR zScM+D=>+Kkx3IB5Lg=g$($$+jM8BUy8uMO2aW!>1&BC9Kal6__g3QjGCDy^g9NV$v zEjP`4H%qE~ z_;RSd*o%8j)7oKx1t}0Ks9wNp^t`bMhokhC;5lnLOy*uq$$Cu&2JIEp|#fs1lNd) zh7xUGEf15)kqt;b$31rbW`FZ-5IGXT-Yx zmW8>>)7Ip6H5rXmlOnW67T9Ur^;8b$TDtoIV3X8avvk-I;yv$bb^t(4_m8VF>I92i z*}9cyN7Pg?g3_&RJz=JOnMpZb@;sj_hK3!u&Wc;&!AYko%S-I%uR8MeDD{>S0 z9&xJZtbw@GEY5|^9c$fQaDh9rf{f9u8q`ETv?1tDhe4#%gqpL2V+pa&u^J7c4OLz+ zV;tVwxRgXGM0L%cl=2}`0;7jqQfcCmYSVARip|s(=2KpH{90~5T!GOA^&@^i4S)6P zv9B@Gk%9VFnlD&bED08A9}$}-pDg<8BQ!}Bg9DxHB!tnE_x8xlyRrC1a+SSUY6ZCz zhxT$?io5bATfOFBztM8{aeixN7dSgX zu>*kM%6iP8u=C|*6h}Pyu z`bcW?6YYp6^>T6;jt0&T7X4P52PQ1&+s#9X$JrJSk+Rf%Six&W#~Y+nD&jpv?XXzu zcZLr%9obj6`8Db!E%DsYp6Sk5S6J~^Im1z29le+KTD;VsV~M6)t}_&P3J%>5@9=vh z7#(}Mt#=1g%TS^=#=B|(J{L#%_D`h6Xr?5=u%sIWy-K@hrR}J~DN5%3iIR5sTzsps zE{jMBnM{>{5_Q5C)-1GzXJFdFFV0?0&i=(qf>G7Gq-q{k;olX8_P=A-^-zr}$<@SH z5y_W^D-%oEq=GKA;b`=a+=~x@A8^z*C#CC2VsXdra{6U!tOr8OZ2TXKkzJt_e;w2# z%VDpf-`3GK>2e+Lj10YY^+6c$hgn%KXm?|%#3(Za$Y3NKhAF9Q~ znGmocKCdk{P-bNk4zACM_N6B$=xW+PEY*6T5Vp3k6zT3`FqQz{_Vy|;0x=IY=D1}>nrfHL`^ zMP+D>Z7Q?5B*U=cte8%A%i_jHtX3rq(JR-YH;&tvS~$Fb&u=PnVE;o4@fBXQRhv5}nhf?|u2T-g9mYibPR^`5vi5oThvV|0K*#>`SGGV0;hh8T+=mub^?o%>5la?rQ)x&2 zW{xark2j%`Qzhp?o4ngnhOoK z&Q1S0X+_e;3J*(eL=m*RFQ~eUlUpg}rDRH0WqVBG>6pp}C66kl{t8id4$B2Ebf*`a zSMTO!pHI@55*P8v_#p53VcBctiL8SR^Co1u7DJ$mCv;Y24kK^#SZ?4~xK^i2$(%C% zgyg1j)LP-v0$YuSZM;GNC^mtq7q7I z1_*%=Kq}gS+mykd7k^ZDYdi4JB&?g4hG#Q-n8y69?fQyse7kbK8-h1SycnW zuV@)31i$e*%CV?8>S@w99MT&=^m0Q(hn_|=E4ulKc&sxKj=ID2mikbnNc0mnc3b&e z_5p;2Q8IT;Bs!?tSvY=8O8W(HyXA^g|L_8EgptD-e|g~@UPn6%DNMFCRYcSM`y*4Z zgy4rJ=psohyDwS;Xsrb&)yfYlHlDvi8`Q}!H74|Zra4aa?jOFNuw@ZElT)wG1ol(G zEQp+?hcHFVfz=b>tM~47*T}GDTe9^lAK}HHE;z1j)ft&?(bJ@UO2Zln@yE3+sl(?| zACG&k2Ern_w8MZZj4#O4 zwBU+7qA@#ibo>TUg6 zGsX0|xe@%JxRQn_{F<?w1y03q{J#Lx&*uOQH_z|$C4rjBZRIJWNC z&2o_QmVeB9{qFMBz4rMj?;lku1Pff3i8JG6#ym`fbXy9(F%8$>SN4D}`kIjCgW7Sy z`u$MrOr^v7%k2sFS*YGmJpRGwPw(v$CPooRw!5-@+)CwXFc;Z_oJ#!OB++AvgIPQ z@A&;ZwW7rs_$+eZfGZBG9^k8$#*z171`+-AhqOJ3CNMa+#_bcIwl3%%v8;ljg;O&+ zDl*{y_)BWoiy@gB%Jv9XuxT_R97KDXG|?MmogHU(69}Qegzx7xr2*G9Y{YW|bI*M? z`RX``004cK1ErD8*t|l`lEuA>w{UyIiq~*m#I_Z!@Kb49V{EcnXm4->qGgjJN_?^)1;Zr=vqczj_5==d zS@YEPsUN!Y-|s{(Ka-TR+EZV15wCVh_cRX953dU6+6&2hFSo%N9@1+r#!j6^!4`~6 zEzLLwTvMlnz2-D(?mg=KDXhhie-FU$6xXTnop%BMsh}=kj{{y($&fQ@oC2K29kKs) zea*~%%K0HIrHL|S<#j_5Mmp1$<3@a^7)3Vw5(aE>OVxtKCTYmcfN@Pa?ImRI1>u+w zcPZLx$GB_OV7XP>6mB1Q;sSO>X}hd%{rJt#gy}J-xU~EU{9>k>zy9(EM~?Ln*yym# z@sG5*O;eY)*a&vVv=szuX97Qvn^UNDLlx2wN%$fX!fw0@%tWnjWMsZAr?_4id z%vsNgrs#d4_yqp51*5~*T5}13=~o9P$HlIQa?Hni%o6c>?dmQIYoPMSLV7ptyXXDH z)ZeR?Tfc>g#$wsnYcXjm*PD#J)BB~K;Hp`4a(_{CW_@X12(DKnS&GiDl^9mD170{_Jxlrum^adsl#B zp2sjRJ8$hH_#&LDR=MJi$j?^8!9Jod`k`%w7=H1|vIF;n8nc@g3`cO(vt;Fq#F;&5 z9#dWxAg5bO9du+neGn?Er+NXnS44G0AUOgV>p1&jm$a&3D8<=05XZKjDtfPjH2LU= z&|@PLIC`&GJIj&N#ZEIWz9sN^Xn`fGeR*&Osr_UQNT8AiE`mJ570=+4`@Jv+9)}Q> zn>iqIR(}@W@z4d(yg1DB{!!1bCWo1YNR9zG!;#}b3b#R)Dy}#e#On1clACh_@>l7w z*AAHvn(2av;2J7djvZ_x=HMUt%PEAk#t+uW=(*Bxh<^vl5CzP>30j!M}eEsgm&V_ zn@NT1@sb{m*yQSsqP<0!es{Yl7tB^`5}}bVq_6pSZjYR%+yHz!|L91GAa(Pnb;hl( zq@Gr$ob{JK3>5qd;>P|0_#LY6*&3GlIk)KbgVsljx<7B@d5u5o$pCgZ5#9iJEC}Y0 zn*GjOzc2itEpM7*54NY6M!|-ky6h?x%^=j5HcGqZ9ve9G;fiagJ{?K9D+RCG`BR5~ zsXj*~tHzz23%m+wlwXcoa;|t@zO}zb%?to&lw5KiZkPoUv=hN^1v&?VLh2T33*B#y z0NM^{*IIOTFS&HJZ8DBRH2n~HJCyi1^-=_>faHaYhI?_nbl@3uy8E^agk+@yTzBm) zqF(c_fKNND6|G&dFb`IXeA0hmB0i8$Kw5ySg*= z@y5-~iFX>d{&jiCavH*$JK)grwk{VjL+~t-*sZJc!@zhsTy8^)R*>8K;p;v50RhBJ z*KM7ep|us&w~zrXOK)H9>x7o^wG;7s8ujzEueH_LRqrkiX{)ojhoUueEuBy)>VJ_Q zvk|_2=qP+qfN-n$#GP5WZ%!)AMb3}@+7BPn-Z;EJ@sbmF{kI>1&r3LW{+4o2be-`* z9`3>Ou8!3B!+J1CR`|#7`Ru1nav~+{n^dTtY0o*&Yk60w5Bog$TdH@zJ!TR}F{uYu zeR&hMn^S;DeFjeZ;8~rYI$@vdfzN*{#&!I!u0NzkNdrIkAfisJ0TNkSNB^du`WftFem zQPI9)AM@MMLG8f&$C_@|Jq+kvj0q5NwOQ`@7J3J5J|*{@j^&)3f~?im^R~7Z457U` zY-_qLc*Lq1CAzA@t{m`V1$?A4t3fV$Id%^GZR2l?OnY*dSH(e4Wl}D0N>Hqa_nXJi z=eFX`lxh+OVJo_u;Wgoc2{qiv(c(>P^lU&~I%w<$lOoO|C?TVAKBfJJPw^DFc7%16 z<%xv?>*TPxG)#gP+lEoe;(&(7y~WHfoIL}H-8@+B6{F&ss)wp`61RwLb~?jH@#{~^ z*V@UrtF9b#MsuOhn!_mJFkhL6WF&1C%h5J8N-H270g7n+3M`C%wh-6bB}ndnUJNSJ zw1a`ENQ(VapFz897E5gze@;V*5`3<)w#+dIyYI=gm!=9EH|uTGTL}y(@B!b!yISeB z5xXttHX{kAD(eEhRW?J6*SeRoLjevnGvhdHs_W1Y19D zKH{x3{2Beh!PTtgW*upKnL!|Da1XwnWh;{J|Ps_pCNEUB1}K)R7BjJ5(XZm5e0^e zOIY4HX9E9Fx;I;&7D%KyNy{dy&@P@jQqD9ULdl4J;k?elu+ zbcc?NRu&E7`%V46N2;AtX1+SF{RQH5=k~5CGYraWMNFh9HmOHTe+F}Gm<$(us|!@H zc>B$?QZf60i@$!k2~3tyGm1NbQFJqOG2z$>3!b6N#MsP_>wpWirswyoYd1zfZPJFF zM)~~oCUq`o657>L-6yij;I~o~hu`e9W4xEdf`-NvRnI2O zJ{{#xD+eQy!FLpoY@{lv$0L!;pM57w%zXkUX-9pRFRmU%(q3!u=E7d=ABbEm(5f*u zI@)_v3#8|Nt(@u+7H<}HV#t9p?Tz|si4o&7728@_^T{n8oBjn*P>U`=Z~y{@E3f_J z7z!Fa(p?R$bdjobT^sXiQwS{dmZ&YmzS8Xmq&@AX!WzQmZd_mk#=!j+$boRN_;pRf ziVfj|=LXs`=eZAOPN0gNA=tzhkCQ;h#e!OfHGaA#_83z=ERCq&X-k2dR_ z5aRGGonB6}#M);zTt&rIZ0Y=`}x0z>3a_!%;aQ2ZE`# zSYF69nSs?&wFk&Mloz?_#{Tn1{d`;r2@Gkganej! zGALw3jwfRZ)$W!h@V=YxL=BXr0BPSD5lAqUWQo8UWePgS&-AM+DS>wVO#X5{GP-7Y z5-zIb+aG^5by%&+?tIHOsxCMxIu~UT)3EDfnU4>sVt%RP7r;}3)ms#;o||KN6iorz zIJfU-jt(+HWz!;HxPq0im02y$KvL-HQxI_D;yCnU40MIj1L{JypaNMXd({e+a%#Z%S1wLxjJ1^bmq>nTDqY8H`4&x9 z^eZv!!Chtos#-GFP5dV3HcdKmt)89;|6vj~;IgGUcDe7f*vSGe63&`N53l1bosz;J zhr)>a)`{Y|=w#PX&S7%aAg$T0^Q_#qWS`1Kd1AJ6a_9m`!`tk!=i`jzPe~%F^d*EO z+^^lpHOy1mdSXDIHb?O+pX$}GTR2p;u#TcTvoh-7Ala0K>q)X|H-+%kw7X$89Nwry zE&=||6&WvN1;!nNwF(p7t$IaAF5$iOXdMqsohdEV=1AsE|7L+F<$8_l;JM0JNDNi$ z<57&_NoPWa_vXI9T2#L%g~9}H1+zB63N!HmE&LR5y~06)Nz1z&Gl2Z@n*|{M(&n2I zxNYFk%IEiwyI-xNzjCk94@6f?Wub;-ZACk!e87e=Fhd$mlKA?LwCT^i7^|$0Qn=M8 zfd$i{*eD z*AY64K9Z)s#LY8XD|*kzOL@>WGZ^nOPWNk6r^uGq^sXqmMZ{HCjOyTWadmfuYsTj< zseMCD0D-oZQ3vXgD;NZb^7xDvAqUqtA0)Tv62(#9;)7$_xC|%@16nryXj;y_EuOI_dsdkHn+jXGs+Oq^U^<{859yUv zhNo+ocWw`EpM-C%)#Y@~``s}=R4e+hJ3AI~W?u-UzWGu0rVl*Xs*Ld@fb`P$Q?SS` zP|S<|Z_epu-LK`9?9^{@^D~2$i%i*XEC$B1qhhOj&pDJrzEx@Z>(^~t9fEJK8M(UW zBMpa}xpVc6tm-9Tt#_4!V_5?BrpD%#)v?6XPlM!z9-1|MM5v(2(m1zmS;;C|xc|t? znJ}VNBg<8Y4Ws?st6RqS$?OgdqW@`d-R%gB`Zix^?F)<2>?s!d#BQW|*I zgvHX@;q!|bNp>A0mg*bj<{xAsP+i-F;iXNHlb@De<(dxrWSLYc`eeb#X^+rQlYzFv zb^$2V9)`3OwN$`~^0!||+VziZ6S5?j5@$`WGKlRG{&Du=8L=!ZrZPe{EnL&XZMKZ%m^BHBKFJdJs->mbF zQVT{Pj|!~|lB(}7Tk_1v$yui7)del*x)u3}CBIJ?Tf%jw>g3msg_~@D2Bl_Q)4xrR zS}P42SRiGc9UBlb<90Xcf44GKX-`elv1OS>D;>0&0J?Q6i4R43=J3lP%S<5 z?g-net44nbW=e!d4!i=5v{we&jd-&gZqL+d+xK+LylEnN>78AWFZ1q;t9{I|w(l`Y zOIF1y+RCvA4&1wluGzVi15KGBaB1%^8a}fhgbEuMBa{bu*xQsq^o12|(+>jZ%}7>$ zObIl&ZA@hR_~nnoL%l;Ywn(aNWvqEFmD8lv1t?u79m3qJ7od$MMPr4`4wkpCkAc#v zav0s~i~WV}$CqmS8UCy^rEdn#1Yqe?#DZ4Nbi9uIX0ZgS)JJsK+ddICc>jJ{5h{5A z)jzn+BNsPb=H~LIEvCeD%ncpp5;tQMp_HCU3g={8`j+4uS^15l zZbY#YIj|sg=DoL8lb6>%yWSsb8&Bv>Tg%&~_KEK{KgOAUDrAV&V_4S}YnN_pT8&1LFs{sI_nEFun6f5PmP z8hS*QzQ4Efy>0xeL;(sySX}oJ zo=?yHR3CHVtXk-k923w%OygH!uZiKywhOY3Un4{dAQ-#&RgGT&DJ$<+?~q1JO)2-E z>E%6hmz^zGIOwnBKn4B+FsjLU@ZktYBE|-3K|!K^xAtjX9$XM2zjjI!2^hD$efMtU zu6V1yMOdHmU=+ixD?KhJpTS;yUQm;}ed>T@c^|Yj^@}RhGOZeQTQtqvfSx~~7&ti? z`htsCp!X+;sMPIGY?1D#_kcrLU;aFnFf;xE5WP!eJ<@`+4%d~lx?cYZ^Exr8@vQmL zbAYYoPYY>!J^_4F7C}EJ@USc2ehl&4$^e!y zz0lGJZcie9fSp5+DI2g)XY~1XH{KYc%0!xQ zG?#@`ALa~WmdY8sNj+)((}C*nX=PKdVvoZ5)d?B|zQ4!$?&ki-)%~8w;Z6yT~t zvmyn}om4Rvf0z2LUF!hq+Cr{ow=Y8R1?c8PS;91{Wrk)=%0kgmxjqen0wlt)hv%!& ziV2<3hn)>3Ys+rDgr*2u_UtG~48wN%c7_b?#DJVAIC^lrI_~2u3D~?`9Z#5@NpuxV zwqYk)z_FCaaK$+r4@D4RSk2>IbL)_NADS%#oB64`L^MXPDGEZeynY)imEGNaYL)~Q zvKjW8EAs7g@vB|7UCz>{tK=?6A*4GWouKEIh{sB!Hqt$%o0fgTeyYMIRczpe^%dWB zQ=#p5Gt6@2ko1^iAx}6U>{J3qZK8-TFTuT*_$K0^H>#urI+z!5D0Di};yKGH)+TZm zn}N^}c3LjK!jtYXvO+GdU7H#QYeTIikuCj94I#gw;z~yK-C)NP%Nrc(DundFnHxRP z=n74$wQ`}eg&IC`Dp}5tV^^s|xA~pKnT3Z2n#X29LM&6del;yeUDVn-$-hxh>!Gm} zbHZy`4~BBL(t|LBs(Pw~lM9a5+v$bY@*Vj)muNldaNh5{icGe%o$ml$LeIsMS6te9 z9i4XX03{5azg|U(T8_4!p=6ec3`B^8zk0o}HWnBb*7AfpJTr~8C`dyoo6aH&@lDNH z-TaKTxAj)f?!vq*dWSyRcR$#JU*H7{?4OvxcJ z!?#419t1o+l= zi_fA(6!@8k`-`K63OB%2L8fSq-7pwAeV>J0ewnz$B+k_=P~hOQ^5C_ARmlQL`7jZX zL!X{L*_vE#p3Rf|K6KeZRojCK@lt!njDxikT2?@M=4k?f8G_p{emGw{Yy>darF}rb z7*^SvCfXT?+#t~f?q=FrJ{&`a9CUnb3ym#z0y)gSlS!n?GPy$+$Hi=*rPWq0SiQ7- zwoUxF7MV>dDE)>I?9F1JlT5a3W>tZlsg;PG)XUr3vH-oL@H}xAG1{^`T`kuvs;REX zQ;|KG_6&6Tewd3_3qzMlYyCt82NCH-HPA1~4eTV3qa>2bbI(Zk8!1fjZp}mm?T6?rjH-HZ5TblRD={jg z3#Q}pQ5ggnvX9iVt10iDi>P;X=Qs83z&H2z@NwjqKFZ{EDi9`5r5n<`GXh$q+lHY+ z1w<4hBtIrr#*1oNe(V(U+e|joQf(hLg*D$QdB3IGC0aWl9}kHof>w|Z{zfb#td75CU|S2 zbxL=0Ezrg-=fvtG^L@8{-rut(i0m6#6QYI=>4u=ix?3SMX^e^{JUaKC4(ca(+y(&B6&F5yA9 zCVS=ivMb8z8P+Rkx=Wdy&uN!Py!IK8fLsntNIh-IHO7gM)ERvNUG^M==FqWF?MlNv zP~&UE^DNVKkppm=wdRpwiDb};rA{-{)mGA%mp&9atI{R*MxeoSeY)s0hGRp5F@n8@ zMRWvdJ=8c`i`=|i5_zj>D*E`+T1-c(3AyxzPdrk96qPV>t?50-Wc&&ol6g zhoa)?Tb`0JXWlA{7R^e9YU0h+9o7)9wZ^FQ>L^9*l&!NqX=Twq-a$MEn2YKGee}1N zWZWJ#KC!ye*17vF!tEK;N9OyQD(8tv zyflo0V!)0^IUjuHqn#huk~sKT>UI>|$4@7=Tv?O4=^_A*xo@;TD~-UiLWqBO#IB_G%s#KG zP8AD$KxB{3l%2r9*)ZA4$d|5y8IN8!dz1K6G!rZc^!bsRBQw%Q@g-{6hGTRIoj9o*F>J84?&2IEBo546@F5dtgzS1dGM$)AeF|p!pk) z`t(`Lds)vbT)S!!x6p1FiPt{IW&%E3PHc*fYs>d`tdR9drH_`GU|p?CW5*@%rO<-) zYMmGIMM|H`x-%R?2$m{^@|}sz2MQWI=BqdDl5G0>=NWDRhMNtM{oPO*GKX~cV1eA2 zIqxMu9p>wOt}nNa;$gl>`s@V!3!S%OV*X53O-Hgn5Lxtfw}LI*p5Fd7ypGu~LC4!k z(VMJBRFpM><-SSz`&sq;H13hhNKm&!wl(C!T)h3gXnlTkG7aXEU~TNydtPByvyV)k zMhXd?Ra4W8Gqv~_EFNIJGKL|ALGy=|S%IRX{A3>1*rEcp-<{s~IX@~5CEe&SKfOt< zaJC2>hY&g*l8RUlcBBMyj&+?jnt8oOdOXeFIZJz0l-bqJ6^*+avOUW6#o;o-!cSHa zttVU`-r=7fhviRS4Hr&MVMUP82p zGO%CO@0tyA;bBEZ^xO9)h4}nw{SqNt#C0h+Ps5ag_N9-pj4-D-<6T*&o$;)&N(BRr z;B?U2XFZNuYl~y$cq+B8=GedH=-MjI%M!n91YG^Th1*p-1?O*|-eEac35~6< z$l5DrQd=b?13MsvR#tBY>FchYeWZIUcO1PB(uSb!#CTUv{XCxAFCy+vKH&AfDjRo9 z8^y`yFXzkkVwc-r<_}8$vWoD}?OXr=uc7!Gt7>5_V`2nE41{8x4$_g0n||DinR$^v zWSt0y3GkT7?(35pr8FP~u$c;4j_*iAh#fE+`z%h+HLJjcJcXBy zSC1mdO`_0l7i=&>u;T~4M=VKeAXW7;wRJb%~>Sqx5sP zcct{Ax{X75xw?F=xAn!FRmVtq6h??4R$p};U%v{w-ZSgO%t_b@>2+&VEO{fi1(;3$ zL};OwRHLM2`Wqr&r?elRlyFWN)0&B=1=`>SeD;Q1($(B-7hoSt4Qv&uWB-1HpaEu_H$KqHm+Ru3$mqAi+M=^?C(p}y~A zgTRx5JL19`s@ga&0A*2yPET%u>7(j&8#Tt@^zhUjKF>yLj^Hr{5d>D|&P?){BDgGl z$<_3OdC8=3G~p;=NxJc4^P9Gr$SxZ{#B!tH^IV;my0Vjfl`xz2FNyGgy4^xsi7y3L zb!S>wTJu6cCT3b@oad#wRozqj@T=4gH1Fk9?{=Fs*&X5&bX9`_d1!?UC!sTZ=jal- zze?8clCG?MzC?~~21g=06l83Jw(hTSkEC(1(KP4Y6@Fy&aN)TuU>auuIr75c)m2{2 zcg`6tv-6ceDL##~dmZU&EaaZM(~lTJ6(W%7L5grEB)R;}8wtg64y1aqz#acsF$4QV zYs$X!{1oZ^6R8@P&T(3Xf1HU!+LMfPBFAtdDbY$Yf~xigDja$1@qk9OMf4*QRAA0~ zXjG>$w8bVCljfJK?wWmM=5u@8_j}o_Bm%EV3TtdkG*fQd*wp|+u-QR zb453y#?`!BmeTq2cFbgR2G;&XG5c(Dgo(gd1+GN0mli^3H}r!n59iErXRw5EjD8JF zOa2r%N<>h7z!Iis;91Gr_mb}#xp!7!PG`?3r%X|M~2v!Z=VW%1K|2qE$p|`JBNfj z-~097yZ=)N{@FSXE`g&f0|4wGoHrJe!WfBJZ*CpB-NHp$7Bhjt0${MlkS=r1Os*|r zynaFT>*NitXM@#_&sH;M4>tCEJM{1uz`54|kKEW?>6RPrTMZiEUNHle{p57bCw1FR z--1yh&v(RvvvA%|&ul#c99jkdkh>3@(*>j~3FZTUUxhPeet(s}Q&9dMyOUq{;Ep28 zZ{{3vblucx&lj+T+XeG=n_utkV13ukP54z!cZcrxd;bZyM>2e;l3{{K_RjEs0J8jJ za;_J<0Y}q{|BprMzvajk&s8L!AQ>I?EnWX*fy%br>h1U3w-p<3ur~UZ@yYpVDOOu$6Ep6(cIXG81^{3YovZ(7}$IN zQK(!&akHyVjiv2{wc$0Kig1>-wM4fa9$I^W_s&2avNVpZbX?ueYWOP+G5OdHu?)(1 zr$Z4P?di6rxfQ~ z-fT)YXt>--Wch zp8^27J9GhnQ+om7l6R~C=Xh()H*_?%e*rv-$m4<+Z0B)EVP3Bt-lrZQHh$UA{Zj3e zNdDh|Un-$BT|F^>-1qI)AG3yXGZ%C1ddd*^&#JGKUe1Re9gsK7t0hxWyo zVClhenWbKz#K0?Ao>OrxrJt+(Nb1iGkF5}LnsbLn=T}D?7DI+N#lNrrbqY@I5VweG z@W$aX#P#QMom$#)!$q1*f#(rF&s(GD)=p_Mu~Ww%yCbF@Rt}83xuc(C;!5w>|K!9C zpXg&M7DNVL&Y&t9atd|6X}o%Fmo7CI<({0Vg{ zF1}R0`z&}R0QE%1RJ>KW{j1o_9lLBvT<8t!-mZN)@gP_{*hjMyCzN-TF2$yCdMLTv z%FN#{h{bvNH?9}-x1I&WfIiE9&|q<&h|I6}AP0rI`scO9%A5GwHDg$#9+8Bi-C^M^ zzgKKWXY>)1j=85NA{`{Rj6m;l18XxH>jhMw#jc54kQoSC-tNOkTVUo(nkQpGyBeA| z40L)mk2H8;V6(X=O-diYnYZF^2Fc5{E@u&z!Du|6b390xMn&<=y*UTlWZK#3n+xv8 z3&nDXrg4h7`wTXXsocn_+MDm}#^^~Sh2*xpEn>xt|0>rlQo)+9;9lxNkU8C0JD}1y zV_Gbe)n-B6nFw!f3m z-A1*Fhzk_$pXsPszTZSBLfVfY%|WpZM*J7_-J%fjXy`Gb+%%c$yJJ}vHn}aCKDE7y zY(zgdgi75=Z(>mHK?r)GZnV(lH>$R%&kvLP`!^3f2)b}9z+>TqDDAV^j?HiiXM1Vc zd;8ti9v^U+`}q%cSNx78s}F@X$cG_6ZAKB(nn-NMV?kQ4!5$ zC_EHI-;-o#lp2?(%r;YNs}hq2Mv7O(IuRHtObc?FMLOWd&!(50k``CTV=EH$^uR&N z&i2%aJm1CgJo)iOd&5n6<|miO8F4N*WU6K+SCU^1ja(6)k)C!Jf(6U|oEKTXc+SEq z`aE;mzm1qq@9IHX9Tc_mIO^6^z3P2zM!9w0k!i^FSeyKa!n5*^(DEfHi7|HRR2C3S z<`|4AdFTbrk}wgCjLc}Lzt?ymqn0_9APilb?uwpF-Z}i#x>-%@evS`_M0)9(sYQZ{ z+-Q?Nn8$l0Q^E~L@nshp3Bc?}4abloCw7dZZO+_z)j7I)f!ISPkl5-9xX0|bHugIz z-;YPLAvBrgx{iZ#`t}#~n8vop8m$tL9XOaZ=A-xJdOggu6OrG(7KK^2BIB`(gprCj zQA8Yv-N-c}+b8ZwsX8L7S2c-|5JR^nJS)YQlw^CPH((G!vJkEhN1dK0HR!SRZW6JYnteIG zh$Ur&hZZb-UZ+NkVOKIVzMM}ToR#ysD&1y!IuN*C7N`C?cebddWld+pX(cGWjW{=! zLfs#ln&&xBANjQY{%{Febbzs*m0_~jY;u^|=i664e(1ydFMD{hv<|#GEvfo+e2sr+ z`2V)4{Ou1MQN!Qj3;v52l7IX3AFlo!vHc8y_zTOU-7O# zU@885=wE?1+~NCKfA&yMm%lph@BA$ne<#1|PfzB^K>n}_xnF7ia5iV*{MUQ@mF4fD z9~TY3NA1{qYWEMTgz`6X8yEZ5Uw_%Y%;okSKVr21JCx+kso!t^kN$BM$2&x_jrR5I z&;=L*_SoMS`t_&?{v9^*Z@B+?)xTJI{=ZbKA_0jV-;V)helw-ubWjBc?kQy>IVPb-VlP}7 z@j-md>OQMS8^8GIK(*2d@t7tQbwXUOC*6iaP!n?Vg9JFN`n*^OV3f4RE9Y$qu6}6# zk_O9_t6JKMHx7+Tsui+oTcF7?1+IxDIw%uH-N<8Pg=2}Zp-AIA4)Ff#8*k{SQ`}_z zy~4V_&$a0ZWF?h!;LlTLI~Dj)8Slm8CZ%JV(5-&>wsFPzN$TdduX=usOLs8Ktb$Sk zT#Klw-$@lYcKZ`ICdQN$(;P*vL@r1lvssp)N!zDva*Pymqhd^-@ddLS=y4q))#i39 z*I#qH#Wdehb5OOUiPKJY1U~--(7B5(C?`wl{}RK|`gvEm8FUzWd*7J@p{B42Zd}}? zV9?Qpx(2S9Uqf^M*Z&25^{J@r?^}4lPQ`i-5QEb{fWIA(|3d};-yd-QLzcfs9OYoQ z_i}(U99YO-ZjUlD$2o8JF92!F1O3Wm>DSv=59}6~Ba3?hL0^KpTpsFum2A4TsKUG$ zxb8&)3S+Um8Cr*W+0E!`vC-IOw9 zUv}AW@aqS8zbxTc2-G$W)q6d+3m3T4D+n@d*naO8q%u9Kb0m{DdGqSnsBN>TL6SaQ zKng*3@b+7|dJv?*F|b>9{{nU(gjmy8q|SsH=Z%emS2oJBW=)6-qx^L-O$DYA5fu-D zJVEKy+VRq^kc8I({WIe^BAG-_NMA#ehUd!H(9j_tdui__yZ#EI>$paSV=~VUd}WDb zaU&XyZrDO$p!RLpJYz3;I|sU8Hq`=b;tHTv_ z&r?^g-+aCtwT+rZO;ccYFJnz(+HEBhfGM}9M`p$<_hU(*LGtt*{@P-)n~~S&vZE$Z zwMMGe^r6ylm%xoY8{-?C&;GevW@RUO~a6N^DWN=F(~ zJ*)j^@-E4w4=AV~mG>4ei*R<^GuxlCY^C>>(^W4|UXAOrHdk~y}Cb(KNg{MSO9iKII(Wa{tA<^ zCfG)QJJRITL$1zQ>!*)}@bbJm^43244&c$w9lD420(2!gwq*V`_`MhXy};|Qp7nd^ zzpy_e%27uiQU}wG%MZbJN8n?_oZ-?z19EVoT)EIU@80a}vx=KoniQJc0;Jwm)i~x6 zoHVf~EtR7K$dt<`Y`ti;5<1T&qKQHm=$AEVCM*Pp4ziJB-)e`UB-gImjheC-GkW<0 zR2kY3T_no%5fATNGMPSZFxGgZdoY>pD(x=KqQ|u!%t?CDpw-YXA-01nlb!jlD9npHS^SS5ujC~~P-GF5;IgdFW zbt^F&->prViFj2+K-a|8ZieK1+Hog9`<>AVj8;*qHvcbx9s{%eaG$&1i^{*9Ib#q9 zj9z|kaQ!uvuSdU5ZtJ)Em!l*D-W8={JVRZQu%?pHY+L_cIr2KxQk3MEbZrkL;UC(< z9}#~xnt%1u*L?njx%qJ3BMukI_h-G}{BhVu0D%49y|aK_zg}MBgda^p?OLa#EeqIqw(e9k(nwYfrWp5Hc zo9gM%a=fPIG&yiQlK-6q_tAGSD#j!8xF{8j(1G(f@LsK#?=4AMLY{o?j7*sr7wGt$ zDtSA6So_O-gzQU#`Qg!q=mfL48baoga z2@m7j=ve0rmieS%27OGRklNl^)`!iCC^1L2b2zukY@apw7b6$Re~;dI^bvqw1Txw*nQ z{;xs6HBRW)%XD4eJ4EK62srt_PVZk`I1k{S+y0Y*s29I^k)x9$u>Tr|sJ&ojw8S3L zE#z5t?F2hNOI-9gb<06x>^GnLw)p;h4_xJR@aurz`~zPjRZc$}eodIX+5M~kN@ML* z+x-XVTkzOTgI|5!*DXK&w`G(6AD5=>-zZJw-@lZpY;n=DPuuGAx!-)T7$1HHl3LW3 zmso!1Lfr9nFSoI(B3a6hA4R>o@caQ%ZU;P( zBSxJjZw@4~|0Z{Pi=BgA6E#`ndWh>wZAu&J5l~nYyg&{lPjX*e`DZ$jK{2xT|%`!DSd_d=2^>^r*&JVc1}6h^G@ntp0(-2cukkzA9L>V zpH3qDIo2m!<&t&$M7V^ zIu-_{4p%9@P|v^DeE=QyMLW6B7t(qniij8hwVM*MV8JbJIc{I>ReE*UI@*t5)oCO* zgcPb=S3Uo3B>GCeZO6I`R=LYzCl(g`Nid?%D^1(G-_3`kB+fB`YBB<}5BG-dK}h#n ze6Xmfh+45dT7wo^#<-BXg;QYX9`={MTfR<&0)e9IdAnS|+=|@$wR6G(JuH?#mNE*l z=p=F!LR-PlucGqsEir5Te#n%SRkPwSS5oBJ^I$bgWy#o~L8cHnI_BjI)S^gN@A?+T z8MCJE+ScYqMfNX&&CY7T_;!fP=HxBN26{?05D_h-`O|}mXlOef{;*ZyTe%-&tJ}Y! zj3k}|i%i2Uaib!^hr8+QrIph+hPofdl4luh91U!e9GT`isZ&q!>@{hTsEX}{5VM?g zqG#2k7wCL!D-st&@3aaTb`Ih#`UUDWBY zNIdv)z&hAuC~I6RCN%~;p{r25)yT&S>Z5y}7-0rfF42))*zPZVu_;C-l!PjUefcgf z-73}!wh~a5!$i*2Ljjlc1SR*7cu$}D|BJ_G_I8eIPh@oYTcFPGY&zv~-+tuP(O}H~ z0wA#2!EZ>?oev`()L8S6z4nAOwI|8K96sSa`rrmJNinAPAN+9A%4-TYH}rPK<68r( ziKQK*%vMJ+D6E^#r`fV1^%mqcIMPaUuk4*EzVk6bx48Y_bZ018TLnZ1!@$pa0h%`t zL7wcL#@k7n%_`IUfv7gRWq5zjdUhqd{OjuL3pPPRG)eF4v&y07IUGXQYTPN_jDxI_ z!G+Jm4WnNo?kC6^`#m75ovi<2t9)hjRaAGpSCDEQM&;$fa>}XzKply~l-61;t#u*4; z)fAF^aUXbdWIE}%5CmLizFILyGK2`_iV&@HDeQOj{QE6Cl#6^h zM?e3?PUzO}<2&Nd(7#J%@yEJ$rwsVTqn-T!#ijc(`yEAp5LsRRBlPboZ|)5LG4+32 z_|MPypZuWzZ3X=8L6ko%4ZZp!^bcEy1kTpM)Uoc+&IPAG9^kzK5_kGZi?p6M=BP4-^@&Y9NyjH|Ma|%NF>*~54I;Ymt4?|eU{fUbdYiO%2W_G%Lh|g!5F7u zZa3tdt-l^ysodRHTK^5ky(B1jWwI5!`vBqMO1@nRhttF|KJ@9$dnb=Cs&6+g!XE{u z-FDibwCoZQotXZD<8H49Yf)=lA5Z;p&!v9vZ!!Hvr%pQUZVqMDm4vdV{^zFurcZF> zMsst*%zjU2&H!QHhl$=;2t=M8mpOTzblSFv{1Hj1XVov4ZzUk>k@6+K0AL}9aFq(L bw|U|xR(--^HXiYMQJN0Hd=B&eGW5RygI%;U literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch16/16-3.jpg b/docs/vol1/image/ch16/16-3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6338ad318ccbad9d5d75e29f738f81f3a292fdb4 GIT binary patch literal 77377 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 E4XLJ4*#H0l literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch16/16-6.jpg b/docs/vol1/image/ch16/16-6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4400921232179c5a831eacdb5477ba8c2375ad3 GIT binary patch literal 71166 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch16/16-7.jpg b/docs/vol1/image/ch16/16-7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bfb57ca9c81ab46cb02b5790040baa38ef780a5e GIT binary patch literal 69231 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 UDUj$h{Jf=e_ud{W@;B*U00*UGAOHXW literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch18/18-1.jpg b/docs/vol1/image/ch18/18-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a83b3d526c2d39d42c1159b9635d95d03945cfe1 GIT binary patch literal 65284 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 BJa_;A literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch18/18-2.jpg b/docs/vol1/image/ch18/18-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92ddd469db55f36d4298e4ca1a4e442c732dbe20 GIT binary patch literal 119281 zcmcG$S<>rBvL;qn{nk&tgtTlknPj+C7)XF*s;b&B&md-ie8W7?GqfBDyc`PV=F z>EHhQpZ-u;TfB)0h=f8ZF_|w1q36%Z(`)~i(`hVo}-2VW> z?ev!*?!x3RQP;qG(8K6o5cp4j{cn38L{&0>7baQJ{_Xq!`+xo4zW=U>|MtCytBBgu zNnQxAF|l5n9lfgP7JvWW{{El;y8o~@eUr?=cY9N}(+~UKzJCk<0bGB54S)aLyU1Mq z?R)a;SHJUB{X4oFlkYBn!TuZ}2=d+K_7^lH@ZfU$*Y7X{!(fDf(bJ#N%MWMb2lV{i zx6k)~|Igs+uVbA4U^3jd-vf7l`~F+Uwr%^%cKS;D{bS#d3`kj6m>-Vq35uDUXleF^$ z1`&mSuO1klpDO`{;VHgMdxC!lecpIq%&_VCF}Xu z-+qbyQnR}F(%v8HpaoOB|2a<5V5#Tt|E`ZkJO35_6!~@4&$qvp_-@f}fBdgN;eJrT z%8P?JV1haM``42CGjjVgcC}IL2k`$h4k5Q65ah4$zbpHTj=i6CagiRsm4ckUq~OT& zn}DAS{iZrSCZGYot^RwB_(jRzlhKWK*VTXj7!dJiefSO|{(^t^KdC_k1`Zg)|M}CR zx3q6{ek0D#mnLk3qMm*;zF&j>>*4)O=8qHh^}G+pDfv?WzkUCs{{K>Kex7|Wc3XQ=nUNHkv6Mox6G<}g#ULk#&)1m0y#oHWiHy3aBzZQfS|cHZe19ksl>hp$ zl*l3*0n z!*jcgx`HNUr1TL;K1kId$%m)CA{MpH8r*=7<+zL}XqJhH@B3f<(L?X6MPDD}Kt+cJ z;=t#dz^}{yPapGfqK^2hs{5}0dJBB=?(4CEFCJelqo(*|Ztp_ryO8r}=FffhZn+cH z`P2JqPyTL{^F+Vh7u!!QbRItzsy;%VJi0u;F5lg!HgI3P@24-Jv>3N;{k})OT0--2 zQ`a%L{B-&D{^cqZ+&TEVgg?I=dTt(pLKOK`iL7GYEdy{tF<-Z&8r7y{d_8Bro@eS4 zHLbV6Uw--cO(7uU{O&%e7M>_P0uDkT7@5qgy~wcm-Oe(LcTXYjA~B5`Z-HQT$A>Rf zBCD;TPvv0?`puhlgaM8F_F>!iY-e9HuazvWm5*61&ijwgzy14ZVT8W*NirQ3Q|$`V z3gl4Ak4pTe!hd-C8N*)|3$-pLx1fPhTs45(vHn6~J0{)GQE8Bx1T%ImM^= z!274CE)VQI^Y3E+sO($d?^gJ^>OXb$-j0ae zd*aFv+t=6^v*<+S56sCFi+VX#O#k?+|Gx_S@kc)Y{zeZKPO6`cdpte7d|H$jc|yy9K&lM~w?6$I0BUb&J)@^8l*{!>hnI`w%;4fp^Z{ z0{;W;|8>jXcNF&3!fy}kUO$r@cU{2h)ZYSuNoFp<3Q&{^EV&l7Zw=wzmiSYNQfc== z0!<`IE=q9>tsnl+%Mw`npFY2wly6_k`un2Q`seZa%0MMYZU=-Bzpx$n0k`jnS5+iNAd_6Wz>ljHZn74o)jmt zB59YDINT;P}1M1Y~vO3DN;?w=VVY(lfmO; z#8QVLm}Fd0XG7@8RHUFxWXNozIZ}+t;z28$c>c7oVrgrW9I{5}=O*oB+tE2G-^o6s zyG)+Q@j-8fqL8ygpGjpTR|nW^FoFAn5e;=FUm0U;nogn}^A`Bbw1YgInIgM;Bq1_m zb|=Vd#2}lVfxa@3Vemi$SdlblikVo8G+l~U*~l;5P=!ahBmeC@ zTVQJhD>Z?6G{TZv9f8`SCv{AMZp1o;u|iBHJcU=nNG33K69wEz&onuS!j>I0`w+b> zUuaPj>#P{w0%_$eB3aqe`XsSrRnvAS*;`%FekGM#Q_*23y|%Wd(@AEHuBA&vcFBIA zJ63MUVWB5SK9S>#-X`TOP|PNrMp-2=7Lvv@Wg=IRhFAqMHjAM<)!6ok5gfJ5j+RkL z6*FEh#y~VFLrKQ%w3x*1Oi*dtc1qp?nKZkz+j(KC>i#5gnCYkcoLwwtIqS4>tr>*X z{p?0C_(PvISZAQkpiQ!2S=D%$6vRrCv6zg{>W=vq$nM~O&eaS}Fm*v^9;VQ-S!7AM z#IcQG<&<2qlWLuJm0=InHg>R)o>jZ2bdH4_hsuqXV=E`ftxuOZ8F5~@y>X`KYLx47 zKCn=`cjFS$1G?65Rpo_LpmU?>p?OGfJK`H=Tyy8jAM@1W;ON2cImz?RKmp=U_L-iQkRzzRx9p?!qZw1A!DHIo~Zon4)ff zsc(UT?!-cl3W86@jd@~(WJ|alCxxa$O{#2c*o(DPr`xlVC)89t&(ER1oT8d!W>v?Fy86)hd(lGMWGO2&3jI+ZO>Rrw7cMB=Irtkh0Uzrxa zmk%OlhU30mFN!^nccQxx%+~6>bM2W|saxXhVPm0*7jJ)Srvx)fu z2{-fQ3U7f4l9Cp%-xgAsmKIBbQU&{p5l%`q>o9@-9Itbg4G^@gF zJKpb-gD>_N>m+;o#3?qe=_i+L9f30zl;s_lG8>01JA#;#K zvuX$HjB8qT2^>+f@ExnX^_2c3(9!Vo1P1*op8>5&@}uIDE*4H z;gDtnCwIGCora(p1bNVhO&;T5?MLpI5E*61uvp$LR01L&_h2n9BsmG*MvPoG#lc}+ z6nc6UuW>Z$SvpYm;>mNyV@VipGgh3=O8#6l9=FDpUdn}-!|5Y%A(E>Y9^q>?^_txd<@H&5_o=~; zvXtlRgdLYq)uID^*}gVMXY4hGx^{)m2-6zN%wCc3V(B-9LJ-^DXH!De)wO5eL~Gx} zv^aWq8HJd~Q!6{ndp)mlk74T?X4=M`#4%Jo$&R=)QKF@3U zfbQY<@C+v}X9} zlj*IKzZ_R#lNIP5DDdTs|F*C}(xA6sNFtFoIt7%X!4CkZ-JrpDU_^inV8%WIGt~q* z04JK_Zn!MZVr&sTSV!&ooZ7wJD0Ir1g&eR`#b?y zZGD_fG;ZT_^4U}RODdpHdb+duBM=I)k&E*I6dj@~+;Zzac{I-mk|4L4F0hDOf7*e7B8MnzeMem zNUPyq^+C`Max)CXF^>bZ!og>j$qlFpNwZ&i#$3tz*u0B3n5NmC?rP=eyVDz2(?C1x z4$0l*A(}oZH%t~%w_9-zx^O18p|0dhftPb`@>Zg@mx)|FZ1l^8@;TY_pVzCA z)M6M~r_2@Y2x=6d4o~qdki|>Wyjr6-geZ2}-FdWMyAo{2o_5gv{OGRrf`nIt3~Ct` zmMx5Ki$>kLiE~~EgrfD6hb?1jiq2@?0?|N1f@SB7i*7LKm7I1LM6^lN8NeIET!c~K zQIF+K-k>G5X_{l5mRR@ENkiafxYQF0&4ELbd((cRQIj{HFryKx8fMEq1JPFevN`V@ z>MujQ^kW{1CuYi~u3Ic|5T3_HEqUN7fDVbh*MNDl&`H-Prz$=IwLU^DO}crF{8D5h z7FUNJSn8VSb1?*j83yME23v&peB{7i)O`9nLl1p$p(Aj#7$zS>BcOo-ndxWO+l>n` zGqAYAA3h186}31Fd^k1jXND_^r;ruf1q9b@Q1*N*(p3 zd{xdo9fOYsYB_g)add@FlS9f$%ZByA$*3B?1zPvDv^hnJX#uK1fPmROiWxeT%%IEh z>o`q;eQZVp)+pgg&G}Iep z9$b^0aCetJod~Z+`BO1Vd@-YBf(L_0_YvtR#>6omZYk z4ezCKEO#^LsCUg>VQO<8q8Vo6$bCp4QJXeTB?=tmwk9J*+%&69PP3y^XXi&jSjMWl3jwpBX=6gJSD+@KswLBZat2s@jH z2(kLTT`|QF1vXTrM&&yn^W|B%nIDN}O|i|7(-g;;={<&?fIv9GxrFU2T3iiafezl; z4DR+$p38=#Af>*#iAHO;vKV}y4v^{-FOPlvnr_{TtG&B8suU^R^HLFR=Mzh-Xg{Mv z}OJRam|-7;JrZxR{aJh_i! zf0?B;h&kq2cvy`2&Xem+!x_rX!j9{J4l*KqVm-5{UsiCtJs#V(ujKjJtxkwQ8pE^aaaqFR zG{0NekBvE+S#=q8V0ovUvs%5~6xO)U~qh>Z03tJu8vK(t4Ja?c7x;Bb#tZr zOQD0xIp;xj2HO6j!XWH5d?2}9yE%ChBI_7$tCIC$`2lqq&6;(FbNTb!U);tb+9`|? z!cFFIM{Zu@rc;^EDbl}m9(P8R_`(FCP^m|eFvK3 ztq*^&y-CuBXLx3@LIGv>$^{ef42<@i$Z$ZU2`C6+nq4AR-a>@VYEG3xtVySTVm&u` zI$US^=lHg!U?-nX+!$l$@g4?hveW~O4W~2JR3g2P&>0e8ZngW>??6+{-s@@$4gE}D z&Ge>z+__djX}Hg2sI=>sAe86`EOk-$sYaxmIXneR<5DNK%q7Ys6YSq-ap1N76 z;ta`oLLIGyL$}WD-DSg>PCXxXVI)8oXLc@+Ve)7qw0q665lNvXsTURp)g8f5!fF%^ zu%UQ0W3|}Q4XSHSX?^h}PBHgSUhm#LYsq&*(z>J*L3ezZyz{FHe4696!MELm zfcgx)ywnJUOdT6Kd~5kt71Hu`@$FVTm!`45TX?R}XC~KXF<@AUcsMKN$t5IqdfsV$ z)Q-CoI-+I;>C6O+Jk}ZFV8_X_dFjK6}Ua{nRvzur8z@Uc%!5U1THVP7)p=?&kMYLKeZ?4s=u3>ANJwY(Bfwg@>njJb&1ej67SvU~_8J5q|iznAu z2EhS#`XDABDWJk5iaWfD~MlNYOES$>j=gN#Ier#tr74 z{uQ0IIPpic5ASb*s)3D4JPJfGY>z16u$jkB;l<>4O#@E(r8$?2D<6*cD720kF`T=7xb*IqA0J0!&&9dviuJ$a6hWKAF3CO^r8_Z*^& zKkSMCm*=Zp48R!d{*c0My`&H`r_cb&y*@M(0Y}z-@@vBKXwwpI7Lk?G=ym4-Y0yvh z_BwJ7U&FxvD~`k?N6qRvoPv&(OHPl+u<|1m0BqyBs9XshRI=SN(}2E=umMKVRzhpW z9S}Wh3HNbDMD#?y#ASonibWw|1by)N4tnhTqrOh^^mNSHT`sY?bAd8ZliW1&KsD%v zINu0ep*U0?6iHSHRsHOGWr}isI3F+*0>d`haJHm<>d^tBX?=(a6pTrB(i&%=kltVgun0c;vO7!O4G9qBb}4uq zWa36elkV539n74bhNGha&fI|jcz5+`xj14MoJ$4a($bG^5L^~{e2b=S)QE3j8V7o! z1puMq7wF_XhQX_@9Pqf<;@FXAVzKHSc$}{A+O2x3`vI8|kT5ejfxlc$vNIY9lu|~C zIHv1+Er*fs-iF&<6hM6P9K#o8MzfHZS+Dc;G-xa%afj<^-dAiQztp|ES$gg;7i(A} zA_jg~2@OF-Qy|QK3$!KK0dB*KIzPBETu?geJSAnEqD-014dxhZ_UdRDa1T8AAQ63f zy1D@K^4uDZsnsa*@;OvxC4zj#Tc9|Y%YgP?ojfnWH4CmQyNEU3xG!DZr6DbDa%P_q zUC6zHGqw@rS)4HN?j5jixS}vY&nR4Ez@BvZ>?zB|;wllOf!Tv z2!QtBtQa-1ZTT=7yD0}*d8^MS5o~Kk0L(6Pnm}UZ)&q`G^VtFvM|#poppum|E4hQG z0TI>CWG^W_lS8XhAa?2EE&Rf4&e~bv{D{8-G-qKFYIjdxkB3Wk%0PIveJ16fDfwG* z1B;sH^My`Po{qYco0z>@^xaz^<*!BU!b%C(0tcTD7FZe@_$F3>KN9b`YD>?j?pVmT z)e1T_?ysG;}b9K$y6ubCc) z6B`9Cc1Cd*MAS|`UDSQ5T!Iw_0Q~`-MN)1P!+98iZBRU@Cv83m!-!zQP!EGo2)HXbucV&kDDZm6%R?ww2!uU2Cx&s6lH@*Rn?+>57TlkL( z{J(wn7WmKn@;@v1EfD?VE)^|an5NXDnPa*VAmtcjnB)rZ>qfYK!ADsDo#hSq3Zh^~ z8nF+U2Km&G^ntI_FF(uc+w*}M7JS)f5!nFJR3hogh!=Rf0lX$@#!dz6Uac;E=$&yX z_Gx1mO`S35L~=fPJ?lxgEPyvu2UV;>^0cW+cc0?}BCI5i(xswR%4Kw)^zK)8T|vP* z26-_&ZPCNJrxsvriH9XMc@Tf%6p5`A6*mAJdiF~CU@j@0-H)htLpLnYx?BMj_8Lv@ ziLI{fPD#A%y{-iaBhUAu04)blU8Tdqy@t_G3jzLDAt1uy0Ser<=FFg$ZePw8G%D;w zOhq>C&&FTOlg;_wsXZO*ofVfwxVJ)8hA3wuz~}_0#x@@x?`xHm1_E$E^59R*o!rZt ztXW2Xf-rt}i)Kn21{a-4M@HH{GgXQ*ob$xx>zS~ne!fMRe!rMcw16n$71U=y66+?>6Tm1@6pC)su@&HyZXR2Jx@_7L82Egb4qd&Xy*+zFT z8D$%!V8!eijH@=-n!nVRR6A^if!b~i`vrCq`;a!Z7Nhj3L?Ai^xeJ`Es^YLzqCf+K z>atH1Fb+?UQe>R+3?kSsm@iIwrm}lBI1~oDE{{-xYys`+b8{EforxAZ3Xt=4;A_>j zrTBr8=KPufLUrq|vYY^|%J8mq~;ZyQ3F=HYuO0BQt5PPwQ+NUQrtYff?It50tpaFcP3;rs$1-%M2xx7QO&FEr1)-vlBDRTpl^3q1HRt54*V zm8v1yMKHktBTVr{-xFS*raHd@cb}I`O_$eE;$m>3N)rL!?$Yl#FkThl=&3dUF#PBI z*`(xQ?wqtqL<6MTcP+MOK)tCdC+@j$$Q`xdOWv)WYA6SC*Rc(#EL*o%1oVRki$1+6 z<|Lx6wtC+n0tpAWhtNiVX@8f}(tYxfH~^P=kwMRp(__XwqV&}6BJl$$>$Y)qbyhud zhMc)XLV?|yi*n$Z7`wZ^yZj$40Z&RB4Jdtdv0>=3rPoFR&To3)0LO76A1*~O>jhX& zx%T*s;p?ShOOPjCjhGC<=78C}2yT(jp2@Od^l(z*Wp1$Y1(mEeuB$W7I%^X5y={ipx*#RSy8&J_#}r~%-~2IDdo+6nj9yN*5?nP2eCq!V9t0Zp!B_;_$m zgsZuL;2z@HebKd$X!&{KrE2cqT~1xFwF|%`m<*C#4RdwM=CLrV9|^bG#YT)6AIAaC zK6QZ7SOb^l-o258wOSXcn&1>(SP{MZYLsq#TBgSjwDrN51o3Y zwtGkBtvg^*i3`v$%Mr2&(EhM|Nj1@}V50*>&!HaG>a&*Z)sgjn1o=A4*Xz{{i3hYk zPqim9$4H4cl9~bQ>m*Q?;b6$gRIn{?W-(Np%6)pW`gn;9!X-Klyt;Rn^)ffC+ZD$5 z>!jHgA~+&|FvO8KHLfyHn9gxZx@>!So)752ZaPEnNq*8R$nrrtPRn`mQPPM7;>b^E zwgtw4(&K%UT~VORl(ujwhUH0lZm_a0P5Wo}w*GSVXe%pSaZ zZh1?uCu@B8W=!X|_yGkMR3P_}AF{VV6jIIr)&^TPNY;S>cbvYmC4cybU0*yP3SlkS z8q_EJ5}Vxx9y(Ax$@~Q1I;7^HYa-~P6A*9(`7dd3>nJF7Zpg~IZDvTlR&oVsG@*dh zenu3hu${lsxzMW^6y#!G?jr0xv`=W}qzldE0rpH}IuIAY>l?0Vey%RgcnmVwp194! z0282)@tev!4X+xO8SxK0;>4kp2l9x~-UvrKcE5qTHNirQ{J2?*sC372V3QGBe!^on zPd}s4l`C&t?Kn3*%3$V74+>gvk4xa!G4DB6HgXWc2Emt!R6cqLT`=gi^EWVe0BMr} zFw$BuF@Z5U0$^f?ca8~c_J266KRcXc~FF^|KRzo>Z&9T>|LD@p% z@EKF`(Q^Q38<{`_MsJ@3p$mZf^eDZl{D8WW^q}bLbPe)x2@^LLxp8-gq;o3g8e9XI zIdC3e&`($?pob*(H(og!%T3*z?BTsmsEiG0THV>Mg%4Df-Td2>Wi4Q!I{pCm8%#UQ zkmjkeYr3|1OkP_;3WBqyd2|7S`M0KfoCox?O#?E03x93XuHvtsMB%Bqzpj|n$1N4Y z-9AbZw)EWd#9j`7n{|>1=cH*PU(ohRXfSLNA9!rH`CL^ZKu%l_MEuo2?@*e5@_IvT z_y&mN0AYjY+^6lZ$qszdFgcap-0D$%w>EPXU4GXo0O02!Zwa}udYebIlp?Xqt31p# z*7mdH<8Yq3`v8_{>&b($j1D3;Muw2xb{bYOhVdA#i{U1TCsI~8!0&{Keb^-$3?si*i20GFMj7l_FG zP=BjYCbBE8yKXgj{sVATO4lP^0}CK^+XRF;C$O)8dRsXy(s#LQA;DgIxKJeK0FZOQ zBkVV@Oy7aZyUR}yue~?CFa81S{G`8~aX(+!M(AJaA@}%k4yM+!M;6lo|CmitKeRLd%6FXH_0p)VT<-4NM z03C*mhjU^WSRwlr5J`N$sRBFj2Njvd2rH%x@l{#Gb*J&qg$6x! zK&5x$m|!|+@mm6%K*f6@q3@W5XMxl$s!E*bDym`uP9)=IqMYh}OT(G7LX8u#YQx3! z+?js}<-02t zwY27|d>x`S4?$MD7$o=E?IMfHtioPj6Y%SJ+UyTJA};U(d^Ck@gVsNTm_*VS)wakKBuq!lM_W-M&wo*>(8p zJnjImQaNCXKM_4H)9Xb8SliHl#dV+1{F|~rBq(J0M#HZ&lZw*nBakFMuznZ%mpz@F z8=y*S%MRw?QNi{2*_ThvW49&B>y0EES$8mZdD4RhfNcSBodJs%;nq94gL4|l{IUyU zyB}a=fDGsIIyAg(v#gl`;Ujl~&%Uhg6w}7})yHPQl1jR?RsdJ7^-u!26>b9f@h5A_ zadX@%;XccXX&cp~6#-l2*6^}D9Rgf^6WDr%_&7^NVDUKM_~cc2Ry!q^$X36&mU$~W z94vm$>tb{5&Z3(mfhAt=fH2w>X5>9t^SBobT}Yt^6D;&t@7JizwUa+*VM2!$8qn6`?iZS|T){bA zSnoc&o@*=rRP3|AW*wNRuh@r_ijZ^tD@fjai+!Lk=gt4n1usv?^U%@3dyvEAZ?aX` z(5=cngGkQdZKJlZ3{$~LS-?WR0o2DfM;XC+9JYMvsl@e-3ZGr;@^ztn@WZu8!-pI= zfDs^q6k`+DLRYoD9{3EYYe#O1m_s!z%Jn zIK9qbikS^8hWA<)^e@zEh3p4FO`GvL->B;=sF~s3Str_O*+)^biaC(O^h#&(;zDZq z_=4&jAGaVMP!vHH`V3K30sC)(gqwm?NeW<xuK*an=lIUt96&v~^?u?M1kaCpclDHsj1Q)H-J5r9sdb@ z=*JzLB0YFWl^(J(SR$)vtWmtoO68xBz-K3Ls0QRYnP-Wz_4ESNo(eI+yHD_V2^DFf zsbe_xDz%-2kB@y$=P%OIqCkiJlDGhH#gOWH+Yk-dL*#0c#c>e4W<^GP&ofHGe4W<*5+U{kkzy`*<-38>VD}2oM#hXh)R4VwB*DHZT0LyKg9y>l}i*%z_ zeFO(>&Se_{&}vas03_aA`2t{^{_>Bbi+7j*U6Fs_8-fV$O9{v?{12OehphTdXPO?% z-ipW5{jjPUVYpvEj-hZ{>j56pJXuIsE#sGhq{KdvuJi!u;^ z3wG+!CqUAsECuO`61a#P{^G$&zYo>TG~}y3pNG?^&f9I4>8DrTf{f{R=%w)#z|jr2 zvv)|I^)HyjEHDIe1jq}3YkbJOyb384l_3?rULW%nnA2s?!NGmuu3miss_gc0Irns! z);GvaD;Pw>T$=)SLYJar!0Q@XP9VAd^-QWazA}F9Ta6*k-kj{f9o$o4juN z?$DPW{*M3mR_xzAD15w3uV3Ka#x$w`|6+p+-{9VRgQL*ax;?AwcDkbLVB}>$n`h*M za026TWLRhvs(CTN!C@C|2WjXYz+23Q+s%Z3vb;n zad444{sg@Su&O;99++Zx@fb>9WD;NG_ZY6QI~QM+HopZSFl6wU?)|x3mY@ptZ~&2dKQ7V?j#rJ@$s>Vgq*|IE$sy!zeKTH;yFgf`9+?K4c#wRfTgY%*r?#4 zOV?LLP4kaWoRYyy?^FReow9j`3us31F*I0xifC*E9KLJ(;*k=Nw24Byk`D#2ZHraB zWMl+r<)}53xYE#S?pLmre9$@R8o5ESjEP?oVGccT(OhV)bOgdIhVkFo^WWe`Kbv<_ zS3kxzJAUp8KvW8?x(?c#vnf{sw4JME0y3V$4WD8D@0pd}D)?RtpjP}iOGwS`O9wq`mq;0n?{8WIv2r}fT4^*b z24XaFh8ngcyZNxEyp@iI^8XuE~SYJ3!tDsJaEnpy#9uFE>=n>aJq@xWZk$WRkFp)s|Ka< zB;bV7GsaM;sxoTb>LwuA2e;|ki+%w|`-WjW!%AGTAWp*dVYY8;8GVvUP%%on6q>MGMkP3c zp@0+KrZ{zBu7cBL#sN=RoU*bpfEcwWeCz6g6IGJma5Q`WEInP6x7g!AP`}Kh^e}R; zSK9KO4*7Z;Gz-DJSJ7s4+N*Y9s7KkXv#7P_BZgnWapzuHB>nW;A&MSw~11G=6X z-4<6BaH2w`pWI!nRPbsAqnCHCxbD?w8(jvGFGuEevpVRDAK-yd8W6YXmo~>52duJ% zgLC@a&Rpe}j2b7kb9?muCig)_`o3|WEgX*!Zr!EDa@i6%UcD=d z_ajRwzb(Llph`Olya#sox(H&L18Hyi+MfyeE`yWHB*gcZW(Ef8-Q_+GZ<-6(Pe*z) zB2Q)o{Jh3ih93MKTkuYNg~JZs7*GjHa~=(r>A*V@XvWdJFJKq;sSz-zVSruTrtvM% zcb^xnUq@sE>Ixo#BMENNHohA_rhbu$G6F|=WJMF@8-;}+GFCxsf-dLag<1f*HLIq- z4;zoyf$=e4DL7&;M@J0FAO#2FCG{(8STat+Y)45PYzl3kjU141tfC-q9$o&NGZVm_ z=m{^8;I%T(leQD?CL$lmR8~iXjixR)3-m5h71$|baI9n4QEgZ_aARIP16Ml;J3&$f zL}K@^rs z5)#2lThN>!JtmKI22DP=&2YT-&T|ytTp`1~K~>k^iEtpG$y?l{UuZXg7JZs1@J6$t zxwm3C=-C-&0BR|N_oLotxNiw?`ozQBPk#9sK74ixDqua_n4D=5b59TtUOF&nCIAh+ z3&!K62ePj|!Y^4mz@z0;k0w#F+ml?ot2sSt%5ecglZS7$NiX*SI6^<3_fH!E5NC)tUrb*=+gdq>N8lIJ%C_5}O9&GYxut{)%K+bf*>5bZNZ08Z%E6CTl5<4^|Ae+XUy)gC$g5DnTv^wCAkAL_G z4|REJM&W^%_-rb#GD9MnYoYgG-?HQa97S=R>snm_?_l<<;!vIX7HXUfkLsi%Qk_pZ zppA^z?Ar;No0F*{0}fwZ5P&2BIe;|)_#4YCt18lKi|#G9Y;)lPTGlEcv%V_D0ZxLo zyF9P}u9RaCU5!o%Afx3yhRuMkgypl`GCe%AdmQzXom*!q8?Ak0D%kX7z!QYZ6L35L zos^ym@9cq0o?FP`NJf=1r1|3uH@WZbTi{Py*6+qf@29^GhG4w<1<41PuAfLgpLY?& z;1r^KUH>2U-aD+xWm_Ch=)L!@*aL(B389G6Lhled3ZW!~gcJzP3W^0mkq%-*0TDr^ zH$@Q;X#z?U5JW)f7DUDJ4WMrKKIiOv&%O8gJ>MTE&qJ6@U9)DrYvx_E3W?!F1SfM8 zfk6sEIuq%JM4ybHw#>rJ+y*r)@_wgIjPXeO#eZ_OZty*V(l4l_3P zrK?)5v#)@lKuaqi0>&E#67(H`)|fZK6fmPOJb0f+1NoM-GsYhaHXQrlP)mIWgfrQ| z*-jq=2L^Z{tFmoNb2mS%zbf3&pN3nPEMZ})XgnbR1`H^PK*WR(0yfOxPRQ8b*dSah zm;y9v!L0-3a5nwkVcxk_(c6uyhRewGNH3l*#dn&3mY?}kCP9=8g1a9 z4`dAHE@X<2ni^Ki-a9DL*wGN^!`lHxX*>yQXJMpHS!Z9qXgjQ#AId){2-w4gyE&57 zEHRG0_An~S#ENPLcXXqMM5tR31B`%WR=64sZx=y!GV}Gf)&v@8L}FNo39zU{;G9An zRB`JJHk@FN4FJ9ifxixaG?C1}VpV~7$5$f^xSJu6Y%Qq4bf0iMiRfk*Mg{tQbl@?? z*TE0iBWchaoq(1!I2!m{XaqUCA%AF$tGcR@!I{xe4H=3-g%~mnDZoVzxT&->XISGL z)q&Fqx)mB{=ZK>C+6UXQ;RAje1zV4!G< z!E2eBfvW~bTW}~@Ta>@!{p;#Lt0Hl=J2Ma+Vf(hR1cLDy+ zK)z+-XJ;2da&yu*3UP=8e($J;HWnmfKZ3bMpaugUjJLql^7yd%Qd4Q6gdv7`E}K?sz&DZW6)!f?i^sam;VH3KzBp^jLWz*Y54LP)qK zn&d{p3N!MJZ~$*S7UqDE4bkg&^pQabH{(DJtd>il zqoxHKXgK*gF^oxpWT2~Rr9n0WlFlfR`)5ZsAI@dss@aKxdejs{v&Kt5ok>hEAiCaA76 z*hm6hgJOaN7!I~~@HYtnhYZvIN*VGmM}c1lfHergj`!;nU=KKvl~yE0jqDs02;3V2 z5u^j!3~!0EA_fABMJqC}N+oJgG0s5_evHU)EYZlDK?7G^X25|!NQC1$`--51QVj7J zf25-U5GMf#;$)hWAuUW56^_K)(Hwx#0Sk=4Y)#aid|=>KfQm$`qO^Q~cDfoSIGpUS ziqKHE!Ux+0+B(74r)-N30OCzJAZ@QyAMwV_y@XoD@bg2-L!%^bv3kEhHV->l+z|t6F#iNw1%V zv+BC+%Sjcb4qSy{!CMl_*q&rcvvaiabM?iCs@oa+1o&8lpnydRgF+851(sdDHs1C? zMDFO|6bKj((Zq=1ZNV_`wnhb7I|94tH3)%Cn7K;?(k;M|l^`IF@PT#wNO&HqZt7m5XlIquWJ#68)#XF z0iPbg)(C^80uh*FWC##EW6|dJHbe^(drJc+Ul$w&MKyNzF%CyKsREre@Gf9%;_Rnt zXBA3|w5I^S5)5E_r@wxJ1uszHI7_!c4LBffLNE=DUA4pmLWK~FfwvW~pCB;wJB537*)Wqu-@1JAUv=%Ap*Ap zA;2m#BmhpuQO!ex)m?pksh|lJNESm3Yp zY*t^pLI?ze8`2D8LUkby4Il;jFtEnp%cn2`Y*x|7D#!jIW2XAv2QH|ki9|)|Q zeE_1|0)ow{>kw+Wgt!HUIN&kXBsFUTG|)7{5n(hZMx+7NB-kc|3=ApN@ZN?9CkFyB z!11%w%W!hG@pCY-3&FSsfut|c5)DCFIKeP*r(in^s`c8U zgoe9e5rHtWB}L6X#Ezlq3{=lF09FZfpbO&b0H-?mqih)ZXpF5Z;QhcdS{3U=BWWRQ zY)lbmS`G|HV~ib1gXrj}`r~bsMg(r#uy_qsGgGQ1+Sf2t%U&Jp2(z{KK?j5PB$r@w z6Adk!2za1(Akd*f88d(oC;2zsg4GUb9U`&C_RUqS{07Y`R|GKUS z9H`9b17C%}dCIDaAVUit8VI>&z3~=(Fd+jff=Qdx~8!y(6>do0NSBh!UFwOwY0Fb zkT5vV_NE~HO|@XaT|zM2*_#XxGGhe8*E@t+fE}F-XRIoSg*t-wX1Iet3{HS+62V28 z5d!7{ceKZ${I#flAy!x)xGHV6Dhz20SgMuy zTUoiN&|R?@mJGC`hb`b|Iqvom{voHtQY(K zfwI*FUtN`dr}y8Q|FhnM|Hlin4&6U#|Idb@{mZpk@8&P%e{}J4@qSyJ-vWF5AY4-d z9R!bw_^n_SeX9{Y9Q>$%&iz>cLbUu_5kJ=A-DrE`R_RNR?hWW|V_EO^&+Yzo|2RAdh~ww02mgt>pBaB`^3VC@|H;zfg2}*BSjfMze1Hvj zgGg6?G`gPuDr*3WCP4(8_bMU4DZ%uR^$1f6A;EttVUT@)MB(}^deP5$|JLRI!>RwT zsrJ9O&-???|8-ZZz{!RFz-)jBqPX0`N|D6y*|4*rQotFR1hki1(f8<-bzfp@e zP!Xer0Bt;4us;C=p!yL#>ThcNfuuk6^CMi6L#WR`kFul-|Gm$@)c&ncu$O8BV0=Sy zezYI#0r=rk2qO5JV;|3TN^|3TMZ5c2mw z|AVf-$Io9%{|;STe}t+9Z;d-QhJiq|-(T>!m>C-Gv9-6sm{}TwxVI1pkEtbr9LyvD zfsn`{GR1s7L01@;aI6ND4O20=g|-Z(nN$^qlJ8Zp<**ieBEDy^pf_X?LE(@5|5i#6N1=s)D7?0ywz@9}H4D;5KsqQagtD5y2+|@x#MLwt%W9ei00e1? z)pWpmdNq8nh|hX@_iEagMD_)BR$-?2l6+Uw4?y}jBh(M1nJqy&mO=0f1L-Fqy(uV^ zL;&fJAT2`j^QJ=}EIh0EA$~YKNUMT056#iu5Ttb>5DuPz-_pSF^H+X|UpRmh0x=Ax zL;#rpK15*~Zo2}Avx`;$k#>TBZ)jy(5I@+P<_n_xk|^Hf2nb|-&a15;LaVq{07yn5 zv{2v`R0W{_*XM5wf7SZ?#Om6v*LY{Qwq{VVwm9yvRng!dJdQME0ma1Uf|^%yVrJ7GZ7(v&VT*0{yjamYi6~>XYXz zKebNxAPvgbzW?;abQ=6*0*;duR3Tp?Z%90U&`L1>UL$UewnNGv1{at4wD$%I^hT!CDJ6hUr7 zDj>CxdypnbE95ccDdZVs6fyysfh#(aSJBy%eBW#%I0YUXC<9_CTzS>{hHY%Ibo3M|SjIxMCvPAoVU zD$4Ft)8umZJce1ot<5h9mc+s-G<$pJ%l}$J%hcF z{Vsbq`vm((4sH&44mA!8hZ_f(Bbpoe5#|oza=VnfAP8&{N&Ir!aoL4xj zIXgKgI9Ip?xwdlci%Bexc}9XEmd5O+HFP40)>W89y3 zgm`xF81i`Vgz_ZtlSNyPMaIH-tBV_Zn{l?+EWlK4Cr;J~KXFzJq*O zeC2%IeDnOA{G0jp`Mvlf`BV8z_&fP$1vmw^2p9@@3mg#05~vdB6Ic=y7DNcz2$BR( z2^I*p2)+_x7uq6ZEaWS6L?}n7L1x=t|pAat+?-pN{ke1jj z;U{rYqFCao#AitbNn=T(WTIq+hki$t=mr$(qPgWHV$NWM}2X!%gKw)u%%m&j9p&Kr3=-9BbaqC8>jnNy6Hx4UuDWVnq6_XY3D=u!5-(GuYOBOnv#pU^uWudN#=C9THtM#^+n#J^+m7B& z+@8Jt@eZaP$Q}3{SvxvmOfVFT0LzATDX}VPDUp>fEA=V!DC;XTl&>p~sfejqszj?) zsLaDR!QJ4A@MicoRitW=>J`;z2qAL_T8Pk zdrE)1exQD#{=9*z0nMPyVA)XHaKB-_5wnqr(Mh8YV_K(+mgGndy4yn2htGjt_OkAE-dnKui?@yUW$z^)GoN!li#S7E8g9mSw{NoVYrma-XZ@!9clw|8 ze-*GZASvKAeiuF!KMO2CG6`=2O#?3kE)#8tdBpEQ&OyZ_4$@vy6F7_oXPl-iO+nRWsp^TPUhT+bIaMj+1=-NpD(%~dm-+^=Zl1k{g+HG zm0#X+IW>nZhmkXR1$(9WD*EcRT&di++^>1$ywQC7{0G-GuU#vUDL8$d>3Zn(*M%O1 zk8c>=s4P-0x>PJy9Cs6PGxX;4t-ZH;Z(H2HUxF?vD&1Uqu1vV>WI41vqI|IeUol$g zTG>@)UUk1(r@E|0r6#X-Lv2=_Xx-^MTz8J#`F=O@?ovIae)e9#z47~d?mugAX?XI$ z?mF?*N>;&rzd78 zGb^*PbAof{=C{q4F6>@tTXb2Rctd;h{q3oDlJD}~YrMa|WV4Sgql|Nea*!nY7q5_rfPj#IfQSgcAo%c$h=@x_Nr;Qc%Wv2qFR!emq@=9&>jUNH;^OAv z=Hubv6XN6J6A}Smd?J#9fsIxp45>f=9J9PXf`)thwreEq#CI!9(pWgOp$` z{4tx#v(u)}#xQ-3WAj$%zJ0e|;_2Du)#;<91n6brl%{a1o4iv#V%c~(en#`$g^)er z-%27{{lY&KK4mMehSwf+t$n$2d8K(NtHV7oMgRJI+=6^>u$JDdJ8!=Fze^pwY8&{Y z*k--ZL4j+Rz3-Zq^$b!w;hmN{ z)tVfWawB(R?Kb7Dn7bn6cXHz3E|a#ubKlNBR*oFT#}T0$ZlS5uM50bF&yDI4yA%R5 z!$Manz3BMod$dqarEE!hwPLZ<=fl=mb3fjt$JW_WpD!omie8mI@$GF(*Fr+G1CKjq zMJpv_Dbrdt28M zKkaj5{FIWWXEk6cZ!u?as<@}eLZD1o!00>8 zd##N_o{LKb9yfJ&7C-k;d%lg1=xl7!$7}DLAZ9UbGnTG6ecyE@bA{{f-h7Q>cIUqe(#qvUnZ_?g zJklNdInTLhpA5;oQ%WtNB<2`Tm?Bj)=NxqDX;@L0o5>~5K+CeWG%= zxjDL#yj2C5HtB|mtwVhmC;0Bws0Q;V7eto0=Xt%}(yO*S^ge!!WJaKUd zEImOi3{{Nts-=%Xue{Hfrqpl0ZI%4;g-*VbJbh%Azp1o;WR)N|SjOY6q&pl}>KKzR zq8x++KX^406i710ob6uL(hQYsn;Z0g{c9zm=Pj(7Bx7vuCzkqZ3`Tb?D=$S@1C9V- zSS&rY#9TQ-i>>G*dq!>IKQyWF=mh~7smEG6Z<`TryY87cNI4e%b!V5c$Ed&7uqffog#P;tIeY9g3izp)@6eiu#UD)2^OwWX znlX=Tg+o(`4q8w12p>D1qIqINTP7;6ao0-P&SC8X+4_6lsjj@pB?B$jDYeow z@mCb$wULV#JCE`4PARJmw6M0RKKi@>BJV{ddNI`mq$)qSdTT;U*2I77VPm7&;UL4^{#mF88*9=)c$ zySTa@P;`#VZB~f9MYnu08+*#;zHH1xBNJ`uW2uwLsio2S)KPbhQ=9ALpCWZf!{MVy_IWG$fwrb)AEq9dbU5U)e%&*Gt5A5yMt9eWvEfpBmcqTdm(Z)K=HP z=^sko9ZN46h`LaA;hgRRndF7dI<3XGmv<3&p(9TGo-OX|H-Dh_0Og(V&(8SVK;2(m zcm60ApgGhgFR0vU9r{}MWo&Zm@7bQ7X;mw(V0`N~kFPhLqa%)M;X&P^AHU*u{wUT5 z69M3@`~WZef1GU>`V%|2e-8C8EGhpBMM|5z8#vb8JPrelnr4d+62VV~>M!H$? zeTUr3Qyj$3w|R1Xhh$Qzqa#A>QD<&P7E>Kk=jvrIa8MWC3OJCouhWCC4!E3f+e56o z-g^4uX?XohnSB;Rb*?r0-_2*BPu19(s7p`DdUXWb z#wk{)l5Nz8bZUeD}lH1?ite9HeR#~R|R+jzds zV^-6*4?iNuzkwCIaNQtkMe7A6L3;m$w8tH3Lk62eU{~H!Akp8bxgqF-+E|Hylv$K% zuJY#SBMz*Toi0_#8w1w{%y@UckSp{^@=7J#&T26K4xzGoy}KSuG95;YVsMWnJv1{~ zOB~=|`n=+=+_e_gHt7B&_rkRK%xuk$t^}?qKu3XLVnR|5r)c0w(8#k0WmCxDB{q%* z>C0~}E6mePM9xbveTXJZ7x5l6)6R{f<~A9!44}M69}b|U7Q|23FnlJx5APkHEbQiOZPB$zDiIbRZc!Zc%eZJ_fS2h_ z9mhJkAH%8?Y!4xRY%qNOQenFBp}hN++ARjA3p4?{dF`D2RP~8{h1W~p;S8oInNMp^ ze|+KjW+`$a;U*>V!i3UT8It-P!rg*Rd>U6U&WO6evHGYNjE5cm4yk0UB4mf&H7^s` z$dBd_zuL94@Rw}Xc(6w( zEgujVA9<-zFrDp|WLH^3e@Vnu4nH|25CJ)8`$l zMi$dho|%hZHssY>w|V-whv>gh(@Bp`o-gnkGP|lh@#b*uBR_wGS-R-}FJ1j}UE@I5 z(`Kt{A*s3?w|%+~HgBJAqK2$;x5vT8JsZdKZ+1E%Ea0 z_B7sei1}3KJ6Za~+jG}3=HA+ihamb*VUTh}}|Y^}cGMtCjjdBBg?Iqo+5 z?1{cr&RzpH4V@n>Hs)+L*jIjW%m4H2%fI%eW`C6fy$h>*O{w`W&cD9XU=4q6O#ge% z|9`T5{5zc(U7nt8>>L~h+i7-s)r$Ka$~ysC&+1lK^kXahuXpNyzS(Se;UQIKRdsRG zd6gB%KEHW_S1QRg6|d?hOpYvi@Sk+<7?6283Ol@M(ax;% z>CCkWHR-d^7g3e0x=zI<;!dBt^2YfQEKco_)w#o{fjBx!PDGvr?;riZ)l1x$^N$e3rG39 z&7+EyhtaQ}o`X-0E&{IOH{GDMQHJmFbeD5=Mf{hMnS1k5Y1etaLxj+(VWBJm*gHGE zL%u_@kO!GXI=Nz}pEvIL4teMQK_WNYoQH{*dXZfyyjN0DZZ|H|V|tPlUKxElv)OT9 z@xI7ZQ;!!$QL!>tGJ6n64erbiom&OvD9>P5*0Apow%$G+PXFhx^fiaam+}vJHxF~$ zRacDc%y{+cbw(-LUsQ%W^|@OQnaq2mb}8#K&AFQ)SmkGcg8 zI--L%_?OBQaD9X|xF{aSH0FG*Tk&Nn;-nGn8%{TVD-LB%O?QYR zz%0|sgZ#rfg(c<^=!4sBobXSO=-Ii+Gx6guS~GRsJsv>g`K4l>ZYaH7QcBKI2~T(z zwZ)ld=u%petm!31AI=ZcnYf2U^4R8n4NeJ9hv}l&ou?;Mk0EO_W9-s*e2uSg%&QU{ zL{(T$OccII-WXfdK;Sa8N_;ak)dH#zD||dxJ&BiM{HB6FVOv-HEqjfIlDy7oaV%aQ>Ba+ zystLIH2BVoq0*(|FGcj?ZlAX4iT~6tvMg|C4~J7Hu|y7|vm^R`yNONWTzr~swTZK$ zyP|ae5OnLEMFN^2s}|AKf0rv|JdPrmDVur=k}?? z%^E^}54T%Zxu(BKvbQxmzmR0(l}{YH_+|SEqz+r>jC22G*(*tg4`TSD+#Y)vy5F3v zzrpsc^U8bAnXnAaK=NMW%EIWtJ~P4qq~AbNi>d%Os()%8Cje8qzAX3uP>PxgM@)*=JC3={ z+E$13rf#_3-AT{PNO;q66=uU#OFZv6mzyS5Vm0?ttE7f)vg7N+aeR)A5V!idUPNaE zFHs*(t%sm8ixHhX?S*P;mavu${gEf-mK{<)d!|S_PxGCWbhlMI(ND)&5~kr4%nbLd zjd2{Z+-@J{Cemy(GqVq~G)KuG778iOafjIkd5_88FEQ7VX9@QzU`6DW+=>vw>`6k8 zP)?rY6P=OS5qN$1cB|f%jiog!celoV?Y|I#Wl{}`N$V@%W~Jm`(p8|sH_zfH(9kBU zoyPK)+asv>fq?zK^gYgYwR{TU8l!GSvrBAhgsXSILsaTtvqYtib~%hOdmh)ha;FTJ zc@Jh5)xf@uq*pMo`Dr2MY+I9eX(iNp&iwGr?#Xb?W#Op`d2SY0$hCX34FAm8`$tr2 zq_>rE6v>Az-sPFR=`&O)LU(Q1SX%T%_CnNar#!1e=tW7_4)+(873up}3eQmdC}B6R z*PZXSF7kf$DMvp=$Kn>b;Z$yklV<^rEM=pAw`eQVzcs9R3x@mRKFVEHZkAu%B-k4?A4{v zo!Z~bNVC4RZ8NniT{ZZkS@sI=4_utD;B&brx|3>nav8d@RVf;hM=1q^11`&2@lh5T zmZLJpR4yiWt&95@d>5kh@;sKc3~BEVxV*&1=I~yM)Xq-LF5IK`Ht5j&?Ndd_oE`fh z;g4qdg4; zZ2o6Gd-+kzePSxjdJ%&RnnesVI=uWT%Z1Ww**?r=+OA{L-yv;f9o>2DBz`C7XPJIkH0SRmUU0nK>dX0bZ6hh+x;_7Pf|4X_?athjhBL7EPRK2 zDv9E8(A{hpN_lgdxxhJ>8npvV+j`MB2RC~&#T4b=q&#!B6Sv(-q-2ZHHdur*+ zCx>@CW82fIcZ07P6(N~U>#z&)@nV}T&nqg=Mm1?xf9Sr#PoWlZV~*lzVVd-`sw-MKVRLz}Al~OCUy-gm59x0E8I;HW}$~3;k-3_?d zrsb$5dkH}9)8^`6QR zZedDpsx?K)S+f(GvhN>>!n3kM7ZU=*9($iyP{9xs~jYY^4d9lqb^^@1)dw^oUY8-(jO#fI@T)b2?I+$^5NrA&(2fxvUOo}~u%MbWo1V?LVy>h=XC7*sJIz*_6!+Cw zcQ-|OW0{DeKX>f7QTM!O<_n(5be>MRrG|L+IO4F6S+$I4?cm`_huO13^H_#&!zi$!7Z{2i@tsJVJgwx^fl zb-5n&56WT_Jk7PyFBh{8jb6K-zp;33BKCD|zg?Q>YvuaMhg~&|&$bV_zo)cjZxl<+ zINd(fzZ_PX9219^v57Dl4h=J_%6MlJoQbn+)@iDTEP8)_sBwNKt*}8tL^=L;WVC^p4&u@ocH{SF>3x2w*#UW_<=sm0ROAGDE-%4Gh_66S zWvbwo0jmvL_wDV52|8GWqF-Q)XU|xIct(ed)egK3#~bS4rROAK!LvAt46B`YB?9M# z&ykeFj*KADAC5)$ah(?bMpSS(Gs1fcNQc;ASB5`C>M1CDvf%EWD%Cu3(QnXM?$qe3Jp416&Qr_Wh7@~|FQWOn z#MlL+9(eBaA^p0P9F=_wBv!MlQln^F+~p3WI`!-=igwO})@IM^UN`k?Zy(aWZC2NM z>}2oRn~}FJMSFHFj%mG|D$0_Tx9*8o-Y|5G;!nSB{;@+Bufxyk(C@+?A8-^ZC?F{K zfAhs0n@?q-$lkfUk=NGUFqm&%Y~oZ@W>SNf)SDtr0*`NdWyyiDPe-lP-(tF2!zAow zLePboy@zJ?CBsDe!UPO>UAYI;C+hv9I9aPGSBYgN{R1BDR627;O@-gPsZQJ3CmX7^ zyPZrB#Yt0j4!+1&7odGaUXowA`!dF|huejYOc_4JrqOV3zG%N*Thphat4&dbH68Qw zH^>cEan#}_NCRSvzpNpOm)z1{L*vv+n#sI`VK}$ zVsl$8Qb+FQFguucRn@iD95t<-SqP3bqz=~a`k*Z9mS>Z8gr{cL?Im1Bhrko>nDUGH zuM+yCo^=VowrHW#pl^utBA1d1Mej}3EaKA3mjY|*cAvAc%If#YXs+`T5n!{v*)xu~ zp{Eq|skF0KK{cW|_}=LphxeoPSHlH%PtEWK%9*@uMyM|xo7gGw8M*Vhk$~3c`v)Jq z$Gv*It58=h67fDTLX|^-CENQ(*!ffYr8*AW9AC_0d|9m=t#G)rSE?`K^o!=Mi%EsM zZOvXacU^m_&wQb9*LIN1J#h0&UXDB_@1~`|?gj084O??$8l&fL?OV%STnOtvuAshj zvaEypY!UaWm%bERsoVDk_v*<99awae28)mF?lh2RR_HJ=vEiw9q(d0V`TIU0Q`%(U-|*` zCy*LYHtAKs8q5QBp|s*aKP9_X!R;&_T17*Hd9dmim(R%PZ#U1;Gf%Goz&-~xvT!67 zI<@&CS4&QP^&Y4NsCx2k^Dl4+7Yg0iFm>K4AI$Dp^DdNL{LlY3Pxu5pP42VIDs zlQO&5^x}Q*7H%ERJfO5+>b#DKRa5ncJr+dPD}5?)D*M}_+N!eB{c~;>@Zq+)ocP#@ z(Tfk*ac#|Bt&FTJ zdrr0KoVyV9{J>1@r(-`R0kGP$%jJLr7|Z?J@|~}J5ua_nxc1;vK{)J7Yg^RKCXp7 zVOt+=wf!%oDs=sLrVIbl6QHa=Ru0T=Z5TrB55RvL?oHGW8l{5=Zf)w|QCwpW6<>dr zCH+CIm>-21|Nq0&PqtRQz8LTLej_DbMwLiW4`Bm8mV1@B!E~M;i)d>4#xioy?(SjMs9i3m6u7R)M?@QV>aVUb z*_#Wdc^fL1g(JgVp4YF!D4VgeIxJw5c(Wwg3#%;Y=0bS-^ZKj~RK*&ec=gl)=&q}r za&7#mRUG{q;ebP%JO*$lw*|y1hxcA9(7XUJt?$J@!%=*nw7ORT*0j19>4iF-)0zN_ zpKpBO0I=UP4?us1Jdm z(5Ad?zrRu-#dHoUX?W9@q_JsHH(AcVwyq31OB~_fG{uLWYY==;TXRFORLDCN{Wc-; zbyT(rKcv)$J?yEMJke*&kedd?%6Gc?zG^R3lowXwFYYHy3yr8hs5U9A3`uQj-S$kH zR+6H>duLB&>dG})na%C)|t}WGgF~8z0;`f>O;+{&qxe6TKmD(7C!UVS4fF zrCJ$oKj=0@sZ&H$e^Z+71YT4H4YgLQF8+{nPkDw zeXhCcWTkDR&9;K}9*Z8^)OLxT6OFS>4eQt6{P0RAPUge-VP%%lSw_Jgr=#aSXS^oS zCl<%>yoeqhwKR5IW(~f04q6F;tM=4%@8tqwXkrdQ#c*d`Wp z2*rGjqEEMzr4LGb@0XZlx02ktMa4e=nKMjvVt-8imN;U~ZO%ROw#jD!Y8r%GF>j^_-PxTeu!;KC`vLBY) z>4XiB!1euXN^hUWEOI^{f}b^OtGU72NTswkIt=S?az5cFsG3HZ&69dRI3YS%RjmJL zWCy_drEbgV8UZxN4Z+)O_tKvv%$a(kls6X<8!SUK#z)6p?wnR4@j%q&zCDiFM?=|V zKe!-A^4=Hi=K+^1OU2)iCeV*tN&0tqojuNXE}&3- z7fZFxB#g3V6O%4%EAkjhvc$HOT_3m-4U;=9om=78ORQ}tJ4^Y!)VbeZd9|B#_3>0q zSxs&1kRdFKyoonJLHmXhkzgWtvM<-Ak$$Z|tz|P?im0Sr8v7|zh4GWzJI|GvF|NPDUoDj(?iD_+A6;j>MO%r=FUVmGr#IzR=$MgpIIOi40 zbzZ+D>UzvW;FlY;o5fK?c%S6a?K8#v^d`&F3A9FEb=@IjlUneu{ghzzpt27=|aA*b02>wV}j^1ZeH|>$}c0bS)Xur{{74= zPkWUmSJEMAJ<*Fk(ROvXE#JC|5Y2hR3z~GZmR&3(&M?#-ZdPTv9B&PBDlGki@b*m1 z!|pBzeP?E?0yYwgqxe0ymPB7uN7_RLvCIm+`yz}y5e8-HtTeUyXf}7q!&i?7&v+)I z4mqA@5u4d>V_i-4yD_9*OA4YPUs6`ihNq=3?N_mLDc*Yqn-WyGvDQT=F!pT6qn<+T z-M5aG&!$~j$dY!KIN(yH6$81kgW$w{anL`qiE;jNKds%&-S{PLhY8%%1xWKQ?AlVlgv}xpNtE5c)CA3EMn8W zDX~3xleU3{#gO!2sCZ;x6dwWJa8*f8ry zveFtK<8rF9Co_CW#_E%g5UpjQ**4a^Dw>o-s3gU0u;!D+fp%g`_Mcxme0g%JDnQP4 zkD%n;8%@rK6zXqQoX=~92RkEcPC#51Kngo*I=l=&z(U@gT7 zv#jpOY&9zypo`oxXf_>}?w^(5)R=HM>{wCKe&tnpe1ha;^=n5>WjKELE=pHNY{o)g zWT$U5{!)u*O&GOl#E@>Nn2kw1YU?`ITiT*LmfdHE*?OV`QJfghFgY2G@vVAF%J3&E zPxwCFfq|adBeTJ39gQ0h_$ny`-`uLw7oaUdv14H!43g^eitMsISm&VjFgQ z&6wpGnxCH#fhO?kCv(fhXU?QJdPkyk}f3ZCy2(_1YQo^WT=ryrna*x%o*{rPoO=3`!NOm~@U|1-|_+fI>`FI-(%l&L+G>fex( z7M-uG@cxAh;wQSfpv&f&KxmCZ!ON}t$#Qrhy_rA-OE zg_SxAn+NvE@m{~Y->dVIr-z$|q0Wu*#Ce`5FDQ;KFk5v0+zw&4o*T-_AvOCB8GW^9 za;YD>a%S@FQAoeo^=DBoNM7^75d;rk_f)FsI5b{GMOj6e%#wIN`k+m35PZWS?tIzM zO_qs^w=rov_0CD@nT}miX|CNH=vm06TE8P@V{dPjDs+Q8N>Q(~kGcmN^sCEH-0a+x zn%Dx9>aBZIRduef>Y}hc!tFg#S$o;8cOZh?(h%@+L87nwwuM^&`w7lROz%{?#;NfOOdcavQ`E)t50|u>Z+7i7K;kzZHTjG zec;noZ*rA-_^_5mMZ+mxH)4#J9y7%YnkDnFs&A`oRN2x@95O~1M7t?l z*hL$%t|*=j*ymEp&$#F8-$A?`*MO7_l=RW;dN#kg9rIw*$XgSRh}^-*I8FNP=gtYv ze1^oVZOvkkYNffCm2~p_ar&DUiEF1wgqPK|rka6$%{DhvXEk)fQlnEA&-K1ZK;92t zy1xD5N_%;e^a)pH-kWDCcTO>Z>tbc7$KVRQ**Q28m$Pa9_I%tOr?SO98<*DO-K_+h zS_Qsh@g1f5h0}v2?Za)#6=Gs)rY$AM7EF&Nzj&mx{W`<>sHNKwcNU&3wQV3LD7w}f z`edwG)U&QWA>61eo3^*&WLBbfy|Q?NjTE3Uyk*65G+G=#m1%u z6k&VF(gNOt?X98LJ$38dc^h)2n>9`z&q^1oK_V95k>9RUb6vBJ`;0gclvVK8Gl%f* z?V=xw&B+T2uGNtHq^j z)zGk$vlkju-FGph{)g#kMLbK5$dDUb)~Kzt=z>LdS{b%)ir5# zt^=aw-2E{?{O;K)~qb$(UqE|12Vs;{)ou=v!y4;?g ze~Wqe@ujdin?tfAT2Ar*WADAgn)(nX5MNd|+!GdecAv>{pc zgVsoN|LMl;%95q4Q0g@YF{u1}%K5X0&nNDesimMk_uG`^hRef<8_JP}dwKpOyj)+K zRToo(xA$&Y^mC*ueiHMc*O^M_avO9eARiVjMPxWSIabxP#TiMzv*+NTl4?SZu+Q8a z8a5;^Bo!Rnc9L@McRCvwkRx1^l1(^*$m+1zmzg)e_q_HCj~DbAs-UI*)ZS?MrrwLr z6@Vv@9P)W?v;L+U;|;m?rJeJ;1Dy}d?j`100-eQ-8B2cQeIA$!XGq!FKJZjyCn_=4 z9Q621axKm%qTm*aBZHAYYVuGs%la|wu|g`^I@u=ABiZiE_}h)Qp_V1onvS7TrGw>W3^c%ZT+7~0yynrgOMl4Qv3|}5? z$(y8&?PoQfkV{-UEC<%x-D)@_*gNw6x(se|`)N5HnmF`5)WB6RBF#czSYEMjU2DuO zs;eAk%v5V5;kQ6}PszykmdUsL@<^EnhSw4&?u3;&mbkexfvBt!{$9Qtxyx%nc#a0Tz7V-rz2FE4SpugT?rYg@J3|?$qwaX)y2Jv@da& zr`E(xMW>?5Z5w@@7eP;pj6L~#xaLV5shcS0jfpZU{ zDfnvjgKG6(i0h6UUA^5;FG{on&@4Sq1i!rC^>GR=?;!8%k{x z|D&qm%b=FRxGP%{k%Glekpo*0b!zUVj$$?8_Y{H$j?C5Ea1@K)4Lv2OlqD;9$I7R) z5QA}&+=8O3{)-|$FM6H(i?Ve&-k`ni(`WN`NI1D*4EZYSB7k-$>UxM39^|2~jUTC+ z>VvgUY43fu(^VIs7e&$)MFae5VL^J7i&9nuxRT)M#-XPWtk4P@!}?{pRmVe1^k%Wi{VhVqXmm2s`S}y-VyGauV}K*vOYLLXs)Q z_ZKDdHb7RhDBkjb;K|iP`v{)?tN=_~$93WsZYgzavbBI|X( z@Lv3w_`a(;$20p=?~A7Pf#{&wi%EB&}C+yBIVv?f%vUvr8w*qzTn zXk8+BLsBJ_mgAlG_f1ve8%;lwzi1z3KFF}dbr*~Q%kH<7Grm&i_k$XmN~l#|mT#2) z{PHJ@D5io%~dct)5&^0DN=k)csl_+zM{4J-4;r!;h?nJVn#cJ-%d{+_D| z)`#^|4nT-|{CbpGpCmZ?sv=43vyhJdlDYH<2WX}UzuGLiDd$FmrJ^OaYC%~fTW9pvrLd+y40%;@UZ`l zP54CQ8?D#qCy$*f2-=4nDNfwI z@SyfP?-P<`iD#L0(tLi94F%gEn%NY%nmOsLZ> zz3h$a(iGoY0WaqS;?}U11FOA7qPZE0Be{Q53m%|$@lx!^#O*j6MxW~RF!s_R2fc?P zL14*Z`5k+c`GVQn(-V-C)U@2vhC7dEz`1j|+vC4q`iJm|3EpPFQooLlfjN3AH6%lm z>!oTx%-3m=*Qs3@9|9F1SrpS{xZ$PvI(qtxb`7Hy!5=c~_EY4L*KS#Gn8{tMpC9_H zGN)|@$L2aOqIfHsQ6r;+S={!wgL`8`E5%WUjiD2e_0!kGqyrD&Mk)DQ)f~Wq6i(a0 zz@KuX$42d2yR;=K=Kwty<2$+JP=xeHsl$)VCe1$4jWr8Wdi3Z+E_=voN|s6w>G;`I z`m@7|*`-funSTinLFuJ2qFZgx0Oi)(=Tu-w=k@Bpq>qNK7|;^_BCs-nWPly`>Gu4AJxnM=F$5D*h|UIoU>P z`aKqD9;_k04q%3*$vq$*Qza&))=6<76>qyZP=hf#W}m>jFiWiWFA2lZ{SWoe&d6He z55>|94g!jGClJACniU8r(_~CwlX~9hVEy{L*@XkD{U~R^qvih~qrHafoSEo3Iy+r_Me^SDV!MNjbQ#A^W z@~!Ost9{jF@iG{pa^ zfB(Hm|8MCOASwALp4kcS|1ya_sk+y%w0-Q)*%o8aO1=}s%<=R{w0;%%CRF^PUeo`z^0%feyWHB!-G zyVYs_gPcOj8x4ac>4uD1wEIgk7H>ErUYEfCrPdf8;QA_4pj}&*uFV&PgP7TgjX5x3}-s>HNwB74(c<%p7416 zC4CTVOW11PgMiJ?f#{|5n7*{6uFV?0k`ycGGTx`iUGdt(*?c!v>S-%6!Vk*x94ah) z9c{Zv%{e3am95mopHUhv4kBqJT;}_% zQx-Pu5|i$Kp_`dA;iF-kF+o>u7Rc7o^0E1^|9`cbU1=}}8g0<`#tx#*kIOY`P(J>8 z!c}5zvmfCoE7Jc!yzX6o8(`P!Y}#_^t=eyQBPoUmuN6#|oep57n1=dh^6V1wp-J`j zOt$znQV9O0@`NGV&$|>K-nRdyflVJH9)LHzWR6*7ZF^lL?H_&1FViA9mA6-kbWaqbk z_VCGE>;3|!S$~^ebfPmkRO#!EzrW_7t4v1raa^?(^)46j*dj_+TM=cR7{?NyG7?Rm z8azSOkbB(xI!rUP1dgz>aw}>;2^|u#Y!99RkCj(+iN3)~7B>1V7lV>BavEDS7Sykh z{5zF>9dC=luX{F~ilK-bENgm!QKE`bLtA3mRjn&;=+r(fs1I4o(CO=jESqlvuT3?n zhX_O!9MKDdBI{3VF(PH;_@#p4aaG$NgrqZ@oEV<4Yy?k>#AuwlgO{p`e%NKK2TWq| z_e_%1U1FdW47?k$nu=nC=Eu(VVCGpYp4mv{!!z?u_MHR2Cxn^c8TU9?fPZATsM&L)JQ%NldI{+;T4EP5S7X zX&$@7S_?Eev_H(r8BeJ5I)u<8v0&%~FavNS3kXEeu=z{MOZ#PsGBsz8P+rk>oK$^D z!nODduhPrFv+o(2iPvAcx{*-h;*YLKXKO|Up|1AO>vuyrLiAj3{lW{`Hs9p2a;5(B z?jFr=3jZd(i3=Qtn|Qwdilb9FTh!jB-c{GO#qX+oE_OfF_A=J*1`seACyxrrl3D$n zmE4|1knQOo{Se6b#?C9!+Y@j?b!`^(7-U@G=0s^@U5+ zM#3^SfM3%$b%lL(63A4wQFklLq3Be|n-g$^l*^osngLx!|MEAHAZ@3fOK zM#s%4nTbBgX^q*>4*^P+q7N(WL?7askQV&lH2Vt9yqEs4rICEHgoC=#k|dg|ie8+{ zCdH*hEsT7!rq)$N7-FLW$vdC-t|*>1Ec(&J zT@8tc=GTXdPZLS*LrV;w2WF4YA}IIX6#Pl6Ie{Yht>$>EvuUWB;wvyQm15t0@+^*f zp~~ZeB6JhFi3NjAnl4c#)^3H5zE;7eaPFETy8YB`xXv}MXYm5iS&Egpficn<{Il#I z%AN3>rV+&S7GKr>U;*WeuTtYVUIvo8m1Pvy_Sgb;zLRkT>ga|_G~Lgc^6ww(9X5G6 zi6jC^9#rQV-r(`(Ax>&KrV%|X`ssc8WL-{C?bD14rQpslJUz_F#_WWI4)aUVX+bJgjydGB#-{!QH{%S#hQ!Gjrrk4^FoJ)QLZ9{{1XZi@@E=m9_HH zK(hC5D6x-kVgGssrzMQqIk<;?PpFjOF!}HF`N_ZGdDtEOwr)7(Ym&|;PtsvBn)Uqu zc>fRBf4u&`r91y8znYdo6&g$Ku3mcLN?|EJ=AuG@bR_YHP}qlwN><**)!jS@jiP2NJC>KYRR_^t z;@*ocIxWKflEs?P9!9+hv!txrc@wEqVe|7Fws)?%Su?io90^`t!+-A7!}$FDj7$73 zQM_l-0bzAY2c1`P@=fEUEHaJTq!tI!V#!KS49mP4c_x8c-7^MVJ`p--F>MYds5MQH-^tVtqj%A^CGfvSKbh730 zYcl4V>m(e3vO~8jODQ}{LapDq?SFe(QYqwvQDr^>Lm530=w4L40O09=N?(w zFT9fEWX9@4HX#sZEH_fldKZa37f<>ZJhv3>19TJLz9Fj0-?8&YaFUKw&g^rigY3Iq4-VYvtfh-^i9!k+3Q65H zh#A?=B+vD<8}@jc23@+x><981HJ4Zz64oeahc4@>MnH-8#Ji;@PU)E%eIu)s&*p{3 zlriP812zNqo>_9xFwr+A(1XmA%=# z<+bqVp%Tl}ZZ7r)0-E&L$FnmEFXg92adX^xCnKII$87%%$vZtJM&=9a6hfKHB`z;! z(aa?aYtP{??4{L)H;SQA-McaBs09Ol4Xf%WL5cD4dMX0!EIwZAJl2-SOgJQ+fIu zKK}tXDoSyEtL)vFX!tT0O!U}EaIRAup{;BmVE~vNyO%=O69GW+d<;;%j4Cnu4w!mO z2~OLN3VlfFL}&uvUosJN6SSOT=J)w*Z00<=YIUG^EHJjL@+|4J z%7~0?mdiEgAl~~3oovyEX`y5#oo5O2hT0U?%^s&mke_O?!?j!BVtpfU8b*sLv9lg$ zPaE2b>S*pQpQUz^rV*ZF^A#uQ`ddN(CDPUR%G0yVlgQG# z`7m+sjDz@_g(4-1HMBC%RMf}0YO*$z8p?&&uyIdiVic-%C}gOdTlzJ^iDu_J=Oe~k zz7~p=CpPRRDR3y7#^tgQrr7KMG?6wcs9UZy0DS;wI5Pfd=r%<)qHU&_&1%hHuJ^d{ zLi+Z1GnUkB()<#~oh?ctx?dUs-o(7RrOGwjL<@Jf=;Jp$PPpZqu|CpL=4V@Qi>&h1 zt9FD~N0RRAOb%pGZzjtoM#VF*AOvAnra#td@DHbVQ)QojU8e zFm3VD=IUn?+$~X82g*ScY~5|woGcBc9ZU^RqDjdu+h^A5D$P{uH__QeX9~;u{8dOJ zvH7jc50J(=pWz61z1pQL9mJfW9s)F93LmYlinxn`(H**{tIv%i;EUV3(;)4+CxE+) z7DM{@KE%Z2e#dNU^>zN^Mq{~kh?p=h#q;iw9;V94#C~--T2`Nf2)g{SQj3Pnp)3_> z!4tHd9oxY!N0H%1ECh5kR(T%F$?*mmj z2FhYSPxbb)*DyQ*R1*ECR2NK+9%K38X8ry}*Qv z!^)Jf2DB$s(R)+XG@ZBjGjU_~%Ezhi_cA|5v>L@IG%c5hybmL0HAHr%$qWyjHmBOe zjN3($In)YdlI1?yfeaq27Z-93!agcWOCkp6SRXwYZeqlR>|F>Q~ ze9NrxeEVJJL*x{^ZT%PCKKRRH{k~8^FZhw%~^|6T4r|Dq(}%R}{wn^K~jPSd~eFbc)H-)QQ>Gwy!6`p|fn z^wq?-l^s`o_}iZIh|iO5KPVLg&wk~iaQ=d*{|GQQsKt2TSUy)Zfv<3Z7X#RA~< z2R9ac>aeG>UdDw}7B$>&950$N-;PzdfMm9;mI8YKxyWG##Tkt<#55DS6ov+b+u1wSys52Bn{3GZVDO#C)QL- z()!auN{S)k^gooV+ab6^-PRPw<+*Tph$aTdkV*MTn2~=tdR-)?gHO6?O%9+uKR=;dTC}r zu^S>r)uQDVB-y4;+?6r#`-b}dt#Zysj6P-3?;^ff=B8ZHlh)YrvJaJ)lh=)mtUO%x zc<&8ufVo<`OeNw_q(M&B*5yypft|4X#g)_#bWq97Y%FRN?KLwt-B*35gK-CDb)OPr zGa8C!=I%_bD6vd1kxzb`wyO*Lh1ausYp$+wRNJ2X;p)}OZk?2lVe@;eOuF@1rg(=O zwH(>1^ZZNVNo{ebIa{qK{CUV+n3X+~h>o97TYD45tF@_cm9k>FKoY z*{BEmKwZr8u^a4jHyWZWZasa5O7D=dgW^O)&c^+M`N@?VQCv~%!YUdPb4(|iaHDH`D#+S@4w?USzqp-iL80@KsoXEMpR}Lsc zcKF@2l^8?PvaS4fAzAzTN##r?*_zL`TrBY`LDm5Lju(*_v67~e_)01I|FN}ctw$0P zq?P~=J)YOD_hY~0T|VAZ5BdxGhZ^EI5DQJw>MTNH7?)K4uP&Hhx+c{YXGICI@^zqSM2ApI9@{?P`rd6aCEcf!iEpx(cG`ga|+-J(@a=G=FD*u-oA z@4tD~jmaBCo6&J}t}p}f4I63sOC|mC;#^ega`sB%1Wmk|KQJy^Jtt*gR$KEk>0&+ zNTBRe_BTMvrt6ca0V3Na#X0A)^q~?PkgmHPl|mAjAZ5dIX6(@QOJ}y7^}NS+FVjbI zG#8ghK_>avrAE~g=ifG7-=i;dTduKe}&{m!4< z-pEPg7$voN71>@6(-$TC>T`=P(B|bmOI2yCRMZvxy&NGE5ckHi_pdi18r&Uz4Q}OS~h$C+pOu9&tGOum#!|lsG#Kg1prR>yeJ)k#8x!th^((?yt4; zVMJEv`!9^=bpc<7EC@d&X1z8ktwvLQU+_I!Saiwvo^UifHyRao!E&I#l(YPeN&#YE zn{?d4^x*4;0>8=37h&c^xNUs5bsm!0&7HyiTlAAY+qUN0ukmu$v?I$JtitIWx!}6a zBkxVw)9$SfQ&)>vSSt~FXg)ESe>rbkI$?*re0gDN`)X*WNF-Hc)7PW;nV`V9o1%fL z;M&%-p168rY=Z%}7Kf+SWOr~#km|6Tqa9xA1?&~(#{2?tn73Ui41dOUykhSlJJ_Q3 zDi^n6vHn5h1j=GT-MKa>&lFs}U%}AKx zrb{N|Lxz!FDL=S|En=Ll*%xzm=HzO?)2lC1_srbJDtNJ@5)QGK@x-k&G)Gy-usmJ< zmMj|IbI;q%4brMmAp?MC7gwH;!w)2kXb_fL zt_W#5Ndy>22(hl%gb*vaFE8E;WO4Pj*+=GuogCr=0A{${B*7EzwoNu_Dc8~SK9B{C zD!np1f6&rfy6uTyc+D3_w>P^E~x*e&Cb{pZa96@aC?D$NJOC%Ni5C zDoyPok5LOM{n`IPM`^zl{Q$gY_oaXO^F3waVK~LaWAK{4(;fF0x9{b=d2a!8f9o@A zxv)&riW|!xRL+!JqKR2{icpGENF;K9z|f~OLQb2*+V#p(_HoGk1D=dK}|ehI)a) z*9d^79<)l61~z3@+D=D$cfcIBQ^w7%Qy@Vq{d^nVkZ}m#Y83MU*WAA4mYTyrXHn*KdWSh5zh1dy%=dqMl22Y8f1{OTv&t)&z*%yY{kTg z5Zje2I!-o2_=aKM$pN_Fp?|FXdWON>`U2TW8Sk0AY&b26&e97CVW#p%1*rOUr(OVqH&-9PXRmtgq^)u`CU@_QR{uq?*>T69xB3*dOWx988RD?E?4uY(*Gc zLdbJXO$5XwN|BDtZtU1DUoN!eBarCLY)g(XhsI#2?2EL(2MtHATDCJEY`D->m$+Dr zYzncD%tX@t_g0&SriS6)yK6KhtnBgF_hqcbGz2HSHj-s0x_P-5r|zyy-K-o>nl?pI z6_~Jps&+!vvq$Fx**pdV>RINFwH^&lCj0IesyiGwybAGcw(m^uj@-+2>QzJAwh>Ux zci;5~^-%lJiRI){Yx{x8CeO=wc52a&R+I+zzShUCp~tM4UZO0?s(2ajRYd4jl9!p( zY<;Js;YcZq#Bb$#A8MlcfwO5rvwpM*O^kSl1jq^%{*;a3TjrJi)1M6$AVxJcP1M?z zgbsHp4K_O{qL#N4+CxGvvYc@~SvDA)#b5?4(u>FMCGPs&|NAbCz~>jiG^5%)8#uw#ohAkwc@5+$?&T zcLWVn`^5NYTmo(TVzATE=Z=riu>1$KOI*5HvWXlYD1#hNGY>WOZ<$hA+%hH7di^_f zm2gF90B=P~cHjSU#;Sjp<4QoFlx_K6?aGUJ!=K5X=V7v|iQGLqqn;+cU=3W(3yB|O z|72D!#^r#UpHKBhUCWCU*1cB(YHv|_a$J$FH^0$)Omb9hw(wy`VtKbbL(z&3q-_F4 z-Sqj6K{_RF#_ZTr^2$ZGg-4?;5llg6TJo0eHxbc7+4xwqN+maIh|=3)!$DuJ-Pag% zpN5Ko>G~1bp%0;->Y5uS5BbidKnG{0Lq)W&2IY-|JL&36Yr@iuX^~BSqN0cpR!zau z@tRW!Ica_U)3gu}C_rn0v?1TMUwD6YVM8;`vc29(=lCAIZTX_n1N^64W|X|&a~Ht( z1xDICIEU?=5oMm_Oy1AF5Kh*1dC83S5%M=Vx$##uJlmYGyHww6Uc3fK+cx76flN(5 zxQk{hO2vQD?JGfoJNAekP#!=dld?0KR6muW%wyJ46{j}geoM-PWbQQCuH2s-&WWni zdgvzB>D;>_xo@*N^Q^q@v;EhU!#mwoyNrD!_`~;kf`w*u=e?~9E&2}_XB`;gqCF^_ z%I-)^za#is-9aWEuRN1lE%Mp=2M;=Cm|$<101;bzl%f#AGLmDr&(&BLwXvhk)pFm} z#bsVGj)LGAzqL`cD6~Fx1jUsC3sA5I7>2tL$__gd1fJ={xPHMGkTFEb{`yS~l3UTx{f zEr2G<#D>GK7F5!eI%p11-o;PT4Z|f^t}pPhElk($Qe=hZU@f!TtP+~wag_t~EQGs(>)VsvxYlI(4An{7LRn}%)Oc$h+bljdVSFC?NrIQZsoQyHC!X|x!8#VTw zz4qvFa{+mu=i5mI6>`;L)Gv(KeV@GSr4=l|Z}jgZef1INmA`Yd>P?=YF(=hHhia?U z!2awUpK#X7R?UKIHp#}Acl#WWLd zHc@d&_pWr|{KMQu<1PTv53P#9KFUHT?=-@LJ0IdzcL~a&=5f*ygY%ecFqf)q(Tpcl z8V@zA&DD~<#(JjNDeRdQ6jYr*C>71N@I2$PHoKRREFP~7hB$pJ*%nRAgqWl29u{mu z8^99-Pr&m}5IQ6VQ=qP1GbuVnR2;xiH(^$XE>sNgbnRB#k z8#~`g{Myd~-w+d}v4_?wnkdjnUB$4Qy&fJDsr3WZL_V*XOT#udIk;}8Qv-NZg3?<@ zn3KvRp>?6$d5N(V%?ISxv|QbOlrI=KOj=K44423tLIli#w8O>9GkXQzDV$LK6+<|q z=ox8%RB*0ScbA#nW3Blxg?ZjrLl|*MbrVvTI<{(okC@B-t+CJHBfUPY-Hn1B6M4Ze>v@w^kOmaeJxp>?JT_u2R(?csm<@;eyopNFJx zko1Xr|877!dW#V8o*uU5&A-*CH^F|=eEd?%sta?$(sv0={6>OHN2>|{aF>!hLs}wH z3gBxpG&D7ODfgodotMcKd4x@G>p?&&kg_j&yk4g9F}2V+u<)@hjeh+eY^!&fIQU61 z=?r${*_nV98a-DNoyBOLi3>!(XpYRN#hOdQg$v(7Dj@XmIU~*mOjUHeP06r7-We~y zEJ(`3NNC14KlEUhYd=Ea)5&W#?Mv*sRkZ5ZnuGPqz_r4_S>bN+Fpg;cG$>?9 zT4S}}M zVd$W^o5vea+ws()_17MHFv0y=Y0EZGn>bzwQ@7)doL7D11_^sEi9Hb%qCIn9LT7?g zsZPD5)9?MdbD&A&5Fjaf_~4@&p5f~e^&B&2+C%p0g_aYcx_A4zO6(nxCA5k|jJlyz zx{h8bfyTOw%_d(PmhZlP_971~X7(27Z@;gpMpXqW*bc-Z5XCZ_`_3{@UnNS4&hlj$ z5_VSvU$b$9T7xCHZ=i4bhn}*K%~j$kVKf*q60#W;!f&HmuW6=jsP)u2t<2j`?J3KK zUv|+Wyj{_+^P>y=7cU;c<10BA2`8(}V8tA7||@X1g`J-Ov3<*|t@ zN3sBnNRyU%Dt$g+N_y+HXkJ_tWunJ2DW7zDm8yp9FFfMrR{wtIH#2M3(X_wtB57h8 zt?i%w!i#P#ehn#zn#*5HtT60}A{H;z)bDKV%3wYJ*p>e!V=r1Ji}Gdthp*eKapKZ` z+R=fDp#gb8;9R12p{PxyRDfI=rz}$&`Djv_|zbyka;$6#SJ^)L@S$)(y{jqW`g(SYiTSF1ta zn(ts{55=8EbLGB@MXk$>XzJ`ioVG6q2j|NUjpIbrCTlsQ8^!q>>^MNS*9-2~k{OYp zlJ9@+sJ;#jWm#hpix5;Fx+n)74mK5hAttp%%CJeqC_YrIf2)TrWU_GMd$5%3x%&3m z7w)Ljibku09Lv;EW-bv64x2t^ZTWlwHxg7Q?LHB}z z^^r?#;&*6LiWuQ@<45j4N6okS$y;*mX+$iT>Z)TF)c7zROgdkaq$0_itAZ(FDRMch zx^}nV7H>=~kH07NdMnHG}d!K=*qkGS^gWPQ4&y5=g2kwAz(dx66i3d?)En``VdhdFdvx)>F6HLOalsl9$@17*S996m!s{4t8*^jW^1)i8LX0%^^F26Q z$qxMfcug^|pb2X{8mH{;S+v=JbZSk?cxv?ZdvCc^`zkNCpIN-FUfMm4BY7F`+N@u> zvjJyVT(?<_rRh=dV9Jr8ZXLYNF9Pn+QQWTHciwrNz5T>becYd|Pk=Ci;IaJU$N%LE zVNhZqlhpKH({Sh0L#ATTL*0nJ(`QZ4msN)kZ}FgA@@9S--shj?y|)$W-#r}Ba3Y)d z)tG;W>cZr_JX2{2azVD$sIhnc*JtS_;}PGJ=JPE&mxaY{?sV^zha8mb6L)l+_&-s8 z<%2M4StRB+ug7!7;m*t%wd9emw)X&wd{7ZzFib2dBRB@vW2qSNhI%9yDBZw2w~R46 zXQpGB^WvUF;2?ee(8Am4qjo%&`9&|EjgtZ0rR)6!@!>rWPL!__sbTIkUbVZBqiG-7 zYiyMGEdjYINvAXQEp~&QE8VDwIpgxl1AuH3yv`t%m8gexuLxGu{zSDD|GUDxi5WT^ zI)7)D?d?TMraZWiFN2Vq`|K*$3t53+;&SsIYN~PzI2||R*_lKf4WC8Sg~ig?~vOVGriBD`G&65JqjdhwNkVoHpFc|qC^Rs4zUqFG9H85+!r^`!VfUA1CRdH`Y4K9;0 zVmw5!Y+#95=^?27S>m{Twne14nmu;ehW0PqJZyH0mc$o1l(*PMs4rzOxOEAmwsnq%Ry7T zDmnx0FcA&W$D)XcSxBX?RDxHu1pF+xGly2TP>50(6hHIXRAdo&VGybXv!Si-P;V!4 z{22jVn;a}n7N+lJoYpFfBo7d?HKfT5JoRNL^?4+&`Py(Q(+_B@zSm*z%;LL7f%w`Z zc7s6EOf59hV0+xes6!^6QAS+E#n}(;FELSy3oci4fLp@F#BjvI)PFVlJd{qYFh>Hl z9(&?Lbf$yMizPk;TA00-#>e1ED>Zi5Qb?4(szU=E@Q%z@&NSQ{y+6XAM+^>jCv6YJ znh0Uk79JoHW@y~@2P*M4q(zLeJQfn+H?FS;5!%AeZ}iv(!t*6)2Y27w+rG&antMy= zTSM*WB%yQf;A8BkSH!rZ{`js9iU6Mr z&IaM+LvVUL_aVQ_xio)!KyByZmiamN&J^w}2?maD{I$9V_shw?B7o2vuY>1yu%+lX zuclM3Zfeq93tjhk=D_bg@RLaReBZ2UYcFQQW&st$GJO-|G*;5@I{4h(NZ~D~dTq5g zSI}{CYQ}kmX$)F(LQhOW)ASNpfPHpyGOmLGZMy5b-}Du?>s^*y_;^N<4Xi1uP1(PR zA|Gr-nMGtqoT=wPom=(VOb!IU)t9X&wJRGl&3e+S$E^3wx!{BJ7?Jj4_wDSFxnl(m zP@k_B9hpsVn2BcChnnIKH?4)`R!*)C6jOjaSVw!~<(}9wGu#qDg3t_I#IC`C*9eFI zo2Y|#+T8M&h+_up9p_>};cjcLtb_eQag>4h%3W0jIGI8GgTbZ!a?;J_@%wobEk`x6 zh!~>-#vWYw1EuiwrMBux@U2|z?k(Fdbtm6_Eqh5m+-lvkmKU=E(bmZt(56sRVkOZ;J1pLQE8LQ$ojY zj4S?Gg`KNChBACZ0e8Sc%7AKugPETFGML;GRsylDddl2u(OkWF&F^uK# z|5G>SH!NjsGLcC;yUESup`uO8)(a~7HeihL@Ti+dS=V4L5;My$*a@SLZSjSzkvqPt zO6-F76z)*jR6b#fj5`sSxZN-mH2dDfn8-{Kx21KKqs~(UotL&Gsu#akc&`ID@}6T3 zfB1A95vhLvrg?dRbq-BX4X|LphCqkO`=h+xFFfNSVLH8d%(El5uMtD{e)7uR?eeY{ z(4*L)RIb!1zkc&W>p^MuzgtE9&zAkqt+xL2CeFpg8}i|pmWaHo;gG(wE@IoeY(3<9 zT&ql*k3AG^$0v**kK5)(q!d)vG<=#Y2sS`vq?F+kbIrmZGADpN4~zPnm}#q09n#4- zld)*U8+~|lOATL*!qjt$W}iBLikgQtd3t)c+$!^~DRC z*S4Oc(l_|9bwXN2Vlv{~H}mN8yJWkXTK=d2%eEyYqFu(A){C zJnZ6STk<_xfT9?9Zj3^Lx+4*Wp;Gb7kyL}Wen7IJhrMYtJLB5LjafVwHpS*uPGnOU znaJrOpl)o`uyjG{QtGuguf}}%^r%KOb#asL^gvhl*YF>X#Ll<{QNMkeR>og=N$|n< zOa)Y~e{Yj=ZOpH1ocP8yJF`W-zd&jHKyA>b{_|Y?V!C`F&7{txHZeQSgV#OF&mGZ6!*>f*n!2!shHA?d+y_ zAvmj4kxGFfU8~9E8915l(W5eoB6wA>G2uGO;?#O}Eb$<-`RgqM3-6LXn*$wS(IJ;# zczu1e%hQKrjeBC!WZ|g{H+_$$j*k=Tj50ZdoUk&-k%4TJEcGk$0uJ~#tlxN>-j&n*u>&(E*6Vhm-cc zL1L5V<*(|Uv67K){HbLC{5rNqhV*oxqp^ppf9-%xwQZCL)rq=ocD*kpNjWLsGoHt1 z>#?0)xtA|?iz*anb74%%3l9T*;x1w{_Sg05aSoXKwd0Ed_RgG+<}`Cof$mzYk3LNp zm`~}74+<)c7l=Ho4WG#Cd?@CWNccA9hL! zg5IVT|A?8Z-zWK=Tk87#$-x3{S1hv|Mes-<%#rnZpscC1-ys~ag)l#SG7x=iPS z;63~iyKzK*7Om?tkqhOXFq^5py2&zj3l%_I;F-P#p~N(E4UuYjxT2CLt^3WCb+hVM zKZtop(aPL*V*2GwrzG5{*qRa`mv7>UG7EhRwTIXRlw?aZ8DZg5HN565x9$ChYN{F!>JW3%#u~Dqo z$3B}TT-B>|TTiG|d<>HY8YoiIIKe6K5>3!aYA$4{*%YP$+}e+B49SZYIMNbkL1#WR zqG~<3RWdH_J@Wy;7*|mLjk&jsYOCA#g>fiWD6XZ2B1MV@2~a4-y|ie6;u3-dmli2j z+@0d?5Fi97?oy;kLU1V-q($1&J~z)kXP>k8IrrTC-gocuj`vemveueo$BW7MTK8mcZu>v;2k0Lv^buRMfon_#TxKo22B}njBvh=cVBG1QUCVwtwR`QU=3(zmN ztW2OldN96@jmkMk%G{-zH_*z1R&;=Ac_oMWqzr*8tGQTGW#+WF7Z^Uq!pvt7?TYmY z>r$;4A<%n1X32ge$2>x`KM5YE9e&?Z<9x4Ycy|dIypsZaB-(FIpvy+9Al zcP8N-9uU7k+%lT7pUp>lu6~{XJ#II4rnVHBiBF6h-WqAsV?Jz4@1+?o+6%(_y18V6rH)o44A3&I?!NB(ya5tPG-3k|M+s&dNw#G);u@ZE7XoOLSeXL);QnU-PxNmZ-w z6-V_qgyxi7&a1BM(;+bX3%SMXes_v9Rp!+vCocI=h|kH?V7BPUvs2 zcSd4ZRr&B8zZh!mFd5 zNbl>Se37p)B- zex7n9Ny|JV;ap(8j5kG~h zdlNU3&5tKqLiL<12n=s9Yr~O|dLB_vDBg2(F1-nxJB!|H(vFod?!Lo-hMW3_87lP9S5rw ztu(@jHH!&LX%sex%xi|)jaIy+(?;>lU}YhT#RZZco~{j;=%B$C3 z%&9EsiGg*o;R(_;nX#Z2rDy!d?eU(w zyB!Fcusc2Z721)8jRmZw*RroRR+JxUiM`D8j7*NIercm-F$|<-d(s4l_$2FyoYc(x zwC|tD`U;`Z{GP7lGOt3UonExk6ioc9tw444`I7qt55s8n6Pd+$q0*oJ4-npYZ7UZV z!zril#wo}w=7h>t>#e%Fy^oAO$^4W zU`a1HV-JnBA|sf4yqIzd<#fjg<%=m7OmCNhEM(5VixQ7gzJAOGoAKCqai9>!|7v!x z+dTz&zNkw#ebZOdhWlcv#f~Aoh&=>lzxp=Y&J%6B`yK&ctv()b&MMR(pwheaR2kuP zeL^wVP-dI_4uL|%1DvFm8(`6ITBmrAjqLB}<&TW)I=0jz7z zi%K`pFUS>MM(AWSb~I;~60Mv%ewt1AWVQZAb7nW9~xN^J5+W$rqL0 z+|u1{&CX2~e9K@b6(W^BnPa1o{`JfCxrqsCrdXGMV@-c>d|<){5*jTiBRGW(?m5O_ z0xVTlF*~EnN7%?le?d|*L&?mX{7KIiSv_0y*6e0e8H(2@;?d_(uGAL`-b}SSt=`l7 z0-g>7J|ij~?hx=AD3gZX*|)Z0Oz%61jCgKtjly0x%&MwPWli^OjM`IE_Y8F8V>dfn z@2PEOziPVq6daxiuuJx-OAdf6D={x@w#rP`eOM%Mw0Glx0(WQILP&y+Jk<;YZ_`gtv$+k+1p34O)Q+j=6t zQ6G94kIjnnkhxi0j>WtI1tBT&?wsl)G zg-tt(qr7TJ5Q5N;DW1W|s7n&&;v3l1> zpZ4-N6ha-VWg}EU^d=6MyWLS=M@~Tz5s72?HQl{zX@W>aBrOFdzDm8$Nf6O3>9bwx zP%8M^t?&J-N!drf&gAyFHLJrf69`&C|w_X1jqfsp!{pV)`7J}$wTbLulMzJzf$|6o`N z=E}P)nD}C8haG95xt|1k{nj3Py`){9TCpO_;^#@FPArx%n~9b>6IxJA`b@elEV~P6;cBjuvpaL44p`!4|7MMSrrW|95mp zo2VZ~f-80G)0#yw(3t1< zz4(i{q6V-k7tt9^9HOcZ@9Js$NM+xOw)Jics_Ci^^g7Z$a)QMcpNbtns=kS?u2rS!`REL#O5{&m zsIxFO`tf0;0l97bah-?F0LgwWd9D)yJm#gH? z2D^;x+ls($DJgKyA-Hx|i*pF^WRcVJSjDIBs&Bl9U?tvGP++Mt&u6e=BK(o7Den;cop8wK12eGBRIRM$&xPhT<$mcNbTd zwTpihsE%S~%@iX7t=dY*^^myC&;Kc~n{m+O>U*zyI(c8L`nLh!h!%r=+QyM0XGMld zslERS=T~~UDZ&$cu<3lSp5lhm|I$4Y>_YKZn&W5dw|nTP7wcJuUjM^<`4=Gc|HH`t%uHN(Lpb`o|L^%^U8HfN zR*}QgbJrT3Icn`)ZDvuF1}%_)uADPwA+x279u6sJKrWT?myEf51O1Nz1thNRzz#dY zY+o1XUC!54BhCp0yS1O)R9^FUZWf)<_2gMpM|K>dyRKiXo{DCBUN~xt#`VaMyvdmT zjnzxO-RlzFO|dW$21Qg;vh#_Szz{8k(~m|FROrlioTX zuM1$zI^Mv_0CfGWJ`Hh(PdEoTCx!JmbhR{xeg33jHIu%_4U{*^WbmM*TW8gCrk{%B z^tNBlW3{z=7#OR}yHC2nyj8kR>(;kbh}|}em}or!@l1+95#9&fcbk@MI=!H}_%6zA zXXF^6d-gT?A$3Ij>74?d=@ARAK^Z92ccBsqk&dRRLiRh`hUyP(!}*8I2D^zQYANtj zgz-D5UY&a7ztFbSpv>M3FLkqxn7NT@wA;1Y*}GhNQ+V+0$PrR}ASw99WeKlY14*@+ zy_Htyv}V9Ty65{&%8-4yOTWJ)Hl6_FE0Qan>*RQQJTaCbGG5b><57GG5%824YWu~m zFvrb=k1Kze=Z&eNSE7BMK@LO30O@0L83V(W**8EcQsMn!Wt4Ibd7naOSBYo%BB-ew zO!n+V=rQ6Lx3o^mT({WVu`7+s!T*pEaZzJg!hhXks|WvM_Z^%i(l>xTxhCSLP`=V> znP&XTejT7PLT@DW&;{m$`4xm4E@derdDV!uAzS}<^WYx>RB zUB@m54EJ9?8LnykTPP~!iWlvQ2KDV4rh3DX|4dE(kKX;)0$6vwU!7b+o?R`j?M_bg z%%r`l=<_kasNQR}>8%u)bJ=ZdjnadawxPz^wm%Mfza8)f=o8jxeuQ@*x?4LFIZq@( z97}$4r=G<3!al=T4lemlP;^X?RKCeo-#BnbT4Xqc_cM&Y5dFCo6~Ew3d1kzaNN;!E zEO4KCabCFP`wDYG94<@VZ83bGnivU4RTa`Q@+>k!7 zOW$>dV41FZ>^evDq4q+-uxKBuLb_MpS!Bi7nXLIEMEJ1`KU!lBN_+j(k2C|m!bJ28 zc~iJI`4;cX(xuw*!S3cjDldR~f%vIK%v**x`V7OUIYi_5-4z_>>Ci zL~hmJ%%8Dn_f8I3s5iI2pzD2?14kkoMu>TO3F)~IOHH)+bfYpfklQ$b41yAR0p|YJ znQfAF?8G1E*nIc{GB4;V!*9R9g>YFR$j;i+^91e9!K=emPXoui^W}NXv}N{#Cu;o7 zI*uCKg-bHu6kW%zj@I@N%lT%4GF=azt%tvj$fYWDtChgocSnBIpME>(c`d;7hTI)L z-snxm8?Rh&U|{Tfx0XG`7znQBeglXygja??&nf$zOL489Tb66SXk_Q|YK_(1Q5M`e zwe$iRn;Y}BZBIlTGESs|4NVzu@1Gd%_z>tM9}lIB5xUrtO_K(pn~iR*wA0PReU{sZ zNr=Dq&mGN<-yBK?_=7%>4GqK)h>OeFWwmZ_V7p(3*sc5hWq~Krgm0oj&_8H?<>JuU z|8?KCpuJDKR2V#BdK%-+M4Qq9$P>(7eY{&juWok-FQN{tTe()&wA+jN)B zlAmj>&UTh`sWyk((UbHAaK_$C8;+KpRXz%M*Jk*0wCkbgnTOO__+XhfKTPqmtngst z4;;%saKN7w2I?*4F=CwG3HyuVH+?;-_ifx)w!q=lKGZtQcs(xtOuW9g5G>(!UB*P~ zxzVOAByjSSqrG_OE#9o$j-GVrA2?e^d?TwT8;YM|>5xR9(l<60(~PU*KY-fb8#R>x zA988js=SyV9}p79aHJ};{&N0gHX!aG-7y7s*4`G(qNYHYz zjz#{weuuSZcMw7%$m0f$P+Gl&>J}VoM)ixyr$0KyMmXauBeWKT>Rnw=gmQ)_z=%m3 z0`XH^_p=xvUIaEnWK4nyQnD^8CAu(>Wdy|UU=8o`*41F)!0qCc&D(9JtaVD#Wt~-E zzLJ$?yZ#}(HVqo|hC zP+Fwh3${IA#tA^{=rs=L?6{D5%TtIECiv{mwWL{Fc3%YSrhhxak4pRH61+F- zHS%>KQUjCl;U!nXK2dvoA?W>%r=QvmOvCFR=B;LkYWlCc?2|Ktdik}62;%t@H#C;m z<=!(PhbCaLEXLb-b4P(j9aN{`_O9xb6Ppn8&Ufu~BF$5EPu@6pZ?3Rtu9`!Zq_4OPFVmpG_*;`$P=IM!=58JRczy<>3iXTXsfLk3<-S zZFu00d~71N^%M!m2|TK2vg3%(58ddkY}*QY?8_g9X-iT$a~458XAr6dEb&1;)#O_+ zL&nf#6<7nWXtG$9$fjkfuzhQ&)JgTbmYxJD>Qkmhacu>n zB&y0lF0L?R4=!@Rb*6Iq>a2E#Z0}oJc6=;A=&261aIdn6Ul5V9dgiChe_Yt+#5@c4 zj|5$^3V}`KW;agx;*TZDeKyggkyGl83fuRGne|tJetn>%L!(4{8`|!)Uu9oYyf>2m%%aX^y*d1H7@>O5q8F~x@jXHD>zFQA z0Y_Qq`wKUbr`r?XVT2yuEL^KeN_oO7{Z7LbG6_qfzlsKkHTf>d9R<)<2hi2!gHK%& z?SZS`qj)yLZRx!4uov&x^^{etF`{MdSH7*POlmqJKS~%=a-CN}EH#4%?u~x=(Q*>ga&VYpSuTa-z}eo`zH{$z|~%aQEU=_tg7WNM4_$6DgUH`6#>lT?47V z$nH7LHbr2bK+UW^tu9hom;!c~e9k$-yi8jK=G;*HP>VHG_Ls-oQ4uUYNzp&(*uejrj;j>4Bwgks~sKf$pTf7vUiSsb5p*K-Pnvz zrNdSR8^t;0x|h5B#MWJ}hoVx?cv3Tg;Ffs&7d)rG7(zen)mRQi9BxCof=Nd*X_vM3 zSdYiglc$8}IObx7otB!{6n!h@BCg=qg3$=RHA()KeYQh=j{~H9Q$^zl?X21oP{gY~ zd3rdURNN};4*z1V_Ji4x$V0s0(8REQ96D5!(F$eRo7>#QZ$2w-oHh|;uEb$q)4Onv z8!F2#0U)A0%oDG+pZW85I0FtZ27;YW^xKdYr3XDks)N^Nu3UGa$lg1D>w5C1qrzXL&l*48$s6_X0`;khQ$x3} zjAlwgPv>ikG6Xfy=WfpUoj zCXs;!{(e8YlHYWvfYYl%TFLabH|g*_wML!(uhk&v*S zj3q$|c%*a|35VLJTfgrL=M7XQ#we+twKXXYWKU-u{pheM8ZtD%V!m*<+z8To_h zo5|leyM9u2SMw-T+ac4Qi>}WpKbJfBY;a>&ge@ZO#i@1Mduf$1=HV!p@=yFtj~bhD zl(^bv)p-*3#1VFYq%cbUedNIzQX_y58v7{2G90%-h=((VHkd;B@Cy)E@K0fL84I(i3^uyOW7JT5Z)oD7$?W_yzA-8+5+P*oWP)5eQ9|f;_;t+CZ%^zB1 z!QIx@!Ne1j0z=>p_&^8561^ZwvGIp6GR;78_iT3KW7g15hcf8faegX6~E(E!hTVB){N`zNrhJe9hn z;bb0e-4m)LO0Uj5!dbg~f0_4UT;vva-BF?0W?{p{_$B{_3KxkD4 z=TBq5F@}JfK8Di4i(s4lMfGL8tHd6jQNR$wMzsqn9fi%=z6$v7h}0)xxP|>i&|VM( z$sbSLm~C-Crk6nFoF59=G~KU38zLOMp&e2S;@dCu5ua47?_v|rfT0vTgvn6EG!9X# zg{GsnAN|cn+^1v%bTPSNmD-4X{7?cu-W^uC{)$=&X;%Ru6WN5oIJb$c6#g`W{>Kfp zXFb-dX@&KDtL9O9^k+%KpJeKKZK6*LH$H~@1DxknTsS*48olXGC1>}!;LU1)C0p~) zpq$N-%weZQZ{yB{ySndNOG=X#AXul1>)_y7Ux}wn1WJ>JeQO{DYTYj*V6HaCxEOhFpttl-; zPFu#dQ6SDH2BtrEZp(3`49YZ{HghyZqa^cMa!Jo#!?f!q>a#}36W_03Y%d}gDAuFK zDGLj?UsZMvls+|^jp%}AzRjKzsIx!2Wv7Fh$J3U@)nz_EBB&!uC^!oVYzlvWr)|O! zC05zS9hud>yID7Bmgyg}eQ6kLZmJp8_|3#u^wS7O+-^x#`ruv}Z!6-d4LT)zI?u^G zeU__ZNTjY{j&m@! z&Oss_A0%TCYp%=8cUW4K^jJ&WI)@w_YSDdf#<*;O-SajS?z_XR$9))98|&@Ex>Y0n zFK%(tMd-(M;`n&yAq3|fuw`d*gs3oVGKUqhoX5MF1NWEUdP(3@L=X_u7_4;7#xZ(G zv^$lOUDLh*GPMIL)p`7Zlit8E#1>m{G1hMGNZn(?IBR90RH-{atrR*yOA~?`-%zxD zr;p9Iir(UXHFcR^+aziPYo5Lu?lTP2oMutmdL<_+E#NJU`QQr`AUeMi2)$qsCg1Gc z>2;y~9npNj>Fe$04@4ITnj{S_7U-OmcEc#^rOsZ5p#<8db|$Y#x6^k>6V8qCkn{|# zqEfe5d68gs$)ox*|Eg8<=IvyNc#@$<2sAxB$iuA1hais>NjSxzm9P( z-(J`=O@pS#(b0l}f$Xc3?odB6?PsHdygId(%7G5qxxIUSiVG95AGA6O9!bJ*1Zp4Y z+0kP;U)Gh_!(;kzv}i0D??0mm|5uB_DaD7=Up0J`0FQ1KtZU9NO(}hRz3ln3JmHc3 z!wR~uqYm?S^DZ_8*B;_P^l@Ot$Npfmacoj4=-ZUe)BU zwO&qxv77R3Tbrk=j67(B-!d1d6cxG3+kWYNK2zu1Za9A`$o1vBG+__9tJ4|W;@*Bx zQD@mknHqW?F{-#;22RmnMU`Z|Pr4;yv{Heo{W@~U0T5r5`n{(0SqgaHBZTj4*7#m9 z@a!kzfhpFs@z0*1GYwi;m8}JgjRl_4AET_CQiW99+j1@O278V^NjRU&Bry+nN_w>{ z%+>)hmx0~DTs+9x+|S7@w;U$L<|13mhsuFqW60hr!rud6AXd4z=Pn^s)C&PpLE8;J zCZIE0?p{pSnT%~n147NahnlW`L=5Z(w{w$RY>r7x{VFoAdB5ej^NBO2zBaP8H}TxL z6JnphZ4NLP2lmL5o^u??#G@CqzQm1!PATi8tN~J#bnUub`Cru`(DC$axF0z#MHw?6 zOx5(zEMJ}skk=wNEXf8}TE!TSGaFf-+SMksp_k1u+%q{&?N;C8c`=$(gxZuOvTJK= zZ0enmqA`wlAchNVv%Havg!^+P-jq!iie){1CTC~nxzgHZF*bKRhFVdBouOWAcJ{xu z2A%pEQU%4NG-E5#>H2-0HnmTtOQ%j+E~P;#l$ELnzU(bEeNPZa!3ZNBda+;@(UmoR*fXoWWe3DZ@%_*Z%dS z@Fc%Rd@D#!6bRAO>qOD`N}&2DyHw+SRk@%Px2`vfhG|mvyY7XxO1D!0*<{xZ;@y|y z(a~>dbks*mIs)v3{sClPL1+3`j(yfS$4#O!n!j@-X!MrTgLh-4+n4zuRy8BgK2s*4 zH;)MU*2(+GXR`fB>npG~MK!WOveSVI3&_56bH#aoFO1bYV52$v3veK>)#r_`ClikV zWG8_&$j+f}P&|(BSV*L-*JA5_`gFNCk3)4BQ@&ZxwN69jTEOKs+rXVkX;v2LarI8x zI-W;U>Ko_;PvtU;##VW)DY|+J_CCd4_Ad{;UR%$pZqS+%B>GGACcpX&i1j?kS6N`7 zX?1D1${6#4Tg3|7@veHX;`fBf%Y<#|j2Ct7+TxYIJsNDi*!HJH9_ILxUU4K(i4H&B zTsw6y1nT>}dA6$S`&-jZQ(U^Se&(ilsZ3-k!O1rw@!NGrrb>z9mtt>a5T9;8u#&U> z37M%Gc!hb6 z_YQGXT#cl@je};)wquIom-M%<0g`7Exka^ zxOvR(x6dGa6nP?Xd?-0w$n4_ViikV{{pZCDc=`a3U%<}jCCCoyKCtR3^%S_EI=&Ja zJtAvz=g^}YMhDL-2OJ@S2it&k$Npb$J$5c~kS>br5@`nJC=02Jla^gn!a4jd>2|Ji z`kV$Tux_esBJXES@ba6les5?p_U&EmHzNnb4Z9ewu6)~qS<(Be`A3%L+S8}F-6u5$ zmlL&1x@|4%rYmDy(5Y_naqFSmOh9=!E0wEj##dn0X2vH|7CR3F7gKs%K4h8sjI1@ z!%Nzs9l9xOUuPQ+Z+4i_?s!G;ffC71M};QyhPbii{bDx@`Uw|xIGfUagef1YX7jn) zje~T@yHfZzxtWUkbybMt>+y#zODy$}T$n9hneMbr%Z-g}ite6yD6ZI8Lwr-lxPM;+ zxRsY{eSgd{O3Ep;&q9BYVmFnM@Px9+o#@^96GP^Rp}`9?w3(Na z&4kMSJtJWu3YSw{Ke<_PC*oMOVYo^ z8pj7oDX}$Rkb>C*`*WZfV?(3|T8NTXmvJ>d6SH=MvOs{t>8~ZAx#qFXdk*QJ*VNN7 zg;VCac!#bD%K|nqSgwbxf4jl%jMnrdMk!xOKawAERrG0%*(A%3Si(sog-?U7Mt|`^ zV@FJ?+ium(V;qw)ibpFkdn;h>A1HRl-v1#4Mvb08%G0)Pw!Mn7w$o_Z zqGAG@^Hx^|+|AOkoR109c`+qKo};8u_=1W4hd>R9w}^bV^hm*N`)LZDV6^D&rB8$D zVi|X~J=U@R4zK zky7s0Bo<<)4c;{A<2qa`JqbA-LI1@ z<&kUmPKLy!r?^;8D0^X}l2@jXZuyEtFX=b)@M+v-An?vg1X2EUhW)9?VFTR;U1R)WB*pDB#>+QPpC}8-GK?q3$wYl2`?tAVq8%abyT@;Btc% zW>T@}l;Z&M)1$In9P84<0LP{WL2=8m20^7ls_<+_@Qe85qSj?#<-k#GWPW{P-NBM$&+fd9+& zVB37oDS3Lt-qn+@Us=u@#nzW-N83L9&$ z)KMc;X0GC2>>mtG6Wh<8@M+&eC)2my^GuONawLE35zZ=n=YZ&#n%!Q>eZ=}(ADhZC zTBkMj1p9NDZ$_3lpXo5?WT-B}1#c$v{qj66KH^%Y8vPk?LL;z8}?59-g2;w5Vq z1HcXt#EyH%*atsTrZu*v1lW9Cf)n}dj32;0k#YAeznx!>AzHTvAd}amE}PQsHQWRz zQw>w6n;aN!JIJ9Z&)WKOpR<~8LQvL%U-cdZy@x29^_~F7-j4TNesXn7O(x7Dh#u~zcd~n5zHere9@bS#U(u-JyYuj@{ zK)!i%Yv`xv-!&~YGU-!8g*F_wUnDvPYU=d!MR^nWM41mwz4`P9j#Z6$I#H8{F4j6K zk5q-sr*}!BG-;o~2CZTylG3TCeg0o+qRoE~kQkw#hd8lXpo{=IE-83TD#$lZoAV33Kg_L`&a-=eq6)v`1yPWVNYJ zKKBI^H#9tFGk@w~tpp1r)w3~&Qncx1*x^BT{Z`5aeNO{xWZVEz(mF{EAS%f*2WoRh zSj+L&!DmgP_-Boe1ITuA}x89tri#;=s24h9zg)< zyZ`pNlqALN*7f53`{P&%_F+Dz7-XMq^P+2I_XJ!?8S zs&z8CnaeH2;&bzu9$kN&3~>x{o2VhkXzHHr$TSpKanki}>)<{3(PSlY*5j2DqY5X4 z2eB4B^6}MEW#KlzeD{1iMJUE79v*oWfl%f*uU1u*mI0CP3=j?`!w~NFhH*Z}=Ge${ zNVQqp+U5+HdE?B6gE_NX1qMade$9%FHZ`BPJQYRivn7k@VhvP0CoH#DM*S z=G~n=`CYh=o#Ie;e3rN*`{O4pt4kRQ_iwYhFOH78N04`~XG8+q4kwdAL;QO})N;)R zB2ukO5z$;Q$TNO`$`ZUT=#*OJnhGCuyTG-eM=E5m>}ZvY+5>@rd^Mn@j1+&f9_m+| zP&=^KVr+CSuN5I2$@Xup@@N-94z3{&y zN3JT8{~6$IlY}{7S!F&cy?LZDQf@5LHyIkw>F}U9{gU2(UZ6Z_{EM-z_v5X_)R1x{ zM@;*Ib=!PlNXC%Zs?F2`3VdmA3TM(I8*VCMC#czs*Z!jK_}0~@1PcRppcBkTyL@>{ zk&E1$#Jz^uQI+yRAQtmO786N?oD||O`J4+pQ}ee~mG2A=|V)!)FXuc()QN)2*e2XVS?AG-a+Qlk0yf3_~Ni6;ZbYT93(&bztq#*bg+Ux_2C(ero!30&wN5 zxMDfs_^ygxDkY9oqY&vsy~RU!bXrY*vGYyY>M0he{r&7IMiQwLW&iek`}cNm>3u*X zes8T}|hDt@h;`p#P8Pn@)S(k=M; zhKcZL_3k&JSjdF{cD&SLR8U;-ni_WC8_}<;LmU?%`eEI-bYRwma&bWqqqX>ddoBrS zdi&1%_vlrUK^+EDN*8pOC|C5u!DBboWK43=EY_C|>?lhoAP9+kNRPkjc$L{U!lL^q zgdGouM6URs(_a0bd7l5S%=-I9?tf5b{k^&8f6I&bbKxV(d)y{b;x$^H$hj@uoL5h` zAy19rXBt3RK5b=ye);iMX+cJc<#@nzX+Fbgv#`S{C-=z*S?S0N^6UYn2(g7Y^EEwW zPml7^Nl`A}`}B$YinK+zm*a~bb6*pvWmn=YjJq7PPILcNCSS4pB;ps3WP{~%L@H{ap%PP z3bV-FHWr_M*PR*dh%Na-EeXDYjGjj?#L)-O8#I6&|TXlpRlyrDmOe~mcfS}Q9A4rI2+o$6{aA<{camX3Gh7n!B z!NP0rTJs(vHj(5R_iNnbjZiJsPNhwo2pok zJV-L@g@QWZX)Bpx`Kq1~6pw|?&FS}$54gzJ&}u&>4jftR&*j$c!4gZI{+c zn}TgG?m({oxXC@57grRmAm$Gy62M@(cEj0cM_(`zb(1=jqe}qM1DxIWvjY${^V#gX zregYhidocJ) zETfZ$_wGWwiZ{Hp4yD8-0~zb>7ur7V2@moKib|ubXi9TspTyKhz!lKLrlP9)vCRoI zFamPvKy83*iR)=!w*e{pLsgSKY<)Q54MhEoD$AYluhuE<1k_*uB#EzQ+>WN7M%Yrb1n!^SukGX>Hm1Xk;W2xENA=?X&6fpva_bRK@*X`e@{`X}k8CL^56 zRU%KGyvT7aKN@r82$EwDbje+`pV8hBa^=8n??D8%#>op9?paJoA#P9&8?L;Ryh{n9=s6}(Bq=V80QxnR?%$DUL;hV2B zDjm1>YEDX`gue|z$;G(fRrmBod|Xd#z@n5~xLEEuPKZB&M|%B?(%f;WsA(VKExRuw zB++YoxciVHwRadm(%!7Lu^89aL+9wP=s8lOOFP>aNc3e)Z$1y$OXnN1!1DT&cy3^* zH(`%iXw%A?pXjkr`C#WK@mTov5|u;t+7WQLml*EOg14J!(nH;R80gYg-@p&l8OVGM z@o8}T{Nw{yH~qS-h+R!ftDjO#KSIxI%`wOBr$T4A-=~c;vF?sg1%DwjNJ6GfMQii4 z;Ia>wJ+y6pgeS)HqhXG57UcDs+O?hFG>c+%9q4nrZcmQ?eZoPrDke)Ww#LYxN#W?< zsTIz&2gz=tb9oh#c0sC?63J!DvGypE9^7~IVq%Sj<05rFLV;+NJs{S%vGLRneFr^G zv12dtfyBVgTh-azz5_PT=F8URRMH9XRLvu$Z-ft*y@QZEsuedE?Hjss$4s>4&G?Mp zV6dd@6(+__ES`2FKR$e80dHGyGbXnZfT_E)^tfdX3Bj z!s0|0Jf(YQsx{{XG}Q=e4XO{#Hs^z`IqL|aS_>Y<%m3a3XV=viqcth9e`yo%)RV8t zOXmuXc`aKwr`s4-LM2y`w?r{8QjVRO4{mjzl6=A30{>=Sdi-zIl81j2@bG`$0{``Q z|8JxdfWM!GK?i?tsr@J0R#=T4S!lXuE~(LISGHS1Cb=@O!?E>M7pLZ&ap8DNpTQK6 zvGjb=FhbE}JK#7e|>)@%0_S78d!o0qSkqoA+m*hrIBy}PjoA19mlmS)-I}i7Etj0Q0{npq?38;;{kGJ{87`Ki|ZuB}` z_~8h5Mue~8+9NNeLX;|RU`2r=*2ywnY@le+fbnA9Rqir3o|36Tw0Uo94Pg_pnVdsv zy;>>lB2*Zq6Pnzp>9b`#pl~QX?epRX>xv3lQQK0+>}e5s3dV^a+t&swMSxf|r1S?! z8;kadFIb-^ldc+Qda@|41g9y*V|c(`|^H6c}Q$j{*ov~QJFjdNR+y|r~L)BoCi zlF;Y0sqCe}vG~uQY|q$Kb{8AlUuB;Jxw+VO076SgNtQL5ES>b$x|>h!+VWdne-M-G z2omH)eB%++c5L(ty?vhb&I*^#y@dEaz@;zoh2E zDA#HIObHJ&2?_xJ#^jtP*>=6UmAlQbvtdHfRxzde>mC>k-W^ky`y!QxgIGE*H8q9s z{s!H)c7{4qolhT*6fx}B256_yI|YyY#sc{?RlrmE`8hXVI3-@TWmI1f38`pb`5bY%XAIx9@( zuQCXO#31XxRY9{0hwuKf{sYJJvX0*f-W0~-FhW*<8)z$3!oC-nZMJpJyZ9E-dGxWb zmC?OTw_G3X5h>~Y{(MEzBSX)bc)Z)Fe%;C8PKp{*mBi6$gC{ait)}HEx(+hHcp|4V z_H82YEm|9N@*efG;fLMVBeGvYhuOxA>JJmhSqS~cPu33NrL~&yq{KuB*Rj@Ig2sQ~ zL_mHm{Sv*JxqfQEnKtn{aOQ`d8qI;tt?|dMp@Q_%rR|3eSJ@|p-FL5n`sacl@q5x8 z{=hj#D-E_^Vz2ch7Sk`1f71toAMR^#Zd?EUN@e~B&hM#@=YoIWVDG>F0|$;w#25Uf zcUtx`6I9{-#jUnftZ24@1$xg>V zaOg#LMFLz5n{8Nf{ugua9o1C4ChUR;C>^B}5Cs&aDiAt~(wh|NMY=#pAe00IR65do z??@-1Lm+_E(4==r=)Hr|MDgaFnKS2{DQnGq^WD4de;ddjd$F?j`~KeYJU_wxa%Z&q z`PVz3P8)`=xcKd)hL26ZEeOWQ&9b<@s+S4WMTgIvB^AvJhXn)?XD%L08{#wcmfY1f zwIBVH6RnLqX?vs9>oGvF-ZM0e9q_EDnQo91WzcWt*d8i+)9DYvr;63rxE<@93uac-A%WUgWKhp=!E zxKu6Q0a+^;8Sqi7CpbFd`P41`G)M(Q&Sk!hupA#VJa%ZLhvJmK^XZDVWVR6!&snL9 zXHs`xVD>xLpaMUW0gv4i-=(VU5lVA6*LGR{-0d<5P||M^_>6o`TuV)Rvo#s{Y)hhs zBAT8ff>>x3x@z`YatZ-Ct@93G5hk11Th^;@dgx>F;t>TgV{)&gMu5ZTrm(L;#9`M5 zhAfy)<~Svk2pJ=x@yZTccoM&{{W{G8hUt7l-uRX?m)_*iVY|YtFO-6U`IE4+>q~Jp zoM|LNs3*vU{I&_jI4Ei1B_TDobeomASqSTgan3X2~7q zUnY^+oRQ_0BhOMZHsYX6R@1tUD`+aX{%lXwy+ranOfYMctI3f&QLC1RN@jwK^s?H^v#4R{i=2I_gvd+54Kf<{PBZ7jytC^@tv8yvv+Fh-AfzGY{l{hMAHjZ6APZ1O)j5g;~}^QPL5vX)^hrNrHF1gH0tbQ`wy3 zg)E9fYC7RwVE+x1LT2-k85;+8s@$7(Gu1`3l}G#n<3xK%w)ac-pz#vk@LQF?h|<{L3jj^F6}xr&DrLdlidh-SP^YM%r1tm*!=t{jLM@cMZJte1gZ+}rgyZY|$nbyzL zS8kJ2D-WLI!nYFJlr$oVTIBgk$<)8@{~<7#6Ata;^y_%?0j!l*AGP4X89^|b93Iw8 zzJC`3hjfO|zUAOxE%C{=Bxs-vSDW|WyKAtVH$KPAE`PE<8g8CV@ zeT}33{`4C7dXVF%JYLR3QKLMw>KwQkGs63+3+W}wRK~u(mxx4|b^wG9=~*iAl$}!1ruf8x?MjWK_`Fp;}!8dGDUvMq~*Jzkko45K0>y->9^0yOudq}nOg-iMiheR_~TXIH^x_)GQ6=96jiJN`Rom)_5{oxX^Ry+Eo z3DJRq)2RGt+a+0099y~wEGN*fgFq|u1^2sX2Smz4ds&pd1MF9LlkcF|e|ms}Lb&+} z?M!*Z40XaDjA7Kag;gY;{-DTvbYtVQqb!r&0)q&0VTar(jh6j#OteaiZJ7fYVu}3b zSj9HjJgctzba`?hv27|H_QWR^H*71AC1Ar0ctBn9oWbP44K6;>48+}iOKE*g@;1yb zpO-mFKwpbeLVnun_Ikqq-h=Qr%EJEys{s9%4n^XX?7yx!{3CDpFVe`cu+bN$9wzdj z)VM`%(81dCtBGR{m!+}>nRjEhw6e@Q<7pwB7edQcx4kI^I$u+RGfZ;1g5D{dL>FFyU@`o3IxCrp0{mH?PbN*Oq2e`n*a37Xq6NSGTBgqE8)M2G(3o1bDU zA4r}i_Wt_SBcJ6#^hc>)8>n5M0n3OTho26kOlt*?XS8w3riZaXl2oa$!J!+m6--TI(08HHL>@hLi21>)4e@Cc0gA)C6m;7aGub4U5=bO^oCe;tE>Hv{*P~tJc2-~2$E7Dj)Jy@CB|&$&6ktgoUjYM_TQ!i%9>6ddxKuymNZlw9<@sJ_0AyJ6u1(AH1!3(d ziC`_p^qT<7@5xS+crSJAC$$n)zuF3_QNAy=3}eDlYUjhE_&qAqf(t3KWA3vO5i$On z+WKt+TYm$E3?;=kHNbZftqgR=Uv_WO8l`_uP25X{^65R|^J~n&wxh;T0UpSh-gkG0 zAO2J{aCKc9(0Wxb#d2=YqNE;nIf_DaRc`eDysQ2LNe@udD=c$?Sl4~6-Eti?>xBE8 zUJ|+;Tjb;vPBvX%%&pr%4-X2E8w-uXwz(hq{D}#XJffWiVsJh&!EIW#WZ}ngsTzv> zytK37a$HvG-#AicRc#@d`a019AOgA@Y2$|03D0eve|VhQP`kjc`Lv6>-f6`ezA?;kYE|iD&-YmqHROm+n>33j81j9u+yPdufcwj43X#&}L;Lv_c~s1^eI7uIR%xZnRM79YmcDV&K6r7f_=h^d_&tuZ7kOj9 z!*e@{b60P&uoL?#xc(u4^jxO=Az*#9ktp$pU#4_p+tL@}*1{!x&}uAkhf@7s$UX>#QC#)g;zWwX~>x+vv~LgRbx zwcAaB-?3)1gZDa(4!*NQ>HlDi^!N88t@&b<`TXFg4&#w4immy$tf8s$_d{HS+dTX6 zU@b5*s-Q6iCN|!-2?{jFYJ?6mvW|%N(r+eiN zt~t0DUhPcz)(<9nkT0TUdGlD~2-(>86~;e|7PTXs(M2^0IX z^KgE6FpH_~e7QH-jxCbR%co%U%~tDuuTL!{&3+ixSU8zVQZ}-&rZn1cS-+ai&BGF) zm~S<65^i6*`I2wO&68iWC=i;r99|ae(3{x^*adgR={Kfm^7T(!nu}V7?JPLn$~0~e zZ;O!8LLJtjd71Z@5+{AT%0H(_b;Kk^M&iHKr?{gh}zvEc@$*8y6fWu6qY11DQIQ$@YdjYi?-(5(5Ag-uuK|cdpfQ zJM-Y;e%*w)b#fS53!+fEu)-Uf&PO%KTK4KCkj1+c%8ypiV$lEJ@n`?euKh1bwEqnF z`YVZ+Rr((`_;@$f|C#Rf*KjxP@Ww<6tZBxnv6bAy7VuI3R{F!~EJohGQ*`N#)w250 zlyo-S1fQK#RW}C+I{(R$T2gwPs%lrerQpZbBBd&+&)ulD$HCp*d@h+fr$b->T(9dQ ztlPS<(`uW&M^?plAWP+zTa@t_GG|qbvB|FJJn>s)rKH3&o!rfK3jiUB_0yhk9$r5T zN{}jEbTa0iW9a+T~q_WKfaeVjf)?}qgd^|?UBEjin-jo{`NBg_C- z%-l#ajq8X@22g;}NWAR|ojhf&gdul57#QXO_kf?0=f4@7F9rg}RmgK=t82UViiAO` zOD^5~KRRip22zVa%@0+7tx|Ekyp>*~iKz5@!5gyva=RKs-pYy2Jyo4&G+4C&*`U%4 zP2T#sb*4t2syQ^!ANby`NF0t@u}|C4=UGflA@jUnEHZ-wvOS^rB>9d}GzTCj;6Y_- z(D)WwWKw@1Ww2m6%t38U=m0VozVpg>KM=}?-JU)EoGwv?KxA5Y+HSTO0~8cml9vFih5G29FY2mpOrG3T#^bwk;@ z#?_!)qSz*-cl<--W~vQj=L}c#47j@NTNexc>+VXAF^QOv&%`GBQ5(D(Mh$mNTy$Mn$sXT6*Na8Uusn$pc%fX&bknVV#ps=wgjiH;`{vRRoq*#heN3%&3j4W` zNNBq#A({n<-(*Y@k+Ep>fMT0`YLW7zdkQeoQb}^c73eT*)4@0`BKqZ0KF)> z8uJ$}-KbhP7c(E2n7$LZ^R;{NgWBx-^#4@KGZe5Y^KSu*she}E<`2Q5*|p^BAsNNW zyq4^niH`WtQ4+Vwmiqh;!IRRveNP4^$Wu7LeTjSaFjYGarv+$&(pYXGIn;xsn~|i* zhD3}un!j~!@w`6!ECoF~zn`;vhvkBoDy4Ru-$2SkMmhpwd41(ud)1?U_2#+wFqq_+ zH^b)!V@tl(#?`R;y-Tg=e&Km@&5}YF^H<*^&PD_%nGUsm?9*^+A>n(12%KY@gJl6$ zKI<_v_Mjp*M08r00VPqye@k>pu5q3r*#$8)Q;W8gE9hUnUi7tkj_JEB&~$D5*sy36 zeO&#)fp}H>t4FJH{>63~T9jVG-YoG8%aZ;suOVW_HRh5UBki(ZNH0=g5WWv&?UCOG zTr83}MMngq-WAv@ORG&LeyS0C;8igEI_iVPW3v=05rCv6Tkh0xm%H(=QPYMd^KdT7 zpkG=Ig>818G0K~?yo4W|8mli%>2za_+v!e*Fu(XN;mDklUY@zMHzQD_QLVQTw;**K zuyJ-RG7u;h=eWP>dQ#((GcmgsU$$Hh15F!#W@&$UvdTb3ac}D2N%vG)2~g(2+_@T3znUrqgLWZ5oDsm_@{U%a!VCV|T7&!|bO@KWRHlB3zfJ|#l{E*>uOlq{X`$GVm?mc6e zQrc*4Te zccaty3|qi@;QKG&B>qjM77)vEe@x2{%b42bzPWuh7gn(%q>RJ^M0;SzMClugQwtAXmt$qyM(&H}!p9g&VGcvWP(Q z2*Cd01;J;{%hlFuDVOX!Yr!0VbDhNgxv;T1t+=mm>?(?+be%LaoSQgmsQHg%?|L`) z*ghLoQ<8dU^XxV2gJy{a{uEo-oD>h7w|!ooxf1V=aF3uFxEVVx;wJJGTN>L}vZ922 zX3&cXNKN%aeiLeU*)|hAG#Sc7Z@+?@N2kM=?%iWc(9u=IGN&O|F=DYoCMEyg+=zS?@y94_C^7QRW#YgVF z7LET(mvj7~?s^e@@7(6s>V%2rlh=qSqH@OU$oTIS+V?N=>QN`EMLUuUMb_R>;@Y7o z;dtw;IqjU~#Lh_Lfukp%DQB<9jRKUL6}cw(r|d3+vsnnX^@hcvUs>nd{*vi z+Vz4S=N)!0ZD*1sI3obeN0f;B~g((IRC(x^z4zaQm?tEZElz~i*eFIAT(``!v< z^>ImLfeh~I24sjE3{(5lAC?IgrZOfTF8KQnwL5Zqxu@_$;;9|zp!fcA4&8sR_WUo$ zQrc6b)uv9foMy7oNVoaOTVEe|pE`3)G ztT0V!6J3p6cO%N^aehtc7UZBeU-tHg8!^f=6#K5Ab4Xtpo`@})upKle?krOR$@;-b zQaJ?*E~GcaZgV}qH6{!>o_)hcYv!mwmsxL$(j{veUNJR&pcH>YpY{Y&8<#f<@D{S-Y{B`z&PP}29W z9#A)#am2D0Wt<$RYYl8XJRs^ux)wYgp}C$k)ZhfIR`WdIihFTZ%Sd4e81p>iVkzhw zM}CRT|DwQ`bQD9SB!MV1`&{B6t(KZx9>(@uBTL(nIOAFGr5XAWeTE#G8koMzV^unzxb_%(5UmDn={;B1u?zKOpGK-RMn3p`b-ij zaImv8r1XtRz}m}_@*8W42s93sSfSDKHSJ`Dybwb~equvK;@6(n7J_$NCx1;=@*`LGSe1Y|jqIYX{3*>+w_JSp?7@m2i>qeLnq7!ogM z-~>_6$N^?Jeh~z7HrM;src|rGv21&Vl3US3tMTsZk8MvQy02O=76+t&YbJPjo4@0s zj=OPWGanzr;PANl>XP24?nrxV59XBN{`8NMw*cP<;)|RCR-i0QDnR2IM%XpdGl6Sl z0cZa+a^CPe|I{W76T8rbI1dRmai$l5EDWPE{{XASn6q{1FL&_JPQbWjsE zZ5DhmBYCETYnu1OB=<4X*{T03B9*eGkC*RM9LH$PZjJc&+YTIo*T(%rC4NHi!jC*@ zg;5FkjwE9)bdLeRObk>xv7BKf~&!M)*Rmo0FS~ z>9;FI$y7T~pb5`vKYU4U^YsMw$hwK|PD2oy($PyI5+-0$)?&r_Zjtux1G<5`=YChO zsO+ZFy-NxpR?O^!-#@maT&Mj_%Oj-MCFuuC3QMCMRl1lT9o1qLgNe zKp_|%{xl~>{EkB#8oW#+2jD-apsZjcrU4rn{(px(hxKB_Id8jZ$bo=UW@U!{RqoeL-LzPqOw%F)fwt?+(p~K zGwL*DrH4K%@tL46@Y!x&AmrF!15RZeAZnWXy9I zR|yyo%~&<8A3r596|DGaqnJ(F=w!lskOHa?&pW$b=m)mCB})ac`iaN9CXiOssIPE< zK73(+yyR)PU(rZ66OhDD^}{xJgZhqV4^gV_ANcB3?_iz_=>ePbOR+W z1>=NoEOAt8bH$N2@6Q?d!Z)Fm#l3Bi`}YgwdY^Q<8!OiTLSGk zbi!?Bd+!VjXwF9K*ug_IBMk0KwFz%>JGU~fdFn;yRXCYvjx^D*0>As~wWqtlHNpj4@KlL#5mCCiCQ(Xh9ApuYp1OkEF>O5A$boakP`=3f{;q7! zO!dBH{;)sKp8f4(r8_t;Z~F9C1>#@ZA<}fnHqQ~a?Iv({dEBsv2ma0n(#&R}8s&)M z#uPghMxk0DY~HbL$@~Ii=V;s#KS3BacuB4?##Rpl_02h{p9@QujPk-1djg$ z>(44+MaCI^Ou6)j0R3pwJhv<0$fBTWJ^wW8L#3I@yLZhE?qf8+_xRiTzgHa~yGhR< znJT;(E2|Ir@`88sK?CE7%9~7^yT#vjEL^Xq%0NHZn$&d*d|B<N<;bQ7~i~K zbZ|2;TC>EbJcLW|(_xkxN=C%}oLfFyUcH>P`&8sSY3)EOf|7nE0`{jX8fs-{4aYH; zC(RUWF=-Z_!c?MMBC@raRbC_C;}0}z_MhS}V)T}F@c0rGTzzO-@r)2%@C11A?(>^E zo-VPtmuwlpj8dICdnv|=gIdj6$=Q7yK;9VX6Si7uh#vXE7Z1$JTJM$gFC{O6C8Bkj zH}z2`O&$$Pa3$2 zNtOhrd$x=j}tbSMBBi;jWkLN_V3Mp;C--cYq7OYqrRPuBDnk%QBXwE zdySya52yHNVdJSo^RJnEKEobRN$o%B)S_UFb(Z(&>vwZVOFX)@VxC!K)H<9iDLL<% z2#?GLgBqHeVoB-iV~ggxtQx{OsYX+Kf?KzHB4M_4oS*iMqNM{{5ub-pi|BkHZ zzqJzb?_@nnOV~^Dt)|y|7d{m}TClta)LgaTH)Xt$R(Q%tebVf;l*BO8xn0(srWjuA zb)p$+2N^_^OKZFiDE-A1GW(t~O+Fr7E;;^|;nlT%krU11}O* z_066ujn|IfuMY8OE`;df{^cuIX7H^wTCb7629+eXmcROW2toni0d^82TGYY)tDQQ& zX~&#j*dF$ZQA}%-!sU2lGG7L!v*tOplP8zid)#(*!tSbt&h+KGMZ`+v5GSwF5*huLBX%6>s>PHnKl@_OjV>K1gF` z=5bFf;uJeI>v%a`G`l;ycwX>Lx62_$NGBas4TRG`v2pJkSW`gi6VDUP80dr+$lmy{ zk(L^yh=AV=-EU5N>>i63ug`@zRRl7PFRw21EjYYyLwVO;t_1h}7-T($=FoLjE$lS& z$T)mAp5LyN861=laB{-m;5%FTF0xUuHN&_4b2L_n0fr)hbj141%JrhCDaCkh)9+-f7;!a4lEGm4mvcLl7mj2Js-m zUVSF4xU+~&bwE473(Yra=P5Gy3H-PgT9Rp?Il-OT@ZPkl9iAY6$yHLWC%~Tz>Iu>$ zUY?_Hby%6xnpVGjuh5Pc)IWt7H0wqj>4b_49Gu>*a1cP%;B>#(uwu|M*7Qe;bY=#^ zuYpDRt%eQMA5{j~Eq+IICNSW{G$xv~8Yk_dR+ME+t=np()NG0=EF>!D^(ISOjDSG@{9e~HY?3do*T1#>X@}FD*+J9fYeL(f#?IC@X4n6SYm z8f)wmCp@||T)x5XMw8)7X3K8c5*od*R%oXq~vA2g!vlFviNfaRPcXX4v->kYhjGs4j6i z!3XT&z}p5A>ggEV;TtZS>-x^F)R&a_^wY*_bVME`z+`f3VT7nEKX@^c$Z^r8%?izp z;DT%^SKO9+1T8l1r16CPEKIe&KeRj>cIx0wJg#DAhhkw`eDUjXyDlbg?>(Qfldf!> zrdj}t{mR?aSq0z`e{AwhEgs&_H=Ox{W?oo0?cP9HnuDrN2pwBPS^`59Z6h*HM;MYv zI7}(Z9PUW@1X#|d(`!N=(#zDb)M+3hE}2>_1-P|L?iY2}BQwg4XL`H+s*xBlH(1sA zDTry8D%k_MaJ`u*h8&uK`71*mfQubl^MnrzZwN5Wu@YDnXS+0u~ zX)d})@^GYO<|-+USGDwXaB|IfAz?S%hg5m3qsPv}dIgFJFJ0Lz*m?g7M^{;g;}mfd z0Jw4{Uv){{QsLS=Rcxr{}XZ5 z-{!hbZ{g$Zf4Y!K)+nfN?N`-J{Co8Qa|u%dNfdy{NTakzHL=snjrHE`IkvQP#eO)A z*SLFeIh*jT$oK%z^u$zLric5*IssKjnQqDz)N$e3J-74 zqhRTck4_D}4Nrh;3BFG^?aF9ihmiIfTB70>n2L_vC(sRPzRMtMiV+gF6i0{&NW0RAGpX`|{7SyT-^Ug6%uew90b0Mv zUc)2zlLqHKu9gP|PbbQ-b5Z~_quE)BWl^Q5cBFn!+98jxq3tu|eF~enrG+R|C$h-GMf3{R%a&X+~Zj0~BEwp)FGIsWNr8bIID| zwy~~<3^Rja{7Ff!vt1Y1qa(un&)gFP6dI&=c4{ZeovokEt7T?9;tjdYzD31dRyc?4 zU5;YE8a0i{4yBp0n~!jKCRX6K>_#OB0)NZ!k6V6IcUBoKJUAa znT9vS(prA+`Zj#A?2g56jXU<2vg!ZKW_!!sIySrj|3kpL(J&|Hs9?a7c;0`BI7=?v zVeI+!RuuoyXHT|TS}*@{+1}cEZw3Fy7{gJ0vyUI1cYin8=ck?&rLA`K;y;Tqc@h>a z&`>I}{5)mIaq73XJ_VPl6=~>@Bl)@xsv_0YBi$6_g6hhUp#4s_`Q|iI^UMyo;j}O4 z>E>GL6fM?hzbxna|DJhEUYC#6Zq*Jkv{uu4f(=&L7B_xNuw9rkN275ffCCf4nl+#G1LZ*l=U%6c4{fUs_dI= zo=K~|f-1HBJGTWmE$LVR-UFY)kMV$j=(D*N6NO?GUr-jH+~&ABV^EwFPGc-M>qztn z#e`Whgmw>>eOfD?T}s-<0bvJu4P5P^FxWs}#lwV-bo`vwkKHod00Jo~9V=7uh~oq0 z;3_R9>Fj;X8V+~3+DSRjTyw>J6Fei6VL9{5-m{gC|LkF`*|16FS6t)*xdyi7ZZAZxi%ZNZ zGEs)lKWeBNEPngkwJ*zvCKn!Z6nVtk<;nQDme&u>0QU}2Jo^^$&?n33A*fX_wPzDys?DoD`T)>0% z@T+@?2djYJT}cJD7N^-VCRR>*IuSFtSW-h%QoLx{c}(A!#G40=MjBBB`{bpIYUu44 zGjrUJka;_t537;Jsw=upX8o&nW!(0t8U;E$)D5zjAe*|y=Evc5ixcNSIaO9{qKO^p zYb>2aFmQC>bQYgw(!Se-os+- z_2cUwIT85r8S`uW_)OZ0R*S(!*<%7vV(Vh2JT+*p>tham|; z7W6tmxyDaYAAiWjLY^T61NAiO5dA{NNG5C!o|bOkMrTS5;c_V{OKRYMquvpiKzk?3 z$aMPV8VCQ0xRn7XE+uCb1wi#c>-04XMBG0eJhu5YSE0)L__~a`TrZ#mSug=U&icMJ zV!rd7?2S${dDh9v6owRwdk&{5e5ZvD6!GN9EPzH@EvzYCJr>67O-d-whM?_Nc(|YN zYSNi%OuB#P(gHdMrUSPd&7$N|vF!b`#J|fAV`KYLNAJuM-^zuM+RKfB$xBRQ2(RZgM$EMqIw1;#l$tYRn{?S+M?Xm=8r%Q| z-U%o7XYJ!2U2Z<&N+Ri1BnkR9tdTP639BobpO?QXsb(bccSTKh8DQ}>tvDmoiq^WQ z5p$VKaJcbCYv5!>p{}X{O9ikgGja)pC>XkDTErXNKixs}nbeApIN@(&`Ty&;`Tu0D z|KE#CCq7UP$FzojxgP%8Mt_f&k~wxhxhKi)Zhr+2oX)Q&dg2YQ_eN)tVawDs{B^Ro zk>TLFYimkVu^@DiE(LSeOj+>do~5h#PJR7r3SS$qqf|D)#?oVLZPiIddtH)UmO9h| zWOeHb^<{1jv&sIN_>Jvk{>Eel`(^f9|D3^^7}7iBV8jF?<-91qLbzC{wwY0h@XOZT~Kbz%cbeFm*wmtu-(aZm= z|9!Z3Xh8vQ?7jzYO*^k<0oZ{L>^oZyjrl#>Z+tT1C1F-y`Z(#G6f!r|NRGKo9*iTc zyAYEhW=r8hL=n&>>x?hQ!}%wkehrF_MZo&^xD7V^=lCg; zp)Y%p&@bQYK|LL|N5N7;CWw7-ku5g99Wd4aSK+eouIdB@!8kIL4#pTr2ZcFp?b**o z^U$!k8sfp0PPcYmZs$nWfRJU!kh+GNc#W`?Qw-FAmM*9QltErRGQH15#-F5a8{^w& z;lF_YJwG!6Rerku5|GToU)6g+%1Tn9%OyVajtrvWJak1f*?ub!eR0k;qRfu{5^HRS z0P=+N5HA{;0FLWHZWdflt^`K_+Z-2ADUhC7v|xQ9-P`$HA9lyJE)rtF%F3J|LPGT7 ziT^n9??eoZse*8`;llJiku2_Nqosyu=`o;qPm_0mBHo7}YQQ*EKJ{bS*%Fw^yy$Fv zA%Ej_z}kq&N%hZ3v!8)gxW#R&RK)t?M$iww5Bgzxs1Vx+#oYS``w&9l_Z}g@)8^+# z>yJKrW%&&q)E3(fJA7H(xf6O08$I|y#W7WD2NrVX0=w?iwu+U4vv*K~QPB|}Xj;OHgXzy?>MGo)goOh= z+LpwpDlf1rBkjTCF9OQV6mX|4b^8s_DgV}ndejV)O^?9aOFqB;wdgi~o!hMU3BWpM zPs1kCKDO!Ydcl>RG6juNAvoN&Ufe*j9C<18wNF9`A{ZLwyb2di%A`!17c#!sKFrz; z{6pZNZ0M+~!a?mKv*H=;L8>>eeD4^mEyi@CP{5qrKG*qn|DNa9+?zKK36ZNsKlrs* z+75Qkp|o794b(=Kv)1A4B!38AQmL>lXFYqFy`zGdr>2XeRxEQx-NLToWUI4xmV#FbafU2|k!xr?s_1@Ay6^oWWx_!hK$N0s z_E@=C5-_=n3CRhX1KNR9m;!<=Jd=t=B4tS>j@y~MOH!93sXTyhf>-6~9rifkZ;*=y zb|~B?LG;mP&Operi9El}4dBM}-}I!^#E%#C11ufE8pYOdQmmFP1e{Pf;SoU?0%sNT zze^-cm@G&j!b+p}2$He?yzE=ldQ=jAfJ!EHPB|8lYe_^Sw`4XVQ?=b<5vC+s5$D~b z*kQi{=)XZYuh+kTbgX{cacNZ@HAjxY`rS33j_J`y)u$GhS8v1O`kLLIK1v_}v+3%l zQ-C`B>%Qm!Pw|#4#hStmx5^uhpGqE=`EcxV#h%Pv2PF=6vDlIX@=E>K6_f96&;T); z%~0A8=;|g@@OH#*PeCzTff{Z$h2MpZ-E2jfD=`_jI4cUGz}`wvWvXqrCBkpH&`0Rh z&gxN(ml!!P{(dmIVbCd5#`)nz#}Hsbv{*mfS90q1%}B7hG-C{I-Bh$xD90jY zkzBg3fSUBL@Q6W*KK(VATi?1xp*2HGzI)QiXRf&PB>;dm>4{kTtohE?qbn_qheE%T$`D;gh@QFiB2(cN&-)Y5vHktaVQZ|hIcpWe_GXhMsHiaXG zW2zg29NOzcMYfyNobZ}D?75og(4ka@+r0qdd_d0L6ZHGtnK}@*9{%jAZV4ktDmcURE^r}fKQ5J!I|Y9{6T zQ{0eUErt#}X@x32?fzHhTcI7KEslRswd41^PRf3ngbVy!Q08e&t}>nnXW*hGEj*CVqlK8rI{BrBUp{zhJe9$#goOvU z9|PA%%wD@fisEnw7WnSpzQcfN-O>{~qx{et-xcFu*lRv&ZXvC$6=zpjmb*)pU4mUO z!8x`tHBHN|SH9zy!mPtAd8A(^m{k0jr#Wav^dKIjq&Dfz`QEY+i-&;1T#J&=C z?9oqm;hZ&JIKnVW5zr{iIV20ldDZE+^KSNKiMP8ead5cWvK{KVvzmY$!#%A7X^rum z#mRnr*#q1q=-_6iA6Xa@ zzLH^#$CbaV!jjKcxALNvA@=wH-&?rVTK3EA{4c$OR&Mf17dSlouTAv-JdD+F z<9%4>@{43>-M22~@PKDWByIc-rOW9X%f_TyYZlK+yvJgu57K+|;_%*OPGZ!~Dp~Zq zd9x973t=sGK|G?o*B2Y*aB!zeN0~3})gn~R)}x&xR#n@rohR`C;xdN{i&y9baSv%p zKmBcOF0eDRp+26?;ZV_-bDeNkAZ~6!Xd1I^3X?!kEvTvO#0J+@>iSK*WYwnX`P|yVP`Jp zfb^uG=EA+wrTWH+#~*Jh`J%8t9HQQZY_6;HvpUoek0Z=miHK|1V$UUtHzuT(PSB*3 z;f##+cv`DWcO%5m)sDL`qhXz%lHe$3ob{03L(K%doEd*8HYxDokW(0lezs9THQ8V| zvEESI$Y7xY1vq;>M1s_e_Zuk{$YzV`3Dt)MQ6GA~GFra%(BvjAdsQ(vzth4#8`sVY zVYkJr;V4{S!+{VwRvv$tR9}xly3bEmKf6aByf1%Gxv7Ix&);|pRDkow56w8gKytbG z+%?@YSl%%Y=}+h+tnv;b#&MHSkPItqUrJW)ZMabI#$f0Xy3DK#5wAXC8Mxu2JNJ$x z&#yceFT37NUwv5Qbu+nYF5GuvADIlJI`$hHy8Vm1e(P<2FN>X%cE;6ZzFWGgE;rk* z6^f&NT(hxE#haB&aO*<3or5kaBTMCgZ<|r+Ae|SqnYoTRe=6!0rPSD&*nhxrIEF0r z?VijZI!;12sf7nLd_t4njl{F?(rOT*tr16Nr1A^F!i>p>k5M9tH~dzAo3ET`-xKnSHr>r94xUI9D) zTqpi7)ohW_LXxcNJs-=nDT5(;Fs6Whfc=BYsyJsL)ynPkmJdSE$yh-QNlTl* zoC9<4gOs4dLo}&T{lVj#d8!Ai5p}~b16!CDTco%igx6PKRUgI37(b8elP+ZFPy?~4 z44Ot2QIqY~jlW0Beg=aayrjU3+4;Dh-VB|Wo9nPG+a99eE(SF<)Ir`IQDj7BRWFe_ zR(Ty*n3%Va(^SWeIZ%d3XhsWmh;Mk;FlOnNf;5RG!YJ}O`fvO$p4dO zqKM4;_xgsiMfmo2N8tSYXR%3`m&sC7I%lUX<0zXsk>*ZmCbe!=LqokCqBmStdvx|7 z%DS#6l2pkc+kpyEI%`4^qcD1|zRqH2owa8cwIIp{2T9M>twzimiy4t<`L|3K-IOEr};`f-Kei;Ax z5~F#nJXhm$BGL|N>jT0^?V>Yz`Ss9`sttB4b9^RIzN_~FsCgMi;UFz@W&TAFwX#ru zpO{hFFzM5y%nQb1n+asv7G&=yCnXQOJg&9}JO25meEo>Y)-kRwAwwToB6^|TvLEiz z^5t&zj!}A=;=yqVtIHCvwUfu=Tu3H&>&k3h!4T}Z!-9{Y=zQ?x{@Gk)SwS#4_}8=b z^4Yn5+n#n0&2f3A`r3NbxOG#Lhn1ZJVD6raS;x4UpI!G^(+5x=TVrkJdZmS#=?`z9 z-omYAa{-b4m$(?L&_&IAdRheTyLqr z9t~gkL{k_z-#KV)Y-nv6XJu_j`hK{>W3nUy9oZ+xYB@5VpG_xE{U*=Z>|=)wHZO|Z zUw@YBIwBCM*#B<8*$XnbcII^=r-hv#Ve*2A&@ttNeEomQ`_8bYx@}#QDosUtR}he< z^bR5d(wh>x3Ic%;Ae4k6pj4$v?;uDQLJfp29qGL#bfiOQQUt*p{B)Odzq9Y&XP@Vs zANSvU)|z9?F~@l4Ox9XszGGOuXq1=lRY0peiGn$({uD@x#3 zM`4u?ETYN=mNNyMbr-F~d}VlhML%5=wM(PvndDz zPpzLnQN>skpXZ6!_2(vEq9Dzxw-Ms zb*yOJQBdVuN8V~CtM(?go-BX4_f+lo7uW;qbHQ2Zd*BHTAhLy&6lyJ)8=eiepdRSa zcE8@b@&ul~9a~>Il%0tm7)*r#er697y5>wiq>!S%!nFw#al?E69k zZZN6?Sv9^F^GkTi^F3019-S-dMBE; zhfF-Q6mZW9MbFGs@Iqg7P<1WSlHHLtDeZLN23N$#S`D<@>LciR zgg%QBkHLRaSLaw>^*)x$nK7(G#7vqV!b@_R+eTKfl&J~c-wWk(79;i~;&p7IB)#4& zSYk(;woSY%Qg|b&tE(mv8rgY396Vg4E;fv&gOwt0GsW{8A!@D3^x=Xlx+5;9Az?=k zW2+aRb#-znDEL(o43`qxXXa{2UpF?=8l3AJlyVAM2@WW>G_&OvSK=v+izESVnQ(ue zpe48k2X?nt3&W;WEQPF+Wm=e5TPN@5lR5CPw%7|BA&@g+4;B~-!glDU`V&x{etHs78f$`B1oZ~L9Oga zi^v3Z2$xNjrXi(U@Du%(KswoCH02b^G40|^B%02p}mM}sO?z0gwQHQ!ZA%jx+Rw4%TR~^E?WxIrgDbQY?WNWeO!lPFjpQhN z=x*NG(r9~(tFsJ8vme*)k?B@yD|MF6jW(Fe4;=sa+XW1XeOF-(h=n3uHx#h_kvkRLf|y z$eLJH9f*?I-0r4D0k!bGdfnn`H69Edi77?Ps#<-i0>hEa#sgClPoY!RoF}fMN#&X z?6A7p{OqoC-XdwLIl{09kD3VHF>Shn$3$YDZC~Z|7nt;&#=AZhlE^{##R?PdO2!jN zRZMZEHYAVFoT6_FeWlxo#^UV}>+bFP(fV$&h*~MAzCX*1_q`$S*4dbfkBo4XofRYFD8{#w^GgK2t6j!)C*Pe zMZMMrKDZ*K)(xt3;G3-j&SyB#9^HrV@z?m;u-j=BeCX-Key6f&HK!yf;MrswrL$dW zoj}szDc_-cQ)GfzG(A!8jq8%Y)1r`Mwe&E7$Y{a_V~r1qm9QXxs^pJJh$8_NhOie_X8aWU3*omP zr_nw0h7R1@0>bY#xvtXtZEoA*Om`!$u2)PCw!it*QXqSWzB}~N&D;j91EcJPD$rzN z+Lb5BDb&m}HfKf%IS#231H>$&t{UM8R*%?hFJc?VeI{=)!^84~$uRK@dD^Cl9J!f- z(?R;3HFB%K`Y}rq6kreAoZJO+ifnW=f){-_hD^?GX;eEc@qQT=D5#1TS%g<;P^@>T zOQiJ9a$c{z{{v@N@HjU>v)92vyjxm5hV1ngIde^`eq4#wR12efelnW^NFz2~{>sqe z$U&;4r?Qo0+Nn3{`fllx6+hXo8;w*pxRAc`y(o>?-jwWQt+PWQMnFfKTlorc2U%(s zIe#G00t98yj(FdA{V*=-(d{UrS+!J~V{iYGTtx)^9jqU1+MQPh$(xq^K8^7+p;bfnD644T?Hce?!IwNhsI*&2X zn}b@p=`+xw{JRv z*G^T;_p!0zSDXP+fyXzu$g|zbc@tO#?A7fAUM2#&D{Do;@>)rKJb`AN*~&WrhN35$ z68Eqq^L_{_a3p-{5iJ*qR!KP%yilW)lGoy;KH|~_ex+|r4&x&>gxf5mP!O>`?0Soi z(n6h)BActq%)AnH9a+j4SLgBn^`j438 z%xNtU)P5S!UppO4uKB>(jlcb4U&)w&Zx|4`aQO{)(a`o?VV)Js8Iz~>`BX-;Z=>7u z81Mm1^_5}no|ZC|u?I+JYUCpWP93_#Qi4Kl5O zix%q|8g^@J)j8z!^w{Li6G?m+nNKXOnQ+LAs;e`cJ7T0{-i?@|W7HKEz7hfMLDFl+kQBqC0Gl|{Qkf{bFIV=)tP4@B{X!YvDf!BRNR zRYSt;e~*jqzdN%iiu+^O&_RKkCrFPfbWr&{KlJkoX@|fZu8n>V4b#+4#cq(eQ-Oj` z(?iB2&16^nrRjrJzpQD@Q6SDHw$Rc&J@KM0$2_V0RBE`#5Sc6qu%(e0TS^}H!BtPH zCQpuN(u%5JPBl({H3QSm%dx%TtyDz`Tq@FxEGLBuJlXYSWIZ;J8}B>?5l!H1&7sw; z3|9JUwEe5biIy*#8N1z3%g5{j>As?Rc#K9Puwpxc2`kVGi|l7T&caqbLktM!+X-Z& zt(pNlL<~x=W3!V5&I4veTCWLVzqWEX)?>&Vn1||GU?7MdSlS8UX8Df%R;@IJ@AXO# z|FOd1tWXi(il}g08VBiHav64_M~8iJM44A#RD*6azGMdY-)YZI%rj8oSe8miz59lF zXe)Mt49bo?)c)kk*Q(Pc(~>rp8ats%WMfxBdoz%O?2FE4MgyTLaq|VDY$6d|(ZP@^ zY$j#s^^(y@N$E?MUj;VQfr^ZifrfQ)`pV2b7)N07%h&{a*3{~`*r;+VD{-lDqFY69 zd+>qMQ&ju#4RAoo8{Ah{?>514bbXWc<7{gDp?da=bRxaOMJ9|UT?J1|0w9E6k%j9BXJ zpW-+AJ)luMPct|*4&h1|2Gt#lR=%fG+I(iZV>W3L#fM=_s7&;C0Ogy;c4<)@@eVXM ze@mN45Uu|r3;}boS`8Jua+qz~kQBil?<8wXV*FZbHZzkLo`cwMVWiVRI7-hN8Ip3r zkNxi2eF^RAe)FCPby%NWYx9;MSwDWtxHqMRhn)|PF`PVGeAPGq>OSux%Nt1V^vouf zRF!4f@Es%hHo$W;-=9fzmPRakGj`*xd*yL;-TN2Cf0rJFImb8rUGF#PHDTXDL(V#~ z2HrNJn8@zg4SGK<)5k#THkNSmt^h%dsl%Ree5z_FzhCJp^n?Ls<}+9n=c=VWe|@|< zIiVQn8wnmYURE;{jQeI{I(8=xxZmN2tKde!_5;T@?IGovLIGgEH#MLEMkh_Gv%MZ( zxS(NyKJzv|xy*XJZ77H4bI{@Qstzblw}Ca|V(JXu(ZBIK%iIvwA&9@f0*Mxw|E_x4 z+;!Ez`+UUpQ z;@-@Qo5c`_y~jdN!&YX1aU_Ax^?!@dtQ_3)0o4jA@M=kB5wgs2%ilyVV7p`FLW|})re6&N1@xtL?Nt#F3wz;-8=;j&G z+-?IY1KZ@X zY@(I(pRNORzNBrte$Eq~7QlWB%jsM2uc-^>Guso~^d@AfMty!7DkNEmXQjIih zMlrQ?G*{GKFY1Z|=BDV7!B>4@5%{rw=c~Dv;5TfRfkZBkw&@rwYTC<1(jR%>;0(k* zv8+}i1A&;^)nR2lJuz`gLE?{xZSp57h(uJj=yDpmU76*U#R_3HGj6y$U}F*yDdi~z zsDc!wWx)&U8k;!rH4+5S!6McJa72ls6^Wlw z7eTbPGP~Z?5e?Q)D+$wxb`|YpeeZ)o zr9~$4W^G^+SCL15RTappl3Hr4g_Zmn^pyW)Q68L(JL7KK;1FigeubbdzmpLRDhq5M zV}#q^3S(5YUq|irKMBWlp|c*M_0dG-6^ZxVp?3ZG!Z>{Qj5esp02IbTFlSe{(;#Ji z$*{-@>0Am?fBKsvF76f60!a!5vOHSvS>$oX))>^KFQu^c0M~wV)cVwa zqxAXb_9`oz#sRoiW&Nnb*6sT8)j{ljDdaIJwLh>jBXohiV2)6q&{H(8AWBHNu z@FMUk_XD@i`{l@hq>8O_b6~|WZ^iwF~7ZyGgE#o^%qjr}bPlGk|_3LrB{ey}Ld z`0Uj5l<`-uW%be(&_--_Zp`RH7s_p^Ar1m)uz^{VvawT#Yn|t@np18_A4q|x6vQvh zg7t_+J4>Yshl7a2TJok|@~!F`Ww(k#-?@cHOBM#jKq3%Jiww%de=Sy8jmU5UlSZfX zM@H6iT=rj3e6aR61Z9$izms_SUj0*C?|+vU@b5|dE41-Zf`TSE0$)6NR+9jm$FI>{ zM}3b?xfF&h#pG^u_9EX5H+9&SiWM43+kqJ5SoQtbj$g)5KYY?RY$L*|Wkj5&@a-+i zi{m{L()#xIR%$`+>bqu#4ZL*{1shz>W2S7+-}m?kNNHqk&3=2g%v$>V>2t@KPwGhT z!|kYVa+RPszp1>8F;iChx8FPVsXaBap6{HBIagj}sgGk*W?m=PlntWO9a7j(^|?VD-s8 zcb?jkHhj!toHVWKaNw}EY_xRDn>5o?rYCyDOgHA9CQ8I~4D0qn zw`Y9pxW^#k4X$JQ-B6~;%NiXav;X4ZUpn5&5wKdRTn`^v!CU8a`xJm zFWfnFukzZX=Q|ryjA~WDB&d=;ADq0c5cM+ldR}LK7jFi(MDHxwh*tj%W+nZR$MJXQ z4i1}*uawqCRD39UVVFeJ9NXgun@aNO6g!14=l*UK>5M5wYt?RhTc1~i4sD1GnkhHvjr z23);5bH7LX)XdoarLnZd<^%hqm(uxm{qJ7G3l{?eWHYjDc2Fujh7azP2!pY&n?7&w zfKFwPmVGu%#!q&t%3tyhZ{tpD5i@h*HZHdM>BncH)GQgpdsKRncX8kB0-jFkn<)1# z!%rUTRyMP)PPKG3`pOKNCYrWtD|xk9w7#6N?Vr+@#&*f)En2t}vrBnB=s_v%;7pF0 z?X1J-nRLZBzmnXLUaUkj88v&2YbKMyi`eaKF>ud4nca53$TPz-RM-3Ul!kUiq)KV2 zuVE@lc{j6_Ooa^@A75TNt&TITt8ss!>Zuh|DqVlr;_2vut`WF^FX8Z&T8O4Q(|p}L zKxTxBBO!hDJVg&LmyiIJ)9Cerlv+Fv^y*-kl-p){PM%3_A9_Li&m);P^>pnAj!%>O zFe`|!e3?8lbCK<{_~TrguOElA8$E}F(tK?w?`??2fXC@@bT=4y(y3|<%4^D!@;tv{~*YOHeTC_t0dPEA^w3=H zB3-|{U@!v$1whSxYj+<0-55~+5V$29dsrn4N%{Jh2KMcDtyZ>I(Zvu_zZ=-G?1$H$ zg8Z958=R!V-p8*_9qg`ZYm7)xHh_Ha16X&*by4cQoEvD0|33YYvjp(`=k(>X&8T`zqs`;^;Vy`D%gqeqB-%;CV%39{C;n$CkO@BJ(BL2TzhV>m+ z3jakIe>vL7<#+hB;D71t#dCH4H(37SX{;N6&-_>8Kg|3Ozy6oq`7bEVz!J|~#PE-? z;Hmt?=K{YVD0TX4YND}+-98r>)X4TKyI2vwFpTCqzkuuS+dq+M^VAOc3)z3%z5wxW zInCi;w|{!PXt%A2h=5X?eTRB7P?OX*Nk~Ng6VRipg~H4d-Rv)*q-a|9>lg~ z!m_4m+nc*z%2?+S(T^GTkd%Ll)>V>voR-R;;rId1 z61iK7vFFcL>Utea)HhJ;Fg0%R0|)zVHec%Dj?IzCtWT!TNUeyM{Fr`WwS`zH_KZPn zd^5Q#l==3ct0!4SGUkOGArtqen+ZeXm3etO6b)07%Uu86>DaYAvm=wp%&#{}n&mUwfX zE3}k9lczx$=F4Z94ToeVd4ApEovpbm2arDCzRRbML0&zE2FGdd3?hhlP?M^@JA2|1$B9D3l21LU8p0Wv9#PeEJc=y<} zR;H?UM!j%J`7kv@QmLQvh|NOlcmNx#xuLtt-V@kSk(9zi4vNZ?{W2~yASiT< zVwTY1RtTS?<4y|QLUc#-HTF0*IjDHC^(LM6T)35p@=Qd;ZUA>Dy} z>(dSpcd!>eywBX;`3uC$rq8xxeu*tKrlLmJWv8Z-1AgA!>|3iU-FrLYg>Ov@S*Z#r4#?TIk8n(uFdI z%2dIQGpTzE@Mte=bp%t%w5av=`G7%Ol$_DBbX zvT9YWi1TF(-t}9U)*m=Oa4x?Cg$el5T)FDQqd-0-T9%A1-tHm*?vc}LA_YC>3u z7);HCE2`o&WXj8=`(1%OBXCCJdCF_1+%4ADIcFLTD3=1e@*_TieK> z7QrIaG(L_cLHHFpE-`$-G&y;tj9@vC)sQ_ln;n$5Y$+^7K61@!539qf_y^9F22{Ul z3GO$j!$|U0fg+c!XOp=0lM~aRlb=^|)v!6On!P7j_W(aW!GD@P;gf51rh*;1_UhNo z*?cjyesK1GSAW*xiLWG`NNWWbGO~P^F}Q^zE4U-fwx(w2S-oqahv-?a4SSPaM<}Cl z7%`$l6F|rsU>vA&Ys`L{(zD}Dmb0-oDw5-JHldtaDVz{sm3M}nT!&f-O0rf&c~#?Z zq#-uX1e*-q{YFx1zEgjN0&q{75BDuweU)d?w8NzYh1%)R`RaW)vuj_Lq(Mr#-F^PiE68M`F2iJD=_J%XDw18jOcWmfOhCpYAf#?=)7{2ob zj;#-Pleco!O0kUW{pwPO;KR}MB;rjrDm-*|_h~_#u}I4Y=~C>X*If>)e)*U&aId}U z0Q!8k40s;v2g6#Lg58zDha(ZyH6wOg7`V_S4v$wSy5Zf3r3I72lkATBQF8+Qp~H@Q z-=B7Mof9MP!feU)V7VhczCjK z8{O(+5gQLB%yi(RR8B>~pf6dik$xYqpbK4w8CMJox!x?YvLersetzM-Ehf{8 zK-mlx5-_DEz&4Y&@(UQ|MUW~H_LH;x^Lz^?007Of?d2hyby24MEDAk~5T_+!`L>}= zpW*TW$B+xr-&j>$#a8j!UZ{T4x|;P8e0%;|(p0(}S?q!?ko)ZS0vP_w#)Ejm?OXg8 z*}vjkQ8({@qx-cdz0=`r<bPkPJK&PHA-SsGyR{)MObSP4sr%%I(dp|fHD9+AV2Hw1-_ilstJ5B^9x0TjU!M2I zaKrPNq4E#J9r7b`u4}XRwrwQIGfs;&zXf@!_Pya@BGf(`&wbfapS3C(gsGQWX4>MB zWG(!kP#yPILk8Y(pZ$p;51RkRZ0o;HvYU(h411vN$m;$2{cRgh0W(34w{yOeVMX$| zOiZ?ro!A(B26(&W>&S}9D{w|}0UHeKw^X^Uca0(Tj&C>()#LB)rNF#;gDnblmAaER zSMErC1WS`I=-evf67{DX7mAv42 zN!s*6P>V%KI0{lM2`;1ni3&aHs;_xy2$6dDDlEWIG5y6Yg0jepYI@XI7%mspN5KJs zrY%b%dyR^go%C^;`nn#n#ENGk*_yLD`sO8qW#q*g%zILH)3*=0O;=hvUdgt^B4IZv z*~rO4y1`T9)$<6?wUlx2J)%3Qme)hP%N(B8gu3wdXTV7AyfS9^VBG7`u9EMN+aV-| zpSGNNZQV|P_(ijslXj>2@m6H2} zb%QXINSG*usT#D{q77E6X{SxE%+nq_VM*WRhO(1iw3iMBIx!PD77aK`bJ=cdt&;gGJy*O^4DX}WI_$Z;?~qXWP5WRz2AWUw&c?rVT!fcf># zwoP8iJIo{|+`~=2#90G0K$%-}R<+5Csb$qKx~8x>sBUqGXtY*=?Y5^7wToR~mTqC2 zfkwK3z0-Hv3Dgm&y-p#wg@okRJ1!{!&PgsFu&=mFFWsP6j6){g$Ywt${qnP+wwyZ4 zlg^r2zMb#9Rdy}5$eP}8ka0A@wdLTQcTbd2K!NseUlMCOWS90!Mv#2K`%M#rc#2{C zn`kM;XMS4O^sHM-)5l+J$}F{cPvfoH*)6|cmXBYQ6@xlsE2j>cSe6pZ04?Yq!W}s( z+L~iqi$Gv%YNe^oUbg%89+9sYEL@{IGiaj>sEh@J-b1kY=0Z+y;XGPIX~Gpl;KI(; zLHiDz9xay8#dhB^Muw5pCd&6;K79|Jq3#Vf+R&kq^siCV1hmtynN}7$f)%->y)W0E zuU4!P%qi~V+Vr@U9e2~v^Q8`VuLMb@s&@zl0PkQ-#IM<`MiaDm^Q5*y;mziFyBIJ9C43${HaQ9! zeqx`TB3$^L)gCo&8CX_ZC>Wr`{GZ_QuusjJb!lF2evTJCj2%~h^? z`>ch-8?Kx*C4OCZjq}Cp{ijvhHd*&V#@03OJ{Qx4coIo}IH-vZna~(XF>C%U;BwAR z7o75GGxn1C;?YvCIGfMPz_8&%%M)}a$E#=zVuLFCP6(iv=lRHUg>E=gcC#M&5O73%34ScR%-4Bngk`UT)I!zWIY3mCplypy-EPr%V zJdENihl=D&L1UzJx?Q1Pj0W-p2sy#8(iUj5b|^)0k4vC!dWs zZHppfrzYEr$q}HbacaPAr^T{bH~oA>t^48&r?$jGIDxrn(hen+mza7vHSD^4p0%LJ z7U+ndj&b=F(*sB@1!kZ%?r53-=J3UiE)jOW3n5X63q|b$Y?I$<26LI>vSn%IJ3BMl zVxyMqCCg(~UD6R-1aS^Dhsf-?MR>YC;%uYSf~Ig6=QgixAKY4lU6u%wkl26H|DEzf zrTy%}5xF#@T9g<4(EPV$KLNbRE=M%dB0|Ak>h^flX>;R4Z zd8h7yVg%-ht+LI=nX)yLwHG=hVqILjK#Smc!>FmQ=8oWs8Jhfemx(LWZw|4)M)@?B zJzgQ$t=1S`KezF-E(;>}*2EbfH!-!*8{W*YqoUBI9;ny!a4B+B#yf zctfKARERoOC%1gg*BRHaoCqDOy(T{?1}RoC6dNh$cZumfXDz^%%1~V&&J=?IXu_L% zJhvvGdzY>PW|jnA_cXl+BgpQO`SMb4}w;uaxsL6c;o_fJ+uqwyjcG=WGh0c0!$g5FKuFTredI z=*1C1kWKKk`{w6d!cCT$XV{~if#r}28U2)@L3roJ(znFDAF19d^i~Wl*#tezw!meEGU-C;d@QW?% zpAx9`p&)h4)3ErKtM~(F?~~xDxFKsRa-8^vAxoPP*TUM9Z*l2~4>MFL@l+`@?*DTQ zEz3*F>oa)X#pk0pOO@9TuD5%hcWb|_6?oXwC#GmDIPOgrns zTypyK+=IV*@`QO1!WQ&>0zTdU$`#BB!URf){=hNB)}!hOD&1I)-A98w<}@^ z#Xilm=^m8l)MvN@=^vmCE3Nw%f>X!;KydtD7WCHYa}aoT(6I4kCpUD)yupXW`}L~c zvGLcd4}9N9&N?^t|BXdYFD#;Z|J&T6f7jgq@;v{M;GcW8?!W5UUxI(?*^NI!@()M+ zUl8p4*1OCzyMtV14v_l^Pp;JB>f*MeZyL+Iu!u1Gf%6NwSbWMW{DNdT>NJh^`|>{3#!rBh|3t6+!(Vr?gX~IUZ*Kp*`Ti$* zDRst9i=(l?HB&amxY4~kOzr{n&-)B`5qJC?9-pS-NR~5Y#{3t)0iS+?>n94eb)=p; zFSz$EV;9Cn6xuw0u7%t`1h4)F!Tz6uzqDc(+E1BF~{zkf4c|GAg7j^UWGI3 zxrg+FIPJo`G2v9*U5vMarg-KyiwW-^i1BciO#sqivbXVBDq(3qBipxsu`&Vg{uWH9 z*6u$eYqu?Z5g@m}1=Ifzf((^n#m+dH5)X3V;yw^h9}@@Kl}pOtc?SX0i(e_sOI05d zzz>|upCaXzwo);K{K6g7`_$DQ<04HApWBQ}mKkO517?4%vSRGsLf9#`xyTYgGxo{< O(+`}dt2%@~CjSo#`f=F+ literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch19/19-1.jpg b/docs/vol1/image/ch19/19-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ef7182d3391bfc0a8cedb103dbd8d3ebab6b1d0 GIT binary patch literal 51167 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 yAin(3G$Eyycew literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch19/19-2.jpg b/docs/vol1/image/ch19/19-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1d080f771a53eb777c7753d692cb486e3705dee GIT binary patch literal 111643 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

>_ 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 F|Jl`n8d3lN literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch09/09-1.jpg b/docs/vol1/image/ch09/09-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47c1526b6b0cd056a6b0aa1273615e3a3c4dd5ab GIT binary patch literal 25433 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 literal 0 HcmV?d00001 diff --git a/docs/vol1/image/ch09/09-2.jpg b/docs/vol1/image/ch09/09-2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1b35124b756ccfd448453a7d28ddd04175b3b706 GIT binary patch literal 34367 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