技術者プロフィール

はじめに

ここでは、私の技術についてのプロフィールを書いていきます。

少し長い記事ですが、興味を持っていただければ幸いです^^

プログラミングに興味を持ったきっかけ

技術ではないですが、私がIT技術者を目指すきっかけを書いておきます。

私がパソコンを使い出したのは6歳ぐらい、とにかくiMacでタイピングの練習をしていました^^「特打」というソフトが面白くてww。8歳ぐらいでブラインドタッチはできるようになっていましたね。あの頃のマウスは子供にもちょうどよかったですww
クラリスワークス(AppleWorks)で作図したり、表計算ソフトも使ってみたりして遊んでいました。

初めて私がプログラミングと出会ったのは14歳の時…Macでたまたま「スクリプトエディタ」を開いた時がきっかけです。AppleScriptを書くためのアプリだったことは知らなかったのですが、インターネット検索で出てきたテストコードを貼り付けると「Hello World!」の文字列がダイアログで現れました。

その時とても感動したんです。プログラミングでパソコンに命令を与えるなんてまだまだ自分には無理だ…と思っていたのに自分の入力した文字が画面に現れている!しかもたった1行で…

私はとにかく夢中でAppleScriptを検索して覚えていきました。今から思うとよくこんなマイナーな言語から始めたなぁ…と思いますが、for文、if文など基本的なことはAppleScriptで覚えたんです。

その後、Excel.VBA、C言語、C++言語…とどんどんプログラミングを必死で勉強していったのがきっかけです。

プログラミング技術

大体経験しているプログラミング言語を習熟度(5段階評価)とともに挙げておきます。

C言語 ☆☆☆☆

C言語の習熟度は大学で習う程度のことは完璧なつもりです。ただ、組込システムやC言語でUIを作った経験などはあまりないです。あくまでプログラミングを勉強する通過点でした。

この言語でよく言われるのは「ポインターが難しい」…?
むしろポインターの概念が無いと理解できない気がするんですが…この言語学ばずに高級言語を学ぶと参照渡し辺りでつまずくんでしょうね。この言語を学んでおいて良かったです!

C++言語 ☆☆☆☆

初めて出会ったオブジェクト指向…難しいというより、感動ものでした。

「まさにこれ、こんな感じで書きたかった~」オブジェクト指向がとても好きになりました。簡単なUIなら作ったこともあります。特に大学では画像処理を専攻していて、OpenCVを使う時には重宝しました。

ただ、好き嫌いだけで言うと現在は微妙…実行速度が速いのは良いのですが、注意しないとオブジェクト指向もどきになりがちなような。あとシングルパスコンパイラはやはり使いにくいなぁ…

Java言語 ☆☆☆

WindowsでもMacでも動くゲームを作りたいなぁ…と思った時に使ってみた言語。基本的な構文などは全然大丈夫です。Androidアプリ開発として使った経験はありません(後に書きますがKotlinならあります)。

ただ、現在も好きかどうかというと微妙…特にゲッターとセッターが面倒だな~ww
でも現在の最新バージョンでは変わっていると思うので、また機会があれば勉強したいですね!(Webのバックエンドで使う事もありそう)

C#言語 ☆☆☆☆☆

現在最もメインで使っている言語です。とにかく最高^^。C#11.0も書けます!(…というかいつもC#言語のバージョンアップが楽しみでしょうがないですww)
Linq作った人も最強です!とても便利(中毒性あるけど^^;)。

WPF(UWP)・Xamarin.Forms・Xamarin.iOS・Xamarin.Androidを使って、なるべくコード量を減らしながら開発する手法は、私がアプリを作成する時の第一選択です。Xamarin.Macはまだ使ったことはないですが(案件がない^^)。
最近、MAUIが登場してきて上記Xamarinの知識を生かしながらMAUIも勉強中です。

Excel及びExcelVBA ☆☆☆☆☆

「IT技術に興味を持ったきっかけ」でも少し触れましたが、Excel.VBAは私が14歳の頃から使っている言語!Excelにも自信ありです(というか複雑な処理をすぐVBAで解決しようとする人多いですね…)。「Excelができる人=VBA(マクロ)ができる人」みたいな勘違い?をしている人が多い気がします。

UI(フォーム)の開発もできます。Excelは結構IT技術者が見落としがちな技術では?と個人的には思っています。案外Excelでアプリレベルのこともできるのに…

仕様書を自動整形するシートや、データをHTMLに変換するシート、勤怠管理(15分単位)シートを作った経験もあります。

とにかくExcelならなんでもお任せあれww(←調子のり)

Kotlin ☆☆☆

実務でAndroidアプリ作成のために半年ほど使ったことがあります。ただ少し忘れてそう…また案件に出会えば一通りは思い出すかな?

Kotlinは個人的にすごく便利な言語だと思いました。スコープ関数(let, also, with, run)は好きですね!あとやはり欠かせないのはNull安全言語であること!

コンストラクタも独特で面白い書き方だなぁ…と思いました。

Swift ☆☆☆

こちらも実務でiOSアプリ開発のために半年ほど使ったことがあります。ただ、少し忘れてそう…Kotlinと習熟度は全く同じ感じです。自分が使っていたViewがdeplicatedになっていないか?などは改めて勉強しておかないと!(確かUIWebViewがWKWebView推奨に変わった?あたりで他の開発に移っています。)

これもNull安全言語ですね!StoryBoardやAutoLayoutも便利!…ですがGitで管理するときなどに差分が見づらい(…というかほぼ見れない)のが難点ですね。

まぁ…好きな部類の言語です^^

Objective-C ☆☆

まぁ…一応使ったことはあるし、書けないことはないですが、とても長い…こんなややこしい言語よく作ったなぁ~と思うレベルですww。MRCとARCが混在できてしまうのも気持ち悪い…

あえて長所を挙げるなら、C言語、C++言語のライブラリと適正があることでしょうか?

需要があるなら使いますが、iOSネイティブの新規案件ならSwiftがいいなぁ^^(もちろんXamarin.iOSでも!)

Web関係技術

ここではWeb関係の技術を習熟度(5段階評価)とともに挙げておきます。

HTML ☆☆☆☆

タグに関しては基本的なものは全て使えます。
あとは、SEO的なことで指定しておいた方が良い属性などの勉強が足りないかな?…と個人的には感じております。(SEO的な所をWordPressの機能に任せてしまっているので育たないのかもしれません)

あと、あまりHTML5のタグは使いません。HTMLを直書きするよりPHPで出力する事の方が多い事とも関係しているとは思います。将来的にはHTML5も書けるようになりたいなぁ…と思うこの頃です。

CSS ☆☆☆

まだまだ調べる回数が多いですが、一通りのデザインは出来るようになったつもりです。もしCSSで実現できなくてもJavaScriptで解決する手段もあるので、完全に出来ないデザインは無くなってきました。
ただ、CSSアニメーションなど、便利な機能もまだまだあると思うのでJavaScriptに頼らずに出来るCSSという意味では評価3というところでしょうか👀

PHP ☆☆☆☆

プログラミング技術とも言えますが一応Web関係に^^

PHPでの動的HTML出力、DBとの連携、リダイレクトなど、初歩的な事は一通り書けます。関数も参考文献は多いのでそこまでストレスなく開発はできてます。

言語としては、スクリプトならではの曖昧な解釈をされるので好きではありませんが、Web関係をやるならこれが一番モダンですしね…暇があったら他の言語も試してみよ~^^
※PHPのバージョンも上がってきて、関数の引数の型や戻り値の型も宣言できるようになってきましたね!まだ私が使っているサーバーのPHPバージョンでは出来ませんが、出来るようになれば少しずつ気持ちよく開発できるかもしれません!

Lalavel ☆☆

Webアプリと検索するといつも見かけるこのフレームワーク。
基本的にPHPで全て書けるという意味では導入しやすいのが利点なのかもしれないですね。初歩は勉強してみましたが、本格的に採用しようとは思い至らなかった技術ではあります。PHPは手軽なのですが、複雑なモデルを作っていると実行時バグが現れやすい(動的型付け言語…というかインタプリターなので)のが欠点だと私は感じているので、自分が作るサービスで使う事は無さそうですが、機会があれば深く勉強してみます!

JavaScript ☆☆☆☆

こちらもプログラミング技術といえますがWeb関係に^^

ロジカル的な所は全然大丈夫にはなったかな?
イベント処理、DOM操作なども行える用にはなっていますし、簡単なアニメーションなどは書けます。

ただ、まだまだ自分的には知識足りないと思っています。「こんなエフェクトどうやってJavaScriptで書いたんだろう?」というサイトを見かけることが時たまあるので^^

jQuery ☆☆☆

JavaScriptを使うなら一度は通る道…ということで学んでみました。
なんと言っても手軽にソースが書けるのは便利ですね!
学んだ当初は「最強!」とか思っていましたが、最近は他にも便利なライブラリはたくさんあるなぁ…と思いそちらに移行中です。

特にWebアプリ関係になってくると、コンポーネントの概念が無いとjQueryではとてつもなく書くのがややこしい…
元々アプリ開発経験者としては、コンポーネントで作る概念の方が身についているのもあり、複雑になるとjQueryでは難しいな…というイメージを持っています。

もちろん、ページにアニメーションなど装飾をつけたい。
簡単なお問い合わせページを作りたい。
…みたいな場合にはまだまだ現役ですよね!(特にWordPressでは重宝)

React ☆☆

javascriptメインでWebアプリを作るならこれは便利!
まだ電卓アプリレベルのような物を作ったぐらいですが、コンポーネントを使い回せるのがとても便利だと思いました。携帯アプリを作っているような感じで書けるので今後も覚えて行きやすそうだなとは思っています。

Vue.js ☆

少しReactより手軽にコンポーネントが作れる?
…みたいなイメージで位置づけています。
まだ本格的にこれを導入した経験はありませんが、一応読める程度には勉強しているつもりです。

Blazor(+Webassembly)☆☆☆

C#でWebアプリ作りたいなぁ…でもWindowsサーバーでしか実行出来ないのか…
などと考えていたときに見つけたこいつ!

Webassemblyで書くと、サーバーサイドの処理をアセンブリ単位でクライアントに送信して実行する(つまりWindowsサーバである必要が無い)というなんとも大胆な発想のフレームワークです。※もちろんWindowsサーバで実行する開発の仕方もあります。

個人的にはC#Loverなので、C#でWebアプリが作れるのはとても嬉しい!
モデル部分などの処理で今までの財産を使えたり、複雑な処理が簡単に実装できるのはとても魅力だと思いました。

…ただ、このフレームワークを選んでいる案件はかなり少ないですよね…まだ新しい技術だからなのか…
モデル部分がかなり複雑な場合やC#でWebアプリだけでなく、MAUIを使って携帯アプリ・PCアプリなどを作るなら、MVVMな感じでWebアプリを作る事で、一つ一つネイティブに作るよりはかなりコード量が減るのでは?と考えています。全てネイティブだと、Web・Windows・Mac・iOS・Androidの5つのアプリを作る必要が出てきますからね…

夢があるフレームワークだとは思うのですが、器用貧乏な面もあるのかもしれないですね💦
今後に期待です!(実は個人的なサービスには実装予定ww)

将来的にはWindowsサーバーを借りてWebassemblyでは無いBlazorも使って見たいなぁ〜

WordPress ☆☆☆☆

基本、サイト作りはWordPressで作ることが今のところ多いですね。このサイトもWordPressを使用してます。(子)テーマファイルをいじって見た目を変えることもとりあえずできるレベルです。一からテーマを作れと言われるとまだまだですが^^

スマートタグを作ってみた経験などはありますが、WordPressの編集画面にボタンとして表示するなど、顧客が使いやすい様な開発はまだやったことがないなぁ…

SQL(MySQL) ☆☆☆☆

SQLite、MySQLの経験ならあります。基本構文はもちろんですが、設計もプライマリーキー、インデックス、型、ビューぐらいならわかります。ただ、トリガーなどの知識はまだ経験したことがないですね(多分トリガーに相当する処理をPHPで書いてしまっているんでしょう)。

開発手法

ここでは開発手法(環境)の技術を習熟度(5段階評価)とともに挙げておきます。

VisualStudio ☆☆☆☆☆

C#好きならこれが使えないとまずいですよねww
もちろんVisualStudioForMacも大丈夫です(…というかこちらの方が好き^^)。

Xcode ☆☆☆

大昔、Xcode3.0とかの時は頻繁に使っていたんですが(C++使っていた時など)…
最近ではSwiftを半年担当した時に少し使ったぐらいです。

Git ☆☆☆☆☆

Gitは最低限開発者として使えないと…とか言いながらCUIは少ししかいじれませんがww

Web関係でGit使っていない人がまだまだ多い気がしますがもったいないなぁと思います。WordPressならまだ少しはわかりますが、特にHTML+CSSでコーディングしている人はGit使うと世界が変わると思います。

Git管理はいいですよ~!

SourceTree ☆☆☆☆☆

Git開発では基本的にSourceTreeを使って開発しています。

Atrassian ~Confuluence~ ☆☆☆

ページの作成は普通にできます。技術とはいえないかもしれないですがww

Atrassian ~JIRA~ ☆☆☆☆

基本一人の開発でもJIRAはよく使っています。テキストやExcel形式でやることを記述するよりもチケットとして管理した方が自分でも整理しやすいし、Bitbucketと連携してくれるのもありがたい。

そして、発注者などに進捗状況を把握してもらう手段としても使えますよね^^

Atrassian ~Bitbucket~ ☆☆☆☆☆

Gitでリモートリポジトリを使うにはこれ!無料でプライベートリポジトリが使えるのはありがたい。

もうわかったと思いますが、基本的に特に要望がない限りプロジェクト管理する時はAtrassianを使っています。

DreamWeaver ☆☆☆

基本的にHTMLやCSSをいじる時はDreamWeaver使っています。

まぁテキストエディタとFTPがくっついた様な感じですね…処理が遅い時も多いのでもっと良い環境があれば乗り換えたいなぁ~とも思います。

少しWordPressとの連携が悪いのがたまにキズ…

FileZilla ☆☆☆☆

少しサーバをいじるだけならFileZillaを使っています。

簡単なソフトなので技術と言えるほどではないですが^^

Emacs 

CUIでテキストいじるならまずEmacsを使う派ですww

普段パソコンをいじる時でも、「下矢印はCtrl+n」「上矢印はCtrl+p」「行頭移動はCtrl+a」などなどEmacsの動かし方で動かしていることが多いので、Emacsのショートカットに対応していないテキストエディタは環境設定で無理矢理置き換えてでもEmacsのショートカットにしているぐらいですww

Macは結構対応してくれているのがありがたいんですが、Windowsは対応していないことが多いですね…「1ページ下はCtrl+v」ですが、「Ctrl+v」といえば貼り付けと被る。CapsLockなんていらないから、Ctrlとは別の名前でもいいからショートカットキーを増やしてくれ~ww

現状、開発環境もUNIX環境が一番!Windowsでももちろん開発できますが😅

デザイン関係

ここではデザイン関係の技術を習熟度(5段階評価)とともに挙げておきます。

Illustrator ☆☆☆☆

あんまり創造的なイラストはかけませんが、作図やトレースなどは大丈夫です。
写真やフリーのイラストを加工していく手法なら独自のイラスト制作も全然可能です!

仕様書などのPDFの作成も最近Illustratorで描くのが好きです。(InDesignを使うときもありますが)

PhotoShop ☆☆☆

簡単な画像の補正や部分補正、トリミング、テキスト挿入などは大丈夫です。
最近は少しゴミを消したり、擬似的に影をつけたり少しずつ出来ることは増えてきました。

プログラミングで写真の加工を頼まれることはあまりないので趣味程度です^^

InDesign ☆☆

Wordよりも高機能なエディターというイメージ。
Adobeならではの癖はありますが、もう慣れました😅

私の仕事上ではあまり使う機会がないですが、文書作成を行う機会があるときは私はこれを使っています。

研究

[高校時代] 数学(数列・離散数学)

高校生の時に数列の自由研究を行っていました。「1~100まで足したら何になるか?」という疑問から始まり、総和公式(Σの公式)という公式があることを知りましたが、高校では「1^3~100^3」までの公式しか教えてくれません。

  • 「1^4~100^4の合計」はどうやって求めるのか?
  • 「1^2.5~100^2.5合計」はどうやって求めるのか?
  • そもそも公式はどのようにして作れば良いのか?
  • 簡単に公式を作る方法はないのか?
  • 数列の簡単な導出方法(一般項の求め方)はないのか?

など、いろいろな観点から研究を行い、JSECと呼ばれる全国高校生研究発表大会で「文部科学大臣賞」を受賞することができました^^

その後、ISEFと呼ばれる世界高校生研究発表大会に出場しました。

[高校時代] 情報の研究(統計)

昔から情報分野にも興味を持っていたので、情報分野の研究も高校生の時にしています。

迷路をプログラミングでランダムに作らして、その迷路がどれだけ難しい迷路なのか?というテーマで研究を進めました。

情報の技術も必要でしたが、統計学の技術も学べたと思います。

この研究は日本学生科学賞呼ばれる全国高校生研究発表会に出場!…またまた「文部科学大臣賞」を受賞することができました^^

ISEF(世界高校生研究発表大会)への出場権も得たのですが、上述の数学の研究での出場が確定していたため、この研究でISEFへの出場はしていません(出場したかった…T_T)。

[大学時代] 画像処理の研究

当時本当に研究が好きで、「大学教授になりたい!」という夢を持っていました。そこで、大学1年生の頃に研究室に頼み込んで早速研究開始!

選んだテーマは、趣味の囲碁が好きだった事もあり、カメラを用いて囲碁の棋譜(新聞などに載っている番号が振られた表)を自動作成するというものです。さらに、「残り10秒」などの秒読みの機能もつけました。

カメラは碁盤の真上に限定せず、斜めからでも記録できるようにしました。しかし、あまりにも角度が浅いと碁石の厚みで奥の方の碁石が隠れてしまって上手くいかない事も多かったですね。

でも、理想的な環境なら棋譜を記録できるシステムは出来ましたし、1年生の時から自発的に画像処理を学べたという心構えは今でも大事にしている事です^^

大学教授の夢は経済的な理由で断念せざるを得ませんでしたが…本気で夢に向かって頑張った自分の経験は私の貴重な財産だと思っています^^

終わりに

大体書いたつもりですが、書き抜けている技術もあるかもしれないです^^

いろいろなことに挑戦するのが好きなので、新しい技術も積極的に取り入れていくタイプです!

とにかくパソコンでの作業は好きなので、知識0の技術でも大体なんとかなるもんですww。基本的に独学で勉強してきたので、本などを買わなくても検索だけで覚えていってしまうことが多いです。

というより…それが技術者の勉強法なのでは?とか思ってます。本はまだわかりますが、セミナーなどに参加しても、実際に開発する時は調べることになるのだから、調べる技術を育てた方が技術が向上するのでは?と思っています。

特に初心者ほど有料の動画セミナーなどに参加して技術を覚えたがる傾向が見受けられますが結構無駄金になると思います。初心者向けの文献なんてそこらへんに転がってます。「3ヶ月でWebデザイナーに!たった10万円!」なんて売り文句はほぼ詐欺だと思ってますww。そんな簡単な世界じゃないし「正社員」とは一言も書いていない…時給数百円のWebデザイナーだって存在しますしね。…というより、自発的にWebデザイナーの知識を会得しようとしない時点でWebデザイナー半分失格だと思います。本当のWebデザイナーは、分からない事が合ったら瞬時に検索画面を開いて、自分から技術を学んでますよ^^

上級者になって学ぶべき事が分からなくなってきてから、IT技術者が集まる勉強会などに参加するのはありだと思います。

本も選び方によっては主観が入った技術を覚えてしまったり、著者が全ての使い方を書いていない、そもそも情報が古いこともあるので、公式ドキュメントを見るのが一番だと思ってます。でもパソコンから離れている時に関数辞典とかHTMLタグ辞典みたいなものを流し読みするのはいい勉強法だと思います^^

なんだか最後は勉強法の話に逸れてしまいましたww

長文になってしまいましたが、最後まで読んでいただきありがとうございました。