intellista

engineer's notes about application development, data analysis, and so on

メルカリをはじめるなら招待コードで500円分のポイントをゲット ※7/29まで1000円分!

f:id:parupuntist:20210725172747p:plain
こんにちは!

身の回りの不用品が簡単に売れたらいいですよね。
私はメルカリで驚くほど簡単に売っています。
今回はメルカリのはじめかたをご紹介します。

メルカリとは

メルカリは、簡単に不用品などを売買できるサービスです。
スマホのアプリひとつで簡単に売買できます。

もしメルカリ使ってみたい場合、無料で登録すればすぐに始められます。
普通に登録すると何も特典はありません。
しかしちょっとコピペするだけで500円分のポイントがもらえます!
せっかく始めるなら、500円分もらいましょう!

2021年7月29日まで、期間限定で1000円分もらえます!
これまでも年に2~3回ほど不定期で1000円になることがあり、今回も久しぶりです。

このポイントはメルカリだけではなく、メルペイiDが使える街のお店なら全国どこでも使えます!
(私も使っています!街のお店でも使える点が重要です。)

メルカリのはじめかた

メルカリのはじめかたをご説明します。
最後の「招待コード」のコピペが重要です。

  1. スマートフォンで次のリンクにアクセスします。
    merc.li
  2. 「メルカリをはじめる」のボタン(赤枠)を押します。
    f:id:parupuntist:20210725162814p:plain:w400
  3. 公式アプリをGoogle Play / App Store からインストールして開きます。Google Playの例は次のとおりです。(赤枠の開くボタンを押します。)
    f:id:parupuntist:20210725163241p:plain:w400
  4. アプリが表示されるので、GoogleFacebookApple、メールアドレス、のいずれかお好みの方法のボタン(赤枠のボタンのいずれか)を押します。
    GoogleFacebookApple、のアカウントをもっていたら、これらから選ぶのが簡単です。
    ※私はあちこち連携したくない考え方なので、メールアドレスで登録しています。

    f:id:parupuntist:20210725163445p:plain:w400
  5. 無料の会員登録の画面に移りますので、画面に従って登録を進めましょう。
    このとき「招待コード」を必ず入力してください。
    f:id:parupuntist:20210725170507p:plain:w400
    私の招待コードQVMSXTを入力(コピペ)いただけると嬉しいです!
    未入力ですと特典のポイントがもらえませんので要注意です!
    f:id:parupuntist:20210725163908p:plain:w400
  6. 会員登録がおわったら、すぐにメルカリのアプリを使い始められます。

補足

私は3か月で130品ほど売りましたが、メルカリは「いいね」や「購入」といった反応が数分~数日であるのが印象的です。
24時間以内に売れるといった触れ込みを聞いたことがありますが、出品者として、さほど違和感はないです。

メルカリでもっとも気にっているのは、出品物がGoogle検索の上位にくること。
出しておくだけで、勝手に宣伝して取引につなげてくれます。
音楽関係の品物だけでなく、身の回りの不用品がどんどんお金になっていくのは嬉しいものです。

なお、メルカリのポイントは、QR決済(バーコード決済)のメルペイ1ポイント1円で使えます。
メルペイは電子マネーのiDと連携できるため、iDが使える全国のお店でも使えます。
使える範囲が相当広いため、かなり重宝しています。

まとめ

今回はメルカリのはじめかたについてご紹介しました。
ほしい機材を安価に入手したり、私のように使わなくなった機器を売却するなど、幅広く活用できます。
是非、メルカリを使ってみてください!

Pandasで次のレコードとの差を計算する!

f:id:parupuntist:20210722170456p:plain
こんにちは!
今回は「Pandasで次のレコードとの差を計算する」ことについてお話したいです。

背景

Pandasでのデータ加工でよくあるのが「ある列について、次の行との差を計算する」というニーズです。

時系列データの差を取って時間を求めたり、推移する値の差を取って増減の幅を可視化するなど、よくあります。
こういったときは、次のレコードの値との差を取ることになります。

それだけなら単純ですが、ふつうは階層的なID単位に差を求めたいことが多いです。
例えば、工場ごとに商品ごとの製造完了時刻があったとき、工場ごとに商品ごとの製造時間(次行の完了時間-今行の完了時間)を求めたいことがよくあります。

こんな時にプログラミングの経験があればすぐに「forループ回して、中でif文でIDをチェック」と思い浮かぶはずです。

もちろんPandasでもそのようにできます。
しかし、Pandasのお作法ではありません。
Pandasはなるべくforループを使わない書き方を好みます。
(と言っている私も、実はPandasの作者の書籍で勉強して知りました。)

このときに役立つのが次の2つです。

  • groupby
  • shift

この2つを使えば、たったの3行で書けます。

  dfg = df.groupby(['FACTORY','ITEM'])
  df['NEXT_END_TIME'] = dfg['END_TIME'].shift(-1)
  df['DURATION_SECONDS'] = (df['NEXT_END_TIME'] - df['END_TIME']).dt.seconds

ということで、具体例を見てみましょう。

具体例

「ある列について、次の行との差を計算する」ための具体例は次のとおりです。


  • 1つ目のセルは、単なる準備です。
  • 2つ目のセルは、今回の元データとしたサンプルデータです。
  • 3つ目のセルが、今回のポイントです。groupbyとshiftで時間を求めています。
    なお、各グループの末尾のレコードの時間はNaNになります。(次のレコードが存在しないので)

これと同じことををループでやろうとすると、かなりゴリゴリと力技でコーディングすることになります。
次のような感じですかね。

  factory = None
  item = None
  for row in df.itertuples():
    if row.Index is not 0:
      if factory == row.FACTORY and item == row.ITEM:
      ...

ダっ、ダサい...!!
しかも読みづらいし。努力の方向が間違っている残念な例だと思います。
こんなコードを見かけたら、中身によってはリファクタリングしたほうがいいかもしれません。

この話に限らないことですが、言語やライブラリの仕様や組み込み関数を把握することは重要です。
把握せずにfor文やif文で強引に大量のコードを書くと、徒労なうえに、そのコードを受け取った人たちが迷惑します。
実装する前に「スマートな方法がないのか?」と静観したいものです。

なお、スマートな方法を把握する効率的な方法は、やはり体系的な理解です。
私はPandasについて、作者の著書を読み込んでいますが、非常に体系的です。
そのおかげか、Pandasらしい発想ができるようになったと思います。

まとめ

今回は「Pandasで次のレコードとの差を計算する」ことについてお話しました。
Pnadasらいしいスマートな書き方で自他時短できると嬉しいです!

無料講義の「gacco」でAI講座が8つも開講!

f:id:parupuntist:20210710161054p:plain
無料で大学教授らの講義を受けられる「gacco」という学習プラットフォームをご存じですか?
無料で良質な講義を提供することで学びをサポートするJMOOC(日本オープンオンライン教育推進協議会)の公認プラットフォームのひとつです。

「gacco」は私も愛用しており、以前「統計学」の講座の記事を書きました。
※閉講していますが、定期的に復活を繰り返しているようです。

さて、この「gacco」で、「AI活用人材育成講座」が8講座も開講されました。
gacco.org

活用事例が3講座、理論が4講座で、段階的に学べるようになっています。

いくつかの講座をチェックしましたが、2022年3月31日が最終期限のようです。

講座に申し込んでから60日以内に修了する期限がある点には注意してください。
(期限は申込日で決まるので、一度にたくさん申し込むと死にます...)

私は下期にAI・機械学習に注力する予定なので、はやる気持ちをおさえ、下期に申し込む予定です。

私にとってはタイムリーな講座が開設され、しかも無料ということで本当に助かります。
引き続きチェックしようと思います。

Power Automation Desktop 勉強会 Vol.3 ハンズオンが秀逸!

f:id:parupuntist:20210710161545p:plain
Power Automation Desktopをご存じですか?
Windows 10 のユーザなら、誰でも無料で使える自動化ツールです。
無料ということで、最近ホットですね。

今日はPower Automation Desktop 勉強会の3回目を聴講しました。
Power Automation Desktop 勉強会は毎回わかりやすくて助かります。
目玉の「ハンズオン」をはじめ、高度な機能、企業向けのポイントもキャッチアップできました。
www.youtube.com

今回のPower Automation Desktop 勉強会で私が得たことをまとめます。
なお、私のスペックは次のとおりです。

  • アプリケーション・エンジニア
  • Power Automation Desktop は個人的に利用してみたい

スペックが似ていれば、同じようなポイントが気になるかもしれません。
ご参考頂ければ嬉しいです。

ハンズオン

お目当ての「ハンズオン」で得たことをまとめます。

  • ExcelやEdgeを開いたり閉じたりできる
    • Excelの範囲を指定して値を読み書きできる
    • Webスクレイピングもできる
      しかも取りたい値をWebページを見ながらマウスで指定できる!
  • 操作の記録ができる
  • 分岐(If)やループ(For Eachなど)も組める
    • 二重ループやループからのbreakもできる
  • サブフロー(サブルーチン)を作れる

Scrathと同じようなノリで作れますね。
いわゆるローコード開発になると思います。

口々にFor Eachの二重ループが難しかった仰っていましたが、プログラミング経験のある私にはここが一番簡単でした。
つまり、プログラミング的なロジックがわかれば、Power Automation Desktopのツール的な操作方法や機能がわかれば使いこなせると思いました。

わからなかったところは次のポイントです。

  • Desktopフローの実行の説明がなかったので、操作方法がわかりませんでした。
    • Desktopフローは、2021年6月のアップデートで入った機能で、今後キモになりそうな機能だそうです。
    • こちらは後述する解説動画に説明があるそうです。助かります。

動画と一緒にハンズオンされる場合は、GitHubのハンズオン用の教材ページに行って、案内に従ってファイルをダウンロードしてください。

Power Automation Desktopを初めて操作する私には、ハンズオンが猛スピードでした。
私はExcelを開いてWebから各項目をとってくるところまではついて行けたのですが、その後のDesktopフローの作成がわからず、手を動かすのは脱落しました。
そのあとは聞く方に注力したので、だいたい内容はわかりました。

YouTube Liveなので、自分のペースで復習できそうです。
やはりYouTube Liveでの勉強会は本当に便利ですね。

なお、今回のハンズオンは中身を盛り込む方針のため、かなり早めだったそうです。
その手当もしっかりご用意されており、GitHubのハンズオン用の教材ページにハンズオン内容の解説動画もあるそうです。
この動画で、Desktopフローについても触れているそうなので、追って確認します。

ちなみに、今回のハンズオンの登壇者の方は、初学者向けの書籍を出しています。
できるシリーズで、とっつきやすそうですね。
いまは右も左もわからないので、気になります。

スクリプト実行アクション

フローだけでなく、スクリプト実行もできるというLTが面白かったです。

  • JavaScriptPythonスクリプトSQLステートメントも実行できる
    • フローを書くより早いこともある
    • rpachallenge.com というサイトでフォーム入力の速度を競える
  • Azure Cognitive Service Computer Visionといったほかのサービスと組み合わせて、写真の文字をマスクするデモが意表をつかれました!
    • Power Automation Desktopを使って、こんなこともできるんですね!感動です。

企業向けのポイント

こちらの情報も厚めでした。
企業向けに取り組まれている方にはよいかもです。

私は個人利用ですが、いくつか気になるトピックがありました。
※ただ私の勤務先ではそもそも利用制限されていました...

  • スマホからPCのフローを分散実行できる
  • レジストリ値で起動制御できる
  • ダッシュボードがある
  • ソリューションにフローを含めてほかの環境に展開し、テストや運用ができる
    • アプリケーションライフサイクルの管理につなげられる
    • フローの部品化や共有ができる

まとめ

今回は、Power Automation Desktop 勉強会 Vol.3 で私が得たことを簡単にまとめました。
ハンズオンにより、具体的にブラウザやExcelを使ったり分岐やループ処理のイメージがつかめました。
ご参考頂ければ嬉しいです。

「情報処理教科書 情報処理安全確保支援士」の読みづらさの正体と対策

f:id:parupuntist:20210702213904p:plain
こんにちは!

興味があって、安全確保支援士の合格を目指しています。
多くの方々進めている「情報処理教科書 情報処理安全確保支援士」、通称「上原本」(2021年度版)を200ページほど読みました。
解説がキッカリ760ページのこの本、分厚いうえに内容が超濃密です。

読み進めると大きな問題に気が付き、避けられないレベルになりました。
この本、とにかく「読みづらい」のです。
具体的には「日本語が飲み込みにくい」のです。

そこで、ちょっと休憩して「読みづらさの正体」を考えました。
肝心の中身の前に読みづらさに阻まれるのは本意ではありません。
逆に、この読みづらさを除去できれば、肝心の中身に集中できそうです。
今は「読みづらさ」が、かりそめの「わかりにくさ」を生んでいます。

ということで、今回は安全確保支援士の通称「上原本」について「読みづらさの正体」と対策を考えます。

2021年7月7日 追記

現在は上述の「上原本」ではなく、当初の候補だった別の本「セキュリティ技術の教科書 第2版」(以降「長嶋本」と呼びます)に切り替えて学習中です。


長嶋本の主な特徴は次のとおりです。
  • 日本語がスッキリと読みやすい
  • 「これはなにか」を定義する
  • 「ここがポイント」だと明示する
  • 「なんでこう呼ばれるか」も補足する
  • 「つまり、こういうことなんです」と整理する

この長嶋本は、本ブログで挙げる日本語の読みづらさもほぼなく、後述する「その他の読みづらさ」も全くありません。
上原本と長嶋本は、完全に真逆です。
なんで初めから長嶋本を選ばなかったのだろう...
その理由は次のとおりです。
  • 本の厚さでの判断ミス
    • 分厚い上原本のほうが十分な情報量だと錯覚しました(実は単なるメタボでした)
    • 改めて長嶋本の中身をチェックすると、資格の範囲をちゃんとカバーしています
  • 装丁(見た目)に流された
    • 資格向け全開の上原本のほうが安心感がありました(ただ、装丁って売るためには重要なポイントだと実感できました)
    • 長嶋本は一般的な技術書に近い実直な装丁なので、資格対策はあくまで「ついで」だろうと誤解しました
  • 「売上No.1」の安心感に流された
    • つまり、売上が実績(測れない)とリンクしないとわかっているものの、感情に流されました
読み比べてわかりましたが、2つの本には次の根本的な違いがあると、私は考えています。
  • 上原本は「伝えること視点
  • 長嶋本は「伝わること視点
この違いは大きいです。

なお、上原本は、300ページほど学習したところで付き合いきれなくなり、見切りをつけました。
実は、本ブログで対策として挙げた「修正テープで無駄な表現を消す」方法を「上原本」で続けたところ、約60ページで10mもの修正テープを使い切りました...
その後も同じペースで無駄な表現が続くほか、各論に入った後にまた概論が来たり、言葉を定義せずちゃんぽんに扱うなど目に余り、非効率だと判断して上原本の使用を中止しました。

本ブログの内容は、日本語表現についてのポイントとして残します。

読みづらさの正体は?

「上原本」の「読みづらさの正体」を考えます。

読みづらい例と読みやすい例

「上原本」の文章がどれだけ飲み込みにくいのか考えるため、簡単な例を作りました。(書籍の文章を載せられないので)
桃太郎の初めの部分を「上原本」風に書きます。

 むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、おじいさんとおばあさんがその時点においてあるところ、すなわちある場所に住んでいたとされている。

 おじいさんは山などへ芝刈りなどを行う必要があるために単独で実施しに行くとともに、おばあさんもまた川などで洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所に行く必要があった。

 川においておばあさんが洗濯などを行っているところに、どんぶらこ、どんぶらこ、と、川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きなサイズの桃が確実に流れてきた。

 そして、おばあさんは川上から流れてきた桃を食べるような欲求などが発生したために、前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、桃を持ち帰った後、その桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、実際に切った際に該当する桃の中から元気な男の子が飛び出してきた。

 両者の間に子どもがいなかったということもあり、おじいさんとおばあさんは非常に大きな喜びなどを感じた可能性があるとともに桃の中から生まれてきた男の子の名前として「桃太郎」という名前を付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた。


何を言っているのかわかりますか?
(というか、そもそも読む気になりましたか?)

正直、「上原本」はこんな感じで、あまり誇張していません。
ちなみに同じ意味のシンプルな文章は次のとおりです。

 むかしむかしあるところに、おじいさんとおばあさんが住んでいた。
 おじいさんは山へ芝刈りに、おばあさんは川へ洗濯に行った。
 おばあさんが川で洗濯をしていると、どんぶらこ、どんぶらこ、と川上から大きな桃が流れてきた。
 その桃を食べようと、おばあさんは家に持ち帰った。
 桃を切ると、中から元気な男の子が飛び出してきた。
 子どもがいなかったおじいさんとおばあさんはとても喜び、桃から生まれた男の子に「桃太郎」と名付けて大切に育てた。

これなら、読んだ順から理解できてスッキリですよね。

読みづらさの原因

「上原本」風の分かりにくさの原因はなんでしょうか?
次の赤文字のところを除去するとどうでしょうか?
赤文字を無視して黒文字のところだけ読んでみてください。

 むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、おじいさんとおばあさんがその時点においてあるところ、すなわちある場所に住んでいたとされている

 おじいさんは山などへ芝刈りなどを行う必要があるために単独で実施し行くとともに、おばあさんもまたなどで洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所に行く必要があった。

 川においておばあさんが洗濯などを行っているところに、どんぶらこ、どんぶらこ、と、川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きなサイズの桃が確実に流れてきた。

 そして、おばあさんは川上から流れてきた桃を食べるような欲求などが発生したため前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、桃を持ち帰った後、その桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、実際にった際に該当する桃の中から元気な男の子が飛び出してきた。

 両者の間に子どもがいなかったということもあり、おじいさんとおばあさんは非常に大きな喜びなどを感じた可能性があるとともにの中から生まれてきた男の子の名前として「桃太郎」という前を付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた。

どうでしょうか?
先ほどのシンプルな文章に似ていませんか?
「てにをは」が不自然になるところもありますので、緑文字で少し足します。
(先ほどの赤文字グレーにします。)

 むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、おじいさんとおばあさんがその時点においてあるところ、すなわちある場所に住んでいたとされている

 おじいさんは山などへ芝刈りなどを行う必要があるために単独で実施し行くとともに、おばあさんもまたなどで洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所に行く必要があった。

 川においておばあさんが洗濯などを行っているところに、どんぶらこ、どんぶらこ、と、川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きなサイズの桃が確実に流れてきた。

 そして、おばあさんは川上から流れてきた桃を食べるような欲求などが発生したため前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、桃を持ち帰った後、その桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、実際にるとった際に該当する桃の中から元気な男の子が飛び出してきた。

 両者の間に子どもがいなかったということもあり、おじいさんとおばあさんは非常に大きなとても喜びなどを感じた可能性があるとともにの中から生まれてきた男の子の名前として「桃太郎」という前を付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた。

どうでしょうか?
シンプルな文章とくらべて、多少の順序や表現の違いはありますが、同じくらいに読みやすくなりました。

ここまで見て、読みづらさの正体がわかったと思います。
つまり、正体は「あってもなくてもいい(あるとノイズになる)表現にまみれている」ことにあります。
※実は他にもいくつか原因があり、後述します。

読みづらさの詳細

さて、読みづらさの原因がわかったところで、原因の詳細を確認します。
「あってもなくてもいい(あるとノイズになる)表現」(赤文字)をもう一度見てみましょう。

 むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、おじいさんとおばあさんがその時点においてあるところ、すなわちある場所に住んでいたとされている

 おじいさんは山などへ芝刈りなどを行う必要があるために単独で実施し行くとともに、おばあさんもまたなどで洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所に行く必要があった。

 川においておばあさんが洗濯などを行っているところに、どんぶらこ、どんぶらこ、と、川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きなサイズの桃が確実に流れてきた。

 そして、おばあさんは川上から流れてきた桃を食べるような欲求などが発生したため前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、桃を持ち帰った後、その桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、実際にった際に該当する桃の中から元気な男の子が飛び出してきた。

 両者の間に子どもがいなかったということもあり、おじいさんとおばあさんは非常に大きな喜びなどを感じた可能性があるとともにの中から生まれてきた男の子の名前として「桃太郎」という前を付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた。

赤文字のノイズ表現は、いくつかに分類できます。
順序がかわって「読みづらい」かもですが(すみません...)、次のとおりです。

  • 文意から当たり前すぎて補記は不要
    • その時点において
      ※あえて書くなら「その時点で」
    • 、すなわちある場所
      ※あえて書くなら「つまりある場所」
    • 川上から流れてきた
      前の分で「川上から」と言っているので再掲不要
    • 両者の間に
      文意から言わなくてもわかる
    • の中から
      同上
  • 単純になくていい表現
    • など
      ほかにもあることを伝える正確性より、文意をあいまいにするデメリットが強い。
      ほかになさそうなら「など」は不要。
      ただし、例の一部をいくつか並べた末尾は「など」でも自然。
    • などで
      同上
    • 大きなサイズの桃が
      冗長
    • そして、
      冗長
    • ということもあり、
      あえて書くなら「ため」で十分だが、除去すれば後続の名詞とつながるので冗長
  • 無用な繰り返し
    • 行くとともに
      「行く」ことは文の後半で言っているので「~に行く」は「~に」と場所を示せば十分。
      「行く」「行う」と一緒に使うのもパッと見わけずらいので避けたい。
  • 過剰な強調
    • 住んでいたとされている
      文意から「住んでいた」ことがわかれば十分で「されている」ことは重要でない
    • に行く必要があった
      文意から「行った」ことがわかれば十分で「必要がある」ことを強調する「必要がない」
      ※上原本の多くの文末は過剰な強調です。例えば「ことが重要である」「ことを要する」「を徹底する」のほか「を徹底する必要がある」といった合わせ技もあります。そもそも参考書は「必要」で「重要」なことを書いている(でなければ別の問題ですが...)ので強調は不要。
    • 桃が確実に流れてきた
      冗長。
      ※上原本は「確実に」が好きみたいです。ほか「悪質な」「巧妙に」など。
  • もっと簡潔な語句がある
    • おばあさんもまた
      「も」「また」は類似表現なので「も」で十分だが、この場合は主語の初出の動作なので「は」が好ましい
    • において
      場所を示す「で」で十分
    • 洗濯などを行っているところに
      「など」は不要。
      「行っ(行う)」は「し(する)」で十分。
      「~しているところに」の「ところ」は場所でなくタイミングを表すので「~していると」で十分。
    • 発生したため
      「~ために」は「~ため」で十分
    • 非常に大きな
      「とても」で十分
    • の名前として
      後ろで「名付ける」と言っているので、ここでは「に」で十分
    • 「桃太郎」という前を付け
      「~という名前を付ける」は「~と名付ける」で十分
  • 文を分けるべき
    • 桃を持ち帰った後、その桃を
      「、」の前後で時間がたっているのと、そもそも長いので「桃を持ち帰った。桃を」と分ける(分けると「その」は冗長)
  • 冗長な表現の組み合わせおばけ
    • むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、
      • 「一般的に、」は冗長。「一般的」さがポイントでない。
      • 「など」は、ほかにあることを示唆する必要がなく不要。
      • 「のことについて」は「のことを」で十分。
      • 「このように」は「こう」で十分。
      • 「呼ばれている」は「いう」で十分。(多くの「~ている」は不要)。
      • 「のであるが、」は「が、」で十分。ただしこの例の「が」は逆説ではないので、「のであるが、」まるごと不要。
      • ...と見てきたが、そもそも、これ全体が言われなくてもわかるので不要。あえて補記するなら丸カッコでくくる。「むかしむかし(読み手が~の昔)」
    • 芝刈りなどを行う必要があるために単独で実施し
      • 「など」は冗長。
      • 「行う」は「する」で十分なので「芝刈りする必要が」とするか、「芝刈り」が動作を内包するので「芝刈りの必要が」で十分。
      • 「必要がある」ことを強調する「必要はない」ので不要。
      • 「単独での」は「単独」さがポイントではないので強調は不要。
      • 「実施し」は「し」で十分。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所
      • 「など」は、ほかにあることを示唆する必要がなく不要。
      • 「行う」は「する」で十分。
      • 「必要があった」という過剰な強調は不要。
      • 「こちらも」は主語(おばあさん)が近いので書かずともわかり不要。
      • 「単独での」は「単独」さがポイントではないので強調は不要。
      • 「実施する」は「する」で十分。(ほか、「行う」「施す」も「する」で十分)
      • 「その場所」は、指し示す「川」の記述が近いので書かずともわかり不要。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きな
      • 「のほうに」は「に」で十分
      • 「向かって」は方向の「に」(上述)と重複するので不要
      • 「タイプの」は冗長。「比較すると」は「比べて」で十分。だが、そもそも「通常のタイプの桃と比較すると」は直後の「大きな」で十分わかるので不要
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 桃を食べるような欲求などが発生したため
      • 「ような」と例えたり、ほかにあることを示唆する必要がなく不要。
      • 「など」は、ほかにあることを示唆する必要がなく不要。
      • 「が発生した」は、発生したことがポイントではないので「の」で十分。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、
      • 「冒頭」が「前述」なのは当たり前なので「前述の冒頭でも」の「前述の」は不要。
      • 「冒頭でも」の「も」は冒頭「以外に」あることがポイントなら必要だが、そうでないので不要。
      • 「解説した」という強調は不要なので「冒頭で触れた場所」くらいで十分
      • 「存在する」は「ある」で十分
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、
      • 「手段」が「有効」かはポイントではなく、「有効な」ものを説明することが多いので「有効な」は不要。
      • 「切ってしまう」は」切る」で十分(「~てしまう」はほぼ蛇足)。
      • 「など」は、ほかにあることを示唆する必要がなく不要。
      • 「も考えられるが」は「あるが」で十分。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 実際にった際に該当する桃の中から
      • 「実際に」の直後の動作(切る)が仮想的なのかをポイントにしていれば必要だが、そうでないので不要。
      • 「切った際に」は「切ると」で十分。
      • 「該当する」は、すでに対象(桃)にフォーカスしているので不要。
      • 「の中から」は「から」で十分。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。
    • 喜びなどを感じた可能性があるとともに
      • 「など」は冗長。
      • 前方の「喜び」は感じるものなので、内包する「感じた」と書く必要がない。「喜んだ可能性があり」で十分。
      • 「可能性がある」は可能性がポイントではないので不要。つまり「喜ぶ」で十分。
      • 「とともに」は同時進行することがポイントではないので不要。つまり「喜び」で十分。
      • ...ということで、そもそも、これ全体が冗長なので不要。
    • 付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた
      • 「など」は、ほかにあることを示唆する必要がなく不要。
      • 「判断を行いは「判断し」で十分だが、直前の動詞(名付け)の意味に「判断」が内包されるので不要。
      • 「その上で」の強調は不要。なくても十分わかる。
      • 「二人で」は直前の主語から自明なので不要。
      • 「桃太郎を」は同じ分の前半でフォーカスしており自明なので不要。
      • ...と見てきたが、そもそも、これ全体が言われなくても文意からわかるので不要。

なお、日本語ではキーワード以外で漢字を濫用すると読みづらいです。
(漢字はキーワードであることが多く、見ためも目立つため。)

読みやすくする対策

読みづらさの正体は「あってもなくてもいい(あるとノイズになる)無駄な表現にまみれている」ことでした。
であれば、読みやすくする対策はズバリ「無駄な表現を消す」です。

ということで私は途中から、蛍光ペンを横に置き、修正テープを片手に読み進めています。
修正テープで「無駄な表現を消す」のです。

桃太郎の例で「無駄な表現を消す」と、次のようになります。
(「てにをは」訂正の緑文字も書き入れます。)

 むかしむかしとは一般的に、読み手が生まれる以前などの昔のことについてこのように呼ばれているのであるが、おじいさんとおばあさんがその時点においてあるところ、すなわちある場所に住んでいたとされている

 おじいさんは山などへ芝刈りなどを行う必要があるために単独で実施し行くとともに、おばあさんもまたなどで洗濯などを行う必要があったため、こちらも単独での実施をするためにその場所に行く必要があった。

 川においておばあさんが洗濯などを行っているところに、どんぶらこ、どんぶらこ、と、川上からおばあさんのほうに向かって通常のタイプの桃と比較すると大きなサイズの桃が確実に流れてきた。

 そして、おばあさんは川上から流れてきた桃を食べるような欲求などが発生したため前述の冒頭でも解説した場所に存在する自宅にその桃を持ち帰ることにし、桃を持ち帰った後、その桃を食べるための有効な手段として切ってしまうなどの対応も考えられるが、実際にるとった際に該当する桃の中から元気な男の子が飛び出してきた。

 両者の間に子どもがいなかったということもあり、おじいさんとおばあさんは非常に大きなとても喜びなどを感じた可能性があるとともにの中から生まれてきた男の子の名前として「桃太郎」という前を付けるなどの判断を行い、その上でおじいさんとおばあさんは二人で桃太郎を大切に育てた。

とびとびのスカスカで見づらいですが、無駄な表現で文字がびっしりと詰まったものよりマシです。
実際に「上原本」の既読の50ページくらいを修正テープで「無駄な表現を消す」と、かなり読みやすくなりました。
(各ページが1/5~1/3くらいスカスカです。もともと読みやすければ760ページの分厚さにはならなそうですね。)
読み進めるスピードが落ちますが、理解の深さと読み返すときの効率があがるメリットが気に入っています。

まさか母語の参考書で修正テープを使うことになるとは...
資格の勉強では蛍光ペンを常用しますが、修正テープをメインで使うのは初めてですね。
このまま修正テープで無駄な表現を消しながら進めようと思います。

補足: その他の読みづらさ

日本語の表現の以外にも、致命的な読みづらさが根深いです。
主な点だけでも次のとおりです。

  • 大半は箇条書きせずに本文に羅列
  • 章や節の階層がおかしい (親子関係のトピックを兄弟の章立てにする、別々のトピックを1つの節や段落に書く)
  • 図の説明がない(意味や順序の説明)
  • ポイントを強調しない (つまり何?が見えずらい)
  • 表記ゆれ (いくつかの言い方がある用語を統一しない)

詳しい人が話したことを別の人が聞き取って書かれた本と、特徴が少し似ています。
表現や構成のアンチパターンが凝縮されているので、ライティングのノウハウが整理できるかもしれません。
全編こんな調子なので、学習者としてはつらいものがありますが...

まとめ

今回は安全確保支援士の通称「上原本」について、「読みづらさの正体」と対策を考えました。
修正テープで「無駄な表現を消す」ことで、読みやすくなりました。
※この調子で間に合うのかは心配ですが...もっといい方法(いっそ別の本?)が見つかれば試したいです。

ということで、760ページある残りの560ページ、引き続き頑張ろうと思います!

pandasのデータフレームの値を2つのインデックス参照で変更するときは、真偽値の条件を後にする!

f:id:parupuntist:20210622164742p:plain
pandasを使っていて、つまずいた点をメモします。
その点とは、インデックス参照でデータフレームの値を変更するときは、真偽値の条件を後にする!という点です。
わかるまで地味に時間がかかりました..

概要

データフレームの値を更新するときインデックス参照が使えます。
その際、2つの条件で更新対象の要素を指定したいケースがよくあります。
例えば、次のケースです。

  • この列の値を更新する
  • この列がこの値より大きい要素を更新する

このとき、次のように書きますよね。

df["この列"][df["この列"] > この値] = 書き換える値 # OK (書き変わる)

ですが、書き方によってはうまく動かず、値が書き変わらないです。
例えば、次のように逆に書くと値が書き変わりません。

df[df["この列"] > この値]["この列"] = 書き換える値 # NG (何も起こらない)

この2つの違いは何でしょうか?
それは2つある条件(インデックス参照)のうち、真偽値の配列(df["この列"] > この値)を後に書くか前に書くかという点です。
結論からすると、次のように真偽値の配列を後にします。

  • 真偽値の配列を後に書くと動く(値が書き変わる)
  • 真偽値の配列を前に書くと動かない(値が書き変わらない)

ちなみに、値の書き換えは上述のように動きが異なりますが、単に選択するだけであれば同じ動きになります。

具体例

文章だけだとわかりずらいので、コードを載せます。

補足

なんでこんな動きになるのかは、理解できていません。(ちょっと悔しい...)

なお、GitHub (Gist)のソース貼り付けについては、次の記事にお世話になりました。
GoogleColaboratoryで書いたipynbをGistに公開する - 深層学習とその他

まとめ

ということで、インデックス参照でデータフレームの値を変更するときは、真偽値の条件を後にする!というポイントを覚えておこうと思います!

Visual Studio CodeでのJavaの開発に関するMeetupをチェックしました!

f:id:parupuntist:20210614231555p:plain
Visual Studio CodeJavaの開発ができるのでしょうか?
そんな疑問にうってつけのMeetupがあったのでライブ視聴させて頂きました。

結論からすると、まだ実務では機能面やJDKバージョンなどの面でEclipseのほうが安心な気がしましたが、Visual Studio CodeJava向け機能もかなり充実していることがわかりました。
それでは、チェックした情報を掲載します。

チェックした情報

今回ライブ視聴したのは「VS Code Meetup #13 - Getting Started with Java」です。
www.youtube.com

YouTube Liveだと後から見直せるのもいいですね!

内容は次のとおりです。

  • 1. JavaユーザのためのVSCodeのススメ(3:10あたり~)
    簡単なSpring BootのWebアプリ(URLパスの末尾を画面に表示する)を作成するデモンストレーション
    by @tikemin氏
  • 2. Visual Studio Code Java の開発チームへのフィードバック(31:40あたり~)
    利用者アンケートの要望(10個ほど)を題材に有識者お2方が対談
    by 寺田佳央氏(Microsoft社)、森島政人氏(Pnop社)
  • 3. VSCode Remote - Containers x Java(1:08:30あたり~)
    Dockerとの連携など
    by 菊田洋一氏
  • 4. Getting Started with VS Code x Java x Azure x LINE Bot(1:15:18あたり~)
    公開コードのコピペで簡単にオウム返しのLINE Botを作成できる (動画デモ)
    by もっちゃん氏

1つ目は、Spring Bootの簡単なコントローラ、WEB画面を実装するデモンストレーションです。
慣れてしまうと本当に簡単に開発できそうな気がしました。
(ただし私の環境では今のところ同じ操作感を実現できていません。)
なお、Coding Pack for JavaというVisual Studio CodeJDK、各種Extensionがセットになった環境を利用されているそうです。
デモのソースコードは下記にあるそうです。
(中を見たら今回のライブのコードのほうがより簡略化されおり、とっつきやすかったです。)
GitHub - tikemin/spring-boot-sample


2つ目の登壇者のおひとりが、Java向けのVisual Studio Codeの環境構築(Coding Pack for Java)について、別の動画を公開されています。
www.youtube.com
これによると、Javaのバージョンが11以上であることが必須とのことです。
古いバージョンを変えられない事情のプロジェクトには導入できなそうですね。(残念...)
ともあれ、こちらをチェックして1つ目のデモ内容をひとりハンズオンしようと思っています。

3つ目の登壇者の方が当初予定されていた内容は、次の記事にされているそうです。
qiita.com

4つ目の方(司会を兼務)のセッションでは、LINE Botも手を伸ばせば届くところにあるという情報が得られたのがよかったです。

所感とまとめ

長らく私はJavaのアプリケーション開発をEclipseで行っていました。
近年はVue.jsベースのSPAを主に作っていて、フロントエンドの相性の良いVisual Studio Codeをメインで使っています。

Visual Studio Codeはすぐに好きになりました。
デフォルトでダークな外観なので目が疲れにくく、フォントも色分けも見やすいです。

ただしバックエンドにSpring BootといったJavaを採用すると、どうしても高機能で使い慣れたEclipseが具合が良いです。
Visual Studio CodeEclipseの2つを入れても、メモリ8GBくらいのマシンであれば気になることはありませんでした。
(大量データを扱うアプリ出なかったこともあると思います。)
ですがIDEを2つ入れるのは単純に気持ち悪く、できれば外観の良いVisual Studio Codeに統一できないかな、と時々情報収集しています。

2019年ころに少し導入を試みたのですが、その頃はデバッグやテスト実行も最低限は動きそうでしたが、Eclipseのような操作感には至らない印象でした。

今回の情報では、それからかなり進化して、Java向けの機能が充実してきていることと、充実させる動きが進んでいることがわかりました。
ちょっとまだ実務で使うにはEclipseに軍配があがりそうですが、引き続き動向はチェックしたいです。