🦁

IfcOpenShellのインストール及び使い方

2024/01/21に公開

IfcOpenShellとは

IFCを色々こねくりまわせるパッケージ

C++かPythonのどちらかで。手軽に始めるならPythonがオススメ

IFCの中身をいじったりなどの基本内容だけでなく、実務に役立ちそうなパッケージが別途準備されており、コマンドラインから簡単に実行可能。
※追加インストール要。一部blenderを使うことでしか使えないツールも存在する。

IfcOpenShellインストール方法

※Python 3.10.6の環境下で実行

Zipをダウンロード

https://github.com/IfcOpenShell/IfcOpenShell/releases/

Zipを解凍し、blenderbim\libs\site\packagesへ移動

好きなパッケージを選択し、コピーする(Ctrl+C)。
適宜好きなパッケージを選んで、Ctrl+Cしてください。分からない人はとりあえず全部選んでCtrl+Cでも可。
例えば、以下名前のフォルダを選択する。
ifcopenshell
ifctester
Ifcpatch

Pythonのsite-packagesフォルダへコピペ

各自のPythonのsite-packagesフォルダへ、先ほどCtrl+Cしたものをペーストする。(Ctrl+P)なお、自身のPython環境のsite-packagesフォルダの位置は以下の方法で確認する。
コマンドプロンプトを開いて、下記を打てばOK

python -c "import site; print ( site.getsitepackages())"

実行確認

実行確認のついでに、IfcOpenShellでIFCのオブジェクトの情報を探ってみる。

サンプルIFC

RC_Column.ifc
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('ViewDefinition [CoordinationView_V2.0]','RevitIdentifiers [VersionGUID: 446dd598-e4f6-4fcb-bd4a-61ab0c007d8a, NumberOfSaves: 8]','CoordinateReference [CoordinateBase: Shared Coordinates, ProjectSite: Default Site]'),'2;1');
FILE_NAME('Project Number','2023-10-06T17:36:55+09:00',(''),(''),'ODA SDAI 24.3','Autodesk Revit 24.1.11.26 (ENU) - IFC 24.1.1.6','');
FILE_SCHEMA(('IFC2X3'));
ENDSEC;
DATA;
#1=IFCORGANIZATION($,'Autodesk Revit 2024 (ENU)',$,$,$);
#2=IFCAPPLICATION(#1,'2024','Autodesk Revit 2024 (ENU)','Revit');
#3=IFCCARTESIANPOINT((0.,0.,0.));
#4=IFCCARTESIANPOINT((0.,0.));
#5=IFCDIRECTION((1.,0.,0.));
#6=IFCDIRECTION((-1.,0.,0.));
#7=IFCDIRECTION((0.,1.,0.));
#8=IFCDIRECTION((0.,-1.,0.));
#9=IFCDIRECTION((0.,0.,1.));
#10=IFCDIRECTION((0.,0.,-1.));
#11=IFCDIRECTION((1.,0.));
#12=IFCDIRECTION((-1.,0.));
#13=IFCDIRECTION((0.,1.));
#14=IFCDIRECTION((0.,-1.));
#15=IFCPERSON($,'','s.suzukiEA8RA',$,$,$,$,$);
#16=IFCORGANIZATION($,'','',$,$);
#17=IFCPERSONANDORGANIZATION(#15,#16,$);
#18=IFCOWNERHISTORY(#17,#2,$,.NOCHANGE.,$,$,$,1696570013);
#19=IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
#20=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.);
#21=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
#22=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
#23=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
#24=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
#25=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943278),#23);
#26=IFCCONVERSIONBASEDUNIT(#24,.PLANEANGLEUNIT.,'DEGREE',#25);
#27=IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.);
#28=IFCDERIVEDUNITELEMENT(#27,1);
#29=IFCDERIVEDUNITELEMENT(#20,-3);
#30=IFCDERIVEDUNIT((#28,#29),.MASSDENSITYUNIT.,$);
#31=IFCDERIVEDUNIT((#28,#29),.IONCONCENTRATIONUNIT.,$);
#32=IFCDERIVEDUNITELEMENT(#20,4);
#33=IFCDERIVEDUNIT((#32),.MOMENTOFINERTIAUNIT.,$);
#34=IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
#35=IFCSIUNIT(*,.FREQUENCYUNIT.,$,.HERTZ.);
#36=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.KELVIN.);
#37=IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.DEGREE_CELSIUS.);
#38=IFCDERIVEDUNITELEMENT(#36,-1);
#39=IFCDERIVEDUNITELEMENT(#34,-3);
#40=IFCDERIVEDUNIT((#28,#38,#39),.THERMALTRANSMITTANCEUNIT.,$);
#41=IFCDERIVEDUNITELEMENT(#20,1);
#42=IFCDERIVEDUNIT((#28,#38,#39,#41),.THERMALCONDUCTANCEUNIT.,$);
#43=IFCSIUNIT(*,.LENGTHUNIT.,.DECI.,.METRE.);
#44=IFCDERIVEDUNITELEMENT(#43,3);
#45=IFCDERIVEDUNITELEMENT(#34,-1);
#46=IFCDERIVEDUNIT((#44,#45),.VOLUMETRICFLOWRATEUNIT.,$);
#47=IFCDERIVEDUNIT((#28,#45),.MASSFLOWRATEUNIT.,$);
#48=IFCDERIVEDUNIT((#45),.ROTATIONALFREQUENCYUNIT.,$);
#49=IFCSIUNIT(*,.ELECTRICCURRENTUNIT.,$,.AMPERE.);
#50=IFCSIUNIT(*,.ELECTRICVOLTAGEUNIT.,$,.VOLT.);
#51=IFCSIUNIT(*,.POWERUNIT.,$,.WATT.);
#52=IFCSIUNIT(*,.FORCEUNIT.,.KILO.,.NEWTON.);
#53=IFCSIUNIT(*,.ILLUMINANCEUNIT.,$,.LUX.);
#54=IFCSIUNIT(*,.LUMINOUSFLUXUNIT.,$,.LUMEN.);
#55=IFCSIUNIT(*,.LUMINOUSINTENSITYUNIT.,$,.CANDELA.);
#56=IFCSIUNIT(*,.ENERGYUNIT.,$,.JOULE.);
#57=IFCDERIVEDUNITELEMENT(#27,-1);
#58=IFCDERIVEDUNITELEMENT(#20,-2);
#59=IFCDERIVEDUNITELEMENT(#34,3);
#60=IFCDERIVEDUNITELEMENT(#54,1);
#61=IFCDERIVEDUNIT((#57,#58,#59,#60),.USERDEFINED.,'Luminous Efficacy');
#62=IFCDERIVEDUNITELEMENT(#20,3);
#63=IFCDERIVEDUNITELEMENT(#49,-2);
#64=IFCDERIVEDUNIT((#28,#39,#62,#63),.USERDEFINED.,'Electrical Resistivity');
#65=IFCDERIVEDUNITELEMENT(#20,2);
#66=IFCDERIVEDUNIT((#28,#39,#65),.SOUNDPOWERUNIT.,$);
#67=IFCDERIVEDUNITELEMENT(#20,-1);
#68=IFCDERIVEDUNITELEMENT(#34,-2);
#69=IFCDERIVEDUNIT((#28,#67,#68),.SOUNDPRESSUREUNIT.,$);
#70=IFCDERIVEDUNIT((#41,#45),.LINEARVELOCITYUNIT.,$);
#71=IFCSIUNIT(*,.PRESSUREUNIT.,$,.PASCAL.);
#72=IFCDERIVEDUNIT((#28,#58,#68),.USERDEFINED.,'Friction Loss');
#73=IFCDERIVEDUNIT((#28,#68),.LINEARFORCEUNIT.,$);
#74=IFCDERIVEDUNIT((#28,#67,#68),.PLANARFORCEUNIT.,$);
#75=IFCDERIVEDUNIT((#38,#65,#68),.SPECIFICHEATCAPACITYUNIT.,$);
#76=IFCDERIVEDUNIT((#28,#39),.HEATFLUXDENSITYUNIT.,$);
#77=IFCDERIVEDUNIT((#65,#68),.HEATINGVALUEUNIT.,$);
#78=IFCDERIVEDUNITELEMENT(#34,1);
#79=IFCDERIVEDUNIT((#67,#78),.VAPORPERMEABILITYUNIT.,$);
#80=IFCDERIVEDUNIT((#28,#45,#67),.DYNAMICVISCOSITYUNIT.,$);
#81=IFCDERIVEDUNIT((#38),.THERMALEXPANSIONCOEFFICIENTUNIT.,$);
#82=IFCDERIVEDUNIT((#28,#67,#68),.MODULUSOFELASTICITYUNIT.,$);
#83=IFCDERIVEDUNIT((#57,#62),.ISOTHERMALMOISTURECAPACITYUNIT.,$);
#84=IFCDERIVEDUNIT((#45,#65),.MOISTUREDIFFUSIVITYUNIT.,$);
#85=IFCDERIVEDUNIT((#28,#67),.MASSPERLENGTHUNIT.,$);
#86=IFCDERIVEDUNITELEMENT(#36,1);
#87=IFCDERIVEDUNIT((#57,#59,#86),.THERMALRESISTANCEUNIT.,$);
#88=IFCDERIVEDUNIT((#41,#68),.ACCELERATIONUNIT.,$);
#89=IFCDERIVEDUNITELEMENT(#23,1);
#90=IFCDERIVEDUNIT((#45,#89),.ANGULARVELOCITYUNIT.,$);
#91=IFCDERIVEDUNIT((#28,#68),.LINEARSTIFFNESSUNIT.,$);
#92=IFCDERIVEDUNITELEMENT(#20,6);
#93=IFCDERIVEDUNIT((#92),.WARPINGCONSTANTUNIT.,$);
#94=IFCDERIVEDUNIT((#28,#41,#68),.LINEARMOMENTUNIT.,$);
#95=IFCDERIVEDUNIT((#28,#65,#68),.TORQUEUNIT.,$);
#96=IFCUNITASSIGNMENT((#19,#21,#22,#26,#27,#30,#31,#33,#34,#35,#37,#40,#42,#46,#47,#48,#49,#50,#51,#52,#53,#54,#55,#56,#61,#64,#66,#69,#70,#71,#72,#73,#74,#75,#76,#77,#79,#80,#81,#82,#83,#84,#85,#87,#88,#90,#91,#93,#94,#95));
#97=IFCAXIS2PLACEMENT3D(#3,$,$);
#98=IFCDIRECTION((6.1230317691118863E-17,1.));
#99=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,0.01,#97,#98);
#100=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Axis','Model',*,*,*,*,#99,$,.GRAPH_VIEW.,$);
#101=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Body','Model',*,*,*,*,#99,$,.MODEL_VIEW.,$);
#102=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('Box','Model',*,*,*,*,#99,$,.MODEL_VIEW.,$);
#103=IFCGEOMETRICREPRESENTATIONSUBCONTEXT('FootPrint','Model',*,*,*,*,#99,$,.MODEL_VIEW.,$);
#104=IFCPROJECT('1cavUgQ9z6zOHh3NQdzpv7',#18,'Project Number',$,$,'Project Name','Project Status',(#99),#96);
#105=IFCCLASSIFICATION('CSI (Construction Specifications Institute)','1998',$,'Uniformat');
#106=IFCAXIS2PLACEMENT3D(#3,$,$);
#107=IFCLOCALPLACEMENT(#118,#106);
#108=IFCPOSTALADDRESS($,$,$,$,('Enter address here'),$,'','Boston','','MA');
#109=IFCBUILDING('1cavUgQ9z6zOHh3NQdzpv6',#18,'\X2\6A4B6881\X0\ID',$,$,#107,$,'\X2\6A4B6881540D\X0\',.ELEMENT.,$,$,#108);
#110=IFCAXIS2PLACEMENT3D(#3,$,$);
#111=IFCLOCALPLACEMENT(#107,#110);
#112=IFCBUILDINGSTOREY('1qv6ynVKX7xf87anS8vNi1',#18,'Level 1',$,'Level:8mm Head',#111,$,'Level 1',.ELEMENT.,0.);
#113=IFCCARTESIANPOINT((0.,0.,3000.));
#114=IFCAXIS2PLACEMENT3D(#113,$,$);
#115=IFCLOCALPLACEMENT(#107,#114);
#116=IFCBUILDINGSTOREY('1qv6ynVKX7xf87anS8vN2n',#18,'Level 2',$,'Level:8mm Head',#115,$,'Level 2',.ELEMENT.,3000.);
#117=IFCAXIS2PLACEMENT3D(#3,$,$);
#118=IFCLOCALPLACEMENT($,#117);
#119=IFCSITE('1cavUgQ9z6zOHh3NQdzpv5',#18,'Default',$,$,#118,$,$,.ELEMENT.,(42,21,31,401672),(-71,-3,-24,-318237),0.,$,$);
#120=IFCAXIS2PLACEMENT3D(#3,$,$);
#122=IFCCARTESIANPOINT((0.,0.));
#123=IFCAXIS2PLACEMENT2D(#122,#11);
#124=IFCRECTANGLEPROFILEDEF(.AREA.,'Generic Models 1',#123,1000.0000000000001,1000.0000000000001);
#125=IFCAXIS2PLACEMENT3D(#3,#9,#6);
#126=IFCEXTRUDEDAREASOLID(#124,#125,#9,2000.0000000000002);
#127=IFCSHAPEREPRESENTATION(#101,'Body','SweptSolid',(#126));
#128=IFCAXIS2PLACEMENT3D(#3,$,$);
#129=IFCREPRESENTATIONMAP(#128,#127);
#130=IFCBUILDINGELEMENTPROXYTYPE('0gHHgZqz9DfQ3VrAiQxThP',#18,'Generic Models 1:Generic Models 1',$,$,$,(#129),'422031',$,.NOTDEFINED.);
#131=IFCMATERIAL('<Unnamed>');
#132=IFCCARTESIANTRANSFORMATIONOPERATOR3D($,$,#3,1.,$);
#133=IFCMAPPEDITEM(#129,#132);
#134=IFCSHAPEREPRESENTATION(#101,'Body','MappedRepresentation',(#133));
#135=IFCPRODUCTDEFINITIONSHAPE($,$,(#134));
#136=IFCAXIS2PLACEMENT3D(#3,$,$);
#137=IFCLOCALPLACEMENT(#111,#136);
#138=IFCBUILDINGELEMENTPROXY('0gHHgZqz9DfQ3VrAiQxTh7',#18,'Generic Models 1:Generic Models 1:422033',$,'Generic Models 1:Generic Models 1',#137,#135,'422033',$);
#139=IFCPROPERTYSINGLEVALUE('Reference',$,IFCIDENTIFIER('Generic Models 1'),$);
#140=IFCPROPERTYSET('1bHmkIEvSTz8lbB8R1yjYQ',#18,'Pset_BuildingElementProxyCommon',$,(#139));
#141=IFCPROPERTYSET('1ekbo2D_Ue8Oplqi$6BztZ',#18,'Pset_QuantityTakeOff',$,(#139));
#142=IFCRELDEFINESBYPROPERTIES('13p$nvlddKiFvOa1DWRujn',#18,$,$,(#138),#140);
#143=IFCRELDEFINESBYPROPERTIES('0xpMZUdDRbByn_4bAdx0GQ',#18,$,$,(#138),#141);
#144=IFCPROPERTYSINGLEVALUE('Name',$,IFCLABEL('Level 1'),$);
#145=IFCPROPERTYSET('1YBdRTmfJCIxHb4iq$X5hG',#18,'Pset_AirSideSystemInformation',$,(#144));
#146=IFCPROPERTYSINGLEVALUE('AboveGround',$,IFCLOGICAL(.U.),$);
#147=IFCPROPERTYSET('2FpkwSYp_WPXHXSnB$WXnQ',#18,'Pset_BuildingStoreyCommon',$,(#146));
#148=IFCPROPERTYSINGLEVALUE('Name',$,IFCLABEL('Level 1'),$);
#149=IFCPROPERTYSET('16K95Bsg5m5WfcjoVcoalf',#18,'Pset_ProductRequirements',$,(#148));
#150=IFCRELDEFINESBYPROPERTIES('23IAhMiR$rPO$VPJ8IfOTw',#18,$,$,(#112),#145);
#151=IFCRELDEFINESBYPROPERTIES('2lSNXjGSsDeAQi9xx0QS91',#18,$,$,(#112),#147);
#152=IFCRELDEFINESBYPROPERTIES('0xnRGZgngPt7YK_n3Qhp$h',#18,$,$,(#112),#149);
#153=IFCRELCONTAINEDINSPATIALSTRUCTURE('1qv6ynVKX7xf87anO8vNi1',#18,$,$,(#138),#112);
#154=IFCPROPERTYSINGLEVALUE('Name',$,IFCLABEL('Level 2'),$);
#155=IFCPROPERTYSET('2_Sns8qUKqUL30ou9Iorzb',#18,'Pset_AirSideSystemInformation',$,(#154));
#156=IFCPROPERTYSET('3YbViPlCmt$6JvhxxkVq3q',#18,'Pset_BuildingStoreyCommon',$,(#146));
#157=IFCPROPERTYSINGLEVALUE('Name',$,IFCLABEL('Level 2'),$);
#158=IFCPROPERTYSET('0WBVj1923RprPL2tvQrPk4',#18,'Pset_ProductRequirements',$,(#157));
#159=IFCRELDEFINESBYPROPERTIES('0alDWRO_DXz$wOE02qybwO',#18,$,$,(#116),#155);
#160=IFCRELDEFINESBYPROPERTIES('0mxirAbkN2rgQssadNtef7',#18,$,$,(#116),#156);
#161=IFCRELDEFINESBYPROPERTIES('17EcBbLz$MHAUkZGjZhdMI',#18,$,$,(#116),#158);
#162=IFCRELAGGREGATES('1HyEgyHuSI4OJ2SrppYcUa',#18,$,$,#104,(#119));
#163=IFCRELAGGREGATES('2QoZzlZxWV377yCqGMpv3x',#18,$,$,#119,(#109));
#164=IFCRELAGGREGATES('3mQBaTfuH9QBHDcYQBQvNl',#18,$,$,#109,(#112,#116));
#165=IFCPROPERTYSINGLEVALUE('NumberOfStoreys',$,IFCINTEGER(1),$);
#166=IFCPROPERTYSINGLEVALUE('IsLandmarked',$,IFCLOGICAL(.U.),$);
#167=IFCPROPERTYSET('2CtkUpiA65XcRss535qKHH',#18,'Pset_BuildingCommon',$,(#165,#166));
#168=IFCPROPERTYSINGLEVALUE('\X2\8DEF7DDA540D\X0\',$,IFCLABEL('\X2\8DEF7DDA540D\X0\'),$);
#169=IFCPROPERTYSINGLEVALUE('\X2\4EE366FF8DEF306E67097121\X0\',$,IFCBOOLEAN(.T.),$);
#170=IFCPROPERTYSINGLEVALUE('\X2\67B68A2D5E746B21\X0\',$,IFCINTEGER(1),$);
#171=IFCPROPERTYSINGLEVALUE('\X2\6A4B9577\X0\',$,IFCREAL(1.),$);
#172=IFCPROPERTYSINGLEVALUE('\X2\5E4554E1\X0\',$,IFCREAL(3648.),$);
#173=IFCPROPERTYSINGLEVALUE('\X2\624057285730\X0\',$,IFCLABEL('\X2\624057285730\X0\'),$);
#174=IFCPROPERTYSINGLEVALUE('\X2\7DEF5EA6\X0\',$,IFCLABEL('\X2\7DEF5EA6\X0\'),$);
#175=IFCPROPERTYSINGLEVALUE('\X2\7D4C5EA6\X0\',$,IFCLABEL('\X2\7D4C5EA6\X0\'),$);
#176=IFCPROPERTYSINGLEVALUE('\X2\7BA174068005540D\X0\',$,IFCLABEL('\X2\7BA174068005540D\X0\'),$);
#177=IFCPROPERTYSINGLEVALUE('\X2\8DEF4E0B67614EF6\X0\',$,IFCLABEL('\X2\8DEF4E0B67614EF6\X0\'),$);
#178=IFCPROPERTYSINGLEVALUE('\X2\81EA5C029053\X0\or\X2\4E00822C9053\X0\',$,IFCLABEL('\X2\81EA5C029053\X0\or\X2\4E00822C9053\X0\'),$);
#179=IFCPROPERTYSINGLEVALUE('\X2\5360752872694EF6\X0\',$,IFCLABEL('\X2\5360752872694EF6\X0\'),$);
#180=IFCPROPERTYSINGLEVALUE('\X2\6A4B68815F625F0F\X0\',$,IFCLABEL('\X2\6A4B68815F625F0F\X0\'),$);
#181=IFCPROPERTYSINGLEVALUE('\X2\7DCA60258F38900190538DEF\X0\',$,IFCLABEL('\X2\7DCA60258F38900190538DEF\X0\'),$);
#182=IFCPROPERTYSET('0HotL2eSh$TgNk_3qV_n$s',#18,'\X2\90538DEF6A4B70B9691C89819818\X0\','',(#168,#169,#170,#171,#172,#173,#174,#175,#176,#177,#178,#179,#180,#181));
#183=IFCRELDEFINESBYPROPERTIES('1PYPsIqVR1GiT_Gg9vGo4r',#18,$,$,(#109),#167);
#184=IFCRELDEFINESBYPROPERTIES('1nXJNCslCVcgH0thk81_KO',#18,$,$,(#109),#182);
#185=IFCRELASSOCIATESMATERIAL('1UDoQBMOoYj5$buPHqhmrh',#18,$,$,(#130,#138),#131);
#186=IFCRELDEFINESBYTYPE('32VmxHBM3a_ivNyqcIIb3q',#18,$,$,(#138),#130);
#187=IFCPRESENTATIONLAYERASSIGNMENT('A-GENM',$,(#127,#134),$);
ENDSEC;
END-ISO-10303-21;

サンプルコード

Sample code
import ifcopenshell
file = ifcopenshell.open('RC_Column.ifc')
columns = file.by_type('IfcColumn')
for i in columns:
    print(i.Name)

プログラムの説明を下記に記載します。
Ifcopenshellを使う際は必ずプログラム内でおまじないを宣言する。

code
import ifcopenshell

読み込みたいIFCファイルを指定する。
※プログラムと別の場所にIFCが保存してある場合は、名前だけでなくパスを設定すること

code
file = ifcopenshell.open('RC_Column.ifc‘)

指定したIFCファイルのうち、どのエンティティに対する処理を行うか指定する。

code
columns = file.by_type('IfcColumn‘)

取得した数ぶん全て表示する。今回はAttributeのNameなので、これでOK

code
for i in columns:
    print(i.Name)

実行結果

プログラム作成環境

プログラム作成やIFCのコード閲覧には、Visual Studio Code(IDEの一種)がオススメ。
コード記述と実行が1画面で済むので、効率的にコード記述が出来る。
Extensionsで、「IFC Syntax」と調べて、インストールすると、IFCのコードが色分けされて、閲覧に便利。

IfcOpenShellに含まれるパッケージ紹介

  • IfcTester
    IDSによるIFC照査を行うことが出来る。
  • IfcCsv
    IFCの内部情報をCSVで出力出来る
  • IfcDiff
    2つのIFC間の変更内容を検出出来る
  • IfcClash
    IFC内での干渉を検出出来る
  • Ifc2JSON
    IFCをJSONに変換出来る
  • VoxelisationToolkit
    IFCを使った空間解析が出来る

IfcOpenShellのDocumentationには全て網羅して親切に使用方法が書いているわけでは無い。
とりあえず、コマンドプロンプトで、 python -m パッケージ名 -h と打ってみる。
すると、パッケージの使用方法が簡単に出てくるので、読んでみることが重要。

※英語で内容が分からない場合は、それで逃げるのではなく、まず翻訳ツールを使ってみること!!!!

詰まったときは・・・

  • エラー内容をしっかり読む。英語が分からないときは、翻訳ツールを使用してみる。Google翻訳より、DeepLなどがオススメ
  • ChatGPTをフル活用する。ある程度ドキュメントを読み込んでいなくても色々解決してくれる
  • ただし、結局はドキュメントに戻ってくる。ドキュメントを読み込むこと。

Discussion