はてなキーワード: printとは
Windowsマシンでしてるゲームのツール作るかーってなったからゴミ溜めあさったらPython環境が出てきたからそれで作ることにした。
別に誰が困るわけでも無しにまあいいかよろしくなあ!と書きはじめたんよ。
んでいろいろやりたいことが出てきてそのライブラリを探す。
しかたなしにリリースやタグを辿って2系をサポートしてたバージョン探して落とすの。
あ、pipとか使ってないしね。
誰も困らないと書いたけど環境的に自分が困るんだわ。でもべっつにーそれで3に上げる気になるわけでもない。
しかし海外のライブラリ、かな。すごくリリースノートとかchangelogが書かれてるんだよね。
勝手な印象だけど日本人のライブラリはリリースノートとか書かない人が多い印象ある。
あと日本人はバージョンを下に刻みすぎて2.xになってるのが稀とか多い。0.0.1で初リリースとか何年経っても0.1.10とか。
まあだから困ったけどどれもサポート切りを明記してくれてたから全然手間取らなかった。
良いヤツは最新版でも2.7以下はこのバージョン使えってれあどに書いてくれてるし。
そんでうーんうーん言いながらなんとか手で作業していた部分をすこし自動化できるツールができた。
コンソールに日本語が文字化けして出ちゃうからそこはこっちがローマ字で書いてやる妥協もあったけど。
毎回、かなり時間を書けてプログラムを書いて、これペイするのかなとモチベーションが上がらないんだけど完成したらすごい便利になるんだよね。
重い腰を上げる。プログラミングをするときにはギリギリできるんだけど、プログラミング言語のバージョンを上げるときには腰が上がらないんだよなー。
このまま俺は一生Python3ができない腰重おっさんとして生きていく気がする。手癖はprint hogeだぜー。
ぱいぱい。
やあ。年末に場末の家電量販店でプリンタを売るバイトをしている者だよ。
ITmedia さんのプリンタ記事がちょっと雑だったんでツッコミを入れてみるね。 https://www.itmedia.co.jp/news/articles/2204/29/news070.html
一方家庭用として、年賀状やラベル印刷に活躍したプリンタは今やほとんど需要がなくなっている。筆者宅でも、月1回、部活動の練習計画をプリントアウトするぐらいで、出番がほとんどない。ほとんどない割にはかなりの重量と場所をとっている。
先日、久しぶりに東京に行くので名刺を刷ろうと思ってプリンタを起動したところ、黄色が印刷されない。これまでモノクロプリントしかしてこなかったので気がつかなかったのだ。何度ヘッドクリーニングをかけても全然出ない。ヘッド自体がもうダメなのかもしれない。
これはインクジェットプリンタあるあるだね。売り場では「故障を避けるために月1回は印刷してくださいね〜」と案内しているよ。小寺さんはモノクロがメインということだったから、黄色が詰まっちゃったんだね。
こうなるとインクを替えてもだめだから、買い換えるしかないね。インクがヘッド一体型のやつか、インクヘッド交換型だったらなんとかなったんだけどね。
最初は1万円内のシンプルなプリンタ専用モデルで検討した。ドキュメントスキャナーは別途ScanSnapがあるので、複合機でなくてもいい。ただ、妻が時々スマホからプリントしたいという要望があるので、スマホから直接プリントするという機能は必須である。
エプソンにもキヤノンにも、1万円以下のエントリーモデルはあるが、スマホからのプリントに非対応ということで早々に断念。もうちょっと上位のクラスでないと、その手の機能は搭載されないようだ。
これはちょっと語弊があるね。というのも、家庭用プリンタの主戦場は複合機で、プリンタ専用モデルはそもそも種類が少ないんだ。
価格コムで調べたけど、1万円以下のプリンタ専用モデルでスマホに対応してなさそうなのは "TS203" "PX-150" "PX-105" の3種類。そのうち PX シリーズはビジネス向け、 TS203 はそもそも Wi-Fi に対応していないね。
複合機だと "TS3530" とか "EW-052A" は1万円未満かつアプリに対応しているよ。
これはもう1年以上こんな感じだね。
真ん中の島に、今年発売の新モデル、それも3万円以上の複合機が決め打ちで山積みされている。つまり急ぐ客には全部それで対応、というわけである。ポップに値段を記しておらず、値段で引かないようにということだろう。
これは店舗さんによって差異があるからなんとも言えないけど、値札の貼り忘れなんじゃないかな? 写ってるのは TS8530 だから、だいた3〜4万円の主力商品だね。
店員さんを捕まえて、スマホから印刷できるカラー機で、複合機じゃなくていいんだけど、と伝えると、1台だけエントリー機で在庫があると出してくれたのが、Epson「EP-714A」だった。2022年2月発売、値段は税込み2万円ちょっとだったので、ネットの最安値と700円ぐらいしか違わない。
"EP-714A" は複合機だよ。そもそもプリンタ専用モデルの在庫がなかったのかもね(増田が働いていた12月も常にそうだった)。家電量販店とネットのプリンタの値段はほぼ変わらないのは確かだよ。
「EP-714A」は最大がA4なので、サイズ的には以前の「EP-976A3」より一回り小さく、軽い。10年ぶりの新プリンタなのですっかり浦島太郎状態なのだが、セットアップはPCに接続することなく、ディスプレイ部に表示されるQRコードを読み取って、スマホを使ってオンラインで可能である。
よって電源コードは付いてくるが、USBケーブルは付属しない。スマホでセットアップできない、要するにネットがない環境の人向けに、ドライバやソフトウェア等が入ったCD-ROMは付属するが、今どきTypeBのでっかい端子のケーブルなんてなかなか持ってないのではないだろうか。
ちょっと意味不明な内容になっているね。USB ケーブルは前使っていたプリンタから流用できるから、高級機種でもついてこないよ。むしろ CD-ROM がついてこない機種もあるよ。CD ドライブのないパソコンも今や多いからね。
以前Epsonのプリンタは、Epson Printというアプリからスマホ印刷に対応した。だが本機はEpson Printは使えず、LINEの特定のアカウントに対してファイルを送るとそれが印刷されるようになっている。メール添付でも同様だ。コンビニ向けのネットワークプリントサービスを利用した方はご存じかもしれないが、やってることはそれと同じである。
印刷するのに専用アプリを使わないので、スマホのバリエーションやOSのバージョンに逐一対応する必要もない。プリンタ全盛の頃は開発もメンテナンスコストもかける意味があったのだろうが、今となってはすべてクラウドにまとめられた。
"EP-714A" はスマホアプリ "Epson Smart Panel" に対応しているね。プリンタによって OS 対応が違ったりするから、売るときは気を遣うよ。
コロナ直前まで、家にPCがない、あっても古いという家庭が増えて、PTAや子供会などの活動に支障が出るようになった時期があった。なぜ支障が出るかというと、紙の書類の更新や手直しができないからである。
だがコロナ禍でテレワークが主流になると、そこそこ新しいPCが家にあるという状況が戻ってきた。ところがプリンタの立ち位置は、前と同じポジションではいられなくなった。今どき紙の書類を保護者に配付する方法がなく、PDFを作ってLINEで流して終わりになったからだ。
むしろコロナ禍で学校や塾のプリントを印刷する機会が増えた、という理由で買うケースが増えたよ。それまではプリンタの買い替え需要が多いのは12月だったんだけど、コロナ禍でそれ以外の月でもよく売れるようになったんだ。だからプリンタ各社はインク大容量モデル(エコタンク、ギガタンク等)を売り出しているんだね。
今回のプリンタは、名刺を印刷するために買ったようなものだが、その習慣もいつまで残るだろうか。このプリンタもあと10年使うと考えたら、もはや人生最後のプリンタがこれ、なのかもしれない。
在庫がなかったから仕方ないけど、名刺を刷るならブラックは顔料インクのモデルにしたほうがよかったね。染料インクは発色はいいけど、水ぬれに弱いよ。
最近は給湯器みたいに「故障したら数ヶ月入ってこない」みたいなものが増えたけど、プリンタもそんな感じだね。長く使いたいなら定期的な印刷を、そうでなかったらもう割り切ってコンビニプリンタにしちゃうのがいいかもね。12月にプリンタを買いに来るお客さんの半分以上は「しばらく使ってなかったら壊れてた」だよ。いっそ大容量モデルにして、付属するインクで元取っちゃうのもありだね。
あと店員さんには優しくね。
プログラミング未経験から1ヶ月ほどで、将棋の評価値の新たな方法でのグラフ化を行うPythonツールを作った。
https://github.com/k-the-p/notherscore
この記事は2本立てです。プログラミングより結果のグラフや将棋に興味がある方はもう一方の将棋編から読むことをおすすめします。
未経験から1ヶ月!Pythonで観る将ライフを向上させた話(将棋編)
AIはわれわれアマチュアの将棋への親しみを大幅に向上させてくれた一方で、棋士が悩みに悩んだ結果として評価値が下がる手を指してしまったときに、「悪手きたwwww」と騒ぐ主にABEMAのコメント欄には忸怩たる思いがあった。
とはいえ、もう評価値を知らなかった時代に後戻りするなんてことは誰にもできないだろう。そして、電王戦から将棋にハマった自分自身としても、AIを否定はしたくない。
であるなら、AIを用いた新しくよりよい将棋の楽しみ方を探っていくしかないのではないか。
以前から私は、「AIの手を指せるなら人間も苦労しないんだよなあ」と思っていた。あるとき藤森哲也先生がYoutubeチャンネルで言っていたことを聞いて得心がいった。「AIの一手は最強の一手なんです。確かにプラス1000点になるけど一手間違えた瞬間にマイナス何百点になるような綱渡りの手。それよりもアマチュアの皆さんにはプラス数百点で得は少ないけど安全な道、最善の一手を学んで欲しい」(大意)と。
ここで言う「最強の一手」に人間にして最も近いのは紛れもなく藤井聡太四冠であろう。藤森先生はアマチュアに向けて喋っていたが、その葛藤は間違いなくプロの中でもあるはずである。渡辺明三冠が言うように「藤井くんと全く同じスタイルを今から目指しても絶対藤井くんより強くなれない」のは自明であるからして。
私はここにドラマがあると思う。また、最強の一手と最善の一手が等しく「いい手」に見えてしまうわれわれアマチュアとしては、そこを機械に教えてもらえるのであれば、棋力向上にも繋がりそうである。
第1候補手と第2候補手の評価値の差を取ってグラフ化すればよさそう?
(差が小さければ手が広い、差が大きければ絶対手に近い、綱渡り)
目指すのはあくまで便利な将棋ツール。将棋AIを作りたいわけではないので、将棋AI自体は局面を入れたら評価値を吐く謎の箱という扱いでよい。
グラフ化や数値の扱いだけでなく、将棋AIとのやりとりをやってくれるあれこれもあるようなので。
あと習得が楽だと聞いた。その話を教えてくれた人はもう10年間英語学習法をブクマし続けてるけど。
あと「読みやすいコードじゃないと動かない」って設計思想がかっこいい。ついでに言うといわゆる「おまじない」が少なそうなのも魅力。(CのHello worldで挫折した経験あり。studio.hって何……)
プログラム講師をやっている?方が音楽制作を初歩からやってみる、という(残念ながら)リアルタイム視聴者が俺だけしかいないような配信があったので、音楽の基礎(についての知識は持っていた)を教えてあげたお返しのような形で、「pythonでこういうことがしたくてこういうライブラリがあるのはわかった。経験はHTML+CSS(変数導入前、Bootstrapなんてなかった)のみ。どうしたらよいか」という質問をしたら、「progateは簡単すぎると思うのでPaizaが丁度いいのではないか」というアドバイスを頂き、比較もせずに即登録したのだが結果的にはこれがドンピシャだった。
最近流行りの、環境構築不要で講座の内容を書いて覚えるタイプのサイト。
無料で入門講座の序盤を受けていたらふと目に入ったのが、「対象者:これからプログラミングを学びたい方。HTMLがどのようなものかを知っている方。」でYoutuber先生のオススメ完璧か?と思った。そして実際に完璧だった。
基本的に1講座3分+演習1~2問+やりたければ問題集たくさんという形式なのだが、これが簡単すぎることなく難しすぎることもなく、俺の知識レベルにベストマッチだった。基本的に毎回何か書くことになるので、変数とは~みたいな解説だけで終わる回がほぼ無いのも飽きなくてよい。
Python入門(と言ってはいるがまだこれだけで発展編はない)の見出しは「プログラミングとは」「条件分岐・比較演算子」「ループ処理」「リスト」「辞書」「多次元リスト」「関数」「クラス」「クラス発展」「例外処理」に各5~8講座*3分+演習、という感じ。クラス発展の途中で行けそうだと思ったのでドロップアウトして実製作に移った。実際関数まで理解していれば、この程度の小さなツールには十分だった(もしかしたらクラスを使えば多少楽になった場面はあったかもしれないけど)。
また、これは書いてる今気づいたことだが、上のコースで学んだことで、実際に役立たなかったものはほとんどなかった(強いて挙げれば辞書くらい?使えてないだけかも)。このこともコース構成の優秀さを示している。
ここまででだいたい2週間くらい。
もともとこのサービスは知っていたのと、谷合先生が実際に使っていたように、便利そうなライブラリのcshogiが主にcolab(jupyter)上で動かすことを意図しているようだったので、まずここから入った。最初はcshogiが列挙してくれる特定局面での合法手をリストに入れて、そのリストの項目数=その局面での合法手の数を出力することから始めた。これは本当に簡単にできて興奮した。
学習と好きなことが直結してると、こんなサンプルコードみたいな簡単なことで喜べるのでコストパフォーマンスがよい。
cshogiのチュートリアルで紹介されているレサ改というAIがどうもmultipv(有望な候補手を2手以上挙げる)に対応してないらしく、強さ的な問題でいずれ手を出すつもりだった予定を繰り上げてやねうら王との連携を試みる。
makeって何?あー、もりかしてMakefileが無いと動かない?(これを書いている今もこんな理解である)みたいな人間でもなんとかやねうら王をビルド?することはできた。レサ改をcshogiに読ませる数行のサンプルコードがとても役に立った。今でもあの完成品らしき拡張子が無いファイルがなんなのか分かってない。(なお、評価関数nn.binが無いと怒られたのでどこのご家庭にもある水匠4のそれをぶち込んだら動いた。評価関数とやねうら王の分担は今もって理解があやふや)(また、途中でAyane[やねうらお氏謹製ライブラリ]も使おうとしたがcolab上では上手く動かす方法が分からなかった)
一応これでcshogiで局面の最善手と次善手およびそれらの評価値を呼び出せるようになったのだが、単にdebugでずらずらと余計なものまで出力するのではなく、重要な指し手周りのinfoだけ出力するようにしようとしたが、上手いやり方がわからず、結局こうなった。
sys.stdout = open('out.txt', 'a') engine.go(listener=print)
ここは絶対もっとマシなやり方があるはずなので、識者の教えを請いたい。
Colab上でまあまあ目処がついたので、この辺りでPythonの環境を作った。ここまでそれをやっていなかった理由は、「おま環」トラブルの可能性をなるだけ遠ざけておきたかったからである。環境が悪いのか俺が悪いのか分からない、というのは初心者にとって限りなきストレスである。あーネットが繋がらなくてルーターの設定や接続とか支払いとか文字通り部屋をひっくり返しながら調べてたら実はフレッツ自体が落ちてた件を思い出してイライラしてきた。cshogiはJupyter上で動かすことを意図しているようなので、それで動かなければ自分の書き方が間違っているのだとほぼ確実にわかる。
まあこの辺りはいろんなサイト見ながら仮想化などしつつ普通に。仮想化が何か分かってないんですけど。
これまでColab上で書いてきたものは多少の書き換えで動いたので、ローカルにJupyter notebookをインストールして、数字の計算とグラフ化を試みる。
ちなみにこの時点で得られているデータはこんな感じ。
go info depth 1 seldepth 1 score cp -47 multipv 1 nodes 483 nps 241500 time 2 pv 3c3d info depth 1 seldepth 1 score cp -86 multipv 2 nodes 483 nps 241500 time 2 pv 4a3b info depth 2 seldepth 2 score cp -53 multipv 1 nodes 847 nps 423500 time 2 pv 3c3d 9g9f info depth 2 seldepth 2 score cp -68 multipv 2 nodes 847 nps 423500 time 2 pv 8c8d 7g7f info depth 10 seldepth 17 score cp -78 multipv 1 nodes 100163 nps 1963980 time 51 pv 8c8d 2f2e 4a3b 7g7f 3c3d 2e2d 2c2d 2h2d 8d8e 6i7h 8e8f 8g8f info depth 10 seldepth 17 score cp -111 multipv 2 nodes 100163 nps 1963980 time 51 pv 3c3d 7g7f bestmove 8c8d ponder 2f2e go info depth 1 seldepth 1 score cp 117 multipv 1 nodes 206 nps 206000 time 1 pv 2f2e info depth 1 seldepth 1 score cp 78 multipv 2 nodes 206 nps 206000 time 1 pv 7g7f ...
今回の小目標は、goで区切られた中から下から2行目と3行目のcpほにゃららを取得していい感じのリストにする、というものだ。この辺りは正規表現でなんとかなるだろうと見通しを立てたが、実際そうなった。
ただ、後手が見たときの評価値が後手目線なので、それだけにマイナスをかけるのはどうするか(そうしなければ、先手+3000点の次が「後手から見て」-2900点だったりして綺麗にグラフにならないのだ)を調べるのに結構時間が掛かった。
また、詰み周りでまたプラスマイナスやカンストの絡む計算をしたくないのもあり、数値にNaNを入れてグラフ表記を省略することにしたのだが、そうするとnumpyの関係で整数(とNaN)しか扱わないのに浮動小数点で計算しなければいけなくなって若干気持ち悪かったり。まあ動くのでヨシ!
この時点で、ローカルにKIFファイルを保存し、pyファイルでcshogiと水匠を動かし、Jupiter notebookを開き評価値グラフと手の広さのグラフを重ねて表示する、というそれなりのものは出来上がった。
簡単に言えばpyファイルで1手10万局面(森内チャンネルに出てたHEROZの方が使ってた数字をそのまま使っているので特に意味は無い)探索させ、最善手と次善手についての生の評価データを吐き出させ、ipynbでそれを整形し、グラフ化している。
基本的に全部VSCode上でできるので、慣れれば計算時間も含めて10数秒で結果が出るのだが、このワークフローはいかにも美しくない。
なので、Flaskという簡単らしいフレームワークを使ってローカルでWebアプリとして使えるようにしようと思った。inputとoutputをどうにかするだけだから余裕やろ。
Google colabを触り始めてからここまで1日。圧倒的成長!
Paizaラーニング再び。後半ではデータベースとか本格的な話もあるようなのだが、txtに書き込む一行掲示板を作るまでの前半部を高速で履修(演習は全部飛ばした)。なるほどー、こうやってやりとりするのね、と最低限は完全に理解した。
Jupyter向けのコードを普通のPythonに直してあっちで数字を出してこっちでそれを受けて元に戻して……とかやってると循環参照か何かで怒られることに。その対策に細かく部分を分けて関数にしたのだが、その場合ってもしかしてdefの内部しか読まれない?(共通部分も読まれると思ってた)(いや、共通部分は読まれるけど他のdef内が見えないのか?何も分からん)なるほど。こうなると関数の内部から上に戻るためにクラスとか欲しくなるのかなーという感想。
最終的にWebに公開しようとこの時点では思ってたので、txtに一旦出力するのが安全性的にどうかとか考えてたのだが、テキストの読み取り周りでハマる。結局抜け出せず諦めた。
以降は、HTMLにダブルクオートが抜けてるのに一時間気づかないとか、FlaskのXSS対策の対策をするとか、ファイルの書き込み設定をミスって2万手くらい蓄積されて評価値グラフが大変なことになったが、原因に気づかずひたすらグラフ生成部を調べ続けるなど、非本質的な問題にかかずらっていたので書くことは特にない。
なので、最初にgitignoreしてなかったせいで1万ファイルくらい上げそうになったけど、それ以外は特に問題も無く。中間報告からここまで2日ほど。結局1ヶ月かけずにプログラミングをそれなりに身につけることが出来た。「プログラムを覚えたければ作りたいものを見つければいい」というのは本当だな、と改めて思った。
https://anond.hatelabo.jp/20220107060727
どれくらい書けるようになったのか、を見たい方は主にvalue_output.py(将棋AIに思考させてデータを取り出す)とgraph.py(データを整形してグラフを書き出す)を見ていただければいいかと思います。
最初にPaizaを教えてくださったYoutuberの方、cshogiを初心者でも使いやすいように作って展示してくださったTadaoYamaoka様、水匠開発者のたややん様、水匠含めこんにちの将棋AIの基盤を作ってくださったやねうらお様、cshogiを通して利用したpython-shogiのKIFパーサーを書いてくださったTasuku SUENAGA様に、厚く御礼申し上げます。
これは楽天モバイルアドベントカレンダーの出遅れ記事です。嘘です。すいません。
インディアンスの楽天モバイルネタ最高だったのでこの記事を書きました。
1プランでわかりやすい料金体系、最低金額は無料、契約して1年間無料というすごい携帯キャリアです。
私は今年の3月から使っており、その品質には概ね満足していました。ところが11月中頃(曖昧)から楽天モバイルの圏外が頻発するようになりました。
ローミング終了に伴い一部エリアでは使えなくなるかもという話は知っていましたが、私がいるのは都内の3線利用できる駅前エリアで今ままでもパートナー回線を使ったことがありません。
おかしいなーと思いつつちゃんとログを取ろうと思い、楽天モバイル端末のWiFiアクセスポイントをONにして手元のノートPCから疎通確認をしてログをとることに。
楽天モバイルのDNSが落ちたことはあった時はDNS設定いじればどうにかなったけど、そもそも圏外はどうしようもありません。
crontabもないし、shじゃないし、tail,awk,uniqもないし面倒でした。
5分に一回 1.1.1.1 にpingを飛ばしてその結果をログに残しました。
以下はbatで書いた処理
@echo off ping -n 1 1.1.1.1 | findstr /i "TTL" > nul if %ERRORLEVEL% equ 0 ( set ret=success ) else ( set ret=failure ) echo %date% %time% %ret% >> %~dp0check_net.log
-- tail -3 相当のps type .92;check_net.log | select -last 3 2021/12/27 22:20:02.44 success 2021/12/27 22:25:06.00 failure 2021/12/27 22:30:05.99 failure -- awk '{print $1, ":", $3}' | uniq -c 相当のps type .92;check_net.log | %{$tmp=($_.toString() -split("92;s+"));echo ($tmp[0] + ":" +$tmp[2])} | group -NoElement Count Name ----- ---- 143 2021/12/19:success 6 2021/12/19:failure 208 2021/12/20:success 81 2021/12/20:failure 279 2021/12/21:success 9 2021/12/21:failure 221 2021/12/22:success 67 2021/12/22:failure 101 2021/12/23:failure 188 2021/12/23:success 277 2021/12/24:success 12 2021/12/24:failure 144 2021/12/25:success 69 2021/12/25:failure 287 2021/12/26:success 2 2021/12/26:failure 43 2021/12/27:failure 225 2021/12/27:success -- 時間ごと type .92;check_net.log | sls failure | %{echo $_.toString().Substring(11,2)} | group -NoElement | sort Name Count Name ----- ---- 21 0 17 1 19 2 20 3 40 4 47 5 42 6 41 7 21 8 9 9 17 10 14 14 18 15 8 16 23 17 14 18 6 19 1 20 6 21 7 22 5 23
ログが不十分なのは途中でログファイル消しちゃったのと、ノートPCを閉じちゃってタスクスケジューラが止まってたタイミングがあるため
途中まで `findstr /i "TTL"` がなかったのでsuccessだけど実際は疎通できてないものがあります(pingの宛先ホストに到達できませんはsuccess扱いだった)
12/23がひどい。1日の35%繋がらない。「日本のスマホ代は高すぎる」けど繋がらないんじゃ意味ないんよ。
11~13時台は落ちてない。逆に何故。
5分に一回の計測なのでたまたまそのタイミングだけ疎通したりしなかったりってのはあるけど、その割合は落ち具合の体感と一致します。
テザリング利用では1日10GBの制限があるらしいですが、制限には引っかかっていません。
今も利用しているのは無料期間中なのと、楽天モバイル回線はYoutubeとかネットサーフィンとか止まっても許せる範囲で使っているからです。
これをメイン回線にしてたら緊急の連絡とか取れないだろうし、だいぶ困りそう。
書き込もうとしたけど、楽天モバイル回線は圏外で書き込めないので別の回線で書き込んでます。
RSRQは-15でした、どいひー
はじめまして.UEC18のExit(@ExitBowie)です.普段はゆ虐を嗜む鬼威惨としてTwitterにおります.
この記事はUEC Advent Calendar 2021の16日目の記事です.昨日の記事はしらたきさんによる「pwndbgについて」でした .
無限にprintデバッグばかりやってる自分から見ると雲の上の記事でした.
さて,開始1行でAnonymous Diaryの特徴をふいにしてしまいました.アドベントカレンダーの参加は初めてですが,その初めてを増田に捧げることにしました.
他のAdvent参加者のドメインを見るとnoteやはてなブログ,独自ドメインのサイトなど個性がでていいですね.
ありそうな質問
Q. なんで増田なの?
と,思ってたんですが...サーベイの結果,先行研究が見つかってしまいました...
Q. なんで遅れたの?
A. 増田の下書きがサーバーに保存されているものと思って,自宅PCで下書き書いたままラボ泊してました...
(ガチの「やったけど持ってくるの忘れた」です)
Q. ゆゆっ!
A. ビキィ!!
本稿では,卒業さえできれば教員免許取得が確実となった私(ExitBowie)が教員免許を取るために追加で必要となった出費について調査した.
筆者の先行研究(【電通大新入生へ】教職はいいぞ - 未ざらし紀行)では,教職課程の履修に追加料金が必要ないとしているが,実際に免許を取る際には細々とした出費も多くある.
そこで,それらの合計を計算し,免許のための出費を明らかにした.
出費を頑張って思い出した.思い出せなかった分はTwitterやGooglePhotoの記録やAmazon,メルカリ,ヤフオクの購入履歴を確認した.
本稿における出費の対象は教員免許取得を目指したしたことによる追加の支出とする.したがって教育と憲法やコンネトのような,教員免許取得には必須だが卒業所要単位に含まれる科目の教科書への出費は対象外とする.
内容 | 出費 | 備考 |
---|---|---|
図書 | ||
スタンダード教育心理学 | \496 | 中古.教育心理学の教科書.aoym先生の教育心理学はマジで面白いので免許取る気ない人にもおすすめ. |
教育の制度と歴史 | \200 | 酉(@FIREd146)と町田のブックオフ行ったときに見つけた教育原理Aの教科書 |
社会を結びなおす | \562 | 新品.一部ではシャカムスと呼ばれる教育制度論Bの参考図書.「わかっていたはずのことがわからなくなる楽しさを経験できる」 |
自ら学び考える教職教養 | \780 | ブックオフで買った教育課程編成論Aの教科書.この本の内容を輪講プレゼンテーションした. |
情報科教育法 改訂3版 | \900 | ヤフオクで買った情報化教育法Ⅰの教科書.筆者はなんと,久野靖(@ykuno) |
実践マルチメディア | \333 | マルチメディア処理の教科書.明らかにメルカリの外れ値価格で買えた(けど使わなかった) |
数学Ⅱ Advanced | \300 | 教育実習先の教科書.メルカリで買った. |
図書小計 | \3571 | |
その他費用 | ||
介護等体験費用 | \11098 | 特別支援学校へ2日,福祉施設(だいたい高齢者施設)へ5日間赴きます.そのための費用と体験ノート(強制購入)を合わせた価格だったはず. |
教育実習費 | \12000 | 実習校への上納金.学校によって価格差あると思う.本当は2万だったけど,電通大が上限8000円を払ってくれるので差額の12000のみ支払った. |
免許発行手数料 | \9900 | 免許1件あたり3300円必要.私の場合,中学数学・高校数学・高校情報の三種のチーズ免許特盛に温玉付きだったので9900円. |
その他費用小計 | \32998 | |
合計 | \36569 |
以上.
教科書は中古でそろえたので安かったですが,事務手数料などはバカにならないですね.免許はいらないけど教職科目は履修したいという人は安上がりで済むと思います.
ただ,教科書を新品でそろえても5万程度で中高数学と高校情報の教員免許が取れるのは魅力的と言えるのではないでしょうか.
特に,教員免許更新制度が終了確定演出きているのでアツいと思います.とりあえず取っておきましょう.
教職課程履修のメリットについては(ここ)にまとめています.1,2年生の方は今から始めても間に合うと思うのでいかかでしょうか?
あと本当はもっと画像URLモリモリだったんですけど,スパム判定になるらしく泣く泣く消しています...
明日はおか(@oka_0429)くんの記事「iPadだけで大学生活を乗り切る。」です.彼はFF外ですが,ときどきツイートが流れてくるのを拝見しています..
教育実習校でiPadの貸し出しがありましたが,なかなか便利でしたね.私的には価格から考えると買いたいとは思えませんでした...
色々なぶくまで紹介される Python 等の資料について、一応初心者は脱している身として、私見を元に初心者に向けたおすすめ度を紹介していく。
URL: https://www.python.jp/train/index.html
Python 情報サイトの老舗である Python Japanの初心者向けコンテンツ。若干覚える量が多いので挫折が心配になる分量ではあるが、普通の初心者を意識した内容であり、初学者にもおすすめできる範囲の内容と考える。
勿論、有償の書籍のほうが充実したものも多いだろうが、無償の中では比較的初心者向け。
URL: https://paiza.jp/works/python3/primer
動画で学べるのとそこそこの範囲を網羅しているのと、環境はサービスが提供しているのでインストール周りを気にしなくていいのがメリットとなる。
逆にいうと説明が音声のみなので自分のペースで進めたい人には少しもどかしいかも知れない。
有料サービスに申し込むとエンジニアに質問ができるということなので詰まった時にいいのかも知れない
(とはいえ初心者の質問であれば、teratail 等で訊けばいいと思う。世話になった分のチップ的な課金ならアリかも知れない)
URL: https://atmarkit.itmedia.co.jp/ait/subtop/features/di/pybasic_index.html
他の言語をかじったことがある人が詳細を知りたい時には便利だが、初心者にはちょいちょい分かりづらいところがある。
特に第一回目はわからないところは無視してスルーしないと、難しそうな資料だと勘違いされそうなので、構成もう少し考えればいいのにと思う。
このレベルの情報が無料公開されているのは純粋に素晴らしいと思える。
URL: https://mitani.cs.tsukuba.ac.jp/book_support/python/
「Python ゼロからはじめるプログラミング 」の著者が、著書の副読本的にまとめたPDF(スライド)が公開されたページ。網羅性も高く、図解もありそれなりにわかりやすい。
ただし、著書を教科書として授業する際に便利な資料として想定したものと思われ、詳細な解説は著書を参照という内容になっているため、初心者向けかと言われると少し悩んでしまう。
プログラムに関する知識がまったくない人であれば、先に紹介している paiza ラーニング か @IT のコンテンツで基本を押さえて、その後で振り返りとしてスライドを参照するのが良いかと思う。
あるいは、著書を買うかどうか参考にするためのサマリーとして割り切って読み進めるのが良いかも知れない。
URL: https://www.stat.go.jp/teacher/comp-learn-04.html
VIA:b.hatena.ne.jp/entry/s/twitter.com/tankazunori0914/status/1451365384238428161
これは Python というよりAI関連の話が中心となった資料で、7章におまけ程度にPythonの基礎も扱われている。
機械学習をやりたくて Pythonを始めようという方も一定数居るだろうから、Pythonをある程度押さえた上であれば有意義なコンテンツと思われる。
コメント時は軽く眺めた程度だが、後でちゃんと精読しようと思える程度にはまとまっている。
URL: https://utokyo-ipp.github.io/
既に元増田に書いた通りだが、東京大学の学生向けの資料であり、遊びがなく、万人向けとは言い難い人を選ぶ資料である。
よって、最初の講座としてこの資料を選ぶのは、学校の教科書・学業が大好きで、読むのが苦にならないという人だけが推奨で、それ以外の人は避けよう。
とはいえ、よくまとまっているいい資料なので、ステップアップの際に復習を兼ねて目を通す分には悪くない。
URL: https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/265459/1/Version2021_10_08_01.pdf
例の3000ブクマは2019年の資料だったが2021年の資料が掲載されているので、掲示はこちらを採用した。
イラスト等も交えて丁寧に解説しているが、本題の前にコンピュータ史のようなコンテンツがあったりするのがアカデミックな資料だけあるなという印象。
あと例えば以下のようなコードがある。(資料92ページより引用)
# x の平方根を求める
x = 2
#
rnew = x
#
diff = rnew - x / rnew
if (diff < 0):
while (diff > 1.0E-6):
r1 = rnew
if (diff < 0):
※コードのインデントがうまく働いてくれなかったので仕方がなく全角スペースで表現している。不等号も全角に変えている。コピペなどの際には注意されたし。増田記法よくわからん。Markdownで書かせて!
Python の初学者に平方根の計算という問題を与えてもなぁと。元々は現役の大学生に渡す資料なので普通に解けるでしょうけども。人を選ぶというのはこういうところを加味しての発言である。
URL: https://chokkan.github.io/python/index.html
chokkan.github.io/mlnote/index.html
Python 早見帳も必要なものを一通りまとめたコンテンツになっていて東大のコンテンツに近い。既に東大のコンテンツを試した人であれば新しく試す必要性は薄いと感じる。
機械学習のコンテンツはそれなりにボリュームがあるが、やはリファレンス的な使い方がおすすめで、別の資料で基礎を学んだ後に、知識の定着度を確認するために使うと良いだろうと思う。
URL: www.kunitomo-lab.sakura.ne.jp/2021-3-3Open(S).pdf
VIA: b.hatena.ne.jp/entry/s/twitter.com/tankazunori0914/status/1451365384238428161
自分は公開されたという話があった時に読んだが速攻で挫折した。Python 初学者には必要のない資料と考えてOK。
分析をやっていきたいという人も取り敢えず P14 の練習問題を読んでみて、こういう資料で学んで行きたいと思えなかったら素直に積読しておけばいいと思うの。
ある程度分析問題をこなしたあとのステップアップに使用するのが良いかなと思える資料である。
ひやかし程度にぶくましてるだけなら別にいいのだけども、本当に Python を習得したいのであれば、ある程度「初学者」のためのコンテンツをあたって挫折しないように学習するべきだと思っている。
Python 自体は習得しやすさとかライブラリの充実度とか結構バランスがいい言語だと思ってるので、沢山の人に普及するといいなという思いから、このようなコンテンツをまとめてみた。
誰かの役に立てばいいなぁ。
http://www.lispworks.com/documentation/lw51/CLHS/Body/m_loop.htm
http://www.lispworks.com/documentation/lw51/CLHS/Body/m_loop.htm
type-spec::= simple-type-spec | destructured-type-spec
simple-type-spec::= fixnum | float | t | nil
とあったので「simple-type-spec の所。nil? nil型とは何ぞや!?」と思い、さっそく打ち込んでみたところ
CL-USER> (loop for x nil in '(nil nil nil)) NIL is an unknown keyword in FOR or AS clause in LOOP. Current LOOP context: FOR X NIL IN '(NIL NIL NIL). [Condition of type CCL::SIMPLE-PROGRAM-ERROR]
だよねえ。
CL-USER> (type-of nil) NULL
うんうん。
結局わからずじまいだったが、ひとつ収穫があって destructured-type-spec に基づき of-type を使えば
CL-USER> (loop for (x . y) of-type (fixnum . fixnum) in '((1 . 2)(2 . 3)) do (print (+ x y))) 3 5 NIL
このように書けるのだと初めて知った。
いや、どこかで読んだ記憶あるぞ?
それはそれとして、 of-type を使わなくてもこのように
CL-USER> (loop for (x . y)(fixnum . fixnum) in '((1 . 2)(2 . 3)) do (print (+ x y))) 3 5 NIL
書けてしまえるのでまだ少し混乱している。
Pythonの無言ブクマをよく見かけるのでネットワークに続いてちょっと書いてみることにしました。
東大・京大のコンテンツが初心者向けでおススメという言説を見かけるのだけど、これは本当だろうか。私は人を選ぶのではないかと考えています。
あれは確かによくまとまっているし、初心者向けに制作されてはいるのだとは思うのですが「大学の学生に向けた授業で用いる」内容だということを失念して手放しで称賛しているきらいがあるなと。
私としてはあの資料は以下の前提で用意されていると考えています。
とはいえ、資料を読んだ時の理解度など人それぞれですから、私が勝手にそう思っているだけなのかもしれません。
あの資料が本当に初学者である自分に向いた資料であるのか。挫折せずに続けられそうか。それは10分やってみたらわかると思います。
なのでまずは10分だけでもいいので実際に試してみて欲しいです。
なお、10分というのは、Google アカウントをお持ちの方限定で、AndroidもGmailなど、Googleのアカウントなんて持ってないぜという方は、アカウント作成にプラス10分割くか、Googleに与したくないということであれば似たような環境であるAnacondaを導入してJupyterNotebookを起動させるかのいずれかで試してください。
後者はnotebook立ち上げる前にめんどくさくて嫌になる可能性があるけど、ポリシーの問題だから仕方ないよね。
Pythonの実行環境は色々なパターンが増えましたが、2021年現在で一番お手軽に試せる環境は Google Colab です。異論は認めない。そしていまんとこ無料なので安心して欲しい。
Google Colab:https://colab.research.google.com/
アクセスすると「Colaboratory へようこそ」というページにたどり着きます。
タイトルの直下にメニューが並んでおり、そこから「ファイル」⇒「ノートブックを新規作成」と選ぶだけで新しいノートブックが開きます。このノートブックというのが Python を実行するための環境になります。
もしGoogleアカウントにログインしていない場合、ここでログイン処理が間に挟まるので、その場合は粛々とログインするだけでOKです。
再生ボタンのようなアイコンと、その横にテキストボックスが表示されたと思います。このテキストボックスは「セル」と呼称します。Excelと同じですね。
これは所謂Jupyter Notebookというもので、Google Colabのカスタマイズが施された専用バージョンです。
では、このテキストボックスにまず「1+1」と書いて実行してみましょう。
実行は再生のアイコンをクリックするか[Shift]+[Enter]キーを押下するかのいずれかで行なえます。
結果として2と出れば完璧です。
下にもう1個セルが出てきたと思います。今度は次の2行書いて実行してみましょう。
msg_text = "Hello World!"
print(msg_text)
所謂Hello Worldですね。文字列が表示されたと思います。
ここでお気づきかも知れませんが、最初の1+1はprint()を省いても結果が出力されました。
実はGoogle Colab(とその元になったJupyter Notebook)では、print()を書かなくてもセルの最後の結果を表示してくれる機能があります。
これはPython標準機能ではありませんので、その点にはご注意ください。基本的にはprint()などの表示するための関数が必要で、セルで実行する際には例外であると覚えておいてください。
さて、これでPythonを実行する環境が整いました。多分ここまで5分も掛からずに実践できたと思いますがいかがでしょうか。
Pythonプログラミング入門: https://utokyo-ipp.github.io/
この中から以下の2つをGoogle Colabに写経しつつ実施いただきたいと思います。残り時間でぎりぎり終わるところまででひとまずいいかなと思います。10分頑張ってみましょう。
いかがでしょう。Python楽しそうだと思えたでしょうか。このまま学習を進められそうでしょうか。
まず、このまま続けられそうであれば、この資料は向いている(素養がある)のだと考えます。上記で飛ばした以下の項番も含めて順番に項目をやってください。
私見ですが、この資料は学習順序も考えてまとめられた資料と思われるので、つまみ食い的に興味があるところだけというのは余りおすすめしません。
一歩ずつ進めていきましょう。それだけでPythonの入門は可能です。がっつり時間を割けるなら1週間もあれば入門できてしまうでしょう。
一方で、ちょっと無機質すぎて読みすすめるのに飽きてきたという方もいるのではないでしょうか。必要最低限の情報だけずっと読みすすめるって意外としんどいものです。
そんな人は、少しお金はかかりますが、やはり教科書の類を購入することをおすすめします。
体系的にまとめつつコラムなどを挟むことで読み進めやすいように配慮されたもので、挫折せずに最低限の知識を得るための最初の一歩としては、やはり書籍が良いでしょう。
初心者向けに漫画形式にした入門書もありますし、網羅的にまとまった教科書系も人気があります。
まずは最初の一歩だけ、必要最小限の知識を得るための電子書籍であればこんな本もあります。
https://amzn.to/3lOodKF:Pythonに興味はあるけれどもはじめの一歩をなかなか踏み出せないでいる人のためのPython「超基礎編」
Kindle Unlimited 対象なのでPrime Reading 加入者であれば無料で読めるのでお手に取ってみませんか。
これで駄目そうなら「マンガでざっくり学ぶPython」が良いのではないかなと思います。
https://amzn.to/3aL0819:マンガでざっくり学ぶPython(パイソン)
京都大学の資料も拝見しました。こちらも内容としてはそれなりの網羅性があり、脱・初心者にむけた内容にまとまっているとは思います。
難点はやはりアカデミックすぎるかなというところです。
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/245698/1/Version2020_02_13_01.pdf
東大も京大も「一般的な初学者」向けかというところに疑問符をつけたいのです。2冊目、3冊目辺りの知識強化として用いるのが良いかなというのが個人的な見解で、1冊目はもう少しやさしい内容から始めるというのが良いと考えています。
また、ゼロからの知識習得というものは Web の1ページをつまみ食いしつつ覚えるというのは結構難しくて、それなりに体系化されたまとまった情報を順番に辿るのが近道だという風に私は考えています。
1. 初学者向けのかんたんな Python 本を買う(変数・関数辺りが理解でき、イラストなども交えているのが理想的)
2. 知識補強として京大資料 または東大資料を参照し、復習しつつ 項番1 の本では得られなかった知識の補強を行う(ここで脱・初心者を果たせる)
3. 自分が本当に目指したい分野の知識習得にあたる(項番 2 までで得られるのは汎用的な基礎知識である。画像編集や機械学習・深層学習などはほぼ含まれていない)
そして、項番 1 の候補で挙げた本も250円(Kindle Unlimited対象)と、1,574円です。時給換算で2時間分程度の費用で、右往左往せずに目的地に目指して進むことができると考えたら、そこまで高い買い物でもないのではないかなと考えています。
投げ出したくなるような学習方式に敢えて挑んで、その通り放置してしまうのが一番勿体ないなと思い、この記事を作成いたしました。
なんとなくググったらたどり着きました。Python Japanという老舗のサイトで初心者向けコンテンツを掲載しています。京大/東大の資料より先にこちらを試したほうが良いかなと考えます。試しに覗いてみてください。
ゼロからのPython入門講座:https://www.python.jp/train/index.html
他にも有益なコンテンツが出てくるでしょうから、コンテンツの個人的な評価を anond:20211023221206 の記事にまとめることにしました。
file = open('helloworld.py', 'r') line = file.readline() while line: print line line = file.readline()
https://github.com/kokorohamoe/OpenProfile/blob/simple/700_sample/python/helloworld.py
入力が7の自乗 つまり49 である場合に1 7である場合に0 それ以外の数字である場合-1を表示するプログラムを作れ
#!/usr/bin/python i = input('#') if i==7*7: print 1 elif i==0: print 0 else: print -1
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/python.2/input.py
極簡単には こうなんだけど
じゃぁ なにがいじわるって
文字列がきたら?
いきなり改行コードだったら?
全角で49だったらなどなど
想定外の処理というのが追加になる
しかし、異常な入力をきちんと処理できるか?というパターンは無数にある
これがプログラムの難しさ
file = open('helloworld.py', 'r') lineno = None while lineno != file.tell(): lineno = file.tell() print file.readline()
対して違わないけど数万行だと、すごい違う
file = open('helloworld.py', 'r') line = file.readline() while line: print line line = file.readline()
何が違うか?
前のプログラムは、1行読み込んで、行番号が変わっていなければ
次のプログラムは
読み込みバッファを見て、残りがなければ終了
極簡単な違いだけど
読み込みバッファってなに?
とか、行数が数万行あったらどうするの?
おっきなプログラムだと性能が2倍3倍とかわる
それが、プログラムの怖さ
いじめないでほしいよ
file = open('helloworld.py', 'r') lwhile True line = file.readline() if not line: break print line
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/python/helloworld.py
file = open('helloworld.py', 'r') no = None while no != file.tell(): no = file.tell() print file.readline()
これをわかりにくくはなるがPython的にシンプルに書くとこうなる
↓
https://github.com/kokorohamoe/OpenProfile/blob/simple/700_sample/python/helloworld.py
file = open('helloworld.py', 'r') line = file.readline while line: print line line = file.readline()
管理者として記名はするがコードはソングウェアとする(なんか作業中に聞いている音楽のために1曲買って)
tellってのは、行番号取得だから行番号が変わらなくなったら全部表示したから終わる というのが初心者向けコード
Pytonの機能を使って while line 行がある間ループ って書いちゃえるのが差分 ちょっと覚えることは増えるがPythonはファイル操作に便利な機能が入っているよ
初心者向けに話すのがプロ おぼえとけよ じゃない 感じろ シールドを アンプにさせよ それがアバロンの術
with open("helloworld") as f: for line in f: try: x = int(line) if x >= 0: line = "*" except ValueError: pass print(line.strip())
ワイも初心者やが、ファイルの内容表示するだけならこれでいいのではないかな。
with open('helloworld', 'r') as f: print(f.read())
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/python/helloworld.py
file = open('helloworld.py', 'r') no = None while no != file.tell(): no = file.tell() print file.readline()
https://github.com/kokorohamoe/OpenProfile/blob/master/700_sample/Java/Jurina/reader.cpp
int main(int argc,const char*argv[]){
int v;
char buffer[1024];
while(1){
printf("input\n");
scanf("%s%d",buffer,&v);
if(strcmp(buffer,"print")==0)
fprintf(stderr, "public class base{\n"
"public static void main(String[] args){\n"
"int i = %d;\n"
"System.out.println(i);}}\n",v);
}
return 0;
}
print 1
一番最初の仕様はprint のあとに数字を1つ受け取って それを出力せよ
scanf("%s %d",&name,&v);で処理できる内容とし
int v;
程度とする
これ簡単に作れるよね?
cat filename.jurina
print "Hello world";
public class filename{
public static void main(String[] args){
System.out.println("Hello world");
}
}
と出力するプログラムをjurinaと名付けるとする
cat filename.jurina
int i=1;
print i;
public class filename{
public static void main(String[] args){
int i=1;
}
}
Javaに置き換えて出力するだけのJava プリプロセッサである