IBM Dojo OpenShift 101 with AI

8065fe5a0d33908c6f71c5ae28939dcd?s=47 Aya Tokura
November 29, 2019

IBM Dojo OpenShift 101 with AI

IBM Dojo 追加コース:OpenShift(Minishift) 101 入門のセッション資料
https://ibm-developer.connpass.com/event/154573/

・IBM Cloudライトアカウント無料登録はこちら
https://ibm.biz/dojo20191129

8065fe5a0d33908c6f71c5ae28939dcd?s=128

Aya Tokura

November 29, 2019
Tweet

Transcript

  1. IBM Dojo ǏĽ¡O§ OpenShift(Minishift) 101 Aya Tokura Developer Advocate Tokyo

    City Team
  2. 本⽇のタイムテーブル 13:30-13:35 (5min) オープニング 13:35-14:30 (55min) OpenShift概要 ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⼾倉

    彩 14:30-16:30 (120min) Minishift 101 ワークショップ ⽇本アイ・ビー・エム株式会社 デベロッパーアドボケイト ⼾倉 彩 / ⻄⼾ 京⼦ 16:30-17:00 (30min) クロージング
  3. 学習の⽬的とゴール ⽬的 OpenShift概要について理解する ゴール Minishiftを利⽤したアプリケーションを動かす このコースを学ぶ⽅の想定スキル コンテナ実⾏環境を初めて利⽤する⽅

  4. ayatokura ƤȢ ɜ (Aya Tokura) IBM Developer Advocate ©Å´Oˆ–ÀÓ²ǿɟHȚÞȹȈHɈȾźě‘ĂjuH Ċìã{òNz

    IBM Cloud ˆWatson{ƦDŽɛɤ‘ß^I
  5. G,;!,2h‰qzd~†‰x„BWVaQ^X HΎ¥¹ ŠŒXBjB£Mª^aEhnpru€F ¢Ÿ£Y–“UX¬Êc_Lª^SK\PA ąþ|ªµO{ɗǛÑ®²S/70=T{ĊìIJêv źɃÚ{ŹÙǓȪť‘`ȰciuHÔÙv{3D)3:{ ƕŒòˆHÿŒò‘…yh’wÝɌz²Ož¥ÌO‘ Ű_uŪ_u]ep‹wŲ]„kI ÔóL Ö

    æ Ôȑ  ĊȘ êĭL¦ÊӞȷŶơ șɑÙơ ǡŘLŎĖħ  £O»§¡O´‡id|`Œļv WٖÀÓ²zÿk`ĩ]ämHgŎĖ|fr‹ ¦ÊӞȷŶơșɑÙơ +#  éĥŅǹĴƃƅșɑ   07B :F 3D)3:==9
  6. F .5+ IBM Cloud #)(8MURLL  ibm.biz/dojo20191129 ! IBM Cloud

    3$ 5 "!5+ CD 3$ 5   ! IBM Cloud 1 +"!5+;B "!5+CD KPR  UÙÔ{`ȸ]
  7. 事前準備まだお済みでない⽅ 1. IBM Cloudアカウント(無料)の取得 ☆操作解説動画: https://ibm.biz/action1 2. IBM Cloud 従量課⾦アカウントへのアップグレード

    ☆操作解説動画: https://ibm.biz/action2 ※ ワークショップでは有償アカウントを使⽤しますが、無料枠内で作業します。 従って、今回の有償アカウントへのアップグレードや、ワークショップ参加によって 利⽤料⾦が請求されることはありません
  8. ⽬次 1. コンテナが注⽬されている理由 2. Kubernetesとは 3. Red Hat OpenShiftとは 4.

    Minishift ワークショップ
  9. 1. コンテナが注⽬されている理由 なぜ「今」 コンテナ/Docker/Kubernetesなどの テクノロジーが注⽬されているのか

  10. コンテナ以前の様⼦ コンテナ⾰命以前の港湾荷役 http://military.wikia.com/wiki/Battle_of_Pusan_Perimeter_logistics ⼤勢の作業員 倉庫に⼀時保管 物流の最⼤の ボトルネック

  11. https://www.jsanet.or.jp/seminar/text/seminar_177.html 物流コンテナによる⾰命 コンテナの発明者は、全⽶有数のトラック 運送会社のオーナーとなったマルコム・ マクリーン(Malcom P. McLean) 国際貨物輸送の分野に 海陸⼀貫輸送という⼤変⾰ 1970年代には世界の主要航路のコンテナ

    化がほぼ完了した。わずか10年程度でこれ ほど急激な形態の変化が起こったのは海運 史上でも他に例がない。 https://en.wikipedia.org/wiki/Malcom_McLean
  12. ǬȨɊƧ{²϶®ž‘ŝƬ ŖƢ¡§²{ȄŐw§¼O³”®¿ ¡Ó°´DžǑ|ÞįŔDž ȤĻÝɒNJƲ ĻÛNJƲ ȤƲQ²Í®žR ȤƲQǦňR ǬȨɊƧ ǬȨɊƧ ¡Ó°´Ƕ

  13. いま、IT業界の コンテナ⾰命が 始まる

  14. SɉǐÄ¥Ó-$TwS¡Ó°´T ¡Ó°´|ɉǐÄ¥Ó-$zƥuΪO§ǚƛbŠ] § Oϔ—²bɄȓ

  15. ¡Ó°´‘ŷspĊì{ƢŽ Dockerfileyx Docker –ÇO¦yx ¡Ó°´O Ц§²Î ĵ½˜§²v ¡Ó°´åċ{ ɐȝ‘ŢǪ Ċìã

    ¡Ó°´O –ÇO¦ŦĮ –ÇO¦{ ǿǘ Ċì㠔¿ÎĎß ”¿ÎĊì ǩȊ{¿Ñ©§
  16. コンテナーのポータビリティ nコンテナーのポータビリティ •アプリケーション稼働に必要な依存ファイルを パッケージングできる •物理サーバーに固定されない → 同じアーキテクチャの環境であれば ポータビリティが存在する システム基盤 (クラウド)

    ホストOS システム基盤 (オンプレミス) ホストOS コ ン テ ナ エ ン ジ ン App1 Bin/Lib s App2 Bin/Lib s App3 Bin/Lib s 「僕の環境では動いた」 問題が発⽣しない コ ン テ ナ エ ン ジ ン App3 Bin/Lib s
  17. What is Container (コンテナ)? https://youtu.be/1PPPUPcUkSs

  18. コンテナのはじめ⽅ n CNCFの Cloud Native Trail Map を参照 1. コンテナ化

    • ⼀般的には Docker コンテナで実施 • いかなるサイズのアプリケーションも依存性もコンテナ化可能 • 時間が経つにつれ、アプリケーションを分割し マイクロサービス化したくなるだろう 2. CI/CD(継続デリバリの仕組み) • 継続インテグレーション・継続デリバリの仕組みをセットアップ • コード変更が 新しいコンテナ・イメージとして、 ⾃動的にビルドされ、テストされ、デプロイされるように 3. オーケストレーション&アプリ定義 • 互換性試験に合格している Certified Kubernetes 環境を選択 • もっとも複雑なアプリケーションであっても HELMで 定義して、導⼊して更新していくことが可能
  19. コンテナのまとめ • 仮想マシン(VM)に⽐べてリソース効率がよい • ボータビリティーが⾼い • スケールアウトが容易 • 3段階のプロセスをコンテナのpushに使⽤することで、 よりアジャイルなDevOpsと継続的インテグレーション

    およびデリバリーが可能になる 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/containerization/ ⽂章での説明もあります
  20. 2. Kubernetesとは コンテナーの運⽤実⾏と管理を⾏うオーケストレーションツール • コンテナーが⼤量になってくると管理しきれない部分をカバー • 複数のDockerホストの管理 • 死活監視 •

    スケジューリング • スケーリング • 障害時のリカバリー • アプリ実⾏に必要なインフラリソースを管理 • 永続的なストレージ • ネットワーク • クレデンシャル情報 etc… • 宣⾔的設定モデル • 「あるべき状態」を記述すると、それを実現し続けようとしてくれる • 障害時も⾃動で復旧作業を実施
  21. Kubernetesの代表的な機能 スケールアウト 負荷分散 バージョン管理 (ロールアウト) ネットワーク管理 永続ストレージ管理 死活監視 ⾃⼰復旧 CPU

    / Memory リソース管理
  22. What is Kubernetes? https://youtu.be/zGXYRQ-8pU0

  23. IBM{¡Ó°´ƦDŽHȂƏЀ{ĠŒŊ… žÍ—³¶–°•¾K”¿Î ȂƏЀǙǫøzĿď =193@"C03@<3B3A€{ ¡Å®² "C03@<3B3AÀO§{ ¡Ó°´řȩªÎÊO¥ÌÓ ÖæJ!$ˆ ==5:3yx Ė

    {ŚÞJŜċbİĀ ¡Ó°´ƦDŽ ¡Ó°´ƻē "#$ !"#$% %&'()*(+(,-.()/01(-2"%.3 £O»§Ç®¥Ê @/43/A £O»§Ç®¥Ê £O»§Ç®¥Ê @/43/A £O»§Ç®¥Ê £O»§Ç®¥Ê @/43/A @/43/A £O»§Ç®¥Ê @/43/A £O»§Ç®¥Ê £O»§Ç®¥Ê £O»§Ç®¥Ê £O»§Ç®¥Ê £O»§Ç®¥Ê "#$ !"#$% 4)0/5+(-2"643 ´s~wfgdXn‰uy”®c¾Ÿ '!=<<31BJ./BA=<=;>/@3=;>:FJ +@/<A4=@;/B7=<2D7A=@J$71@=1:7;/B3J &$J*9F27D3J!$-=713/B3E/FJ .30*>63@3J ,@0/<=23 3>:=FJ'$J0 J $(J!!J>>=<<31BJ/B/'=E3@Jo{Ȓőĸ
  24. Kubernetesのまとめ 動画をもう⼀度⾒たい⽅はこちら: • https://developer.ibm.com/jp/new-builders/kubernetes/ ⽂章での説明もあります • コンテナーのオーケストレーション・ツール • 理想状態を宣⾔すると、その状態を維持しようとしてくれる •

    3つの主要コンポーネント • Pod, Deployment, Service • PodはDeploymentによって作成され、管理されます。 Deploymentによって作成されたPodへのアクセスは、 Serviceを使⽤することで容易になります。
  25. 3. Red Hat OpenShiftw|

  26. © 2019 IBM Corporation OpenShift|HKubernetesw{ȺȁĬ‘ȧņiyb‹HCICDğŵ‘īĐHĊìã zėsuH»Ï³HÎæ²ÎǿǘH±¿Ñ–‘åěĎßi„kI OPENSHIFT ğŵǽǃ OpenShift CICDľĔ

    ”¿Î O¥ÌÓ Q¡Ó°´R Kubernetes ”¿Î O¥ÌÓ Q¡Ó°´R Ubuntu / CentOS… Linux Kubernetes ”¿Î O¥ÌÓ Q¡Ó°´R ¡Ó°´ ÍÓ«–Æ Linux OS ¡Ó°´ ›O §²ÐO¥ÌÓ Kubernetes{ȂƏğŵ vƵȱip”¿Î O¥ÌÓ xr‹v‡ ěŦƞŵ RHEL / RHCOS ¡Ó°´ ÍÓ«–Æ "C03@<3B3Aw&>3<*674B
  27. What is OpenShift? https://youtu.be/KTN_QBuDplo

  28. KuberneteswOpenShift{ƿ]

  29. KubernetesとOpenShiftの違い まとめ • Deploy: • ソースコードからコンテナ作成とデプロイまでの⾃動化 • Manage: • Webコンソールとコマンドラインの両⽅から操作可能。

    • 実⾏状態のメトリックス監視とログ分析も提供 • 運⽤: • Ansible Playbookを使ってオートスケーリングが可能 • Security: • Project単位で簡単に管理可能
  30. Kubernetes and OpenShift: What's the Difference? https://youtu.be/cTPFwXsM2po

  31. Red Hat OpenShift on IBM Cloud IBM Cloud™Û{RedHat®OpenShift®|Hîćz§ O;ÏvĶȎĬ{î]IBM Cloud¿Í®²½šOÆvȗĕzƻēhŽpOpenShiftžÍ§«O‘ŧǒkɇɎøy

    £O»§vkI The WeatherCompany®vȶÔ2,500Ō{›Ó±ÄÓ³ŎȮ‘ȧņk Kubernetes£O»§zŬǣƩähŽu]„kI
  32. 4. Minishift ÒOž¥Ì®¿ 6BB>A EEE =92 7= ;7<7A674B

  33. ワークショップ 5-1. IBM CloudでOpenShiftを使う 5-2. Minishift とは 5-3. Minishift ワークショップ

  34. 5-1. !$:=C2v&>3<*674B‘ŷ^ !$:=C2zџ–Ó ÙÔ| 70; 07G 2=8=   z”ž©§iu

    ȃÛ{Sџ–ÓTa‹ џ–Óiudqh] Ăƴ| https://cloud.ibm.com/ a‹ÑŸ–Óƞŵvk
  35. 5-1. !$:=C2v&>3<*674B‘ŷ^ ¬®¥ÊÂO³a‹Sœ«ÑŸT‘žÎ®ž

  36. 5-1. !$:=C2v&>3<*674B‘ŷ^  ȃÛ{ŕɏ½•Oϳa‹2(),2ƒew‘ÁÀ J2(),2ƒew‘ȄǼ

  37. 5-1. !$:=C2v&>3<*674B‘ŷ^  ǾŸ{œ°¢ÎOa‹S¡Ó°´T‘žÎ®žH S)32 /B&>3<*674B:CAB3@T‘žÎ®ž

  38. 5-1. !$:=C2v&>3<*674B‘ŷ^  )32 /B&>3<*674B:CAB3@ŦĮƉůbĜŨhŽ„kI pqi͖²”œ—Ó²v|ŦĮvcy]p†H ͖²”œ—Ó²{êä|S”®¿ŸÐO³T«ÓbĜŨhŽ„kI

  39. 5-1. IBM CloudでOpenShiftを使う 6. 「 Red Hat OpenShift Cluster 」を作成します。動画で⾒てみましょう:

    https://youtu.be/UJ2frartWFk
  40. 5-1. IBM CloudでOpenShiftを使う 補⾜情報: 3分でわかるIBM Cloudシリーズ(動画) • OpenShiftクラスターに対してocコマンドでアクセスする • OpenShiftクラスターにHelloWorldアプリをデプロイしてみよう

    IBM Demos (デモ動画サイト、英語): • Red Hat OpenShift on IBM Cloud
  41. 5-2. Minishift とは • OpenShiftは、Kubernetesに、Red Hat社独⾃の拡張を加え、さらに、 Red Hatのソフトウェア保守とウェブや電話での問い合わせ対応 サービスを提供する企業向けKubernetesのプラットフォーム •

    OpenShiftは、Red Hat社が提供する有償サービス(サブスクリプション) のもとで利⽤できるソフトウェア • OpenShiftの学習やローカルの開発環境⽤に無償で提供されるのが、 Minishift (OpenShift 3.11に相当) 「MiniShiftに関する疑問の整理、「 Dockerから⼊るKubernetes」執筆打明け話とか、OKDやCRCとの整理など」 https://qiita.com/MahoTakara/items/3c1c208640518e832660 より抜粋
  42. 5-3. Minishift ワークショップ (準備) Setup 1 「仮想化環境を構成する」の⽇本語版はこちら」 • Windows: ibm.biz/Bdz39H

    • Mac: ibm.biz/Bdz39E Setup 2 MinishiftのインストールおよびOpenShiftサーバーを開始する ibm.biz/openshift1 Setup 3 コードエディタをインストールする(オプション)
  43. 5-3. Minishift ÒOž¥Ì®¿ &(9854%08:(2!,*5.409054c§RQ 45+,18X«Ë¤¿&,)d„ https://github.com/kyokonishito/watson-vr-node c0408/0-9T—ŽPa 47#&0*-?9@-2JQ /7'

  44. Watson API£O»§Ýɚ 2019‹3‘­ &(985488089(49 ”¿Î O¥ÌÓzåǮŇǀ–Ó«O½˜O§‘ǏĽiu ™Ó³ËO¤w{ˆŒĠŒ‘åěĐ #,=995"6,,*/ °§²Žɍ‘ȆƶzƖȁk "6,,*/95#,=9

    Ȇƶ‘°§²ŽɍzƖȁk %08:(2!,*5.409054 Ɖȼ¡Ó°Ó¯zǖ„ŽĨǴ‘ŕÜk 08*5;,7> ŏĵøyɝǭ™Ó¦Ó‘ľĔiuH±O «{ɀŽpŤǝ‘ŝĄiHþǵˆ²ÐÓ ³‘ìëk 08*5;,7>,<8 7A1=D3@FÛzĎȞhŽH™Óή­şł ‡ƈĽhŽpµÊO§zÿkĝĊ±O «©®² ,7854(209>480./98 °§²a‹Ⱦã{ĬŻ‘ǰ÷k (4.:(., #7(482(957 °§²‘ȒŇǀ€ɢɓ‘ß^ (9:7(2(4.:(.,$4+,789(4+04. åǮŇǀƝē‘ĂjuOÒO³ɞÜH™Ó °•°•OɞÜHɖLj«ŸƈeHÿƀɞÜy x‘ß^ (9:7(2(4.:(.,2(880-0,7 °§²Žɍ{çȇ‘ß^Ƽĩ{ĨDZǰ÷yx #54,4(2>?,7ŠŒ·Ã”® °§²a‹Ⱦã{ƐşHâŰĬHŽċ‘ŝɋ 45<2,+.,"9:+05 ¡O±•ÓŸyizHÞįšDza‹íĮip ğɘĚțȱÏvHȍƵLJ°§²±O«a ‹ɝǭ‘ĠśĚțŋƹ¯OÏ ŞēǺ ŇǀǺ ɅØƙǵǺ šDzȽɏǺ ȆƶǺ ƉȼǺ 6BB>A EEE 70; 1=; E/BA=< 8>8/ 23D3:=>3@1:=C2 A3@D713A1/B/:=5 6B;:
  45. Watson Visual Recognition (画像認識) 画像認識「⼀般種別」(General Tagging): • 事前学習済みの分類器の出⼒を返す 画像認識「カスタム」: •

    識別を⾏いたいクラスのイメージを事前学習させ、 その分類器の出⼒を返す 事前学習 不要 事前学習 必要 https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html 画像に写った物体・情景など様々なものを分析・認識するAIサービス
  46. 0. Visual Recognitionサービスの作成 以下を参考に、 Visual Recognitionサービスを作成してください。 https://github.com/kyokonishito/watson-vr-node#2-visual-recognition- %E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90

  47. 1. Visual Recognitionサービス ibm-credentials.env のダウンロード 1.1: IBM Cloudにログインし、 Visual Recognitionサービスの管理画⾯を表⽰します。

    ⼿順が不明の⽅は、下記を参照してください: https://qiita.com/nishikyon/items/9b8f697db7ad0a693839#2- %E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E8%B3%87%E6%A0%BC% E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97
  48.  70;1@323<B7/:A 3<D {¬—ÓÑO³ ﯺł{S¬—ÓÑO³T‘ žÎ®žiHåç{'z 70;1@323<B7/:A 3<D w]^ ½“–Ï‘đǯi„kI

    \wv¡Äӳ͖Óa‹f{ ½“–Ï‘ō÷i„k{vH =1¡ÄÓ³‘ĎßkŎ÷{ ƁĨ{½šÏ¬zđǯi„kI X¡ÄÓ³ɂŦzɔŽuy]ò|H ±§ž²®¿ĹĪ{êĭ‘ǰɠi„kI
  49.  70;1@323<B7/:A 3<D {Ȗƒ ɥ70;1@323<B7/:A 3<D‘™±•«vĊc„kI ßçĕu¡¼OiuH[ßčĹȀzɣŒƈe„kI Ȗƒõ Ȗƒô

  50.  70;1@323<B7/:A 3<D {Ȗƒ ɦ¡¼Oip[ßčĹȀ{ %"$'!# ‘ &#"'%"' zƊcȁ_„k D*"{¹Ÿñƙy{vȋıøzĞĦzya‡iŽ„m’R

    Ȗƒô Ɗcȁ_ôđǯiu™±•«‘Ȼjudqh]I xfzđǯip{a'+ baŠ^ziudqh]I
  51. f{\w|HZ[Z[¡ÄÓ³ɂŦvkM «OÅ´Ï$/1„p| '=E3@*63::.7<2=EA ‘Ċc„kI

  52. 2. Minishift アプリ作成 2.1. クラスターにログインします $ oc login -u system:admin

    minishift startを実⾏した後、下記のコマンドでクラスターにログイン します。 2.2. プロジェクトを作成する $ oc new-project watson-vr --display-name="watson-vr" -- description="Sample Watson Visual Recognition Node.js app" 下記コマンドで、新しいアプリケーション⽤に新しいプロジェクトを 作成します。 (コマンドは1⾏です)
  53. 2.3. アプリケーションの作成 $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file=<ibm-credentials.env> --build-env CLASSIFIER_ID=food

    githubのソースコードから、下記のコマンドでアプリケーションを作成 します。 • 1.2でダウンロードしたibm-credentials.envをPATHも含めて、 下記<ibm-credentials.env>に指定します。 (コマンドは1⾏です) $ oc new-app https://github.com/kyokonishito/watson-vr-node.git -- build-env-file=./ibm-credentials.env --build-env CLASSIFIER_ID=food 例
  54. 2.4. ビルドログを表⽰します $ oc logs -f bc/watson-vr-node 下記のコマンドでビルドログを表⽰し、「 Push successful

    」で終わる まで待ちます。 2.5. ポートを公開します $ oc expose dc watson-vr-node --port=3000 --type=LoadBalancer -- name=watson-vr-node-ingress 下記コマンドを実⾏します。(コマンドは1⾏です)
  55. 2.6. 作成されたNodePortを確認します $ oc get --export svc watson-vr-node-ingress 2.7. アクセス可能なクラスターIPアドレスを確認します

    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE watson-vr-node-ingress LoadBalancer <none> 172.29.77.196 3000:31202/TCP <unknown> 下記コマンドを実⾏します。(コマンドは1⾏です) 下記コマンドを実⾏します。(コマンドは1⾏です) $ oc get node -o wide 出⼒: 下記の場合、マッピングされた外部ポートは31202 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME localhost Ready <none> 26m v1.11.0+d4cacc0 192.168.64.19 <none> CentOS Linux 7 (Core) 3.10.0-957.5.1.el7.x86_64 docker://1.13.1 出⼒: 下記の場合、アクセス可能なクラスターIPアドレスは192.168.64.19
  56.  ¾Í—¤Ov”¿Î O¥ÌÓz”ž©§i„k vĠśipÃO² vĠśip!'”³Ð§     

    { êä| http://192.168.64.19:31202/ z”ž©§i„kI gåç{ǝ‘`ŷ]dqh] ”¿Î O¥ÌÓ|ĜŨvc„ipa «ӑȔiuěŦžŠiu…„i‰^
  57. 5-4. 追加ワークショップ (オプション) • Node-RED on Minishift https://github.com/yamachan/node-red-workshop- starter/blob/japanese-readme/README-ja.md •

    RedHat Japanのハンズオントレーニング ⽇本語訳 複数コンテナの連携: https://github.com/osonoi/minishift/tree/master/lab1 様々なデプロイメント⼿法: https://github.com/osonoi/minishift/tree/master/lab2
  58. 5-5. 補⾜ • Minishiftの停⽌コマンド $ minishift stop • Minishiftの起動、初期メモリ・ディスクの制限 $

    minishift start --memory 2G --disk-size 10G --vm-driver <drivername> • Minishift VM削除(VM再作成したい場合などに、、、) $ minishift delete • Minishift コマンドラインで作成したProjectをWebコンソール で表⽰(developerでログイン) $ oc policy add-role-to-user admin developer
  59. IBM Code Patterns https://ibm.biz/ibmcodejp ŝƽ ±ÈěƉ ªO§¡O³bɧsp”¿ÎĊ캫OÓƒ

  60. –“ Noew IBM Developer ibm.biz/IBMDevJP ġüşłˆ§Ï”®¿zƧĀt ‘Ǣ_ƦDŽŢá‘ŧǒ

  61. None