ywatanabe

福岡市出身。シアトルのマイクロソフト本社シニアソフトウェアエンジニア。ビジネス向けCR…

ywatanabe

福岡市出身。シアトルのマイクロソフト本社シニアソフトウェアエンジニア。ビジネス向けCRMツールDynamicsにCopilot機能を実装する仕事などをしています。電子書籍で支援いただければ嬉しいです→ https://www.amazon.co.jp/dp/B09LM24XBK

マガジン

  • ChatGPTで「英語脳」を育てよう

    このマガジンではChatGPTを活用して「英語脳」を鍛える方法や、効果的な英語学習をサポートする記事を紹介しています。著者自身はアメリカで働いており、何十年も英語で仕事をしてきましたが、英語はまだまだです。語学力向上に良い方法はないか常に模索してきましたが、ChatGPTがたくさんの可能性を示していると感じました。普段はMicrosoftでエンジニアとして働いて、最近はCopilotなど機能統合をやっているので、最新のプロンプト・デザインは触れる機会があるので、それを多いに活用できればと思っています。

  • シアトルで実践する「プログラミング的思考」

    「プログラミング的思考」とはいったい何なのでしょうか?いまひとつよく分からないと感じている人も多いのではないでしょうか。ただ、ひとつ言えることは「プログラミング的思考」を身につける目的が「コンピュータ資源を効果的に活用して様々な問題を解決できるようになること」だということです。 ところでソフトウェアエンジニアの仕事は、まさに「コンピュータ資源を活用して問題解決をする」ことです。ですからソフトウェアエンジニアの普段の考え方や実践を知ることで「プログラミング的思考」の本質が見えてくるのでは、と考えました。 このマガジンでは、シアトルのマイクロソフト本社でシニアソフトウェアエンジニアとして働く筆者が、仕事で使う思考や実践を、プログラミング的思考、コンピューテーショナルシンキング、K12コンピュータサイエンスフレームワークなどの背景と関連づけながら解説していきます。

最近の記事

親の子育て通信簿

子供にも親を評価してもらおうわが家の双子たちは今年の秋から女子大生になりました。バイトしてお金を稼いだり、車を運転して友達同士でご飯を食べに行ったりと「大人っぽい世界」を楽しんいるようです。 大学生になるタイミングというのは「子供」から「大人」になる過渡期でしょう。そして親にとっても「子育て事業」の一区切として、おおよそ18年間の「子育て」について評価してもらう良い機会だと感じました。そこで、子供が親のパフォーマンスを評価する「親の子育て通信簿」というものを作ってみました。

    • ChatGPTと英語フレーズのドリル練習をして英語脳を作ろう

      よくあるフレーズ集ネイティブがよく使う英語フレーズをそのままオウム返しのように打ち込んで英語脳を作るためのGPTsを全部で7つ作りました。(GPTsはChatGPTをカスタマイズしてシェアできる機能です。現時点では有料版ChatGPTでしか使えません) ChatGPT - 英語フレーズ Vol.1「教室」編 (openai.com) ChatGPT - 英語フレーズ Vol.2「旅行」編 (openai.com) ChatGPT - 英語フレーズ Vol.3「お天気」編 (

      • ChatGPTに「言い換え」を教えてもらって英語脳を鍛えよう

        パラフレーズ(言い換え)とは?日本語と同じように英語にも多くの「言い換え」があります。英語ではこのことを paraphrase (パラフレーズ)と呼びます。 言語において「意図」を伝達することは最も重要な目的となるのは言うまでもありません。そしてパラフレーズは、ある意図を異なる言葉や表現を用いて伝える方法です。さらに英語を学ぶ上では、同じ意図を伝えようとするパラフレーズに数多く触れることは学習効率のギアを1つ上げることになると思うのです。 パラフレーズに遭遇して得られる効果

        • ChatGPTの新機能「音声会話」を使って特定の単語を含んだ英文の壁打ちをする

          ChatGPT新機能「音声会話」を使うChatGPTで「英語脳」を育てるシリーズの記事をいくつか書いてきましたが、最近導入されたChatGPTの新機能「Voice converstation」を使ってChatGPTにより自然な英語の学習サポートをさせる方法を考えています。 今回はその一つ目として、任意の英単語を指定したら、その英単語を含んだ英文をどんどん読み上げさせる練習が出来るようにプロンプトを作成してみました。 とりあえずどんな感じなのかわかるようにYouTubeに動画を

        親の子育て通信簿

        マガジン

        • ChatGPTで「英語脳」を育てよう
          6本
        • シアトルで実践する「プログラミング的思考」
          14本

        記事

          ChatGPTを活用して「英語脳」を育てる~ 丁寧な表現を意識する練習

          英語の丁寧表現のおさらい英語にも丁寧な表現の程度にいくつかの段階があり、会話のコンテクストや立場によって、適切だと考えられるレベルがあります。もちろんすべての表現を「丁寧レベル=MAX」で話せば少なくとも相手に不快な思いをさせないという点ではセーフですが、状況によってはバカ丁寧になりすぎたり、相手にも同じ程度の丁寧さを要求することになり、最適な会話にならない場合もあります。 表現の丁寧さの程度は大きく分けて、少なくとも3つあると言えます。 直接表現: もっとも短く、直接的

          ChatGPTを活用して「英語脳」を育てる~ 丁寧な表現を意識する練習

          ChatGPTを活用して「英語脳」を育てる~ 接頭辞と語幹の組み合わせで考える

          単語の合成についてのおさらい日本語の「非常事態」という言葉は「非・常・事態」という部品から成っているのはご存じの通りです。「常にある状態ではない」という意味ですが、言葉の部品がそれぞれに意味を持ち、合わさってひとつの言葉として意味を持っていることはいまさら説明するまでもないでしょう。 そして、英語も同様に「部品で成り立っている」言葉がたくさんあります。例えば下図を見てください。 ここでは例として、port という語幹(英語で root もしくは base と呼びます)の直前

          ChatGPTを活用して「英語脳」を育てる~ 接頭辞と語幹の組み合わせで考える

          ChatGPTを活用して「英語脳」を育てよう!

          はじめに英語で考えながらコミュニケーションを取れるようになることは、英語学習の究極の目標の一つでしょう。それは「英語脳」を育てるということでもあります。残念ながら日本での英語教育の多くは「英語脳」を育てることを目的にはしていないようです。いつまで経っても「日本人は英語が苦手」という状況が何十年も続いていますが、おそらく理由はそのあたりにあるのではないかと想像しています。 それでも、英語脳を育てる方法はすでにいくつか存在しているようですが、ここにきてChatGPTのような会話型

          ChatGPTを活用して「英語脳」を育てよう!

          シアトルで実践する「プログラミング的思考」[14] 抽象化(3)インターフェーイスによる抽象化

          ソフトウェアは分解によっていくつもの小さなソフトウェア部品に分けられ、それらの部品が集まって連携することで問題を解決します。その際、それぞれの部品は抽象化された機能を提供し、部品と部品の間の「関わり」も抽象的になります。このような部品間の接続を「ゆるくつながっている」と表現したりします。(この「ゆるいつながり」は英語で loose coupling と呼んだりします)。 分かりやすい例を挙げるとすると、スマートフォンの「オペレーティングシステム(OS)」と「アプリ」がありま

          シアトルで実践する「プログラミング的思考」[14] 抽象化(3)インターフェーイスによる抽象化

          シアトルで実践する「プログラミング的思考」[13] 抽象化(2)パターン認識による抽象化

          抽象化(1)分解による抽象化 では「分解の文脈」でどのように抽象化が行われるかを解説しました。ここでは「パターン認識の文脈」で抽象化をみていきます。パターン認識は「プログラミング的思考」の派生元とされる「コンピューテーショナルシンキング」の4つの主要概念のひとつです。他の3つは分解、アルゴリズム設計、そして抽象化です。 パターン認識(pattern recognition)とは解決すべき問題の具体例の中から規則性を見出すことです。パターン認識の結果「共通する部分」と「異なる

          シアトルで実践する「プログラミング的思考」[13] 抽象化(2)パターン認識による抽象化

          シアトルで実践する「プログラミング的思考」[12] 抽象化(1)分解による抽象化

          「抽象化 (abstraction) 」は「プログラミング的思考」の派生元と言われている「コンピューテーショナルシンキング」の4つの主要概念のうちのひとつです(その他は分解、パターン認識、アルゴリズム設計)。 「抽象化」がその4つのうちのひとつであることから、他の3つとは独立した概念のように感じるかもしれませんが、実際はお互い密接に関係しています。その関係を表すのは少し難しいのですが、三角形を使って例えてみることにします。 上図の三角形全体がコンピューテーショナルシンキン

          シアトルで実践する「プログラミング的思考」[12] 抽象化(1)分解による抽象化

          シアトルで実践する「プログラミング的思考」[11] 論理的に考える(2)ロジックを使う

          論理的に考える(その1)では「論理的にアルゴリズム設計をする」ことを解説しました。ソフトウェアエンジニアが「重複がなく、なおかつ問題の全てを網羅する」よう論理的にアルゴリズムを設計することを取り上げました。 ここでは「論理的に考える」という思考はもちろんですが、さらに「論理を使う」場合について解説します。具体的には条件文と呼ばれる制御構造でどのようにロジック(論理)が利用されるかを見ていきます。 条件文のおさらいアルゴリズムは様々な制御構造を使ってステップの流れをコントロ

          シアトルで実践する「プログラミング的思考」[11] 論理的に考える(2)ロジックを使う

          シアトルで実践する「プログラミング的思考 」[10] 論理的に考える(1)なぜ?の思考

          ソフトウェア開発やプログラミング活動において、論理的思考が必要である事はよく知られています。プログラミング的思考も「論理的に考えていく力」と定義しています。 自分が意図する一連の活動を実現するために、どのような動きの組合せが必要であり、一つ一つの動きに対応した記号を、どのように組み合わせたらいいのか、記号の組合せをどのように改善していけば、より意図した活動に近づくのか、といったことを論理的に考えていく力 ですが、論理的に考える力が重要であることは漠然とはわかっているけれど

          シアトルで実践する「プログラミング的思考 」[10] 論理的に考える(1)なぜ?の思考

          シアトルで実践する「プログラミング的思考」[9] ~データを表現する(2) データを抽象化する

          データを表現する(2)デジタル情報として表す では「デジタル情報」の利点と、人間にとって扱いやすいデジタル情報としての「データ型」について解説しました。ここではデータ型の抽象化についてみていきましょう。 抽象データ型データ型が表す事象が複雑になり、より人間にとって意味あるものに近づくにしたがい「抽象化が進む」と言い表します。高度に抽象化されたデータは「抽象データ型」と呼ばれ始めます。 抽象データ型はそれにとって意味のある、いくつかの操作(オペレーション)を行うことが出来る

          シアトルで実践する「プログラミング的思考」[9] ~データを表現する(2) データを抽象化する

          シアトルで実践する「プログラミング的思考」[8] ~データを表現する(1) デジタル情報として表す

          (上の挿絵「お前もだぞ」と書くつもりが「お前だぞ」と間違えて書いて意味不明になってしまいました。できるだけ早く直します。すみません) コンピューターシステムで問題を解決しようとするときまず必要なのが、その問題に関わるデータをコンピューターが処理できる「デジタル情報」として表すことです。世の中にある様々な物事や概念が、デジタル情報としてどのように表されているかを知る事は「プログラミング的思考」を行うために必要な基礎のひとつです。 なぜデジタル情報として表すのかそもそもなぜデ

          シアトルで実践する「プログラミング的思考」[8] ~データを表現する(1) デジタル情報として表す

          シアトルで実践する「プログラミング的思考」[7] ~分解する(2)ソフトウェアの分解

          分解する(1)のおさらい分解する(1)責任で分ける、ではコンピュータシステム全体が物理的なハードウェアから、個々の問題を解決するアプリケーションまで「責任」を軸に分けられているようすを解説しました。 ハードウェア層、ドライバ層、そしてオペレーティングシステムの上で動くアプリケーションが、一般的なプログラミングの成果物です。問題によってはハードウェアを含めた全体を解決(ソリューション)として開発することもあります。コンピュータにつなげてペンとタブレットで絵を描くソリューション

          シアトルで実践する「プログラミング的思考」[7] ~分解する(2)ソフトウェアの分解

          シアトルで実践する「プログラミング的思考」[6] ~分解する(1)責任で分ける

          「プログラミング的思考」の由来でもある「コンピューテーショナルシンキング(computational thinking)」には4つの柱となる概念があります。分解(decomposition)はその中のひとつです(それ以外の3つは、パターン認識、抽象化、そしてアルゴリズム設計)。 「分解」とは、ひとつの大きな問題を、マネージ出来る小さくて理解しやすい部分に分け、それぞれを解決して最終的に統合して問題を解決する戦略的思考です。これは昔からある有名な「分割統治」と呼ばれる戦略と原

          シアトルで実践する「プログラミング的思考」[6] ~分解する(1)責任で分ける