読者です 読者をやめる 読者になる 読者になる

『独習Python入門』を献本頂きました

書評 書籍 Python

著者の ござ先輩(id:gothedistance) こと湯本さんからご献本頂きました。
手配してくださった、また編集担当の技術評論社の池本さんありがとうございます。

本日2016/8/5が記念すべき出版日です。(紹介記事ギリギリ間に合った)

『独習Python入門』

書籍のタイトルどおり、プログラミング言語Python(以下、Python)を使った書籍。

f:id:rokujyouhitoma:20160805235641j:plain:w300

まとめ

各章の紹介はあとにして、まとめを先に。

  • よい書籍。説明丁寧でわかりやすい。
  • 僕自身が中学生、高校生時代に欲しかった。内容は職業プログラマーで経験値そこそこ積んだ僕には入門すぎるので適してない。
  • ゆえに、中学校、高校に置かれたらいいなー。自治体の図書館とかにも適してると思う。
  • プログラミングの一般教養として一冊目に読むのはあり。大学で一般教養科目としてプログラミング言語のコースを今時取るのですが、その前の一冊として読むのもあり。
  • IPAが行っている国家資格のITパスポート持ってるくらいの人はこのレベルは知っててほしいところ。
  • 5年ごとに改丁版出せるぐらい、ロングセラーになるとよいな。(時事扱ってるのもあるからそのあたりの更新は楽しみ)
  • 息子が4歳なのだけど、将来、彼が大きくなったら、一冊目にはこの本よさそう。

gihyo.jp

目次

  • 第1章 はじめてのプログラミング
  • 第2章 条件で分ける方法(分岐の基礎文法)
  • 第3章 繰り返しさせる方法(反復の基礎文法)
  • 第4章 関数を使ってみよう!
  • 第5章 いろいろな型を学ぼう
  • 第6章 エラーと例外を使いこなす
  • 第7章 オブジェクトとクラスとは何か?
  • 第8章 自分が書いたログラムをテストする
  • 第9章 明日から使えるWebプログラミング
  • 第10章 Webアプリケーションことはじめ
  • 第11章 今後の学習に向けて

各章にコメント

1章

導入部分として、プログラムとは何か?Pythonは何か?をさっくり説明。
Pythonの開発環境を整えずために図解とともに手順しめすのもこの章。

四則演算、変数、演算子文字コード、型に関する説明や、プログラムコードのネーミングスタイル(ネーミングルール)の説明。

2章

2章では、冒頭から開発環境の構築。Atomというプログラマーでは大変有名なgithub.comというサービスを運営する会社が無償で配布しているテキストエディタを図解ととともに導入手順を示している。

その後この章で一番伝えたいであろう、条件分岐(もし〜だったら、何をさせる)について解説。
論理演算子(and, or, not)やプログラミング言語

合わせて、コンピュータの基本的な機能のお話。具体的にはディレクトリとは何か?どのように操作するのか?を簡単に解説。

Pythonのエラーにや、多くのプログラミング言語で存在する予約語についてもこの章で触れる。

練習問題としてはFizzBuzzというGoogleで検索すると、よくお目見えする問題と、体重/身長^2で算出できるBMI値の求め方。

3章

3章では、反復処理について、配列というデータ構造とともに説明していくのが中心。
ソースコードにメモ書きを残すコメントという機能についてもこの章で解説。

4章

4章では、多くのプログラミング言語で提供されている関数という機能の紹介。
Pythonが標準でもっている標準関数の幾つかに触れた後、プログラミングする人が自分で定義できるユーザー定義関数について解説されています。
また、ライブラリの読み込み・呼び出しもこの章で解説。

練習問題は、世界のナベアツに関してでアホだなー。

Note: すっごい細かいこというと4-6 "ほかの関数を使う(import)"は若干ミスリードタイトルで、importは関数ではなく、文(Statement)かなー。
6. 単純文 (simple statement) — Python 2.7.x ドキュメント

5章

5章では、Pythonにおけるデータ型について説明。具体的には辞書型(Dictionary), タプル型(tuple), 集合型(set), None。

関数のキーワード可変長引数も混ぜ込まれてる。

6章

この章では、Pythonにおけるエラー・例外処理とは何かを紹介。

Note: 例示されているTypeErrorは構文エラーかどうか...実行時エラーではなかろうか...。

合わせて、ファイルへのデータの読み書きを解説。ファイル読み書きは例外処理する典型例でもあるので解説。

7章

7章では、概念的なお話。オブジェクトとは何か、何をどう捉えるのかというお話。
Pythonにおいて、どのようにプログラムで表すのかを解説。

この章の練習問題はいままでと違って、若干ボリュームがあるけど、プログラムの設計について著者からの助言を読めるので、読み飛ばさず読むことをおすすめ。

Note: すごい。実測値かしらないけど、著者の身長、体重載ってておもろい。

8章

8章では、テスト。
書いたプログラムはかならず意図した動きをするのかテスト・検証する必要があり、その解説。

プログラムに対しては、Pythonには標準ライブラリにunittestというライブラリが搭載されているので、そのライブラリを使っての解説となる。

9章

この章では、Webシステムの基本を抑える解説。
HTML, CSSをさらっと紹介し、サイトにスクレイピングという手法で情報(データ)を集める流れを紹介する。

Note: 僕自身は過去に検索エンジンの会社でクローラー関連も携わってたから倫理・道徳観が養われているわけだが、むやみなスクレイピング。ダメ・ゼッタイ。という記載が欲しかったところ。

10章

10章では、Pythonを使って簡単なWebアプリケーションを作って学ぶ。

11章

11章は、最後の章で、今までの振り返りと、今後の学習方法の提案をさらっと。

困ったら、ござ先輩に問い合わせるでいいと思う。編集者にではなく、著者のござ先輩へ。

参考

独習Python入門――1日でプログラミングに強くなる!

独習Python入門――1日でプログラミングに強くなる!

他の書評など知り、Pythonで困ったら

まずはGoogleで検索

それでも困ったら面倒だから、著者の id:gothedistance をネット上で捕まえて問い合わせしちゃっていいと思う。

まずはGoogleで検索

それでも困るようなら id:rokujyouhitoma に連絡で構わないです。

ござ先輩

野球好き。

なお、ござ先輩とは直接面識はない。たぶん。
もしかしたら java-jaコミュニティですれ違ってるかも。たぶん。

そんなに遠くに感じない不思議。

僕とPython

余談です。全くもって余談。

僕とPythonとの関わりを紹介すると、ちょうど10年前の秋(06Q4)。

SIerが手掛けるかなり大きめの案件に参画して、ファイル保存サーバにActivePythonがあるのを発見して、ドキュメント読んだりCGI書いて遊んだのが最初だったと記憶してます。

いま思うと、繁忙期ではなく、かつネットに繋がれていない開発ルームだったから触った、外の息吹を感じたかったのだと思います。

その数カ月後にプロジェクトに導入されてたTrac(たしか0.11系だったような?)のプラグイン書く作業があって、担当したのが仕事で書いた初めてのPythonコードだったのかな。

その後趣味で使ったり、仕事で使う機会があったりしました。今はゲームプログラマー2年生でUnity C#を使う機会が増えたのですが、今日はたまたまクローラーを書く必要があったのでScrapyを投入してみたりする際に使ってます。

一番しっくりするツールチェーン is Python

「Unreal Engine&Unityエンジニア養成読本[イマドキのゲーム開発最前線! ] (Software Design plus)」の執筆の一部を担いました。

ITAKO Unity UnrealEngine 執筆

株式会社ITAKOに所属しているゲームプログラマー1年生の池です。はじめまして。

現在の職場の株式会社ITAKOの仲間達とゲームエンジンのUnrealEngineとUnityに関する書籍を出版することになりました。

Unreal Engine&Unityエンジニア養成読本[イマドキのゲーム開発最前線! ] (Software Design plus)

出版元の技術評論社さんの公式ページ

gihyo.jp

概要

企画の着眼点・経緯は、
UnityとUnrealEngineのそれぞれの書籍は世に数多ある。
だけど、両方のゲームエンジンが載ってて、かつ特定の目的をそれぞれのエンジンで解説するという書籍がなかった。
なので、出版社の編集の方にご提案し、実現するに至りました。

168ページと薄めの書籍です。ですが、薄いながらに詰め込みました。ただ、ページも薄く紹介するエンジンが2つということは、他書でよくあるエンジン1つの書籍よりも内容は薄いのは自明です。

内容は、
Part1では、導入部分として、それぞれのエンジンの紹介から、コミュニティや取り巻く環境、ショートカットキーの解説。
Part2では、3Dのモデルデータを取り込みキャラクターを表示し、実際にアニメーションを付ける。
Part3では、2Dでキャラクターをスプライトアニメーションする。
Part4では、著者陣が近年携わってるモバイル向けの概要、機能の紹介、広告SDK、ランキング機能に関して。
そして最後のPart5では、現在進行で発展を続けており、今後のコンテンツも期待できるVRの紹介。実際にそれぞれのゲームエンジンの機能でVR向けのコンテンツを作り、流れを解説します。

店頭で見かけたら是非手にとって中を見ていただければ嬉しいです。

目次

Part1 徹底解説!話題のエンジンUnity5 & Unreal Engine4
  • 1章:Unity5 & Unreal Engine
  • 2章:より便利にUnity5 & UE4を利用しよう
Part2 3Dキャラクターに動きをつけて世界を表現 キャラクター・アニメーション編
  • 1章:ゲームの世界を覗いてみよう
  • 2章:キャラクターを表示する
  • 3章:アニメーションの再生
Part3 2Dスプライトアニメーション/UIを学ぶ スプライト・UI編
  • 1章:2D表示の基本を学ぼう
  • 2章:Unity5/Unreal Engine4でスプライトを表示しよう
  • 3章:Unity5/Unreal Engine4でスプライトキャラクターを制御しよう
  • 4章:Unity5/Unreal Engine4でUIを作ろう
Part4 モバイルの基礎知識とランキング機能/広告組み込み実践 モバイル編
  • 1章:モバイルゲームを開発するには
  • 2章:Unity5/Unreal Engine4におけるモバイル対応の基本
  • 3章:Unity5/Unreal Engine4で広告を表示しよう
  • 4章:Unity5/Unreal Engine4でランキングと実績機能を実装しよう
Part5 お手軽開発 VR編

余談

なお余談ですが、ボツ案として、UnrealEngineのソースコードが容易に入手、閲覧可能となった時期だったのでそのソースコードをひたすらリーディングしていくという書籍も検討しました。うまく企画がまとまらず断念無念。

株式会社ITAKO

今後とも”娯楽を中心に生きていく”をモットーとした株式会社ITAKOをよろしくお願い致します。

現在の主事業はゲーム開発ですが、娯楽に関わること全般なんでもご相談下さい。

φ(..)メモメモメモメモ

備忘録

自分の備忘録。Chromeのタブが限界を迎えてしまうのでリンク集をまとめとくというのが発端。
だったのだけど、ローカルのテキストファイルに書き込んだものも掘り起こしとく。

ゲーム開発

膨大すぎて割愛(ry

ゲーム関連の掘り起こしは別の機会に(えらいことになってる...)

ゲーム

積みゲーが多発。アナログゲームもデジタルゲームも。

トピックモデル

知人と話してて答えられなかったので。
基本的に小町研 or NAIST or 人名(北 研二, 辻井潤一...etc)and トピックモデルなどの検索クエリとかでググってる。

数学

統計学の基礎のきが抜けてる関係でぐぐった。大抵P given XとかΠが相乗でとかブツブツ言ってる。トピックモデル調べる際の副産物が主。

物理

ゲーム物理で復習をした。

書籍

割愛するが...以下のとおり。

  • NLPがてんこ盛り。
  • NLP以上にゲーム開発の書籍がてんこ盛りすぎて吹く。
  • 史学はそこそこ。
  • 上記以外もなみなみ。

処理系

Σ この記事書いてて思い出した。Hy(Hylang)は初コミットから250コミットくらいを読んでて力尽きてる所。

おれ、全コミット(今1800ちょっと)よみおわったら、つぎは、pixieよむんだ...。

放送大学

4単位分科目履修生。途中課題も提出して問題なし。

総括

時間がいくらあっても足りない/(^o^)\
優先順位つけて、本業で能力発揮するために、ゲームと数学にシフトしてく方針ではある。

備忘録を見直すこと。

Hy(Hylang)をCythonでコンパイル

Hy Python Lisp Hython

Hythonコミュニティの id:rokujyouhitoma です。こんにちわ!

Hythonコミュニティ

Hythonコミュニティは不定期的でHython(廃村)-hack-a-thonと称して、廃村めぐりを開催しています。Pythonで知り合った人たちがほとんどです。

前回参加時は、たしか...猿島?の要塞跡を見学しました。それ廃村じゃ無いじゃん、廃墟じゃん。というツッコミはあるかと思います。
前々回は、奥多摩の廃村だったと記憶してます。山奥でさまよってやっとのこと住居跡を見つけたのですよ!

で?

さて、現在開催中のPython その2 Advent Calendar 2015でcsakatokuさんがHy記事で無双(?)してるのをみてHyに興味をもちました。

Hythonと語呂がちょうどあってそうだし、Pythonで書かれたLisp系処理系のHy(Hylang)を触らないのはもったいないかなー。

さて、前置きが長くなりましたがHythonコミュニティと全く関係ない、本題を...

HyをCythonでコンパイル

というわけでPythonで書かれたLisp処理系の1つHyについてです。

HyPythonで書かれてるので、Hyの処理系自体をCythonで*.soにすれば、速くなるかな?というのを試します。

環境

$ Python -V
Python 2.7.9
$ uname -s
Darwin

検証コード

実際にインストールしたい人は下記でインストール可能です。

cd <上記のリポジトリ(feature/cythonizeブランチ)>
pip install -e .

結果

Cythonizeは成功。作業時間はこの記事書くの含めて2h。実作業には1.5hくらい。

  • 単純な実行だと速度改善する。
  • ただし、本家Hyだとこけないテストが、自前のCythonize版ではそもそもエラー&コケる...。

単純なコード

例えば、map処理

オリジナルをCPythonで
time hy -c "(map inc [1 2 3])"
hy -c "(map inc [1 2 3])"  0.92s user 0.07s system 98% cpu 1.001 total
Cythonバージョン
$ time hy -c "(map inc [1 2 3])"
hy -c "(map inc [1 2 3])"  0.69s user 0.11s system 79% cpu 0.997 total
単純なコードでの結果

33%速度改善がみられた。Cythonのアノテーションなしで33%の改善なら悪くない。

オリジナをCPythonで Cythonバージョン
0.92s 0.69s 1.333

コケる

オリジナルをCPythonで

$ time make test
(省略)
Ran 419 tests in 57.520s

OK
make test  53.09s user 3.23s system 96% cpu 58.337 total
Cythonバージョン
$ time make test
(省略)
Ran 419 tests in 41.521s

FAILED (errors=1, failures=4)
make: *** [test] Error 1
make test  37.97s user 3.21s system 96% cpu 42.509 total
ERROR

Errorが1件。致命的。
うーん。not iteratableなオブジェクトが来てる...なぜ。

======================================================================
ERROR: NATIVE: test the iteration behavior of cons
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/util.py", line 620, in newfunc
    return func(*arg, **kw)
  File "/Users/rokujyouhitoma/workspace/github.com/hy/tests/native_tests/cons.hy", line 291, in test_cons_iteration
  File "hy/models/cons.py", line 85, in __iter__ (hy/models/cons.c:2403)
    for i in iterator:
  File "hy/models/cons.py", line 79, in genexpr (hy/models/cons.c:2186)
    iterator = (i for i in self.cdr)
  File "hy/models/cons.py", line 85, in __iter__ (hy/models/cons.c:2403)
    for i in iterator:
  File "hy/models/cons.py", line 79, in genexpr (hy/models/cons.c:2186)
    iterator = (i for i in self.cdr)
  File "hy/models/cons.py", line 85, in __iter__ (hy/models/cons.c:2403)
    for i in iterator:
  File "hy/models/cons.py", line 79, in genexpr (hy/models/cons.c:2186)
    iterator = (i for i in self.cdr)
  File "hy/models/cons.py", line 85, in __iter__ (hy/models/cons.c:2403)
    for i in iterator:
  File "hy/models/cons.py", line 79, in genexpr (hy/models/cons.c:2186)
    iterator = (i for i in self.cdr)
  File "hy/models/cons.py", line 85, in __iter__ (hy/models/cons.c:2403)
    for i in iterator:
  File "hy/models/cons.py", line 79, in genexpr (hy/models/cons.c:2156)
    iterator = (i for i in self.cdr)
TypeError: 'HyInteger' object is not iterable
FAIL

Failは4件。そこそこ致命的。

前半2つはkoanというマクロが起因でコケてる。
後半2つは、前半2つと同様koanか、ideasというマクロが起因でコケる。

======================================================================
FAIL: tests.test_bin.test_bin_hy_stdin
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/rokujyouhitoma/workspace/github.com/hy/tests/test_bin.py", line 60, in test_bin_hy_stdin
    assert "monk" in ret[1]
AssertionError: 
    (0, u'\x1b[?1034h=> => ', u'hy 0.11.0 using CPython(default) 2.7.9 on Darwin\n  File "<input>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n\n') = run_cmd("hy", '(koan)')
    assert (0, u'\x1b[?1034h=> => ', u'hy 0.11.0 using CPython(default) 2.7.9 on Darwin\n  File "<input>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n\n')[0] == 0
>>  assert "monk" in (0, u'\x1b[?1034h=> => ', u'hy 0.11.0 using CPython(default) 2.7.9 on Darwin\n  File "<input>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n\n')[1]
    

======================================================================
FAIL: tests.test_bin.test_bin_hy_cmd
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/rokujyouhitoma/workspace/github.com/hy/tests/test_bin.py", line 65, in test_bin_hy_cmd
    assert ret[0] == 0
AssertionError: 
    (1, u'\x1b[?1034h', u'  File "<stdin>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n') = run_cmd("hy -c \"(koan)\"")
>>  assert (1, u'\x1b[?1034h', u'  File "<stdin>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n')[0] == 0
    assert "monk" in (1, u'\x1b[?1034h', u'  File "<stdin>", line 1, column 1\n\n  (koan)\n  ^----^\nHyMacroExpansionError: expanding `koan\': <cyfunction koan_macro at 0x10311e1d0> is not a Python function\n\n')[1]
    

======================================================================
FAIL: tests.test_bin.test_bin_hy_icmd
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/rokujyouhitoma/workspace/github.com/hy/tests/test_bin.py", line 78, in test_bin_hy_icmd
    assert "monk" in output
AssertionError: 
>>  assert "monk" in u'\x1b[?1034h=> => '
    assert "figlet" in u'\x1b[?1034h=> => '
    

======================================================================
FAIL: tests.test_bin.test_bin_hy_icmd_file
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/rokujyouhitoma/.virtualenvs/cythonize-hy/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/Users/rokujyouhitoma/workspace/github.com/hy/tests/test_bin.py", line 87, in test_bin_hy_icmd_file
    assert "Hy!" in output
AssertionError: 
>>  assert "Hy!" in u'\x1b[?1034h=> => '

まとめ

  • Hyとっても面白い。コードを読み進めたい& Land of Lisp のコードをHyで書きたい。
  • 簡単にCythonでビルドできた。Cython有能。
  • ちょっと検証コードが少ないので、もう少し試そうかな。
  • PyPyでHyの速度は気になるから、PyPyでも試してみたい。

歴史探求のメモ書き

History 備忘録

松浦党研究連合会の末席で活動している池です。メモ目的で記す。

読みたい

読みたいが、入手が困難な文献一覧。

志佐物語、志佐記は古い文献であるため、閲覧難易度が高いだろう...。

市史については、あと数十年以内に再度編纂されるであろう or 国会図書館や県図書館に行くか...。

松浦党研究 N.XXは、所属先発刊なので、なんとか入手できそうだし、そもそもアマゾンでまだ扱われてるから、入手は容易そう。
入手できないとしても国会図書館に蔵書されてるので閲覧難易度は低い。

入手難易度高

  • 志佐物語
  • 志佐記
  • 志佐二世物語
  • 松浦叢書第一巻

入手難易度低

ウェブ

なんと、ウェブ上で読めるという幸せ(真贋は不明)

人物

  • 吉村茂三郎

Pythonのマイナーな処理系、コンパイラ

Python

今後深堀りして調査するかは未定だけど、名称忘れがちなのでindex目的で。

д゚)チラッ この分野に詳しい、 id:Ehren 先生からのコメントほしい&二段階ほど深堀りしてまとめてほしいなー

Pythonのマイナーな処理系一覧

マイナー

主観だがマイナーだと思ってる

  • Pythran
  • Parakeet
  • Nuitka
  • Shed Skin
  • HOPE
  • CLPython
  • Python for S60?

マイナーだけど...

下記は除外。既にある程度触った、調査した(and or 興味がない...)ため

  • Pyston(id:Ehren先生が追ってるのでレポート待ってる
  • Numba
  • Cython
  • Psyco
  • RPython
  • MicroPython
  • PyMite
  • tinyPy

メジャー

下記は除外。主観だがメジャーなため

うーん???

知らなさすぎて分類不能。

  • MyPy

最近やったこととか、次にやることを整理

ざっくりでもどこかにアウトプットしとかないと興味がガンガン移ったりするのと、頭からフラッシュしたいので。

やったこと

コード書いた

書いたというか、この前のjava-ja.ossの和田さんの発表を聞いて、継続的に書き始めた。
Cythonがだいぶ面白い。

「コード書いた」からはずれるけど

Emacsでjedi.elはPythonではよさげだった。

技術書

実践ドメイン駆動設計

実践ドメイン駆動設計

Learning NGUI for Unity

Learning NGUI for Unity

NGUI for Unity

NGUI for Unity

ゲームを動かす数学・物理

ゲームを動かす数学・物理

改訂3版 パーフェクトC#

改訂3版 パーフェクトC#

[asin:4873117313:detail]

歴史の基礎力向上

豊後国風土記・肥前国風土記

豊後国風土記・肥前国風土記

やれなかったこと

TODO、Keep

コードを書く

具体的には、通信周り、オブジェクトの物理挙動を学習用途で。C苦手なのでC or Cythonで。
「コード書く」から外れるけど、macの/usr/include/*.hを読んだことなかったのでCythonで遊びながら読む。
mrubyとかCythonで組み込むと面白いのかな。

技術書

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

Hacking: 美しき策謀 第2版 ―脆弱性攻撃の理論と実際

直系ご先祖の戸籍取寄せ

保管期間150年というのが定められてるから、古いのどんどん追えなくなるので。
行政書士司法書士に頼むか、自力で取り寄せるかは未決。

IPAの情報処理資格

トライしよう。知人が受けた姿勢を真似て

NLP

...oh...アウトオブレンジだった...のを整理してて思い出したでござる