APLNEWS2007年4月号

 

1.              APL2におけるUNICODE化の進捗状況(Personal observation of the progress of UNICODE project of IBM APL2 products.

 

日本国内においてはUNICODEに対してSHIFT JISが一般的に用いられていますが、中国語はUNICODEで処理されているなど、グローバライゼーションの流れの中で避けることのできない動きであるとともに、APL においてはAPL文字がSHIFT JISの日本語の漢字とコードが重複していて、自然な形でAPL関数の中に日本語のテキストやコメントを表示し、閲覧することが困難です。IBM開発部門によるAPL2UNICODE化は現在着実に進行していて、すでにオブジェクト・エディターではAPL関数中に日本語を入出力し、表示する機能は完成しています。これはおそらく四月頃リリースされると思います。(In Japan, the use of Shift JIS code is predominant, while in China, it looks that Unicode is the standard for the same characters of the Chinese origin. Not only it is the globalization trend, but with APL2, APL characters use the same code points as used by some Kanji characters. This makes it difficult and unnatural to use the mother language within the APL functions. It looks that the further introduction of the use of Unicode in APL system is in progress and I understand that the APL object editor already handles Japanese in APL functions, and it may be released this spring.).   .

 

セッションマネジャー上での日本語の入出力は少し先になりそうですが、まだマニュアルの日本語化とか要求事項は数多くあります。UNICODE化が段階的に実施されすべてUNICODE一本に統一される方向に進んでいます。したがって、中間時点においては旧来の仕組みとの整合性をどのように保つかなどの問題に関しては私どもがそのギャップを埋めていく方針です。すでにファイルから読み込むデータなどもAPL内ではUNICODEに変換したほうが、オブジェクト・エディターなどで処理するにしても便利だと思われます。MicrosoftEXCELXLSファイルはUNICODEです。APLでは外部関数“KTC”Kanji to Character)と“CTK”Character to Kanji)が用意されていますが、それでは不十分な場合があります。気を付けてウオッチし、ご報告いたします。(The support of Japanese in the APL session manager may be later than that. However there are a number of local requirements exist, such as Japanese translation of manuals. While the move toward total switch to Unicode is progressing in steps, we are determined to render local support to those who may have problems in maintaining compatibility between the old and the new systems during the transition period. Data read in from the files may be better converted to Unicode now, because it is more convenient when it comes to use the IBM provided editors. XLS files of the Microsoft Excel record data in Unicode already. APL system provides “KTC”(Kanji to Characters) and “CTK”(Characters to Kanji) to convert between Unicode and Shift JIS. We will closely watch it and report on it.)  

 

 

2.APLにおけるバーコードの利用について−続き(Utilization of BARCODES in APL applications – follow on.)

 

先月号の記事に続き、APLによるバーコードの利用について、その後の研究も踏まえてご報告いたします。その後次の2つの事柄に関して進展がありました。(Following the article on the same subject last month, we will make a report on the new development, especially on the following two items.)

 

  1: QRコード作成プログラムの完成

          (Completion of QR code creation program)

  2: Willcom W−ZERO3[es]によるシステムの組み立て

          (Development of the model system using Willcom W-ZERO3[es] by Sharp)

 

2−1.QRコード作成プログラム(QR code creation program)

 

QRコードは小さい面積にかなりの情報量を蓄え、多少の汚れや、欠落などに対しても、高度な数学的エラー検証機能を持ち、正確な読み取りを可能にする、安価で、実用性の高い、優れた仕組みです。QRコード作成プログラムは数学的処理が必要な点で非常にAPLに向いています。実際に作られたプログラムはA4用紙1ページに満たない小さなものですが、JISの仕様に対応していて、これまで携帯電話に搭載されたQRコードリーダーでの読み取りテストはすべて合格しています。(QR code - Quick Response code invented by Denso – uses very small space to record a considerable amount of information, and by dint of highly mathematical error correction information, it makes it possible to allow rather precise records even if the code is partially smeared or destroyed. This is really a very inexpensive and useful system. APL is very much fitted to programming QR code creation, because it requires highly mathematical processing. Our program is about a page of A4 size paper, but it implements the JIS specification and has passed all the read tests by the mobile phones with QR code readers.)

 

 QRコード作成プログラムは携帯電話にも搭載され、インターネットでも無料でダウンロードして使用することができますが、自由な形で、大量のコードをバッチ処理的に印刷出力できる仕組みは安価に利用できるものではありません。APLではこれを自前で短期間に作ることができました。残念ながら今の時点ではその内容は開示いたしません。QRコードの仕様の短期間での解明とプログラムの作成は息子の三枝由儀の手になるものです。文末にそのレポートを添付します(日本語のみ)。(QR code creation program is usually included in the mobile phone sets and also down loadable free from internet sites. But it requires very expensive system to process the large volume print-outs in desired formats in batch-like processing. Our program has been written in a very short period using APL by my son Yoshinori based on injections and repeated tests. His report is attached at the end-in Japanese only now)

 

2−2.実用化モデル(Production model system)

 

 実験システムでは機種の選定は、次のような観点からシャープ製の上記機種に決めました。(We have used the following three specifications in choosing the above mentioned test terminal.)

 

  1: QRコードリーダーが内蔵されていること

          (It has on board QR code reader.)

  2: 無線LANが使用できること

          (It is capable of using wireless LAN.)

  3: 安価に入手でき、月次の費用がかからないこと

        (It is reasonably in price and has no monthly charge.)

 

これには無線LANが内蔵されていませんが、オプションのIBS Japan社製ミニSDカードによる無線LANアダプターが利用できます。本体は携帯電話の契約なしに購入することができ、Windows Mobile 5.0が搭載されていますから、PDAとしての機能はすべて利用できます。(The test terminal is not equipped with the on-board wireless LAN adaptor, but it has an optional mini SD card with the same function. The terminal itself is a PHS cell phone, but can be purchased without SIM card and has no obligation to pay monthly charge. It works as a Windows Mobile 5.0 PDA. )

 

市場には同様な機種がほかにもありますが、E−Mobileのシャープ製EM・ONEはQRコード・リーダーと無線LANがともに内蔵された、Windows Mobile搭載の携帯電話ですが、携帯電話の契約なしに購入できませんので、あきらめました。また外国製の機種にはQRコード・リーダーが内蔵されていませんので、外付けにするとリーダーだけでもかなり高価になります。(There are other similar products in the market, but E-Mobile EMONE by Sharp, for example has an inbedded QR code reader and a wireless LAN, but they don’t sell it without phone contract with the obligation to keep paying a fixed amount every month, which will amount to a huge sum. PDA’s or mobile phones by manufacturer abroad, do not have QR code reader, and it you purchase an attachable QR code reader, it will be many times more expensive as compared to the main equipment itself.)   ..

 

W−ZERO3[es]を入手して、判明したことは、カメラを起動し、バーコードを読み、ブラウザーを起動し、サーバーとの通信を開始するのに、ボタンを3回押すだけですむことでした。慣れればすべて片手で操作できると思います。サーバーとのやり取りはほとんどのアップリケーションでは添付のスタイラスペンか、普通のボールペンで、画面をポイントしなければならない場面も発生しますが、高価な専用機に近い効率のよい操作性を実現できると思います。(After we procured the equipment, we found that it requires only 3 depressions of the keys on the hand set to get the camera ready, to read QR code, to start the browser and begin communication with the WEB server.. If one gets accustomed, it will be possible for him to manipulate the actions by a single hand. Depending on the applications, it may require pointing on the display screen by the equipped stylus pen or a regular ball point pen. Thus, I thought it will be so efficiently used very close that of the specially designed equipments, which are usually very expensive.)

 

この実験システムの背景にあるものは、今この情報を提供しているAPLで組み立てているWEBサーバーです。すなわちAPLシステムのAP119 TCPIPソケットプログラム・インターフェース補助プロセサーの力です。WEBサーバーの基本的機能は:(It is the power of APL written WEB server behind the scene. In other word, it is APL2’s AP119 TCP/IP socket interface auxiliary processor. The basic mechanism of any WEB server is a series of the following several TCP/IP commands)

 

1.       SOCKET

2.       BIND

3.       LISTEN

4.       ACCEPT

5.       RECV

6.       SEND

7.       CLOSE

 

の一連のコマンドをこの順番に発行し、その間にAPLによる処理を挟むだけです。したがって過去何年にわたりほとんど24時間休むこともなく働き続けているこのWEBサーバー・プログラムが現在ファイル転送の中継機能や遠隔問い合わせなどのに加えて、今回のイントラネットによるPDA,携帯電話を端末とするアップリケーションのサーバーとしての機能を果たしながら、APLの生の70行の式でできていることを誰に信じてもらえるでしょうか。(And the APL programming connecting these commands. It will be difficult for people to understand that our WEB server, which has been running almost 24 hours every day of the past few years, with the capability of intermediating file data transmission, answering customer inquiries, and now additional intranet processing of accessing by cell phones and PDAs, is written in only 70 lines of APL raw code.  

 

 サーバーとクライアント側のWEBブラウザーとのやり取りはサーバーにhtmlの文章を組み立てさせて行いますが、行き来する情報はすべてAPLで書かれたサーバープログラムで、トラップすることができます。したがって、たとえばhtmlのリンクの機能を単純なイベントを発生させるために用いたり、本来の目的以外に自由に利用することができます。またセキュリティーに関する処理を独自なロジックで簡単に作ることもできます。(Negotiations between the WEB server and the client WEB browsers are usually done by letting the server to compose html texts, but all the information in the traffic can be trapped by the server and used in the way not intended by the specifications of html. For example you may take a link to resources as merely an event with other intensions. You may also build a customized security logic, too.)

 

 このモデル・システムは近じかある顧客に対してデモを実施します。ユーザーの知恵次第で、さまざまな有意義なアップリケーションを実現できると思います。興味のある方はkyosuke.saigusa@nifty.com までメールでご連絡ください。(We have a plan to demonstrate this model system to one of our customers soon. If you are interested in this subject, please don’t hesitate to mail me.)

 

 

3.添付資料

 

APLを用いたQRコード作成プログラム

 

                      エーピーエル・コンサルタンツ 三枝由儀

                         (yoshinori.saigusa@nifty.com)

 

 

 

1.概要

 

APLQRコードを作成する関数QRCODEを作成した。

JISで規定されている数値テーブルやルールを簡潔に表現することができた。

 

 

 

2.QRコードとは

 

QRコードとは1994年にデンソーウェーブ(当時はデンソーの一部門)が開発した2次元バーコードである。

仕様が公開され、ライセンスなしで利用することができるためJISに採用されている。

1次元バーコードに比べてコンパクトで情報量が多く汚れにも強いため、製造管理、在庫管理、携帯電話での文字情報読み取り手段などとして広く普及している。

 

 

 

3.QRコードの仕様

 

JIS(規格番号:JISX0510)で規定されており、日本工業標準調査会のサイトで閲覧できる。

http://www.jisc.go.jp/

 

 

 

4.本プログラムの制限

 

今回作成したプログラムで作成するQRコードはモデル2のバージョン1から40までであり、

文字コードは「数字」「英数」「8ビット」の3つのコードのみに対応する。

また、誤り訂正レベルはL、M、Q、Hのすべてのレベルに対応する。

なお動作確認には携帯電話のQRコードリーダーを用いたため、バージョン15以降の動作確認は行っていない。


5.QRコード作成プログラムの内容

 

 1.コード化したい文字列と誤り訂正レベルを指定する。

 2.与えられた文字列から文字コードを判定する。

 3.与えられた誤り訂正レベルと文字数、文字コードからバージョンを決定する。(表1)

 4.モード、文字数情報、およびデータをコード化する。

 5.バージョンおよびモードに応じてデータを複数のブロックに分割する

 6.各ブロックごとに誤り訂正コードを付与する。

 7.データを2次元配置する。

 8.8種類のマスクパターンに従ってマスク処理を行う。

 9.各マスクパターンの評価を行い、採用するマスクパターンを決定する。

 10.型式情報(誤り訂正レベルとマスクパターン)を2進化し、誤り訂正コードを作成し、配置する。

 

 

 

6.誤り訂正コードの作成

 

QRコードではリード・ソロモン誤り訂正方式により冗長コードを付加し、コードの一部が汚れなどによって読めなくなっても誤りを訂正して読み取ることが出来るようになっている。

この技術はCDHDD等の記録装置やADSL等の通信装置でも利用されている。

冗長コードを作成するには次のガロア体を用いる。

 

1 2 4 8 16 32 64 128 29 58 116 232 205 135 19 38 76 152 45 90 180 117 234 201 143 3 6 12 24 48 96 192 157 39 78 156 37 74 148 53 106 212 181 119 238 193 159 35 70 140 5 10 20 40 80 160 93 186 105 210 185 111 222 161 95 190 97 194 153 47 94 188 101 202 137 15 30 60 120 240 253 231 211 187 107 214 177 127 254 225 223 163 91 182 113 226 217 175 67 134 17 34 68 136 13 26 52 104 208 189 103 206 129 31 62 124 248 237 199 147 59 118 236 197 151 51 102 204 133 23 46 92 184 109 218 169 79 158 33 66 132 21 42 84 168 77 154 41 82 164 85 170 73 146 57 114 228 213 183 115 230 209 191 99 198 145 63 126 252 229 215 179 123 246 241 255 227 219 171 75 150 49 98 196 149 55 110 220 165 87 174 65 130 25 50 100 200 141 7 14 28 56 112 224 221 167 83 166 81 162 89 178 121 242 249 239 195 155 43 86 172 69 138 9 18 36 72 144 61 122 244 245 247 243 251 235 203 139 11 22 44 88 176 125 250 233 207 131 27 54 108 216 173 71 142

 

これはAPLでは次のように求めることが出来る。

 

 

また、冗長コードを作成するには生成多項式が必要で、その長さはバージョンやモードによって変わる。

上記で求めたガロア体Gと逆引きテーブルFを用いて、次のように長さBの生成多項式Eを求める。

 

 

このようにして求めたガロア体と生成多項式から誤り訂正コードを生成する。


7.データの2次元配置

 

データはQRコードのデータ領域に次のような法則で配置する。

 

・右下からスタートする。

・最初は幅2つで上方向に進行する。

・左が空いていれば左に、空いてなければ進行方向の右側に進行する。

・上に行けなくなったら左に移動して進行方向を下に変更する。

 

つまり、既定の機能パターンを避けながら以下のような順番でデータを配置していくことになる。

 

380

379

378

377

296

295

294

293

212

211

210

209

128

127

126

125

44

43

42

41

382

381

376

375

298

297

292

291

214

213

208

207

130

129

124

123

46

45

40

39

384

383

374

373

300

299

290

289

216

215

206

205

132

131

122

121

48

47

38

37

386

385

372

371

302

301

288

287

218

217

204

203

134

133

120

119

50

49

36

35

388

387

370

369

304

303

286

285

220

219

202

201

136

135

118

117

52

51

34

33

390

389

368

367

306

305

284

283

222

221

200

199

138

137

116

115

54

53

32

31

392

391

366

365

308

307

282

281

224

223

198

197

140

139

114

113

56

55

30

29

394

393

364

363

310

309

280

279

226

225

196

195

142

141

112

111

58

57

28

27

396

395

362

361

312

311

278

277

228

227

194

193

144

143

110

109

60

59

26

25

398

397

360

359

314

313

276

275

230

229

192

191

146

145

108

107

62

61

24

23

400

399

358

357

316

315

274

273

232

231

190

189

148

147

106

105

64

63

22

21

402

401

356

355

318

317

272

271

234

233

188

187

150

149

104

103

66

65

20

19

404

403

354

353

320

319

270

269

236

235

186

185

152

151

102

101

68

67

18

17

406

405

352

351

322

321

268

267

238

237

184

183

154

153

100

99

70

69

16

15

408

407

350

349

324

323

266

265

240

239

182

181

156

155

98

97

72

71

14

13 

410

409

348

347

326

325

264

263

242

241

180

179

158

157

96

95

74

73

12

11 

412

411

346

345

328

327

262

261

244

243

178

177

160

159

94

93

76

75

10

9  

414

413

344

343

330

329

260

259

246

245

176

175

162

161

92

91

78

77

8

7   

416

415

342

341

332

331

258

257

248

247

174

173

164

163

90

89

80

79

6

5   

418

417

340

339

334

333

256

255

250

249

172

171

166

165

88

87

82

81

4

3   

420

419

338

337

336

335

254

253

252

251

170

169

168

167

86

85

84

83

2

1   

 

これは次のように表現できる。

 


8.マスク処理

 

 

データ配置が終わると、配置したデータの中に機能パターンに似たパターンが出現するのをなるべく避けるために、8種類の既定のマスクパターンを適用し、その中で最も良い結果になるものを選択する。

マスクパターンは以下の8種類で、APLの外積を用いて作成することが出来る。

 

 

 

 

マスクパターンの評価は以下のような失点制である。

 

 

これらの評価は原始関数を用いて簡単に行うことが出来る。


9.関数QRCODEの検証

 

このようにして作成した関数QRCODEの検証のために、Windows版のIBM Workstation APL2 for Multiplatforms Version 2.0の環境で入出力インターフェースを作成し携帯電話のQRコードリーダーで各バージョンおよびモードでのテストを行った。

携帯電話のカメラの読み取り能力限界であるバージョン14までの動作が確認できた。

 

 

 

 

10.結論

 

配列処理や数学的な表現を得意とするAPL言語がQRコード作成に適していることがわかった。


表1.各バージョンおよびモードにおけるデータ容量とバーコードのサイズ

 

バー

ジョン

数字

英数

8ビット

サイズ

 (mm)

1

41

34

27

17

25

20

16

10

17

14

11

7

8.7                          

2

77

63

48

34

47

38

29

20

32

26

20

14

9.9                         

3

127

101

77

58

77

61

47

35

53

42

32

24

11.1                      

4

187

149

111

82

114

90

67

50

78

62

46

34

12.3                    

5

255

202

144

106

154

122

87

64

106

84

60

44

13.5                 

6

322

255

178

139

195

154

108

84

134

106

74

58

14.7               

7

370

293

207

154

224

178

125

93

154

122

86

64

15.9               

8

461

365

259

202

279

221

157

122

192

152

108

84

17.1             

9

552

432

312

235

335

262

189

143

230

180

130

98

18.3             

10

652

513

364

288

395

311

221

174

271

213

151

119

19.5            

11

772

604

427

331

468

366

259

200

321

251

177

137

20.7           

12

883

691

489

374

535

419

296

227

367

287

203

155

21.9           

13

1022

796

580

427

619

483

352

259

425

331

241

177

23.1          

14

1101

907

621

468

667

550

376

283

458

377

258

194

24.3          

15

1250

991

703

530

758

600

426

321

520

412

292

220

25.5          

16

1408

1082

775

602

854

656

470

365

586

450

322

250

26.7         

17

1548

1212

876

674

938

734

531

408

644

504

364

280

27.9         

18

1725

1346

948

746

1046

816

574

452

718

560

394

310

29.1        

19

1903

1500

1063

813

1153

909

644

493

792

624

442

338

30.3       

20

2061

1600

1159

919

1249

970

702

557

858

666

482

382

31.5       

21

2232

1708

1224

969

1352

1035

742

587

929

711

509

403

32.7       

22

2409

1872

1358

1056

1460

1134

823

640

1003

779

565

439

33.9    

23

2620

2059

1468

1108

1588

1248

890

672

1091

857

611

461

35.1    

24

2812

2188

1588

1228

1704

1326

963

744

1171

911

661

511

36.3    

25

3057

2395

1718

1286

1853

1451

1041

779

1273

997

715

535

37.5   

26

3283

2544

1804

1425

1990

1542

1094

864

1367

1059

751

593

38.7  

27

3517

2701

1933

1501

2132

1637

1172

910

1465

1125

805

625

39.9  

28

3669

2857

2085

1581

2223

1732

1263

958

1528

1190

868

658

41.1  

29

3909

3035

2181

1677

2369

1839

1322

1016

1628

1264

908

698

42.3 

30

4158

3289

2358

1782

2520

1994

1429

1080

1732

1370

982

742

43.5 

31

4417

3486

2473

1897

2677

2113

1499

1150

1840

1452

1030

790

44.7

32

4686

3693

2670

2022

2840

2238

1618

1226

1952

1538

1112

842

45.9

33

4965

3909

2805

2157

3009

2369

1700

1307

2068

1628

1168

898

47.1

34

5253

4134

2949

2301

3183

2506

1787

1394

2188

1722

1228

958

48.3

35

5529

4343

3081

2361

3351

2632

1867

1431

2303

1809

1283

983

49.5

36

5836

4588

3244

2524

3537

2780

1966

1530

2431

1911

1351

1051

50.7

37

6153

4775

3417

2625

3729

2894

2071

1591

2563

1989

1423

1093

51.9

38

6479

5039

3599

2735

3927

3054

2181

1658

2699

2099

1499

1139

53.1

39

6743

5313

3791

2927

4087

3220

2298

1774

2809

2213

1579

1219

54.3

40

7089

5596

3993

3057

4296

3391

2420

1852

2953

2331

1663

1273

55.5

 

注:サイズは各辺の余白を4とし、1ドット0.3mmとした場合。


関数リスト