AIでスキルの幅を広げよう

フリーランス

以前、AIを使って未経験の言語の簡単なバッチ処理を作った話を書きました。

その後もAIを活用しつつ仕事をこなしていました。
そして新たに身につけたスキルは以下の通りです。

  • Gitlab CI/CD(CIツール)
  • Unityのシェーダー
  • Unityのネイティブプラグイン
  • Ruby on Rails
  • RSpec(テストツール)
  • T4テンプレート(コード生成ツール)

ちょっと前までは短期間にこんなにたくさんのスキルを身につけることはありませんでした。
せいぜい1個か2個くらいをじっくり時間かけて勉強しつつこなすのが関の山でした。
AIが活用できるようになってから格段にスキルの習得効率が向上したのを実感する日々です。

なお、この記事で言うスキルの習得は、「AIを活用してすでにある成果物の修正や拡張が可能である」ことを指します。
「0から自力で実務レベルの成果物が作成可能である」「そのスキルに関して記事を書いたりプレゼンできる」みたいなレベルに達するにはやっぱり経験を積み重ねる必要がありますので誤解なきようお願いします。

そんなわけで今回はAIを使ったスキルの習得方法を紹介していきます。

プログラミング言語

わざわざ言うまでもないことですが、扱えるプログラミング言語が増えるメリットはとても大きいです。
単純に仕事の幅が広がりますし、様々なプログラミング言語の設計思想に触れることで実装能力も向上するでしょう。

プログラミング言語の習得は、AIが登場する前はなかなか気合いのいる作業でしたが、AIが登場してからはなんと「未経験のプログラミング言語での成果物の作成と習得を並行して行う」なんてこともできるようになってます。

1.プログラムを出力させる

なにはともあれまずはAIにプログラムを出力してもらいましょう。
実装したい機能の要件を整理してAIに渡すプロンプト(指示)を作成します。

機能が複雑でわかりづらいようであれば、シンプルな機能に分解するとよりシンプルでわかりやすいプログラムを出力してくれるようになります。要件をずらーっと列挙してAIにわかりやすい単位でプログラムを出力してもらう、というのもありです。
特にそのプログラミング言語について全く知識がない状態の時は、できるだけわかりやすいプログラムを出力させた方が内容の理解がはかどります。

2.プログラムを解説してもらう

プログラムが出力されたら、AIにその内容を解説してもらいましょう。
四則演算くらいであれば大抵のプログラミング言語で似たような構文になると思うので問題ないと思いますが、中にはプログラミング言語特有の構文が出てきたりします。
そういったよくわからない構文が出てきたらAIに解説してもらいましょう。プログラムが出力された後に「1行ずつ解説して」とAIに聞いてまとめて解説してもらうのもありです。

「解説されたけどまだイマイチピンと来ない」となった場合はさらに深堀して聞きましょう。
「XXXの構文について初心者にもわかりやすく解説して」「YYYの構文の使い方の例をいくつかあげて」みたいな感じで聞くと良いです。

3.プログラムを理解する

AIにプログラムを解説してもらってある程度内容を把握できたら、次はその内容をしっかりと自分の知識と照らし合わせて理解を進めましょう。
プログラムの解説を読んでいると、あなたの知ってるプログラミング言語にはない処理があったり、逆によく似た処理があることに気が付くはずです。
「XXXの処理は○○の言語では再現できないの?」「YYYの処理は××の言語だとZZZの処理と同じ?」等とAIに聞けば、あなたの馴染みのあるプログラミング言語にあわせた説明をしてくれるはずです。
自分の言葉で確認することでより理解が進みます。書籍やネットの検索だけでは難しいAIならではの利点の一つですね。

もし出力されたプログラムとあなたの知ってるプログラミング言語との比較が難しいようであれば、「○○の言語で同じ処理を行うプログラムを作ってみて」とAIにお願いするのもありです。

4.プログラムを実行する

続いてプログラムを実行してみましょう。
すでにプログラムを実行できる環境が整っているのであればその環境で、まだ実行できる環境がなければオンラインでプログラムを実行できるサービス等を活用しましょう。
なお、プログラミング言語(あるいは使用しているフレームワーク)によってはプログラムのファイルの置き場所が重要なものもあったりするので注意してください。これまたAIに聞くと良いでしょう。

プログラムを実行してみて、すんなり意図した結果が出ればよいですがなかなかそうはいきません。
単にAIの出力ミスの場合もあれば、必要な情報が足りてなかったため不十分なプログラムになってしまった場合なんかもあります。
ですが一発でうまくいかないのは想定内です。次のステップに進みましょう。

5.プログラムを修正する

プログラムを実行したらエラーあるいは意図せぬ結果が出た場合はプログラムの修正が必要です。
とはいえ未経験のプログラミング言語だとエラーの解消も一苦労です。AIに頼りましょう。
とりあえず「○○というエラーが出たけどどうすればよい?」「△△じゃなくて□□の結果になるようにしたいんだけどどうすればよい?」みたいにエラー内容やあなたのやりたいことをそのままAIに聞きましょう。
そうすると修正したプログラムを出力してくれるので、あとはひたすら実行→修正の繰り返しです。

ただし、ただAIに言われたまま修正するだけではもったいないです。
「何が問題だったのか」「どうしてこの修正で解決するのか」をきっちりAIに確認しておきましょう。

最終的に意図した結果が出るプログラムができることでしょう。
おめでとうございます、あなたは未経験の言語でもプログラムが実装できるようになりました。

フレームワーク

フレームワーク(Framework)とは、システム開発を効率化するための基盤や骨組みです。
Web開発(バックエンド)であれば「Ruby on Rails」「Django」、Web開発(フロントエンド)なら「React」「Vue.js」、ゲーム開発であれば「Unity」「Unreal Engine」といったもののことを指します。

フレームワークの習得も、プログラミング言語の習得と同様に仕事の幅を広げることができます。
フリーランスの案件でも特定のフレームワークの経験が必須の仕事はよく見かけます。

メリットが大きい分、習得難易度もプログラミング言語と同等かそれ以上です。
ですがAIを活用することでその難易度も大幅に低下させることが可能です。

1.フレームワークの特徴を学ぶ

まずは簡単にフレームワークの特徴を押さえておきましょう。
「○○というフレームワークの特徴を教えて」「どういうメリット・デメリットがあるの?」等を聞けば大体の概要は把握できるでしょう。

フレームワークの特徴を押さえておくことで、よりフレームワークを理解しやすくなります。「Web開発用のフレームワークだから○○の役割を持つファイルがあるはず」「△△の設計思想を持っているのだから□□の仕組みがあるはず」といった感じです。

2.プロジェクトの構成を把握する

フレームワークはフォルダ構成が重要な意味を持つ場合が多いです。
「○○の処理を行う際は△△のフォルダにあるファイルを参照する」「□□のフォルダにあるファイルはリリースビルドには含まれない」といった感じです。

まずはそのフレームワークがどういうフォルダ構成なのかをAIに聞きましょう。
AIが教えてくれたフォルダ構成がプロジェクトのフォルダ構成にうまくあてはめられないようであれば、逆にプロジェクトのフォルダ構成をAIに教えてその意味を教えてもらうのもありです。もしフレームワーク的には特別な意味のないフォルダだったとしても、その名前から用途を推察してくれたりもします。

3.プロジェクトの修正・機能追加を行う場所を特定する

そのプロジェクトに対してどういう修正をしたいか、どういう機能追加をしたいかをAIに伝えましょう。
どのファイルをどう修正すべきか教えてくれるはずです。
単に修正場所だけAIに教えてもらってもよいですが、「なぜそこの修正が必要なのか」「他のやり方はあるか」みたいな事を聞いて理解を深めながら作業を進めるとあなたのスキル習熟度はより高くなるでしょう。

4.プロジェクトを修正する

修正場所が特定できたら、AIの指示に従い修正を行いましょう。
主な流れはプログラミング言語の場合と同様です。
ひたすら実行→修正のサイクルを繰り返していくのみです。

ただし、注意点があります。くれぐれも既存の処理を破壊してしまわないようにしましょう。
修正箇所の既存のプログラム等をAIに伝えて、影響がないよう(or少ないよう)修正をしてもらうと良いでしょう。
※既存のプログラムをAIに伝える際は、機密情報までうっかり伝えてしまわないよう注意してください
新規ファイルの追加だったり、既存のプログラムに新しくメソッドを追加する等であれば既存の処理に影響がない(少ない)場合もありますが、注意するに越したことはないです。

既存の処理に影響がある修正が入った場合は、レビューやテストもしっかりしてもらう必要があります。
レビュワー(あるいはテスター)に「○○の修正で□□の機能にも影響があるので問題ないか確認お願いします。」的なことを伝えれば大丈夫なはずです。

CI/CDツール

CI/CD(Continuous Integration / Continuous Delivery or Deployment)ツールとは、システムの開発・テスト・デプロイの自動化を支援するツールのことです。
有名どころだと「Jenkins」「Github Actions」「GitLab CI/CD」といったようなものがあります。

AI登場以前、僕はCI/CD周りに手を付けたことがありませんでした。
CI/CDを活用しているプロジェクトに参画していたことはあったので、ある程度どういうことができるのかは知っていたものの、「なんか難しそう(orめんどくさそう)…」と苦手意識を持っていました。

ですがフリーランスエンジニアとして活動している以上、何となくでいつまでも苦手意識を持っていても仕方ありません。
「AIを使えば何とかなるだろう」とAIに期待を寄せつつ挑戦してみました。
実際に挑戦してみた結果、思っていた以上に簡単にCI/CDツールが作れるようになりました。

1.設定の仕方を把握する

大抵のCI/CDツールは設定の仕方に癖があったりしますが、やってること自体はけっこう単純だったりします。
ただその設定の仕方の癖が未経験者からするとハードルに感じやすいかなと思っています。
(僕もハードルの高さを感じていたタイプです)

そこで活躍するのがAIです。
どういう設定が必要なのか、設定ファイルにどういう記述をしなければいけないかをAIに根掘り葉掘り聞きましょう。
もちろん大抵のCI/CDツールには公式ドキュメントがありますが、他のCI/CDツールを触ったことがない人からするとわかりづらいものも少なくありません。CI/CDツールに不慣れなのであればAIを使用するのを推奨します。

2.設定を追加・修正する

設定の仕方を把握したらあなたがCI/CDツールでやりたいことをAIに伝えましょう。
あなたがCI/CDツールに不慣れなのであれば、よくわからない記述やキーワードがたくさん出てくると思うので都度AIに説明を求めることも忘れずに。

あとはプログラミング言語やフレームワークと同様、ひたすらトライアンドエラーです。
慣れないうちは少し時間がかかるかもしれませんが、一度できたら次はスムーズにいけると思います。
僕も最初は思っていた以上に時間を取られましたが、2回目以降はすんなり対応できるようになりました。

シェーダー

シェーダー(Shader)はゲーム等で描画処理を制御するプログラムのことです。
主に、オブジェクトの色や光の反射、影の計算等を行います。
要するに見た目を作るプログラムです。

CI/CDツールの時と同様、僕はシェーダーに関しても謎の苦手意識を持っていました。
何かしらの特殊な見た目を実装する時、できるだけシェーダーをいじらずに済む方法を模索する日々でした(笑)
しかしAIを活用してシェーダーのスキル習得後、シェーダーを実装するという選択肢を取れるようになり実装効率の向上を実感しています。

1.実装したい表示がシェーダーで実現できるか確認する

シェーダーをあまり知らないと、そもそもシェーダーで何ができるかもよくわからないことが多いです。(僕もそうでした)

なのでまず、あなたが実装したい表示がシェーダーで実現可能なのか、シェーダーで実現するのが最適かをAIに聞いてみましょう。
いくらシェーダーを習得したくても、向いていない表示をシェーダーで実装するのはやめておいた方が無難です。

2.シェーダーを出力させる

プログラミング言語の時と同様に、まずは実装したい内容をプロンプトにまとめて、AIにシェーダーを出力してもらいましょう。

シェーダー未経験の場合、見慣れない記述しかないと思います。
1行ずつAIに解説を入れてもらうとよいでしょう。

3.シェーダーの実行・修正を行う

あとは他と同様に、シェーダーを実行してみて意図した挙動になるまで実行→修正のサイクルを繰り返しましょう。

あくまで僕の経験上ですが、シェーダーは描画という限られた役割に特化している分、割と少ない試行回数で求めているものをAIが出力してくれます。
AIで何かスキルを習得したいと思った時に、とりあえず試してみるのにおすすめなスキルです。

まとめ

今回紹介したAIを活用したスキル習得には共通点が多いことに気付かれた人も多いと思います。
どんなスキルかに関係なく、以下の点が重要です。

  • とりあえずAIに作ってもらって実行してみる
  • 実行して意図せぬ挙動だったら修正して再度実行、のサイクルを繰り返す
  • 不明点があれば都度AIに解説してもらう

以上の点を押さえておけば、今回紹介していないスキルに関しても大体なんとかなると思います。

仕事で未経験の分野に挑戦するチャンスというのはけっこうたくさんあります。
僕も今までのエンジニア人生で何度も「○○の実装やってみない?」「△△の修正できる人いない?」「誰か手すきなら□□のバッチを作って」みたいなことがありました。
挑戦してみたこともありますし、あまり興味がわかなかったり難易度の高さに躊躇して挑戦しなかったこともあります。忙しい振りをしたこともあります(笑)
しかし、もし当時にAIがあれば上記のほぼすべてに挑戦していた気がします。それくらいAIによるサポートは強力です。

エンジニアとして活動していく以上、スキルを習得し続けていかなければなりません。
より多くのスキルを習得できるよう、ぜひともAIの活用を試してみてください。

コメント

タイトルとURLをコピーしました