「例外処理」を含む日記 RSS

はてなキーワード: 例外処理とは

2022-04-21

anond:20220421165739

その反論は「例外処理」について「クソゲーであるか」という要素を絡めて説明すべきであって

「エアプ!」で批判した気になれるわけではないだろ

anond:20220421164757

例外処理の話になるかと思って見てたらエアプ煽りエアプ否定応酬から呆れてしまった

囲碁ルール例外処理的なやつって

コウ周りだけじゃねえの?

anond:20220421163237

凄いな~

囲碁例外処理が多いかどうかの話かと思ったら、結構早いうちからエアプって言葉が正しいかどうかの話になってる

これが増田クオリティ

もちろん横

anond:20220421163714

からだけど、「エアプ!」「エアプじゃない!」の言い争いやってて虚しくならんの?

そもそもは「例外処理」云々だろ?

おれも囲碁はつまなそうだと思うが、「例外処理があるとクソゲー」は正直よくわからん

具体的にどんなの?

anond:20220421161823

別に囲碁プレイヤー気取りたいわけでも

ガチでやったけど足洗ったマンを気取りたいわけでもない

始めてルール聞いて例外処理ばっかでクソゲーって感想を持っただけ

なにか?

2022-04-03

anond:20220403193006

遠回しな援助だってアメリカ立ち位置を早い段階で明らかにしなかったら足並みそろわなかっただろうしな。

結局のところどこの国もまだ世界の警察に頼ってた時代の考えを捨てきれない。

アメリカ世界の警察から降りた」ということを世界中に明確な事実として示したという意味でも

今回のロシアウクライナ侵略は大きな意味を持つことになる。

「いきなりトチ狂ったロシアに襲われたウクライナは大変だったね」で不運な事故として例外処理して

何事もなかったように今まで通りで行くのか、「世界の警察はもういない」という現実と向き合って

各国が考え方を改めるのか、全く予想がつかない。恐ろしいな。

2022-02-11

Kotlinはcoroutinesの例外処理がクソなのを何とかして欲しいのよなー

C#やそれ由来の他言語のasync/awaitを少しは見習ってくんねえか

2022-01-21

普段タスク管理方法

なんかの機能追加というタスクがあるとまずタスクを分割してTODOアプリ登録する


こんな感じ。できる限り1タスク1~5分くらいで終わる量に分割する

1メソッドが大きい場合例外処理のみ、DB登録部分のみ、メール送信部分のみとかそれだけでもタスクを分ける。

30秒で終わるようなことでもタスクとして独立してたら分けて登録する

タスクを捌く際はタイマーを駆使する

「30分あれば上から12個こなせるな」とか見積もりして該当タスクに印をつけて30分タイマーで都度タイムアタックする

タイムアタックが終わると5分ほど休憩。見積もってた分が30分より早く終わってもその時点で休憩。5分くらい?

Youtube見たり在宅だったらえっちビデオ見たり音楽聞いたり好きなことをする。

終わったらまた30分分のタスクを見繕ってタイムアタック。それの繰り返し

ちなみにSlackで問い合わせとか来た場合はその時点で返信より前にTODOとして登録。何故ならそうしないと絶対返信忘れるから

2022-01-07

経験から1ヶ月!Pythonで観る将ライフを向上させた話(プログラム編)

まとめ

プログラミング経験から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自体局面を入れたら評価値を吐く謎の箱という扱いでよい。

手法

Python一択

グラフ化や数値の扱いだけでなく、将棋AIとのやりとりをやってくれるあれこれもあるようなので。

あと習得が楽だと聞いた。その話を教えてくれた人はもう10年間英語学習法をブクマし続けてるけど。

あと「読みやすコードじゃないと動かない」って設計思想がかっこいい。ついでに言うといわゆる「おまじない」が少なそうなのも魅力。(CのHello world挫折した経験あり。studio.hって何……)

何をしたか

詳しい人に聞く

プログラム講師をやっている?方が音楽制作を初歩からやってみる、という(残念ながら)リアルタイム視聴者が俺だけしかいないような配信があったので、音楽の基礎(についての知識は持っていた)を教えてあげたお返しのような形で、「pythonでこういうことがしたくてこういうライブラリがあるのはわかった。経験HTML+CSS変数導入前、Bootstrapなんてなかった)のみ。どうしたらよいか」という質問をしたら、「progateは簡単すぎると思うのでPaizaが丁度いいのではないか」というアドバイスを頂き、比較もせずに即登録したのだが結果的にはこれがドンピシャだった。

Paizaラーニング

最近流行りの、環境構築不要で講座の内容を書いて覚えるタイプサイト

無料で入門講座の序盤を受けていたらふと目に入ったのが、「対象者:これからプログラミングを学びたい方。HTMLがどのようなものかを知っている方。」でYoutuber先生オススメ完璧か?と思った。そして実際に完璧だった。

基本的に1講座3分+演習1~2問+やりたければ問題集たくさんという形式なのだが、これが簡単すぎることなく難しすぎることもなく、俺の知識レベルベストマッチだった。基本的に毎回何か書くことになるので、変数とは~みたいな解説だけで終わる回がほぼ無いのも飽きなくてよい。

Python入門(と言ってはいるがまだこれだけで発展編はない)の見出しは「プログラミングとは」「条件分岐比較演算子」「ループ処理」「リスト」「辞書」「多次元リスト」「関数」「クラス」「クラス発展」「例外処理」に各5~8講座*3分+演習、という感じ。クラス発展の途中で行けそうだと思ったのでドロップアウトして実製作に移った。実際関数まで理解していれば、この程度の小さなツールには十分だった(もしかしたらクラスを使えば多少楽になった場面はあったかもしれないけど)。

また、これは書いてる今気づいたことだが、上のコースで学んだことで、実際に役立たなかったものほとんどなかった(強いて挙げれば辞書くらい?使えてないだけかも)。このこともコース構成の優秀さを示している。

ここまででだいたい2週間くらい。

Google colab

もともとこのサービスは知っていたのと、谷合先生が実際に使っていたように、便利そうなライブラリのcshogiが主にcolab(jupyter)上で動かすことを意図しているようだったので、まずここから入った。最初はcshogiが列挙してくれる特定局面での合法手をリストに入れて、そのリストの項目数=その局面での合法手の数を出力することから始めた。これは本当に簡単にできて興奮した。

学習と好きなことが直結してると、こんなサンプルコードみたいな簡単なことで喜べるのでコストパフォーマンスがよい。

cshogiとやねうら王をusi連携する

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)

ここは絶対もっとマシなやり方があるはずなので、識者の教えを請いたい。

ようやくWindowsPythonVSCodeを入れる

Colab上でまあまあ目処がついたので、この辺りでPython環境を作った。ここまでそれをやっていなかった理由は、「おま環」トラブル可能性をなるだけ遠ざけておきたかたかである環境が悪いのか俺が悪いのか分からない、というのは初心者にとって限りなきストレスである。あーネットが繋がらなくてルーターの設定や接続とか支払いとか文字通り部屋をひっくり返しながら調べてたら実はフレッツ自体が落ちてた件を思い出してイライラしてきた。cshogiはJupyter上で動かすことを意図しているようなので、それで動かなければ自分の書き方が間違っているのだとほぼ確実にわかる。

まあこの辺りはいろんなサイト見ながら仮想化などしつつ普通に仮想化が何か分かってないんですけど。

Jupyter notebook

これまで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日。圧倒的成長!

ローカルWebアプリを作る

Flaskを学ぶ

Paizaラーニング再び。後半ではデータベースとか本格的な話もあるようなのだが、txtに書き込む一行掲示板を作るまでの前半部を高速で履修(演習は全部飛ばした)。なるほどー、こうやってやりとりするのね、と最低限は完全に理解した

モジュール

Jupyter向けのコード普通Pythonに直してあっちで数字を出してこっちでそれを受けて元に戻して……とかやってると循環参照か何かで怒られることに。その対策に細かく部分を分けて関数にしたのだが、その場合ってもしかしてdefの内部しかまれない?(共通部分も読まれると思ってた)(いや、共通部分は読まれるけど他のdef内が見えないのか?何も分からん)なるほど。こうなると関数の内部から上に戻るためにクラスとか欲しくなるのかなーという感想

最終的にWebに公開しようとこの時点では思ってたので、txtに一旦出力するのが安全性的にどうかとか考えてたのだが、テキストの読み取り周りでハマる。結局抜け出せず諦めた。

以降は、HTMLダブルクオートが抜けてるのに一時間気づかないとか、FlaskのXSS対策対策をするとか、ファイル書き込み設定をミスって2万手くらい蓄積されて評価グラフが大変なことになったが、原因に気づかずひたすらグラフ生成部を調べ続けるなど、非本質的問題にかかずらっていたので書くことは特にない。

GithubVSCodeとなら連携がらくらく

なので、最初に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様に、厚く御礼申し上げます

最後

私は現在仕事Twitterフォロワー募集しています

30歳無職よろしくお願いいたします。

https://twitter.com/k_the_p

2021-12-23

US GAAPに則した非上場株式の処理について

非上場株式の処理。US GAAPに則った場合

・ASU2016-01に則っての処理が要求されるわけだが、この規定有害であり、情報価値を著しく損なう規定である

・従来、市場性のない持分証券への投資は、取得原価での測定が原則であった(公正価値オプションはあったが)。

・ところがASU2016-1の公表2016年1月)によって、公正価値を容易に決定できない持分証券については、原価で評価することができなくなり、原則として公正価値例外処理あり)で測定されることとなった。

・この背景は、次のとおり。

FASBは、資本金融商品については公正価値により測定することが適切であるとの結論に至ったというが、市場関係者は「戦略投資」については、公正価値変動をその他の包括利益(OCI)に含める例外を設けるべきことを主張した。ところが、FASBは「このような例外を含めることは会計処理を複雑にするから」と相手にしなかった。

 → 絶句するほかない。ばかか。腑抜けFASB。知ってはいたが、やはり腐ってやがる。

FASBは、過去IASB戦略投資原則主義的に定義することは困難であり、財務諸表利用者にとっての有用性を増加させるとは限らないにもかかわらず、複雑性が増すとの結論に至ったことも参考にした、とか抜かしている。

 → 有効性を増加させるとは限らないのじゃなくて、情報価値毀損させているんだろうが。

結論)US Gaapは三流の会計基準に堕した。日本基準の方が断然ましである

参考にさせていただいたサイト

https://accounting-agent.com/equity-security-321-10/#ASU2016-01

2021-11-21

anond:20211121084140

コード?書く?例外処理

コンセントに刺さってる電源コードみたけど、増田の言ってることよくわからなかった。

anond:20211121082514

コード書いてる人が多いんじゃないかなとなんとなく予想。

常に例外処理意識してるから言葉定義例外に敏感なんだと思うし、文脈をあえて読まずに文章どおりに解釈をする。

なのでコード書かない人から見たら揚げ足取りに見えるんじゃないかな。

2021-09-25

マクロ化できたということは、正しくマニュアル化できたということでもある

担当者レベル野良マクロを書きたくなる業務というのは、大概ややこしいのである

無駄に手順が煩雑だったり、分岐例外処理の山なのである

引き継がれた通りにやったら、ここが10以下の時はこっちにしなきゃいけないとか言われる。

それどこに書いてあるんですかと聞くとどこそこのフォルダテキストメモで入ってるとか言われる。

前例確認しろとか言われる。

それこそ属人化の極みなのである

慣れた人は、ああこれは10以下のパターンからこっちの帳票だなってぱぱぱっと脳内で処理できるが、引き継がれた人はそうもいかない。

そんなことをされるとマクロ化したくてしょうがないのである

正しくマクロ化されていれば、少なくともVBEを覗けば、そこにその手順の全てが載っているということになる。

IFとFORとWHILE。GOTOさえ使わなければ、言語仕様によって強制的構造化された手順書がそこにある。

そこまで整理されることで、上司や前の担当者にすら把握されていなかった業務手順の全体像というものが見えてきて、ここの手順は他に影響しないし大してお客様の役にたっていませんよねとか改善提案ができるのである

そんなのわざわざマクロ化しないでも人間が読めるようにWordでまとめればいいだろ、と思うかもしれない。

しか人間曖昧さと空気読みが大得意で、文書でまとめるとつい厳密でない記述を残したり(こういった場合に注意する、とか。注意してどうするのか書かれない)、書かれていなくても経験とか常識対応できてしまう。

VBAには曖昧さは通用しないので、得てしてWordでまとめたマニュアルなどより遥かに正確で抜けのない読みやすい(言語さえ読めれば)業務手順になる。

マクロ化は礎(いしずえである

そこから正式業務マニュアルにすることもできる。改善提案もできる。

それだけでなく正式システム化発注する際の要件定義書にすらなりえる。

スクリプト言語とはいえマクロが書かれているということは、既にほぼシステム化されているようなものなので、そこから仕様を書き起こして少し検討するだけでいいのだ。

そういう能力を持った人材がいるのなら、むしろ管理職が先導して積極的マクロ化させるべきなのである

2021-09-23

アイドル恋愛禁止ミソジニーだとして、じゃあ男アイドルは?

[B! 恋愛] うゆだ on Twitter: "もう絶対にこれの表れでしかないんですけど!?!!って毎度なる。 絶対に看過したくない。 https://t.co/2UgQks5yXf" https://b.hatena.ne.jp/entry/s/twitter.com/Uyudna3/status/1440662399460069388

これマジで面白いんだけど、女アイドル恋愛禁止ミソジニーだとして、じゃあ男アイドル恋愛禁止はどうなのかっていうと、

アイドル交際相手の女や男アイドル自身が女ファンに対してミソジニーを発露しているって話にされてるんだよね。

嵐・二宮和也結婚したとき結婚相手ブログニノと付き合ってる「匂わせ」をしてたと話題になった。

まず交際相手らしき人物ブログ監視して「匂わせてる!」といちいちキレてる時点で相当気持ち悪いけどまあそれは自由だわ。

そんでアイドル結婚してファンが悲しんだりキレたりするのも、まあ自由だわ。ネット誹謗中傷をばらまいたり直接危害を加えたりしない限りは。

ところでネット上のフェミニストにはジャニオタ腐女子を兼ねている人が結構ます

そうした人々の一部がニノ結婚ときにどういった言説を行ったかの一例を提示しよう。

https://twitter.com/mijiyooon/status/1194369092636958720

私がこんなこと言うすじあいもないんだけども、匂わせって、無邪気に自分気持ちがあふれるだけならいいけど、そこに微量でもマウントが入ってるとかぎ分けちゃうもんなんだろうなって。

んでこんなこというと、フェミなのにミソジニー…みたいな感じもあるかと思うけど、男性をめぐって自分のほうがより知っている愛されている、みたいなことでそれ以外の人に知らしめたいという感覚のほうが、ミソジニーを基本としていると思ったりもする。

男性をめぐって女性同士は競い合うものっていうことを内面化している人はもちろんいて、自分もそういう考えに毒されていたこともあったけど、たぶんそんな気持ちは実はいらないのではないかって。

周囲の人に影響を受けるので、父親がそんな風に母親と娘を競争させる感じに持っていく人とかに育てられると、未就学児でもそんな感じになってたりするのを見たことがあって。お母さんがすでにライバルなの…。村上龍父権の高い男に育てられた娘はモテる女になるみたいなこと言ってたけどこれかって。



https://twitter.com/hd_dondon/status/1195989080154075136

アイドルが匂わせする相手結婚した件、前にあったUV◯Rworldのやつみたいな「男性アーティスト女性ファンを見下している」に当たるミソジニー案件だと思ってたから、フェミニスト自認の人たちが女性ファン批判の方に流れてるの見て驚いてしまった

男性ファン女性アイドル処女性を求める」ことと「女性ファン男性アイドル偶像性を求めること」って背景が異なると思うんだけど、そこを無視して男も女も一緒!みたいにするの、ミソジニストのやり口と変わらないと思うんですが

別に女性無罪論を唱えたい訳じゃないけど、アニオタによるジャ◯ーズの女オタク叩きって昔から酷かったし(今回も見た)、あの手の話題が殊更荒れるのって「イケメンが好きな女性」に対するミソジニーも含まれてるからじゃないかって常々感じていたので。



結婚相手女性に対して「匂わせ女」だとして誹謗中傷混じりの非難が行われている状況に対しての言説の一例がこれ。

「匂わせ女」を叩く女性ファン言動よりも「匂わせ」をする側の方がミソジニーである、という理論。すごいよね。

仮にそうだとして、交際相手女性一人に対して大勢ファンネットでぶつける非難の方がどう考えても巨大なミソジニーだろ。どうなってんだ。

他にも「交際相手の匂わせ行為を許しているのはニノ自身女性ファンに対するミソジニーの発露」とか、

アクロバティックな理論アイドル側を加害者とする理屈を唱える者なんかがマジでいて、それにいいねがたくさんついて共感される状況が展開されていた。

腐女子フェミニストとかもおんなじだけど、男の文化(と思っているもの)への普段苛烈非難に対して自分趣味不思議なまでに例外処理を行い、

どんな状況からでも「女は被害者・男は加害者・男におもねる女は名誉男性加害者」という構図を維持しようとする努力マジですごいなと思います

2021-09-19

ソート処理

リスト存在しないことを表す表現として「-1」を使っているが、空は後ろに詰めたい。

昇順のバブルソートを組んだがそれでは-1が0より手前に来てしまう。

例外処理を書きたいが交換に伴う副作用が内容物が入っていることを前提に組んでいるので諸所で-1判定を組み込んでスキップさせるか、副作用が無い純粋な入れ替え処理だけをコピペで用意しなければ。

純粋な入れ替え処理だけを切り出して、-1ならそれだけ、それ以外なら副作用サンドイッチ

とも考えたが、-1なパターンて交換元の場合もあるし交換先の場合もある。

例外処理が2倍になる感じでもう面倒くさくて考える気がなくなってきた。

2021-08-16

【未経験から1ヶ月で】現役エンジニアが教える最良のプログラミング勉強法

プログラマーに憧れる皆さん!こんばんは。

自分文系から」「未経験から」と諦めていませんか?大丈夫です!プログラミングセンス不要です。正しい手順で学べば、文系や未経験でも、誰でも一流のプログラマとして活躍することができます

今日は、未経験から最短でWeb企業就職するための勉強法をご紹介します!

オススメ方法

もっとオススメ方法は、顕正会セミナーに参加することです。

顕正会は、日本で最大のエンジニアコミュニティであり、非常に良質なテキストを用いて、プログラミング初心者向けのセミナーをしていることで有名です。顕正会に入ることで、未経験からでも一流エンジニアノウハウを学ぶことができます

また、意外と知られていませんが、日本エンジニアの8割は顕正会出身です。実はあのひろゆきビル・ゲイツ顕正会出身です。ですので、顕正会ネットワークを介して就職先を斡旋してくれたりしますし、自分顕正会員だと、面接時にも非常に有利になります

顕正会セミナーは、インターネットからも応募することができますし、秋葉原などで声をかけられることもありますので、誰でも簡単に参加できます。会員もフレンドリーな方ばかりですので、是非、お気軽に応募してみて下さい!無料体験もできますよ。

準備

プログラミング勉強を始める前に、まず、必要ものを準備しましょう。必ず必要ものと、できればあると良いものは以下の通りです。

必ず必要もの

まず、プログラムを書いて実行するためにパソコン必須です。

可能な限りスペックの高いものを買いましょう。2021年現在であれば、CPUは18コア、36スレッドRAMは128GBくらいはあると良いでしょう。ストレージSSDであれば1TBもあれば十分です。

OSは、Windowsで開発するならWindowsが、Macで開発するならMac必要です。よく分からなければMacを買っておく方が良いでしょう。基本的MacにできてWindowsにできないことはありません。

インターネットは、この記事を見ている人は既に持っているでしょう。ただし、モバイル回線で見ている人は、自宅に有線のインターネット環境を用意した方が良いです。

顕正会に入会すれば、上記スペックPC無料で貸し出ししてくれます。また、法人向けの専用線無料で取付工事を行ってくれる上に、通信費を全て負担してくれます

できればあると良いもの

まず、他の会員と連絡を取るために、SNSアカウントを持っていると良いでしょう。

最近は完全にPC上での学習もできますが、やはり、勉強の基本は紙のノートに直接書くことです。医学的にも、手指の動きと脳の記憶回路が関連していることは証明されており、手を動かすことで効率的ものを覚えることができます

Kindleなどの電子書籍リーダーは持っておいた方が良いです。紙の本は時代遅れです。いやしくもITプロを目指そうという人間が、このような最先端デバイスを使っていないのは恥だと思うべきです。紙の本を買わないことは、環境を守ることにも繋がります現金も持つのはやめましょう。

自宅での学習

せっかくセミナーに参加しても、受身聴くだけでは、プログラミング習得することは難しいです。ここでは、自宅でどのような勉強をすればよいのか、ご紹介します。

教科書写経する

まずは、教科書参考書写経することから始めましょう。教科書参考書の本文を一字一句正確に書き写すのです。

よく、「写経理屈を学べないからだめだ」と批判されますが、まずは正しい「型」を体に覚え込ませるのが先です。野球水泳などでも、細かい理屈よりも先にフォームを固めるのと同じです。書き写している内に理屈自然と身に付きます

また、写経メリットは「飛ばし読み」を防げるところです。一字一句正確に写経をすれば、細かい部分を「分かったつもり」になって飛ばししまうことを防げます。たとえば、比較演算子の等号は=ではなくて、==です。プログラミングはこういうところに注意して学ばなければいけません。

ソースコードフローチャートUML)に変換する

教科書サンプルコードノートに書き写したら、それを今度は自力フローチャートUML)に変換してみましょう。そうすることで、自分が本当にそのコード理解しているのか、確かめることができます

フローチャートUMLが素早く正確に描けることは、プログラマーとして働く上で非常に重要スキルです。それらはソフトウェア設計の基礎となりますし、ソースコードを読めない営業顧客にとっては貴重な資料となるからです。プロエンジニアは、COBOLソースコード10万行を1週間でフローチャートにして、Excel転載することができます

ここで一つ注意すべきことがありますフローチャートを描くときは、必ず専用の定規を用いて描いて下さい。フリーハンドで描いたもの業務ではフローチャートとは認められません。これはまともな企業就職すれば研修などで必ず習うことですから、今の内に覚えておきましょう。

Excel勉強する

エンジニアを目指すのであれば、プログラミングだけではなく、Excelの使い方も学びましょう。Excelエンジニアにとっての万能プラットフォームです。エンジニアはあらゆる作業Excelで行いますセル結合や罫線を用いて、見栄えの良い資料を作る技術は、エンジニアにとって必須です。

プログラミング学習中であれば、たとえば以下のような題材の資料を作ってみると良いでしょう。

尤も、以上の資料は、ツールを使うことで自動作成することもできます。たとえば、ソースコード更新履歴Gitなどのバージョン管理システムを使うことでも管理できますしかし、それらの資料としてのクオリティは非常に低いため、アマチュアしか使うことはありません。プロを目指す皆さんは、必ずExcelを使いこなせるようになりましょう!VBA習得必須です。

プログラミングのコツ

以上、プログラミング勉強法について解説しました。ここからは、実際にソースコードを書くときのコツを紹介していきます。他のプログラマと差をつけることができる技術ですので、意識するようにして下さい。

変数名は短く

プログラムで使う変数名は可能な限り短くしましょう。

理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。

また、変数宣言使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分ミスしにくくなります

変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。


なるべく関数を作らない

多くのプログラミング言語には、クラス関数といった機能がありますが、これらは基本的ライブラリ提供者などが使う想定の機能であり、一般プログラマが使うのは好ましくありません。したがって、クラス関数はなるべく使わないようにして下さい。

関数を作ると、以下のデメリットがあります

不要関数を作らないためのテクニックには、以下のようなものがあります

まず、関数引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数複数の処理をすることができます

function f(i) {
  switch(i) {
    case 1:
      // i = 1のときの処理
      break;
    case 2:
      // i = 2のときの処理
      break;
    case 3:
      // i = 3のときの処理
      break;
    // ...
  }
}

この方法は、以下に述べる「変数寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます

クラス不要関数を作らないようにするには、「継承」を用います複数クラスで用いる関数定義したクラスを1つ作っておき、そのクラス継承すれば、新しいクラス関数定義する必要はありません。

理想的には、プログラム内のすべての関数を同一のクラス定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、プログラマからはこの上なく尊ばれています

class God {
  f1() {
    // 関数1
  }
  
  f2() {
    // 関数2
  }
  // ...
}

class C1 extends God {
  // 何も書かなくても上の関数が使える!
}

class C2 extends God {
  // 何も書かなくても上の関数が使える!
}
// ...

変数寿命を長くする

変数宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数寿命が長い」と言います

たとえば、以下のコードのaは、関数定義の外側からは参照することができません。

function f() {
  var a = 1;
  return a;
}

一方、以下のコードのaは関数の内外どちらからでも参照することができます

var a = 1;

function f() {
  a = 2;
  return a;
}

変数寿命を長くするのは、プログラマの腕の見せ所です。

せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまます

また、変数寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数寿命を長くするとプログラムを変更しやすくなります。つまり保守性が上がります

例外を潰す

例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイル存在しない場合は、例外となります

例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマ例外をきちんと処理しなければなりません。

ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。

try {
  // 例外が発生し得る処理
  // ex. ファイルを開く
}
catch (e) {
  // 例外が発生したときに、実行する処理
}

例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラム動作を続けます

try {
  // 例外が発生し得る処理
}
catch () {}

全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから例外が発生し得るコードは、積極的上記try-catch構文を用いて、例外を潰すようにしましょう。

おわりに

全体的に専門用語盛りだくさんの記事になってしまいましたが、

部分的にでも理解すればプログラミングを見る目が変わるはずです。

うさんくさい記事インターネットには多いですが、

そういう情報に惑わされずに本物の技術を身につけてもらえればと思います

2021-07-02

初心者から中級者になるためのプログラミングのコツ

変数や構文などのプログラミングの基礎は覚えた人向けに、ソースコードを書くときのコツを紹介していきます。どれも今日から実践できるものばかりです。他のプログラマと差をつけることができる技術ですので、ぜひ意識するようにして下さい。良い子はまねしないで下さい。

変数名は短く

プログラムで使う変数名は可能な限り短くしましょう。

理想は、aやxなどの一文字です。ただし、これだけだと26文字しか使えないので、a1, a2, ...のように連番でグルーピングすると良いです。

また、変数宣言使用箇所が離れた場合に、変数の型がすぐに分かるように、たとえばint型であればi1, i2, ...、string型であればs1, s2, ...のように命名すると、読む人に親切で自分ミスしにくくなります

変数名を長くするのは、以下のデメリットがあるため、絶対にやめましょう。


なるべく関数を作らない

多くのプログラミング言語には、クラス関数といった機能がありますが、これらは基本的ライブラリ提供者などが使う想定の機能であり、一般プログラマが使うのは好ましくありません。したがって、クラス関数はなるべく使わないようにして下さい。

関数を作ると、以下のデメリットがあります

不要関数を作らないためのテクニックには、以下のようなものがあります

まず、関数引数に「フラグ」を渡し、関数内部で処理を切り替えれば、1つの関数複数の処理をすることができます

function f(i) {
  switch(i) {
    case 1:
      // i = 1のときの処理
      break;
    case 2:
      // i = 2のときの処理
      break;
    case 3:
      // i = 3のときの処理
      break;
    // ...
  }
}

この方法は、以下に述べる「変数寿命を伸ばす」効果もあります。つまり、この関数内で宣言された変数は、すべての処理で共通して使用することができます

クラス不要関数を作らないようにするには、「継承」を用います複数クラスで用いる関数定義したクラスを1つ作っておき、そのクラス継承すれば、新しいクラス関数定義する必要はありません。

理想的には、プログラム内のすべての関数を同一のクラス定義し、それを継承するべきです。そのようなクラスは俗に「神」と呼ばれ、その利便性からプログラマからはこの上なく尊ばれています

class God {
  f1() {
    // 関数1
  }
  
  f2() {
    // 関数2
  }
  // ...
}

class C1 extends God {
  // 何も書かなくても上の関数が使える!
}

class C2 extends God {
  // 何も書かなくても上の関数が使える!
}
// ...

変数寿命を長くする

変数宣言する場所によって、ソースコードのどの範囲から参照できるかが決まっています。この範囲が広いことを、「変数寿命が長い」と言います

たとえば、以下のコードのaは、関数定義の外側からは参照することができません。

function f() {
  var a = 1;
  return a;
}

一方、以下のコードのaは関数の内外どちらからでも参照することができます

var a = 1;

function f() {
  a = 2;
  return a;
}

変数寿命を長くするのは、プログラマの腕の見せ所です。

せっかく作った変数がすぐに死んでしまうのは、非常にもったいないです。ソースコードの表面には現れませんが、変数を作ったり捨てたりするのには、計算コストがかかります。したがって、寿命の短い変数を作りすぎてしまうと、プログラムが遅くなってしまます

また、変数寿命が長いということは、変数をたくさん作らなくても、1つの変数を色々なところで利用できるということであり、とても便利です。たとえば、上記の前者のコードでは、関数の外部からaの値を参照したくなっても、参照することができません。後者のように書いておけば、プログラムのどの箇所からでも、aの値を参照したり、更新することができます。したがって、変数寿命を長くするとプログラムを変更しやすくなります。つまり保守性が上がります

例外を潰す

例外とは、プログラムが予期しない処理をしようとした場合に、プログラムの実行を停止し、呼び出し元にエラーを通知する機能です。たとえば、「test.txt」というファイルを開こうとしても、そのファイル存在しない場合は、例外となります

例外が発生すると、プログラムが停止してしまうため、非常に困ります。したがって、プログラマ例外をきちんと処理しなければなりません。

ほとんどのプログラミング言語には、例外処理のための機構があります。たとえば、以下のような構文です。

try {
  // 例外が発生し得る処理
  // ex. ファイルを開く
}
catch (e) {
  // 例外が発生したときに、実行する処理
}

例外への対処は実はとても簡単です。是非ここで覚えて下さい。上記のような機構のある言語であれば、catch節の中身を何も書かなければ、例外が発生しても、何事もなくプログラム動作を続けます

try {
  // 例外が発生し得る処理
}
catch () {}

全ての例外を潰せば、決して不慮の動作で停止することのないプログラムを作ることができます。ですから例外が発生し得るコードは、積極的上記try-catch構文を用いて、例外を潰すようにしましょう。

2021-02-21

世の中はもっとシンプルにあるべき

教科書を読んだだけで、全く手を動かさずにテストの8割答案を埋められる人は何割いるだろうか?

テストレベルにもよるとか言われそうだが、伝えたいことはそうではない。問題なのは、塾に通って何度も手を動かしても、教科書の例題を解くのが精一杯の生徒は確実にいるという事実を皆が無視して、馬鹿に優しくない世の中を作ってるということだ。

直感的に操作できるアプリケーションを本当に直感操作できる人はひと握りだ。VBAなんてプログラミング知識なしで書けると売り出したが、結局何割の人が使えたのか?VOOKUPどころか四則演算すらまともに出来ないから、ジジババは電卓確定申告書を作ってる。

1番の問題は、貧しい人を救うセーフティネットはいくらでもあるが、貧しい人は往々にして馬鹿なのでその恩恵に預かれないということ。

例えば、馬鹿だと自らの貧しさを説明することが出来ない。去年に比べて収入が減ったことを説明出来ない。

BSとPL作ればいいだろ、個人事業主や家庭のなんてちょっとググればサクッとつくれるだろ」と言い放っても出来ないものは出来ないのだ。

ふるさと納税がしたいが確定申告が出来ないから諦めてたサラリーマンがたくさんいたように、大半の人間自分現金収入すら把握してないし、いくら税金を払ってるかも知らないのだ。まして、現金以外の資産状況については全く説明出来ない。

教科書を読んだだけで答案を埋められる人にとっては、この世はイージーモードだ。

制度を作ってる人達もやっぱり教科書を読んだだけで答案を埋められる人たちなので、馬鹿にとってはハードモードなことを理解できない。

追記

ここまで読み切った人達は、馬鹿共感する資格はない。

世の中の馬鹿は、こんな長い文章は読めないのだ。

馬鹿は長い文章理解できないし、条件分岐例外処理理解できない。

役所に行けば食べ物が貰えます、そのくらいのシンプルな仕組みのセーフティネットしか馬鹿が利用することは出来ないのだ。

さら追記

本論とは話がズレるが、時折、田舎文化レベルが低いとか教養がないとか言う議論があるが、自分観測範囲だと、都会と田舎ヤンキー比率の中のマイルドヤンキーガチヤンキー比率が違うくらいで、ここで言うマトモな人間教科書を読めば答案が埋まるような人間比率は都会でも田舎でも1割くらいじゃなかろうか。

2021-01-25

setjmpとかで例外処理してたのを思い出すからやめてくれ〜

2020-12-11

増田トラバ二重投稿ありがちなのは半分ぐらい運営のせい

増田って重くなると、書き込んで投稿ボタン押したときにたまに502エラーや504エラー吐くじゃん?

書き込めてないか不安になって戻るボタン押して再度投稿すると、二重投稿になってるんだよね。

いつもそうなるわけじゃないから、502か504、どっちかのエラー発生時は本当に投稿されてなかったことになる。

エラーコード素人に見せつけても意味ないんだから、「投稿できませんでした」ぐらい表示する例外処理ぐらい実装するべきなんだよね。

そこが改善されれば二重投稿は劇的に減ると思われる。

ログイン ユーザー登録
ようこそ ゲスト さん